// JavaScript Document

function initNav(){
	var imgObj;	
	for(i=0;i<navImgHoverArr.length;i++){
		imgObj = new Image();
		imgObj.src = navImgHoverArr[i];
	}
}

function navOver(navImgID, srcOver){
	document.getElementById(navImgID).src=srcOver;
}
function navOut(navImgID, srcOut){
	document.getElementById(navImgID).src=srcOut;	
}

function delConfirm_func(url){	
	if (confirm("Are you sure you want to delete this?")){
		location.href=url
	}
}

// captcha function
function refreshCaptchaImage(valImageId) {
	var objImage = document.images[valImageId];
	if (objImage == undefined) {
		return;
	}
	var now = new Date();
	objImage.src = objImage.src.split('?')[0] + '?x=' + now.toUTCString();
}

function addZero_func(no,noZeros){
	var res = ""
	if (no.toString().length < noZeros){
		for(i=no.toString().length;i<=noZeros;i++){
			res += "0";
		}
	}
	res += no;
	return res;
}

// **** Open Browser Window ****
function openWindow_func(url, wname, topleft, fullscreen, appw, apph, scroll) {
	fscreen = (fullscreen == 1)?"fullscreen":"";	
	if (topleft == 1){
		screenx = 0
		screeny = 0
	} else {
		screenx = (screen.width - appw)/2
		screeny = (screen.height - apph)/2
	}
	newWin = window.open(url, wname, "toolbar=no,status=yes,"+fscreen+",scrollbars="+scroll+",resizable=yes,menubar=no,width="+appw+",height="+apph+",left="+screenx+",top="+screeny+", maximize=yes");
	//return newWin;
}

function txtboxInit(txtboxObj, initVal){
	if (txtboxObj.value == initVal){
		txtboxObj.value = '';		
	}
	if (txtboxObj.className.substr(txtboxObj.className.length-4,4) == "init"){
		//txtboxObj.className = txtboxObj.className.substr(0,txtboxObj.className.length-4);// Bug in IE
		txtboxObj.style.color='#003366';
	} else if (txtboxObj.className.substr(txtboxObj.className.length-4,4) == "warn"){
		txtboxObj.style.color='#003366';
	}
}

function setStyle_func(obj, stylevar, styleval){
	if (navigator.userAgent.toLowerCase().indexOf("msie") > -1){
		obj.style[stylevar]=styleval;
	} else {
		obj.style[stylevar]=styleval;
	}
}

function search_func(crit){
	location.href="search.asp?s="+crit;
}

function enterKeySearch_func(e, urlORfrm){	
	var characterCode
	if(e && e.which){ //if which property of event object is supported (NN4)
		e = e
		characterCode = e.which //character code is contained in NN4's which property
	} else{
		e = event
		characterCode = e.keyCode //character code is contained in IE's keyCode property
	}
	if (characterCode == 13){
		if (urlORfrm.name){
			urlORfrm.submit();
		} else {
			location.href=urlORfrm;
		}
	}
}

function replaceTxt_func(txtStr,replaceSelStr,replaceWithTxt){
	return txtStr.split(replaceSelStr).join(replaceWithTxt);
}

function decPlaces(no,noDecPlaces){
	return Math.round(no*Math.pow(10,noDecPlaces))/Math.pow(10,noDecPlaces);
}


function db2frm(dbValArr,frmObjArr,frm){ // Loads database values into a specified form
	var dbArrLen = dbValArr.length;
	for(i=0;i<dbArrLen;i++){
		if (frm[frmObjArr[i]]){
			if (frm[frmObjArr[i]].type == undefined){ // radio
				radSet_func(frm[frmObjArr[i]], dbValArr[i]);
			} else if (frm[frmObjArr[i]].type == "text" || frm[frmObjArr[i]].type == "textarea" || frm[frmObjArr[i]].type == "hidden"){
				frm[frmObjArr[i]].value = dbValArr[i];
			} else if (frm[frmObjArr[i]].type.indexOf("check") != -1){
				frm[frmObjArr[i]].checked=(dbValArr[i] != 0)?true:false;
				//alert(frmObjArr[i]+" "+frm[frmObjArr[i]].checked)
			} else if (frm[frmObjArr[i]].type == "select"){
				sel_func(frm[frmObjArr[i]], dbValArr[i]);
			}
		}
	}
}

// ******* FORM FUNCTIONS *******
function radValidate_func(radGroup){// Checks to see if a radio group has been checked
	rL = radGroup.length;
	radChked=0;
	for(a=0;a<rL;a++){
		if (radGroup[a].checked){
			radChked=1;
		}
	}
	if (radChked==1){
		return true;
	} else {
		return false;
	}
}

function sel_func(selObj, selVal){ // Positions the select object at given index
	selL = selObj.length;
	for(p=0;p<selL;p++){
		if (String(selObj.options[p].value)==String(selVal)){
			selObj.selectedIndex=p;
			break;
		}
	}
}

function radSet_func(radObj, radVal){ // Sets the radiobox group based on a radiobox value
	radL = radObj.length;
	for(p=0;p<radL;p++){
		if (String(radObj[p].value)==String(radVal)){
			radObj[p].checked=true;
			break;
		}
	}
}

function radHasVal_func(radObj, radVal){ // Checks whether the radiobox group has is checked on the given value
	var res=false;
	radL = radObj.length;
	for(p=0;p<radL;p++){
		if (String(radObj[p].value)==String(radVal) && radObj[p].checked){
			res=true;
		}
	}
	return res;
}

function radioListChecked_func(radGroupName){ // Checks if a radiobox group is checked
	radChecked=false;
	radObj = document.forms[0][radGroupName];
	l = radObj.length;
	for(i=0;i<l;i++){
		if (radObj[i].checked){
			radChecked=true;
		}
	}
	return radChecked;
}

function radSelIndex_func(radObj){ // Checks whether the radiobox group has is checked on the given value
	var radIndex=-1;
	radL = radObj.length;
	for(p=0;p<radL;p++){
		if (radObj[p].checked){
			radIndex=p;
		}
	}
	return radIndex;
}

// *************************** //



function showloader_func(){
	document.getElementById('loading').innerHTML = 'Loading....please wait.';
	scroll(0, 0);
	var windowHeight = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight;
	scroll(0, 0);
	loaderObj = document.getElementById('loader');
	loaderObj.style.visibility='visible';
	loaderObj.style.position='fixed';
	loaderObj.style.width=document.body.clientWidth+'px';
	loaderObj.style.height=windowHeight+'px';

	loaderObj = document.getElementById('loaderbg');
	loaderObj.style.width=document.body.clientWidth+'px';
	loaderObj.style.height=windowHeight+'px';
	loaderObj.style.visibility='visible';
	loaderObj.style.position='fixed';
}

var sbmitAttempts = 0;
function showErrors_func(){
	if (sbmitAttempts > 10){		
		document.forms[0].forcederr.value=1;
		document.getElementById('loading').innerHTML = 'Loading....please wait.';
		window.setTimeout("document.forms[0].submit()", 200);
	} else {
		if (document.getElementById('errorsTxt')){
			document.getElementById('errorsTxt').innerHTML = "<img src=\"images/icon_no.gif\" alt=\"Error\" title=\"Error\" align=\"middle\" /> ERRORs: You must answer all questions highlighted in red."
			document.getElementById('errorsTxt').style.position='relative';
			document.getElementById('errorsTxt').style.backgroundColor='#ffffff';
			document.getElementById('errorsTxt').style.padding='5px';
			//scroll(0, 0);
			alert("The are errors with your answers.\nPlease see complete/amend all questions in red.")
			sbmitAttempts++;
		} else {
			alert("errorsTxt object does not exist on the page!");
		}
	}
}

function showQErr_func(Qno, hasError){ // Qno must include zero prefix if less than 10
	var qObj = document.getElementById('qbox'+Qno);
	if (!qObj){
		alert("Question number:"+Qno+" does not exist!");
	} else {
		if (hasError == 1){
			submitErrors=1;
			//setStyle_func(qObj,'color', 'red');
			errArry.push(Qno);
		} else {
			//setStyle_func(qObj,'color', '#00512f');
		}
		var divsObj = qObj.getElementsByTagName("div");
		for(d=0;d<divsObj.length;d++){
			if (divsObj[d].className == "qno" || divsObj[d].className == "qtitle"){
				if (hasError == 1){
					setStyle_func(divsObj[d],'backgroundColor', '#f83333');
				} else {
					setStyle_func(divsObj[d],'backgroundColor', '');
				}
			}
		}			
	}
}

function sendmlHttpRequest(url,callback,postdata) {	
	var xmlhttp=false;
	try  {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); /* for IE < 5 */
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
		}
	}

	/* mozilla & opera */
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest();
	}

	xmlhttp.open("POST",url,true);
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
	xmlhttp.onreadystatechange=function() {
		if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			callback(xmlhttp.responseText);
			//alert(xmlhttp.responseText);
		} else if(xmlhttp.readyState == 4 && xmlhttp.status != 200) {
			alert("Error:\n"+xmlhttp.error);
		}
	}
	xmlhttp.send(postdata); /* are sending null because we dont have any data to post */
}