var strParamName = 'ecid';
var strHref = window.location.href;

if (document.referrer) if (!fscDomain(document.referrer)) checkaff(); // has referrer and referrer is not fsc
if (!document.referrer) if (ecId()) checkaff(); // no referrer but ecID (ie. email)

getTrackId();

function checkaff() {
var strReturn = "";
var cookieName = 'fs_af';
var cookieValue = '0';
var cookieExp = '30';
var cookieDomain = getDomain(document.domain);
if (cookieExp) { //setting date exp
var date = new Date();
date.setTime(date.getTime()+(cookieExp*24*60*60*1000));
var expires = date.toGMTString();
} else var expires = "";
var cookie = cookieName+"="+affId(getParam(strParamName))+"; expires="+expires+"; path=/; domain="+cookieDomain;
document.cookie = cookie;
// document.cookie = cookieName+"="+affId(613)+"; expires="+expires+"; path=/; domain="+cookieDomain;
}

function ecId(){
if ( strHref.indexOf("?") > -1 ) if ( strHref.indexOf(strParamName) > -1 ) {
var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
var iParam = strQueryString.substr(1).split("&");

for ( var i in iParam ){
var aParam = iParam[i].split("=");
if ( aParam[0] == strParamName ) return true
}
}return false

}
function getTrackId(){
	var strHref = window.location.href;
	var strParam ="trackID";
	if ( strHref.indexOf("?") > -1 ) {
	
		if ( strHref.indexOf(strParam) > -1 ) {
			var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
			var iParam = strQueryString.substr(1).split("&");
			for ( var i in iParam ) {
				var aParam = iParam[i].split("=");
				if ( aParam[0] == strParam.toLowerCase()) { 

					var cookieName = strParam;
					var cookieValue = aParam[1];
					var cookieExp = '30';
					var cookieDomain = getDomain(document.domain);
					if (cookieExp) { 
						var date = new Date();
						date.setTime(date.getTime()+(cookieExp*24*60*60*1000));
						var expires = date.toGMTString();
					}  
					else {
						var expires = "";
					}
					var cookie = cookieName+"="+cookieValue+"; expires="+expires+"; path=/; domain="+cookieDomain;
					document.cookie = cookie;
				}
	
			}
		}
	}
}

function getParam(param){
if ( strHref.indexOf("?") > -1 ) if ( strHref.indexOf(strParamName) > -1 ) {
var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
var iParam = strQueryString.substr(1).split("&");

for ( var i in iParam ){
var aParam = iParam[i].split("=");
if ( aParam[0] == strParamName ) return aParam[1]
}
}return 0

}

function affId(id) {
	if(!id) var aId=1;
	else var aId=id
	switch (true){
	//cj DE
	case ( (583<=aId) && (aId<=592) ): return 7; break;
	case ( (860<=aId) && (aId<=860) ): return 7; break;
	case ( (1532<=aId) && (aId<=1555) ): return 7; break;
	case ( (1748<=aId) && (aId<=1748) ): return 7; break;
	case ( (1957<=aId) && (aId<=1958) ): return 7; break;
	//cj UK
	case ( (603<=aId) && (aId<=612) ): return 5; break;
	case ( (861<=aId) && (aId<=861) ): return 5; break;
	case ( (1021<=aId) && (aId<=1022) ): return 5; break;
	case ( (1747<=aId) && (aId<=1747) ): return 5; break;
	case ( (1751<=aId) && (aId<=1774) ): return 5; break;
	case ( (1953<=aId) && (aId<=1954) ): return 5; break;
	//cj FR
	case ( (728<=aId) && (aId<=737) ): return 6; break;
	case ( (862<=aId) && (aId<=862) ): return 6; break;
	case ( (1672<=aId) && (aId<=1696) ): return 6; break;
	case ( (1955<=aId) && (aId<=1956) ): return 6; break;
	//cj US
	case ( (758<=aId) && (aId<=767) ): return 1; break;
	case ( (863<=aId) && (aId<=863) ): return 1; break;
	case ( (1066<=aId) && (aId<=1072) ): return 1; break;
	case ( (1275<=aId) && (aId<=1276) ): return 1; break;
	case ( (1289<=aId) && (aId<=1290) ): return 1; break;
	case ( (1299<=aId) && (aId<=1299) ): return 1; break;
	case ( (1409<=aId) && (aId<=1412) ): return 1; break;
	case ( (1413<=aId) && (aId<=1413) ): return 1; break;
	case ( (1697<=aId) && (aId<=1721) ): return 1; break;
	case ( (1945<=aId) && (aId<=1945) ): return 1; break;
	case ( (1951<=aId) && (aId<=1952) ): return 1; break;
	case ( (2008<=aId) && (aId<=2012) ): return 1; break;
	case ( (2055<=aId) && (aId<=2055) ): return 1; break;
	case ( (2267<=aId) && (aId<=2267) ): return 1; break;

	//td
	case ( (613<=aId) && (aId<=622) ): return 2; break;
	case ( (738<=aId) && (aId<=747) ): return 2; break;
	case ( (768<=aId) && (aId<=777) ): return 2; break;
	case ( (788<=aId) && (aId<=797) ): return 2; break;
	case ( (808<=aId) && (aId<=808) ): return 2; break;
	case ( (810<=aId) && (aId<=810) ): return 2; break;
	case ( (812<=aId) && (aId<=821) ): return 2; break;
	case ( (832<=aId) && (aId<=832) ): return 2; break;
	case ( (834<=aId) && (aId<=843) ): return 2; break;
	case ( (864<=aId) && (aId<=864) ): return 2; break;
	case ( (569<=aId) && (aId<=572) ): return 2; break;
	case ( (870<=aId) && (aId<=870) ): return 2; break;
	case ( (1019<=aId) && (aId<=1020) ): return 2; break;
	case ( (1031<=aId) && (aId<=1050) ): return 2; break;
	case ( (1160<=aId) && (aId<=1182) ): return 2; break;
	case ( (1301<=aId) && (aId<=1301) ): return 2; break;
	case ( (1362<=aId) && (aId<=1362) ): return 2; break;
	case ( (1424<=aId) && (aId<=1430) ): return 2; break;
	case ( (1450<=aId) && (aId<=1531) ): return 2; break;
	case ( (1596<=aId) && (aId<=1671) ): return 2; break;
	case ( (1784<=aId) && (aId<=1801) ): return 2; break;
	case ( (1845<=aId) && (aId<=1866) ): return 2; break;
	case ( (1914<=aId) && (aId<=1937) ): return 2; break;
	case ( (1960<=aId) && (aId<=1975) ): return 2; break;
	case ( (2006<=aId) && (aId<=2006) ): return 2; break;
	case ( (2063<=aId) && (aId<=2065) ): return 2; break; 
	case ( (2655<=aId) && (aId<=2665) ): return 2; break; 
	case ( (2689<=aId) && (aId<=2697) ): return 2; break; 

	//aw
	case ( (623<=aId) && (aId<=632) ): return 3; break;
	case ( (865<=aId) && (aId<=865) ): return 3; break;
	case ( (1023<=aId) && (aId<=1026) ): return 3; break;
	case ( (1722<=aId) && (aId<=1746) ): return 3; break;
	case ( (1959<=aId) && (aId<=1959) ): return 3; break;
	//toolbox
	case ( (593<=aId) && (aId<=602) ): return 4; break;
	case ( (633<=aId) && (aId<=642) ): return 4; break;
	case ( (748<=aId) && (aId<=757) ): return 4; break;
	case ( (778<=aId) && (aId<=787) ): return 4; break;
	case ( (798<=aId) && (aId<=807) ): return 4; break;
	case ( (809<=aId) && (aId<=809) ): return 4; break;
	case ( (811<=aId) && (aId<=811) ): return 4; break;
	case ( (822<=aId) && (aId<=831) ): return 4; break;
	case ( (833<=aId) && (aId<=833) ): return 4; break;
	case ( (844<=aId) && (aId<=853) ): return 4; break;
	case ( (866<=aId) && (aId<=866) ): return 4; break;
	case ( (1434<=aId) && (aId<=1449) ): return 4; break;
	case ( (1585<=aId) && (aId<=1588) ): return 4; break;
	case ( (1750<=aId) && (aId<=1750) ): return 4; break;
	case ( (1976<=aId) && (aId<=1991) ): return 4; break;
	//zanox
	case ( (573<=aId) && (aId<=580) ): return 8; break;
	case ( (1158<=aId) && (aId<=1159) ): return 8; break;
	case ( (1556<=aId) && (aId<=1579) ): return 8; break;
	case ( (1749<=aId) && (aId<=1749) ): return 8; break;
	case ( (1949<=aId) && (aId<=1950) ): return 8; break;
	case ( (2657<=aId) && (aId<=2657) ): return 8; break;
	//Adrecord AB
	case ( (2319<=aId) && (aId<=2328) ): return 9; break;
	case ( (2353<=aId) && (aId<=2354) ): return 9; break;

	default: return 0; break;
	}
	return true
}
function fscDomain(domain){
//could be improved with better a more greedy regex
var match = /(http|https):\/\/.*\.(f-secure|gcsip)\..*/.test(domain);
if (match) return true
else return false
}

function getDomain (str) {
if (str == null || str.length == 0)
return "";

str = str.toLowerCase();
var i = str.indexOf("/");
if (i > -1)
str = str.substring(0, i);
var parts = str.split('.');
var len = parts.length;
if (len < 3)
return str;
var lastPart = parts[len-1];
var secondPart;
secondPart = parts[len-2];
var two = 2;
if (lastPart == "uk" && secondPart == "co")
++two;
if (len >= 0)
return parts.splice(len-two, two).join('.');
return "";
}
