function contentCategories(_commercialNode)
{
	if(_commercialNode.charAt(_commercialNode.length-1) != '/')
	{
		_commercialNode += '/';
	}
	
	var returnValue = false;
	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','education','educationarticle','washingtonpost.com','liveonline','liveonlinearticle','metro','metroarticle','nation','nationarticle','news','newsarticle','opinion','opinionarticle','politics','politicsarticle','reviewed.com','technology','traffic','world','worldarticle');
	
  

	for(a in contCatArray)
	{
		for(b in contCatArray[a])
		{
			contCatNode = contCatArray[a][b] + '/';
			if (_commercialNode.indexOf(contCatNode)==0)
			{
				return a;
			}
		}
	}
}

function localUser()
{
	if(!getCookie || !getCookie('WPATC') || getCookie('WPATC').match('C=1:') ) return true;
	return false;
}

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 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 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 BLOG_FEATUREBAR = 1 << 19; // 446x45 blog bar
var INLINE_ARTICLE_AD = 1 << 20;
var TOOLBOX_LEFT_180X31 = 1 << 21;
var PORTAL_FEATUREBAR = 1 << 26; // 336x60 portal featurebar

var GOOGLE_LINKS = AD_LINKS_BOTTOM;

// turns off bottom ad on articles.
//BANNER_FLEX_BOTTOM = false;


/*
if ( thisNode.indexOf("politics/fedpage") || thisNode.indexOf("artsandliving") != -1 ) {
null;
} else SKY_LEFT = null;
if (now >= "02010000" && thisNode.indexOf("artsandliving") == -1) SKY_LEFT = null;
*/


// 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 SIMPLE = 11;
var BOTTOM_ONLY = 12;
var DEFAULT_TEMPLATE = NEWS;
var NEWS_LEFT_SKY = 13;
var TRAVEL_BY_TOPIC = 14;
var NEWS_BUSINESS = 15;
var LOCAL_PORTAL = 16;
var NEWS_TRAVEL_NO_TRT = 17;
var NEWS_TEST = 18;
var WEATHER = 19;


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 + TILE_LEFT ;

templateConfigs[ NEWS_TEST ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_BOTTOM + AD_LINKS_RIGHT  + TOOLBOX_LEFT + TOOLBOX_RIGHT + TOOLBOX_BOTTOM + TEXTLINKS + TILE_LEFT ;

templateConfigs[ NEWS_BUSINESS ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_BOTTOM + AD_LINKS_RIGHT + TOOLBOX_LEFT  + TOOLBOX_RIGHT + TOOLBOX_BOTTOM + TEXTLINKS ;

templateConfigs[ NEWS_LEFT_SKY ]  = 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_TRAVEL_NO_TRT ] =  templateConfigs[ NEWS_TRAVEL ] - TILE_RIGHT_TOP

//templateConfigs[ TRAVEL_BY_TOPIC ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_BOTTOM + VM + TILE_RIGHT_TOP + TILE_RIGHT_TOP2 + TILE_LEFT + TILE_RIGHT + TEXTLINKS;

templateConfigs[ TRAVEL_BY_TOPIC ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_BOTTOM +  TILE_LEFT  + TILE_RIGHT + TEXTLINKS ;

templateConfigs[ NEWS_TECHNOLOGY ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT + AD_LINKS_BOTTOM + 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 + BANNER_FLEX_TOP + + AD_LINKS_RIGHT + VM + TOOLBOX_LEFT  + TOOLBOX_RIGHT + TOOLBOX_BOTTOM + TEXTLINKS ;

templateConfigs[ ENLARGED_PHOTO ]  = SKY_RIGHT;

templateConfigs[ SIMPLE ]  = BANNER_FLEX_TOP + BIG_FLEX_RIGHT;

templateConfigs[ BOTTOM_ONLY ]  = BANNER_FLEX_BOTTOM;

templateConfigs[ LOCAL_PORTAL ]  = BANNER_FLEX_TOP + BANNER_FLEX_BOTTOM ;

templateConfigs[ WEATHER ] = BANNER_FLEX_TOP + TILE_RIGHT_TOP + BIG_FLEX_RIGHT;

templateConfigs[ NO_ADS ] = 0;

// Make node-to-template assignments
var nodeConfigs = new AdConfigurations();
nodeConfigs.addConfiguration( 'metro/blackmen')
			.addTemplateAssignment ( new TemplateAssignment( BOTTOM_ONLY,1 ) );
nodeConfigs.addConfiguration( 'education')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_VM,1 ) );
nodeConfigs.addConfiguration( 'travel' )
			.addTemplateAssignment ( new TemplateAssignment( NEWS_TRAVEL,1) );
nodeConfigs.addConfiguration( 'travel/jerseyshore' )
			.addTemplateAssignment ( new TemplateAssignment( NEWS_TRAVEL_NO_TRT,1) );
nodeConfigs.addConfiguration( 'artsandliving/travel/travelbytopic' )
			.addTemplateAssignment ( new TemplateAssignment( TRAVEL_BY_TOPIC,1) );
nodeConfigs.addConfiguration( 'health')
			.addTemplateAssignment ( new TemplateAssignment( NEWS,1 ) );
nodeConfigs.addConfiguration( 'print')
			.addTemplateAssignment ( new TemplateAssignment( NEWS,1 ) );
nodeConfigs.addConfiguration( 'weather')
			.addTemplateAssignment ( new TemplateAssignment( WEATHER,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_BUSINESS,1 ) );
nodeConfigs.addConfiguration( 'technology')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_TECHNOLOGY,1 ) );
nodeConfigs.addConfiguration( 'metro')
			.addTemplateAssignment ( new TemplateAssignment( NEWS,1 ) );
nodeConfigs.addConfiguration( 'admin/classifieds/publicnotices')
			.addTemplateAssignment ( new TemplateAssignment( SIMPLE,1 ) );
nodeConfigs.addConfiguration( 'sports')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_VM,1 ) );
nodeConfigs.addConfiguration( 'print/style')
			.addTemplateAssignment ( new TemplateAssignment( NEWS,1 ) );
nodeConfigs.addConfiguration( 'artsandliving')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_VM,1 ) );
nodeConfigs.addConfiguration( 'politics/special/7')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_NO_OVERTURE,1 ) );
nodeConfigs.addConfiguration( 'kidspost')
			.addTemplateAssignment ( new TemplateAssignment( NO_ADS,1 ) );
nodeConfigs.addConfiguration( 'opinion')
			.addTemplateAssignment ( new TemplateAssignment( NEWS,1 ) );
nodeConfigs.addConfiguration( 'world')
			.addTemplateAssignment ( new TemplateAssignment( NEWS,1 ) );
nodeConfigs.addConfiguration( 'politics')
			.addTemplateAssignment ( new TemplateAssignment( NEWS,1 ) );
nodeConfigs.addConfiguration( 'nation')
			.addTemplateAssignment ( new TemplateAssignment( NEWS,1 ) );
nodeConfigs.addConfiguration( 'localportal')
			.addTemplateAssignment ( new TemplateAssignment( LOCAL_PORTAL,1 ) );
nodeConfigs.addConfiguration( 'news/test')
			.addTemplateAssignment ( new TemplateAssignment( NEWS_TEST,1 ) );
// For this node, select a template
adTemplate = nodeConfigs.getTemplate( thisNode );

if(thisNode == 'mypost')
{
	adTemplate -= BANNER_FLEX_TOP
}


if ((location.href.match('channelthis') && commercialNode == 'artsandliving/blogs') && (now <= '11302359')){
commercialNode += '/channelthis';
}

var adOpsLocalUser = getCookie && ( !getCookie('WPATC') || getCookie('WPATC').match('C=1:') );

adTemplate += ( contentCategories(commercialNode) == 'ExecNews' && adOpsLocalUser )?BANNER_FLEX_BOTTOM:0;

if (document.location.href.indexOf("debugAdCode") != -1)
{
	document.writeln("<p>")
	document.writeln("Ad Template: " + adTemplate + '<br/>');
	document.writeln("Local User: " + localUser() + '<br/>');
	document.writeln("Content Category: " + contentCategories(commercialNode) + '<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];
}
