/*
 * Validator for Lithovision 2009 Form.
 * Validates that form fields have been filled out. Can validate radio buttons and  text input.
 * Uses window.onsubmit. To use an onsubmit multiloader, function is initValidator.
 * Not namespaced.
 * HTML:
 * <li>
 * <label for="FirstName">First Name:</label>
 * <input class="reqd text" name="FirstName" type="text" />
 * <span class="errorMessage" id="FirstNameError">Required Field</span>
 * </li>
 * CSS Classes:
 * reqd (denotes a required field)
 * reqd text (optional class to style text fields)
 * inputError (defines background of input field that contains an error)
 * errorMessage (hides the error message in the span next to the error)
 * errorMessageShow (hides the error message in the span next to the error)
 * invalid (styles the label of an invalid field)
 * valid (styles the label of a valid field) 
 */

function initValidator(){
	var formEls = document.getElementsByTagName('form');
	for(var i=0; i<formEls.length; i++){
		formEls[i].onsubmit = function(){
				return validateForm();
		}
	}
}

function validateForm(){
	var isValid = true;
	var inputEls = document.getElementsByTagName('input');
	var labelEls = document.getElementsByTagName('label');
	var spanEls = document.getElementsByTagName('span');
	var errorArray = new Array();
	var errorSpan = null;
	for(var i=0; i<inputEls.length; i++){
		if(inputEls[i].className === 'reqd'||inputEls[i].className === 'reqd text'||inputEls[i].className==='inputError'){
			errorSpan = document.getElementById(inputEls[i].name + 'Error');
			switch(inputEls[i].type){
			case('text'):
				if(inputEls[i].value === ''){
					errorArray.push(inputEls[i].name);
					inputEls[i].className = 'inputError';
					isValid = false;
					if(errorSpan != null){
						errorSpan.className = 'errorMessageShow';
					}
				}else{
					inputEls[i].className = 'reqd text';
					if(errorSpan != null){
						errorSpan.className = 'errorMessage';
					}
				}
				break;
			case('radio'):
				if(inputEls[i].checked === false){
					var theseRadios = document.getElementsByName(inputEls[i].name);
					var radioCheck = false;
					for(var j=0; j<theseRadios.length; j++){
						if(theseRadios[j].checked === true){
							radioCheck = true;
						}
					}
					if(!radioCheck){
						errorArray.push(inputEls[i].name);
						isValid = false;
						if(errorSpan != null){
							errorSpan.className = 'errorMessageShow';
						}
					}
				}
				break;
			}
		}
	}
	for(var k=0; k<labelEls.length; k++){
		if(errorArray.indexOf(labelEls[k].htmlFor)!==-1){
			labelEls[k].className = 'invalid';
		}else{
			labelEls[k].className = "valid";
		}
	}
	return isValid;
}

window.onload = initValidator;