var form_validation={submitClicked:false,errors:false,errorMsg:"",contentErrors:false,contentErrorMsg:"",emailFormatErrorMsg:"",alertMsg:"",errorCount:0,alertRequiredMsg:"Please complete the following fields and resend:",alertInvalidEmail:"Your email address is invalid. Please re-enter a valid email.",alertInvalidField:"The following fields have invalid content. Please re-enter correct information.",formElement:"",emailFormatError:"",regExTransform:"",curForm:"",validate:function(o,r,l){this.emailFormatError=false;this.contentErrors=false;this.regExTransform=/\s/g;this.errorCount=1;this.curForm=l;if(this.submitClicked==true){return false;}else{submitClicked=true;}if($("dealer_information")){$("dealer_information").getFirst().removeClass("required_color_bold");}var s="";var n="";var i=null;for(var q=0;q<o.elements.length;q++){var m=o.elements[q];$(m).getParent().getParent().removeClass("required_color");$(m).removeClass("required_border");switch(m.type){case"text":if((m.required)&&((m.value==null)||this.isBlank(m.value))){this.errors=true;this.errorMsg+='<span class="required_color">'+m.required+"</span> ";$(m).getParent().getParent().addClass("required_color");}else{m.value=m.value.replace(this.regExTransform," ");switch(m.subtype){case"email":if(!this.isValidEmail(m.value)){this.emailFormatError=true;this.emailFormatErrorMsg+='<span class="required_color">'+(m.required?m.required:m.label)+"</span> ";$(m).getParent().getParent().addClass("required_color");}break;case"zipcode":if(!this.isZipCode(m.value)){this.contentErrors=true;this.contentErrorMsg+='<span class="required_color">'+(m.required?m.required:m.label)+"</span> ";$(m).getParent().getParent().addClass("required_color");}break;case"areaCode":n+='<span class="required_color">'+m.label+"</span>";if((m.value.length!=0||m.required)&&(m.value.length!=3||!this.numeric(m.value)||!this.areaCodeValid(m.value))){this.contentErrors=true;this.contentErrorMsg+='<span class="required_color">'+(m.required?m.required:m.label)+"</span> ";$(m).getParent().getParent().addClass("required_color");}else{s+=m.value;i=m;}break;case"phonePrefix":n+='<span class="required_color">'+m.label+"</span>";if((m.value.length!=0||m.required)&&(m.value.length!=3||!this.numeric(m.value)||!this.phonePrefixValid(m.value))){this.contentErrors=true;this.contentErrorMsg+='<span class="required_color">'+(m.required?m.required:m.label)+"</span> ";$(m).getParent().getParent().addClass("required_color");}else{s+=m.value;i=m;}break;case"phoneLineNumber":n+='<span class="required_color">'+m.label+"</span>";if((m.value.length!=0||m.required)&&(m.value.length!=4||!this.numeric(m.value)||!this.phoneLineNbrValid(m.value))){this.contentErrors=true;this.contentErrorMsg+='<span class="required_color">'+(m.required?m.required:m.label)+"</span> ";$(m).getParent().getParent().addClass("required_color");}else{s+=m.value;i=m;}break;case"alphaNum":if(!this.alphaNumeric(m.value)){this.contentErrors=true;this.contentErrorMsg+='<span class="required_color">'+(m.required?m.required:m.label)+"</span> ";$(m).getParent().getParent().addClass("required_color");}break;case"numeric":if(!this.numeric(m.value)){this.contentErrors=true;this.contentErrorMsg+='<span class="required_color">'+(m.required?m.required:m.label)+"</span> ";$(m).getParent().getParent().addClass("required_color");}break;case"validYear":if(!this.validYear(m.value)){this.contentErrors=true;this.contentErrorMsg+='<span class="required_color">'+(m.required?m.required:m.label)+"</span> ";$(m).getParent().getParent().addClass("required_color");}break;case"validMileage":if(!this.validMileage(m.value)){this.contentErrors=true;this.contentErrorMsg+='<span class="required_color">'+(m.required?m.required:m.label)+"</span> ";$(m).getParent().getParent().addClass("required_color");}break;case"vehicle":if(!this.validVehicle(m.value)){this.contentErrors=true;this.contentErrorMsg+='<span class="required_color">'+(m.required?m.required:m.label)+"</span> ";$(m).getParent().getParent().addClass("required_color");}break;default:if(!this.alpha(m.value)){this.contentErrors=true;this.contentErrorMsg+='<span class="required_color">'+(m.required?m.required:m.label)+"</span> ";$(m).getParent().getParent().addClass("required_color");}break;}}break;case"select-one":if((m.required)&&this.isBlank(m.options[m.selectedIndex].value)){this.errors=true;this.errorMsg+='<span class="required_color">'+m.required+"</span> ";$(m).getParent().getParent().addClass("required_color");}break;case"checkbox":if((m.required)&&!this.isCheckboxChecked(o,m.name)){this.errors=true;this.errorMsg+='<span class="required_color">'+m.required+"</span> ";$(m).getParent().getParent().addClass("required_color");}break;case"radio":if((m.required)&&!this.isRadioChecked(o,m.name)){this.errors=true;this.errorMsg+='<span class="required_color">'+m.required+"</span> ";$(m).getParent().getParent().addClass("required_color");}break;}}var p=/^(.)\1+$/;var t=/^5551212$/;if(s!=""&&s.length==10&&(p.test(s.substring(3))||t.test(s.substring(3)))){this.contentErrors=true;this.contentErrorMsg+=n;$(i).getParent().getParent().addClass("required_color");}if(this.curForm=="gaq"||this.curForm=="satd"){if(!dealerConnector.dealerId){this.errors=true;this.errorMsg+='<span class="required_color">Select a Dealer</span> ';$("dealer_information").getFirst().addClass("required_color_bold");}else{$("dealer_information").removeClass("required_border");$("dealer_information").getFirst().removeClass("required_color_bold");}}if(this.errors){this.alertMsg+='<div id="defaultErrors">'+this.errorCount+".) "+this.alertRequiredMsg+"<br /></div>";this.alertMsg+=this.errorMsg;this.errorCount++;}if(this.emailFormatError){this.alertMsg+='<div id="emailFormatError">';this.alertMsg+=this.errorCount+".) "+this.alertInvalidEmail+"<br /></div>";this.alertMsg+=this.emailFormatErrorMsg;this.errorCount++;}if(this.contentErrors){this.alertMsg+='<div id="contentErrors">'+this.errorCount+".) "+this.alertInvalidField+"<br /></div>";this.alertMsg+=this.contentErrorMsg;this.errorCount++;}if(this.errors||this.emailFormatError||this.contentErrors){if(l=="gaq"){$(r).setHTML('<div class="form_errors_wrapper"><h1>Get A Quote</h1>'+this.alertMsg+"</div>");form_utils.gaqErrorSlide.slideIn();}else{if(l=="satd"){$(r).setHTML('<div class="form_errors_wrapper"><h1>Schedule a Test Drive</h1>'+this.alertMsg+"</div>");form_utils.gaqErrorSlide.slideIn();}else{if(l=="dealer"){$(r).setHTML('<div class="form_errors_wrapper"><h1>Select a Dealer</h1>'+this.alertMsg+"</div>");form_utils.dealerErrorSlide.slideIn();}else{$(r).setHTML('<div class="form_errors_wrapper">'+this.alertMsg+"</div>");}}}submitClicked=false;this.errors=false;this.errorMsg="";this.emailFormatError=false;this.emailFormatErrorMsg="";this.contentErrors=false;this.contentErrorMsg="";this.alertMsg="";return false;}else{if(l=="gaq"||l=="satd"){form_utils.gaqErrorSlide.slideOut();}else{if(l=="dealer"){form_utils.dealerErrorSlide.slideOut();}}this.errorCount=1;return true;}},areaCodeValid:function(d){var c=/^[2-9]{1}[0-9]{1}[0-9]{1}$/;return c.test(d);},phonePrefixValid:function(d){var c=/^[2-9]{1}[0-9]{1}[0-9]{1}$/;return c.test(d);},phoneLineNbrValid:function(d){var c=/^[0-9]{1}[0-9]{1}[0-9]{1}[0-9]{1}$/;return c.test(d);},zipCodeCapture:function(b){if(b.value==""){b.value=defaultZipCodeValue;}if(this.isZipCode(b.value)&&document.findDealer.zipcode.value==""&&document.findDealer.city.value==""&&document.findDealer.state.value==""&&document.findDealer.dealername.value==""){document.findDealer.zipcode.value=b.value;dealerConnector.zip=b.value;if(!form_utils.selectedDealer){dealerConnector.submitFindDealer(document.findDealer);}}},isBlank:function(c){if(c.length>0){for(var e=0;e<c.length;e++){var f=c.charAt(e);if((f!=" ")&&(f!="\n")&&(f!="\t")){return false;}}}return true;},isValidChar:function(d){formtext=d.toString();for(var e=0;e<formtext.length;e++){var f=formtext.charAt(e);if(f>"~"||f<" "){return false;}}return true;},isCheckboxChecked:function(f,d){for(var e=0;e<f.elements.length;e++){formElem=f.elements[e];if(formElem.type=="checkbox"&&formElem.name==d&&formElem.checked){return true;}}return false;},isRadioChecked:function(f,d){for(var e=0;e<f.elements.length;e++){formElem=f.elements[e];if(formElem.type=="radio"&&formElem.name==d&&formElem.checked){return true;}}return false;},isValidEmail:function(b){regEx1=/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;regEx2=/^([a-zA-Z0-9_\-\.]+)@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;regEx3=/^(www\.).+$/;return(b.length>0)?(!regEx1.test(b)&&regEx2.test(b)&&!regEx3.test(b,"i")):true;},isZipCode:function(b){regEx1=/^\d{5}$|^\d{9}$|^\d{5}-\d{4}$/;if((b.length>0)&&(!regEx1.test(b))){return false;}else{return true;}},numeric:function(b){regEx=/[^0-9\s\-\'\.]/;if(isNaN(b)||b.match(" ")){return false;}else{return true;}},validMileage:function(b){regEx=/[^0-9\s\-\']/;if(isNaN(b)||b.match(" ")||regEx.test(b)){return false;}else{return true;}},alphaNumeric:function(b){regEx=/[^A-Za-z0-9\s\-\'\.]/;if((b.length>0)&&(regEx.test(b))){return false;}else{return true;}},alpha:function(b){regEx=/[^A-Za-z\s\-\']/;if((b.length>0)&&(regEx.test(b))){return false;}else{return true;}},emailValid:function(b){regEx1=/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;regEx2=/^([a-zA-Z0-9_\-\.]+)@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;regEx3=/^(www\.).+$/;return(b.length>0)?(!regEx1.test(b)&&regEx2.test(b)&&!regEx3.test(b,"i")):true;},validYear:function(b){if((b.length<4&&b.length>0)||isNaN(b)){return false;}else{return true;}},validVehicle:function(b){if(b.length<2){return false;}else{return true;}}};
