// Referrer Cookie
//
// This script attempts to find and store the initial referrer for visitors to the site.


// 1. Check Referrer
// 2. Trim referrer to domain
//
// 3. Store referrer to cookie
//
//
//
//
//


function ReferrerCookie(cookieName, homeSite, expiration){

	// METHOD ASSIGNMENT
	
	this.shouldSetCookie = shouldSetCookie;
	this.determineReferrer = determineReferrer;
	this.getCookieParams = getCookieParams;
	this.getCookie = getCookie;	
	this.setCookie = setCookie;
	
	// INITALIZATION
	
	this.cookieCheckVersion = 1;
	this.cookieName = cookieName;
	this.base_url = homeSite;
	this.expiration = expiration;

	this.pageReferrer = this.determineReferrer();
	this.cookieParams = this.getCookieParams(this.cookieName);
	this.visitReferrer = this.cookieParams["referrer"];
	
	if (this.shouldSetCookie(this.pageReferrer)){
		this.setCookie(this.pageReferrer);
	}
}
	
	//######################################
	//     METHOD DEFINITIONS
	//

function shouldSetCookie(refer){
	
	// check to see if the referrer is within the base URL
	var patt1= new RegExp(this.base_url);
	if (patt1.test(refer)){
		return false;
	}

	if (refer == this.visitReferrer){
		return false;
	}
	
	if (this.vistReferrer == ""){
		return false;
	}
	
	return true;
}

function determineReferrer(){
	var referrer = document.referrer;
	referrer = referrer.split("?", 1);
	//	alert (referrer);
	
	if (referrer == ""){
		referrer = "-";
	}
	
	return referrer;
}

function setCookie(referrer){
	
//	// cookie exists?
//	var myCookieParams = new Array();
//	myCookieParams["version"] = this.cookieCheckVersion;
//	myCookieParams["referrer"] = referrer;
	
	var cookieString = this.cookieName + "=";
	cookieString += escape("version=" + this.cookieCheckVersion + "&");
	cookieString += escape("referrer=" + referrer + "");
	
	var exdate=new Date();
	exdate.setDate(exdate.getDate() + this.expiration);
	
	var fullCookie = cookieString + ";expires=" + exdate.toUTCString();
//	alert(fullCookie);
	document.cookie= fullCookie;
}

function getCookieParams(c_name){
	var cookieParams = new Array;
	var cookieData = getCookie(c_name);
	
	
	var pairs = Array();
	pairs = cookieData.split('&');
	for(i=0; i<pairs.length; i++){
		var pieces;
		//			alert(pairs[i]);
		pieces = pairs[i].split("=");
		//			alert(pieces[0] + " = " + pieces[1]);
		cookieParams[pieces[0]] = unescape(pieces[1]);
	}
	
	return cookieParams;
}

function getCookie(c_name){
	if (document.cookie.length>0)
	{
		c_start=document.cookie.indexOf(c_name + "=");
		if (c_start!=-1)
		{
			c_start=c_start + c_name.length+1;
			c_end=document.cookie.indexOf(";",c_start);
			if (c_end==-1) c_end=document.cookie.length;
			return unescape(document.cookie.substring(c_start,c_end));
		}
	}
	return "";
}
