var EC_Validate={isValid:true,allowBlankPass:false,rules:{},errors:[],errorMsg:"",error_id:1,phone_format:"($1) $2-$3 x$4",zip_format:"$1-$2",tlds:[".com",".net",".org",".biz",".coop",".info",".museum",".name",".pro",".edu",".gov",".int",".mil",".ac",".ad",".ae",".af",".ag",".ai",".al",".am",".an",".ao",".aq",".ar",".as",".at",".au",".aw",".az",".ba",".bb",".bd",".be",".bf",".bg",".bh",".bi",".bj",".bm",".bn",".bo",".br",".bs",".bt",".bv",".bw",".by",".bz",".ca",".cc",".cd",".cf",".cg",".ch",".ci",".ck",".cl",".cm",".cn",".co",".cr",".cu",".cv",".cx",".cy",".cz",".de",".dj",".dk",".dm",".do",".dz",".ec",".ee",".eg",".eh",".er",".es",".et",".fi",".fj",".fk",".fm",".fo",".fr",".ga",".gd",".ge",".gf",".gg",".gh",".gi",".gl",".gm",".gn",".gp",".gq",".gr",".gs",".gt",".gu",".gv",".gy",".hk",".hm",".hn",".hr",".ht",".hu",".id",".ie",".il",".im",".in",".io",".iq",".ir",".is",".it",".je",".jm",".jo",".jp",".ke",".kg",".kh",".ki",".km",".kn",".kp",".kr",".kw",".ky",".kz",".la",".lb",".lc",".li",".lk",".lr",".ls",".lt",".lu",".lv",".ly",".ma",".mc",".md",".mg",".mh",".mk",".ml",".mm",".mn",".mo",".mp",".mq",".mr",".ms",".mt",".mu",".mv",".mw",".mx",".my",".mz",".na",".nc",".ne",".nf",".ng",".ni",".nl",".no",".np",".nr",".nu",".nz",".om",".pa",".pe",".pf",".pg",".ph",".pk",".pl",".pm",".pn",".pr",".ps",".pt",".pw",".py",".qa",".re",".ro",".rw",".ru",".sa",".sb",".sc",".sd",".se",".sg",".sh",".si",".sj",".sk",".sl",".sm",".sn",".so",".sr",".st",".sv",".sy",".sz",".tc",".td",".tf",".tg",".th",".tj",".tk",".tm",".tn",".to",".tp",".tr",".tt",".tv",".tw",".tz",".ua",".ug",".uk",".um",".us",".uy",".uz",".va",".vc",".ve",".vg",".vi",".vn",".vu",".ws",".wf",".ye",".yt",".yu",".za",".zm",".zw"],setupRules:function(c){if(c==null){c="";}if($("validation_rules")){this.rules=JSON.decode($("validation_rules").value);this.errors=this.rules.errors;for(var d in this.rules.formatters){if(EC_Validate[d]){var a=this.rules.formatters[d];for(var b in a){EC_Validate.init_formatter(c+b,d);}}}}},init_formatter:function(a,b){if($(a)){$(a).addEvent("blur",function(c){EC_Validate[b](c);});}},format_zip:function(b,d,e){if(e==""){e="country_code";}if($(e)&&$(e).value=="US"){if(b!=""){var b=new Event(b);var a=b.target;}else{var a=d;}var c=a.value.replace(/[^0-9]/g,"");if(c.length>5){a.value=c.replace(/(\d{5})(\d+)/,this.zip_format);}else{a.value=c;}}},format_phone:function(b,d){if($("country_code")&&$("country_code").value=="US"){if(b!=""){var b=new Event(b);var a=b.target;}else{var a=d;}var c=a.value.replace(/[^0-9]/g,"");if(c.substring(0,1)==1){c=c.substring(1,c.length);}c=c.replace(/(\d{3})(\d{3})(\d{4})(.*)/,this.phone_format);if(c.substring(c.length-1)=="x"){c=c.substring(0,c.length-2);}a.value=c;}},format_taxrate:function(c,d){if(c!=""){var c=new Event(c);var b=c.target;}else{var b=d;}var a=b.value;a=a.replace(/[^.0-9]/gi,"");if(a==""){b.value="";return;}a=(Math.round(a*100))/100;a=(a==Math.floor(a))?a+".00":((a*10==Math.floor(a*10))?a+"0":a);b.value=a;},validate:function(d,e){for(var g in EC_Validate.rules.formatters){if(EC_Validate[g]){var a=EC_Validate.rules.formatters[g];for(var b in a){if($(b)){EC_Validate[g]("",$(b));}}}}if(e==null){e="";}EC_Validate.isValid=true;this.removeErrors();for(var g in this.rules.validators){if(EC_Validate[g]){var a=this.rules.validators[g];for(var b in a){if(d[e+b]){var f=$(e+b);if(f.id==""){f=d[e+b];}var c=EC_Validate[g](f,a[b],e);if(!c){EC_Validate.isValid=false;}}}}}if(EC_Validate.isValid==false&&this.errorMsg!=""){alert(this.errorMsg);}if($("myForm")&&$("post_vals")){$("post_vals").value=$("myForm").toQueryString();}if(EC_Validate.isValid==false){EC_Validate.showErrorPopup();}return EC_Validate.isValid;},validate_required:function(a){if(this.allowBlankPass==true&&a.id.indexOf("pass")>-1&&a.value.length==0){if($("password")&&$("password").value.length==0&&$("confirm_password")&&$("confirm_password").value.length==0){return true;}}if(a.value==""||($(a.id+"_is_checkbox")&&a.getProperty("checked")==false)){return this.doError("required",a,"");}return true;},validate_terms:function(a){if(a.value==""||($(a.id+"_is_checkbox")&&a.getProperty("checked")==false)){return this.doError("terms",a,"");}return true;},validate_matches:function(b,a){if(b.value!=$(a).value){return this.doError("matches",$(a),$(b.id+"_label").get("text"));}return true;},validate_min_length:function(b,a){if(this.allowBlankPass==true&&b.id.indexOf("pass")>-1&&b.value.length==0){if($("password")&&$("password").value.length==0&&$("confirm_password")&&$("confirm_password").value.length==0){return true;}}if(b.value.length<a){return this.doError("min_length",b,a);}return true;},validate_max_length:function(b,a){if(b.value.length>a){return this.doError("max_length",b,a);}return true;},validate_exact_length:function(b,a){if(b.value.length!=a){return this.doError("exact_length",b,a);}return true;},validate_alpha:function(a){if(a.value!=a.value.replace(/^[a-zA-Z]+$/,"")){return this.doError("alpha",a,"");}return true;},validate_alpha_numeric:function(a){if(a.value.match(/^[0-9a-zA-Z]+$/)){return true;}return this.doError("alpha_numeric",a,"");},validate_alpha_dash:function(a){if(a.value!=a.value.replace(/[^a-zA-Z0-9-_]/g,"")){return this.doError("alpha_dash",a,"");}return true;},validate_numeric:function(a){if(a.value.match(/^[0-9]+$/)){return true;}return this.doError("numeric",a,"");},validate_valid_email:function(a){if(a.value.match(/^[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/)){return true;}return this.doError("valid_email",a,"");},validate_valid_ip:function(a){if(a.value.match(/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/)){return true;}return this.doError("valid_ip",a,"");},validate_zip:function(b,a,c){if($(c+"country_code")&&$(c+"country_code").value=="US"){if(b.value.match(/^(\d{5})$/)||b.value.match(/^(\d{5})-(\d+)$/)){return true;}return this.doError("zip",b,"");}return true;},validate_phone:function(b,a,c){if($(c+"country_code")&&$(c+"country_code").value=="US"){if(b.value.match(/^\([2-9]\d{2}\)\s?\d{3}\-\d{4}?\s*(\w*)$/)){return true;}return this.doError("phone",b,"");}return true;},validate_strong_password:function(a){if(a.value.match(/^(?=.*\d)(?=.*[a-zA-Z])(?!.*\s).*$/)){return true;}return this.doError("strong_password",a,"");},validate_domain:function(b){if(b){var l=true;var d=b.value.toLowerCase();if(d==""){return true;}d=d.replace(/www\./g,"");d=d.replace(/http:/g,"");d=d.replace(/https:/g,"");d=d.replace(/\//g,"");b.value=d;var a=d.lastIndexOf(".");var f=d.substring(0,a);var c=d.substring(a,d.length);if(f.length>2&&f.length<57){for(var h=0;h<this.tlds.length;h++){if(c==this.tlds[h]){l=true;break;}else{l=false;}}if(l==false){return this.doError("domain_extension",b);}else{for(var g=0;g<f.length;g++){var k=f.charAt(g);var e=k.charCodeAt(0);if((e>47&&e<59)||(e>64&&e<91)||(e>96&&e<123)||e==45||e==46){if((g==0||g==f.length-1)&&e==45){return this.doError("domain_hyphen",b);}}else{return this.doError("domain_special",b);}}return true;}}else{if(f.length<3){return this.doError("domain_short",b);}if(f.length>56){return this.doError("domain_long",b);}return false;}}else{return true;}},validate_credit_card:function(c,e,p){var a=c.value;var t,m,k;if($(p+"cc_type")){t=$(p+"cc_type").value;}if($(p+"cc_month")){m=$(p+"cc_month").value;}if($(p+"cc_year")){k=$(p+"cc_year").value;}if(t==""){return this.doError("cc_length",c,"");}var f=[];f.amex=[];f.disc=[];f.mstr=[];f.visa=[];f.amex["len"]="15";f.disc["len"]="16";f.mstr["len"]="16";f.visa["len"]="13,16";f.amex["hd"]="34,37";f.disc["hd"]="6011";f.mstr["hd"]="51,52,53,54,55";f.visa["hd"]="4";a=a.replace(/([^0-9]+)/,"");$(c).value=a;var b=f[t]["len"].split(",");var g=false;for(var q=0;q<b.length;q++){if(a.length==b[q]){g=true;}}if(g==false){return this.doError("cc_length",c,"");}var o=f[t]["hd"].split(",");var g=false;for(var q=0;q<o.length;q++){var h=a.substring(0,o[q].toString().length);if(h==o[q]){g=true;}}if(g==false){return this.doError("cc_incorrect",c,"");}var j=a.length&1;var d=0;for(var q=0;q<a.length;q++){var n=parseInt(a.charAt(q));if(!((q&1)^j)){n*=2;if(n>9){n-=9;}}d+=n;}if((d%10)!=0){return this.doError("cc_incorrect",c,"");}var r=new Date();var s=r.getMonth()+1;var l=r.getFullYear();if(k<l){return this.doError("cc_expired",$(p+"cc_month"));}if(k==l){if(m<s){return this.doError("cc_expired",$(p+"cc_month"));}}return true;},getErrorString:function(c,d,a){var b="above";if($(d+"_label")){b=$(d+"_label").get("text").replace(":","");}if(this.errors[c]){return sprintf(this.errors[c],'"'+b+'"',a);}return sprintf('The "%s" field is not valid.',b);},doError:function(c,b,a){var e=this.getErrorString(c,b.id,a);if($(b.id+"_error")){$(b.id+"_error").empty();var d=new Element("p");d.set("html",e);d.inject(b.id+"_error");}else{this.errorMsg+=e+"\n";}return false;},removeErrors:function(){$$(".error_div").each(function(a){a.empty();});},showErrorPopup:function(){var b=$("error_popup");if(b){b.position("center");var c=b.getStyle("top");if(c&&Number(c.replace("px",""))<0){b.setStyle("top",20);}b.setStyle("opacity",0);b.setStyle("display","block");b.tween("opacity",1);(function(){EC_Validate.hideErrorPopup();}).delay(1000);}var a=$("validation_mask");if(a){var e=false;var d=$("dashboard");if(d){e=d.getCoordinates();}var d=$("order_system");if(d){e=d.getCoordinates();}var d=$("signup_system");if(d){e=d.getCoordinates();}if(e){a.setStyles({top:0,left:0,right:0,bottom:0,display:"block",opacity:0});a.tween("opacity",0.8);}}},hideErrorPopup:function(){$("error_popup").tween("opacity",0);(function(){$("error_popup").setStyle("display","none");}).delay(600);var a=$("validation_mask");if(a){a.tween("opacity",0);(function(){$("validation_mask").setStyle("display","none");}).delay(600);}}};
