
var segQS="";

function rsiCookieRead(){
    var rsi_segs = [];
    var segs_beg=document.cookie.indexOf('rsi_segs=');
    if(segs_beg>=0){
        segs_beg=document.cookie.indexOf('=',segs_beg)+1;
        if(segs_beg>0){
            var segs_end=document.cookie.indexOf(';',segs_beg);
            if(segs_end==-1)segs_end=document.cookie.length;
            rsi_segs=document.cookie.substring(segs_beg,segs_end).split('|');
         }
    }

      var segLen=20;
      if (rsi_segs.length<segLen){
  	    segLen=rsi_segs.length;
      }
        for (var i=0;i<segLen;i++){
            segQS+=("&rsi"+"="+rsi_segs[i])
        }
}	

// fires on page load

rsiCookieRead()

// called at bottom of page
// YOU MAY NEED TO FOOL WITH THIS VARIABLE IN THE DM_cat function TO GET THE VALUE FROM THE PAGE TO PULL IN adtag_globalSctnLineage
function setVars() {
	A09802.DM_cat(adtag_globalSctnLineage.split(',').reverse().join(' > '));
	A09802.DM_tag();
}






// 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() {  
	var sRSI = "";
       if (segQS.length > 0) {
        sRSI = segQS;
       }
  return this.getUrl() + this.buildExpandedQueryStringValuePairs() + sRSI;
 }

}


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;


	// 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('<DIV style="BACKGROUND-COLOR:RED;COLOR:WHITE">'+ this.buildExpandedUrl() +'</DIV>');		
	}

	// 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("SearchKeywords");
	this.useFeature("SearchFilters");
	this.useFeature("keyword");// added - rl
	
	
	function write() {
		document.write('<script type="text/javascript" language="JavaScript" src="'+ this.buildExpandedUrl() +'"></script>');
	}
}

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 - rl
	
	function 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;
	
	// add the parameter
	function createAd(ad) {
		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() {}
}


