function sniIQQuiz() {
	this.aryCorrectAnswers = new Array();
	this._bHeader = new Array();
	this._bDesc = new Array();
	this._serverPath = '';
	this._stfURL = 'send_to_friend.htm';
	this._stfSubject = '';
	this._stfBody = '';
}

sniIQQuiz.prototype.setIQCookie = function(c_name, value, expiredays) {
	var exdate = new Date();
	exdate.setDate(exdate.getDate() + expiredays);
	document.cookie = c_name +  "=" + escape(value) + ((expiredays==null) ? "" : "; expires=" + exdate.toGMTString());
}

sniIQQuiz.prototype.getIQCookie = function(c_name) {
	var c_start = document.cookie.indexOf(c_name + '=');
	if (c_start != -1) { 
		c_start = c_start + c_name.length + 1;
		var 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));
}

sniIQQuiz.prototype.setCorrectAnswers = function() {
	for (var i=0; i<arguments.length; i++) this.aryCorrectAnswers.push(arguments[i]);
}

sniIQQuiz.prototype.addBeratement = function(header, desc) {
	this._bHeader.push(header);
	this._bDesc.push(desc);
}

sniIQQuiz.prototype.createSendToFriend = function(pThis, w, h) {
	document.getElementById("sendToFriend").href = 'javascript: _sniIQQuiz.popWin("' + this._serverPath + this._stfURL + '?serverpath=' + this._serverPath + '&subject=' + this._stfSubject + '&body=' + this._stfBody + '", ' + w + ', ' + h + ', 0, 0, 0, 0, 0, 0, 0, 0)';
}

sniIQQuiz.prototype.displayGuestAnswers = function() {
	var guestAID;
	var aryTempAnswer;
	var mGuestAnswer = '';
	var mGuestAnswerCookies = new Array(
		this.getIQCookie('guestAnswer1'),
		this.getIQCookie('guestAnswer2'),
		this.getIQCookie('guestAnswer3'),
		this.getIQCookie('guestAnswer4'),
		this.getIQCookie('guestAnswer5'),
		this.getIQCookie('guestAnswer6'),
		this.getIQCookie('guestAnswer7'),
		this.getIQCookie('guestAnswer8'),
		this.getIQCookie('guestAnswer9'),
		this.getIQCookie('guestAnswer10')
	);
	
	for (i=0; i<10; i++) {
		// Get the element ids
		guestAID = eval("document.getElementById('guestA" + (i + 1) + "')");
		aryTempAnswer = eval('aryQ' + i + 'Answers');
		
		// Match the correct answer against aryQ[i]Answers array
		switch (mGuestAnswerCookies[i]) {
			case 'A':
				mGuestAnswer = aryTempAnswer[0];
				break;
			case 'B':
				mGuestAnswer = aryTempAnswer[1];
				break;
			case 'C':
				mGuestAnswer = aryTempAnswer[2];
				break;
			case 'D':
				mGuestAnswer = aryTempAnswer[3];
				break;
		}
	
		// Assign the values to the elements
		document.getElementById(guestAID.id).innerHTML = mGuestAnswer;
	}
}

sniIQQuiz.prototype.getNumCorrect = function() {
	// get a comparison match of the cookied answers against
	// aryCorrectAnswers[] and see how many are correct
	var numCorrect = 0;
	var mGuestAnswerCookies = new Array(
		this.getIQCookie("guestAnswer1"),
		this.getIQCookie("guestAnswer2"),
		this.getIQCookie("guestAnswer3"),
		this.getIQCookie("guestAnswer4"),
		this.getIQCookie("guestAnswer5"),
		this.getIQCookie("guestAnswer6"),
		this.getIQCookie("guestAnswer7"),
		this.getIQCookie("guestAnswer8"),
		this.getIQCookie("guestAnswer9"),
		this.getIQCookie("guestAnswer10")
	);
	for (i=0; i<10; i++) {
		var cookieValue = mGuestAnswerCookies[i];
		if (cookieValue == this.aryCorrectAnswers[i]) {
			numCorrect++;
		}
	}
	
	if (numCorrect < 5) {
		document.getElementById("berater").innerHTML = this._bHeader[0];
		document.getElementById("beraterTag").innerHTML = this._bDesc[0];	
	} else if (numCorrect >4 && numCorrect < 8) {
		document.getElementById("berater").innerHTML = this._bHeader[1];
		document.getElementById("beraterTag").innerHTML = this._bDesc[1];
	} else {
		document.getElementById("berater").innerHTML = this._bHeader[2];
		document.getElementById("beraterTag").innerHTML = this._bDesc[2];
	}
	document.getElementById("numAnsweredCorrectly").innerHTML = numCorrect;
}

sniIQQuiz.prototype.resetCookies = function() {
	for (i=1; i<=10; i++) this.setIQCookie("guestAnswer" + i, "", 1);
}

/* Cookie enablement check */
sniIQQuiz.prototype.LandingCheckCookie = function() {
	if (BrowserDetect.browser!="Safari") {
		// do the cookie test/check
		FLQuizID = "FLIQV3";
		this.setIQCookie('FLQuizID', FLQuizID, 365);
		cookieCheck = this.getIQCookie('FLQuizID'); // <-- problem here
		if (cookieCheck!="FLIQV3") {
			alert("There was a problem with setting a cookie on your computer and this quiz requires them to function.\n\n Please enable cookies in the settings of your browser.");
		}
	}
}

sniIQQuiz.prototype.checkInvalidQuizEntry = function(url) {
	if (BrowserDetect.browser!="Safari") {
		cookieCheck = this.getIQCookie('FLQuizID');
		if (cookieCheck == "FLIQV3") {
			// there's a value in cookieCheck 
			return;
		} else {
			alert("It appears you've entered this quiz from a page other than the start page, or your browser is not set to accept cookies. You will be redirected to the beginning of the quiz.");
			document.location.href = url;
		}
	}
}

sniIQQuiz.prototype.validateAnswers = function(mForm, pageNum) {
	var chosen = false;
	for (i=0; i<mForm.radAnswer.length; i++) {
		if (mForm.radAnswer[i].checked) {
			this.setIQCookie("guestAnswer" + pageNum, mForm.radAnswer[i].value, 1);
			chosen = true;
		}
	}
	if (!chosen) {
		alert("Please choose an answer to continue.");
		return false;
	}
}

sniIQQuiz.prototype.popWin = function(pURL, pWidth, pHeight, pResizeable, pScrollbars, pStatus, pToolbar, pLocation, pMenubar, pX, pY) {
	if (pWidth == undefined) pWidth = 800;
	if (pHeight == undefined) pHeight = 600;
	if (pResizeable == undefined) pResizeable = 1;
	if (pScrollbars == undefined) pScrollbars = 1;
	if (pStatus == undefined) pStatus = 1;
	if (pToolbar == undefined) pToolbar = 1;
	if (pLocation == undefined) pLocation = 1;
	if (pMenubar == undefined) pMenubar = 1;
	if (pX == undefined) pX = 0;
	if (pY == undefined) pY = 0;
	var _popWin = window.open(pURL, "popWin", "width=" + pWidth + ", height=" + pHeight + ", resizable=" + pResizeable + ", scrollbars=" + pScrollbars + ", status=" + pStatus + ", toolbar=" + pToolbar + ", location=" + pLocation + ", menubar=" + pMenubar);
	_popWin.moveTo(pX, pY);
}

sniIQQuiz.prototype.hintwindow = function(url) {
	var needhint = window.open(url, "hint", "width=800, height=600, resizable=1, scrollbars=1, status=1, toolbar=0, location=0, menubar=0");
	needhint.moveTo(0, 0);
}

sniIQQuiz.prototype.fixProgressbar = function(elmnt, pageNum, w, h) {
	document.getElementById(elmnt).style.left = '-' + ((w / 2) - (pageNum * h)) + 'px';
}

/* Browser detect */
var 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"
		}
	]

};
BrowserDetect.init();