1"use strict"; 2var ledon_busy=false; 3var ledon_waiting_timer=30; 4var ledon_vars={'resources-loaded':false}; 5if(window.jQuery){ 6jQuery(document).ready(function(){ 7if(typeof ledon_ajax_url!=typeof undefined){ 8ledon_vars["mode"]="local"; 9ledon_vars["resources-loaded"]=true; 10ledon_vars["ajax-url"]=ledon_ajax_url; 11ledon_init(); 12ledon_ready(); 13}else{ 14ledon_vars["mode"]="remote"; 15if(jQuery("#ledon-remote").length==0||!jQuery("#ledon-remote").attr("data-handler")){ 16alert('Make sure that you properly included ledon.js. Currently you did not.'); 17} 18ledon_vars["ajax-url"]=jQuery("#ledon-remote").attr("data-handler"); 19jQuery('head').append("<style>#ledon-ready{display:none;width:0px;height:0px;}.ledon-error{display:none;}.ledon-ready,.ledongoal-ready,.ledontop-ready{display:none;}</style>"); 20jQuery('body').append("<div id='ledon-ready'></div>"); 21ledon_init(); 22}}); 23}else{ 24alert('ledon.js requires jQuery to be loaded. Please include jQuery library above ledon.js. Do not use "defer" or "async" option to load jQuery.'); 25} 26function ledon_init(){ 27var forms=new Array(); 28var goals=new Array(); 29var tops=new Array(); 30var intRegex=/^\d+$/; 31jQuery(".ledon").each(function(){ 32var campaign_id=jQuery(this).attr("data-id"); 33if(campaign_id&&intRegex.test(campaign_id)){ 34if(forms.indexOf(campaign_id) < 0) forms.push(campaign_id); 35} else jQuery(this).attr("class", "ledon-error"); 36}); 37jQuery(".ledongoal").each(function(){ 38var campaign_id=jQuery(this).attr("data-id"); 39if(campaign_id&&intRegex.test(campaign_id)){ 40if(goals.indexOf(campaign_id) < 0) goals.push(campaign_id); 41} else jQuery(this).attr("class", "ledon-error"); 42}); 43jQuery(".ledontop").each(function(){ 44var campaign_id=jQuery(this).attr("data-id"); 45if(campaign_id&&intRegex.test(campaign_id)){ 46if(tops.indexOf(campaign_id) < 0) tops.push(campaign_id); 47} else jQuery(this).attr("class", "ledon-error"); 48}); 49jQuery.ajax({ 50url:ledon_vars['ajax-url'], 51data:{"action":"ledon-init", "forms":forms.join(","), "goals":goals.join(","), "tops":tops.join(","), "hostname":window.location.hostname}, 52method:(ledon_vars["mode"]=="remote" ? "get":"post"), 53dataType: (ledon_vars["mode"]=="remote" ? "jsonp":"json"), 54async:true, 55success:function(return_data){ 56try { 57var data; 58if(typeof return_data=='object') data=return_data; 59else data=jQuery.parseJSON(return_data); 60if(data.status=="OK"){ 61jQuery(".ledon").each(function(){ 62var campaign_id=jQuery(this).attr("data-id"); 63if(campaign_id&&intRegex.test(campaign_id)){ 64if(data['forms'].hasOwnProperty(campaign_id)){ 65jQuery(this).replaceWith(data['forms'][campaign_id]); 66} else jQuery(this).attr("class", "ledon-error"); 67} else jQuery(this).attr("class", "ledon-error"); 68}); 69jQuery(".ledongoal").each(function(){ 70var campaign_id=jQuery(this).attr("data-id"); 71if(campaign_id&&intRegex.test(campaign_id)){ 72if(data['goals'].hasOwnProperty(campaign_id)){ 73jQuery(this).replaceWith(data['goals'][campaign_id]); 74} else jQuery(this).attr("class", "ledon-error"); 75} else jQuery(this).attr("class", "ledon-error"); 76}); 77jQuery(".ledontop").each(function(){ 78var campaign_id=jQuery(this).attr("data-id"); 79if(campaign_id&&intRegex.test(campaign_id)){ 80if(data['tops'].hasOwnProperty(campaign_id)){ 81jQuery(this).replaceWith(data['tops'][campaign_id]); 82} else jQuery(this).attr("class", "ledon-error"); 83} else jQuery(this).attr("class", "ledon-error"); 84}); 85if(!ledon_vars["resources-loaded"]){ 86if(data.hasOwnProperty("css")&&data["css"].length > 0){ 87for (var i=0; i<data["css"].length; i++){ 88jQuery('head').append("<link href='"+data["css"][i]+"' rel='stylesheet' type='text/css' media='all' />"); 89}} 90if(data.hasOwnProperty("js")&&data["js"].length > 0){ 91for (var i=0; i<data["js"].length; i++){ 92jQuery('body').append("<script src='"+data["js"][i]+"' type='text/javascript'></script>"); 93}} 94var counter=50; 95var ready=function(){ 96counter--; 97if(counter==0){ 98console.log("Can't load style.css."); 99return; 100} 101var width=jQuery("#ledon-ready").width(); 102if(width==1){ 103ledon_ready(); 104}else{ 105setTimeout(ready, 200); 106}} 107ready(); 108ledon_vars["resources-loaded"]=true; 109} else ledon_resize(); 110}} catch(error){ 111console.log(error); 112}}, 113error:function(XMLHttpRequest, textStatus, errorThrown){ 114console.log(errorThrown); 115}}); 116} 117function ledon_ready(){ 118ledon_resize(); 119jQuery(window).resize(function(){ 120ledon_resize(); 121}); 122console.log("Green Donations is ready to go!"); 123} 124function ledon_resize(){ 125jQuery("div.ledon-ready").each(function(){
126var container_width=parseInt(jQuery(this).parent().width(), 10); 127if(container_width < 640) jQuery(this).addClass("ledon-collapsed"); 128else jQuery(this).removeClass("ledon-collapsed"); 129}); 130jQuery("div.ledongoal-ready").each(function(){ 131var value_width=jQuery(this).find(".ledongoal-value").width(); 132var bar_value_width=jQuery(this).find(".ledongoal-bar-value").width(); 133if(bar_value_width > value_width){ 134jQuery(this).find(".ledongoal-value").removeClass("ledongoal-value-out").addClass("ledongoal-value-in"); 135}else{ 136jQuery(this).find(".ledongoal-value").removeClass("ledongoal-value-in").addClass("ledongoal-value-out"); 137}}); 138jQuery("div.ledontop-ready").each(function(){ 139var container_width=parseInt(jQuery(this).parent().width(), 10); 140if(container_width < 480) jQuery(this).addClass("ledon-collapsed"); 141else jQuery(this).removeClass("ledon-collapsed"); 142}); 143} 144function ledon_continue(_object){ 145if(ledon_busy) return; 146ledon_busy=true; 147jQuery(_object).find("i").attr("class", "ledon-fa ledon-fa-spin ledon-fa-spinner"); 148jQuery(_object).closest(".ledon-ready").find(".ledon-inline-error").slideUp(200); 149var form=jQuery(_object).closest(".ledon-ready"); 150jQuery(form).find(".ledon-element-error").fadeOut(300, function(){ 151jQuery(this).remove(); 152}); 153var gateway=null; 154if(jQuery(form).find("[name='gateway']:checked").length > 0) gateway=jQuery(form).find("[name='gateway']:checked").val(); 155else gateway=jQuery(form).find("[name='gateway']").val(); 156var post_data={ 157"action":"ledon-continue", 158"campaign":jQuery(form).find("[name='campaign']").val(), 159"name":ledon_encode64(jQuery(form).find("[name='name']").val()), 160"url":ledon_encode64(jQuery(form).find("[name='url']").val()), 161"amount":ledon_encode64(jQuery(form).find("[name='amount']").val()), 162"email":ledon_encode64(jQuery(form).find("[name='email']").val()), 163"gateway":ledon_encode64(gateway), 164"terms":jQuery(form).find("[name='terms']").is(":checked") ? "on":"off", 165"hostname":window.location.hostname 166}; 167jQuery.ajax({ 168url:ledon_vars["ajax-url"], 169data:post_data, 170method:(ledon_vars["mode"]=="remote" ? "get":"post"), 171dataType: (ledon_vars["mode"]=="remote" ? "jsonp":"json"), 172async:true, 173success:function(return_data){ 174var data; 175if(typeof return_data=='object') data=return_data; 176else data=jQuery.parseJSON(return_data); 177if(data.status=="OK"){ 178try { 179var error=false; 180if(data.hasOwnProperty("action")){ 181if(data["action"]=="function"){ 182if(data.hasOwnProperty("gateway")){ 183var params={}; 184if(data.hasOwnProperty("params")) params=data["params"]; 185if(typeof ledon_pay_ok=='function'){ 186ledon_pay_ok(data["gateway"], params); 187} else error=true; 188} else error=true; 189}else if(data["action"]=="form"){ 190if(data.hasOwnProperty("params")&&(data["params"]).hasOwnProperty("form")){ 191jQuery("body").append(data["params"]["form"]); 192jQuery(".ledon-form-pay").click(); 193}}else if(data["action"]=="redirect"){ 194if(data.hasOwnProperty("params")&&(data["params"]).hasOwnProperty("url")){ 195location.href=data["params"]["url"]; 196}} else error=true; 197} else error=true; 198if(error){ 199console.log(data); 200jQuery(_object).closest(".ledon-ready").find(".ledon-warning").html("Internal Error."); 201jQuery(_object).closest(".ledon-ready").find(".ledon-warning").slideDown(200); 202}} catch(error){ 203jQuery(_object).closest(".ledon-ready").find(".ledon-warning").html("Internal Error."); 204jQuery(_object).closest(".ledon-ready").find(".ledon-warning").slideDown(200); 205}}else if(data.status=="ERROR"){ 206for (var id in data["errors"]){ 207if(data["errors"].hasOwnProperty(id)){ 208jQuery(form).find(".ledon-input-"+id).append("<div class='ledon-element-error'><span>"+data["errors"][id]+"</span></div>"); 209}} 210jQuery(form).find(".ledon-element-error").fadeIn(300); 211}else if(data.status=="WARNING"){ 212jQuery(_object).closest(".ledon-ready").find(".ledon-warning").html(data.message); 213jQuery(_object).closest(".ledon-ready").find(".ledon-warning").slideDown(200); 214}else{ 215jQuery(_object).closest(".ledon-ready").find(".ledon-warning").html("Internal Error."); 216jQuery(_object).closest(".ledon-ready").find(".ledon-warning").slideDown(200); 217} 218jQuery(_object).find("i").attr("class", "ledon-fa ledon-fa-right-open"); 219ledon_busy=false; 220}, 221error:function(XMLHttpRequest, textStatus, errorThrown){ 222jQuery(_object).closest(".ledon-ready").find(".ledon-warning").html(textStatus); 223jQuery(_object).closest(".ledon-ready").find(".ledon-warning").slideDown(200); 224jQuery(_object).find("i").attr("class", "ledon-fa ledon-fa-right-open"); 225ledon_busy=false; 226}}); 227return false;
228} 229function ledon_pay_ok(_gateway, _params){ 230if(_gateway=="stripe"){ 231if(_params.hasOwnProperty("public_key")&&_params.hasOwnProperty("session_id")){ 232try { 233var stripe=Stripe(_params.public_key); 234stripe.redirectToCheckout({sessionId: _params.session_id}).then(function (result){}); 235} catch(error){ 236console.log(error); 237}} 238}} 239function ledon_read_cookie(key){ 240var pairs=document.cookie.split("; "); 241for (var i=0, pair; pair=pairs[i]&&pairs[i].split("="); i++){ 242if(pair[0]===key) return pair[1]||""; 243} 244return null; 245} 246function ledon_write_cookie(key, value, days){ 247if(days){ 248var date=new Date(); 249date.setTime(date.getTime()+(days*24*60*60*1000)); 250var expires="; expires="+date.toGMTString(); 251} else var expires=""; 252document.cookie=key+"="+value+expires+"; path=/"; 253} 254function ledon_utf8encode(string){ 255string=string.replace(/\x0d\x0a/g, "\x0a"); 256var output=""; 257for (var n=0; n < string.length; n++){ 258var c=string.charCodeAt(n); 259if(c < 128){ 260output +=String.fromCharCode(c); 261}else if((c > 127)&&(c < 2048)){ 262output +=String.fromCharCode((c >> 6) | 192); 263output +=String.fromCharCode((c & 63) | 128); 264}else{ 265output +=String.fromCharCode((c >> 12) | 224); 266output +=String.fromCharCode(((c >> 6) & 63) | 128); 267output +=String.fromCharCode((c & 63) | 128); 268}} 269return output; 270} 271function ledon_encode64(input){ 272var keyString="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; 273var output=""; 274var chr1, chr2, chr3, enc1, enc2, enc3, enc4; 275var i=0; 276input=ledon_utf8encode(input); 277while (i < input.length){ 278chr1=input.charCodeAt(i++); 279chr2=input.charCodeAt(i++); 280chr3=input.charCodeAt(i++); 281enc1=chr1 >> 2; 282enc2=((chr1 & 3) << 4) | (chr2 >> 4); 283enc3=((chr2 & 15) << 2) | (chr3 >> 6); 284enc4=chr3 & 63; 285if(isNaN(chr2)){ 286enc3=enc4=64; 287}else if(isNaN(chr3)){ 288enc4=64; 289} 290output=output + keyString.charAt(enc1) + keyString.charAt(enc2) + keyString.charAt(enc3) + keyString.charAt(enc4); 291} 292return output; 293} 294function ledon_utf8decode(input){ 295var string=""; 296var i=0; 297var c=c1=c2=0; 298while(i < input.length){ 299c=input.charCodeAt(i); 300if(c < 128){ 301string +=String.fromCharCode(c); 302i++; 303}else if((c > 191)&&(c < 224)){ 304c2=input.charCodeAt(i+1); 305string +=String.fromCharCode(((c & 31) << 6) | (c2 & 63)); 306i +=2; 307}else{ 308c2=input.charCodeAt(i+1); 309c3=input.charCodeAt(i+2); 310string +=String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); 311i +=3; 312}} 313return string; 314} 315function ledon_decode64(input){ 316var keyString="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; 317var output=""; 318var chr1, chr2, chr3; 319var enc1, enc2, enc3, enc4; 320var i=0; 321input=input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); 322while (i < input.length){ 323enc1=keyString.indexOf(input.charAt(i++)); 324enc2=keyString.indexOf(input.charAt(i++)); 325enc3=keyString.indexOf(input.charAt(i++)); 326enc4=keyString.indexOf(input.charAt(i++)); 327chr1=(enc1 << 2) | (enc2 >> 4); 328chr2=((enc2 & 15) << 4) | (enc3 >> 2); 329chr3=((enc3 & 3) << 6) | enc4; 330output=output + String.fromCharCode(chr1); 331if(enc3!=64){ 332output=output + String.fromCharCode(chr2); 333} 334if(enc4!=64){ 335output=output + String.fromCharCode(chr3); 336}} 337output=ledon_utf8decode(output); 338return output; 339};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.