//form validation by John Mernick

var requiredFields = new Array();
var errorFields = new Array();
var displayCheck = false;
var firstRun = true;
function setRequiredFields (rfoe) {
  if(rfoe){
	for (x=0; x<requiredFields.length; x++) { 
	  if (requiredFields[x].getAttribute('name')=="agree" && BrowserDetect.browser != 'Explorer') {
        document.getElementById('agree_div').className = "required";
	  } else {
		requiredFields[x].className = "required";
	  }
	}
  }else{
	for (x=0; x<requiredFields.length; x++) { 
	  if (requiredFields[x].getAttribute('name')=="agree" && BrowserDetect.browser != 'Explorer') {
        document.getElementById('agree_div').className = "";
	  } else {
	    requiredFields[x].className = "";
	  }
	}
	for (x=0; x<errorFields.length; x++) { 
	  if (errorFields[x].getAttribute('name')=="agree" && BrowserDetect.browser != 'Explorer') {
        document.getElementById('agree_div').className = "required";
	  } else {
	    errorFields[x].className = "required";
	  }
	}	 
  }
}

var inp1 = null;
function validateForm (formObject, displayCheck, microForm) {
	if(firstRun==true){
	var inp1 = document.createElement('input');
	var randomKey = Math.random();
	inp1.setAttribute("id", "ensurzeBz");
	inp1.setAttribute("name", "ensurzeBz");
	inp1.setAttribute("value", randomKey);
	inp1.type = "hidden";
	formObject.appendChild(inp1);
	}
	
  if(firstRun==false)setRequiredFields(true);
  errorFields = new Array();
  if(typeof FormResources=='undefined')return true;
  
  var elemValue, elemName, FormResource, elemType, errorText,tempEmail;
  var requiredField = false;
  var errors = new Array();
  for (x=0; x<formObject.length; x++) { 
      errorText = "";
	  this.formElement = formObject.elements[x];
	  requiredField = (this.formElement.className == 'required' || this.formElement.getAttribute('required') == 'true')? true : false;
		if(requiredField){
		  elemName = this.formElement.getAttribute('name');
		  FormResource = FormResources[elemName+"_error"];
		  elemType = (this.formElement.getAttribute('type'))? this.formElement.getAttribute('type') : this.formElement.type;
		  elemValue =	this.formElement.value;
			if(elemName == 'email')tempEmail = elemValue;
			if ((elemName == 'email' || elemName == 'email_confirm' || this.formElement.getAttribute('email') == 'true') && isNotEmpty(elemValue) && !checkEmail(elemValue)) {
			  errorText = FormResources[elemName+'_invalid'];
			} else if (elemName == 'email_confirm' && isNotEmpty(elemValue) && isNotEmpty(tempEmail) && elemValue != tempEmail) {
			  errorText = FormResources['email_mismatch'];
		  } else if(elemName == 'zip' && (this.formElement.getAttribute('locale')=='en_CA' || this.formElement.getAttribute('locale')=='fr_CA') && elemValue.length<6) {
				errorText = FormResources[elemName+'_invalid'];
			} else if (elemType == 'textarea' && !isNotEmpty(elemValue)) {
			  errorText = (formObject.name == 'bodyshop' || formObject.name == 'service')? FormResources[formObject.name+"_"+elemName] : FormResource; 
			} else if (elemName.substring(0,9)=="co-signer") {
				if(isDOM('cosigner') && !isNotChecked(getElem('cosigner')) && !isNotEmpty(elemValue)){
				FormResource = FormResources[elemName.substring(0,2)+elemName.substring(3,elemName.length)+"_error"];
				errorText = FormResource;
				}
			} else if (elemType == 'text' && !isNotEmpty(elemValue) || 
					  (elemType == 'checkbox' && isNotChecked(this.formElement)) || 
			          (elemType == 'select-one' && isNotSelected(this.formElement))) {
			  if (!errorText)
			  errorText = (elemName != 'agree')? FormResource : FormResources['agree_error'];
			}
			if(firstRun){
			requiredFields.push(this.formElement);
			}
			if(errorText){
              errorFields.push(this.formElement);
			  errors.push(errorText);
			}
		}
	}
  firstRun = false;
	setRequiredFields(false);
	if (errors.length>0 && !displayCheck) {
      
		var errDiv = (microForm)?'MFErrors':'errors';
		var errListDiv = (microForm)?'MFEList':'errorsList';
			
	  if(isDOM(errDiv))if(!isDOM(errListDiv))getElem(errDiv).innerHTML+='<ul id="' + errListDiv + '"></ul>';

	  if(isDOM(errListDiv))getElem(errListDiv).innerHTML = '';
	  
	  var errorHTML = "";
	  for (errorIndex=0; errorIndex < errors.length; errorIndex++) { 
	    errorHTML += "<li>&nbsp;"+ errors[errorIndex] +"</li>";
	  }
	  if(isDOM(errListDiv))getElem(errListDiv).innerHTML = errorHTML;
	  var scrollTop = getElem(errListDiv).offsetTop;
	  scrollTop = (scrollTop>100)? scrollTop : 0 ;
	  if(isDOM('overlay')=='false')window.scrollTo(0,scrollTop);
	  return false;
  } else {
  return true;
  }	
}
window.onload = function(){if(BrowserDetect.browser != 'Explorer' && document.getElementById('agree_div'))document.getElementById('agree_div').className = "required";}