(function($){$.fn.extend({validator:function(_2){return this.each(function(){var _3=this;var _4={serversideValidators:[],onValid:defaultOnValid,onError:defaultOnError,onLoading:defaultOnLoading,plugin:false,frequency:1000};if(_3.type=="checkbox"){_4.clientsideValidators=[{expression:/^true$/,errormessage:"Required"}];}else{_4.clientsideValidators=[{expression:/^.+$/,errormessage:"Required"}];}
var _5=$.extend(_4,_2);$(this).data("valid",false);_3.clientsideValidators=_5.clientsideValidators;_3.serversideValidators=_5.serversideValidators;_3.onValid=_5.onValid;_3.onError=_5.onError;_3.onLoading=_5.onLoading;_3.plugin=_5.plugin;_3.frequency=_5.frequency;initialize(_3);});},valid:function(){var _6=true;this.each(function(){validate(this);if($(this).data("valid")==false){_6=false;}});return _6;}});function initialize(_7){_7.errors=new Array();_7.valids=new Array();_7.keypressTimer=null;if($(_7).attr("value").length>0){validate(_7);}
activate(_7);}
function activate(_8){$(_8).keypress(function(e){handleKeypress(e,_8);});$(_8).change(function(e){handleChange(e,_8);});$(_8).blur(function(e){handleBlur(e,_8);});}
function handleKeypress(e,_d){if($(_d).attr("value").length>0){clearTimeout(_d.keypressTimer);_d.keypressTimer=setTimeout(function(){validate(_d);},_d.frequency);}}
function handleChange(e,_f){validate(_f);}
function handleBlur(e,_11){validate(_11);}
function validate(_12){_12.errors=new Array();_12.valids=new Array();var _13;if(_12.type=="checkbox"){_13=_12.checked;}else{_13=_12.value;}
clientsideValidation(_13,_12);}
function clientsideValidation(_14,_15){$.each(_15.clientsideValidators,function(i,_17){if(!_17.expression.test(_14)){_15.errors[_15.errors.length]=_17.errormessage;}else{if(_17.validmessage){_15.valids[_15.valids.length]=_17.validmessage;}}});if(_15.errors.length>0){onError(_15.errors,_15);}else{if(_15.serversideValidators.length>0){serversideValidation(_14,_15);}else{onValid(_15.valids,_15);}}}
function serversideValidation(_18,_19){$.each(_19.serversideValidators,function(i,_1b){$.post(_1b.url,{value:_18},function(_1c,_1d){if(_1c.valid){_19.valids[_19.valids.length]=_1c.message;}else{_19.errors[_19.errors.length]=_1c.message;}
if(_19.errors.length>0){onError(_19.errors,_19);}else{onValid(_19.valids,_19);}},"json");});}
function setMessage(_1e,_1f){var _20=$(_1f).parent();var _21=_1f.id+"ValidationMessage";if(!$("#"+_21).length>0){_20.append($(document.createElement("span")).attr("id",_21));}
$("#"+_21).html("");$("#"+_21).text(_1e[0]);}
function onValid(_22,_23){$(_23).data("valid",true);_23.onValid(_22,_23);}
function onError(_24,_25){$(_25).data("valid",false);_25.onError(_24,_25);}
function defaultOnValid(_26,_27){var _28=$(_27).parent();_28.removeClass("error");_28.removeClass("loading");_28.addClass("valid");setMessage(_26,_27);}
function defaultOnError(_29,_2a){var _2b=$(_2a).parent();_2b.removeClass("valid");_2b.removeClass("loading");_2b.addClass("error");setMessage(_29,_2a);}
function defaultOnLoading(_2c,_2d){var _2e=$(_2d).parent();_2e.removeClass("error");_2e.removeClass("valid");_2e.addClass("loading");setMessage(_2c,_2d);}})(jQuery);
