myformname = "form1"; // provide the name of the form to which you want to add the fields

//DON'T EDIT BELOW THIS LINE;

var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

var ga_loc = location.hostname;
var ga_path = location.pathname;

var ftpageTracker;

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 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 noPercent(x) {
	x = unescape(x);
	return x.replace(/\+/g, " ").replace(/(^ +| +$)/g, "");
}

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(noPercent(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 extraCookies() {	// creates and renews supplemental cookies 
	for (i = 0; i < extraName.length; i += 1) {
		var oldCookieValue = readCookie(extraName[i]);
		var newCookieValue = readQuery(queryName[i]);
		
		if (i === 4) { 
			if (!oldCookieValue) { 
				createCookie(extraName[i], ga_path);
			}	
		} else if (newCookieValue || (oldCookieValue && !(readCookie("__utmb") || readCookie("__utmc")))) {
			createCookie(extraName[i], newCookieValue);
		}
	}
	extras = true;
}

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");
			var campaign = readCookie("ga_campaign");
			if(adgroup) {
				utmValue[6] = adgroup;
			}
			if(campaign) {
				utmValue[2] = campaign;
			}
		}
	}
}


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", 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 > 50){
		utmValue[3] = utmValue[3].substring(0,50);
	}
	if (utmValue[5] && utmValue[5].length > 50){
		utmValue[5] = utmValue[5].substring(0,50);
	}
	if (utmValue[6] && utmValue[6].length > 30){
		utmValue[6] = utmValue[6].substring(0,30);
	}
	if (utmValue[7] && utmValue[7].length > 50){
		utmValue[7] = utmValue[7].substring(0,50);
	}
}

function sleuth() {
	var cpcValue = "cpc - ", userdef, cpcregexp, ref, re, searchq;
	if (location.search.indexOf("gclid") !== -1 || location.search.indexOf("cpc") !== -1) {	
		userdef = readCookie("__utmv");
		cpcregexp = new RegExp(/^cpc - /);
		if (!userdef || !cpcregexp.exec(userdef)) {
			ref = document.referrer;
			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 {
				cpcValue += "Paid Referral: "; 
				cpcValue += ref;
			}
			ftpageTracker._setVar(cpcValue);
		}
	}
}

var bigfatrefundregex	= RegExp(/bigfatrefund/);
var tax2009regex	= RegExp(/tax\-2009/);

function runGA() {            
	if (typeof(_gat) == "object") {
		if (bigfatrefundregex.exec(ga_loc)){
			try {
				ftpageTracker = _gat._getTracker("UA-12296710-1");
				ftpageTracker._setAllowLinker(true);
				ftpageTracker._setAllowHash(false);
				ftpageTracker._setDomainName("bigfatrefund.com");
				ftpageTracker._trackPageview();
				sleuth();
				extraCookies();
				modifyForm(myformname);
			} catch (err) {}
		}
		if (tax2009regex.exec(ga_loc)){
			try {
				ftpageTracker = _gat._getTracker("UA-12296710-1");
				ftpageTracker._setAllowLinker(true);
				ftpageTracker._setAllowHash(false);
				ftpageTracker._setDomainName("tax-2009.com");
				ftpageTracker._trackPageview();
			} catch (err) {}
		}
	} else {
		setTimeout(function () { 
			runGA(); 
		}, 100);
	}
}

runGA();