(function($){$.fn.rbh_formvalidator=function(m){var _methods={submit:function(){var c=null,r=true,a=null,cb=null,fn=$(this).attr("name");c=$("form[name="+fn+"] :input[rbh_validate]");$.each(c,function(k,v){$(v).data("form_name",fn);a=$(v).attr("rbh_validate");a=a.split(" ");$.each(a,function(k2,v2){switch(v2.toLowerCase()){case"asemail":if($(v).data("asemail_changeset")!="true"){$(v).change(_methods.asEmail);$(v).data("asemail_changeset","true")}if(!_methods.asEmail(v)){r=false}break;case"asequalto":if($(v).data("asequalto_changeset")!="true"){$(v).change(_methods.asEqualTo);$(v).data("asequalto_changeset","true")}if(!_methods.asEqualTo(v)){r=false}break;case"aszipcode":if($(v).data("aszipcode_changeset")!="true"){$(v).change(_methods.asZipcode);$(v).data("aszipcode_changeset","true")}if(!_methods.asZipcode(v)){r=false}break;case"bylength":if($(v).data("bylength_changeset")!="true"){$(v).change(_methods.byLength);$(v).data("bylength_changeset","true")}if(!_methods.byLength(v)){r=false}break;case"byregexp":if($(v).data("byregexp_changeset")!="true"){$(v).change(_methods.byRegExp);$(v).data("byregexp_changeset","true")}if(!_methods.byRegExp(v)){r=false}break;case"hascontent":if($(v).data("hascontent_changeset")!="true"){$(v).change(_methods.hasContent);$(v).data("hascontent_changeset","true")}if(!_methods.hasContent(v)){r=false}break;case"asnumeric":if($(v).data("asnumeric_changeset")!="true"){$(v).change(_methods.asNumeric);$(v).data("asnumeric_changeset","true")}if(!_methods.asNumeric(v)){r=false}break;case"asinteger":if($(v).data("asinteger_changeset")!="true"){$(v).change(_methods.asInteger);$(v).data("asinteger_changeset","true")}if(!_methods.asInteger(v)){r=false}break;case"optionselected":if($(v).data("optionselected_changeset")!="true"){$(v).change(_methods.optionSelected);$(v).data("optionselected_changeset","true")}if(!_methods.optionSelected(v)){r=false}break;default:break}})});if(r){cb=eval($(this).attr("rbh_validate_success"));if(cb){if($.isFunction(cb)){r=cb(this)}else{alert("RBH_FORMVALIDATOR ERROR: invalid function passed as form succeed handler");r=false}}}else{cb=eval($(this).attr("rbh_validate_fail"));if(cb){if($.isFunction(cb)){r=cb(this)}else{alert("RBH_FORMVALIDATOR ERROR: invalid function passed as form fail handler")}r=false}}return r},asEmail:function(el){if(!($(el).data("asemail_changeset"))){el=this}var r=/^[a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4}$/i,cb=false,errmsg="",ret=true,ignoreif=false;ignoreif=$(el).attr("rbh_validate_ignore_iftrue");if(ignoreif){if(eval(ignoreif)){return true}}if(_methods._regexptest(el.value,r)){cb=eval($(el).attr("rbh_validate_succeed"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" succeed handler')}}}else{cb=eval($(el).attr("rbh_validate_fail"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" fail handler')}}else{errmsg=$(el).attr("rbh_validate_errormessage");if(!errmsg){errmsg="Please enter a valid email address"}_methods.defaultErrorHandler({form:$(el).parent(),msg:errmsg})}ret=false}return ret},asEqualTo:function(el){if(!($(el).data("asequalto_changeset"))){el=this}var cb=false,errmsg="",val=false,cmpto=false,ret=true,ignoreif=false;ignoreif=$(el).attr("rbh_validate_ignore_iftrue");if(ignoreif){if(eval(ignoreif)){return true}}val=$(el).attr("value");cmpto=$("#"+$(el).attr("rbh_validate_compareto")).attr("value");if(val==cmpto){cb=eval($(el).attr("rbh_validate_succeed"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" succeed handler')}}}else{cb=eval($(el).attr("rbh_validate_fail"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" fail handler')}}else{errmsg=$(el).attr("rbh_validate_errormessage");if(!errmsg){errmsg="Your field comparison check failed."}_methods.defaultErrorHandler({form:$(el).parent(),msg:errmsg})}ret=false}return ret},asInteger:function(el){if(!($(el).data("asinteger_changeset"))){el=this}var cb=false,errmsg="",ret=true,max=$(el).attr("rbh_validate_maximum_value"),min=$(el).attr("rbh_validate_minimum_value"),minmaxtest=(el.value==parseInt(el.value)),ignoreif=false;ignoreif=$(el).attr("rbh_validate_ignore_iftrue");if(ignoreif){if(eval(ignoreif)){return true}}max=max==parseInt(max)?max:"";min=min==parseInt(min)?min:"";if(minmaxtest){if(!min==""&&!max==""){if(el.value<min||el.value>max){minmaxtest=false}else{minmaxtest=true}}else{if(!min==""&&max==""){if(el.value<min){minmaxtest=false}else{minmaxtest=true}}else{if(min==""&&!max==""){if(el.value>max){minmaxtest=false}else{minmaxtest=true}}}}}if(minmaxtest){cb=eval($(el).attr("rbh_validate_succeed"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" succeed handler')}}}else{cb=eval($(el).attr("rbh_validate_fail"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" fail handler')}}else{errmsg=$(el).attr("rbh_validate_errormessage");if(!errmsg){errmsg="Please enter a valid integer value."}_methods.defaultErrorHandler({form:$(el).parent(),msg:errmsg})}ret=false}return ret},asNumeric:function(el){if(!($(el).data("asnumeric_changeset"))){el=this}var cb=false,errmsg="",ret=true,max=$(el).attr("rbh_validate_maximum_value"),min=$(el).attr("rbh_validate_minimum_value"),minmaxtest=false,ignoreif=false;ignoreif=$(el).attr("rbh_validate_ignore_iftrue");if(ignoreif){if(eval(ignoreif)){return true}}max=max==parseFloat(max)?max:"";min=min==parseFloat(min)?min:"";if(!min==""&&!max==""){if(el.value==parseFloat(el.value)&&el.value>=min&&el.value<=max){minmaxtest=true}else{minmaxtest=false}}else{if(!min==""&&max==""){if(el.value==parseFloat(el.value)&&el.value>=min){minmaxtest=true}else{minmaxtest=false}}else{if(min==""&&!max==""){if(el.value==parseFloat(el.value)&&el.value<=max){minmaxtest=true}else{minmaxtest=false}}}}if(minmaxtest){cb=eval($(el).attr("rbh_validate_succeed"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" succeed handler')}}ret=true}else{cb=eval($(el).attr("rbh_validate_fail"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" fail handler')}}else{errmsg=$(el).attr("rbh_validate_errormessage");if(!errmsg){errmsg="Please enter a valid numeric value."}_methods.defaultErrorHandler({form:$(el).parent(),msg:errmsg})}ret=false}return ret},asZipcode:function(el){if(!($(el).data("aszipcode_changeset"))){el=this}var r=/^([0-9]{5}(?:-[0-9]{4})?)*$/,cb=false,errmsg="",ignoreif=false;ignoreif=$(el).attr("rbh_validate_ignore_iftrue");if(ignoreif){if(eval(ignoreif)){return true}}if(_methods._regexptest(el.value,r)){cb=eval($(el).attr("rbh_validate_succeed"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" succeed handler')}}return true}else{cb=eval($(el).attr("rbh_validate_fail"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" fail handler')}}else{errmsg=$(el).attr("rbh_validate_errormessage");if(!errmsg){errmsg="Please enter a valid zipcode."}_methods.defaultErrorHandler({form:$(el).parent(),msg:errmsg})}return false}},byLength:function(el){if(!($(el).data("bylength_changeset"))){el=this}var min=0,max=0,t="",cb=false,errmsg="",ret=true,failed=false,ignoreif=false;ignoreif=$(el).attr("rbh_validate_ignore_iftrue");if(ignoreif){if(eval(ignoreif)){return true}}min=$(el).attr("rbh_validate_minimumlength");max=$(el).attr("rbh_validate_maximumlength");t=el.value;if(min&&max){if(t.length<min||t.length>max){failed=true}}else{if(min){if(t.length<min){failed=true}}else{if(max){if(t.length>max){failed=true}}}}if(failed){cb=eval($(el).attr("rbh_validate_fail"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" fail handler')}}else{errmsg=$(el).attr("rbh_validate_errormessage");if(!errmsg){errmsg=t.length<min?"too few":"too many";errmsg="A field has "+errmsg+" characters entered."}_methods.defaultErrorHandler({form:$(el).parent(),msg:errmsg})}ret=false}else{cb=eval($(el).attr("rbh_validate_succeed"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" succeed handler')}}}return ret},byRegExp:function(el){if(!($(el).data("byregexp_changeset"))){el=this}var r="",cb=false,errmsg="",ret=true,ignoreif=false;ignoreif=$(el).attr("rbh_validate_ignore_iftrue");if(ignoreif){if(eval(ignoreif)){return true}}r=$(el).attr("rbh_validate_regexp");try{r=eval(r)}catch(ex){errmsg=$(el).attr("rbh_validate_errormessage");if(!errmsg){errmsg="An invalid regular expression has been passed as a regexp test."}_methods.defaultErrorHandler({form:$(el).parent(),msg:errmsg});ret=false;return}if(_methods._regexptest(el.value,r)){cb=eval($(el).attr("rbh_validate_succeed"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" succeed handler')}}}else{cb=eval($(el).attr("rbh_validate_fail"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" fail handler')}}else{errmsg=$(el).attr("rbh_validate_errormessage");if(!errmsg){errmsg="An element was tested against a regular expression and failed."}_methods.defaultErrorHandler({form:$(el).parent(),msg:errmsg})}ret=false}return ret},hasContent:function(el){if(!($(el).data("hascontent_changeset"))){el=this}var cb=false,errmsg="",ret=true,ignoreif=false;ignoreif=$(el).attr("rbh_validate_ignore_iftrue");if(ignoreif){if(eval(ignoreif)){return true}}if(el.value.length>0){cb=eval($(el).attr("rbh_validate_succeed"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" succeed handler')}}}else{cb=eval($(el).attr("rbh_validate_fail"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" succeed handler')}}else{errmsg=$(el).attr("rbh_validate_errormessage");if(!errmsg){errmsg="A required field has not been filled in."}_methods.defaultErrorHandler({form:$(el).parent(),msg:errmsg})}ret=false}return ret},optionSelected:function(el){if(!($(el).data("optionselected_changeset"))){el=this}var cb=false,items=false,errmsg="",ret=false,ignoreif=false;ignoreif=$(el).attr("rbh_validate_ignore_iftrue");if(ignoreif){if(eval(ignoreif)){return true}}items=$("form[name="+$(el).data("form_name")+"] :input[name="+el.name+"]");$.each(items,function(k,v){if(v.checked){ret=true}});if(ret){cb=eval($(el).attr("rbh_validate_succeed"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" succeed handler')}}}else{cb=eval($(el).attr("rbh_validate_fail"));if(cb){if($.isFunction(cb)){cb(el)}else{alert('RBH_FORMVALIDATOR ERROR: invalid function passed as form element "'+el.name+'" succeed handler')}}else{errmsg=$(el).attr("rbh_validate_errormessage");if(!errmsg){errmsg="A required field has not been filled in."}_methods.defaultErrorHandler({form:$(el).parent(),msg:errmsg})}}return ret},defaultErrorHandler:function(inob){var cb=$(inob.form).attr("rbh_validate_defaultfail");if(cb){if($.isFunction(cb)){cb(inob.form)}else{alert("RBH_FORMVALIDATOR ERROR: invalid function passed as form wide default fail handler")}}else{alert(inob.msg)}},_regexptest:function(t,r){if(t==""||r==""){return false}if(t.search(r)>-1){return true}else{return false}}};$("form[rbh_onsubmit=validate]").submit(_methods.submit)}})(jQuery);
