var MaxForms=Class.create();MaxForms.prototype={initialize:function(ctnFormClass,fieldClass,errorClass,errorMsgClass,hideClass,hoverClass,disabledClass,errorBox,errorBoxMsg){this.ctnFormClass=ctnFormClass;this.fieldClass=fieldClass;this.errorClass=errorClass;this.errorMsgClass=errorMsgClass;this.hideClass=hideClass;this.hoverClass=hoverClass;this.disabledClass=disabledClass;this.errorBox=errorBox;this.errorBoxMsg=errorBoxMsg;this.ctns=document.getElementsByClassName(ctnFormClass);this.setValidateType('afterFirstSubmit');},initAllForms:function(){for(var i=0;i<this.ctns.length;i++){var ctn=this.ctns[i];this.initForm(ctn);}},initFormatForms:function(){for(var c=0;c<this.ctns.length;c++){var ctn=$(this.ctns[c]);var format_postalCode_els=ctn.getElementsByClassName("format_postalCode");for(var i=0;i<format_postalCode_els.length;i++){format_postalCode(format_postalCode_els[i]);}
var format_phone_els=ctn.getElementsByClassName("format_phone");for(var i=0;i<format_phone_els.length;i++){format_phone(format_phone_els[i]);}
var format_number_els=ctn.getElementsByClassName("format_number");for(var i=0;i<format_number_els.length;i++){format_number(format_number_els[i]);}}},initForm:function(ctn){var ctn=$(ctn);var form=$(ctn.getElementsByTagName("form")[0]);ctn.style.display='block';form.errorBox=($(ctn.getElementsByClassName(this.errorBox)[0]))?$(ctn.getElementsByClassName(this.errorBox)[0]):false;form.errorBoxMsg=($(ctn.getElementsByClassName(this.errorBoxMsg)[0]))?$(ctn.getElementsByClassName(this.errorBoxMsg)[0]):false;form.errors=0;form.errorMessages=new Array();this.setFormErrors(form);Event.observe(form,'submit',this.onSubmitForm.bindAsEventListener(this,form));form.fields=form.getElementsByClassName(this.fieldClass);for(var i=0;i<form.fields.length;i++){var field=$(form.fields[i]);this.initField(form,field);}},initField:function(form,field){var errorMsgs=field.getElementsByClassName(this.errorMsgClass);for(var z=0;z<errorMsgs.length;z++){var errorMsg=$(errorMsgs[z]);errorMsg.addClassName(this.hideClass);}
field.clientInput=field.getElementsBySelector('input','select','textarea')[0];field.clientInput.field=field;Event.observe(field.clientInput,'focus',this.onFocusField.bindAsEventListener(this,form,field));Event.observe(field.clientInput,'blur',this.onBlurField.bindAsEventListener(this,form,field));},submitForm:function(event,form){},checkToSubmitForm:function(event,form){if(this.validForm(form)){this.submitForm(event,form);}else{event.stop();}},validForm:function(form){for(var i=0;i<form.fields.length;i++){var field=$(form.fields[i]);this.setFieldErrors(form,field);}
this.setFormErrors(form);if(form.errors===0)return true;else return false;},setFormErrors:function(form){if(form.errorBox===false)return;form.errorBoxMsg.innerHTML='';if(form.errors===0)form.errorBox.addClassName("hide");else form.errorBox.removeClassName("hide");for(var i=0;i<form.errorMessages.length;i++){form.errorBoxMsg.innerHTML+=form.errorMessages[i];}},setFieldErrors:function(form,field){if(this.validateType=="afterFirstSubmit")return;if(field.disabledValid==true)return;var valid=this.validField(field.clientInput);if(valid===true)field.removeClassName(this.errorClass);else field.addClassName(this.errorClass);var errorMsgs=field.getElementsByClassName(this.errorMsgClass);for(var z=0;z<errorMsgs.length;z++){var errorMsg=$(errorMsgs[z]);if(errorMsg.hasClassName(valid)){this.addFormError(form,errorMsg.innerHTML);errorMsg.removeClassName(this.hideClass);}else{errorMsg.addClassName(this.hideClass);}}},disableField:function(el){var field=this.returnField(el);field.clientInput.disabled=true;field.addClassName(this.disabledClass);},enableField:function(el){var field=this.returnField(el);field.clientInput.disabled=false;field.removeClassName(this.disabledClass);},disableValidation:function(el){var field=this.returnField(el);field.disabledValid=true;},enableValidation:function(el){var field=this.returnField(el);field.disabledValid=false;},returnField:function(el){var nodeName=el.nodeName.toLowerCase();if(nodeName=='input'||nodeName=='select'||nodeName=='textarea'){var field=el.field;}else{var field=field;}
return field;},resetFormErrors:function(form){form.errors=0;form.errorMessages=new Array();},addFormError:function(form,msg){form.errors++;form.errorMessages.push(msg);},setValidateType:function(validateType){if(validateType=='onChange'){this.validateType='onChange';}else{this.validateType='afterFirstSubmit';}},validField:function(inp){if(inp.className.indexOf("valid_required")!=-1){if(!valid_required(inp.value))return"valid_required";}
if(inp.className.indexOf("valid_postalCode")!=-1){if(!valid_postalCode(inp.value))return"valid_postalCode";}
if(inp.className.indexOf("valid_email")!=-1){if(!valid_email(inp.value))return"valid_email";}
if(inp.className.indexOf("valid_numeric")!=-1){if(!valid_numeric(inp.value))return"valid_numeric";}
if(inp.className.indexOf("valid_atLeast1digit")!=-1){if(!valid_atLeast1digit(inp.value))return"valid_atLeast1digit";}
if(inp.className.indexOf("valid_phone")!=-1){if(!valid_phone(inp.value))return"valid_phone";}
if(inp.className.indexOf("valid_checked")!=-1){if(inp.checked!=true)return"valid_checked";}
if(inp.className.indexOf("sameValueAs_@")!=-1){var startSubString=inp.className.indexOf("sameValueAs_@");var string=inp.className.substring(startSubString);var param1=string.split('@')[1];var param1=param1.split(' ')[0];if(!valid_sameValueAs(inp.value,param1))return"sameValueAs";}
if(inp.className.indexOf("notSameValueAs_@")!=-1){var startSubString=inp.className.indexOf("notSameValueAs_@");var string=inp.className.substring(startSubString);var param1=string.split('@')[1];var param1=param1.split(' ')[0];if(!valid_notSameValueAs(inp.value,param1))return"notSameValueAs";}
if(inp.className.indexOf("greaterCalendarDateThan_@")!=-1){var startSubString=inp.className.indexOf("greaterCalendarDateThan_@");var string=inp.className.substring(startSubString);var param1=string.split('@')[1];var param1=param1.split(' ')[0];if(!valid_greaterCalendarDateThan(inp,param1))return"greaterCalendarDateThan";}
if(inp.className.indexOf("valid_minChar_@")!=-1){var startSubString=inp.className.indexOf("valid_minChar_@");var string=inp.className.substring(startSubString);var param1=string.split('@')[1];var param1=param1.split(' ')[0];if(!valid_minChar(inp.value,param1))return"valid_minChar";}
return true;},onSubmitForm:function(event,form){if(this.validateType=='afterFirstSubmit')this.validateType="onChange";this.resetFormErrors(form);this.checkToSubmitForm(event,form);},onFocusField:function(event,form,field){field.addClassName(this.hoverClass);},onBlurField:function(event,form,field){field.removeClassName(this.hoverClass);this.resetFormErrors(form);this.validForm(form);}};function valid_phone(str){if(str=='')return true;rx=/^(\+?\d{1,3})?[-\s\.]?(\(\d{3}\)|\d{3})[-\s\.]?\d{3}[-\s\.]?\d{4}(([-\s\.]|(\s?(x|ext\.?)))\d{1,5})?$/i;exp=new RegExp(rx);if(str.match(exp)==null)return false;else return true;}
function valid_email(str){if(str=='')return true;rx=/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)*\.\w{2,8}$/;exp=new RegExp(rx);if(str.match(exp)==null)return false;else return true;}
function valid_postalCode(str){if(str=='')return true;rx=/^[a-z]\d[a-z]\s?\d[a-z]\d$/i;exp=new RegExp(rx);if(str.match(exp)==null)return false;else return true;}
function valid_numeric(str){if(str=='')return true;rx=/^(\d*)$/;exp=new RegExp(rx);if(str.match(exp)==null)return false;else return true;}
function valid_required(str){if(str==""||str==" ")return false;else return true;}
function valid_sameValueAs(str,compareId){if(!$(compareId))return false;else if(str!=$(compareId).value)return false;else return true;}
function valid_notSameValueAs(str,compareId){if(!$(compareId))return true;else if(str==$(compareId).value)return false;else return true;}
function valid_greaterCalendarDateThan(id,compareId){if(!$(compareId))return true;else{var diffDays=makeDateFromCalendar(id)-makeDateFromCalendar($(compareId));diffDays/=(60*60*24*1000);if(diffDays>0)return true;else return false;}}
function valid_atLeast1digit(str){rx=/[\d*]/;exp=new RegExp(rx);if(str.match(exp)==null)return false;else return true;}
function valid_minChar(str,minChar){if(str.length<minChar)return false;else return true;}
function format_next(input,param1){input.param1=param1;input.onkeyup=function(){if(this.value.length>=this.getAttribute("maxlength")){var nextField=$(this.param1);nextField.focus();}}}
function format_number(input){input.onkeyup=input.onkeydown=function(){var newNumber=new String();for(var i=0;i<this.value.length;i++){newNumber+=(isNumber(this.value,i))?this.value.charAt(i):'';}
this.value=newNumber;}}
function format_postalCode(input){input.onkeyup=input.onkeydown=function(){var c0=(isLetter(this.value,0))?this.value.charAt(0):'';var c1=(isNumber(this.value,1))?this.value.charAt(1):'';var c2=(isLetter(this.value,2))?this.value.charAt(2):'';var c3=(this.value.charAt(2)&&this.value.charAt(3))?' ':'';var c4=(isNumber(this.value,4))?this.value.charAt(4):(Number(this.value.charAt(3)))?this.value.charAt(3):'';var c5=(isLetter(this.value,5))?this.value.charAt(5):'';var c6=(isNumber(this.value,6))?this.value.charAt(6):'';this.value=(c0+c1+c2+c3+c4+c5+c6).toUpperCase();}}
function isLetter(str,charNum){if(!str.charCodeAt(charNum))return false;if((str.charCodeAt(charNum)>=65&&str.charCodeAt(charNum)<=90)||(str.charCodeAt(charNum)>=97&&str.charCodeAt(charNum)<=122)){return true;}else{return false;}}
function isNumber(str,charNum){if(!str.charAt(charNum))return false;if(valid_numeric(str.charAt(charNum))){return true;}else{return false;}}
function format_phone(input){input.onkeyup=input.onkeydown=function(){var c0=(isNumber(this.value,0))?this.value.charAt(0):'';var c1=(isNumber(this.value,1))?this.value.charAt(1):'';var c2=(isNumber(this.value,2))?this.value.charAt(2):'';var c3=(this.value.charAt(2)&&this.value.charAt(3))?'-':'';var c4=(isNumber(this.value,4))?this.value.charAt(4):(Number(this.value.charAt(3)))?this.value.charAt(3):'';var c5=(isNumber(this.value,5))?this.value.charAt(5):'';var c6=(isNumber(this.value,6))?this.value.charAt(6):'';var c7=(this.value.charAt(6)&&this.value.charAt(7))?'-':'';var c8=(isNumber(this.value,8))?this.value.charAt(8):(Number(this.value.charAt(7)))?this.value.charAt(7):'';var c9=(isNumber(this.value,9))?this.value.charAt(9):'';var c10=(isNumber(this.value,10))?this.value.charAt(10):'';var c11=(isNumber(this.value,11))?this.value.charAt(11):'';this.value=(c0+c1+c2+c3+c4+c5+c6+c7+c8+c9+c10+c11);}}
function makeDateFromCalendar(el){var calendarValue=el.value;calendarValue=calendarValue.split("-");var year=Number(calendarValue[0]);var month=Number(calendarValue[1])-1;var day=Number(calendarValue[2]);var myDate=new Date(year,month,day);return myDate;}