1//console.log('inside loader.js'); 2 3 4window.defineYetience = function(yetience_callback) { 5 if (!window.yetience) { 6 //console.log('window.yetience was not defined. initializing') 7 window.yetience = {} 8 }; 9 10 window.yetience.fileLoader = { 11 script: function(src, callback) { 12 var s = document.createElement('script'); 13 s.setAttribute('src', src); 14 s.onload = window.yetience.callBackAfterDelay(callback); 15 document.body.appendChild(s); 16 }, 17 style: function(href, callback) { 18 var styles = document.createElement('link'); 19 styles.rel = 'stylesheet'; 20 styles.type = 'text/css'; 21 styles.media = 'screen'; 22 styles.href = href; 23 document.getElementsByTagName('head')[0].appendChild(styles); 24 25 styles.onload = window.yetience.callBackAfterDelay(callback); 26 //document.body.appendChild(styles); 27 } 28 }; 29 30 window.yetience.callBackAfterDelay = function(cb) { 31 return function() { 32 setTimeout(function() { 33 cb() 34 }, 0) 35 } 36 37 }; 38 39 window.yetience.fileSuffix = { 40 script: '.js', 41 style: '.css' 42 }; 43 44 window.yetience.loadApp = function(prefix, callback) { 45 window.yetience.loadGroups(prefix, window.yetience.scripts, 'script', function() { 46 window.yetience.loadGroups(prefix, window.yetience.styles, 'style', function() { 47 48 callback() 49 if (typeof Autience != 'undefined' && Autience) { 50 Autience.utils.emitAutienceEvent('load') 51 } 52 53 }) 54 }) 55 }; 56 57 58 window.yetience.loadGroups = function(prefix, script_groups, type, done) { 59 if(script_groups && script_groups.length > 0){ 60 addGroup(0) 61 }else{ 62 done() 63 } 64 65 66 67 function addGroup(group_i) { 68 69 loadScriptGroup(script_groups[group_i], function() { 70 if (group_i < script_groups.length - 1) { 71 72 addGroup(group_i + 1) 73 } else { 74 75 done() 76 } 77 }) 78 }; 79 80 function loadScriptGroup(group, group_callback) { 81 82 if (group) { 83 addItem(0) 84 } else { 85 group_callback() 86 } 87 88 89 function addItem(script_i) { 90 91 var src = prefix + group.base + '/' + group.items[script_i] + window.yetience.valueOrBlank(group.suffix) + window.yetience.fileSuffix[type] 92 93 window.yetience.fileLoader[type](src, function() { 94 95 if (script_i < group.items.length - 1) { 96 addItem(script_i + 1) 97 } else { 98 group_callback() 99 } 100 }) 101 102 } 103 } 104 }; 105 106 window.yetience.valueOrBlank = function(value) { 107 if (value) 108 return value 109 else 110 return '' 111 }; 112 113 window.yetience.ajax = function(url, method, data, success, failure) { 114 if (!this.xhr) { 115 this.xhr = window.ActiveX ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); 116 } 117 var self = this.xhr 118 119 self.onreadystatechange = function() { 120 if (self.readyState === 4 && self.status === 200) { 121 // the request is complete, parse data and call callback 122 if (success) { 123 success(self.responseText) 124 } 125 126 } else if (self.readyState === 4) { 127 // something went wrong but complete 128 if (failure) { 129 failure() 130 } 131 132 } 133 } 134 135 this.xhr.open(method, url, true) 136 this.xhr.setRequestHeader("Content-Type", "application/json") 137 138 if (data) { 139 this.xhr.send(JSON.stringify(data)) 140 } else { 141 this.xhr.send() 142 } 143 144 }; 145 146 window.yetience.browserVersion = function() { 147 //finding OS 148 var browser_data = {} 149 var OSName = "Unknown OS"; 150 if (navigator.appVersion.indexOf("Win") != -1) OSName = "Windows"; 151 if (navigator.appVersion.indexOf("Mac") != -1) OSName = "MacOS"; 152 if (navigator.appVersion.indexOf("X11") != -1) OSName = "UNIX"; 153 if (navigator.appVersion.indexOf("Linux") != -1) OSName = "Linux"; 154 browser_data.OS = OSName; 155 156 // finding browser version 157 navigator.sayswho = (function() { 158 var N = navigator.appName, 159 ua = navigator.userAgent, 160 tem; 161 var M = ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i); 162 if (M && (tem = ua.match(/version\/([\.\d]+)/i)) != null) M[2] = tem[1]; 163 M = M ? [M[1], M[2]] : [N, navigator.appVersion, '-?']; 164 return M; 165 })(); 166 167 browser_data.browser_version = navigator.sayswho; 168 return browser_data; 169 }; 170 171 window.yetience.sendEvent = function(event, website_id, data) { 172 //console.log("In yetience sendEvent") 173 if (!data) { 174 data = {} 175 } 176 data.source = "browser" 177 data.version = window.yetience.version 178 //console.log('Plugin version = '+data.version) 179 data.path = window.location.href 180 data.wordpress_version = window.yetience.wordpress_version; 181 182 var browser_data = window.yetience.browserVersion() 183 data.browser_version = browser_data.browser_version; 184 data.OS = browser_data.OS 185 186 if (!website_id) { 187 var setup = window.yetience.readFromPlatform() 188 website_id = setup.id 189 } 190 191 192 if (!website_id) { 193 //console.log('There is no website_id to send the event') 194 return false 195 } 196 197 198 var img = document.createElement("img"); 199 var image_url = window.yetience.server + '/track/api/EventLogs/image?event=' + event + '&client_id=' + website_id; 200 image_url = image_url + '&time=' + Date.now() 201 if (window.btoa) { 202 var encoded_data = window.btoa(JSON.stringify(data)) 203 image_url = image_url + '&data=' + encoded_data 204 } 205 img.src = image_url 206 img.style.visibility = 'hidden' 207 document.body.appendChild(img); 208 //console.log("Appended image") 209 }; 210 211 //sending error event if there is any error in the client or admin scripts 212 window.onerror = function(message, source, lineno, colno, error) { 213 if (source.indexOf('client.min.js') >= 0 || source.indexOf('admin.min.js') >= 0) { 214 data = {} 215 data.message = message 216 data.source = source 217 data.lineno = lineno 218 data.colno = colno 219 data.error = error 220 //log error even without client id 221 var website_id = 'X', 222 send_event = true 223 if (typeof Autience !== 'undefined' && Autience && Autience.setup && Autience.setup.id) { 224 website_id = Autience.setup.id 225 226 //send client error events for only one hour after popup creation 227 var now = Math.round(new Date().getTime() / 1000); 228 // var one_hour = 3600 229 var six_hours = 6 * 60 * 60 230 var created = Autience.utils.nestedValue(Autience, ['setup', 'first_widget_time']); 231 var time_gap = now - created 232 233 if (created && time_gap > 0 && time_gap < six_hours) { 234 send_event = true 235 } else { 236 send_event = false 237 } 238 } 239 if (send_event) { 240 window.yetience.sendEvent('d_client_error', website_id, data); 241 } 242 243 } 244 }; 245
246 if(yetience_callback){ 247 yetience_callback() 248 }; 249 250};
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.