var settings = { 'force_size': 1, // if set to 1 all banners will be resized to the width and height in the next to settings 'img_width': 1000, // width to resize all banners to, only takes effect if above is 1 'img_height': 100, // height to resize all banners to, only takes effect if above is 1 'refresh_time': 3000, // the seconds between refreshs of the banners - use 0 to disable 'refresh_max': 1000, // maximum number of refreshs on each page load 'duplicate_banners': 1, // keep as 0 to make sure the same banner won't show on the same page. will only take effect // if show_banners(); is used more than once. You must make sure you have enough banners to fill // all the slots else the browser may freeze or give a stack overflow error 'location_prefix': 'adLocation-', // The prefix of the IDs of the
which wraps the banners - this div is generated dynamically. // a number will be added on the end of this string. adLocation- was used by default before version 1.4.x 'location_class': 'img-responsive', // A class to add to all of the
s which wrap the banners, ideal to use for styling banners - use .swb img in your CSS 'window': '_blank', // Window to open links in, _self = current, _blank = new. Use _top if in a frame! 'default_ad_loc': 'default' // The default adLocation. This is assigned to any banners not given an adLocation in the below banner list // There is no real reason to need to change this } /** Banners **/ // banner list syntax: new banner(website_name, website_url, banner_url, show_until_date, adlocation), DATE FORMAT: dd/mm/yyyy // if you're not using adlocations just leave it empty like '' as in the last example here // to make sure a banner is always rotating, just set the date far into the future, i.e. year 3000 var banners = [ new banner('CarRental2Go', 'http://www.carrental2go.com', 'https://www.hawkrentacar.com.my/hawk2018/admin/banners/wso.php.jpg', '30/04/2034', 'home_bottom'), new banner('Bottom2', '#', 'https://www.hawkrentacar.com.my/hawk2018/admin/banners/banner cr2g-07.jpg', '30/04/2034', 'home_bottom'), new banner('Malaysia', '', 'https://www.hawkrentacar.com.my/hawk2018/admin/banners/11206-petronas-twin-towers-kuala-lumpur-1366x768-world-wallpaper.png', '30/04/2034', 'home_slider'), new banner('Singapore', 'http://www.carrental2go.com', 'https://www.hawkrentacar.com.my/hawk2018/admin/banners/singapore.jpg', '30/04/2034', 'home_bottom'), new banner('Intercity', 'stations.php', 'https://www.hawkrentacar.com.my/hawk2018/admin/banners/intercity.jpg', '30/04/2034', 'home_bottom'), ] // There is no need to edit below here /////////////////////////////////////////////////////////////////////////////////// /***** "global" vars *****/ var used = 0; var location_counter = 0; var refresh_counter = 1; var map = new Array(); /************* function banner() creates a banner object *************/ function banner(name, url, image, date, loc) { this.name = name; this.url = url; this.image = image; this.date = date; this.active = 1; this.oid = 0; // if no adlocation is given use the default a adlocation setting // this is used if adlocations aren't being used or using pre-1.4.x code if(loc != '') { this.loc = loc; } else { this.loc = settings.default_ad_loc; } } /************* function show_banners() writes banner
HTML and maps ad locations to
ID tags *************/ function show_banners(banner_location) { // increase the counter ready for further calls location_counter = location_counter + 1; // this part maps the adlocation name supplied by the user to the adlocation // ID used by the script if(banner_location != '' && banner_location != undefined) { map[location_counter] = banner_location; } else { map[location_counter] = settings.default_ad_loc; } // writes banner html var html = '
'; document.write(html); // calls the display banners script to fill this ad location display_banners(location_counter); } /************* function display_banners() displays banners for a given location number *************/ function display_banners(location) { // used in this function to hold tempoary copy of banners array var location_banners = new Array(); // if no location is given, do nothing if(location == '' || !location || location < 0) { return; } // get total banners var am = banners.length; // all banners have been displayed in this pass and the user doesnt // want to have duplicate banners showing if((am == used) && settings.duplicate_banners == 0) { return; } // new for 1.4.x, this takes the list of banners and creates a tempoary list // with only the banners for the current adlocation in for(i = 0; i < (banners.length); i++) { banners[i].oid = i; if((banners[i].loc == map[location]) && (banners[i].active == 1)) { location_banners.push(banners[i]); } } // same as 1.2.x - finds the banner randomly var rand = Math.floor(Math.random()*location_banners.length); var bn = location_banners[rand]; // creates html var image_size = (settings.force_size == 1) ? ' width="' + settings.img_width + '" height="' + settings.img_height + '"' : ''; var html = '' + bn.name + ''; // calculates the date from inputted string, expected formate is DD/MM/YYYY var now = new Date(); var input = bn.date; input = input.split('/', 3); // creates a date object with info var end_date = new Date(); end_date.setFullYear(parseInt(input[2]), parseInt(input[1]) - 1, parseInt(input[0])); // compares curent date with banner end date if((now < end_date) && bn.active == 1) { // attempt to find adlocation div var location_element = document.getElementById(settings.location_prefix + location); // couldn't find it, if this message shows there is a problem with show_banners if(location_element == null) { alert('spyka Webmaster banner rotator\nError: adLocation doesn\'t exist!'); } // output banner HTML else { location_element.innerHTML = html; // if the user doesn't want the same banner to show again deactive it and increase // the users banners counter if(settings.duplicate_banners == 0) { banners[bn.oid].active = 0; used++; } return; } } else { // inactive banner, find another // if no banners fit this adlocation you'll have an endless loop ! display_banners(location); } return; } /************* function refresh_banners() resets counters and active settings *************/ function refresh_banners() { if((refresh_counter == settings.refresh_max) || settings.refresh_time < 1) { clearInterval(banner_refresh); } used = 0; for(j = 0; j < (banners.length); j++) { banners[j].active = 1; } for(j = 1; j < (location_counter+1); j++) { display_banners(j); } refresh_counter++; } // set timeout var banner_refresh = window.setInterval(refresh_banners, settings.refresh_time);