var Sitester_average_number_of_executions = 1; // default 1; Raise this number to expose every N:th visitor to the survey (i.e. set to 10 and every 10th visitor is exposed etc.)
var Sitester_def_lang = "en"; // { "se", "en", "fi", "dk", "no", "de", "es", "pt", "cn", "ru", "fr", "it", "nl", etc}
var Sitester_swap_lang = "se"; // { "", "se", "en", "fi", "dk", "no", "de", "es", "pt", "cn", "ru", "fr", "it", "nl", etc }
var Sitester_SurveyId = 873; // Note! The Sitester Id for the survey. 
var Sitester_sekunder1 = 600; // default 600; If the user in inactive longer than this timeinterval, [Sitester_sekunder2] must pass again before the user is exposed
var Sitester_sekunder2 = 120; // default 120; Seconds until the survey are exposed the first time.
var Sitester_sekunder3 = 7776000; // default 7776000; Once exposed. This is how many seconds until the user being exposed again.
var Sitester_sekunder4 = 31536000; // default 31536000; This is how many seconds until the exposure-memory cookies expire.
var Sitester_ExcludeURL = ""; // default ""; Add URLs or part of URLs that you want to exclude from the Survey separated by a comma ","

/**********************************************************************************/
/************************** Browser detection *************************************/
/**********************************************************************************/
var Sitester_BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	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"
		}
	]

};

function Sitester_Debug() 
{ 
	this.params = new Object();
	this.get=Sitester_Debug_get;	
	qs=location.search.substring(1,location.search.length);

	if (qs.length == 0)
		return;

	qs = qs.replace(/\+/g, ' ');
	var args = qs.split('&');
	
	for (var i=0;i<args.length;i++)
	{
		var value;
		var pair = args[i].split('=');
		var name = unescape(pair[0]);
		if (pair.length == 2)
			value = unescape(pair[1]);
		else
			value = name;		
		this.params[name] = value;
	}
}

function Sitester_Debug_get(key, default_)
{	
	if (default_ == null)
		default_ = null;	
	var value=this.params[key];
	if (value==null) value=default_;	
		return value;
}

function Sitester_RanLCase()
{
   return String.fromCharCode(97 + Math.round(Math.random() * 25));
}
function Sitester_RanUCase()
{
   return String.fromCharCode(65 + Math.round(Math.random() * 25));
}
function Sitester_r_nr()
{
	return Math.round((Math.random()*9))
}
function Sitester_Generate_guid()
{
	return "80b" + Sitester_r_nr() + Sitester_r_nr() + Sitester_r_nr() + Sitester_r_nr() + "-" + Sitester_RanLCase() + Sitester_r_nr() + Sitester_r_nr() + Sitester_r_nr() + "-" + Sitester_RanLCase() + Sitester_SurveyId + "-" + Sitester_r_nr() + Sitester_r_nr() + "-" + Sitester_r_nr() + Sitester_r_nr() + Sitester_RanLCase();
}

/* Handle click on the layer */
function Sitester_openWindow() 
{  
	Sitester_guid = Sitester_Generate_guid();
		
	window.open("http://www.sitester.com/sform/start.asp?PK_Id="+Sitester_guid+"&Language="+Sitester_def_lang+"&SwapLanguage="+Sitester_swap_lang+"","","scrollbars=yes,width=450,height=350");   	
	document.getElementById("Sitester").style.display="none"; 	
	
	/* write LastExposure and Exposed */
	if(Sitester_BrowserDetect.browser == "Safari")	
	{
		Sitester_setCookie(Sitester_strExposedDateTime, Sitester_strMacTime, Sitester_dat4);
	}
	else 
	{
		Sitester_setCookie(Sitester_strExposedDateTime, Sitester_exposure_dat, Sitester_dat4);
	}	
	
	Sitester_setCookie(Sitester_strExposed, Sitester_strCookie, Sitester_dat4);

	/* delete ActiveUser and Delay */
	Sitester_deleteCookie(Sitester_strActiveUser);
	Sitester_deleteCookie(Sitester_strDelay);
	
	/* remove the layer from all frames */	
	for(i=0; (i<parent.frames.length); i++)
	{
		if(parent.frames[i].document.getElementById("Sitester") != null)
		{
			parent.frames[i].document.getElementById("Sitester").style.display="none";
		}
	}
	
}

/* Write layer */
function Sitester_Go()
{	
	//document.write("<div id='Sitester' title='Sitester' style='position: absolute; left:0; top:0; width:95%; height:95%; z-index:9000; visibility: visible;'>");	
	//document.write("<img src='http://www.sitester.com/style/Sitesterlager50px.gif' width='100%' height='100%' alt='Sitester' title='Sitester'>");	
	document.write("<div id='Sitester' title='Sitester' onClick='Sitester_openWindow();' style='position: absolute; left:0; top:0; width:1024px; height:768px; z-index:9000; visibility: visible;'>");	
	document.write("<img src='http://www.sitester.com/style/Sitesterlager50px.gif' width='1024' height='768' alt='Sitester' title='Sitester' onClick='Sitester_openWindow();'>");	
	document.write("</div>");
}

/* Randomizer */
function Sitester_rnd(cases)
{
    var ranNum = Math.round( Math.random() * (cases-1) );
    return (ranNum == 0);
}

/********************* Cookie functions *******************************************/

/* Set Cookie for Mac-Safari*/
function Sitester_setCookieSafari(name, value, expires,domain, secure) 
{ 
		var curCookie = name + "=" + escape(value) + 
		((expires) ? "; expires=" + expires.toGMTString() : ""); + 		
		((domain) ? "; domain=" + domain : "") + 
		((secure) ? "; secure" : "");

		document.cookie = curCookie; 
}

/* Set Cookie */
function Sitester_setCookie(name, value, expire)
{	
	
	/* call the specialfunction for Cookies on Mac+Safari */
	if(Sitester_BrowserDetect.browser == "Safari")
	{		
		
		Sitester_setCookieSafari(name, value, expire, false, false); 
	}
	/* other browsers */
	else
	{ 
		document.cookie = name + "=" + value + "; path=/" + "" + "; expires=" + expire.toGMTString();	
	}
}

/* Get Cookie - checks if the cookie [Name] exists*/
function Sitester_getCookie(Name)
{		
	var search = Name + "=";
	if (document.cookie.length > 0)
	{
		offset = document.cookie.indexOf(search);
		if (offset !=-1)
		{
			offset += search.length;
			end = document.cookie.indexOf(";", offset);
			
			if (end == -1)
			{
				end = document.cookie.length;
			}			
			if (document.cookie.substring(offset, end) == Sitester_strCookie);
			{					
				return true;
			}
		}		
	}	
		return false;
}

function Sitester_deleteCookie(name) 
{ 
	var expire_IE=new Date();
	expire_IE.setTime(1);
	var expire_firefox=new Date("Thu Jan 01 00:00:01 1970");
	  
	/* delete cookie for FireFox */
	if(Sitester_BrowserDetect.browser == "Firefox")
	{		
		if(Sitester_getCookie(name))
		{
			Sitester_setCookie(name, Sitester_strCookie, expire_firefox); 	
		}
	}
	/* delete cookie for other browsers */	
	else
	{ 	
		if(Sitester_getCookie(name))
		{
			Sitester_setCookie(name, Sitester_strCookie, expire_IE); 	
		}
	}
}

/* Calculates if the latests exposure has occured before todays date + the parameter time*/
function Sitester_checkTime(time)
{		
	var created_date = new Date();
	var current_date = new Date();	
	var search = Sitester_strExposedDateTime + "=";
	
	if (document.cookie.length > 0)
	{
		offset = document.cookie.indexOf(Sitester_strExposedDateTime);
		if (offset !=-1)
		{
			offset += search.length;
			end = document.cookie.indexOf(";", offset);
			if (end == -1)
			{
				end = document.cookie.length;		
			}
						
			current_date.getTime();			

			check_date = new Date(document.cookie.substring(offset, end));			
		
			if((check_date.getTime()+time*1000) < current_date.getTime())
			{					
				return true;
			}
		}		
	}	
	return false;
}


/************************ Cookie variables ****************************************/
var Sitester_strCookie = "true";
var Sitester_strDelay = "Sitester_DelayId" + Sitester_SurveyId;
var Sitester_strActiveUser = "Sitester_ActiveUserId" + Sitester_SurveyId;
var Sitester_strExposed = "Sitester_ExposedId" + Sitester_SurveyId;
var Sitester_strExposedDateTime = "Sitester_ExposedDateTimeId" + Sitester_SurveyId;

var Sitester_Trigger = false;
var Sitester_dat1 = new Date();
var Sitester_dat2 = new Date();
var Sitester_dat3 = new Date();
var Sitester_dat4 = new Date();
var Sitester_exposure_dat = new Date();


/**********************************************************************************/
/************************** Start *************************************************/
/**********************************************************************************/
Sitester_BrowserDetect.init();

Sitester_Location = new String(window.location.href);
var Sitester_Debug_Opt = new Sitester_Debug();
var do_Sitester_Debug;
var Sitester_splitString = Sitester_ExcludeURL.split(",");
var Sitester_DoExclude = false


if(Sitester_Debug_Opt.get("SitesterDebug") == "day8")
{
	do_Sitester_Debug = true;
	alert('Sitester_average_number_of_executions: ' +Sitester_average_number_of_executions+"\n"
			+'Sitester_def_lang: ' +Sitester_def_lang+"\n"
			+'Sitester_swap_lang: ' +Sitester_swap_lang+"\n"
			+'Sitester_SurveyId: ' +Sitester_SurveyId+"\n"
			+'Sitester_sekunder1: ' +Sitester_sekunder1+"\n"
			+'Sitester_sekunder2: ' +Sitester_sekunder2+"\n"
			+'Sitester_sekunder3: ' +Sitester_sekunder3+"\n"
			+'Sitester_sekunder4: ' +Sitester_sekunder4+"\n"
			+'Sitester_ExcludeURL: ' +Sitester_ExcludeURL+"\n");			
	Sitester_Go();
}

if(Sitester_ExcludeURL != "")
{
	for(i=0; i<(Sitester_splitString.length); i++)
	{	
		if(Sitester_Location.toLowerCase().indexOf(Sitester_splitString[i].toLowerCase()) > -1 && !Sitester_DoExclude)
		{			
			Sitester_DoExclude = true;
		}
		else
		{			
			Sitester_DoExclude = false;
		}
	}
}
else
{
	Sitester_DoExclude = false;
}

if(Sitester_DoExclude || do_Sitester_Debug)
{
	// dont run the script
}
else
{
	/* Delete cookies from v3-v6 */
	if(Sitester_getCookie("BefInt"))
	{	
		Sitester_deleteCookie("BefInt");
		Sitester_deleteCookie("AllReady");
		Sitester_deleteCookie("Delay");
		Sitester_deleteCookie("LastExposure");
		Sitester_deleteCookie("Exposed");
	}
	if(Sitester_getCookie("LastExposure"))
	{	
		Sitester_deleteCookie("BefInt");
		Sitester_deleteCookie("AllReady");
		Sitester_deleteCookie("Delay");
		Sitester_deleteCookie("LastExposure");
		Sitester_deleteCookie("Exposed");
	}

	/* If not ActiveUser and not Delay, = not inside the 2- or 10-minute interval */
	if(!Sitester_getCookie(Sitester_strActiveUser) && !Sitester_getCookie(Sitester_strDelay))
	{	
		/* ActiveUser = true */
		Sitester_dat1.setTime(Sitester_dat1.getTime()+(Sitester_sekunder1*1000));
		Sitester_setCookie(Sitester_strActiveUser, Sitester_strCookie, Sitester_dat1);		
		
		/* Delay = true */
		Sitester_dat2.setTime(Sitester_dat2.getTime()+(Sitester_sekunder2*1000));
		Sitester_setCookie(Sitester_strDelay, Sitester_strCookie, Sitester_dat2);			
	}

	/* is there a Exposed-cookie? */
	if(Sitester_getCookie(Sitester_strExposed))
	{		
		/* Is the time interval since the last exposure greater than Sitester_sekunder3? */
		if (Sitester_checkTime(Sitester_sekunder3))
		{			
			/* ActiveUser = true */
			Sitester_dat1.setTime(Sitester_dat1.getTime()+(Sitester_sekunder1*1000));
			Sitester_setCookie(Sitester_strActiveUser, Sitester_strCookie, Sitester_dat1);	
			
			/* Delay = true */
			Sitester_dat2.setTime(Sitester_dat2.getTime()+(Sitester_sekunder2*1000));
			Sitester_setCookie(Sitester_strDelay, Sitester_strCookie, Sitester_dat2);		
			
			/* delete the Exposed-cookies */
			Sitester_deleteCookie(Sitester_strExposed);
			Sitester_deleteCookie(Sitester_strExposedDateTime);
		}		
	}
	/* If no Exponesed-Cookie exists */
	else
	{		
		/* each n:th ? */
		if (Sitester_rnd(Sitester_average_number_of_executions)) 
		{
			/* ActiveUser and no Delay ? */
			if (Sitester_getCookie(Sitester_strActiveUser) && !Sitester_getCookie(Sitester_strDelay))
			{				
				/* Run the survey */
				Sitester_Trigger=true;
				
			}				
		}	
	}
	/* If not ActiveUser and the time interval since the last exposure is greater than Sitester_sekunder3 */
	if (!Sitester_getCookie(Sitester_strActiveUser) && Sitester_checkTime(Sitester_sekunder1))
	{
		/* Reset ActiveUser */
		Sitester_dat1.setTime(Sitester_dat1.getTime()+(Sitester_sekunder1*1000));
		Sitester_setCookie(Sitester_strActiveUser, Sitester_strCookie, Sitester_dat1);		
	}

	/* Should the survey run? */ 
	if (Sitester_Trigger)
	{			
		Sitester_exposure_dat.setTime(Sitester_exposure_dat.getTime());		
		Sitester_dat4.setTime(Sitester_dat4.getTime()+(Sitester_sekunder4*1000));
		Sitester_strMacTime=Sitester_exposure_dat.getTime();	

		/* Write the layer */
		Sitester_Go();
	}
}
