/* ***Omniture Helper File***/
//*SET variables here*/


var cookiePath="/";
var urlstr=unescape(location);
var referringUrl=document.referrer;
var referringDomainArray=new Array();
var referringDomain='';
var anonymous_user_id = 2101;

referringDomainArray=referringUrl.substring(referringUrl.indexOf('//')+2,referringUrl.indexOf('/',referringUrl.indexOf('//')+2)).split('.');

referringDomain=referringDomainArray[0];
var idomain=referringDomainArray[referringDomainArray.length-1]
for (var i=1; i<referringDomainArray.length-1; i++){
	referringDomain=referringDomain +"."+ referringDomainArray[i]
} 		
referringDomain= referringDomain + "."+idomain;



/********COOKIES SECTION*************************/

// Cookie Toolbox Javascript
// copyright 4th September 2002, by Stephen Chapman, Felgall Pty Ltd

// You have permission to copy and use this javascript provided that
// the content of the script is not changed in any way.
// For instructions on how to use these functions see "A Cookie Toolbox"
// in the Javascript section of our site at http://www.felgall.com/

var dbug = 0; 
function d_a(ary) {
	var beg = next_entry(ary) - 1; 
	for (var i = beg ; i > -1; i--) {
		ary[i] = null;
	}
}
function init_array() {
	if (dbug) alert('init_cookie');  
	var ary = new Array(null); 
	return ary;
}
function set_cookie(name,value,expires) {
	if (dbug) alert('set_cookie'); 
	if (!expires) expires = new Date();
	document.cookie = name + '=' + escape(value) + '; expires=' + expires.toGMTString() + '; path=/';
}
function get_cookie(name) {
	if (dbug) alert('get_cookie'); 
	var dcookie = document.cookie; 
	var cname = name + "="; 
	var clen = dcookie.length; 
	var cbegin = 0; 
	while (cbegin < clen) {
		var vbegin = cbegin + cname.length;
		if (dcookie.substring(cbegin, vbegin) == cname) {
			var vend = dcookie.indexOf (";", vbegin); 
			if (vend == -1) vend = clen; 
			return unescape(dcookie.substring(vbegin, vend));
		}
		cbegin = dcookie.indexOf(" ", cbegin) + 1; 
		if (cbegin == 0) break;
	}
	return null;
}
function del_cookie(name) {
	if (dbug) alert('del_cookie');
	document.cookie = name + '=' + '; expires=Thu, 01-Jan-70 00:00:01 GMT; path=/';
}
function get_array(name, ary) {
	if (dbug) alert('get_array'); 
	d_a(ary); 
	var ent = get_cookie(name); 
	if (ent) {
		i = 1; 
		while (ent.indexOf('^') != '-1') {
			ary[i] = ent.substring(0,ent.indexOf('^')); i++;
			ent = ent.substring(ent.indexOf('^')+1, ent.length);
		}
	}
}
function set_array(name, ary, expires) {
	if (dbug) alert('set_array'); 
	var value = ''; 
	for (var i = 1; ary[i]; i++) {
		value += ary[i] + '^';
	}
	set_cookie(name, value, expires);
}
function del_entry(name, ary, pos, expires) {
	if (dbug) alert('del_entry');
	var value = ''; 
	get_array(name, ary); 
	for (var i = 1; i < pos; i++) {
		value += ary[i] + '^';
	}
	for (var j = pos + 1; ary[j]; j++) {
		value += ary[j] + '^';
	}
	set_cookie(name, value, expires);
}
function next_entry(ary) {
	if (dbug) alert('next_entry'); 
	var j = 0; 
	for (var i = 1; ary[i]; i++) {
		j = i
	}
	return j + 1;
}
function debug_on() {
	dbug = 1;
}
function debug_off() {
	dbug = 0;
}
function dump_cookies() {
	if (document.cookie == '') {
		document.write('No Cookies Found'); 
	} else {
		thisCookie = document.cookie.split('; '); 
		for (i=0; i<thisCookie.length; i++) {
			document.write(thisCookie[i] + '<br \/>');
		}
	}
}

//DEBUG FOR COOKIES IS TURNED OFF.
debug_off();

setVisitorCookie();
setVisitCookie();


/** **VISITOR COOKIE***Visitor cookie will store an Array consisting of 3 elements
 ** Element 1: FirstAccess-the date of the first accessing of the site 
 ** Element 2: LastAccess-the date of the last accessing of the site
 ** Element 3: UserID-the member id assigned by disaboom.com when the user registered, or a generated user id if not
 **           registered on disaboom.com.  
 ** Element 4: First campaign id from original visit
 ** Element 5: First visit check.  1 if first visit, 0 if not first visit or visit is > 3 hours.
 **/
function setVisitorCookie()
{
	//test to see if cookie is there
	var cookieExists;
	if(get_cookie('visitor')) {
		cookieExists=true;
		userEntry="RETURN";
    } else {
		cookieExists=false;
	}

	//Array placeholders
	var cookieName='visitor';    
	var visitorArray=init_array();
	var firstAccess=1;
	var lastAccess=2;
	var userID=3;
	var originalCampaign=4;
	var isFirstVisit=5;
	var isFirstVisitValue;
	var AccessDate=new Date();
	if(s.campaign){
		var originalCampaignValue=s.campaign;
	}else{
		originalCampaignValue="No Campaign";
	}

	visitTimeToKeep=3*365*24*60*60000; // three years
	var visitexpires = new Date();
	visitexpires.setTime(visitexpires.getTime() + visitTimeToKeep); 

	//set cookie if it is a first time visit
	if(cookieExists==false)
	{ 
		isFirstVisitValue="yes";
		visitorArray[firstAccess]=AccessDate.getTime();
		visitorArray[lastAccess]=AccessDate.getTime();
		visitorArray[userID]=user_id;
		visitorArray[originalCampaign]=originalCampaignValue;
		visitorArray[isFirstVisit]=isFirstVisitValue;
		set_array('visitor', visitorArray,visitexpires);	
		
	}
	//if cookie already exists
	if (cookieExists == true) {
	
		get_array('visitor', visitorArray)
		
		fVisitLimit =3*60*60000; // three hours
		fVisitExpires = new Date();
		fVisitExpires.setTime(fVisitExpires.getTime() + fVisitLimit);
		firstVisitC = new Date();
		firstVisitC.setTime(visitorArray[lastAccess]); 
		var compareVTime=new Date();
		compareVTime.setTime(fVisitExpires.getTime()-firstVisitC.getTime());
		if (compareVTime.getTime() < fVisitLimit) {
			isFirstVisitValue = "yes";
		} else {
			isFirstVisitValue = "no";
		} 
		visitorArray[lastAccess]=AccessDate.getTime();

		if (typeof(user_id) != "undefined" && user_id != null && user_id != anonymous_user_id) {  
			visitorArray[userID]=user_id; 
		} else { 
			if (visitorArray[userID] == "undefined" || visitorArray[userID] == null || visitorArray[userID] == "") {
				visitorArray[userID] = anonymous_user_id;
			}
		}

		visitorArray[isFirstVisit]=isFirstVisitValue;
		set_array('visitor', visitorArray,visitexpires);	
	}
}//End setVistorCookie


/************getVisitorCookie function**********
***getVisitorCookie('item','format')
***('f')  returns the first visit date
***('fv') returns 1 if current visit is first visit,0 if not first visit
***('l') returns the last access date
***('u') returns the user id
***('o') returns the original campaign id
***('f','d') returns first visit in date format for use in other functions
***('l','d') returns last visit in date format for use in other functions
*/
function getVisitorCookie(item,format)
{
	var result;
	//test to see if cookie is there
	var cookieExists=get_cookie('visitor');
	//set cookie if it is a first time visit
	if(cookieExists==null)
	{	
		return "Cookie not present";
	}
	
	var i = item;
	if (format) {
		var f = true;
	}
	var a;//array counter
	if(i=='f')  a=1;
	if(i=='l')  a=2;
	if(i=='u')  a=3;
	if(i=='o')  a=4;
	if(i=='fv') a=5;

	var getVisitorArray = init_array();
	var cookieName='visitor';
	get_array(cookieName,getVisitorArray)

	//first and last visit 
	if (i == 'f' | i == 'l') {
		var temptime = new Date();
		temptime.setTime(getVisitorArray[a]);
		//return in date format
		if (f == true) {
			result = temptime.getTime();
		}
		//return in string format
		else 
		{
			result = temptime.toString();
		}
	}
	//if item is not 'f' or 'l'
	else
	{
		result=getVisitorArray[a];
	}
	
	return result;
}//END getVisitorCookie


 
/***Visit Cookie
**The visit cookie will be set to expire on 30 minutes of inactivity.  The visit cookie will be set with the current campaign **id where applicable, as well as campaign ids that delivered the user to the site the first time, within the last 30 days **(First occurrence, earliest), within the last week days (First occurrence, earliest), within the current 24 hours (First **occurrence, earliest).
** Visit cookie will store an Array consisting of 3 elements
** Element 0: firstCampaign-campaign ids that delivered the user to the site the first time
** Element 1: currentCampaign-current campaign id where applicable
** Element 2: campaign30Days- Campaigns within the last 30 days (First occurrence, earliest), 
** Element 3: campaignWeek-Campaigns within the last week days (First occurrence, earliest), 
** Element 4: campaignDay- Campaigns within the current 24 hours (First occurrence, earliest).
 *Parameters
 *('R') returns original referring domain for the visit
 *('K') returns keywords from referring engine
 *('O') returns original campaign-inactive, using Omniture variable instead
 *('C') returns current campaign-inactive, using Omniture variable instead
 *('D') returns day campaign-inactive, using Omniture variable instead
 *('W') returns week campaign-inactive, using Omniture variable instead
 *('M') returns month campaign-inactive, using Omniture variable instead
 *
**/
function setVisitCookie()
{
	var visitArray=init_array();
	var firstCampaign=0;
	var currentCampaign=1;
	var campaign30Days=2;
	var campaignWeek=3;
	var campaignDay=4;
	var referringDomainA=5;//referring domain for visit
	var keywords=6;

	var firstCampaignValue=s.campaign;
	var currentCampaignValue=s.campaign;//switch to s.campaign later
	var campaign30DaysValue='30 days campaign';//switch to 
	var campaignWeekValue='week campaign';//switch to 
	var campaignDayValue='day campaign';//switch to 
	var referringDomainValue=referringDomain;
	var keywordsValue;
	var isReferrer=false;

	//set referring domain and keywords if first page of visit
	if(s.getVisitStart("s_visit")==1){
		isReferrer=true;
	}

	visitTimeToKeep=30*60000; // expire cookie after 30 minutes
	var visitexpires = new Date();
	visitexpires.setTime(visitexpires.getTime() + visitTimeToKeep); 

	if (get_cookie('visit')) {
		userEntry = "";
		get_array('visit', visitArray)
		visitArray[firstCampaign] = firstCampaignValue;
		visitArray[currentCampaign] = currentCampaignValue;
		visitArray[campaign30Days] = campaign30DaysValue;
		visitArray[campaignWeek] = campaignWeekValue;
		visitArray[campaignDay] = campaignDayValue;
		//if (isReferrer == true) referringDomainValue = referringDomain;
		//visitArray[referringDomainA] = referringDomainValue;
		//keywordsValue = doSearchEngineTracking();
		//visitArray[keywords] = keywordsValue;
		set_array('visit', visitArray, visitexpires);
	} else {
		visitArray[firstCampaign] = firstCampaignValue;
		visitArray[currentCampaign] = currentCampaignValue;
		visitArray[campaign30Days] = campaign30DaysValue;
		visitArray[campaignWeek] = campaignWeekValue;
		visitArray[campaignDay] = campaignDayValue;
		if (isReferrer == true) {
			referringDomainValue = referringDomain;
		}
		visitArray[referringDomainA] = referringDomainValue;
		keywordsValue = doSearchEngineTracking();
		visitArray[keywords] = keywordsValue;
		set_array('visit', visitArray, visitexpires);
	}
} //END setVisitCookie


/***getVisit COOKIE**
 *Parameters
 *('R') returns original referring domain for the visit
 *('K') returns keywords from referring engine
 *('O') returns original campaign-inactive, using Omniture variable instead
 *('C') returns current campaign-inactive, using Omniture variable instead
 *('D') returns day campaign-inactive, using Omniture variable instead
 *('W') returns week campaign-inactive, using Omniture variable instead
 *('M') returns month campaign-inactive, using Omniture variable instead
 */
function getVisitCookie(item)
{	
	var result="no results";
	var a;//array counter
	var i = item;
	var visitArray=init_array();
	//var firstCampaign=0;
	//var currentCampaign=1;
	//var campaign30Days=2;
	//var campaignWeek=3;
	//var campaignDay=4;
	var referringDomainA = 5;//referring domain for visit
	var keywordsA = 6;
	if (get_cookie('visit')) {
		if (i == 'R') {
			a = referringDomainA;
		}
		if (i == 'K') {
			a = keywordsA;
		}
		get_array('visit', visitArray)
		result = visitArray[a];
	}

	if (dbug) alert(result);
	return result;
}

/***END VISIT COOKIE SECTION******/

/***********END COOKIES***************************/


/*Page Naming script.  
SAMPLE:  http://www.disaboom.com/Living/The-Accessible-Home.aspx returns Living,The-Accessible-Home.aspx
If you call pgurl,pageName, it returns the page name The-Accessible-Home.aspx
Call zone and it returns Living,
Call category and it returns Home
Call domain and it returns top level domain
*/
function pageAssign(pgurl,strzc)
{
		pgurl = pgurl.toLowerCase();
        var u1 = pgurl.split("?");
        var u2 = u1 [0];
        var u3 = u2.split("/");
        var i = 0;
        var u4 = "";
        
	switch (strzc) {
        case 'pageName': 
			if (u3.length > 2) {
				i = u3.length-1;
				u4 = u3[i].split(".");
				u4[0] = u4[0].toLowerCase();
				if (u4[0] != "default") {
					return u4[0];
				} else {
					return pgurl;
				}
			}
			else return '';
			break;
        case 'zone': if (u3.length > 4) {
                           return u3[3];
                           }
                         else return '';
                         break;
        case 'category': if (u3.length > 5) {
                           return u3[4];
                           }
                         else return '';
                         break;
        case 'kw': if (u3.length > 6) {
                     return u3[5];
                     }
                   else return '';
                   break;
        case 'domain': if (u3.length > 0) {
                           return u3[3];
                           }
                         else return '';
                         break;
		default: return '';
                 break;
	}
}



/*getDaysSinceFirstVisit
 * Uses the visitor cookie to see how many days it has been since
 * the first visit
 */
function getDaysSinceFirstVisit()
{	
	var oneMinute=60*1000;
	var oneHour=oneMinute*60;
	var oneDay=oneHour*24;
	var today= new Date();
	var firstDay= new Date();
	//get value of first visit from visitor cookie
	firstDay.setTime(getVisitorCookie('f','d'));
	var diff=today.getTime()-firstDay.getTime();
	diff= Math.floor(diff/oneDay);
	return diff;
}

/**getReferrer function*
 * getReferrer('r')returns original referring URL for the visit
 * getReferrer('k') returns all search engine keywords from the referring engine
 * @param {Object} k
 */
function getReferrer(k)
{
	var r=k,result;
	if(r=='r')
	{
		var rst=s.getVisitStart("s_visit");
		if(rst==1) setVisitCookie('r','new referring domain');
		result=getVisitCookie('r');
		return result;	
	}

}



/*SEARCH ENGINE TRACKING CODES GOES HERE*/
function doSearchEngineTracking() {
    var myArray=init_array();
    var searchEngineId = "none";
    var appendPaidString = "";
	var searchEngineKeywords;
    
    // Determine if we're coming from a paid ad		
    if (urlstr.indexOf("EADID") >= 0 || urlstr.indexOf("eadid") >= 0 ||urlstr.indexOf("utm_campaign")>=0) {
    	// append to searchEngineId
    	appendPaidString = " - PAID";	
    }
    		 
    // see if the referringUrl falls into one of the test cases...
    if (isStartsWith(referringUrl, "http://www.google.")) {
		searchEngineKeywords=s.getQueryParam('q')
		result = "google-"+ searchEngineKeywords+ appendPaidString;
    } 
	else if (isStartsWith(referringUrl, "http://search.yahoo.")) 
	{ 
		searchEngineKeywords=s.getQueryParam('p')
		result = "yahoo-"+ searchEngineKeywords+ appendPaidString;
    } 
  	else if (isStartsWith(referringUrl, "http://search.msn.com/")) 
  	{ 
		searchEngineKeywords=s.getQueryParam('q')
		result = "msn-"+ searchEngineKeywords+ appendPaidString;
    }
	else if (isStartsWith(referringUrl, "http://search.aol.com/")) 
	{
		searchEngineKeywords=s.getQueryParam('encquery')
		result = "aol-"+ searchEngineKeywords+ appendPaidString;
    } 
	else if (isStartsWith(referringUrl, "http://www.ask.com/")) 
	{
		searchEngineKeywords=s.getQueryParam('q')
		result = "ask-"+ searchEngineKeywords+ appendPaidString;  
    }
	else if (isStartsWith(referringUrl, "http://cnet.search.com/")) 
	{
		searchEngineKeywords=s.getQueryParam('q')
		result = "cnet-"+ searchEngineKeywords+ appendPaidString;
    }
	else if (isStartsWith(referringUrl, "http://search.netscape.com/")) 
	{
		searchEngineKeywords=s.getQueryParam('query')
		result = "netscape-"+ searchEngineKeywords+ appendPaidString;
    }
	else if (isStartsWith(referringUrl, "http://mysearch.myway.com/")) 
	{
		searchEngineKeywords=s.getQueryParam('type')
		result = "myway-"+ searchEngineKeywords+ appendPaidString;   
    }
	else if (isStartsWith(referringUrl, "http://www.dogpile.com/info.dogpl/search/")) 
	{
		searchEngineKeywords=s.getQueryParam('q')
		result = "dogpile-"+ searchEngineKeywords+ appendPaidString;
    }
	else if (isStartsWith(referringUrl, "http://www.overture.com/d/search/")) 
	{
		searchEngineKeywords=s.getQueryParam('q')
		result = "overture-"+ searchEngineKeywords+ appendPaidString;    
    }
	    
    return searchEngineKeywords;

}



function isStartsWith(src, compareString) {
    if (src.indexOf(compareString) == 0) {
        return true;
    } else {
        return false;
    }
}

function getValue(aQueryString, aKey) {
    if (aKey == null || aKey == "") {
        return "";
    }

    var keyIndex = aQueryString.indexOf(aKey + "=");

    if (keyIndex < 0) {
        return "";
    }

    // increment the keyIndex to the equals sign
    keyIndex += aKey.length;

    var separatorIndex = aQueryString.indexOf("&", (keyIndex + 1));

    if (separatorIndex < 0) {
        // key/value is at the end of the queryString
        return aQueryString.substring((keyIndex + 1), aQueryString.length);
    } else {
        return aQueryString.substring((keyIndex + 1), separatorIndex);
    }
}

function getUrlUpToSlashOrQuery(aValue) {
    // remove the http:// and everything up to the first period
    aValue = aValue.substring("http://".length, aValue.length);
		
    var domainIndex = aValue.indexOf(".");
		
    //if (domainIndex >= 0) {
	//if (domainIndex == 0) {
	    if (aValue.length > 1) {
	        aValue = aValue.substring(1, aValue.length);
	    } else {
	         return "";
	    }
	//} else {
	    aValue = aValue.substring((domainIndex + 1), aValue.length);
	//}
    //}
		
    // look for '/'
    var slashIndex = aValue.indexOf("/");
		
    if (slashIndex >= 0) {
        return aValue.substring(0, slashIndex);
    } else {
        // look for query
        var queryIndex = aValue.indexOf("?");
			
		if (queryIndex >= 0) {
			return aValue.substring(0, queryIndex);
		} else {
			return aValue.substring(0, aValue.length);
		}
    }
}

