// Parameter obj function Parameter() { // variables var parameters = new Object; // functions this.addParameter = addParameter; this.getParameter = getParameter; this.getKeys = getKeys; // return the parameter for looping of the keys function getKeys() { return parameters; } // add the parameter function addParameter(key, value) { if(!parameters[key]) parameters[key] = new Array(); parameters[key].push(value); } // get the parameter function getParameter(key, separator) { if(!parameters[key]) return; return parameters[key].join(separator); } } // Url obj function Url() { var p = new Parameter(); // functions this.addParameter = p.addParameter; this.getParameter = p.getParameter; this.getKeys = p.getKeys; this.url = new String(); this.buildUrl = buildUrl; this.buildExpandedUrl = buildExpandedUrl; this.setUrl = setUrl; this.getUrl = getUrl; this.buildQueryStringValuePairs = buildQueryStringValuePairs; this.buildExpandedQueryStringValuePairs = buildExpandedQueryStringValuePairs; // setUrl function setUrl(u) { this.url = u } // getUrl function getUrl() { return this.url; } // buildQueryStringValuePairs function buildQueryStringValuePairs() { var queryString = ""; for ( key in this.getKeys() ) { if (queryString != "") queryString += '&' queryString += key +'='+ this.getParameter(key, ','); } return queryString; } // buildUrl function buildUrl() { return this.getUrl() + this.buildQueryStringValuePairs(); } // buildExpandedQueryStringValuePairs function buildExpandedQueryStringValuePairs() { var queryString = ""; for ( key in this.getKeys() ) { var item = new String(this.getParameter(key, ",")); var iArray = item.split(","); for(i = 0; i < iArray.length; i++) { if (queryString != "" && iArray[i] != "" && iArray[i] != undefined) queryString += '&' if (iArray[i] != "" && iArray[i] != undefined) queryString += key +'='+ iArray[i]; } } return queryString; } // buildUrl function buildExpandedUrl() { return this.getUrl() + this.buildExpandedQueryStringValuePairs(); } } Ad.prototype = new Url; function Ad() { var url = new Url(); this.addParameter = url.addParameter; this.getParameter = url.getParameter; this.getKeys = url.getKeys; this.buildUrl = url.buildUrl; this.buildExpandedUrl = url.buildExpandedUrl; var feature = new Parameter(); this.useFeature = useFeature; this.getFeature = getFeature; this.debug = debug; this.write = write; this.deferrable = 1; // add the parameter function useFeature(key) { feature.addParameter(key, "T"); } // add the parameter function getFeature(key) { return feature.getParameter(key, ","); } // this should be overloaded function debug() { document.write('
'+ this.buildExpandedUrl() +'
'); } // this should be overloaded function write() { } } /* ------------------------------------------- Ad Object inherits paramter ------------------------------------------- */ DartAd.prototype = new Ad(); function DartAd() { DartAd.prototype = new Ad(); this.write = write; this.useFeature("site"); this.useFeature("category"); this.useFeature("vgncontent"); this.useFeature("ord"); this.useFeature("topic"); this.useFeature("tile"); this.useFeature("pagetype"); this.useFeature("SECTION_ID"); this.useFeature("SUBSECTION"); this.useFeature("page"); this.useFeature("uniqueid"); this.useFeature("keyword"); //added for food.com this.useFeature("duration"); this.useFeature("diet_type"); this.useFeature("source"); this.useFeature("cuisine"); this.useFeature("ingredient"); this.useFeature("technique"); this.useFeature("mealpart"); this.adClass = new String("AD_CLASS"); function write() { document.write(''); } } AdUrl.prototype = new Ad(); function AdUrl() { AdUrl.prototype = new Ad(); this.write = write; this.useFeature("site"); this.useFeature("category"); this.useFeature("vgncontent"); this.useFeature("ord"); this.useFeature("topic"); this.useFeature("tile"); this.useFeature("pagetype"); this.useFeature("SECTION_ID"); this.useFeature("SUBSECTION"); this.useFeature("page"); this.useFeature("uniqueid"); this.useFeature("SearchKeywords"); this.useFeature("SearchFilters"); this.useFeature("keyword"); //added for food.com this.useFeature("duration"); this.useFeature("dietType"); this.useFeature("source"); this.useFeature("cuisine"); this.useFeature("mainIngredient"); this.useFeature("technique"); this.useFeature("mealPart"); function write() { } } DartAdvanceAd.prototype = new DartAd(); function DartAdvanceAd() { DartAdvanceAd.prototype = new DartAd(); this.write = write; this.align=''; this.frameborder = 0; this.height=''; this.longdesc=''; this.marginheight=0; this.marginwidth=0; this.name=''; this.scrolling = 'no'; this.width = '100%'; this.useIframe = false function write() { if(this.useIframe == false) { this.setUrl("http://adsremote.scrippsnetworks.com/js.ng/"); document.write(''); } else { this.setUrl("http://adsremote.scrippsnetworks.com/html.ng/"); document.write(''); } } } /* ------------------------------------------- AdManager ------------------------------------------- */ function AdManager() { var p = new Parameter(); this.addParameter = p.addParameter; this.getParameter = p.getParameter; this.getKeys = p.getKeys; this.createAd = createAd; this.createDeferredAd = createDeferredAd; this.moveAds = moveAds; this.ads = new Array(); this.defer = false; if(document.deferAds != null && document.deferAds == 1 && document.deferEnabled != null && document.deferEnabled == 1) { this.defer = true; } // add the parameter function createAd(ad) { // add the site params for ( key in this.getKeys()) { if ( ad.getFeature(key) != undefined) { ad.addParameter(key, this.getParameter(key, ',')); } } if(document.debug == 1) ad.debug(); ad.write(); } // Create Deferred Ad function createDeferredAd(i) { } // Move Ads function moveAds() { } } // Url obj function AdRestriction() { var p = new Parameter(); // functions this.addParameter = p.addParameter; this.getParameter = p.getParameter; this.getKeys = p.getKeys; this.isActive = true; this.isIframe = false; } function AdRestrictionManager() { this.restriction = new Array(); this.isActive = isActive; this.isIframe = isIframe; this.isMatch = isMatch; this.startMatch = startMatch; // is active function isActive(ad, mdm) { var value = false; for (var i = 0; i < this.restriction.length; i++){ adRestriction = this.restriction[i]; if(!adRestriction.isActive) { value = this.startMatch(ad, mdm, adRestriction); } if(value == true) return false; } return true; } // is Iframe function isIframe(ad, mdm) { var value = false; for (var i = 0; i < this.restriction.length; i++){ adRestriction = this.restriction[i]; if(adRestriction.isIframe) { value = this.startMatch(ad, mdm, adRestriction); } } return value; } function startMatch(ad, mdm, adRestriction) { var match = true; for ( var key in adRestriction.getKeys() ) { var restrictions = adRestriction.getParameter(key, ','); // get it from the mdm var value = mdm.getParameter(key, '----'); match = this.isMatch(value, restrictions); // ad if(!match) { value = ad.getParameter(key, '----'); match = this.isMatch(value, restrictions); } if(!match) return false; } return match; } function isMatch(value, restrictions) { var match = false; if(value) { splitValue = value.split('----'); for(var x = 0; x < splitValue.length; x++) { if(restrictions == splitValue[x]) match = true; for(var a; a < restrictions.length; a++) { if(splitValue[x] == restrictions[a]) { return match = true; } } } } return match; } }