// 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;

			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;
	
	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;
		}
		
		// alert(formFields[i].value);
		
		// 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 = objForm.getElementsByTagName("FIELDSET");
	for(var i=0; i<formFieldsets.length; i++) {
		if(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) || thisFields[x].value != "") {
					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;
		}
	}
	
	// check other fields must be filled in if chosen
	var title = document.getElementsByName("title")[0];
	var otherTitle = document.getElementsByName("otherTitle")[0];
	
	if(title.value == "Other title" && otherTitle.value == ""){
		alert("Please enter your other title");
		otherTitle.focus();
		return false;
	}
	
	var heard = document.getElementsByName("heard")[0];
	var otherHeard = document.getElementsByName("otherHeard")[0];
	
	if(heard.value == "Other heard" && otherHeard.value == ""){
		alert("Please enter how you heard about Priority");
		otherHeard.focus();
		return false;
	}
	
	var topic = document.getElementById("topicOther");
	var otherTopic = document.getElementsByName("otherTopics")[0];
	
	if(topic.checked == true && otherTopic.value == ""){
		alert("Please enter your other topics");
		otherTopic.focus();
		return false;
	}
	
}