// document.write(''); // KEEP THIS LINE AS THE FIRST LINE function adsys_getAdCount(nAdID) { var sAllCookies = document.cookie; var nAdCount = 0; var sIndexString = "tnadsys_adcount_" + nAdID + "="; var nPos = sAllCookies.indexOf(sIndexString); if (nPos != -1) { var nStart = nPos + sIndexString.length; var nEnd = sAllCookies.indexOf(";", nStart); if (nEnd == -1) { nEnd = sAllCookies.length; } var sDataString = sAllCookies.substring(nStart, nEnd); var aAdData = sDataString.split("&"); nAdCount = parseInt(aAdData[0], 10); if (isNaN(nAdCount)) { nAdCount = 0; } } return nAdCount; } function adsys_hasReachedFreqCap(nAdID, nLimit) { var nAdCount = adsys_getAdCount(nAdID); if (nAdCount >= nLimit) { return true; } return false; } function adsys_incrementAdView(nAdID, nMinutes) { var sAllCookies = document.cookie; var sIndexString = "tnadsys_adcount_" + nAdID + "="; var nPos = sAllCookies.indexOf(sIndexString); if (nPos == -1) { var expdate = new Date((new Date()).getTime() + nMinutes * 60000); document.cookie = sIndexString + "1&" + escape(expdate.toGMTString()) + "; expires=" + expdate.toGMTString(); } else { var sCookieData = sAllCookies.substring(nPos + sIndexString.length); var aCookieData = sCookieData.split(";"); var sDataString = aCookieData[0]; var aData = sDataString.split("&"); nAdCount = parseInt(aData[0], 10) + 1; document.cookie = sIndexString + nAdCount + "&" + aData[1] + "; expires=" + unescape(aData[1]); } } /** * Display ads from Adsys * * @param string sAdsURL The base URL from Adsys to pull ad data from * @param string sDomain The domain name for the given suite of ads * @param array aAdSet The ads to be displayed * * @access public */ function adsys_displayAd(sAdsURL, sDomain, aAdSet, aCampaigns) { var adNumber = null; var adLink = ""; var aAds = new Array(); var sAdUniqueURL = sSubURL = sAdsURL; var sAdsBaseURL = "" var sFlashVars = "" var nTotalWeight = 0; var aCampaignTotals = new Array(); var nHighestCampaign = 0; var nCampaignID = 0; // Create the "superglobal" adsys array if (!document.adsys) { document.adsys = new Array(); } // Remove "duplicate" or "capped" ads for (var i = 0; i < aAdSet.length; i++) { if (!document.adsys[aAdSet[i][1]]) { aAds[aAds.length] = aAdSet[i]; } } // Randomly find an ad if (aAds.length == 0) { return; } else if (aAds.length == 1) { adNumber = 0; } else { // Loop through the campaigns and get the total weights of each, // multiplying each by 100. Determine the appropriate adjusted // weight for each campaign to even them out. Then multiply the // adjusted weights by the percentage of each campaign. aCampaignTotals[0] = 0; for (var i = 0; i < aAds.length; i++) { nCampaignID = aAds[i][9]; if (!aCampaignTotals[nCampaignID]) { aCampaignTotals[nCampaignID] = 0; } aAds[i][7] = aAds[i][7] * 100; aCampaignTotals[nCampaignID] = aCampaignTotals[nCampaignID] + aAds[i][7]; if (aCampaignTotals[nCampaignID] >= aCampaignTotals[nHighestCampaign]) { nHighestCampaign = nCampaignID; } } for (var i = 0; i < aAds.length; i++) { nCampaignID = aAds[i][9]; nMultiplier = aCampaignTotals[nHighestCampaign] / aCampaignTotals[nCampaignID]; nPercentage = aCampaigns[nCampaignID] / 100; aAds[i][7] = Math.ceil(aAds[i][7] * nMultiplier * nPercentage); aAds[i][8] = nTotalWeight; // the lowest weight number for this ad nTotalWeight += aAds[i][7]; } randomWeight = Math.floor(Math.random() * nTotalWeight); for (var i = 0; i < aAds.length; i++) { if (randomWeight >= aAds[i][8]) { adNumber = i; } else { break; } } } // Ad the adNumber to the list of ads we've seen document.adsys[aAds[adNumber][1]] = 1; // If the ad is a frequency-capped ad, increment its count in the // viewer's cookie. if (aAds[adNumber][11] && (aAds[adNumber][11] > 0)) { adsys_incrementAdView(aAds[adNumber][1], aAds[adNumber][11]); } // Assign the "base" URI for all operations sAdsBaseURL = "/creative/" + sDomain + "/" + aAds[adNumber][0]; sAdsBaseURL += "/" + aAds[adNumber][1] + "." + aAds[adNumber][2]; sAdUniqueURL += "/" + Math.floor(Math.random()*100000000) + sAdsBaseURL; sAdClickURL = "/c" + Math.floor(Math.random()*100000000); // Determine which "type" of ad we are going to render switch(aAds[adNumber][2]) { // For Flash files, build the following tags case "swf": if (aAds[adNumber][5][0] != '') { // Build the URL for retrieving the ad element sSubURL += sAdClickURL; sSubURL += "/creative/" + sDomain + "/" + aAds[adNumber][6]; sSubURL += "/" + aAds[adNumber][1] + "." + aAds[adNumber][2]; // Add a Flash variable to sFlashVars = "clickTAG=" + sSubURL + "%3Fr%3D" + aAds[adNumber][5][0]; for(var x = 1; x < aAds[adNumber][5].length; x++) { sFlashVars += "&clickTAG"+(x+1)+"=" + sSubURL + "%3Fr%3D" + aAds[adNumber][5][x]; } sAdUniqueURL += "?" + sFlashVars; } adLink = ''; adLink += ''; adLink += ''; adLink += ''; adLink += ''; adLink += ''; adLink += ''; adLink += ''; adLink += ''; break; // Format a javascript file URL for text-based ads case "js": adLink = ''; adLink += ''; break; // The default is to assume image-style servering default: if (aAds[adNumber][3] != "") { if (aAds[adNumber][3].substring(0,7) == "mailto:") { adLink = ''; } else { adLink = ''; if (aAds[adNumber][3] != "") { adLink += ''; } } document.write(adLink); } adsys_displayStaticAds = function() { aCampaigns = new Array(); aCampaigns[873] = 100; aAds = new Array(); nAdsysTime = new Date().getTime()/1000; if ((nAdsysTime >= 1147323600) && (nAdsysTime <= 1463029199)) { aAd = new Array('national-skyscraper', '47402', 'js'); aAd[7] = 10; aAd[8] = 0; aAd[9] = 873; aAd[10] = 0; aAd[11] = 0; aAds[aAds.length] = aAd; } adsys_displayAd('http://adsys.townnews.com', 'gatehousemedia.com', aAds, aCampaigns); }; document.write('');