<!--
/*
	Preload Images
*/
preloadImages = function() { 
	var args = preloadImages.arguments;
	document.imageArray = new Array(args.length);
	for (var i=0;i<args.length;i++) {
		document.imageArray[i] = new Image;
		document.imageArray[i].src = args[i];
	}
}

/*
	Form subittal processing
*/
submitForm = function(form, action) {
	form.action.value = action;
	var allowBackNext = form.allowBackNext.value;
	var explRequired = form.explRequired.value;
	if (allowBackNext == 'False') {
		if (action != 'Cancel') {
			// Validate multichoice type questions
			if (form.answerSelection) {
				var answerCount = form.totalAnswers.value;
				var answerSelected = false;
				// Loop though all possible anwsers to see if selected
				for (var i=1;i<=answerCount;i++){
					var answer = form['answer_'+i].value;
					if (answer != 0) {
						answerSelected = true;
						if (explRequired == 1) { // Is an explanation required
							// Trim leading/trailing spaces from explanation
							var explanation = form['explanation_'+i].value.replace(/(^\s+)|(\s+$)/g,'');
							if (explanation == '') {
								alert('Please provide an explanation for selected answers.');
								form['explanation_'+i].focus();
								return false;
							}
						}
					}
				}
				if (!answerSelected) { // No answer has been selected
					alert("Please select an answer.");
					return false;
				}
			}
			if (!validate(form)) { // Standard form validation
				return false;
			}
		}
	} else if (form.answer_1.value != '' && action != 'Cancel') { // Validate is answer entered
		if (!validate(form)) { // Standard form validation
			return false;
		}
	}
	var nodes = document.all||document.getElementsByTagName('*');
	for (var i=0; i<nodes.length; i++) {
		if (nodes[i].className == 'selectionBox') {
			nodes[i].style.visibility = 'hidden';
		}
	}
	showElement('processing');
	return true;
}
submitReviewForm = function(form, action) {
	form.action.value = action;
	showElement('processing');
	return true;
}

/*
	Question manipulation functions
*/
getElement = function(elementID) {
	var element;
	if (document.getElementById) {
		element = document.getElementById(elementID);
	} else if (document.all) {
		element = document.all[elementID];
	} else if (document.layers) {
		element = document.layers[elementID];
	}
	return element;
}
elementStyle = function(elementID) {
	var styleProperty = getElement(elementID).style;
	return styleProperty;
}
showElement = function(elementID) {
	elementStyle(elementID).display = '';
}
hideElement = function(elementID) {
	elementStyle(elementID).display = 'none';
}
boldAnswer = function(elementID) {
	elementStyle(elementID).fontWeight = 'bold';
}
unBoldAnswer = function(elementID) {
	elementStyle(elementID).fontWeight = '';
}
selectArea = function(elementID) {
	elementStyle(elementID).border = '2px solid #006600';
	elementStyle(elementID).background = '#00FF00';
}
unSelectArea = function(elementID) {
	elementStyle(elementID).border = '2px solid #FFFF00';
	elementStyle(elementID).background = 'url("/images/questionnaire/transparent_pixel.gif")';
}
showMedia = function(mediaFile) {
	var nodes = document.all||document.getElementsByTagName('*');
	for (var i=0; i<nodes.length; i++) {
		if (nodes[i].className == 'selectionBox') {
			nodes[i].style.visibility = 'hidden';
		}
	}
	showElement('mediaPod');
}
hideMedia = function(mediaFile) {
	hideElement('mediaPod');
	var nodes = document.all||document.getElementsByTagName('*');
	for (var i=0; i<nodes.length; i++) {
		if (nodes[i].className == 'selectionBox') {
			nodes[i].style.visibility = 'visible';
		}
	}
}

/*
	Validate function scans for input fields with matching [fieldname].validate hidden fields
	Value argument of the hidden field is used for the error feedback message
	Alt argument is used for [text/numeric/email/password];[focus/select/none];[predecessor];[predecessor type]
	Size argument is used to set the minimum characters required *Set as 1 for default any size
	Version: 2.10
*/
validate = function(form) {
	for(var i=0;i<form.length;i++) {
		var obj = form.elements[i];
		if (obj.type != 'hidden') {
			var objName = obj.name;
			var vObj = form[objName+'.validate'];
			// Does validation data exist
			if (vObj) {
				var isError = false;
				var message = vObj.value.replace(/\\n/g,'\n');
				var minSize = vObj.size;
				if (minSize < 2) {
					minSize = 0;
				}
				var alt = vObj.alt;
				var actions = new Array();
				var count = 0;
				var index1 = 0;
				var index2 = alt.indexOf('\;');
				while (index2 >= 0) {
					actions[count] = alt.substring(index1,index2);
					index1 = index2+1;
					index2 = alt.indexOf('\;',index1);
					count++;
				}
				actions[count] = alt.substring(index1,alt.length);
				vType	= (actions[0]) ? actions[0] : 'text';
				sType	= (actions[1]) ? actions[1] : 'focus';
				pred	= (actions[2]) ? actions[2] : '';
				pType	= (actions[3]) ? actions[3] : '';
				var doCheck = true;
				if (pred != '') {
					if (pType == 'display') { // Check object have display set to visible
						var styleProperty
						if (document.getElementById) {
							styleProperty = document.getElementById(pred).style;
						} else if (document.all) {
							styleProperty = document.all[pred].style;
						} else if (document.layers) {
							styleProperty = document.layers[pred];
						}
						if (styleProperty.display == 'none') {
							doCheck = false;
						}
					}
					if (pType == 'compare') { // Compare fields
						if (obj.value != form[pred].value) {
							isError = true;
							if (vType == 'password') {
								obj.value = '';
								form[pred].value = '';
								obj = form[pred];
							}
						}
					}
					if (pType.substr(0,1) == '=') { // Check variable equal to value
						var testValue = pType.substr(1);
						if (this[pred] != testValue) {
							doCheck = false;
						}
					}
				}
				if (doCheck) {
					// Trim leading/trailing spaces
					var value = obj.value.replace(/(^\s+)|(\s+$)/g,'');
					// Check if any value has been entered
					if (value == '') {
						isError = true;
					}
					// Check if value is numeric only
					if (vType == 'numeric' && isNaN(value)) {
						isError = true;
						message += '\nThis is a numbers only field.';
					}
					if (value.length < minSize && minSize > 0) {
						isError = true;
						message += '\nYou must enter a minimum of '+minSize+' characters.';
					}
					// Check if value is a valid email address
					var pattern  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
					if (vType == 'email' && !pattern.test(value)) {
						isError = true;
					}
					// Check if checkbox is checked
					if (vType == 'checkbox' && !obj.checked) {
						isError = true;
					}
					// Check if is valid radio selection
					if (obj.type == 'radio') {
						sType = 'none';
						obj = form[obj.name];
						isError = true;
						for (var j=0;j<obj.length;j++) {
							if (obj[j].checked) {
								isError = false;
							}
						}
					}
					// Process errors
					if (isError) {
						alert(message);
						if (sType == 'select') {
							obj.select();
						} else if (sType != 'none') {
							obj.focus();
						}
						return false;
					}
				}
			}
		}
	}
	return true;
}
//-->
