﻿// jQuery Form Validators v0.3.4
// License: http://validator.codeplex.com/license
var validate; (function(b){function i(){f(this)?b(this).highlight():b(this).unhighlight()}function f(c){var a=b(c),e=a.find("input:radio, input:checkbox").size();if(a.attr("disabled")||e>0&&e==a.find("input:radio:disabled, input:checkbox:disabled").size())return"";if((a.val()==""||a.val()==null)&&a.find("input:radio:checked, input:checkbox:checked").size()==0)return a.attr("require")?"require":"";if(a.attr("regular")&&a.attr("validExpress")&&!RegExp(a.attr("validExpress"),"m").test(a.val()))return"regular";if(a.attr("regular")&& a.attr("invalidExpress")&&RegExp(a.attr("invalidExpress"),"m").test(a.val()))return"regular";if(a.attr("compare")&&b("#"+a.attr("compareTo")).val()!=a.val())return"compare";if(a.attr("custom")&&!(new Function(a.attr("customFn"))).call(c))return"custom";if(a.attr("invalid")&&a.val()==a.attr("invalidVal"))return"invalid";if(validators!=undefined)for(var d in validators)if(a.attr(d)&&validators[d].call(a.val()))return d}function g(){var c=b(this),a=c.offset().top+c.height()+4,e=c.offset().left+Math.max(c.width()- 260,0);c.parents().each(function(){if(b(this).css("position")!="static"&&(!b.browser.mozilla||b(this).css("display")!="table")){var d=b(this).offset();a-=d.top;e-=d.left;return false}});c.parent().children(".alertbox").remove();c.parent().append("<div class='alertbox' style='top:"+a+"px; left:"+e+"px;'><div>"+c.attr(f(this))+"</div></div>")}function h(){b(this).parent().children(".alertbox").remove()}validate=function(c){var a=true;b("*[validate="+c+"]").each(function(e,d){if(f(d)){b(d).highlight(); a&&b(d).focus();a=false}else b(d).unhighlight()});return a};b.fn.highlight=function(){this.addClass("highlight").focus(g).blur(h).change(i);return this};b.fn.unhighlight=function(){this.removeClass("highlight").unbind("focus",g).unbind("blur",h).parent().children(".alertbox").remove();return this}})(jQuery);

//add common custom validators here
var validators = {
	"email": function() { return !new RegExp("[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?", "m").test(this); }
};

