var cidScriptNum = 0;
var cidScriptObj = new Array();
/**
* This is used to set up any needed namespaces, if they don't exist yet
*/
function checkNamespace(checkNamespace) {
	var namespaces = checkNamespace.split(".");
	var curNamespace = window;
	for (var namespaceNum = 0; namespaceNum < namespaces.length; namespaceNum++) {
		var namespace = namespaces[namespaceNum];
		if (!curNamespace[namespace]) {
			curNamespace[namespace] = {};
		}
		curNamespace = curNamespace[namespace];
	}
}

function cidTracker(trackerURL) {
	//Set up our namespace if it doesn't exist yet
	checkNamespace("cid.tracker");
	//Shove things into our namespace that can be reused later
	//cid.tracker.visitor_id = cidGetCookie('visitor_id'+(cidAId - 1000));
	//cid.tracker.visitor_id = cidGetCookie('visitor_id');
	//var cid_campaign_id = cidGetParameter(document.URL, "cid_campaign_id");
	// if(cid_campaign_id != null)
	// 	cid.tracker.campaign_id = cid_campaign_id;
	// else
	// 	cid.tracker.campaign_id = cidCId;
	cid.tracker.account_id = cidAId;
	cid.tracker.title = encodeURIComponent(document.title);
	if(typeof(cidPoints) != "undefined")
		cid.tracker.cid_points = cidPoints;
	cid.tracker.browser = cidBrowserDetect.browser;
	cid.tracker.browser_version = cidBrowserDetect.version;
	cid.tracker.operating_system = cidBrowserDetect.OS;
	cid.tracker.language = navigator.language;
	if(typeof(cid.tracker.language) == "undefined")
		cid.tracker.language = navigator.browserLanguage
	cid.tracker.screen_height = screen.height;
	cid.tracker.screen_width = screen.width;
	cid.tracker.flash = is_Flash;
	cid.tracker.java = navigator.javaEnabled();
	if(typeof(trackerURL) != "undefined")
		cid.tracker.url = encodeURIComponent(trackerURL);
	else
		cid.tracker.url = encodeURIComponent(document.URL);
	cid.tracker.referrer = document.referrer;
	if(cid.tracker.referrer == null)
		cid.tracker.referrer = cidGetParameter(document.URL, "referrer");
	cid.tracker.referrer = encodeURIComponent(cid.tracker.referrer);
	var cid_ad_id = cidGetParameter(document.URL, "cid_ad_id");
	if(cid_ad_id != null)
		cid.tracker.cid_ad_id = cid_ad_id;
	if(typeof(cidIncludeInActivities) != "undefined")
		cid.tracker.cid_include_in_activies = cidIncludeInActivities;
	if(typeof(cidProfileId) != "undefined")
		cid.tracker.cid_profile_id = cidProfileId;
	var cid_profile_id = cidGetParameter(document.URL, "cid_profile_id");
	if(cid_profile_id != null)
		cid.tracker.cid_profile_id = cid_profile_id;
	var cid_email = cidGetParameter(document.URL, "cid_email");
	if(cid_email != null)
		cid.tracker.cid_email = cid_email;
	var cid_list_email = cidGetParameter(document.URL, "cid_list_email");
	if(cid_list_email != null)
		cid.tracker.cid_list_email = cid_list_email;
	var cid_short_code = cidGetParameter(document.URL, "cid_short_code");
	if(cid_short_code != null)
		cid.tracker.cid_short_code = cid_short_code;
	var campaign = cidGetParameter(document.URL, "utm_campaign");
	if(campaign != null)
		cid.tracker.utm_campaign = campaign;
	var medium = cidGetParameter(document.URL, "utm_medium");
	if(medium != null)
		cid.tracker.utm_medium = medium;
	var source = cidGetParameter(document.URL, "utm_source");
	if(source != null)
		cid.tracker.utm_source = source;
	var content = cidGetParameter(document.URL, "utm_content");
	if(content != null)
		cid.tracker.utm_content = content;
	var term = cidGetParameter(document.URL, "utm_term");
	if(term == null)
		term = cidGetParameter(document.URL, "_kk");
	if(term != null)
		cid.tracker.utm_term = term;
	var gclid = cidGetParameter(document.URL, "gclid");
	if(gclid != null)
		cid.tracker.gclid = gclid;
	
	//Then let variables only hold the things that will only be used this one time
	var variables = '';
	//Now we shove the property/value pairs back into our request
	for (property in cid.tracker) {
		variables += "&"+property+"="+cid.tracker[property];
	}
	
	if (variables != '') {
		variables = variables.substring(1);
	}
	
	var prefix = false;
	try {
		prefix = location.protocol + '//';
	}catch(e){};
	if(prefix == null)
		prefix = 'http://';
	 
	if(typeof(cidHostname) != "undefined")
		cid_hostname = cidHostname;
	else
		cid_hostname = 'cid.pardot.com';
	
	var analytics_link = prefix + cid_hostname + '/analytics?';
	
	var headID = document.getElementsByTagName("head")[0];
	cidScriptObj[cidScriptNum] = document.createElement('script');
	cidScriptObj[cidScriptNum].type = 'text/javascript';
	cidScriptObj[cidScriptNum].src = analytics_link + variables;
	headID.appendChild(cidScriptObj[cidScriptNum]);
	cidScriptObj[cidScriptNum].onload = function() { return; }
	
	//document.write('<p><a href="' + analytics_link + variables + '">Analytics link'+cidScriptNum+'</a></p>');
	
	//Check on showing the form handler error alert message as well as filling in the original values
	var cidErrors = cidGetParameter(document.URL, "errors");
	if(cidErrors != null) {
		var cidErrorMessage = cidGetParameter(document.URL, "errorMessage");
		var cidNoErrorMessageAlert = document.getElementById('noErrorMessageAlert');
		if(cidErrorMessage != null && !cidNoErrorMessageAlert) {
			cidErrorMessage = cidErrorMessage.replace(/\+/g, " ");
			alert(cidErrorMessage.replace(/~~~/g, "\r\n\t"));
			var allFields = cidGetParameter(document.URL, "allFields");
			if(allFields != null) {
				fieldsArray = allFields.split(",");
				var id = 0;
				while(id < fieldsArray.length) {
					if(fieldsArray[id]) {
						var fieldName = fieldsArray[id];
						var currentField = document.getElementById(fieldName);
						if(currentField && currentField.type == "text" && currentField.value == '') {
							var originalValue = cidGetParameter(document.URL, fieldName);
							if(originalValue != null)
								currentField.value = originalValue;
						}
					}
					id++;
				}
			}
		}
	}
		
	cidScriptNum++;
}
// Flash checking code adapted from Doc JavaScript information; 
// see http://webref.com/js/column84/2.html

var is_Flash        = false;
var is_FlashVersion = 0;

var plugin = (navigator.mimeTypes && 
		navigator.mimeTypes["application/x-shockwave-flash"] &&
		navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin) ?
		navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;
if (plugin&&plugin.description) {
	is_Flash = true;
	is_FlashVersion = parseInt(plugin.description.substring(plugin.description.indexOf(".")-1));
}
   
//From http://www.quirksmode.org/js/detect.html
var cidBrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "Unknown";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "Unknown";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
cidBrowserDetect.init();

//From http://www.dominopower.com/issues/issue200004/howto002.html
function cidGetParameter(queryString, parameterName) {
	var parameterName = parameterName + "=";
	if (queryString.length > 0) {
		var begin = queryString.indexOf(parameterName);
		if (begin != -1) {
			begin += parameterName.length;
			var end = queryString.indexOf( "&" , begin);
			if (end == -1) {
				end = queryString.length
			}
			return unescape(queryString.substring(begin, end));
		}
	}
	return null;
}

function cidGetCookie(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 "";
}
function cidSetCookie(c_name,value,expiredays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()+";path="+escape("/"));
}
