// JavaScript Document

var currentQuestion = 1;
var questionTotal = 8;

function nextQuestion()
{
	var validated = false;
	validated = validateCurrentQuestion();
	if (validated)
	{
		//increment the currentQuestion
		currentQuestion++;
		toggleAll();
	}
	return validated;
}

function previousQuestion()
{
	if (currentQuestion>1)
	{
		//increment the currentQuestion
		currentQuestion--;
		toggleAll();
		writeError("&nbsp;");
	}
	return true;
}

		
function validateCurrentQuestion() {

	var returnBoolean = false;
	
	var answerarray = "quest" + currentQuestion; 
	var answerarraylength = document.dcfundquestion.elements[answerarray].length;
	var truecount = 0;
	for (var i=0; i<answerarraylength; i++)
	{
		//count the number of radio buttons checked
		if (document.dcfundquestion.elements[answerarray][i].checked) {truecount++;}
	}
	if (truecount == 0)
	{
		//An answer was not chosen.
		writeError("Please select an answer");
		returnBoolean = false;
	}
	else	
	{
		//An answer was chosen.  
		writeError("&nbsp;");
		returnBoolean = true;
	}		
	return returnBoolean;
}

 

function validateAll() {
	
	var validated = true;
	for (var j=1; j<=questionTotal; j++)
	{
		currentQuestion=j;
		validated = validateCurrentQuestion();
	}
	return validated;
}

function toggleAll (){		
	
				for (var i=1; i<=questionTotal;i++)
				{
					if (i==currentQuestion)	{
							if (document.getElementById("questionlistid")){document.getElementById("questionlistid").start=currentQuestion;}
							toggleClass("q" + i,"Expanded");
					}	
					else {
					toggleClass("q" + i,"Collapsed");
					}
				}		
				revealButtons();
}

function revealButtons()
{		
	 			if (currentQuestion == questionTotal)	
				{	
					toggleClass("next","Collapsed");
					toggleClass("lastpage","generic_button");
					toggleClass("reset","generic_button");
					toggleClass("back","generic_button");
				} 
				else
				{	
					toggleClass("next","generic_button");
					toggleClass("lastpage","Collapsed");
					if (currentQuestion ==1)
					{
						toggleClass("reset","Collapsed");
						toggleClass("back","Collapsed");
					}
					else
					{
						toggleClass("reset","generic_button");
						toggleClass("back","generic_button");
					}
				}	
}

function toggleClass (nodename,classname)
{		
	if(document.getElementById(nodename)){document.getElementById(nodename).className=classname};
}

function writeError (message)
{		
	if(document.getElementById("errortext")) {
		document.getElementById("errortext").innerHTML=message; 
	} else {
	   alert("Please select an option before proceeding");
	}
}

function resetQuestion ()
{		
	 		currentQuestion = 1;
			toggleAll();
			return true;
}


function submitdcfundquestionForm (){		
			if (validateAll())
			{
				checkCount ();
				return true;
			}
			return false;
}

			
function checkCount (){		
		
			var ABCDResult = new  Array("A","B","C","D");
			var ABCDCount = new  Array(0,0,0,0);
			var highestCount = 0;
			
			//loop round each question (starting with question 2)
			for (var i=2; i<=questionTotal; i++)
			{
				var answerarray = "quest" + i; 
				var answerarraylength = document.dcfundquestion.elements[answerarray].length;
				//loop round to find the answer selected
				for (var j=0; j<answerarraylength; j++)
				{
					if (document.dcfundquestion.elements[answerarray][j].checked) 
					{
						//increment the counts keeping track of the current highest
						var newTotal = ABCDCount[j] + 1;
						ABCDCount[j] = newTotal;
						if (newTotal > highestCount) {	highestCount = newTotal; } 
					}
				}
			}
			
			//Make an array countaining only answers with the highest counts 
			var highCounts = new Array();
			for (var i=0;i<ABCDCount.length; i++)
			{
				if (ABCDCount[i] == highestCount) {highCounts[highCounts.length] = i;}								
			}
			
			//Find the position of the most popular answer 
			var resultNum;
			resultNum = Math.floor(highCounts.length/2);
			
			//Find the string equivalant and set on form
			var resultString;
			resultString = ABCDResult[highCounts[resultNum]];
			if (document.getElementById("count")){document.getElementById("count").value = resultString;}
			
			return true;			
}

isPoppedUp = false;

function popupHide()
{
		setTimeout("if(isPoppedUp){toggleClass('activedesc','popuphidden');}", 5000);
		setTimeout("if(isPoppedUp){toggleClass('passivedesc','popuphidden');}", 5000);
		isPoppedUp = false;
}

function popupShow( selectedlink )
{
		xpos = getCorrectPxForBrowser(selectedlink.style.left);
		ypos = getCorrectPxForBrowser(selectedlink.style.top + 10);
		
		if( selectedlink.id == "activelink" )
		{
			document.getElementById("activedesc").style.top = ypos;
			document.getElementById("activedesc").style.left = xpos;
			toggleClass("activedesc","popupshown");
		}
		
		if( selectedlink.id == "passivelink" )
		{
			document.getElementById("passivedesc").style.top = ypos;
			document.getElementById("passivedesc").style.left = xpos;
			toggleClass("passivedesc","popupshown");
		}

		isPoppedUp = true;
}

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.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"
		},
		{	// 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();

function getCorrectPxForBrowser( value )
{
	if( BrowserDetect.browser == "Explorer" )
		return value;
	else
		return value + "px";
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}
