// stk 2007/03/13
function ixFormError(objField, strError) {
	if(objField.getAttribute("message")) {
		alert(objField.getAttribute("message"));
	}
	else {
		switch(strError)
		{
			case "minlength":
				alert("Please enter at least "+objField.getAttribute("minlength")+" characters."); break;
			case "maxlength":
				alert("Please enter less than "+objField.getAttribute("maxlength")+" characters."); break;
			case "email":
				alert("Please enter a valid email address."); break;
			case "number":
				alert("Please enter numbers only."); break;
			case "minval":
				alert("Please enter a number equal to or greater than "+objField.getAttribute("minval")+"."); break;
			case "maxval":
				alert("Please enter a number equal to or less than "+objField.getAttribute("maxval")+"."); break;
			case "hours":
				alert("Please enter your hours that you can work"); break;
				
			default:
				alert("Please complete all required fields."); break;
		}
	}

	objField.focus();
}

function ixCheckForm(objForm, strExtraValidation) {
	var emailRegex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var formFields = objForm.elements;
	var formId = objForm.id;
	
	/* only have hours can work required if looking for part time work */
	if (document.getElementById('available_fulltime') && document.getElementById('hours')) {
		if (!document.getElementById('available_fulltime').checked) {
			if (document.getElementById('hours').value.length < 1) {
				ixFormError(formFields[0], "hours");
				return false;
			}
		}
	}
	
	for(var i=0; i<formFields.length; i++) {
		
		// Check required
		if(formFields[i].getAttribute("required") && ((formFields[i].getAttribute("type") != "checkbox" && formFields[i].value == "") || (formFields[i].getAttribute("type") == "checkbox" && formFields[i].checked == false))) {
			ixFormError(formFields[i], "required");
			return false;
		}
		
		// Check min length
		if(formFields[i].getAttribute("minlength") && formFields[i].value.length < parseInt(formFields[i].getAttribute("minlength"))) {
			ixFormError(formFields[i], "minlength");
			return false;
		}
			
		// Check max length
		if(formFields[i].getAttribute("maxlength") && formFields[i].value.length > parseInt(formFields[i].getAttribute("maxlength"))) {
			ixFormError(formFields[i], "maxlength");
			return false;
		}
		
		// Check validation
		if(formFields[i].getAttribute("validation")) {
			switch(formFields[i].getAttribute("validation").split(":")[0])
			{
				case "regex":
					testRE = new RegExp(formFields[i].getAttribute("regex"));
					if(!formFields[i].value.match(testRE)) {
						ixFormError(formFields[i], "regex");
						return false;
					}
					break;
				
				case "email":
					if(!emailRegex.test(formFields[i].value) && formFields[i].value != "") {
						ixFormError(formFields[i], "email");
						return false;
					}
					break;
					
				case "number":
					if(isNaN(formFields[i].value)) {
						ixFormError(formFields[i], "number");
						return false;
					}
					if(formFields[i].getAttribute("minval") && parseFloat(formFields[i].value) < parseFloat(formFields[i].getAttribute("minval"))) {
						ixFormError(formFields[i], "minval");
						return false;
					}
					if(formFields[i].getAttribute("maxval") && parseFloat(formFields[i].value) > parseFloat(formFields[i].getAttribute("maxval"))) {
						ixFormError(formFields[i], "maxval");
						return false;
					}
					break;
					
				case "match":
					var matchField = formFields[i].getAttribute("validation").split(":")[1];
					if(formFields[i].value != objForm.elements[matchField].value) {
						ixFormError(formFields[i], "match");
						return false;
					}
					break;
			}			
		}
	}
	
	// check required fieldsets (at least one option must be checked)
	var formFieldsets = document.getElementsByTagName("FIELDSET");
	for(var i=0; i<formFieldsets.length; i++) {
		if(formFieldsets[i].getAttribute("form") && formFieldsets[i].getAttribute("form") == formId && formFieldsets[i].getAttribute("required")) {
			
			var thisSetOk = false;
			var thisFields = formFieldsets[i].getElementsByTagName("INPUT");
			for(var x=0; x<thisFields.length; x++) {
				if((thisFields[x].type == "radio" || thisFields[x].type == "checkbox") && thisFields[x].checked == true) {
					thisSetOk = true;
					break;
				}
			}
			
			if(!thisSetOk) {
				ixFormError(formFields[i], "fieldset");
				return false;
			}
		}
	}
	
	// Pass on to extra validation function if specified
	if(strExtraValidation) {
		eval("extraValidationResult = " + strExtraValidation);
		if(extraValidationResult) {
			return true;
		}
		else {
			return false;
		}
	}
}
