1 2if(typeof Jetendo == "undefined"){ 3 var Jetendo={ 4 loadedFiles:{} 5 } 6} 7var zArrMapFunctions=new Array(); 8var zArrScrollFunctions=new Array(); 9var zImageOnError=function(){}; 10var zFunctionLoadStarted=false; 11var zArrResizeFunctions=new Array(); 12var zJetendoLoadedRan=false; 13var zArrDeferredFunctions=[]; 14var zArrLoadFunctions=[]; 15var zMSIEVersion=-1; 16var zMSIEBrowser=window.navigator.userAgent.indexOf("MSIE"); 17if(zMSIEBrowser != -1){ 18 zMSIEVersion= (window.navigator.userAgent.substring (zMSIEBrowser+5, window.navigator.userAgent.indexOf (".", zMSIEBrowser ))); 19} 20 21var forcedUpgradeMessage=false; 22if(!forcedUpgradeMessage){ 23 if(zMSIEBrowser != -1 && zMSIEVersion <= 8){ 24 forcedUpgradeMessage=true; 25 } 26 if(navigator.userAgent.toLowerCase().indexOf("android 2.") != -1){ 27 forcedUpgradeMessage=true; 28 } 29 if(typeof zDisableUpgradeMessage == "undefined" && forcedUpgradeMessage){ 30 var h=document.cookie.indexOf('hideBrowserUpgrade='); 31 if(h==-1){ 32 zArrLoadFunctions.push(function(){ 33 if(typeof zDisableUpgradeMessage != "undefined"){ 34 return; 35 } 36 $('body').append('<div id="zBrowserUpgradeDiv" style="position:absolute; z-index:20000; background-color:#FFF !important; color:#000 !important; top:10px; right:10px; width:280px; padding:10px; font-size:18px; border:1px solid #999; line-height:24px; "><strong>This web site is not compatible with your browser.</strong> Please upgrade to access all features.<br /><a href="http://www.whatbrowser.org/" target="_blank">Learn More</a> | <a href="##" onclick="zHideBrowserUpgrade();">Hide Message</a></div>'); 37 }); 38 } 39 } 40 41} 42function zHideBrowserUpgrade(){ 43 document.getElementById("zBrowserUpgradeDiv").style.display='none'; 44 zSetCookie({key:"hideBrowserUpgrade",value:1,futureSeconds:60 * 60 * 24 * 7,enableSubdomains:false}); 45 46} 47zJetendoLoaded=function(){}; 48function zOverEditDiv(){}; 49function zImageMouseMove(){}; 50function zImageMouseReset(){}; 51function onGMAPLoad(){}; 52zLoadMapID=false; 53function zMapInit(){ 54 if(zJetendoLoadedRan){ 55 zLoadMapFunctions(); 56 onGMAPLoad(true); 57 }else{ 58 zArrDeferredFunctions.push(function(){ 59 zLoadMapFunctions(); 60 onGMAPLoad(true); 61 }); 62 } 63}; 64function zBindEvent(elem, evt, cb){ 65 if(elem.addEventListener){ 66 elem.addEventListener(evt,cb,false); 67 }else if(elem.attachEvent){ 68 elem.attachEvent("on" + evt, function(){ 69 cb.call(event.srcElement,event); 70 }); 71 } 72} 73var zStackTraceLoaded=false; 74var zJavascriptErrorLogged=false; 75function zLoadStackTrace(callback){ 76 if(zStackTraceLoaded){ 77 return; 78 } 79 zStackTraceLoaded=true; 80 var a = document.createElement('script'); 81 a.setAttribute("data-scriptLoaded","0"); 82 a.onreadystatechange=function(){ 83 if(this.readyState=="loaded" || this.readyState=="complete"){ 84 if (this.getAttribute("data-scriptLoaded")=="0"){ 85 this.setAttribute("data-scriptLoaded","1"); 86 callback(); 87 } 88 } 89 }; 90 a.onload=function(){ 91 if (this.getAttribute("data-scriptLoaded")=="0"){ 92 this.setAttribute("data-scriptLoaded","1"); 93 callback(); 94 } 95 }; 96 a.src="/z/javascript/javascript-stacktrace/stacktrace.js"; 97 document.getElementsByTagName('head')[0].appendChild(a); 98} 99function zGetDomainFromURL(url){ 100 var domain; 101 if (url.indexOf("://") > -1) { 102 domain = url.split('/')[2]; 103 } 104 else { 105 domain = url.split('/')[0]; 106 } 107 domain = domain.split(':')[0]; 108 return domain; 109} 110function zGlobalErrorHandler(message, url, lineNumber, columnOffset, errorObj) { 111 try{ 112 if(message.substr(0, 17) === "Unspecified error" || message.substr(0, 12) === "Script error" || message.substr(0, 12) === "Syntax error" || message.substr(0, 18) === "Not enough storage"){ 113 return false; // ignore origin errors 114 } 115 if(zJavascriptErrorLogged || (zThisIsDeveloper && window.location.href.indexOf("zdebug=") === -1)){ 116 return false; 117 } 118 if(zGetDomainFromURL(window.location.href) != zGetDomainFromURL(url)){ 119 return false; // ignore external domains 120 } 121 if(window.location.href.indexOf(zSiteDomain) === -1){
122 console.log('zGlobalErrorHandler cancelled'); 123 return false; 124 } 125 zJavascriptErrorLogged=true; // only log 1 error per page view 126 zLoadStackTrace(function(){ 127 arrStack=printStackTrace(); 128 arrNewStack=[]; 129 if(typeof arrStack !== "undefined"){ 130 for(var i=0;i < arrStack.length;i++){ 131 // ignore internal calls 132 if(arrStack[i].indexOf('printStackTrace') === -1){ 133 arrNewStack.push(arrStack[i]); 134 } 135 // ignore disqus, facebook, google, twitter, etc... 136 } 137 } 138 postObj={}; 139 postObj.requestURL=window.location.href; 140 postObj.errorStacktrace=arrNewStack.join("\n"); 141 postObj.errorMessage=message; 142 postObj.errorUrl=url; 143 if(typeof columnOffset !== "undefined"){ 144 postObj.errorColumnOffset=columnOffset; 145 } 146 postObj.errorLineNumber=lineNumber; 147 if(typeof errorObj !== "undefined"){ 148 if(typeof JSON !== "undefined" && typeof JSON.stringify !== "undefined"){ 149 errorObj=JSON.stringify(errorObj, null, 4); 150 } 151 postObj.errorObj=errorObj; 152 } 153 if(window.XMLHttpRequest){ 154 var xhr = new XMLHttpRequest(); 155 }else if (window.ActiveXObject){ 156 var xhr = new ActiveXObject('Microsoft.XMLHTTP'); 157 } 158 xhr.open("POST", "/z/misc/system/logJavascriptError", true); 159 xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 160 var postData=""; 161 for(var i in postObj){ 162 postData+=i+"="+encodeURIComponent(postObj[i])+"&"; 163 } 164 xhr.send(postData); 165 // hide errors for real users 166 if(typeof console != "undefined" && typeof console.log != "undefined"){ 167 console.log("A javascript error occured and the web developer was notified."); 168 } 169 return false; 170 }); 171 }catch(e){ 172 // ignore errors. 173 //throw(e); 174 console.log(e); 175 } 176} 177// if(!forcedUpgradeMessage){ 178// window.onerror=zGlobalErrorHandler; 179// } 180 181var zLoader=function(){ 182 this.loaded=0; 183 this.scriptLoaded=function(){ 184 this.loaded++; 185 if(this.count==this.loaded){ 186 if(this.completeCallback){ 187 this.completeCallback(); 188 }else if(typeof zJetendoLoaded != "undefined"){ 189 zJetendoLoaded(); 190 } 191 } 192 }; 193 this.loadScripts=function(arr, c) { 194 this.count=arr.length; 195 var h = document.getElementsByTagName("head")[0]; 196 var a=[]; 197 this.completeCallback=c; 198 for(var i=0;i<arr.length;i++){ 199 var s = document.createElement("script"); 200 s.type = "text/javascript"; 201 s.zLoader=this; 202 s.setAttribute("data-scriptLoaded","0"); 203 s.onreadystatechange=function(){ 204 if(this.readyState=="loaded" || this.readyState=="complete"){ 205 if (this.getAttribute("data-scriptLoaded")=="0"){ 206 this.setAttribute("data-scriptLoaded","1"); 207 this.zLoader.scriptLoaded(); 208 } 209 } 210 }; 211 s.onload=function(){ 212 if (this.getAttribute("data-scriptLoaded")=="0"){ 213 this.setAttribute("data-scriptLoaded","1"); 214 this.zLoader.scriptLoaded(); 215 } 216 }; 217 218 s.onerror=function(){ 219 //alert("error loading script:"+this.src+":"+this.readyState); 220 }; 221 s.src = arr[i]; 222 223 h.appendChild(s); 224 } 225 } 226}
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.