(function($){$.fn.formValidator=function(options){$(this).click(function(){var result=$.formValidator(options);if(result&&jQuery.isFunction(options.onSuccess)){options.onSuccess();return false;}else if(!result&&jQuery.isFunction(options.onError)){options.onError();return false;}else{return result;}});};$.formValidator=function(options){var merged_options=$.extend({},$.formValidator.defaults,options);var boolValid=true;var errorMsg='';var multiErrorMsg=new Array();var multiOutput='';$(merged_options.scope+' .error-both, '+merged_options.scope+' .error-same, '+merged_options.scope+' .error-input').removeClass('error-both').removeClass('error-same').removeClass('error-input');$(merged_options.scope+' .req-email, '+merged_options.scope+' .req-string, '+merged_options.scope+' .req-same, '+merged_options.scope+' .req-both, '+merged_options.scope+' .req-numeric, '+merged_options.scope+' .req-date, '+merged_options.scope+' .req-min').each(function(){thisValid=$.formValidator.validate($(this),merged_options);boolValid=boolValid&&thisValid.error;if(!thisValid.error)errorMsg=thisValid.message;if(thisValid.message!='')multiErrorMsg[multiErrorMsg.length]=thisValid.message;});multiErrorMsg=array_unique(multiErrorMsg);for(id in multiErrorMsg){multiOutput+=' - '+multiErrorMsg[id]+'<br />';}if(!merged_options.extraBool()&&boolValid){boolValid=false;errorMsg=merged_options.extraBoolMsg;}if((merged_options.scope!='')&&boolValid){$(merged_options.errorDiv).fadeOut();}if(!boolValid&&errorMsg!=''){var tempErr=(merged_options.customErrMsg!='')?merged_options.customErrMsg:errorMsg;errorShow(multiOutput);}return boolValid;};$.formValidator.validate=function(obj,opts){var valAttr=obj.val();var css=opts.errorClass;var mail_filter=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;var url_filter=/^https?:\/\/[a-z0-9-]{2,63}(?:\.[a-z0-9-]{2,})*(?::[0-9]{0,5})?(?:\/|$)\S*$/;var numeric_filter=/(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)|(^-?\d*$)/;var phone_filter=/[0-9]+/;var tmpresult=true;var result=true;var errorTxt='';if(obj.hasClass('req-string')){tmpresult=(valAttr!='');if(!tmpresult)errorTxt=opts.errorMsg.reqString;result=result&&tmpresult;}if(obj.hasClass('req-same')){tmpresult=true;group=obj.attr('rel');tmpresult=true;$(opts.scope+' .req-same[rel="'+group+'"]').each(function(){if($(this).val()!=valAttr||valAttr==''){tmpresult=false;}});if(!tmpresult){$(opts.scope+' .req-same[rel="'+group+'"]').parent().parent().addClass('error-same');errorTxt=opts.errorMsg.reqSame;}else{$(opts.scope+' .req-same[rel="'+group+'"]').parent().parent().removeClass('error-same');}result=result&&tmpresult;}if(obj.hasClass('req-both')){tmpresult=true;if(valAttr!=''){group=obj.attr('rel');$(opts.scope+' .req-both[rel="'+group+'"]').each(function(){if($(this).val()==''){tmpresult=false;}});if(!tmpresult){$(opts.scope+' .req-both[rel="'+group+'"]').parent().parent().addClass('error-both');errorTxt=opts.errorMsg.reqBoth;}else{$(opts.scope+' .req-both[rel="'+group+'"]').parent().parent().removeClass('error-both');}}result=result&&tmpresult;}if(obj.hasClass('req-email')){if(!obj.hasClass('req-string')&&valAttr==''){result=true;}else
{tmpresult=mail_filter.test(valAttr);if(!tmpresult)errorTxt=(valAttr=='')?opts.errorMsg.reqMailEmpty:opts.errorMsg.reqMailNotValid;result=result&&tmpresult;}}if(obj.hasClass('req-url')){if(!obj.hasClass('req-string')&&valAttr==''){result=true;}else
{tmpresult=url_filter.test(valAttr);if(!tmpresult)errorTxt=(valAttr=='')?opts.errorMsg.reqUrlEmpty:opts.errorMsg.reqUrlNotValid;result=result&&tmpresult;}}if(obj.hasClass('req-phone')){tmpresult=phone_filter.test(valAttr);if(!tmpresult)errorTxt=(valAttr=='')?opts.errorMsg.reqPhoneEmpty:opts.errorMsg.reqPhoneNotValid;result=result&&tmpresult;}if(obj.hasClass('req-date')){tmpresult=true;var arr=valAttr.split(opts.dateSeperator);var curDate=new Date();if(valAttr==''){tmpresult=true;}else{if(arr.length<3){tmpresult=false;}else{tmpresult=(arr[2]<=curDate.getFullYear()+3)&&(arr[1]<=12)&&(arr[0]<=31);}}if(!tmpresult)errorTxt=opts.errorMsg.reqDate;result=result&&tmpresult;}if(obj.hasClass('req-min')){tmpresult=(valAttr.length>=obj.attr('minlength'));if(!tmpresult)errorTxt=opts.errorMsg.reqMin.replace('%1',obj.attr('minlength'));result=result&&tmpresult;}if(obj.hasClass('req-numeric')){tmpresult=numeric_filter.test(valAttr);if(!tmpresult)errorTxt=opts.errorMsg.reqNum;result=result&&tmpresult;}if(obj.attr('rel')){if(result){$('#'+obj.attr('rel')).removeClass(css);}else{$('#'+obj.attr('rel')).addClass(css);}}else{if(result){obj.removeClass(css);}else{obj.addClass(css);}}return{error:result,message:errorTxt};};$.formValidator.defaults={onSuccess:null,onError:null,scope:'',errorClass:'error-input',errorDiv:'#warn',errorMsg:{reqString:'Fill in the required fields',reqDate:'Not valid date',reqNum:'You can only enter numbers',reqMailNotValid:'Not valid E-mail',reqMailEmpty:'Enter your E-mail',reqUrlNotValid:'Not valid Url',reqUrlEmpty:'Enter your Url',reqPhoneNotValid:'Not valid Phone number',reqPhoneEmpty:'Enter your Phone number',reqSame:'Not repeat the same',reqBoth:'You must fill in the appropriate fields!',reqMin:'You must enter a minimum of %1 characters'},customErrMsg:'',extraBoolMsg:'Check your form carefully!',dateSeperator:'-',extraBool:function(){return true;}};})(jQuery);function array_unique(inputArr){var key='',tmp_arr2={},val='';var __array_search=function(needle,haystack){var fkey='';for(fkey in haystack){if(haystack.hasOwnProperty(fkey)){if((haystack[fkey]+'')===(needle+'')){return fkey;}}}return false;};for(key in inputArr){if(inputArr.hasOwnProperty(key)){val=inputArr[key];if(false===__array_search(val,tmp_arr2)){tmp_arr2[key]=val;}}}return tmp_arr2;}