jQuery.fn.uniform=function(b){var b=jQuery.extend({},jQuery.fn.uniform.defaults,b);var d={required:"%s is required",minlength:"%s should be at least %d characters long",min:"%s should be greater than or equal to %d",maxlength:"%s should not be longer than %d characters",max:"%s should be less than or equal to %d",same_as:"%s is expected to be same as %s",email:"%s is not a valid email address",url:"%s is not a valid URL",number:"%s needs to be a number",integer:"%s needs to be a whole number",alpha:"%s should contain only letters (without special characters or numbers)",alphanum:"%s should contain only numbers and letters (without special characters)",phrase:"%s should contain only alphabetic characters, numbers, spaces, and the following: . , - _ () * # :",phone:"%s should be a phone number",date:"%s should be a date (mm/dd/yyyy)",callback:"Failed to validate %s field. Validator function (%s) is not defined!",on_leave:"WTF? Are you sure you want to leave this page without saving this form?"};this.validators={get_val:function(f,h,e){var j=e;h=h.split(" ");for(var g=0;g<h.length;g++){if(h[g]==f){if((h[g+1]!="undefined")&&("val-"===h[g+1].substr(0,4))){j=parseInt(h[g+1].substr(4),10);return j}}}return j},required:function(f,e){if(jQuery.trim(f.val())==""){return c("required",e)}else{return true}},validateMinLength:function(g,e){var f=this.get_val("validateMinLength",g.attr("class"),0);if((f>0)&&(g.val().length<f)){return c("minlength",e,f)}else{return true}},validateMin:function(g,e){var f=this.get_val("validateMin",g.attr("class"),0);if((parseInt(g.val(),10)<f)){return c("min",e,f)}else{return true}},validateMaxLength:function(f,e){var g=this.get_val("validateMaxLength",f.attr("class"),0);if((g>0)&&(f.val().length>g)){return c("maxlength",e,g)}else{return true}},validateMax:function(g,e){var f=this.get_val("validateMax",g.attr("class"),0);if((parseInt(g.val(),10)>f)){return c("max",e,f)}else{return true}},validateSameAs:function(k,e){var j=k.attr("class").split(" ");var h="";for(var g=0;g<j.length;g++){if(j[g]=="validateSameAs"){if(j[g+1]!="undefined"){h=j[g+1];break}}}if(h){var f=jQuery('input[name="'+h+'"]');if(f.length>0){if(f.val()!=k.val()){var l=f.closest("div."+b.holder_class).find("label").text().replace("*","");return c("same_as",e,l)}}}return true},validateEmail:function(f,e){if(f.val().match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)){return true}else{return c("email",e)}},validateUrl:function(f,e){if(f.val().match(/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i)){return true}else{return c("url",e)}},validateNumber:function(f,e){if(f.val().match(/(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/)||f.val()==""){return true}else{return c("number",e)}},validateInteger:function(f,e){if(f.val().match(/(^-?\d\d*$)/)||f.val()==""){return true}else{return c("integer",e)}},validateAlpha:function(f,e){if(f.val().match(/^[a-zA-Z]+$/)){return true}else{return c("alpha",e)}},validateAlphaNum:function(f,e){if(f.val().match(/\W/)){return c("alphanum",e)}else{return true}},validatePhrase:function(f,e){if((f.val()=="")||f.val().match(/^[\w\d\.\-_\(\)\*'# :,]+$/i)){return true}else{return c("phrase",e)}},validatePhone:function(f,e){phoneNumber=/^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;if(phoneNumber.test(f.val())){return true}else{return c("phone",e)}},validateDate:function(f,e){if(f.val().match("(1[0-9]|[1-9])/([1-3][0-9]|[1-9])/((19|20)[0-9][0-9]|[0-9][0-9])")){return true}else{return c("date",e)}},validateCallback:function(j,e){var g=j.attr("class").split(" ");var h="";for(var f=0;f<g.length;f++){if(g[f]=="validateCallback"){if(g[f+1]!="undefined"){h=g[f+1];break}}}if(window[h]!="undefined"&&(typeof window[h]=="function")){return window[h](j,e)}return c("callback",e,h)}};var c=function(e){var f=d[e];var k=f.split("%");var g=k[0];var j=/^([ds])(.*)$/;for(var h=1;h<k.length;h++){p=j.exec(k[h]);if(!p||arguments[h]==null){continue}if(p[1]=="d"){g+=parseInt(arguments[h],10)}else{if(p[1]=="s"){g+=arguments[h]}}g+=p[2]}return g};var a=this;return this.each(function(){var e=jQuery(this);var g=function(k,i,j){var h=k.closest("div."+b.holder_class).andSelf().toggleClass(b.invalid_class,!i).toggleClass(b.error_class,!i).toggleClass(b.valid_class,i).find("p.formHint");if(!i&&!h.data("info-text")){h.data("info-text",h.html())}else{if(i){j=h.data("info-text")}}if(j){h.html(j)}};e.find(b.field_selector).each(function(){var i=$(this),h=i.val();i.data("default-color",i.css("color"));if(h===i.data("default-value")||!h){i.not("select").css("color",b.default_value_color);i.val(i.data("default-value"))}});if(b.ask_on_leave||e.hasClass("askOnLeave")){var f=e.serialize();$(window).bind("beforeunload",function(h){if(f!=e.serialize()){return b.on_leave_callback()}})}e.submit(function(){e.removeClass("failedSubmit");e.find(b.field_selector).each(function(){if($(this).val()===$(this).data("default-value")){$(this).val("")}});if((b.prevent_submit||e.hasClass("preventSubmit"))&&e.find("."+b.invalid_class).add("."+b.error_class).length){e.addClass("failedSubmit");return false}return true});e.delegate(b.field_selector,"focus",function(){e.find("."+b.focused_class).removeClass(b.focused_class);var h=$(this);h.parents().filter("."+b.holder_class+":first").addClass(b.focused_class);if(h.val()===h.data("default-value")){h.val("")}h.not("select").css("color",h.data("default-color"))});e.delegate(b.field_selector,"blur",function(){var k=$(this);var h=$(this).closest("div."+b.holder_class).find("label").text().replace("*","");e.find("."+b.focused_class).removeClass(b.focused_class);if((k.val()===""||k.val()===k.data("default-value"))&&!k.hasClass("required")){k.not("select").css("color",b.default_value_color);k.val(k.data("default-value"));return}var j=false;for(validator in a.validators){if(k.hasClass(validator)){j=true;var i=a.validators[validator](k,h);if(typeof(i)=="string"){k.trigger("error",i);return}}}if(j){k.trigger("success")}k.css("color",k.data("default-color"));return});e.delegate(b.field_selector,"error",function(h,i){g($(this),false,i)});e.delegate(b.field_selector,"success",function(h,i){g($(this),true)})})};jQuery.fn.uniform.defaults={prevent_submit:false,ask_on_leave:false,on_leave_callback:function(){return confirm(i18n("on_leave"))},valid_class:"valid",invalid_class:"invalid",error_class:"error",focused_class:"focused",holder_class:"ctrlHolder",field_selector:"input, textarea, select",default_value_color:"#AFAFAF"};$(document).ready(function(){jQuery("form").uniform()});
