(function(b){function a(f,e,d){this.form=f;this.fn=e;this.has_error=false;this.errors=[];this.settings=d}a.prototype={validate:function(g){if(window.tinyMCE&&tinyMCE.triggerSave){tinyMCE.triggerSave()}var d={};var f=this;b(":input").each(function(){var h=b(this),e=h.attr("name");if(!d[e]){d[e]=new c(this,f)}else{d[e].add_value(this)}});this.fn.apply(this.form,[d]);if(this.has_error){if(this.settings.beforeAlert){this.settings.beforeAlert.apply(this.form,g)}if(this.settings.autoFocus){this.errors[0][1][0].focus()}if(this.settings["class"]){b(this.errors[0][1][0]).addClass(this.settings["class"])}alert(this.errors[0][0]);g.preventDefault();return false}return true},add_error:function(d,f){this.has_error=true;var e=this.title(b(d).attr("name"));f=f.replace(/\{title\}/,e);this.errors.push([f,d])},title:function(e){var h=e.split("_");var g=[];var f=0;for(var d=0;d<h.length;d++){g[d]=h[d].substr(0,1).toUpperCase()+h[d].substr(1)}return g.join(" ")}};function c(d,e){this.input=[];this.form=e;var f=d.nodeName.toLowerCase();this.empty=true;this.value=null;this.values=[];if(f=="textarea"){this.type="textarea"}else{if(f=="select"){this.type="select"}else{this.type=d.type.toLowerCase()}}this.add_value(d)}c.prototype={add_value:function(f){this.input.push(f);if(this.form.settings["class"]){b(f).removeClass(this.form.settings["class"])}var e=b(this.input).serializeArray();if(b(this.input).attr("type").toLowerCase()=="file"){this.value=b(this.input).val();this.empty=b.trim(this.value)==""}else{if(e.length==0){this.empty=true;this.value=null}else{this.value=e[0].value;this.values=[];for(var g=0,d=e.length;g<d;g++){this.values.push(e[g].value)}this.empty=b.trim(this.values.join())==""}}},add_error:function(d){this.form.add_error(this.input,d)},required:function(d){if(this.empty){if(d){this.add_error(d)}if(this.type=="select"||this.type=="radio"){this.add_error("Please choose a {title}")}else{if(this.type=="checkbox"){this.add_error("Please check: {title}")}}this.add_error("{title} must be filled out")}return this},email:function(d){if(!this.empty&&!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$/).test(this.value)){this.add_error(d||"{title} must be a valid email address")}return this},integer:function(d){if(!this.empty&&!(/^[+-]?\d+$/.test(this.value))){this.add_error(d||"{title} must be an integer")}return this},money:function(e){if(!this.empty){var d=this.value.replace("$","").replace(",","");this.value=d;if(!(/^[+-]?\d+$/.test(d)||/^[+-]?\d+\.\d\d?$/.test(d))){this.add_error(e||"{title} must be a money value")}}return this},greater_than:function(d,e){if(!this.empty&&!((+this.value)>d)){this.add_error(e||"{title} must be greater than "+d)}return this},less_than:function(d,e){if(!this.empty&&!((+this.value)<d)){this.add_error(e||"{title} must be less than "+d)}return this},min:function(d,e){if(!this.empty&&this.value.length<d){this.add_error(e||"{title} must be at least "+d+" long")}return this},max:function(d,e){if(!this.empty&&this.value.length>d){this.add_error(e||"{title} must be at most "+d+" long")}return this},swf_ext_check:function(e){if(!this.empty){var d=this.value.toLowerCase();if(d.lastIndexOf(".swf")==-1){this.add_error(e||"{title} must be in SWF format")}}return this},pdf_ext_check:function(e){if(!this.empty){var d=this.value.toLowerCase();if(d.lastIndexOf(".pdf")==-1){this.add_error(e||"{title} must be in PDF format")}}return this},img_ext_check:function(e){if(!this.empty){var d=this.value.toLowerCase();if(d.lastIndexOf(".jpg")==-1&&d.lastIndexOf(".gif")==-1){this.add_error(e||"{title} must be either GIF or JPG format")}}return this},img_swf_ext_check:function(e){if(!this.empty){var d=this.value.toLowerCase();if(d.lastIndexOf(".jpg")==-1&&d.lastIndexOf(".gif")==-1&&d.lastIndexOf(".swf")==-1){this.add_error(e||"{title} must be either GIF, JPG or SWF format")}}return this},swf_ext_check:function(e){if(!this.empty){var d=this.value.toLowerCase();if(d.lastIndexOf(".swf")==-1){this.add_error(e||"{title} must be either GIF, JPG or SWF format")}}return this}};b.fn.validate=function(d,e){return this.each(function(){var g=this,f=b.extend({mode:"alert","class":"validationError",autoFocus:true,afterSubmit:null,beforeAlert:null},e);b(this).submit(function(i){var h=new a(g,d,f);if(f.afterSubmit){f.afterSubmit.apply(g,i)}return h.validate(i)})})}})(jQuery);
