//------------------------------- Rich's Reusable Form Validator --------------------------------------->
// Mark all forms with a class='validate'. Make sure the form has an id as well.
/*------------- begin form validation ----------------*/
function validateLoader() {
	if(!document.getElementsByTagName('form')) return false;
	var formArray = document.getElementsByTagName('form');
	for(i=0; i<formArray.length; i++) {
		if(formArray[i].className.match('validate')) {
			formArray[i].onsubmit = function() {
			return validate(this.id);
			}
		}
	}
}
function validate(formId){
	var submitForm = document.getElementById(formId);
	var fields = submitForm.getElementsByTagName('input');
	var labels = submitForm.getElementsByTagName('label');
	var emptyFields = [];
	var labelArray = [];

	for(n=0;n<labels.length;n++) {  //Sorts labels into two arrays. 1. input elements 2. select elements
		if(!labels[n].className.match('select')) {
			if(labels[n].innerHTML.indexOf('*') == 0) {
				var splitLabel = labels[n].innerHTML.split('*');
				labelArray.push(splitLabel[1]);
			} else if(labels[n].innerHTML.indexOf('*') > 0) {
				var splitLabel = labels[n].innerHTML.split('*');
				labelArray.push(splitLabel[0]);			
			} else {
				labelArray.push(labels[n]);
			}
		}
	}

	for(i=0;i<fields.length;i++){  // Takes all input elements, checks to see if they are required, then checks to see if they are empty
		if(fields[i].className.match('required')){
			if(fields[i].value == '' || fields[i].value == undefined) {
				emptyFields.push(labelArray[i]);
			}
		} 
	}

	if(emptyFields != '' && emptyFields != undefined) { //creates error message for empty fields
		emptyFieldsError = '** Please fill out the following fields: ** <br />'+emptyFields.join('<br />');
	} else {
		emptyFieldsError = '';
	}
	
	var errorBoolean = writeError('emptyFieldsError', emptyFieldsError, submitForm);

	if(emptyFieldsError != '') {
		return false;
	} else {
		submitForm.submit();
		_digiTrack('/conversion' + location.pathname + '/thank you');
	}	
}	

function writeError(pId, error, submitForm) { //tales the paragraph id, and the error message to be written on the page
	var errorBoolean = false;
	if(document.getElementById('errorMessage')) {
		var errorDiv = document.getElementById('errorMessage');
		if(document.getElementById(pId)) {	
			var errorContainer = document.getElementById(pId);
		} else {
			var errorContainer = document.createElement('p');
			errorContainer.setAttribute('id',pId);
			errorDiv.appendChild(errorContainer);
		}	
		if(error == '' || error == undefined) {
			var errorBoolean = false;
			errorDiv.removeChild(errorContainer);
		} else {
			errorContainer.innerHTML = error;
			var errorBoolean = true;
		}
	} else {
		var errorDiv = document.createElement('div');
		errorDiv.setAttribute('id', 'errorMessage');
		errorDiv.style.color = '#ff0000';
		errorDiv.style.fontSize = '12px';
		errorDiv.style.margin = '0 0 5px 10px';
		errorDiv.style.fontStyle = 'italic';
		submitForm.parentNode.insertBefore(errorDiv, submitForm);
		writeError(pId, error, submitForm);
		return false;
	}

	return errorBoolean;	
}

//-------------------------------Add Load Event--------------------------------------->
function addLoadEvent(func){
	var oldonload=window.onload;
	if(typeof window.onload != 'function'){
		window.onload = func;
	}else{
		window.onload = function(){
		oldonload();
		func();
		}
	}
}
addLoadEvent(validateLoader);
/*------------- end form validation ----------------*/