var Validator=Class.create();Validator.prototype={initialize:function(c,b,d,a){if(typeof d=="function"){this.options=$H(a);this._test=d}else{this.options=$H(d);this._test=function(){return true}}this.error=b||"Validation failed.";this.className=c},test:function(a,b){return(this._test(a,b)&&this.options.all(function(c){return Validator.methods[c.key]?Validator.methods[c.key](a,b,c.value):true}))}};Validator.methods={pattern:function(a,c,b){return Validation.get("IsEmpty").test(a)||b.test(a)},minLength:function(a,c,b){return a.length>=b},maxLength:function(a,c,b){return a.length<=b},min:function(a,c,b){return a>=parseFloat(b)},max:function(a,c,b){return a<=parseFloat(b)},notOneOf:function(a,c,b){return $A(b).all(function(d){return a!=d})},oneOf:function(a,c,b){return $A(b).any(function(d){return a==d})},is:function(a,c,b){return a==b},isNot:function(a,c,b){return a!=b},equalToField:function(a,c,b){return a==$F(b)},notEqualToField:function(a,c,b){return a!=$F(b)},include:function(a,c,b){return $A(b).all(function(d){return Validation.get(d).test(a,c)})}};var Validation=Class.create();Validation.defaultOptions={onSubmit:true,stopOnFirst:false,immediate:false,focusOnError:true,useTitles:false,addClassNameToContainer:false,containerClassName:".input-box",onFormValidate:function(a,b){},onElementValidate:function(a,b){}};Validation.prototype={initialize:function(b,a){this.form=$(b);if(!this.form){return}this.options=Object.extend({onSubmit:Validation.defaultOptions.onSubmit,stopOnFirst:Validation.defaultOptions.stopOnFirst,immediate:Validation.defaultOptions.immediate,focusOnError:Validation.defaultOptions.focusOnError,useTitles:Validation.defaultOptions.useTitles,onFormValidate:Validation.defaultOptions.onFormValidate,onElementValidate:Validation.defaultOptions.onElementValidate},a||{});if(this.options.onSubmit){Event.observe(this.form,"submit",this.onSubmit.bind(this),false)}if(this.options.immediate){Form.getElements(this.form).each(function(c){if(c.tagName.toLowerCase()=="select"){Event.observe(c,"blur",this.onChange.bindAsEventListener(this))}if(c.type.toLowerCase()=="radio"||c.type.toLowerCase()=="checkbox"){Event.observe(c,"click",this.onChange.bindAsEventListener(this))}else{Event.observe(c,"change",this.onChange.bindAsEventListener(this))}},this)}},onChange:function(a){Validation.isOnChange=true;Validation.validate(Event.element(a),{useTitle:this.options.useTitles,onElementValidate:this.options.onElementValidate});Validation.isOnChange=false},onSubmit:function(a){if(!this.validate()){Event.stop(a)}},validate:function(){var a=false;var b=this.options.useTitles;var d=this.options.onElementValidate;try{if(this.options.stopOnFirst){a=Form.getElements(this.form).all(function(e){if(e.hasClassName("local-validation")&&!this.isElementInForm(e,this.form)){return true}return Validation.validate(e,{useTitle:b,onElementValidate:d})},this)}else{a=Form.getElements(this.form).collect(function(e){if(e.hasClassName("local-validation")&&!this.isElementInForm(e,this.form)){return true}return Validation.validate(e,{useTitle:b,onElementValidate:d})},this).all()}}catch(c){}if(!a&&this.options.focusOnError){try{Form.getElements(this.form).findAll(function(e){return $(e).hasClassName("validation-failed")}).first().focus()}catch(c){}}this.options.onFormValidate(a,this.form);return a},reset:function(){Form.getElements(this.form).each(Validation.reset)},isElementInForm:function(c,b){var a=c.up("form");if(a==b){return true}return false}};Object.extend(Validation,{validate:function(c,a){a=Object.extend({useTitle:false,onElementValidate:function(d,e){}},a||{});c=$(c);var b=$w(c.className);return result=b.all(function(d){var e=Validation.test(d,c,a.useTitle);a.onElementValidate(e,c);return e})},insertAdvice:function(d,b){var a=$(d).up(".field-row");if(a){Element.insert(a,{after:b})}else{if(d.up("td.value")){d.up("td.value").insert({bottom:b})}else{if(d.advaiceContainer&&$(d.advaiceContainer)){$(d.advaiceContainer).update(b)}else{switch(d.type.toLowerCase()){case"checkbox":case"radio":var c=d.parentNode;if(c){Element.insert(c,{bottom:b})}else{Element.insert(d,{after:b})}break;default:Element.insert(d,{after:b})}}}}},showAdvice:function(c,b,a){if(!c.advices){c.advices=new Hash()}else{c.advices.each(function(d){if(!b||d.value.id!=b.id){this.hideAdvice(c,d.value)}}.bind(this))}c.advices.set(a,b);if(typeof Effect=="undefined"){b.style.display="block"}else{if(!b._adviceAbsolutize){new Effect.Appear(b,{duration:1})}else{Position.absolutize(b);b.show();b.setStyle({top:b._adviceTop,left:b._adviceLeft,width:b._adviceWidth,"z-index":1000});b.addClassName("advice-absolute")}}},hideAdvice:function(b,a){if(a!=null){new Effect.Fade(a,{duration:1,afterFinishInternal:function(){a.hide()}})}},updateCallback:function(elm,status){if(typeof elm.callbackFunction!="undefined"){eval(elm.callbackFunction+"('"+elm.id+"','"+status+"')")}},ajaxError:function(e,d){var c="validate-ajax";var b=Validation.getAdvice(c,e);if(b==null){b=this.createAdvice(c,e,false,d)}this.showAdvice(e,b,"validate-ajax");this.updateCallback(e,"failed");e.addClassName("validation-failed");e.addClassName("validate-ajax");if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=""){var a=e.up(Validation.defaultOptions.containerClassName);if(a&&this.allowContainerClassName(e)){a.removeClassName("validation-passed");a.addClassName("validation-error")}}},allowContainerClassName:function(a){if(a.type=="radio"||a.type=="checkbox"){return a.hasClassName("change-container-classname")}return true},test:function(d,i,g){var b=Validation.get(d);var h="__advice"+d.camelize();try{if(Validation.isVisible(i)&&!b.test($F(i),i)){var c=Validation.getAdvice(d,i);if(c==null){c=this.createAdvice(d,i,g)}this.showAdvice(i,c,d);this.updateCallback(i,"failed");i[h]=1;if(!i.advaiceContainer){i.removeClassName("validation-passed");i.addClassName("validation-failed")}if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=""){var a=i.up(Validation.defaultOptions.containerClassName);if(a&&this.allowContainerClassName(i)){a.removeClassName("validation-passed");a.addClassName("validation-error")}}return false}else{var c=Validation.getAdvice(d,i);this.hideAdvice(i,c);this.updateCallback(i,"passed");i[h]="";i.removeClassName("validation-failed");i.addClassName("validation-passed");if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=""){var a=i.up(Validation.defaultOptions.containerClassName);if(a&&!a.down(".validation-failed")&&this.allowContainerClassName(i)){if(!Validation.get("IsEmpty").test(i.value)||!this.isVisible(i)){a.addClassName("validation-passed")}else{a.removeClassName("validation-passed")}a.removeClassName("validation-error")}}return true}}catch(f){throw (f)}},isVisible:function(a){while(a.tagName!="BODY"){if(!$(a).visible()){return false}a=a.parentNode}return true},getAdvice:function(a,b){return $("advice-"+a+"-"+Validation.getElmID(b))||$("advice-"+Validation.getElmID(b))},createAdvice:function(b,h,i,c){var j=Validation.get(b);var f=i?((h&&h.title)?h.title:j.error):j.error;if(c){f=c}try{if(Translator){f=Translator.translate(f)}}catch(g){}advice='<div class="validation-advice" id="advice-'+b+"-"+Validation.getElmID(h)+'" style="display:none">'+f+"</div>";Validation.insertAdvice(h,advice);advice=Validation.getAdvice(b,h);if($(h).hasClassName("absolute-advice")){var a=$(h).getDimensions();var d=Position.cumulativeOffset(h);advice._adviceTop=(d[1]+a.height)+"px";advice._adviceLeft=(d[0])+"px";advice._adviceWidth=(a.width)+"px";advice._adviceAbsolutize=true}return advice},getElmID:function(a){return a.id?a.id:a.name},reset:function(b){b=$(b);var a=$w(b.className);a.each(function(e){var f="__advice"+e.camelize();if(b[f]){var d=Validation.getAdvice(e,b);if(d){d.hide()}b[f]=""}b.removeClassName("validation-failed");b.removeClassName("validation-passed");if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=""){var c=b.up(Validation.defaultOptions.containerClassName);if(c){c.removeClassName("validation-passed");c.removeClassName("validation-error")}}})},add:function(d,c,e,b){var a={};a[d]=new Validator(d,c,e,b);Object.extend(Validation.methods,a)},addAllThese:function(a){var b={};$A(a).each(function(c){b[c[0]]=new Validator(c[0],c[1],c[2],(c.length>3?c[3]:{}))});Object.extend(Validation.methods,b)},get:function(a){return Validation.methods[a]?Validation.methods[a]:Validation.methods._LikeNoIDIEverSaw_},methods:{_LikeNoIDIEverSaw_:new Validator("_LikeNoIDIEverSaw_","",{})}});Validation.add("IsEmpty","",function(a){return(a==""||(a==null)||(a.length==0)||/^\s+$/.test(a))});Validation.addAllThese([["validate-select","Please select an option.",function(a){return((a!="none")&&(a!=null)&&(a.length!=0))}],["required-entry","This is a required field.",function(a){return !Validation.get("IsEmpty").test(a)}],["validate-number","Please enter a valid number in this field.",function(a){return Validation.get("IsEmpty").test(a)||(!isNaN(parseNumber(a))&&!/^\s+$/.test(parseNumber(a)))}],["validate-digits","Please use numbers only in this field. Please avoid spaces or other characters such as dots or commas.",function(a){return Validation.get("IsEmpty").test(a)||!/[^\d]/.test(a)}],["validate-digits-range","The value is not within the specified range.",function(c,d){var b=Validation.get("IsEmpty").test(c)||!/[^\d]/.test(c);var a=new RegExp(/^digits-range-[0-9]+-[0-9]+$/);$w(d.className).each(function(g,f){if(g.match(a)&&b){var h=parseInt(g.split("-")[2],10);var e=parseInt(g.split("-")[3],10);var i=parseInt(c,10);b=(c>=h)&&(c<=e)}});return b}],["validate-alpha","Please use letters only (a-z or A-Z) in this field.",function(a){return Validation.get("IsEmpty").test(a)||/^[a-zA-Z]+$/.test(a)}],["validate-code","Please use only letters (a-z), numbers (0-9) or underscore(_) in this field, first character should be a letter.",function(a){return Validation.get("IsEmpty").test(a)||/^[a-z]+[a-z0-9_]+$/.test(a)}],["validate-alphanum","Please use only letters (a-z or A-Z) or numbers (0-9) only in this field. No spaces or other characters are allowed.",function(a){return Validation.get("IsEmpty").test(a)||/^[a-zA-Z0-9]+$/.test(a)
/*!/\W/.test(v)*/
}],["validate-street","Please use only letters (a-z or A-Z) or numbers (0-9) or spaces and # only in this field.",function(a){return Validation.get("IsEmpty").test(a)||/^[ \w]{3,}([A-Za-z]\.)?([ \w]*\#\d+)?(\r\n| )[ \w]{3,}/.test(a)}],["validate-phoneStrict","Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.",function(a){return Validation.get("IsEmpty").test(a)||/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/.test(a)}],["validate-phoneLax","Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.",function(a){return Validation.get("IsEmpty").test(a)||/^((\d[-. ]?)?((\(\d{3}\))|\d{3}))?[-. ]?\d{3}[-. ]?\d{4}$/.test(a)}],["validate-fax","Please enter a valid fax number. For example (123) 456-7890 or 123-456-7890.",function(a){return Validation.get("IsEmpty").test(a)||/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/.test(a)}],["validate-date","Please enter a valid date.",function(a){var b=new Date(a);return Validation.get("IsEmpty").test(a)||!isNaN(b)}],["validate-email","Please enter a valid email address. For example johndoe@domain.com.",function(a){return Validation.get("IsEmpty").test(a)||/^([a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*@([a-z0-9-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z0-9-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*\.(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]){2,})$/i.test(a)}],["validate-emailSender","Please use only visible characters and spaces.",function(a){return Validation.get("IsEmpty").test(a)||/^[\S ]+$/.test(a)}],["validate-password","Please enter 6 or more characters. Leading or trailing spaces will be ignored.",function(a){var b=a.strip();return !(b.length>0&&b.length<6)}],["validate-admin-password","Please enter 7 or more characters. Password should contain both numeric and alphabetic characters.",function(a){var b=a.strip();if(0==b.length){return true}if(!(/[a-z]/i.test(a))||!(/[0-9]/.test(a))){return false}return !(b.length<7)}],["validate-cpassword","Please make sure your passwords match.",function(a){var b=$("confirmation")?$("confirmation"):$$(".validate-cpassword")[0];var e=false;if($("password")){e=$("password")}var f=$$(".validate-password");for(var c=0;c<f.size();c++){var d=f[c];if(d.up("form").id==b.up("form").id){e=d}}if($$(".validate-admin-password").size()){e=$$(".validate-admin-password")[0]}return(e.value==b.value)}],["validate-url","Please enter a valid URL. Protocol is required (http://, https:// or ftp://)",function(a){return Validation.get("IsEmpty").test(a)||/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(a)}],["validate-clean-url","Please enter a valid URL. For example http://www.example.com or www.example.com",function(a){return Validation.get("IsEmpty").test(a)||/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+.(com|in|co.in|sh|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i.test(a)||/^(www)((\.[A-Z0-9][A-Z0-9_-]*)+.(com|in|co.in|sh|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i.test(a)}],["validate-identifier",'Please enter a valid URL Key. For example "example-page", "example-page.html" or "anotherlevel/example-page".',function(a){return Validation.get("IsEmpty").test(a)||/^[a-z0-9][a-z0-9_\/-]+(\.[a-z0-9_-]+)?$/.test(a)}],["validate-xml-identifier","Please enter a valid XML-identifier. For example something_1, block5, id-4.",function(a){return Validation.get("IsEmpty").test(a)||/^[A-Z][A-Z0-9_\/-]*$/i.test(a)}],["validate-ssn","Please enter a valid social security number. For example 123-45-6789.",function(a){return Validation.get("IsEmpty").test(a)||/^\d{3}-?\d{2}-?\d{4}$/.test(a)}],["validate-zip","Please enter a valid zip code. For example 90602 or 90602-1234.",function(a){return Validation.get("IsEmpty").test(a)||/(^\d{5}$)|(^\d{5}-\d{4}$)/.test(a)}],["validate-zip-international","Please enter a valid pin code.",function(a){return Validation.get("IsEmpty").test(a)||/(^\d{6}$)/.test(a)}],["validate-date-au","Please use this date format: dd/mm/yyyy. For example 17/03/2006 for the 17th of March, 2006.",function(a){if(Validation.get("IsEmpty").test(a)){return true}var b=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!b.test(a)){return false}var c=new Date(a.replace(b,"$2/$1/$3"));return(parseInt(RegExp.$2,10)==(1+c.getMonth()))&&(parseInt(RegExp.$1,10)==c.getDate())&&(parseInt(RegExp.$3,10)==c.getFullYear())}],["validate-currency-dollar","Please enter a valid $ amount. For example $100.00.",function(a){return Validation.get("IsEmpty").test(a)||/^\$?\-?([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(a)}],["validate-one-required","Please select one of the above options.",function(a,d){var c=d.parentNode;var b=c.getElementsByTagName("INPUT");return $A(b).any(function(e){return $F(e)})}],["validate-one-required-by-name","Please select one of the options.",function(b,e){var a=$$('input[name="'+e.name.replace(/([\\"])/g,"\\$1")+'"]');var c=1;for(var d=0;d<a.length;d++){if((a[d].type=="checkbox"||a[d].type=="radio")&&a[d].checked==true){c=0}if(Validation.isOnChange&&(a[d].type=="checkbox"||a[d].type=="radio")){Validation.reset(a[d])}}if(c==0){return true}else{return false}}],["validate-not-negative-number","Please enter a valid number in this field.",function(a){a=parseNumber(a);return(!isNaN(a)&&a>=0)}],["validate-state","Please select State/Province.",function(a){return(a!=0||a=="")}],["validate-new-password","Please enter 6 or more characters. Leading or trailing spaces will be ignored.",function(a){if(!Validation.get("validate-password").test(a)){return false}if(Validation.get("IsEmpty").test(a)&&a!=""){return false}return true}],["validate-greater-than-zero","Please enter a number greater than 0 in this field.",function(a){if(a.length){return parseFloat(a)>0}else{return true}}],["validate-zero-or-greater","Please enter a number 0 or greater in this field.",function(a){if(a.length){return parseFloat(a)>=0}else{return true}}],["validate-cc-number","Please enter a valid credit card number.",function(a,c){var b=$(c.id.substr(0,c.id.indexOf("_cc_number"))+"_cc_type");if(b&&typeof Validation.creditCartTypes.get(b.value)!="undefined"&&Validation.creditCartTypes.get(b.value)[2]==false){if(!Validation.get("IsEmpty").test(a)&&Validation.get("validate-digits").test(a)){return true}else{return false}}return validateCreditCard(a)}],["validate-cc-type","Credit card number does not match credit card type.",function(b,e){e.value=removeDelimiters(e.value);b=removeDelimiters(b);var d=$(e.id.substr(0,e.id.indexOf("_cc_number"))+"_cc_type");if(!d){return true}var c=d.value;if(typeof Validation.creditCartTypes.get(c)=="undefined"){return false}if(Validation.creditCartTypes.get(c)[0]==false){return true}var a="";Validation.creditCartTypes.each(function(f){if(f.value[0]&&b.match(f.value[0])){a=f.key;throw $break}});if(a!=c){return false}if(d.hasClassName("validation-failed")&&Validation.isOnChange){Validation.validate(d)}return true}],["validate-cc-type-select","Card type does not match credit card number.",function(b,c){var a=$(c.id.substr(0,c.id.indexOf("_cc_type"))+"_cc_number");if(Validation.isOnChange&&Validation.get("IsEmpty").test(a.value)){return true}if(Validation.get("validate-cc-type").test(a.value,a)){Validation.validate(a)}return Validation.get("validate-cc-type").test(a.value,a)}],["validate-cc-exp","Incorrect credit card expiration date.",function(a,g){var f=a;var e=$(g.id.substr(0,g.id.indexOf("_expiration"))+"_expiration_yr").value;var d=new Date();var c=d.getMonth()+1;var b=d.getFullYear();if(f<c&&e==b){return false}return true}],["validate-cc-cvn","Please enter a valid credit card verification number.",function(a,e){var d=$(e.id.substr(0,e.id.indexOf("_cc_cid"))+"_cc_type");if(!d){return true}var b=d.value;if(typeof Validation.creditCartTypes.get(b)=="undefined"){return false}var c=Validation.creditCartTypes.get(b)[1];if(a.match(c)){return true}return false}],["validate-ajax","",function(a,b){return true}],["validate-data","Please use only letters (a-z or A-Z), numbers (0-9) or underscore(_) in this field, first character should be a letter.",function(a){if(a!=""&&a){return/^[A-Za-z]+[A-Za-z0-9_]+$/.test(a)}return true}],["validate-css-length","Please input a valid CSS-length. For example 100px or 77pt or 20em or .5ex or 50%.",function(a){if(a!=""&&a){return/^[0-9\.]+(px|pt|em|ex|%)?$/.test(a)&&(!(/\..*\./.test(a)))&&!(/\.$/.test(a))}return true}],["validate-length","Please enter valid mobile number.",function(b,e){if(b.charAt(0)=="0"){return false}var c=new RegExp(/^maximum-length-[0-9]+$/);var d=new RegExp(/^minimum-length-[0-9]+$/);var a=true;$w(e.className).each(function(g,f){if(g.match(c)&&a){var h=g.split("-")[2];a=(b.length<=h)}if(g.match(d)&&a&&!Validation.get("IsEmpty").test(b)){var h=g.split("-")[2];a=(b.length>=h)}});return a}],["validate-percents","Please enter a number lower than 100.",{max:100}],["required-file","Please select a file",function(b,c){var a=!Validation.get("IsEmpty").test(b);if(a===false){ovId=c.id+"_value";if($(ovId)){a=!Validation.get("IsEmpty").test($(ovId).value)}}return a}],["validate-cc-ukss","Please enter issue number or start date for switch/solo card type.",function(i,e){var a;if(e.id.match(/(.)+_cc_issue$/)){a=e.id.indexOf("_cc_issue")}else{if(e.id.match(/(.)+_start_month$/)){a=e.id.indexOf("_start_month")}else{a=e.id.indexOf("_start_year")}}var d=e.id.substr(0,a);var b=$(d+"_cc_type");if(!b){return true}var h=b.value;if(["SS","SM","SO"].indexOf(h)==-1){return true}$(d+"_cc_issue").advaiceContainer=$(d+"_start_month").advaiceContainer=$(d+"_start_year").advaiceContainer=$(d+"_cc_type_ss_div").down("ul li.adv-container");var f=$(d+"_cc_issue").value;var g=$(d+"_start_month").value;var j=$(d+"_start_year").value;var c=(g&&j)?true:false;if(!c&&!f){return false}return true}]]);function removeDelimiters(a){a=a.replace(/\s/g,"");a=a.replace(/\-/g,"");return a}function parseNumber(a){if(typeof a!="string"){return parseFloat(a)}var c=a.indexOf(".");var b=a.indexOf(",");if(c!=-1&&b!=-1){if(b>c){a=a.replace(".","").replace(",",".")}else{a=a.replace(",","")}}else{if(b!=-1){a=a.replace(",",".")}}return parseFloat(a)}Validation.creditCartTypes=$H({SO:[new RegExp("^(6334[5-9]([0-9]{11}|[0-9]{13,14}))|(6767([0-9]{12}|[0-9]{14,15}))$"),new RegExp("^([0-9]{3}|[0-9]{4})?$"),true],SM:[new RegExp("(^(5[0678])[0-9]{11,18}$)|(^(6[^05])[0-9]{11,18}$)|(^(601)[^1][0-9]{9,16}$)|(^(6011)[0-9]{9,11}$)|(^(6011)[0-9]{13,16}$)|(^(65)[0-9]{11,13}$)|(^(65)[0-9]{15,18}$)|(^(49030)[2-9]([0-9]{10}$|[0-9]{12,13}$))|(^(49033)[5-9]([0-9]{10}$|[0-9]{12,13}$))|(^(49110)[1-2]([0-9]{10}$|[0-9]{12,13}$))|(^(49117)[4-9]([0-9]{10}$|[0-9]{12,13}$))|(^(49118)[0-2]([0-9]{10}$|[0-9]{12,13}$))|(^(4936)([0-9]{12}$|[0-9]{14,15}$))"),new RegExp("^([0-9]{3}|[0-9]{4})?$"),true],VI:[new RegExp("^4[0-9]{12}([0-9]{3})?$"),new RegExp("^[0-9]{3}$"),true],MC:[new RegExp("^5[1-5][0-9]{14}$"),new RegExp("^[0-9]{3}$"),true],AE:[new RegExp("^3[47][0-9]{13}$"),new RegExp("^[0-9]{4}$"),true],DI:[new RegExp("^6011[0-9]{12}$"),new RegExp("^[0-9]{3}$"),true],JCB:[new RegExp("^(3[0-9]{15}|(2131|1800)[0-9]{11})$"),new RegExp("^[0-9]{4}$"),true],OT:[false,new RegExp("^([0-9]{3}|[0-9]{4})?$"),false]});
