// JavaScript Document
function Get_Cookie(name) {
   var start = document.cookie.indexOf(name+"=");
   var len = start+name.length+1;
   if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
   if (start == -1) return null;
   var end = document.cookie.indexOf(";",len);
   if (end == -1) end = document.cookie.length;
   return unescape(document.cookie.substring(len,end));
}

function Set_Cookie(name,value,expires,path,domain,secure) {
		if (path == null || path == '')
		{
			path = '/';
		}
		if (domain == null || domain == '')
		{
			domain = document.domain;
		}
		// path = SPConfig.cookie.path;
		//domain = SPConfig.cookie.domain;
    var cookieString = name + "=" +escape(value) +
       ( (expires) ? ";expires=" + expires.toGMTString() : "") +
       ( (path) ? ";path=" + path : "") +
       ( (domain) ? ";domain=" + domain : "") +
       ( (secure) ? ";secure" : "");
    document.cookie = cookieString;
}

function Delete_Cookie(name,path,domain) {
	if (path == null || path == '')
	{
		path = '/';
	}
	if (domain == null || domain == '')
	{
		domain = document.domain;
	}
	//path = SPConfig.cookie.path;
	//domain = SPConfig.cookie.domain;
   if (Get_Cookie(name)) document.cookie = name + "=" +
      ( (path) ? ";path=" + path : "") +
      ( (domain) ? ";domain=" + domain : "") +
      ";expires=Thu, 01-Jan-70 00:00:01 GMT";
}

var today = new Date();
//var zero_date = new Date(0,0,0);
//today.setTime(today.getTime() - zero_date.getTime());
var cookie_expire_date = new Date(today.getTime() + 86400000); /* 1 days */

function setVisitorID() {
   if (Get_Cookie('VisitorID')) {
       var VisitorID = Get_Cookie('VisitorID');
   }else{
       Set_Cookie('VisitorID',today.getTime(),cookie_expire_date);
   }
}

function setCampaignID() {
	var ecIDValue = QueryString('ec_id');

	if(ecIDValue != null &&  ecIDValue != '')
	{
		Set_Cookie('ec_id', ecIDValue);
	}   
}


function setSessionID() {
   if (!Get_Cookie('SessionID'))
       Set_Cookie('SessionID', today.getTime());
}

// QueryString
// Call function by x = querystring("variable") returns variable=x
function QueryString(key) {
	var value = null;
	for (var i=0;i<QueryString.keys.length;i++) {
		if (QueryString.keys[i]==key) {
			value = QueryString.values[i];
			break;
		}
	}
	return value;
}
QueryString.keys = new Array();
QueryString.values = new Array();

function QueryString_Parse() {
	var query = window.location.search.substring(1);
	var pairs = query.split("&");
	for (var i=0;i<pairs.length;i++) {
		var pos = pairs[i].indexOf('=');
		if (pos >= 0) {
			var argname = pairs[i].substring(0,pos);
			var value = pairs[i].substring(pos+1);
			QueryString.keys[QueryString.keys.length] = argname;
			QueryString.values[QueryString.values.length] = value;
		}
	}
}
QueryString_Parse(); 

var campaign = "";
var details = "";
var ckid = "";

function setTracking() {

	// get referrer and href
	var ref = document.referrer;
	var href = location.href;
    // Updated process to more closely match paid search/clickshift tracking
    // 1. Look for WT.srch on location.href. if found:
    // 2. - set ckid, set campaign to 'Paid Search', run _uRef to set details, set SPTracking and SPCSID cookies
    // 3. If WT.srch not found:
    // 4. - Check for existing SPTracking cookie. If not found:
    // 5. - - Check for ref(errer). If found:
    // 6. - - - Check for organic search via _uOrg. If organic:
    // 7. - - - - Set campaign and details
    // 8. - - - If not organic:
    // 9. - - - - Must be a referring site, set campaign and details
    // 10.- - If no ref(erer), check for WT.mc_id. If found:
    // 11.- - - Email Campaign, set campaign and details
    // 12.- - If WT.mc_id not found:
    // 13.- - - Must be direct entry, set campaign
    // 14.- - Set SPTracking cookie
    // 15.- - Set SPCSID if ckid is set

    // Look for WT.srch on location.href. if found:
	if (href.indexOf("cid=ppc") > 0 ) {
	
	    // If found, set details accordingly
		campaign = 'Paid Search';
		_uRef(ref);
		
		// set tracking cookie
		Set_Cookie('SPTracking', campaign+"|"+details,cookie_expire_date);
				
		// get clickshift id - 11/20/07 just use whole cshift_ck cookie
		// ckid = QueryString('cshift_ck').split("cs",1);
		//ckid = QueryString('cshift_ck');
		
		// conditionally set clickshift ID
		// if (ckid) {
			// Set_Cookie('SPCSID', ckid, cookie_expire_date);
		// } else {
			// Set_Cookie('SPCSID', 'cpc', cookie_expire_date);
		// }

		
	// Otherwise, if not paid search, check to see if tracking cookie has not been set			
	} else if (!Get_Cookie('SPTracking') || QueryString('source') != null) {

		// If there's a referrer, figure out which kind
		if (ref) {
			
			// is it organic search?
            if (_uOrg(ref)) {
				campaign = 'Organic Search';
				// _uOrg sets details
			}

			// no, must be is it referral
			else { 
				campaign = 'Referring Sites';
				details = ref;//QueryString(document.referrer);
				//alert("value of ref is: " +ref);  
				//alert("value of doc.referrer is: " +document.referrer);
				//_uRef(ref); // sets details
			}

		}

		// is it a custom, typically email, campaign link, i.e. http://www.sunpowercorp.com/?WT.mc_id=my_campaign?
		else if (href.indexOf("WT.mc_id") > 0) {
			campaign = 'Email Campaign';
			details = QueryString('WT.mc_id');
		}
	
		// no referrer, no custom campaign, must be direct
		else {
			campaign = "Direct Entry";
			//alert(location.href);
			details = location.href;
		}

		// alert("Campaign: "+campaign+"\nDetails: "+details);

		// write campaign WT.mc_id - only for direct, referrer, and organic, as we will set on the URL elsewhere
		// if (campaign == 'Organic Search' || campaign == 'Direct' || campaign == 'Referring Site') {
		//	document.write("<META NAME='WT.mc_id' CONTENT='"+campaign+"' />");
		//}

		// set tracking cookie
		Set_Cookie('SPTracking', campaign+"|"+details,cookie_expire_date);
		
		//var bid = QueryString('bid');  // update - don't need banner id after all
		//var addldetails = details + "|" + affiliate_source + "|" + bid;
	}
}

function setAffiliateCampaignId()
{
	affiliate_source = QueryString('source');
	if(affiliate_source != null && affiliate_source != 'undefined') {
		sptrackingv2 = {};
		sptrackingv2.affiliate_source = affiliate_source;
		Set_Cookie('SPTrackingV2', dojo.toJson(sptrackingv2),cookie_expire_date);
	}
	
}

setAffiliateCampaignId();

//-- Auto/Organic Sources and Keywords
var _uRno=new Array();
var _uOsr=new Array();
var _uOkw=new Array();
var _uOno=new Array();
_uOsr[0]="google";	_uOkw[0]="q";
_uOsr[1]="yahoo";	_uOkw[1]="p";
_uOsr[2]="msn";		_uOkw[2]="q";
_uOsr[3]="aol";		_uOkw[3]="query";
_uOsr[4]="aol";		_uOkw[4]="encquery";
_uOsr[5]="lycos";	_uOkw[5]="query";
_uOsr[6]="ask";		_uOkw[6]="q";
_uOsr[7]="altavista";	_uOkw[7]="q";
_uOsr[8]="search";	_uOkw[8]="q";
_uOsr[9]="netscape";	_uOkw[9]="s";
_uOsr[10]="cnn";	_uOkw[10]="query";
_uOsr[11]="looksmart";	_uOkw[11]="qt";
_uOsr[12]="about";	_uOkw[12]="terms";
_uOsr[13]="mamma";	_uOkw[13]="query";
_uOsr[14]="alltheweb";	_uOkw[14]="q";
_uOsr[15]="gigablast";	_uOkw[15]="q";
_uOsr[16]="voila";	_uOkw[16]="kw";
_uOsr[17]="virgilio";	_uOkw[17]="qs";
_uOsr[18]="live";	_uOkw[18]="q";
_uOsr[19]="baidu";	_uOkw[19]="wd";
_uOsr[20]="alice";	_uOkw[20]="qs";
_uOsr[21]="seznam";	_uOkw[21]="w";
_uOsr[22]="yandex";	_uOkw[22]="text";
_uOsr[23]="najdi";	_uOkw[23]="q";
_uOsr[24]="l-dufour"; _uOkw[24]="q";

function _uRef(_ur) {
 if (_ur=="0" || _ur=="" || _ur=="-") return "";
 var i=0,h,k;
 if ((i=_ur.indexOf("://")) < 0) return "";
 h=_ur.substring(i+3,_ur.length);
 if (h.indexOf("/") > -1) {
 	h=h.substring(0,h.indexOf("/"));
 }
 for (var ii=0;ii<_uOsr.length;ii++) {
  if (h.toLowerCase().indexOf(_uOsr[ii].toLowerCase()) > -1) {
   if ((i=_ur.indexOf("?"+_uOkw[ii]+"=")) > -1 || (i=_ur.indexOf("&"+_uOkw[ii]+"=")) > -1) {
    k=_ur.substring(i+_uOkw[ii].length+2,_ur.length);
    if ((i=k.indexOf("&")) > -1) k=k.substring(0,i);
    for (var yy=0;yy<_uOno.length;yy++) {
     if (_uOno[yy].toLowerCase()==k.toLowerCase()) { _ufno=1; break; }
    }
    // if (t) return _uEC(k);
    // else alert("utmccn=(organic)|utmcsr="+_uEC(_uOsr[ii])+"|"+"utmctr="+_uEC(k)+"|utmcmd=organic");
		details = _uEC(_uOsr[ii])+": "+_uEC(k);
		// alert(_uEC(_uOsr[ii])+": "+_uEC(k));
		return true;
   }
  }
 }
 return false;
}
function _uOrg(_ur,t) {
 if (_ur=="0" || _ur=="" || _ur=="-") return "";
 var i=0,h,k;
 if ((i=_ur.indexOf("://")) < 0) return "";
 h=_ur.substring(i+3,_ur.length);
 if (h.indexOf("/") > -1) {
 	h=h.substring(0,h.indexOf("/"));
 }
 for (var ii=0;ii<_uOsr.length;ii++) {
  if (h.toLowerCase().indexOf(_uOsr[ii].toLowerCase()) > -1) {
   if ((i=_ur.indexOf("?"+_uOkw[ii]+"=")) > -1 || (i=_ur.indexOf("&"+_uOkw[ii]+"=")) > -1) {
    k=_ur.substring(i+_uOkw[ii].length+2,_ur.length);
    if ((i=k.indexOf("&")) > -1) k=k.substring(0,i);
    for (var yy=0;yy<_uOno.length;yy++) {
     if (_uOno[yy].toLowerCase()==k.toLowerCase()) { _ufno=1; break; }
    }
    // if (t) return _uEC(k);
    // else alert("utmccn=(organic)|utmcsr="+_uEC(_uOsr[ii])+"|"+"utmctr="+_uEC(k)+"|utmcmd=organic");
		details = _uEC(_uOsr[ii])+": "+_uEC(k);
		// alert(_uEC(_uOsr[ii])+": "+_uEC(k));
		return true;
   }
  }
 }
 return false;
}


function _uEC(s) {
  var n="";
  if (!s || s=="") return "";
  for (var i=0;i<s.length;i++) {if (s.charAt(i)==" ") n+="+"; else n+=s.charAt(i);}
  return n;
}
	
function covertCampaignToSF(campaignId)
{
	var map = [];
	map['AAYA-5WFYVE']='70140000000I2k7';
	return map[campaignId];
}

var loaded_script = true; 
function OutputCampaignID() {
	var sptrackingv2 = dojo.fromJson(unescape(Get_Cookie('SPTrackingV2')));

	if(!sptrackingv2 || !sptrackingv2.affiliate_source) {
		return false;
	}
	
	if(!document.getElementsByName('campaignId')[0])
		document.write('<input class="input" id="campaignId" type="hidden" name="campaignId" value="' + sptrackingv2.affiliate_source + '" />');
	else
		document.getElementsByName('campaignId')[0].value = sptrackingv2.affiliate_source;
	
	var sf_affiliate_source = covertCampaignToSF(sptrackingv2.affiliate_source);
	if(sf_affiliate_source) {
		if(!document.getElementsByName('Campaign_ID')[0])
			document.write('<input class="input" id="campaignId" type="hidden" name="Campaign_ID" value="' + sf_affiliate_source + '" />');
		else  {
			console.log('Original ' + document.getElementsByName('Campaign_ID')[0].value);
			document.getElementsByName('Campaign_ID')[0].value = sf_affiliate_source;
			console.log('After ' + document.getElementsByName('Campaign_ID')[0].value);
		}
			
	}
	
	
}

function OutputCampaign(param) {
	tracking_cookie = Get_Cookie('SPTracking');
	tracking_array  = tracking_cookie.split("|");
	campaign = tracking_array[0];

	if(param != null)
	{		
		$('#'+param).append("<input type='hidden' name='SearchEngineJS' value='"+campaign+"'>");
	}else
	{
		document.write("<input type='hidden' name='SearchEngineJS' value='"+campaign+"'>");
	}
	
}

function OutputDetails(param) {
	tracking_cookie = Get_Cookie('SPTracking');
	tracking_array  = tracking_cookie.split("|");
	details = tracking_array[1];
	if(param != null)
	{		
		$('#'+param).append("<input type='hidden' name='SearchQueryJS' value='"+details+"'>");
	}else
	{
		document.write("<input type='hidden' name='SearchQueryJS' value='"+details+"'>");
	}
	
}

function OutputSessionID(param) {
	
	// session_cookie = Get_Cookie('SessionID');
	// document.write("<input type='hidden' name='sessionId' value='"+session_cookie+"'>");
	
	// replace with clickshift ID when present
	SPCSID_cookie = Get_Cookie('SPCSID');
	
	if(param != null)
	{		
		$('#'+param).append("<input type='hidden' name='sessionId' value='"+SPCSID_cookie+"'>");
	}else
	{
		document.write("<input type='hidden' name='sessionId' value='"+SPCSID_cookie+"'>");
	}

	

}

/* Dealer Locator Tracking Starts */

//event45: "Find a Dealer Initiate
//event46: "Launch Dealer Site"
//event47: "Dealer Locator Form" 
//event48: "Dealer Locator Thank You"
//prop27: "Zip Code"
//prop28/eVar35: "Dealer Name"

//When: visitor enters a valid zip code and clicks "find"
function findDealerInitiate(zipCode){ 
	s.linkTrackVars='events,prop27'; 
	s.linkTrackEvents='event45'; 
	s.events='event45'; 
	s.prop27 = zipCode.toString();
	s.tl(this,'o','Find a Dealer Initiate'); 
} 

//When: visitor clicks "Launch dealer website"
//dealer: Option 1 - pass the name of the dealer (preferred)
//Option 2 - URL of the dealer's website
function launchDealerSite(dealer){ 
	s.linkTrackVars='events,prop28,eVar35'; 
	s.linkTrackEvents='event46'; 
	s.events='event46'; 
	s.prop28 = s.eVar35 = dealer.toString();
	s.tl(this,'o','Launch Dealer Site'); 
	s.linkTrackVars = '';
} 

//When: visitor clicks on "select dealer"
//dealer: pass the name of the dealer
function selectDealer(dealer){ 
	s.linkTrackVars='events,prop28,eVar35'; 
	s.linkTrackEvents='event47'; 
	s.events='event47'; 
	s.prop28 = s.eVar35 = dealer.toString();
	s.tl(this,'o','Find a Dealer - Select Dealer'); 
	s.linkTrackVars = '';
} 

//When: visitor successfully submits the dealer locator form (request a quote)
//It can either be on the click (after validation) or on the thank you page
//dealer: pass the name of the dealer
function requestQuote(dealer){ 
	s.linkTrackVars='events,prop28,eVar35'; 
	s.linkTrackEvents='event48'; 
	s.events='event48'; 
	s.prop28 = s.eVar35 = dealer.toString();
	s.tl(this,'o','Find a Dealer - Thank You'); 
	s.linkTrackVars = '';
} 

//When: visitor clicks on the "share" button
function socialShare(){ 
	s.linkTrackVars='events'; 
	s.linkTrackEvents='event7'; 
	s.events='event7'; 
	s.tl(this,'o','Find a Dealer - Share'); 
	s.linkTrackVars = '';
} 

function dealerPageViewTrack(dealerPageName){ 
//alert("Passed : " + dealerPageName);
	s.pageName = dealerPageName;
	s.events=s.prop28=s.eVar35=s.prop27="";
	s.t();
}
/* Dealer Locator Tracking Ends */


//window onload routines
$(window).load(function(){
// To Set Cookie for Campaign 
	
	setSessionID(); 
	setTracking(); 
	setCampaignID();
});
