function getCookie(name) {
	var cookie = " " + document.cookie;
	var search = " " + name + "=";
	var setStr = null;
	var offset = 0;
	var end = 0;
	if (cookie.length > 0) {
		offset = cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = cookie.indexOf(";", offset)
			if (end == -1) {
				end = cookie.length;
			}
			setStr = unescape(cookie.substring(offset, end));
		}
	}
	return(setStr);
}

var adOpsLocalFlag = (getCookie('WPATC') && getCookie('WPATC').match('C=1:'))?true:false;


function flashChecker() {
plugIn = false;
plugInVersion = 0;
if(typeof ActiveXObject != 'undefined')
{
	for(var i=0;i<12;i++)
	{try{var flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + i);plugInVersion = i;plugIn = 'You Are Running Explorer Flash '  + plugInVersion}catch(e){}
	}
}
else if(navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"] && navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){var y = navigator.plugins["Shockwave Flash"].description;plugInVersion = y.charAt(y.indexOf('.')-1); plugIn = "You Are Running Mozilla Flash " + plugInVersion}
else {plugIn = 'Not Sure--There is No ActiveXObject, nor is there a Mozilla Flash'};
return plugIn;
}

function activeXChecker () {
	return(typeof ActiveXObject != 'undefined')?true:false
}

function contentCategories(_commercialNode,_targSec)
{
	if(_commercialNode.charAt(_commercialNode.length-1) != '/')
	{
		_commercialNode += '/';
	}
	
	var contCatArray = new Array();


	contCatArray['lifestyle'] = new Array(
'^wpni.onfaith.blog/','^jobs/','^jobsarticle/','^admin/','^adminarticle/','^artsandliving/','^artsandlivingarticle/','^cityguide/','^entertainment/','^fantasy.fleaflicker/','^foodarticle/','^health/','^healtharticle/','^home/','^homearticle/','^jezebelstomb/','^kidspost/','^kidspostarticle/','^loudounextra/','^photo/','^photoarticle/','^print/','^printarticle/','^science/','^shoplocal/','^shopping/','^smartliving/','^sports/','^style/','^stylearticle/','^television/','^travel/','^traveldirectory/','^travel.sidestep/','^travelarticle/','^weather/','^weatherarticle/','^religion/','^cars/','^food/','^pets/','^sportsarticle/');
	contCatArray['execnews'] = new Array('^postglobal.blog/','^smallbiz/','^mypost/','^mypost.discussions/','^mywashpost/','^allbusiness/','^business/','^businessarticle/','^digest/','^digestarticle/','^washingtonpost.com/','^nation/','^nationarticle/','^news/','^newsarticle/','^opinion/','^opinionarticle/','^politics/','^politicsarticle/','^reviewed.com/','^technology/','^world/','^worldarticle/','liveonline/world','liveonlinearticle/world','liveonline/business','liveonlinearticle/business','liveonline/nation','liveonlinearticle/nation','liveonline/politics','liveonlinearticle/politics','liveonline/jobs/lifeatwork','liveonlinearticle/jobs/lifeatwork','liveonline/jobs/onthejoblive','liveonlinearticle/jobs/onthejoblive');
	contCatArray['style'] = ['^liveonline/books','^liveonline/food','^liveonline/postmag','^liveonline/style','^liveonlinearticle/style/tv','^liveonlinearticle/style/tellmeaboutit','^liveonlinearticle/style/funnyyoushouldask','^liveonlinearticle/style/reliablesource','^liveonlinearticle/style/stationbreak','^market/shopping/books','^market/weddings411','^market/weddings','^market/magazines','^market/garden','^market/books','^market/appliances','^market/apparel','^market/shopping/apparel','^market/shopping/appliances','^market/shopping/holiday','^market/shopping/weddings','^market/shopping/magazines','^nation/columns/kurtzhoward','^photo/style','^print/style','^printarticle/style']
  
	var resultsArray = true;
	
	for(a = 0; a < contCatArray[_targSec.toLowerCase()].length; a++)
	{
		var re = RegExp(contCatArray[_targSec][a],'gi');
		if (_commercialNode.match(re))
		{
			return true;
		}
	}
	
	return false;
}

var adOpsLocalUser = getCookie && ( !getCookie('WPATC') || getCookie('WPATC').match('C=1:') );


function dateToString(date) {
var yyyy = date.getYear();
var mm = date.getMonth() + 1;
var dd = date.getDate();
var hour = date.getHours();
var min = date.getMinutes();

if (mm < 10) mm = "0"+mm;
if (dd < 10) dd = "0"+dd;
if (hour < 10) hour = "0"+hour;
if (min < 10) min = "0"+min;
return ''+mm+dd+hour+min;
}

function estOffset(dateObj)
{
	var mo = dateObj.getMonth()+1;
	if (mo < 2 || mo > 10) return 300;
	if (mo > 2 && mo < 10) return 240;
	var last_sunday_index =   ( ( dateObj.getDate() - dateObj.getDay() - 1 ) / 7) + 1;
	if(mo==2)
	{
	  return ( last_sunday_index > 2 || (last_sunday_index == 2 && dateObj.getHours() >= 2))?240:300
	}
	else
	{
	 return ( last_sunday_index > 1 || (last_sunday_index == 1 && dateObj.getHours() >= 2))?300:240;
	}
}

if(typeof estNow == 'undefined' || typeof estNowWithYear == 'undefined')
{
	var estNow = new Date();
	var estNowInMillis = estNow.getTime();
	var millisFromEST = (estNow.getTimezoneOffset() - estOffset(estNow)) * 60000;
	var estNow = new Date( estNowInMillis + millisFromEST )
	var estNowWithYear = estNow.getYear();
	var estNowWithYear = (estNowWithYear < 1900 )?estNowWithYear + 1900:estNowWithYear;
	estNowWithYear = estNowWithYear.toString() + dateToString(estNow).toString() ;
}

function getDay(today) {return today.getDay()}
var today = new Date();
var now = dateToString(today);

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 TILE_RIGHT_TOP2 = 1 << 14; // 125x125 on Travel
var TOP_JOBS = 1 << 15;
var GOOGLE_LINKS = 1 << 16;
var TILE_RIGHT = 1 << 17; // Not in DART
var TILE_BOTTOM = 1 << 18;
var TRAFFIC_TILE = 1 << 19;
var BIG_BOX = 1 << 20;
var TILE_90X180 = 1 << 21; //90x180
var GOOGLE_LINKS = AD_LINKS_BOTTOM;



// Define all possible ad templates
var NEWS = 0;
var NEWS_VM = 1;
var NEWS_TRAVEL = 2;
var NEWS_TECHNOLOGY = 3;
var DEFAULT_TEMPLATE = NEWS;
var ENTGUIDE = 4;
var TRAFFIC = 5;
var WEATHER = 6;
var PHOTO = 7;
var REALESTATE = 8;
var RENTALS = 9;
var CARS = 10;
var ARTSANDLIVING = 11;
var NO_ADS = 12;
var NEWS_SPORTS = 13;
var NEWS_TRAVEL_RIGHT = 14;
var KIDSPOST = 15;
var OPINIONS = 16;
var NEWS_NO_AD_LINKS = 17;
var NEWS_NO_LEFT = 18;
var NEWS_VM_NO_LEFT = 19;
var NEWS_TRAVEL_RIGHT_NO_SKY = 20;
var HOMEPAGE = 21;
var NEWS_LEFT_SKY = 22;
var NEWS_METRO = 23;
var NEWS_BUSINESS = 24;
var NEWS_STYLE = 25;
var NEWS_FASHION = 26;
var NEWS_ARTS = 27;
var NEWS_TRAVEL_RIGHT_BOTH_TILES = 28;
var APARTMENTS = 29;
var NEWS_BUSINESS_COLUMNS = 30;
var NEWS_BUSINESS_LOCAL = 31;
var REALESTATE_TOP = 32;

if (typeof thisNode == 'undefined') thisNode = 'news';

if(thisNode == 'artsandliving/homeandgarden'){SKY_LEFT = null;}


// Define contents of ad templates
var templateConfigs = new Array();

templateConfigs[ NEWS_NO_LEFT ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT;

templateConfigs[ NEWS ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT;

templateConfigs[ NEWS_ARTS ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT;

templateConfigs[ NEWS_BUSINESS ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT;

templateConfigs[ NEWS_BUSINESS_LOCAL ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT;

templateConfigs[ NEWS_BUSINESS_COLUMNS ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT;

templateConfigs[ NEWS_FASHION ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT;

templateConfigs[ NEWS_METRO ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT +  AD_LINKS_RIGHT;

templateConfigs[ NEWS_STYLE ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT;

templateConfigs[ NEWS_LEFT_SKY ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT  + AD_LINKS_RIGHT;

templateConfigs[ HOMEPAGE ] = BIG_FLEX_RIGHT + AD_LINKS_RIGHT + SKY_LEFT;

templateConfigs[ NEWS_NO_AD_LINKS ]  = BANNER_FLEX_TOP +  BIG_FLEX_RIGHT ;

templateConfigs[ NEWS_VM ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT + VM ;

templateConfigs[ NEWS_VM_NO_LEFT ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT + VM;

templateConfigs[ NEWS_TRAVEL ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT + VM + TILE_RIGHT ;

templateConfigs[ NEWS_TRAVEL_RIGHT ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT + VM + TILE_RIGHT;

templateConfigs[ NEWS_TRAVEL_RIGHT_BOTH_TILES ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT + VM + TILE_RIGHT + TILE_RIGHT_TOP2;

templateConfigs[ NEWS_TRAVEL_RIGHT_NO_SKY ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT + VM + TILE_RIGHT ;

templateConfigs[ NEWS_TECHNOLOGY ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT ;

templateConfigs[ NEWS_SPORTS ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_RIGHT ;

templateConfigs[ ENTGUIDE ] = BANNER_FLEX_TOP + VM +  BIG_FLEX_RIGHT + AD_LINKS_RIGHT + TILE_RIGHT ;

templateConfigs[ TRAFFIC ] = BANNER_FLEX_TOP + BIGBOX_FLEX +  SKY_RIGHT ;

templateConfigs[ WEATHER ] = BANNER_FLEX_TOP + BIGBOX_FLEX + AD_LINKS_BOTTOM ;

templateConfigs[ PHOTO ] = BANNER_FLEX_TOP + SKY_RIGHT ;

templateConfigs[ REALESTATE ] = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + TEXTLINKS ;

templateConfigs[ REALESTATE_TOP ] =  BANNER_FLEX_TOP + BIG_FLEX_RIGHT + TEXTLINKS + TILE_RIGHT_TOP ;

templateConfigs[ RENTALS ] = BANNER_FLEX_TOP + VM + BIG_FLEX_RIGHT + TEXTLINKS ;

templateConfigs[ APARTMENTS ] = BANNER_FLEX_TOP + SKY_RIGHT;

templateConfigs[ CARS ] = BANNER_FLEX_TOP + BIG_FLEX_RIGHT ;

templateConfigs[ NO_ADS ] = 0;

templateConfigs[ KIDSPOST ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT ;

templateConfigs[ OPINIONS ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT  + AD_LINKS_RIGHT + TILE_RIGHT + TILE_BOTTOM;


// Make node-to-template assignments


var nodeConfigs = new AdConfigurations();
nodeConfigs.addConfiguration( 'education')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_VM_NO_LEFT,1 ) );
nodeConfigs.addConfiguration( 'homepage')
			.addTemplateAssignment ( new TemplateAssignment( HOMEPAGE,1 ) );
nodeConfigs.addConfiguration( 'artsandliving/fashionandbeauty')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_FASHION,1 ) );
nodeConfigs.addConfiguration( 'sports')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_SPORTS,1 ) );
nodeConfigs.addConfiguration( 'metro')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_METRO,1 ) );
nodeConfigs.addConfiguration( 'print/style')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_STYLE,1 ) );
nodeConfigs.addConfiguration( 'health')
			.addTemplateAssignment ( new TemplateAssignment( NEWS,1 ) );
nodeConfigs.addConfiguration( 'artsandliving/entertainmentguide')
			.addTemplateAssignment ( new TemplateAssignment( ENTGUIDE,1 ) );
nodeConfigs.addConfiguration( 'metro/traffic')
			.addTemplateAssignment ( new TemplateAssignment( TRAFFIC,1 ) );
nodeConfigs.addConfiguration( 'photo')
			.addTemplateAssignment ( new TemplateAssignment( PHOTO,1 ) );
nodeConfigs.addConfiguration( 'realestate' )
			.addTemplateAssignment ( new TemplateAssignment( REALESTATE,1 ) );
nodeConfigs.addConfiguration( 'realestate/buy' )
			.addTemplateAssignment ( new TemplateAssignment( REALESTATE,1 ) );
nodeConfigs.addConfiguration( 'realestate/sell' ) 
			.addTemplateAssignment ( new TemplateAssignment( REALESTATE,1 ) );
nodeConfigs.addConfiguration( 'realestate/own' )
			.addTemplateAssignment ( new TemplateAssignment( REALESTATE,1 ) );
nodeConfigs.addConfiguration( 'realestate/dcarealiving' )
			.addTemplateAssignment ( new TemplateAssignment( REALESTATE,1 ) );								
nodeConfigs.addConfiguration( 'rentals/apartments')
			.addTemplateAssignment ( new TemplateAssignment( APARTMENTS,1 ) );
nodeConfigs.addConfiguration( 'rentals')
			.addTemplateAssignment ( new TemplateAssignment( RENTALS,1 ) );
nodeConfigs.addConfiguration( 'rentals/findarental')
			.addTemplateAssignment ( new TemplateAssignment( RENTALS,1 ) );
nodeConfigs.addConfiguration( 'cars')
			.addTemplateAssignment ( new TemplateAssignment( CARS,1 ) );
nodeConfigs.addConfiguration( 'print')
			.addTemplateAssignment ( new TemplateAssignment( NEWS,1 ) );
nodeConfigs.addConfiguration( 'artsandliving/travel')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_TRAVEL,1 ) );
nodeConfigs.addConfiguration( 'artsandliving/travel/international/europe' )
			.addTemplateAssignment ( new TemplateAssignment( NEWS_TRAVEL,1) );
nodeConfigs.addConfiguration( 'world')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_VM,1 ) );			
nodeConfigs.addConfiguration( 'tempconv' )
			.addTemplateAssignment ( new TemplateAssignment( NEWS_TRAVEL_RIGHT,1) );
nodeConfigs.addConfiguration( 'kidspost' )
			.addTemplateAssignment ( new TemplateAssignment( KIDSPOST,1) );
nodeConfigs.addConfiguration( 'opinions' )
			.addTemplateAssignment ( new TemplateAssignment( OPINIONS,1) );
nodeConfigs.addConfiguration( 'artsandliving/travel/businesstravel')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_TRAVEL_RIGHT_NO_SKY,1 ) );
nodeConfigs.addConfiguration( 'artsandliving/crosswords')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_NO_AD_LINKS,1 ) );
nodeConfigs.addConfiguration( 'artsandliving')
			.addTemplateAssignment ( new TemplateAssignment( NEWS,1 ) );
nodeConfigs.addConfiguration( 'artsandliving/foodanddining')
			.addTemplateAssignment ( new TemplateAssignment( NEWS,1 ) );
nodeConfigs.addConfiguration( 'technology')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_TECHNOLOGY,1 ) );
nodeConfigs.addConfiguration( 'artsandliving/museums')
			.addTemplateAssignment ( new TemplateAssignment( NEWS,1 ) );
nodeConfigs.addConfiguration( 'politics')
			.addTemplateAssignment ( new TemplateAssignment( NEWS,1 ) );
nodeConfigs.addConfiguration( 'nation')
			.addTemplateAssignment ( new TemplateAssignment( NEWS,1 ) );
nodeConfigs.addConfiguration( 'business')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_BUSINESS,1 ) );
nodeConfigs.addConfiguration( 'business/localbusiness')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_BUSINESS_LOCAL,1 ) );
nodeConfigs.addConfiguration( 'business/columnists')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_BUSINESS_COLUMNS,1 ) );
nodeConfigs.addConfiguration( 'liveonline')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_VM,1 ) );
nodeConfigs.addConfiguration( 'mypost/discussions')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_VM,1 ) );

			
//start of adTemplate assignments
if (!location.href.match('demoAds'))
{			

var adTemplate = 255 ;

// For this node, select a template
adTemplate = nodeConfigs.getTemplate( thisNode );

var ad_sf_tl = ['politics','opinion','business','technology'];
var ad_sf_tl_len = ad_sf_tl.length;
for(var j=0;j<ad_sf_tl_len;j++)
{
	if(commercialNode.match(ad_sf_tl[j]) && !(adTemplate & AD_LINKS_BOTTOM))
	{
		adTemplate += AD_LINKS_BOTTOM;
	}
}

if(commercialNode.match(/^education$/) && !(adTemplate & TILE_LEFT))
{
	adTemplate += TILE_LEFT;
}

//8194-ST-209230614, rev-8939-ST, 9669-AL-209230614, rev-10093-AL-209230614
if(commercialNode.match(/^artsandliving$/) && !(adTemplate & TILE_LEFT) && (estNowWithYear <= '200907312359'))
{
	adTemplate += TILE_LEFT;
}


//8105-AR-order id #2648998
if(estNowWithYear <= '200905312359' && !(adTemplate & BIG_BOX))
{
	var alArray = ['movies','museums','music','theater']
	for(var a=0;a<alArray.length;a++)
	{
		if(commercialNode.match(/^artsandliving$/) || commercialNode.match('artsandliving/'+alArray[a]))
		{
			adTemplate += BIG_BOX;
			break;
		}
	}

}

//10440-PM-213750247
if(commercialNode.match('^cars$') && (estNowWithYear <= '200908312359') && !(adTemplate & TRAFFIC_TILE))
{
	adTemplate += TRAFFIC_TILE;
}

//Local Dealer Specials
if(commercialNode.match('cars') && !(adTemplate & TILE_RIGHT))
{
	adTemplate += TILE_RIGHT;
}


//9710-ST-213749139-REV-ST
if(commercialNode.match('sports/colleges') && !(adTemplate & TILE_LEFT) &&  estNowWithYear >= '200905080000' && estNowWithYear <= '200910312359' )
{
	adTemplate += TILE_LEFT;
}

//11140-AL-JM-217832185
if(commercialNode=='washingtonpost.com' && ( estNowWithYear >= '200910160000' && estNowWithYear <= '200910162359' ) )
{
	adTemplate += SPONSORSHIP;
}


//11413-AR-219032676
//11384-PM-219052375,218981481
//11490-PM-219250526
if(commercialNode=='washingtonpost.com' && !(adTemplate & BANNER_FLEX_TOP) && ( (estNowWithYear <= '200910282359') || (estNowWithYear >= '200911040000' && estNowWithYear <= '200911042359') || (estNowWithYear >= '200912020000' && estNowWithYear <= '200912022359') ) )
{
	adTemplate += BANNER_FLEX_TOP;
}

//11493-AR-219252920,219252926,rev-ML
if( (typeof adOpsLocalFlag != 'undefined' && adOpsLocalFlag) && commercialNode=='washingtonpost.com' && ( estNowWithYear >= '200911070000' && estNowWithYear <= '200911090000' ) )
{
	adTemplate += SPONSORSHIP;
}

if(commercialNode=='washingtonpost.com' && (( estNowWithYear >= '200911130000' && estNowWithYear <= '200911132359' ) || ( estNowWithYear >= '200911160000' && estNowWithYear <= '200911162359' )) )
{
	adTemplate += SPONSORSHIP;
}

if(commercialNode=='washingtonpost.com' && ( estNowWithYear >= '200911170000' && estNowWithYear <= '200911172359' ) )
{
	adTemplate += SPONSORSHIP;
}

//test bottom lb on GOG
if(location.href.match('test_ads=goglb'))
{
	adTemplate += BANNER_FLEX_BOTTOM;
}


}
/*else
{
	adTemplate = 0;
}*/
//end template assignments

if( location.href.match('allAds') )
{
	var adTemplate = 0;
	for(var a = 0; a < 22; a++)
	{
		adTemplate += 1 << a;
	}
}

if (document.location.href.indexOf("debugAdCode") != -1)
{
	document.writeln("<p>")
	document.writeln("Ad Template: " + adTemplate + '<br/>');
	document.writeln("Local User: " + adOpsLocalUser + '<br/>');
	//document.writeln("Content Category: " + contentCategories(commercialNode) + '<br/>');
	document.writeln("Flash Version: " + flashChecker() + '<br/>');
	document.writeln("ActiveXObject: " + activeXChecker() + '<br/>');
	document.writeln("<p>")
}

// 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];
}

/*
	//10550-MB
	var mva_normalize = false;
	if((estNowWithYear >= '200909160000' && estNowWithYear <= '200909162359') || location.href.match('mva_normalize'))
	{
		var mva_normalize = true;
	}
*/


//11487-MB
var mva_normalize = false;
if(location.href.match('mva_normalize') || ((estNowWithYear >= '200911120000' && estNowWithYear <= '200911122359') && commercialNode == 'washingtonpost.com')) {
	var mva_normalize = true;
}