var v2 = true; var adTemplate = 255 ; // Define all possible ad positions var BANNER_FLEX_TOP = 1 << 0; var BANNER_FLEX_BOTTOM = 1 << 1; var SKY_LEFT = 1 << 2; var SKY_RIGHT = 1 << 3; var BIGBOX_FLEX = 1 << 4; var BIG_FLEX_RIGHT = 1 << 5; var AD_LINKS_RIGHT = 1 << 6; //Overture Links Right (Not in DART) var AD_LINKS_BOTTOM = 1 << 7; //Overture Links Bottom (Not in DART) var TEXTLINKS = 1 << 8; // WP.com hosted links (Not in DART) var VM = 1 << 9; // Not in DART var SPONSORSHIP = 1 << 10; var TILE_LEFT = 1 << 11; // Not in DART var TILE_RIGHT = 1 << 12; // Not in DART var TILE_RIGHT_TOP = 1 << 13; // 125x125 on Travel var TOP_JOBS = 1 << 14; var TOOLBOX_LEFT = 1 << 15; var TOOLBOX_RIGHT = 1 << 16; var TOOLBOX_BOTTOM = 1 << 17; var TILE_RIGHT_TOP2 = 1 << 18; // 125x125 on Travel on right var GOOGLE_LINKS = AD_LINKS_BOTTOM; // turns off bottom ad on articles. //BANNER_FLEX_BOTTOM = false; // Define all possible ad templates var NO_ADS = 0; var NEWS = 1; var NEWS_VM = 2; var NEWS_TRAVEL = 3; var NEWS_TECHNOLOGY = 4; var PRINTER_FRIENDLY = 5; var ENLARGED_PHOTO = 6; var PRINTER_FRIENDLY_FLEX = 7; var NEWS_OVERTURE_RIGHT = 8; var NEWS_OVERTURE_RIGHT_VM = 9; var NEWS_NO_OVERTURE = 10; var DEFAULT_TEMPLATE = NEWS; if (typeof thisNode == 'undefined') thisNode = 'news'; // Define contents of ad templates var templateConfigs = new Array(); templateConfigs[ NEWS ] = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_BOTTOM + AD_LINKS_RIGHT + TOOLBOX_LEFT + TOOLBOX_RIGHT + TOOLBOX_BOTTOM + TEXTLINKS; templateConfigs[ NEWS_NO_OVERTURE ] = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + TOOLBOX_LEFT + TOOLBOX_RIGHT + TOOLBOX_BOTTOM + TEXTLINKS; templateConfigs[ NEWS_VM ] = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_BOTTOM + VM + AD_LINKS_RIGHT + TOOLBOX_LEFT + TOOLBOX_RIGHT + TOOLBOX_BOTTOM + TEXTLINKS; templateConfigs[ NEWS_TRAVEL ] = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_BOTTOM + VM + TILE_RIGHT_TOP + TILE_LEFT + TILE_RIGHT + TEXTLINKS; templateConfigs[ NEWS_TECHNOLOGY ] = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_BOTTOM + SKY_LEFT + TOOLBOX_LEFT + TOOLBOX_RIGHT + TOOLBOX_BOTTOM + TEXTLINKS; templateConfigs[ PRINTER_FRIENDLY ] = SKY_RIGHT + TOOLBOX_RIGHT + AD_LINKS_BOTTOM; templateConfigs[ PRINTER_FRIENDLY_FLEX ] = BIGBOX_FLEX + TOOLBOX_RIGHT + AD_LINKS_BOTTOM; templateConfigs[ NEWS_OVERTURE_RIGHT ] = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT + TOOLBOX_LEFT + TOOLBOX_RIGHT + TOOLBOX_BOTTOM + TEXTLINKS; templateConfigs[ NEWS_OVERTURE_RIGHT_VM ] = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT + VM + TOOLBOX_LEFT + TOOLBOX_RIGHT + TOOLBOX_BOTTOM + TEXTLINKS; templateConfigs[ ENLARGED_PHOTO ] = SKY_RIGHT; templateConfigs[ NO_ADS ] = 0; // Make node-to-template assignments var nodeConfigs = new AdConfigurations(); nodeConfigs.addConfiguration( 'education') .addTemplateAssignment ( new TemplateAssignment( NEWS_VM,1 ) ); nodeConfigs.addConfiguration( 'travel' ) .addTemplateAssignment ( new TemplateAssignment( NEWS_TRAVEL,1) ); nodeConfigs.addConfiguration( 'health') .addTemplateAssignment ( new TemplateAssignment( NEWS_VM,1 ) ); nodeConfigs.addConfiguration( 'print') .addTemplateAssignment ( new TemplateAssignment( NEWS,1 ) ); nodeConfigs.addConfiguration( 'realestate') .addTemplateAssignment ( new TemplateAssignment( NEWS_VM,1 ) ); nodeConfigs.addConfiguration( 'artsandliving') .addTemplateAssignment ( new TemplateAssignment( NEWS_VM,1 ) ); nodeConfigs.addConfiguration( 'business') .addTemplateAssignment ( new TemplateAssignment( NEWS_OVERTURE_RIGHT,1 ) ); nodeConfigs.addConfiguration( 'technology') .addTemplateAssignment ( new TemplateAssignment( NEWS_OVERTURE_RIGHT,1 ) ); nodeConfigs.addConfiguration( 'metro') .addTemplateAssignment ( new TemplateAssignment( NEWS_OVERTURE_RIGHT,1 ) ); nodeConfigs.addConfiguration( 'sports') .addTemplateAssignment ( new TemplateAssignment( NEWS_OVERTURE_RIGHT_VM,1 ) ); nodeConfigs.addConfiguration( 'print/style') .addTemplateAssignment ( new TemplateAssignment( NEWS_OVERTURE_RIGHT,1 ) ); nodeConfigs.addConfiguration( 'artsandliving') .addTemplateAssignment ( new TemplateAssignment( NEWS_OVERTURE_RIGHT_VM,1 ) ); nodeConfigs.addConfiguration( 'politics/special/7') .addTemplateAssignment ( new TemplateAssignment( NEWS_NO_OVERTURE,1 ) ); nodeConfigs.addConfiguration( 'kidspost') .addTemplateAssignment ( new TemplateAssignment( NO_ADS,1 ) ); // For this node, select a template adTemplate = nodeConfigs.getTemplate( thisNode ); if (document.location.href.indexOf("debugAdCode") != -1) document.writeln("Ad Template: " + adTemplate); // Define objects // TemplateAssignment associates a template with a frequency ( 0 <= frq <= 1 ) function TemplateAssignment( tmpl, frq ) { this.template = tmpl; this.frequency = ( ( frq >= 0 ) && ( frq <= 1 ) ) ? frq : 0 ; } // NodeTemplateAssignment collects TemplateAssignment objects for a specific node function NodeTemplateAssignment ( node ) { this.node = node; this.templates = new Array(); this.templateCount = 0; this.addTemplateAssignment = _addAdTemplateAssignment; this.selectTemplate = _adSelectTemplate; } // AdConfigurations collects NodeTemplateAssignments for the site function AdConfigurations () { this.configs = new Array(); this.length = 0; this.addConfiguration = _addAdConfiguration; this.getTemplate = _adGetTemplate; } function _adSelectTemplate() { var base = 0; var rNum = Math.random(); var rTemplate = 0; for (var count = 0; count < this.templates.length; count++) { if ( rNum < this.templates[count].frequency + base ) { rTemplate = this.templates[count].template; break; //return this.templates[count].template; } else { base += this.templates[count].frequency; } } return rTemplate; } function _adGetTemplate ( node ) { adTemplate = DEFAULT_TEMPLATE; var base = 0; var bestMatch = 0; for ( var count = 0; count < this.length; count++ ) { if ( this.configs[count].node == node ) { adTemplate = this.configs[count].selectTemplate(); break; } else if (( node.indexOf(this.configs[count].node) == 0 ) && ( this.configs[count].node.length > bestMatch )) { adTemplate = this.configs[count].selectTemplate(); bestMatch = this.configs[count].node.length; } } return templateConfigs[adTemplate]; } function _addAdTemplateAssignment( templateAssignment ) { this.templates[this.templateCount++] = templateAssignment; return this; } function _addAdConfiguration ( n ) { this.configs[this.length++] = new NodeTemplateAssignment (n); return this.configs[this.length - 1]; }