// Validate for Mootools 1.0. Copyright (c) 2008 Aeron Glemann, <http://electricprism.com/aeron>, MIT Style License.var Validate=new Class({initialize:function(f){this.f=$(f);if(!this.f)return false;this.f.addEvent('submit',function(event){event.stop();return this.validate();}.bindWithEvent(this));this.labels={};this.f.getElements('label').each(function(label){this.labels[label]=label.innerHTML+'';},this);this.submit=$E('*[type=submit]',this.f);},validate:function(){this.submit.disabled=false;$ES('.error',this.f).each(function(el){el.removeClass('error');if(el.getTag()=='label')el.setHTML(this.labels[el]);},this);this.passed=true;this.focused=false;$ES('input, select, textarea',this.f).each(function(el){if(el.optional)return;var t=el.type;var v=el.value;var n=(el.title)?el.title.clean():el.name.capitalize();if(t=='text'||t=='password'||t=='hidden'||el.getTag()=='textarea'){if(this.isEmpty(v))return this.doError(el,n+' cannot be empty');if(el.isAlpha){if(!this.isAlpha(v))return this.doError(el,n+' can only contain characters A-Z a-z');}if(el.isNumeric){if(!this.isNumeric(v))return this.doError(el,n+' can only contain characters 0-9');}if(el.isAlphaNumeric){if(!this.isAlphaNumeric(v))return this.doError(el,n+' can only contain characters A-Z a-z 0-9');}if(el.isEmail){if(!this.isEmail(v))return this.doError(el,v+' is not a valid email');}if(el.isLength!=null){var len=el.isLength;if(!this.isLength(v,len))return this.doError(el,n+' must contain only '+len+' characters');}if(el.isLengthBetween!=null){var min=el.isLengthBetween[0];var max=el.isLengthBetween[1];if(!this.isLengthBetween(v,min,max))return this.doError(el,n+' must contain between '+min+' and '+max+' characters');}if(el.isPhoneNumber){if(!this.isPhoneNumber(v))return this.doError(el,v+' is not a valid phone number');}if(el.isDate){if(!this.isDate(v))return this.doError(el,v+' is not a valid date');}if(el.isMatch!=null){if(!this.isMatch(v,el.isMatch.value))return this.doError(el,n+' does not match');}}},this);if(this.passed){this.submit.disabled=true;this.f.submit();}return this.passed;},doError:function(el,err){this.passed=false;if(!this.focused){this.focused=true;el.focus();}el.addClass('error');var label=el.getParent().getElement('label');if(label)label.setHTML(err).addClass('error');},isEmpty:function(str){return(str==null)||(str.length==0);},isEmail:function(str){if(this.isEmpty(str))return false;return str.test('\\w{1,}[@][\\w\\-]{1,}([.]([\\w\\-]{1,})){1,3}$');},isAlpha:function(str){return str.test('^[a-zA-Z]+$');},isNumeric:function(str){return str.test('^[0-9]+$');},isAlphaNumeric:function(str){return str.test('^[a-zA-Z0-9]+$');},isLength:function(str,len){return str.length==len;},isLengthBetween:function(str,min,max){return(str.length>=min)&&(str.length<=max);},isPhoneNumber:function(str){return str.test(/^\(?[2-9]\d{2}[\)\.-]?\s?\d{3}[\s\.-]?\d{4}$/);},isDate:function(str){if(!str.test('^(\d{1,2})[\s\.\/-](\d{1,2})[\s\.\/-](\d{4})$'))return false;result=str.match(re);m=parseInt(result[1]);d=parseInt(result[2]);y=parseInt(result[3]);if(m<1||m>12||y<1900||y>2100)return false;if(m==2)days=((y%4)==0)?29:28;else if(m==4||m==6||m==9||m==11)days=30;else days=31;return(d>=1&&d<=days);},isMatch:function(str1,str2){return str1==str2;}});