(function($){$.fn.extend({valid8:function(b){return this.each(function(){$(this).data("valid",false);var a={reguglarExpressions:[],ajaxRequests:[],jsFunctions:[],onValid:defaultOnValid,onError:defaultOnError,validationEvents:["keyup","blur"],validationFrequency:500,values:null};if(self.type=="checkbox"){a.reguglarExpressions=[{expression:/^true$/,errormessage:"Required"}]}else{a.reguglarExpressions=[{expression:/^.+$/,errormessage:"Required"}]}$(this).data("settings",$.extend(a,b));initialize(this)})},isValid:function(){var a=true;this.each(function(){validate(this);if($(this).data("valid")==false){a=false}});return a}});function initialize(a){$(a).data("errors",new Array());$(a).data("valids",new Array());$(a).data("keypressTimer",null);if($(a).attr("value").length>0){validate(a)}activate(a)}function activate(b){var c=$(b).data("settings").validationEvents;if(typeof c=="string"){$(b)[c](function(e){handleEvent(e,b)})}else{$.each(c,function(i,a){$(b)[a](function(e){handleEvent(e,b)})})}}function validate(a){$(a).data("errors",new Array());$(a).data("valids",new Array());var b;if(a.type=="checkbox"){b=a.checked}else{b=a.value}regexpValidation(b,a)}function regexpValidation(b,c){$.each($(c).data("settings").reguglarExpressions,function(i,a){if(!a.expression.test(b)){$(c).data("errors")[$(c).data("errors").length]=a.errormessage}else{if(a.validmessage){$(c).data("valids")[$(c).data("valids").length]=a.validmessage}}});if($(c).data("errors").length>0){onError(c)}else{if($(c).data("settings").jsFunctions.length>0){functionValidation(b,c)}else{if($(c).data("settings").ajaxRequests.length>0){fileValidation(b,c)}else{onValid(c)}}}}function functionValidation(c,d){$.each($(d).data("settings").jsFunctions,function(i,a){var v;if(a.values){if(typeof a.values=="function"){v=a.values()}}var b=v||c;if(a["function"](b).valid){$(d).data("valids")[$(d).data("valids").length]=a["function"](b).message}else{$(d).data("errors")[$(d).data("errors").length]=a["function"](b).message}});if($(d).data("errors").length>0){onError(d)}else{if($(d).data("settings").ajaxRequests.length>0){fileValidation(c,d)}else{onValid(d)}}}function fileValidation(e,f){$.each($(f).data("settings").ajaxRequests,function(i,c){var v;if(c.values){if(typeof c.values=="function"){v=c.values()}}var d=v||{value:e};$.post(c.url,d,function(a,b){if(a.valid){$(f).data("valids")[$(f).data("valids").length]=a.message}else{$(f).data("errors")[$(f).data("errors").length]=a.message}if($(f).data("errors").length>0){onError(f)}else{onValid(f)}},"json")})}function handleEvent(e,a){if(e.keyCode&&$(a).attr("value").length>0){clearTimeout($(a).data("keypressTimer"));$(a).data("keypressTimer",setTimeout(function(){validate(a)},$(a).data("settings").validationFrequency))}else{validate(a)}}function defaultOnValid(a,b){var c=$(b).parent();c.removeClass("error");c.removeClass("loading");c.addClass("valid");setMessage(a,b)}function defaultOnError(a,b){var c=$(b).parent();c.removeClass("valid");c.removeClass("loading");c.addClass("error");setMessage(a,b)}function onValid(a){$(a).data("valid",true);$(a).data("settings").onValid($(a).data("valids"),a)}function onError(a){$(a).data("valid",false);$(a).data("settings").onError($(a).data("errors"),a)}function setMessage(a,b){var c=$(b).parent();var d=b.id+"ValidationMessage";if(!$("#"+d).length>0){c.append($(document.createElement("span")).attr("id",d))}$("#"+d).html("");$("#"+d).text(a[0])}})(jQuery);
