function Field(a){if(a.length&&!a.nodeName){this.elements=a;this.element=a[0]}else{this.element=a}var b=this.element.nodeName.toLowerCase();if(b=="textarea"){this.type="textarea"}else{if(b=="select"){this.type="select"}else{this.type=this.element.type}}this.name=this.element.getAttribute("name")}Field.prototype={pre_validate:function(){this.errors=[];this.value=undefined;switch(this.type){case"radio":for(var c=0,a=this.elements.length;c<a;c++){var d=this.elements[c];if(d.checked){this.value=d.value;break}}break;case"select":var b=this.element.options[this.element.selectedIndex];this.value=(document.all&&!b.attributes.value.specified)?b.text:b.value;break;case"checkbox":this.value=this.element.checked?this.element.value:undefined;break;default:this.value=this.element.value}this.empty=(this.value==undefined||this.value=="")},add_error:function(a){this.errors.push(a.replace("{title}",this.title()))},mark:function(a){a=a||Form.options.cssClass;if(this.errors.length==0){var b=new RegExp("(\\s|^)"+a+"(\\s|$)");this.element.className=this.element.className.replace(b," ")}else{this.element.className=(this.element.className?(this.element.className+" "+a):a)}},unmark:function(a){a=a||Form.options.cssClass;var b=new RegExp("(\\s|^)"+a+"(\\s|$)");this.element.className=this.element.className.replace(b," ")},title:function(){var d=this.name.split("_");var c=[];var b=0;for(var a=0;a<d.length;a++){c[a]=d[a].substr(0,1).toUpperCase()+d[a].substr(1)}return c.join(" ")}};function Validator(a){this.field=a}Validator.prototype={validate:function(){var a=this.invalid.apply(this,arguments);if(a){this.field.add_error(a)}}};Validator.add=function(a,b){Field.prototype[a]=function(){var c=new Validator(this,b);c.invalid=b;c.validate.apply(c,arguments);return this}};Validator.add_many=function(a){for(k in a){Validator.add(k,a[k])}};Validator.add_many({required:function(a){if(this.field.empty){if(a){return a}if(this.field.type=="select"||this.field.type=="radio"){return"Please choose a {title}"}else{if(this.field.type=="checkbox"){return"Please check: {title}"}}return"{title} must be filled out"}},email:function(a){if(!this.field.empty&&!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$/).test(this.field.value.split(" ").join(""))){return a||"{title} must be a valid email address"}},integer:function(a){if(!this.field.empty&&!(/^\d+$/.test(this.field.value))){return a||"{title} must be an integer"}},number:function(a){if(!this.field.empty&&isNaN(this.field.value)){return a||"{title} must be an number"}},money:function(b){if(!this.field.empty){var a=this.field.value.replace("$","").replace(",","");this.field.value=a;if(!(/^[+-]?\d+$/.test(a)||/^[+-]?\d+\.\d\d?$/.test(a))){return b||"{title} must be a money value"}}},greater_than:function(a,b){if(!this.field.empty&&!((+this.field.value)>a)){return b||"{title} must be greater than "+a}},less_than:function(a,b){if(!this.field.empty&&!((+this.field.value)<a)){return b||"{title} must be less than "+a}},min:function(a,b){if(!this.field.empty&&this.field.value.length<a){return b||"{title} must be at least "+a+" long"}},max:function(a,b){if(!this.empty&&this.field.value.length>a){return b||"{title} must be at most "+a+" long"}},any:function(f){if(this.field.elements&&this.field.elements.length){var d=false,c;for(var b=0,a=this.field.elements.length;b<a;b++){var e=new Field(this.field.elements[b]);e.pre_validate();f.apply(e);if(e.errors.length>0){if(!c){c=e.errors[0]}}else{d=true}}if(!d){return c}}},date_format_mmddyyyy:function(a,c){if(!this.empty){var b=this.field.value.split(a);if(b.length==3&&(/^\d+$/.test(b[0]))&&(/^\d+$/.test(b[1]))&&(/^\d+$/.test(b[2]))&&b[0].length==2&&b[1].length==2&&b[2].length==4&&(+b[0]>0&&+b[0]<13)&&(+b[1]>0&&+b[1]<32)&&(+b[2]>1900&&+b[2]<2100)){null}else{return c}}},pdf_ext_check:function(b){var a=this.field.value.toLowerCase();if(a.lastIndexOf(".pdf")==-1){return b}},media_ext_check:function(b){var a=this.field.value.toLowerCase();if(a.lastIndexOf(".pdf")==-1&&a.lastIndexOf(".mp3")==-1){return b}},img_ext_check:function(b){var a=this.field.value.toLowerCase();if(a.lastIndexOf(".jpg")==-1&&a.lastIndexOf(".gif")==-1){return b}},img_swf_ext_check:function(b){var a=this.field.value.toLowerCase();if(a.lastIndexOf(".jpg")==-1&&a.lastIndexOf(".gif")==-1&&a.lastIndexOf(".swf")==-1){return b}},cc_card_val:function(a){var c=0;var d=new Array();d[0]="Unknown card type";d[1]="No card number provided";d[2]="Credit card number is in invalid format";d[3]="Credit card number is invalid";d[4]="Credit card number has an inappropriate number of digits";this.field.value=this.field.value.replace(/\D+/g,"");var b=function(s){var f=new Array();f[0]={name:"Visa",length:"13,16",prefixes:"4",checkdigit:true};f[1]={name:"MasterCard",length:"16",prefixes:"51,52,53,54,55",checkdigit:true};f[2]={name:"AmEx",length:"15",prefixes:"34,37",checkdigit:true};f[3]={name:"Discover",length:"16",prefixes:"6011,622,64,65",checkdigit:true};var e=-1;for(var p=0;p<f.length;p++){if(a.toLowerCase()==f[p].name.toLowerCase()){e=p;break}}if(e==-1){c=0;return false}if(s.length==0){c=1;return false}s=s.replace(/\s/g,"");var v=s;var t=/^[0-9]{13,19}$/;if(!t.exec(v)){c=2;return false}if(f[e].checkdigit){var r=0;var w="";var o=1;var n;for(p=v.length-1;p>=0;p--){n=Number(v.charAt(p))*o;if(n>9){r=r+1;n=n-10}r=r+n;if(o==1){o=2}else{o=1}}if(r%10!=0){c=3;return false}}var m=false;var u=false;var g;var q=new Array();var h=new Array();q=f[e].prefixes.split(",");for(p=0;p<q.length;p++){var l=new RegExp("^"+q[p]);if(l.test(v)){u=true}}if(!u){c=3;return false}h=f[e].length.split(",");for(o=0;o<h.length;o++){if(v.length==h[o]){m=true}}if(!m){c=4;return false}return true};if(!this.empty&&a&&!b(this.field.value)){return d[c]}}});function Form(h,d){this._form=h;this._elements=[];this._errors={};this._options=Form.options;for(var b in d){this._options[b]=d[b]}for(var e=0,a=h.length;e<a;e++){var f=h[e],c=f.name;if(!this[c]&&f.nodeName.toLowerCase()!="fieldset"){this[c]=new Field(h[c]);this._elements.push(c)}}var g=this;h.onsubmit=function(){if(g._options.afterSubmit){g._options.afterSubmit(g)}g._pre_validate();g._validate();return g._get_errors()};h["data-form-validation"]=this}Form.validate=function(d,b,a){var c=new Form(document.getElementById(d),a);c._validate=b;return c};Form.prototype={_pre_validate:function(){this._errors={};if(window.tinyMCE&&tinyMCE.triggerSave){tinyMCE.triggerSave()}for(var b=0,a=this._elements.length;b<a;b++){var c=this[this._elements[b]];c.pre_validate();c.unmark(this._options.cssClass)}},_get_errors:function(){var c;for(var b=0,a=this._elements.length;b<a;b++){var e=this._elements[b],d=this[e];if(d.errors.length>0){if(!c){c=d.errors[0];d.mark(this._options.cssClass);d.element.focus()}this._errors[e]=d.errors}}for(var b in this._errors){if(this._options.beforeAlert){this._options.beforeAlert(c,this)}alert(c);return false}return true}};Form.options={cssClass:"validationError",beforeAlert:false,afterSubmit:false};document.write('<style text="text/style">.validationError { border: 1px solid red; }</style>');