1var ITM_Banner = window.ITM_Banner || {}; 2ITM_Banner.ITM_OneCmsBannerLoad = false; 3ITM_Banner.ITM_OneCmsBannerLoad_Flag = ''; 4/** 5 * Add banner reload feature 6 */ 7window.console.log('hi to banner-reload.js file loaded..........'); //we need this.... 8 9"use strict"; 10 11//WPB-3497 12jQuery(document).ready(function( $ ){ 13 readyFn_BannerAjax( $ , 'document.ready' ); 14 ITM_Banner.ITM_OneCmsBannerLoad_Flag = 'document.ready'; 15}); 16 17//jQuery(document).ready(function($){ 18function readyFn_BannerAjax( $ , flagCheck = '') { 19 if (ITM_Banner.ITM_OneCmsBannerLoad) { 20 window.console.log('ITM_OneCmsBannerLoad return : '+flagCheck); 21 window.console.log('ITM_OneCmsBannerLoad_Flag : '+ITM_Banner.ITM_OneCmsBannerLoad_Flag); 22 //donot want to call this func again..... from pjax.... 23 return; 24 } 25 26 //we need to call only once. if pjax and or document.ready above. 27 ITM_Banner.ITM_OneCmsBannerLoad = true; 28 29 /* //WD-527 -- commented this because now we have ajax request, instead of direct on page load. 30 // Banners that has no available attribute will no be reloaded, because we assume they are single 31 var banners = $('.js-reload-banner[data-available-banners]'); 32 // Add listners to all banners 33 banners.on( 'reload', function(e) { 34 reloadBanner( $(this) ); 35 }); 36 // Add global listner to page body 37 $('body').on('reload-banners', function() { 38 banners.trigger('reload'); 39 }); 40 */ 41 window.console.log('readyFn_BannerAjax >> banner-reload.js..... '+flagCheck); 42 43 //***************************************************************************************************************************************************** 44 //stop everything js code from ajax-reaload.php file and used here into one js function. 45 //WD-671 + WD-619 46 var dealyOnEachAjaxRequest = 10; //miliseconds timining on each ajax request. as we have cookie to remove duplicate banners on single page visit. 47 var totalBannerHiddenOnPage = $('.banner-ajax-hidden-class').length; 48 //window.console.log('totalBannerHiddenOnPage : '+totalBannerHiddenOnPage); 49 50 var iBanneCount = 1; var timeOutValue_Last = 0; var displayed_banner_on_page = ''; var bannerDisplayIds = ''; var siteId_Banner = 0; 51 52 //Stop but keep code as usual. 53 /*var cookieInstanceCode = false; //right now stop to create cookie from js code means instance number wise last banner displayed. 54 var cookieInstanceWithBanner_arr = new Array();*/ 55 56 var bannerDisplayedJsArr = new Array(); 57 $('.banner-ajax-hidden-class').each(function(index, ObjHidden){ 58 var bannerHiddenValue = ObjHidden.value; 59 if (bannerHiddenValue) { 60 var bannerHiddenValueArr = bannerHiddenValue.split('#:#'); 61 62 var bannerId_Ajax = bannerHiddenValueArr[0]; 63 var data_available_Ajax = bannerHiddenValueArr[1]; 64 var instance_Ajax = bannerHiddenValueArr[2]; 65 var location_Ajax = bannerHiddenValueArr[3]; 66 var bannerbinId_Ajax = bannerHiddenValueArr[4]; 67 var advPluginUrl_Ajax = bannerHiddenValueArr[5]; 68 var siteId_Ajax = bannerHiddenValueArr[6]; 69 var inc_path_Ajax = bannerHiddenValueArr[7]; 70 var gmt_offset_site_Ajax = bannerHiddenValueArr[8]; 71 var is_https_site_Ajax = bannerHiddenValueArr[9]; 72 var really_simple_ssl_plugin_Ajax = bannerHiddenValueArr[10]; 73 var chk_this = bannerHiddenValueArr[11]; //WPB-5212 74 //window.console.log('bannerId_Ajax : '+bannerId_Ajax); 75 //WD-928 76 var extraBannerHiddenObj = jQuery('#banner-ajax-hidden-extra-'+instance_Ajax); 77 78 //WD-670 -- managing remove duplicate through javascript code, removed ajax dealy and cookie reading code to remove duplicate banners. 79 var bannerId_Ajax_For_div_Id = bannerId_Ajax; 80 //----------------------------------------------------------------------- 81 if (index == 0) { 82 siteId_Banner = siteId_Ajax; 83 //---------------------------------------------- 84 //Stop but keep code as usual............ 85 /*if (cookieInstanceCode) { 86 var cookieInstanceWithBanner = getCookie_Banner('bannerDisplayed_'+siteId_Banner); 87 //alert(cookieInstanceWithBanner); 88 if (cookieInstanceWithBanner) { 89 var partArr1 = cookieInstanceWithBanner.split("@"); 90 //alert(partArr1.length); 91 for (var i = 0; i < partArr1.length; i++) { 92 var partArr2 = partArr1[i].split(":"); 93 //alert(partArr2[0] + ' -- ' + partArr2[1]); 94 var instanceNo = partArr2[0]; 95 cookieInstanceWithBanner_arr[instanceNo] = partArr2[1]; 96 } 97 } 98 }*/ 99 //---------------------------------------------- 100 }//End of if (index == 0) 101 102 //if data_available_Ajax comma separated banners found then only. 103 var data_available_arr = new Array(); 104 if (data_available_Ajax) { 105 data_available_arr = data_available_Ajax.split(","); 106 } 107 108 var index_banner = 0; 109 if (data_available_arr.length > 0) { 110 //make new array and remove banner which is already displayed on page. 111 /*var data_available_arr_new = new Array(); 112 var data_available_bannerId = 0; 113 var data_available_bannerIds_new_str = ''; 114 var j = 0; 115 for (var i = 0; i < data_available_arr.length; i++) { 116 data_available_bannerId = data_available_arr[i]; 117 if (bannerDisplayedJsArr[data_available_bannerId] && bannerDisplayedJsArr[data_available_bannerId] != 'undefined') { 118 //remove which is already displyed. ( from available array check displayed banner and unset it ) 119 } 120 else { 121 //if not displyaed then set into new array. 122 data_available_arr_new[j] = data_available_bannerId; 123 data_available_bannerIds_new_str = data_available_bannerId + ','; 124 j++; 125 } 126 }*/ 127 128 //instead of direct code, created separate fun. -- WD-928 129 var resultRemoveDuplicateArr = removeDuplicateBannersFromDisplayedBannersJsArr(bannerDisplayedJsArr, data_available_arr); 130 var data_available_arr_new = resultRemoveDuplicateArr['data_available_arr_new']; 131 var data_available_bannerIds_new_str = resultRemoveDuplicateArr['data_available_bannerIds_new_str']; 132 133 if (data_available_arr_new.length > 0) { 134 data_available_arr = data_available_arr_new; 135 data_available_bannerIds_new_str = data_available_bannerIds_new_str.slice(0,-1); 136 //data_available_Ajax = data_available_bannerIds_new_str; 137 } 138 139 //pickup random banner from available banners. 140 index_banner = Math.floor(Math.random() * data_available_arr.length); 141 142 //---------------------------------------------- 143 //Stop but keep code as usual............ 144 /*if (cookieInstanceWithBanner_arr && cookieInstanceCode) { 145 //for (var i in cookieInstanceWithBanner_arr) { 146 //alert('key is: ' + i + ', value is: ' + cookieInstanceWithBanner_arr[i]); 147 //} 148 if (cookieInstanceWithBanner_arr[instance_Ajax] && cookieInstanceWithBanner_arr[instance_Ajax] != 'undefined') { 149 var bannerOfInstance = cookieInstanceWithBanner_arr[instance_Ajax]; 150 for (var i = 0; i < data_available_arr.length; i++) { 151 if (bannerOfInstance == data_available_arr[i]) { 152 index_banner = i; 153 index_banner = index_banner + 1; //take next index means banner to next from last displyed banner. 154 if (index_banner >= data_available_arr.length) { 155 index_banner = 0; //take first one 156 } 157 break; 158 } 159 } 160 } 161 }//End of if (cookieInstanceWithBanner_arr)*/ 162 //---------------------------------------------- 163 //overwrite value which will pass into ajax request. 164 bannerId_Ajax = data_available_arr[index_banner]; 165 }//End of if (data_available_arr.length > 0) 166 //----------------------------------------------------------------------- 167 168 if (bannerDisplayedJsArr[bannerId_Ajax] && bannerDisplayedJsArr[bannerId_Ajax] != 'undefined') { 169 var donotAllowAjaxRequest = true; 170 //---------------------------------- 171 //WD-928 -- check run of sites banners and pickup anyone random. 172 if (extraBannerHiddenObj && extraBannerHiddenObj != 'undefined') { 173 var extraBannerHiddenValue = extraBannerHiddenObj.val(); 174 if (extraBannerHiddenValue) { 175 var extraBannerHiddenValueArr = extraBannerHiddenValue.split('#:#'); 176 var bannerCommaSepIds = extraBannerHiddenValueArr[0]; //all banners comma sep ids for particular banner bin. 177 var runOfSiteBannerCommaSepIds = extraBannerHiddenValueArr[1]; //only run of sites banners. 178 179 var run_of_sites_banner_arr = new Array(); 180 if (runOfSiteBannerCommaSepIds) { 181 run_of_sites_banner_arr = runOfSiteBannerCommaSepIds.split(","); 182 //check run of sites also not duplicates. 183 var resultRemoveDuplicateArr = removeDuplicateBannersFromDisplayedBannersJsArr(bannerDisplayedJsArr, run_of_sites_banner_arr); 184 var data_available_arr_new = resultRemoveDuplicateArr['data_available_arr_new']; 185 var data_available_bannerIds_new_str = resultRemoveDuplicateArr['data_available_bannerIds_new_str']; 186 if (data_available_arr_new.length > 0) { 187 run_of_sites_banner_arr = data_available_arr_new; 188 } 189 190 if (run_of_sites_banner_arr.length > 0) { 191 //pickup run of sites banner and display it. 192 index_banner = Math.floor(Math.random() * run_of_sites_banner_arr.length); 193 194 bannerId_Ajax = run_of_sites_banner_arr[index_banner]; 195 donotAllowAjaxRequest = false; //allow run of site banner. 196 } 197 } 198 }//End of if (extraBannerHiddenValue) 199 } 200 //---------------------------------- 201 if (donotAllowAjaxRequest) { 202 bannerDisplayIds = bannerDisplayIds + instance_Ajax + ':' + '0' + '@'; 203 //window.console.log('advertise-ajax.php file return........'); 204 return; 205 } 206 } 207 else { 208 bannerDisplayedJsArr[bannerId_Ajax] = bannerId_Ajax; 209 } 210 211 //window.console.log('advertise-ajax.php file called........'); 212 bannerDisplayIds = bannerDisplayIds + instance_Ajax + ':' + bannerId_Ajax + '@'; 213 214 // 215 // Send ajax request , after checking duplication into bannerDisplayedJsArr js array.
216 // 217 var urlVal = advPluginUrl_Ajax + 'advertise-ajax.php?bannerAjax=true&callFromFile=ajax-reload.php&bannerId='+bannerId_Ajax+'&dataAvailable='+data_available_Ajax+'&bannerInstance='+instance_Ajax+'&siteId='+siteId_Ajax+'&bannerBinSlug='+location_Ajax+'&bannerbinId='+bannerbinId_Ajax+'&inc_path='+inc_path_Ajax+'&gmt_offset_site='+gmt_offset_site_Ajax+'&is_https='+is_https_site_Ajax+'&https_plug='+really_simple_ssl_plugin_Ajax+'&_wpnonce='+chk_this; 218 /*if (bannerbinId_Ajax == 59 || bannerbinId_Ajax == '59') 219 alert(urlVal);*/ 220 var currentUrl = location.href; 221 if(currentUrl.indexOf("https:") >= 0){ 222 urlVal = urlVal.replace("http:","https:"); 223 } 224 225 var uniqueDivId = 'banner-ajax-div-'+bannerId_Ajax_For_div_Id+'-'+instance_Ajax; 226 if (iBanneCount == 1) { 227 var timeOutValue = 2; //2 milliseconds 228 } 229 else { 230 var timeOutValue = (20 + ((instance_Ajax - 1) * dealyOnEachAjaxRequest)); 231 } 232 233 jQuery('#'+uniqueDivId).html('<div style="height:200px;width:250px;" class="banner-loading-div-class"><br /><br /> <br /><br /></div>'); 234 235 //stop set time out and set async : false to ajax request. so, each ajax request will wait upto first one is not finished. 236 //if async : true then we may need setTimeout() things. 237 //setTimeout( function() { 238 jQuery.ajax({ 239 type: "GET", 240 url: urlVal, 241 async: true, //Async:False will hold the execution of rest code. Once you get response of ajax, only then, rest of the code will execute. 242 /*Setting async to false means that the statement you are calling has to complete before the next statement in your function can be called. 243 If you set async: true then that statement will begin it's execution and 244 the next statement will be called regardless of whether the async statement has completed yet.*/ 245 //dataType: "html", 246 success: function(data) { 247 jQuery('#'+uniqueDivId).html(data); 248 }//End of success function. 249 }); 250 //}, timeOutValue ); 251 252 timeOutValue_Last = timeOutValue; 253 254 iBanneCount++; 255 }//End of if (bannerHiddenValue) 256 }); 257 bannerDisplayIds = bannerDisplayIds.slice(0,-1); 258 //Stop but keep code as usual............ 259 /*if (cookieInstanceCode) 260 setCookie_Banner('bannerDisplayed_'+siteId_Banner,bannerDisplayIds,1,'/');*/ 261 262 //WD-928 263 function removeDuplicateBannersFromDisplayedBannersJsArr(bannerDisplayedJsArr_param, data_available_arr_param) { 264 //make new array and remove banner which is already displayed on page. 265 var data_available_arr_new = new Array(); 266 var data_available_bannerId = 0; 267 var data_available_bannerIds_new_str = ''; 268 269 var j = 0; 270 for (var i = 0; i < data_available_arr_param.length; i++) { 271 data_available_bannerId = data_available_arr_param[i]; 272 if (bannerDisplayedJsArr_param[data_available_bannerId] && bannerDisplayedJsArr_param[data_available_bannerId] != 'undefined') { 273 //remove which is already displyed. ( from available array check displayed banner and unset it ) 274 } 275 else { 276 //if not displyaed then set into new array. 277 data_available_arr_new[j] = data_available_bannerId; 278 data_available_bannerIds_new_str = data_available_bannerId + ','; 279 j++; 280 } 281 } 282 283 var resultRetArr = new Array(); 284 resultRetArr['data_available_arr_new'] = data_available_arr_new; 285 resultRetArr['data_available_bannerIds_new_str'] = data_available_bannerIds_new_str; 286 287 return resultRetArr; 288 }//End of function removeDuplicateBannersFromDisplayedBannersJsArr 289 //***************************************************************************************************************************************************** 290 291 //-------------------------------------------------------------------------------- 292 //WD-527 -- we have now ajax request for banners. so, we also need ajax div class, instead of direct js-reload-banner 293 var ajax_banners = $('.banner-ajax-div-class'); 294 if (ajax_banners && ajax_banners != 'unedefined') { 295 var totalBannerOnPage = 0; 296 totalBannerOnPage = ajax_banners.length; 297 298 if (totalBannerOnPage > 0) { 299 var millisecondBanner = 0; 300 if (totalBannerOnPage > 1) { //if more than one banner means if 7 then 7-1 = 6. so, 6 * 620 = 3720 milliseconds means near by 4 seconds. 1000 = 1 second. 301 millisecondBanner = ((totalBannerOnPage - 1) * dealyOnEachAjaxRequest) + dealyOnEachAjaxRequest; 302 //used set time out because once all ajax request gets for banners then start changing banner on image gallery. 303 setTimeout(ajax_reloadBanner, millisecondBanner); 304 } 305 else { //if only 1 banner into page. 306 millisecondBanner = totalBannerOnPage * dealyOnEachAjaxRequest; 307 setTimeout(ajax_reloadBanner, millisecondBanner); 308 } 309 }//End of if (totalBannerOnPage > 0) 310 }//End of if (ajax_banners && ajax_banners != 'unedefined') 311 312 //moved direct code of .js-reload-banner banner into fun of set time out. 313 function ajax_reloadBanner() { 314 // Banners that has no available attribute will no be reloaded, because we assume they are single 315 var banners = $('.js-reload-banner[data-available-banners]'); 316 // Add listners to all banners 317 banners.on( 'reload', function(e) { 318 //reloadBanner( $(this) ); //we can stop this and try to use hidden and with reloadBanner_New() function later on. 319 reloadBanner_useCacheFile( $(this) ); //we can comment this to if we want to use hiddedn and reloadBanner_New() fun. 320 }); 321 // Add global listner to page body 322 $('body').on('reload-banners', function() { 323 banners.trigger('reload'); 324 }); 325 }//End of function ajax_reloadBanner 326 327 /** 328 * Reload single banner 329 * @param {[type]} banner [description] 330 * @return {[type]} [description] 331 */ 332 //reloadBanner -- STOP TO USE THIS FUN INTO ABOVE FUN ajax_reloadBanner() -- we are using reloadBanner_useCacheFile() below fun. 333 function reloadBanner( banner ) { 334 var exclude = banner.prop('data-exclude'), 335 available = banner.attr('data-available-banners').split(','), 336 notDisplayed, 337 targetBannerId; 338 339 // Exit flow if banner has not loaded 340 if ( banner.attr('data-reloading') ) { 341 return; 342 } 343 344 // Either use single banner_id or list of ids to exclude from query 345 if (typeof exclude === 'undefined') { 346 exclude = [ banner.attr('data-banner-id') ]; 347 } else if ( exclude !== '' ) { 348 exclude = exclude.split(','); 349 } else { 350 exclude = []; 351 } 352 353 // Get ids that were not yet displayed 354 notDisplayed = $(available).not(exclude).get(); 355 356 // If all banners were already displayed -> reset exclude property 357 if ( notDisplayed.length == 0 ) { 358 notDisplayed = available; 359 exclude = []; 360 } 361 362 targetBannerId = notDisplayed.shift(); 363 364 // Send request to reload banner 365 $.ajax({ 366 url: ajaxurl, 367 data: { 368 action: 'reload_banner', 369 id: targetBannerId 370 }, 371 dataType: 'html', 372 beforeSend: function ( xhr ) { 373 // Attribute to prevent banner reload while one has not been loaded 374 banner.attr('data-reloading', '1'); 375 } 376 }).success(function(code){ 377 // Banner has loaded succefully 378 banner.removeAttr('data-reloading'); 379 // Update banner code 380 banner.html(code); 381 // UPdate exclude prop 382 exclude.push(targetBannerId); 383 banner.prop('data-exclude', exclude.join()); 384 // 3-rd party integration 385 banner.find('.adv-banner').trigger('reloaded'); 386 }); 387 }//End of function reloadBanner 388 389 //WD-527 390 function reloadBanner_useCacheFile( banner ) { 391 var exclude = banner.prop('data-exclude'), 392 available = banner.attr('data-available-banners').split(','), 393 notDisplayed, 394 targetBannerId, 395 instance_banner = banner.attr('data-instance-no'); //for cache. 396 397 // Exit flow if banner has not loaded 398 if ( banner.attr('data-reloading') ) { 399 return; 400 } 401 402 // Either use single banner_id or list of ids to exclude from query 403 if (typeof exclude === 'undefined') { 404 exclude = [ banner.attr('data-banner-id') ]; 405 } else if ( exclude !== '' ) { 406 exclude = exclude.split(','); 407 } else { 408 exclude = []; 409 } 410 411 // Get ids that were not yet displayed 412 notDisplayed = $(available).not(exclude).get(); 413 414 // If all banners were already displayed -> reset exclude property 415 if ( notDisplayed.length == 0 ) { 416 notDisplayed = available; 417 exclude = []; 418 } 419 420 targetBannerId = notDisplayed.shift(); 421 //for cache. 422 var ajaxurl_banner = ''; 423 if (instance_banner) { 424 var bannerHiddenObj = jQuery('#banner-ajax-hidden-'+instance_banner); 425 var bannerHiddenValue = bannerHiddenObj.val(); 426 if (bannerHiddenValue) { 427 var bannerHiddenValueArr = bannerHiddenValue.split('#:#'); 428 429 var bannerId_GalleryReload = bannerHiddenValueArr[0]; 430 var data_available_GalleryReload = bannerHiddenValueArr[1]; 431 var instance_GalleryReload = bannerHiddenValueArr[2]; 432 var location_GalleryReload = bannerHiddenValueArr[3]; 433 var bannerbinId_GalleryReload = bannerHiddenValueArr[4]; 434 var advPluginUrl_GalleryReload = bannerHiddenValueArr[5]; 435 var siteId_GalleryReload = bannerHiddenValueArr[6]; 436 437 ajaxurl_banner = advPluginUrl_GalleryReload + 'advertise-gallery-ajax.php?bannerGalleryAjax=true&callFromFile=banner-reload.js&bannerId='+targetBannerId+'&dataAvailable='+data_available_GalleryReload+'&bannerInstance='+instance_GalleryReload+'&siteId='+siteId_GalleryReload+'&bannerBinSlug='+location_GalleryReload+'&bannerbinId='+bannerbinId_GalleryReload; 438 } 439 } 440 441 if (ajaxurl_banner) { 442 443 } 444 else { 445 return; 446 } 447 448 // Send request to reload banner 449 $.ajax({ 450 url: ajaxurl_banner, //for cache. 451 /*data: { 452 action: 'reload_banner', 453 id: targetBannerId 454 },*/ 455 dataType: 'html', 456 beforeSend: function ( xhr ) { 457 // Attribute to prevent banner reload while one has not been loaded 458 banner.attr('data-reloading', '1'); 459 } 460 }).success(function(code){ 461 // Banner has loaded succefully 462 banner.removeAttr('data-reloading'); 463 // Update banner code 464 banner.html(code); 465 // UPdate exclude prop 466 exclude.push(targetBannerId); 467 banner.prop('data-exclude', exclude.join()); 468 // 3-rd party integration 469 banner.find('.adv-banner').trigger('reloaded'); 470 }); 471 }//End of function reloadBanner_useCacheFile 472//}); 473};
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.