// Copyright Harry Botha 2009 - Dumel Systems

function openHighslideWindow(argWidth, argHeight, argUrl) {
	
	var hiddenHighslideLink = document.createElement("A");
	hiddenHighslideLink.style.display = "none";
	hiddenHighslideLink.href = argUrl;
	
	hiddenHighslideLink.onclick = function() {
		return hs.htmlExpand(hiddenHighslideLink, { dimmingOpacity: 0.75, objectType: 'iframe', height: argHeight, width: argWidth } );
	}
	
	var bodyObj = document.getElementsByTagName("BODY")[0];
	bodyObj.appendChild(hiddenHighslideLink);
	hiddenHighslideLink.onclick();

}

function validateForm_cbInvalid(argName, argCbInvalid) {
	
	
}

function validateForm(argForm, argInvasive) {

		var formIsValid = true;
		var invalidFormElements = "";
		var firstInvalidElement = null;
		var invalidInputClassName = "inputInvalid";
		var validInputClassName = "input";
		
		var cbChangeSurroundingLabelClass = true;
		var invalidCBClassName = "cbInvalid";
		var validCBClassName = "";
		
		
		
		var inputObjs = argForm.getElementsByTagName("INPUT");
		
		for (i = 0; i < inputObjs.length; i++) {
	
			var inputObj = inputObjs[i];
			
			if (inputObj.getAttribute("rel")) {
				if (inputObj.getAttribute("rel").indexOf("val") > -1) {
					
					
					
					if (inputObj.getAttribute("rel").split(":")[1] == "text") { // text validation (fields that need something entered
																									
						if (trim12(inputObj.value) == "") {
							formIsValid = false;
							inputObj.value = "";
							
							invalidFormElements += inputObj.getAttribute("rel").split(":")[2] + ",";
							inputObj.className = invalidInputClassName;
							
							if (firstInvalidElement == null) {
								firstInvalidElement = inputObj;
							}
						}
						else {
							inputObj.className = validInputClassName;
						}
						
						inputObj.onblur = function() { validateForm(argForm, false); }
					}
					
					if (inputObj.getAttribute("rel").split(":")[1] == "cb") { // text validation (fields that need something entered
						var allCheckboxes = document.getElementsByName(inputObj.name);
						var anyCheckboxesChecked = false;
						
						for (j = 0; j < allCheckboxes.length; j++) {
							if (allCheckboxes[j].checked)
								anyCheckboxesChecked = true;
								
							allCheckboxes[j].onclick = function() { validateForm(argForm, false); }
						}
						
						if (!anyCheckboxesChecked) {
							
							formIsValid = false;
							invalidFormElements += inputObj.getAttribute("rel").split(":")[2] + ",";
							
							if (firstInvalidElement == null) {
								firstInvalidElement = inputObj;
							}
							
						}
						
						for (j = 0; j < allCheckboxes.length; j++) {
							var tmpCbObj;
							
							if (!cbChangeSurroundingLabelClass)
								tmpCbObj = allCheckboxes[j];
							else 
								tmpCbObj = allCheckboxes[j].parentNode;


							if (anyCheckboxesChecked) // if its valid
								tmpCbObj.className = validCBClassName;									
							else // if its not valid
								tmpCbObj.className = invalidCBClassName;	
								
							

						}
						
						
						// invalidCBClassName  validCBClassName
						//cbChangeSurroundingLabelClass
						
						
					}
					if (inputObj.getAttribute("rel").split(":")[1] == "email") { // email validation (fields that need something entered and valid email)
																									
						if (trim12(inputObj.value) == "") {
							formIsValid = false;
							inputObj.value = "";
							
							invalidFormElements += inputObj.getAttribute("rel").split(":")[2] + ",";
							inputObj.className = invalidInputClassName;
							if (firstInvalidElement == null) {
								firstInvalidElement = inputObj;
							}
						}
						else {

							if (!isValidEmail(inputObj.value)) {
								formIsValid = false;
								
								invalidFormElements += inputObj.getAttribute("rel").split(":")[2] + " (Invalid email address),";
								inputObj.className = invalidInputClassName;
								if (firstInvalidElement == null) {
									firstInvalidElement = inputObj;
								}
							}
							else {
								inputObj.className = validInputClassName;
								
							}
						}

						inputObj.onblur = function() { validateForm(argForm, false); }
					}

					
				}
			}			
		}
		
		
		
		if (invalidFormElements.length > 0) {
			invalidFormElements = invalidFormElements.substr(0, invalidFormElements.length - 1);	
			invalidFormElements = "* " + invalidFormElements.replace(/,/g, "\n* ");
		}
		
		if (!formIsValid && argInvasive) {
			var strInvalMessage = "";
			
			strInvalMessage += "The following fields were not completed:\n\n";
			strInvalMessage += invalidFormElements;
			strInvalMessage += "\n\nPlease ensure these fields are filled out, then try again.";
			firstInvalidElement.focus();
			alert(strInvalMessage);
		}
		

		return formIsValid;
		


}
function isValidEmail(string) {
	if (string.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
		return true;
	else
		return false;
}
function trim12 (str) {
	var str = str.replace(/^\s\s*/, ''), ws = /\s/, i = str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
}
