/*
Marcel Media Tracking

utmcsr  = campaign source 
utmcmd  = campaign medium 
utmctr  = campaign term (keyword) 
utmcct  = campaign content (used for A/B testing) 
utmccn  = campaign name 
utmgclid = unique identifier used when AdWords auto tagging is enabled 

testing
cookieString = "182147255.1177600010.2.2.utmccn=(organic)|utmcsr=yahoo|utmctr=aeroshade|utmcmd=organic";
organic only
     182147255.1177600010.2.2.utmccn=(organic)|utmcsr=yahoo|utmctr=aeroshade|utmcmd=organic

 organic and CPC
		182147255.1177700048.4.3.utmcsr=google|utmccn=aeroshade|utmcmd=cpc|utmctr=Accordion+Doors

 cpc only
		182147255.1177700337.1.1.utmcsr=yahoo|utmccn=Aeroshade|utmcmd=cpc|utmctr=accordion%2Bdoor


*/
function addEvent(obj, evType, fn) { 
	if (obj.addEventListener) { 
		obj.addEventListener(evType, fn, false); 
		return true; 
	} else if (obj.attachEvent) { 
		var r = obj.attachEvent("on"+evType, fn); 
		return r; 
	} else { 
		return false; 
	} 
}

function collectionToArray(col) {
	var a = new Array();
	for (i = 0; i < col.length; i++)
		a[a.length] = col[i];
	return a;
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		//c.replace(/^\s*/g,''); //remove leading whitespace
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function appendElements(campaign) { //appends campaign properties to all legit forms
	var forms = getForms();	//grab all legit forms
	//alert(forms[0].name);
	for (property in campaign) { //iterate over all campaign properties, creating key-value pairs
		var input = document.createElement('input');  //blank input
		input.setAttribute('name',"campaign_" + property);  //name 
		input.setAttribute('type','hidden');
		input.setAttribute('value',eval("campaign."+property));
		for (k = 0; k < forms.length; k++) {
			forms[k].appendChild(input);
		}
	}
}

function getForms() {  //returns an array of all forms that don't have a certain class and are "post"s
	allforms = collectionToArray(document.getElementsByTagName('form'));
	for(j=0;j<allforms.length;j++) {
		if (allforms[j].method == '' || allforms[j].method != 'post' || allforms[j].className == 'noMMTrack') {
			allforms.splice(j, 1);  //cut it out of the array
		}
	}
	return allforms;
}

function constructCampaign() {
	if (cookieString = readCookie("__utmz")) { // check for Google Cookie
		cookieString = cookieString.substring(cookieString.indexOf("utm"));
		cookieArray = cookieString.split('|');  //cookie maniupation magic

		var campaign = new Object;  //instantiate campaign object
		campaign.source = "n/a";
		campaign.medium = "n/a";
		campaign.term = "n/a";
		campaign.content = "n/a";
		campaign.name = "n/a";
		campaign.identifier = "n/a";

		for(i=0;i<cookieArray.length;i++) 
		{
			var item = cookieArray[i].split('=');
			if(item[0] == "utmcsr")
			{
				campaign.source = item[1];
			}
			else if(item[0] == "utmcmd")
			{
				campaign.medium = item[1];
			}
			else if(item[0] == "utmctr")
			{
				campaign.term = item[1];
			}
			else if(item[0] == "utmcct")
			{
				campaign.content = item[1];
			}
			else if(item[0] == "utmccn")
			{
				campaign.name = item[1];
			}
			else if(item[0] == "utmgclid")
			{
				campaign.identifier = item[1];
			}
		}
		return campaign;
	}
}

function track() {
	appendElements(constructCampaign());
}