var sourceCodeToOfferDivMapping = new Hash();

function writeCurrentDate(){
	var m= ["January","February","March","April","May","June","July","August","September","October","November","December"];
	n=new Date();
	var year=n.getYear();
	if (year < 2000)
		year = year + 1900;
	today=m[n.getMonth()] +" "+n.getDate()+", "+year;
	document.write(today);
}
//

var Cookie = {
  set: function(name, value, domain, path, daysToExpire) {

	if ( domain != undefined ){
      	domain = '; domain=' + domain;
	}
	else{
		domain = '';
	}
 
	if ( path != undefined ){
	      path = '; path=' + path;
	}
	else{
		path = '';
	}

    var expire = '';
    if (daysToExpire != undefined) {
      var d = new Date();
      d.setTime(d.getTime() + (86400000 * parseFloat(daysToExpire)));
      expire = '; expires=' + d.toGMTString() ;
    }
	
	return (document.cookie = name + '=' + value + domain + path + expire);
  },
  get: function(name) {
    var cookie = document.cookie.match(new RegExp('(^|;)\\s*' + name + '=([^;\\s]*)'));
    return (cookie ? cookie[2] : '');
  },
  erase: function(name, domain, path) {
    Cookie.set(name, '', domain, path, -1);   
  }
};


function getSourceCodeFromQueryString( queryString ) {
	if ( queryString != null ){
		var parms = queryString.split('&');
		for (var i=0; i<parms.length; i++) {
		    var pos = parms[i].indexOf('=');
		    if (pos > 0) {
		        var key = parms[i].substring(0,pos);
		        var value = parms[i].substring(pos+1);
		        if ( key == 'source' ){
		        	return value;
		        } 
		    }
		}
	}
	
	return '';
}

function setSourceCodeCookie( sourceCode ){
	var prevSourceCode = Cookie.get( "source" );

	Cookie.set( "prevSource", prevSourceCode, getDomain(), "/", null );

	Cookie.set( "source", sourceCode, getDomain(), "/", null );
}

function getPrevSourceCodeCookie(){
	return Cookie.get( "prevSource" );
}

function getSourceCodeCookie(){
	return Cookie.get( "source" );
}

function getDomain(){
	//TODO:  rewrite this to be more generic
	var hostname = window.location.hostname;
	var domainStartIdx = hostname.lastIndexOf( '.', hostname.length - 1 );
	domainStartIdx = hostname.lastIndexOf( '.', domainStartIdx - 1 );
	if ( domainStartIdx == -1 ){
		domainStartIdx = 0;
	}
	
	var domain = hostname.substring( domainStartIdx, hostname.length );	

	return domain;
}

function addSourceCodeToOfferDivIdMapping( sourceCode, divId ){
	sourceCodeToOfferDivMapping.set( sourceCode, divId );	
	return;
}

function getOfferDivIdFromSourceCode( sourceCode ){
	if ( sourceCode == null || sourceCode == '' ){
		return sourceCodeToOfferDivMapping.get( '' );
	}

	//iterate thru all elements in the array to find the first one that matches
	// the sourceCode that's passed in	
	var keys = sourceCodeToOfferDivMapping.keys();
	
	for ( i = 0; i < keys.length; i++ ){
		//this check is here b/c indexOf( '' ) will return true for anything 
		if ( keys[i] == '' ){
			continue;
		}	
		
		if ( sourceCode.indexOf( keys[i] ) >= 0 ){
			return sourceCodeToOfferDivMapping.get( keys[i] );
		}
	}
	
	//backup is to return the default ('') divId
	return sourceCodeToOfferDivMapping.get( '' );
}

function displayDiv( divId, display ) {
	var div = document.getElementById(divId);
	
	if ( div != null ){
		if ( display ){ 
			div.style.display = 'block';
		}
		else{
			div.style.display = 'none';
		}
	}		
}

function setOfferCodeOnForm( form, newOfferCode ){
	form.offerCode.value = newOfferCode;
}

//This is for ADC which uses partner.do and therefore 
//has a different set of form fields.
function setOfferOnForm( form, newOfferCode ){
	form.offer.value = newOfferCode;
}

function setSourceCodeOnForm( form, newSourceCode ) {
	form.source.value = newSourceCode;
}

//if sourceCode cookie is not yet set, check the query string and set it
var sourceCode = getSourceCodeCookie();
if ( sourceCode == null || sourceCode == '' ){
	var queryString = parent.window.location.href.split('?');
	if ( queryString != null && queryString.length > 1 ){
		sourceCode = getSourceCodeFromQueryString( queryString[1] );

		if ( sourceCode != null && sourceCode != '' ){
			setSourceCodeCookie( sourceCode );
		}
	}
}
