function Validator(form,errorMsg,errorMarker,inline){this.validation=new Array();this.errors=new Array();this.form=document.forms[form];this.errorMsg=errorMsg;this.errorFocused=false;this.skipPass=false;this.errorMarker=(typeof errorMarker=="undefined")?null:errorMarker;this.inline=(typeof inline=="undefined")?true:inline;this.validation=eval(form)}Validator.prototype.validate=function(){this.errorFocused=false;this.resetErrors();for(var i=0;i<this.validation.length;i++){if(this.skipPass&&this.form[this.validation[i].field].type=="password"){continue}else{this.skipPass=false}if(this.validation[i].method){var argumentList=new Array();this.validationObject=this.validation[i];if(this.validationObject.params!=undefined){for(var j=0;j<this.validationObject.params.length;j++){argumentList.push(this.validationObject.params[j])}}error=eval("this."+this.validationObject.method).apply(this,argumentList);if(error){this.errors.push({"error":error,"field":this.validationObject.field});if(!this.inline){return this.errors}}}}if(this.errors.length==0){var ajaxErrors=document.getElementsByClassName("errorShow");for(var i=0;i<ajaxErrors.length;i++){ajaxErrors[i].style.display="none"}ajaxErrors=document.getElementsByClassName("errorShow2");for(i=0;i<ajaxErrors.length;i++){ajaxErrors[i].style.display="none"}return true}else{return false}};Validator.prototype.setValidation=function(validation){this.validation=eval(validation)};Validator.prototype.displayError=function(){var parent=this.form[this.validationObject.field].parentNode;var errorMsg=[];var errorMarker=[];for(var i=0;i<5;i++){errorMsg=document.getElementsByClassName(this.errorMsg,parent);if(errorMsg.length>0){break}parent=parent.parentNode}parent=this.form[this.validationObject.field].parentNode;if(this.errorMarker){for(var i=0;i<5;i++){errorMarker=document.getElementsByClassName(this.errorMarker,parent);if(errorMarker.length>0){break}parent=parent.parentNode}}if(errorMsg.length>0){if(this.inline){errorMsg[0].style.display="block";if(!this.errorFocused){this.form[this.validationObject.field].focus();errorMsg[0].focus();this.errorFocused=true}if(errorMarker.length>0){errorMarker[0].style.visibility="visible"}}else{alert(errorMsg[0].innerHTML)}return errorMsg[0].innerHTML}else{return"There was a validation error on '"+this.validationObject.field+"' but no message was defined"}};Validator.prototype.displayErrorAlternate=function(){this.skipPass=true;var alt=$("errorAlternate");var parent=this.form[this.validationObject.field].parentNode;var errorMarker=[];if(this.errorMarker){for(var i=0;i<5;i++){errorMarker=document.getElementsByClassName(this.errorMarker,parent);if(errorMarker.length>0){break}parent=parent.parentNode}}if(this.inline){alt.style.display="block";if(errorMarker.length>0){errorMarker[0].style.visibility="visible"}}else{alert(alt.innerHTML)}return alt.innerHTML};Validator.prototype.resetErrors=function(){var errorMsg=document.getElementsByClassName(this.errorMsg,this.form);var errorMarker=document.getElementsByClassName(this.errorMarker,this.form);for(var i=0;i<errorMsg.length;i++){Element.hide(errorMsg[i])}for(var i=0;i<errorMarker.length;i++){errorMarker[i].style.visibility="hidden"}this.errors=new Array()};Validator.prototype.isDigit=function(c){return((c>="0")&&(c<="9"))};Validator.prototype.isANumber=function(s){for(var i=0;i<s.length;i++){var c=s.charAt(i);if(!this.isDigit(c)){return false}}return true};Validator.prototype.isEmail=function(s){var i=1;var sLength=s.length;while((i<sLength)&&(s.charAt(i)!="@")){i++}if((i>=sLength)||(s.charAt(i)!="@")){return false}else{i+=2}while((i<sLength)&&(s.charAt(i)!=".")){i++}if((i>=sLength-1)||(s.charAt(i)!=".")){return false}else{return true}};Validator.prototype.validateMemberName=function(){var s=this.form[this.validationObject.field].value;var range=/[-A-Za-z0-9_-]/;for(var i=0;i<s.length;i++){var c=s.charAt(i);if(c.search(range)==-1||i==20){return false}}return true};Validator.prototype.validateTextField=function(maxCount){var fieldValue=this.form[this.validationObject.field].value;if(fieldValue.replace(/\s/g,"").length<1){return this.displayError()}if(maxCount!=undefined){if(this.form[this.validationObject.field].value.length>maxCount){return this.displayError()}}};Validator.prototype.validateOptionalField=function(maxCount){var fieldValue=this.form[this.validationObject.field].value;if(fieldValue.replace(/[\s\r\n]/g,"").length<1){return null}else{var error=this.validateTextField(maxCount);if(error){return error}return null}};Validator.prototype.validateNumber=function(){var fieldValue=this.form[this.validationObject.field].value;if(fieldValue==""||!this.isANumber(fieldValue)){return this.displayError()}return null};Validator.prototype.validateEmail=function(){var fieldValue=this.form[this.validationObject.field].value;if(fieldValue==""){return this.displayError()}if(!this.isEmail(fieldValue)){return this.displayError()}return null};Validator.prototype.duplicateTextField=function(fieldToValidateAgainst,email){var otherFieldValue=this.form[fieldToValidateAgainst].value;var thisFieldValue=this.form[this.validationObject.field].value;if(otherFieldValue!=thisFieldValue){return this.displayError()}return null};Validator.prototype.duplicateEmail=function(fieldToValidateAgainst){var error=this.duplicateTextField(fieldToValidateAgainst);var value=this.form[this.validationObject.field].value;if(error){return error}else{if(!this.isEmail(value)){return this.displayError()}}return null};Validator.prototype.validateCheckbox=function(){if(!this.form[this.validationObject.field].checked){return this.displayError()}return null};Validator.prototype.validateTextFieldThenEmail=function(){var value=this.form[this.validationObject.field].value;if(value==""){return this.displayError()}else{if(this.isEmail(value)){return this.displayErrorAlternate()}}return null};Validator.prototype.validateMemberName=function(){var error=this.validateTextField();if(error){return error}else{var value=this.form[this.validationObject.field].value;var valid="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";for(var i=0;i<value.length;i++){if(valid.indexOf(value.charAt(i))<0){return this.displayError()}}}return null};Validator.prototype.validatePassword=function(){var error=this.validateMemberName();if(error){return error}else{var value=this.form[this.validationObject.field].value;if(value.length<4||value.length>20){return this.displayError()}}return null};Validator.prototype.validateDropDown=function(){var field=this.form[this.validationObject.field];if(field.selectedIndex==0){return this.displayError()}return null};Validator.prototype.validateYear=function(){var error=this.validateNumber();if(error){return error}else{var value=this.form[this.validationObject.field].value;if(value.length!=4){return this.displayError()}}return null};Validator.prototype.validateZipCode=function(){var error=this.validateTextField();if(error){return error}else{var value=this.form[this.validationObject.field].value;if(!this.isANumber(value)){return this.displayError()}}return null}