
var gContextualHelp;var gChangePwdValidation;var gRegValidation;var gCurrentHeight=350;function init(){gCurrentHeaderMenu=gHeaderMenus.join;observeCustomerFormSubmitActions();generateCountryCodesSelectBox();if($('timeToRedirect')){launchRedirect(5,gHeaderUrls.home)}
checkIfEnableUS($('country.countryName'));setBirthdateValidation('birthdate');if($('dSupporterFrame')){gContextualHelp=new ContextualHelp("RegForm");gContextualHelp.setOnlyText(gContextualHelpStrings.fieldsRequired);gPasswordPolicy=new PasswordPolicy();gPasswordPolicy.init($("dSupporterFrame").down(".sError"));}
gRegValidation=new Validation("RegForm",{immediate:false});}
function addExpertise(rowNum,isInit)
{var dExpertise=$('dExpertise');var expertises_length=dExpertise.immediateDescendants().length;if(expertises_length>10)
return;if(rowNum>0)
{if(!validateAddedRow(rowNum))
return;var currentSelect=$('supporterExpertises['+(eval(rowNum)-1)+'].expertise.expertiseId');if(isExpertisePresent(dExpertise,'supporterExpertises[INT].expertise.expertiseId',currentSelect))
return;}
var html='';var exp_options='';var aExpertise=eval(expertise_json);for(var i=0;i<aExpertise.length;i++)
{var oExp=aExpertise[i];exp_options+='<option value="'+oExp.expertiseId+'">'+oExp.expertiseName+'</option>';}
var exp_levels='';var aLevels=eval(levels_json);for(var i=0;i<aLevels.length;i++)
{var oLevel=aLevels[i];exp_levels+='<option value="'+oLevel+'">'+oLevel+'</option>';}
var exp_numyears='';var aNumYears=eval(numOfYears_json);for(var i=0;i<aNumYears.length;i++)
{var oNumY=aNumYears[i];exp_numyears+='<option value="'+oNumY+'">'+oNumY+'</option>';}
var htmlremove='<div class="dRemove" onclick="$(this).up().remove();updateNumberOfExpertise();"><img alt="'+gSignupStrings.remove_expertise+'" src="'+gSignupUrls.remove_btn+'"></div>';if(isInit&&rowNum==0)
htmlremove='<div class="dRemove"></div>';html='<div class="dExpertise_1">'+'<div class="input">'+'<select id="supporterExpertises['+eval(rowNum)+'].expertise.expertiseId" namebase="supporterExpertises[INT].expertise.expertiseId" name="supporterExpertises['+eval(rowNum)+'].expertise.expertiseId" class="sExpertiseName">'+'<option value=""></option>'+exp_options+'</select>'+'</div>'+'<div class="label dProfessionalLevel mandatory">'+gSignupStrings.level+':</div>'+'<div class="input">'+'<select id="supporterExpertises['+eval(rowNum)+'].expertiseLevel" name="supporterExpertises['+eval(rowNum)+'].expertiseLevel" class="sExpertiseLevel">'+'<option value=""></option>'+exp_levels+'</select>'+'</div>'+'<div class="label dProfessionalYears mandatory">'+gSignupStrings.years+':</div>'+'<div class="input">'+'<select id="supporterExpertises['+eval(rowNum)+'].numberOfYears" name="supporterExpertises['+eval(rowNum)+'].numberOfYears" class="sExpertiseYears">'+'<option value=""></option>'+exp_numyears+'</select>'+'</div>'+
htmlremove+'<div style="clear:both"></div>'+'</div>';new Insertion.Bottom(dExpertise,html)
num_of_existing_expertise+=1;}
function validateAddedRow(rowNum)
{var index=parseInt(rowNum)-1;if(!$('supporterExpertises['+index+'].expertise.expertiseId'))
return;if($('supporterExpertises['+index+'].expertise.expertiseId').selectedIndex==0)
{gContextualHelp.setOnlyText(gErrorStrings.product_required)
return false;}
if($('supporterExpertises['+index+'].expertiseLevel').selectedIndex==0)
{gContextualHelp.setOnlyText(gErrorStrings.level_required)
return false;}
if($('supporterExpertises['+index+'].numberOfYears').selectedIndex==0)
{gContextualHelp.setOnlyText(gErrorStrings.experience_required)
return false;}
return true;}
function isExpertisePresent(dList,namebase,currentSelect)
{var selects=$(dList).getElementsBySelector('select');var value=currentSelect.value;var res=false;selects.each(function(oSelect)
{if((oSelect.readAttribute('namebase')==namebase)&&(oSelect.value==value)&&(currentSelect!=oSelect))
{res=true;throw $break;}});return res;}
function submitSupporterForm()
{var oForm=$('RegForm');sendNumberOfExperties(oForm);if(gRegValidation.validate()&&gPasswordPolicy.validatePasswordForPolicy()){oForm.submit();}}
function sendNumberOfExperties(oForm)
{oForm.supporterExpertises.value=num_of_existing_expertise;}
function updateNumberOfExpertise()
{num_of_existing_expertise-=1;var NUMBER_OF_SELECT_IN_ROW=3;var expertiseDiv=$('dExpertise');var selectElements=expertiseDiv.getElementsByTagName('select');for(var i=0;i<selectElements.length;i++)
{switch(i%NUMBER_OF_SELECT_IN_ROW)
{case 0:selectElements[i].id='supporterExpertises['+eval(parseInt(i/NUMBER_OF_SELECT_IN_ROW))+'].expertise.expertiseId';selectElements[i].name='supporterExpertises['+eval(parseInt(i/NUMBER_OF_SELECT_IN_ROW))+'].expertise.expertiseId';break;case 1:selectElements[i].id='supporterExpertises['+eval(parseInt(i/NUMBER_OF_SELECT_IN_ROW))+'].expertiseLevel';selectElements[i].name='supporterExpertises['+eval(parseInt(i/NUMBER_OF_SELECT_IN_ROW))+'].expertiseLevel';break;case 2:selectElements[i].id='supporterExpertises['+eval(parseInt(i/NUMBER_OF_SELECT_IN_ROW))+'].numberOfYears';selectElements[i].name='supporterExpertises['+eval(parseInt(i/NUMBER_OF_SELECT_IN_ROW))+'].numberOfYears';break;case 3:selectElements[i].id='supporterExpertises['+eval(parseInt(i/NUMBER_OF_SELECT_IN_ROW))+'].certification';selectElements[i].name='supporterExpertises['+eval(parseInt(i/NUMBER_OF_SELECT_IN_ROW))+'].certification';break;}}}
function observeCustomerFormSubmitActions(){var submitImgButton=$("submitCustomerFormButton");if(!submitImgButton){return;}
observeAgreeTermsActions();}
function observeAgreeTermsActions(){var agreeTermsCheckbox=$("agreeTerms");if(agreeTermsCheckbox){Event.observe(agreeTermsCheckbox,'click',checkDisableSubmitButton);}}
function checkDisableSubmitButton(){var agreed=$("agreeTerms").checked;var submitImgButton=$("submitCustomerFormButton");if(agreed){disableObject(submitImgButton,false);submitImgButton.removeClassName("disabled");Event.observe(submitImgButton,'click',submitCustomerForm);}else{disableObject(submitImgButton,true);submitImgButton.addClassName("disabled");Event.stopObserving(submitImgButton);}}
function validateCustomerRegisterForm(){var agreeTermsCheckbox=$("agreeTerms");if(agreeTermsCheckbox&&!agreeTermsCheckbox.checked){return false;}
return true;}
function submitCustomerForm()
{if(!validateCustomerRegisterForm()){return;}
var oForm=$('RegForm');oForm.username.value=trim(oForm.username.value);if(gRegValidation.validate()){oForm.submit();}else{setInterval(resizeLeftPanel,250);}}
function resizeLeftPanel()
{if(!$('dSignupLeftBox2'))
return;$('dSignupLeftBox2').style.height=($('dSignupLeftBox2').getHeight()+$('dCustomerFrame').getHeight()-gCurrentHeight)+"px";gCurrentHeight=$('dCustomerFrame').getHeight();}
function ValidateNo(NumStr,String)
{for(var Idx=0;Idx<NumStr.length;Idx++)
{var Char=NumStr.charAt(Idx);var Match=false;for(var Idx1=0;Idx1<String.length;Idx1++)
{if(Char==String.charAt(Idx1))
Match=true;}
if(!Match)
return false;}
return true;}
function getZipCode(zip)
{if(zip.length!=5)
{$('tState').value='';$('tStateHidden').value='';$('tCity').value='';$('tCityHidden').value='';return;}
else if(isNaN(zip))
{gContextualHelp.setOnlyText(gErrorStrings.zip_invalid);return;}
handleZipCode(zip)}
function handleZipCode(zip)
{zipCodeManager.getZipByZipCode(zip,{callback:function(zipObj)
{$('tState').value=zipObj.state.stateName;$('tStateHidden').value=zipObj.state.stateId;$('tCity').value=zipObj.city.cityName
$('tCityHidden').value=zipObj.city.cityId},errorHandler:function(errorString,exception){}})}
function checkIfEnableUS(countrySelect)
{if(!$('customerZip'))
return;var selectedIndex=countrySelect.selectedIndex;if(countrySelect.options[selectedIndex].value=='US')
enableUs();else
disableUs();}
function enableUs()
{$('customerZip').disabled="";$('customerZip').addClassName('profileTextInput');$('customerZip').removeClassName('profileTextInputdisabled');$('dMandatoryZip').show();}
function disableUs()
{$('customerZip').disabled="true";$('customerZip').addClassName('profileTextInputdisabled');$('customerZip').removeClassName('profileTextInput');$('customerZip').value=""
$('tState').value="";$('tStateHidden').value="";$('tCity').value="";$('tCityHidden').value="";$('dMandatoryZip').hide();}
function launchRedirect(nbSec,to)
{$('timeToRedirect').innerHTML=nbSec;if(nbSec==0)
{location.href=to;return;}
window.setTimeout(function(){launchRedirect(nbSec-1,to)},1000);}
function ContextualHelp(formId,movingAreaId,dContextualHelp)
{this.form=$(formId);this.contextualHelp=dContextualHelp?$(dContextualHelp):$('dContextualHelp');if(!this.contextualHelp||!this.form)
return;this.initPosContextualHelp=Position.cumulativeOffset(this.contextualHelp);this.movingArea=movingAreaId?$(movingAreaId):this.form.down(1);var oInputs=$(formId).getElements();oInputs.each(function(oInput){Event.observe(oInput,'click',function(){this.setContextHelpText(oInput);}.bind(this));}.bind(this));oInputs.each(function(oInput){Event.observe(oInput,'focus',function(){this.setContextHelpText(oInput);}.bind(this));}.bind(this));this.fromPos={top:0,left:0};}
ContextualHelp.prototype=new Object;ContextualHelp.prototype.returnToInitPos=function()
{this.contextualHelp.style.left=0;this.contextualHelp.style.top=0;}
ContextualHelp.prototype.setContextHelpText=function(activeInput)
{var pos=activeInput.cumulativeOffset();new Effect.Move(this.contextualHelp,{y:pos[1]-130,mode:'absolute',duration:1,queue:'end'})
var text='';var thisClass=activeInput.className.split(" ",2)[0];if(gContextualHelpStrings[thisClass]&&!gContextualHelpStrings[activeInput.id]){text=gContextualHelpStrings[thisClass]}else{text=gContextualHelpStrings[activeInput.id]}
var finalText=text?text:"";this.setOnlyText(finalText);}
ContextualHelp.prototype.setOnlyText=function(text)
{var dContextualHelpContent=$('dContextualHelpMiddle_Text');if(dContextualHelpContent)
dContextualHelpContent.innerHTML=text;}
var PasswordPolicy=Class.create({initialize:function(){this.passwordMeter=null;this.partnerPolicy=null;this.passedPolicies=[];this.policySizeMap={"":"0%",WEAK:"30%",MEDIUM:"60%",STRONG:"100%"}},init:function(pwdErrorElt){this.pwdErrorElt=pwdErrorElt;var passwordMeter=$("passwordMeter");this.passwordMeterBorder=passwordMeter.down(".border");this.passwordMeterGauge=passwordMeter.down(".image");this.passwordMeterStrength=passwordMeter.down(".strength");},validatePassword:function(password,username,oldPassword){new Ajax.Request(gSignupUrls.validate_password,{parameters:{password:password,username:username,oldPassword:oldPassword},method:"post",onSuccess:function(response){this.partnerPolicy=this.partnerPolicy?this.partnerPolicy:response.responseJSON.partnerPolicy;this.passedPolicies=response.responseJSON.validPolicies;var calculateMeterSize=this.calculateMeterSize(this.passedPolicies);var borderBgd="#FFFFFF";if(calculateMeterSize!="0%"){borderBgd="#EEEEEE";}
new Effect.Parallel([new Effect.Morph(this.passwordMeterGauge,{sync:true,style:'width:'+calculateMeterSize}),new Effect.Morph(this.passwordMeterBorder,{sync:true,style:'background:'+borderBgd})]);this.updatePasswordStrength(this.passedPolicies);}.bind(this)});},retrievePasswordStrength:function(passedPolicies){var passwordStrength="";for(var policy in this.policySizeMap){if(passedPolicies.indexOf(policy)>-1){passwordStrength=policy;}}
return passwordStrength;},calculateMeterSize:function(passedPolicies){var passwordStrength=this.retrievePasswordStrength(passedPolicies);return this.policySizeMap[passwordStrength];},updatePasswordStrength:function(passedPolicies){var passwordStrengthLowerCase=this.retrievePasswordStrength(passedPolicies).toLowerCase();this.passwordMeterStrength.update(passwordStrengthLowerCase);this.passwordMeterStrength.className="strength "+passwordStrengthLowerCase;},validatePasswordForPolicy:function(){if(this.passedPolicies.indexOf(this.partnerPolicy)>-1){this.pwdErrorElt.update();return true;}else{this.pwdErrorElt.update(gCommonErrors.too_weak);return false;}}});var g_Birthdate='';function showError(str,errorField)
{if(!gErrorDivs||!$(gErrorDivs.msg)||!$(gErrorDivs.ui))
{alert(str);return;}
if(str)
{$(gErrorDivs.msg).innerHTML=str;var index=str.indexOf("<br")==-1?str.length:str.indexOf("<br");$(gErrorDivs.msg).title=str.substr(0,index);$(gErrorDivs.ui).show();if(errorField){errorField.focus();}}
else
{$(gErrorDivs.msg).title="";$(gErrorDivs.ui).hide();}}
function validatePhoneNumber(phone,length){if(!length){length=7;}
var isPhoneValid=isPhoneNumberValid(phone);if(length==7&&phone.length<7){return gSessionStrings.call_seven_digit_number_required;}
if(length==10&&length!=phone.length){return gSessionStrings.call_ten_digit_number_required;}
if(!isPhoneValid){return gSessionStrings.call_invalid_number;}
return null;}
function isPhoneNumberValid(phone)
{var len=phone.length;var re=/^\+?\d+([\+\-\.\s]?\d+)*$/;return((phone.match(re)!=null)&&len>=7&&len<=25);}
function setBirthdateValidation(birthdateId)
{var birthdate=$(birthdateId);if(!birthdate)
return;Event.observe(birthdate,'keydown',saveBirthdate)
Event.observe(birthdate,'keyup',checkBirthDate)
g_Birthdate=birthdate.value}
function saveBirthdate(evt)
{var birthdate=Event.element(evt);if(isNumberEvt(evt)||isSlashEvt(evt))
g_Birthdate=birthdate.value}
function checkBirthDate(evt)
{if(evt.ctrlKey||evt.keyCode==13||evt.keyCode==37||evt.keyCode==39)
return true;$('sdateMonth').className="validationNormal"
$('sdateDay').className="validationNormal"
$('sdateYear').className="validationNormal"
var birthdate=Event.element(evt);if(!isDelete(evt)&&!isNumberEvt(evt)&&!isSlashEvt(evt))
{birthdate.value=g_Birthdate
return false}
var currVal=birthdate.value;var mm=currVal.substr(0,2);if(mm.length<2)
{g_Birthdate=birthdate.value
return true}
var iValue=parseFloat(mm);if(!isNumber(iValue)||iValue<1||iValue>12)
{$('sdateMonth').className="validationError"
if(evt.keyCode==8||evt.keyCode==46)
return true;else
{birthdate.value=g_Birthdate
return false}}
if(currVal.length>=3)
{if(currVal.substr(2,1)!='/')
{$('sdateMonth').className="validationError"
if(evt.keyCode==8||evt.keyCode==46)
return true;else
{birthdate.value=g_Birthdate
return false}}}
$('sdateMonth').className="validationOK"
var dd=currVal.substr(3,2);if(dd.length<2)
{g_Birthdate=birthdate.value
return true}
iValue=parseFloat(dd);if(!isNumber(iValue)||dd<1||dd>31)
{$('sdateDay').className="validationError"
if(evt.keyCode==8||evt.keyCode==46)
return true;else
{birthdate.value=g_Birthdate
return false}}
if(currVal.length>=6)
{if(currVal.substr(5,1)!='/')
{$('sdateDay').className="validationError"
if(evt.keyCode==8||evt.keyCode==46)
return true;else
{birthdate.value=g_Birthdate
return false}}}
$('sdateDay').className="validationOK"
var yyyy=currVal.substr(6);if(yyyy.length<4)
{g_Birthdate=birthdate.value
return true}
if(yyyy.length>4)
{$('sdateYear').className="validationError"
if(evt.keyCode==8||evt.keyCode==46)
return true;else
{birthdate.value=g_Birthdate
return false}}
var now=new Date();var thisyear=now.getFullYear();iValue=parseFloat(yyyy);if(!isNumber(iValue)||yyyy<(thisyear-100)||yyyy>thisyear)
{$('sdateYear').className="validationError"
if(evt.keyCode==8||evt.keyCode==46)
return true;else
{birthdate.value=g_Birthdate
return false}}
if(!dateCheck(mm,dd,yyyy))
{if(evt.keyCode==8||evt.keyCode==46)
return true;else
{birthdate.value=g_Birthdate
return false}}
$('sdateYear').className="validationOK"
g_Birthdate=birthdate.value
return true;}
function dateCheck(mm,dd,yyyy)
{var year=parseFloat(yyyy);var month=parseFloat(mm);var day=parseFloat(dd);if(month!='')
{if(month==4||month==6||month==9||month==11)
{if(day>30){showError(gErrorStrings.validation_month)
return false;}}
if(month==2)
{if(parseFloat(year)%4!=0&&day=="29")
{showError(gErrorStrings.validation_feb28)
return false;}
else if(day==30||day==31)
{showError(gErrorStrings.validation_feb29)
return false;}}
return checkAge(year,month,day);}
return false;}
function checkAge(year,month,day)
{month=month-1;var min_age=18;var theirDate=new Date((year+min_age),month,day);var today=new Date;if((today.getTime()-theirDate.getTime())<0){showError(gErrorStrings.age18);return false;}
return true;}
function isNumberEvt(evt){return((evt.keyCode>47&&evt.keyCode<58)||(evt.keyCode>95&&evt.keyCode<106))}
function isDelete(evt){return(evt.keyCode==46||evt.keyCode==8)}
function isSlashEvt(evt){return(evt.keyCode==191||evt.keyCode==111)}
function validateSSN(ssn){if((ssn.length==11)||(ssn.length==9)){var segments=ssn.split("-")
if((segments.length==3)){if((segments[0].length==3)&&(segments[1].length==2)&&(segments[2].length==4)){for(var i=0;i<3;i++){if(isNaN(segments[i]))
return false;}
return true;}}
else{if((segments.length==1)&&(!isNaN(ssn)))
return true;}}
return false;}
var Validator=Class.create();Validator.prototype={initialize:function(className,error,test,options){if(typeof test=='function'){this.options=$H(options);this._test=test;}else{this.options=$H(test);this._test=function(){return true};}
this.error=error||'Validation failed.';this.className=className;},test:function(v,elm){return(this._test(v,elm)&&this.options.all(function(p){return Validator.methods[p.key]?Validator.methods[p.key](v,elm,p.value):true;}));}}
Validator.methods={pattern:function(v,elm,opt){return Validation.get('IsEmpty').test(v)||opt.test(v)},minLength:function(v,elm,opt){return v.length>=opt},maxLength:function(v,elm,opt){return v.length<=opt},min:function(v,elm,opt){return v>=parseFloat(opt)},max:function(v,elm,opt){return v<=parseFloat(opt)},notOneOf:function(v,elm,opt){return $A(opt).all(function(value){return v!=value;})},oneOf:function(v,elm,opt){return $A(opt).any(function(value){return v==value;})},is:function(v,elm,opt){return v==opt},isNot:function(v,elm,opt){return v!=opt},equalToField:function(v,elm,opt){return v==$F(opt)},notEqualToField:function(v,elm,opt){return v!=$F(opt)},include:function(v,elm,opt){return $A(opt).all(function(value){return Validation.get(value).test(v,elm);})}}
var Validation=Class.create();Validation.prototype={initialize:function(form,options){this.options=Object.extend({onSubmit:true,stopOnFirst:false,showOnlyOneErrorForEachField:false,immediate:false,focusOnError:true,useTitles:false,onFormValidate:function(result,form){},onElementValidate:function(result,elm){}},options||{});this.form=$(form);if(this.options.onSubmit)Event.observe(this.form,'submit',this.onSubmit.bind(this),false);if(this.options.immediate){var useTitles=this.options.useTitles;var callback=this.options.onElementValidate;var showOnlyOneErrorForEachField=this.options.showOnlyOneErrorForEachField;Form.getElements(this.form).each(function(input){Event.observe(input,'blur',function(ev){Validation.validate(Event.element(ev),{useTitle:useTitles,onElementValidate:callback,showOnlyOneErrorForEachField:showOnlyOneErrorForEachField});});if(input.type.toLowerCase()=="hidden"){Event.observe(input,'s2Event:blur',function(ev){Validation.validate(Event.element(ev),{useTitle:useTitles,onElementValidate:callback,showOnlyOneErrorForEachField:showOnlyOneErrorForEachField});});}});}},onSubmit:function(ev){if(!this.validate())Event.stop(ev);},validate:function(){var result=false;var useTitles=this.options.useTitles;var callback=this.options.onElementValidate;var showOnlyOneErrorForEachField=this.options.showOnlyOneErrorForEachField;if(this.options.stopOnFirst){result=Form.getElements(this.form).all(function(elm){return Validation.validate(elm,{useTitle:useTitles,onElementValidate:callback,showOnlyOneErrorForEachField:showOnlyOneErrorForEachField});});}else{result=Form.getElements(this.form).collect(function(elm){return Validation.validate(elm,{useTitle:useTitles,onElementValidate:callback,showOnlyOneErrorForEachField:showOnlyOneErrorForEachField});}).all();}
if(!result&&this.options.focusOnError){var input=Form.getElements(this.form).findAll(function(elm){return $(elm).hasClassName('validation-failed')}).first();if(input.type!="hidden"){input.focus()}}
this.options.onFormValidate(result,this.form);return result;},reset:function(){Form.getElements(this.form).each(Validation.reset);}}
Object.extend(Validation,{validate:function(elm,options){options=Object.extend({useTitle:false,showOnlyOneErrorForEachField:false,onElementValidate:function(result,elm){}},options||{});elm=$(elm);if(elm.hasAttribute("useFieldValueAsPlaceHolder")&&elm.value==elm.readAttribute("placeholder")){elm.value="";}
if(options.showOnlyOneErrorForEachField){Validation.reset(elm);}
var cn=elm.classNames();return result=cn.all(function(value){var test=Validation.test(value,elm,options.useTitle);options.onElementValidate(test,elm);return test;});},test:function(name,elm,useTitle){var v=Validation.get(name);var prop='__advice'+name.camelize();try{if(Validation.isVisible(elm)&&!v.test($F(elm),elm)){if(!elm[prop]){var advice=Validation.getAdvice(name,elm);if(advice==null){var errorMsg=useTitle?((elm&&elm.title)?elm.title:v.error):v.error;advice='<div class="validation-advice" id="advice-'+name+'-'+Validation.getElmID(elm)+'" style="display:none">'+errorMsg+'</div>'
switch(elm.type.toLowerCase()){case'checkbox':case'radio':var p=elm.parentNode;if(p){new Insertion.Bottom(p,advice);}else{new Insertion.After(elm,advice);}
break;default:new Insertion.After(elm,advice);}
advice=Validation.getAdvice(name,elm);}
if(typeof Effect=='undefined'){advice.style.display='block';}else{new Effect.Appear(advice,{duration:1});}}
elm[prop]=true;elm.removeClassName('validation-passed');elm.addClassName('validation-failed');return false;}else{var advice=Validation.getAdvice(name,elm);if(advice!=null)advice.hide();elm[prop]='';elm.removeClassName('validation-failed');elm.addClassName('validation-passed');return true;}}catch(e){throw(e)}},isVisible:function(elm){while(elm.tagName!='BODY'){if(!$(elm).visible())return false;elm=elm.parentNode;}
return true;},getAdvice:function(name,elm){return $('advice-'+name+'-'+Validation.getElmID(elm))||$('advice-'+Validation.getElmID(elm));},getElmID:function(elm){return elm.id?elm.id:elm.name;},reset:function(elm){elm=$(elm);var cn=elm.classNames();cn.each(function(value){var prop='__advice'+value.camelize();if(elm[prop]){var advice=Validation.getAdvice(value,elm);advice.hide();elm[prop]='';}
elm.removeClassName('validation-failed');elm.removeClassName('validation-passed');});},add:function(className,error,test,options){var nv={};nv[className]=new Validator(className,error,test,options);Object.extend(Validation.methods,nv);},addAllThese:function(validators){var nv={};$A(validators).each(function(value){nv[value[0]]=new Validator(value[0],value[1],value[2],(value.length>3?value[3]:{}));});Object.extend(Validation.methods,nv);},get:function(name){return Validation.methods[name]?Validation.methods[name]:Validation.methods['_LikeNoIDIEverSaw_'];},methods:{'_LikeNoIDIEverSaw_':new Validator('_LikeNoIDIEverSaw_','',{})}});Validation.add('IsEmpty','',function(v){return((/^\s*$/.test(v)));});Validation.addAllThese([['required',gCommonErrors.required,function(v){return!Validation.get('IsEmpty').test(v);}],['validate-number',gCommonErrors.number,function(v){return Validation.get('IsEmpty').test(v)||(!isNaN(v)&&!/^\s+$/.test(v));}],['validate-digits',gCommonErrors.digits,function(v){return Validation.get('IsEmpty').test(v)||!/[^\d]/.test(v);}],['validate-alpha',gCommonErrors.alpha,function(v){return Validation.get('IsEmpty').test(v)||/^[a-zA-Z]+$/.test(v)}],['validate-stringNoSpecialCharactersButQuote',gCommonErrors.alpha_more,function(v){return Validation.get('IsEmpty').test(v)||/^([a-zA-Z0-9\s\-_\.\",'|*\+/\\]+)$/.test(v)}],['validate-alpha-more',gCommonErrors.alpha_more,function(v){return Validation.get('IsEmpty').test(v)||/^([a-zA-Z\s\-']+)$/.test(v)}],['validate-alphanum',gCommonErrors.alphanum,function(v){return Validation.get('IsEmpty').test(v)||!/\W/.test(v)}],['validate-ALPHANUM',gCommonErrors.alphanum,function(v){return Validation.get('IsEmpty').test(v)||/\w/.test(v)}],['validate-date',gCommonErrors.date,function(v){var test=new Date(v);return Validation.get('IsEmpty').test(v)||!isNaN(test);}],['validate-email',gCommonErrors.email,function(v){return Validation.get('IsEmpty').test(v)||/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(v)}],['validate-url',gCommonErrors.url,function(v){return Validation.get('IsEmpty').test(v)||/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(v)}],['validate-zip-length',gCommonErrors.ziplength,function(v){return v.length>4;}],['validate-zipcode',gCommonErrors.zipcode,function(v){return Validation.get('IsEmpty').test(v)||/^([a-zA-Z0-9\-\.]{5,10})$/.test(v);}],['validate-date-au',gCommonErrors.date_au,function(v){if(Validation.get('IsEmpty').test(v))return true;var regex=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!regex.test(v))return false;var d=new Date(v.replace(regex,'$2/$1/$3'));return(parseInt(RegExp.$2,10)==(1+d.getMonth()))&&(parseInt(RegExp.$1,10)==d.getDate())&&(parseInt(RegExp.$3,10)==d.getFullYear());}],['validate-currency-dollar',gCommonErrors.currency_dollar,function(v){return Validation.get('IsEmpty').test(v)||/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(v)}],['validate-currency',gCommonErrors.currency,function(v){return Validation.get('IsEmpty').test(v)||/^([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(v)}],['validate-selection',gCommonErrors.selection,function(v,elm){return!Validation.get('IsEmpty').test(v);}],['validate-one-required',gCommonErrors.one_required,function(v,elm){var p=elm.parentNode;var options=p.getElementsByTagName('INPUT');return $A(options).any(function(elm){return $F(elm);});}],['security-code-length',gCommonErrors.code_length,function(v){return Validation.get('IsEmpty').test(v)||v.length==3||v.length==4;}]]);Validation.add('validation-credit-card',gCommonErrors.credit_card,function(v){return validatePaymentCreditCard(v);});Validation.add('validation-exp-date',gCommonErrors.exp_date,function(v){return verifyExpirationDate();});Validation.add('validation-full-name',gCommonErrors.fullname,function(v){return Validation.get('IsEmpty').test(v)||/^([a-zA-Z]+)\s([\sa-zA-Z]+)$/.test(v)});Validation.add('validation-address',gCommonErrors.address,function(v){return Validation.get('IsEmpty').test(v)||/^[^<>"'&]+$/.test(v)});Validation.add('validation-password',gCommonErrors.password,function(v){return Validation.get('IsEmpty').test(v)||!/\s/.test(v)});Validation.add("validate-identical",gCommonErrors.identical,function(v){return Validation.get('IsEmpty').test(v)||v==$F("password");});Validation.add('validation-phone-number',gCommonErrors.phone_number,function(v){return Validation.get('IsEmpty').test(v)||isPhoneNumberValid(v);});Validation.add('validation-phone-number-us',gSessionStrings.call_ten_digit_number_required,function(v){return Validation.get('IsEmpty').test(v)||validatePhoneNumber(v,10)==null;});
