var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."),
	pageTracker;


var extras = false;
var extraName = new Array("ga_campaign", "ga_keyword", "ga_ad_content", "ga_adgroup", "ga_landingpage"); // extra cookie names
var queryName = extraName;	// By default, query parameter names and extra cookie names are indentical
var alt_utmName = new Array("field3", "field4", "field5", "field6", "field7", "field8");	// 1SC fieldname list - Updated 1/21/10 by AL
var utmName = new Array("ga_source", "ga_medium", "ga_campaign", "ga_keyword", "ga_ad_content", "ga_search_query");	// fieldname list
var utmValue = new Array();		// store field values here
var formListAfter = new Array("","_header","_main","_main2");
var formListBefore = new Array("","custom ga_","ga ");

function createCookie(name,value) {	// creates a 6 month cookie
	var date = new Date();
	date.setTime(date.getTime()+15768000000);
	var expires = "; expires="+date.toGMTString();
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {		// function to read cookie
	var nameRegex = RegExp("(?:;\\s|^)" + name + "=([^;]+)");	// match name of cookie and store value in $1
	nameValue = nameRegex.exec(document.cookie);
	if(nameValue) {	
		return nameValue[1];
	} else {
		return null;
	}
}

function readSubCookie(name, vari) {	// function to read subcookie of passed value of __utmz
	var nameRegex = RegExp("(?:\\||\\.)" + name + "=([^|]+)");
	nameValue = nameRegex.exec(vari);
	if(nameValue) {
		return nameValue[1];
	} else {
		return " ";
	}
}

function readQuery(name) { 	// function to read query parameters of query string
	var nameRegex = RegExp("(?:\\?|&)" + name + "=([^&]+)");
	nameValue = nameRegex.exec(location.search);
	if(nameValue) {
		return nameValue[1];
	} else {
		return null;
	}
}

function parseCookies() {
	var c2 = readCookie("__utmz"); 			// This gets the cookie
	var gclid = readSubCookie("utmgclid",c2);	// read utmgclid subcookie
	if(gclid!=" ") {		// read values for adwords
		
		utmValue[0] = "google";
		utmValue[1] = "cpc";
		utmValue[2] = "google";
		utmValue[3] = " ";
		utmValue[4] = " ";
		
		if (extras) {	// when supplemental cookies are enabled
			for(i = 2; i < 5; i += 1) { 
				var extraValue = readCookie(utmName[i].replace(/\s/g,"_").toLowerCase()) // check for each cookie
				if(extraValue) {
					utmValue[i] = extraValue;
				}
			}
		} 
	} else {	// read values for non-adwords
		utmValue[0] = readSubCookie("utmcsr", c2);
		utmValue[1] = readSubCookie("utmcmd", c2);
		utmValue[2] = readSubCookie("utmccn", c2);
		utmValue[3] = readSubCookie("utmctr", c2);
		utmValue[4] = readSubCookie("utmcct", c2);
	}
	utmValue[5] = " ";
	if (extras) {
		utmName[6] = "ga_adgroup";
		utmValue[6] = " ";
		utmName[7] = "ga_landingpage";
		utmValue[7] = readCookie(utmName[7]);
	}
	if (utmValue[1] === "cpc") {
		searchQuery = readCookie("__utmv");
		if(searchQuery) {
			searchValue = /^[0-9]+\.(.+)/.exec(searchQuery);
			if(searchValue) {
				utmValue[5] = searchValue[1];
			}
		}
		
		if (extras) {
			var adgroup = readCookie("ga_adgroup");
			if(adgroup) {
				utmValue[6] = adgroup;
			}
		}
	}
}


function modifyForm(name) {
	if(name) { // if adding hidden fields to named form
		if(document.forms[name]) {
			parseCookies(); 		// read cookies and set values
			ga_Limiter();
			for(i=0;i<utmName.length;i++) {
				var gaField = document.createElement("input");
				gaField.setAttribute("name", alt_utmName[i]);
				gaField.setAttribute("id", alt_utmName[i]);
				gaField.setAttribute("value",utmValue[i]);
				gaField.setAttribute("type","hidden");
				document.forms[name].appendChild(gaField);
			}
		}
	} else { // if modifying existing fields
		parseCookies(); 		// read cookies and set values
		ga_Limiter();
		for(i=0;i<formListAfter.length;i++) {
			for (l=0;l<formListBefore.length;l++) {
				for(j=0;j<utmName.length;j++) {
					if(document.getElementById(formListBefore[l] + utmName[j].replace(/\s/g,"_") + formListAfter[i])) { 
						document.getElementById(formListBefore[l] + utmName[j].replace(/\s/g,"_") + formListAfter[i]).value = utmValue[j]; 
					}
					var fieldName=document.getElementsByName(formListBefore[l] + utmName[j].replace(/\s/g,"_") + formListAfter[i]);
					if(fieldName) {
						for(k=0;k<fieldName.length;k++) {
							fieldName[k].value = utmValue[j];
						}
					}
				}
			}
		}
	}
}

function ga_Limiter(){
	if (utmValue[0] && utmValue[0].length > 30){
		utmValue[0] = utmValue[0].substring(0,30);
	}
	if (utmValue[1] && utmValue[1].length > 10){
		utmValue[1] = utmValue[1].substring(0,10);
	}
	if (utmValue[2] && utmValue[2].length > 50){
		utmValue[2] = utmValue[2].substring(0,50);
	}
	if (utmValue[3] && utmValue[3].length > 60){
		utmValue[3] = utmValue[3].substring(0,60);
	}
	if (utmValue[5] && utmValue[5].length > 60){
		utmValue[5] = utmValue[5].substring(0,60);
	}
	if (utmValue[6] && utmValue[6].length > 30){
		utmValue[6] = utmValue[6].substring(0,30);
	}
	if (utmValue[7] && utmValue[7].length > 60){
		utmValue[7] = utmValue[7].substring(0,60);
	}
}

function noPercent(x) {
	x = unescape(x);
	return x.replace(/\+/g, " ").replace(/(^ +| +$)/g, "");
}

function sleuth() {
	var cpcValue, cpcName = "exact_search_term", userdef, ref, re, searchq;
	if (location.search.indexOf("gclid") !== -1 || location.search.indexOf("cpc") !== -1) {	
		userdef = readCookie("__utmv");
		if (!userdef || userdef.indexOf("=exact_search_term=") === -1) {
			ref = document.referrer || "(not set)";
			re = new RegExp(/(?:\?|&)(?:q|p|query|encquery|qt|terms|rdata|qs|wd|text|szukaj|k|searchExpr|search_for|string|search_query|searchfor)=([^&]+)/);
			searchq = re.exec(ref);
			if (searchq) { 
				cpcValue = noPercent(searchq[1]);
			} else {
				cpcName = "paid_referral"; 
				cpcValue = ref;
			}
			pageTracker._setCustomVar(1, cpcName, cpcValue, 1);
		}
	}
}
function supercookie() {
	userdef = readCookie("__utmv");
	if (!userdef || userdef.indexOf("=supercookie=") === -1) {
		var currentTime = new Date();
		var month = currentTime.getMonth() + 1;
		var day = currentTime.getDate();
		var year = currentTime.getFullYear();
		var sc_date = "[" + month+ ":" + day + ":"+ year + "]"; 
		var sc_ref = utmValue[0] + "|" + utmValue[1] + "|" + utmValue[2] + "|" + utmValue[3] + sc_date;
		pageTracker._setCustomVar(2, "supercookie", sc_ref, 1);
	}
}

function runGA() {    
	if (typeof(_gat) === "object") {
		pageTracker = _gat._getTracker("UA-6826278-1");
		pageTracker._setDomainName('digitalscrapbookexperts.com');
		pageTracker._setAllowLinker(true);
		sleuth();
		pageTracker._trackPageview();
		modifyForm("form1");
		supercookie();
		pageTracker._trackPageview("/trash");
	} else {
		setTimeout(function () {runGA(); }, 100);
	}
}
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
runGA();
