/***************************************************************
 * jQuery.nextVal 1.7.1    5/6/2010
 * Author: John Norton - jukebox42@gmail.com
 * This version works best with jquery 1.4+
 ***************************************************************/
typeof jQuery!="function"&&alert("You need to include jQuery 1.4.x first."); (function(d){var u=function(f,m){var p=this,b={useSummary:false,useInline:true,useStyles:true,styleParent:false,summaryStyle:"validation-summary",messageStyle:"validation-message",watermarkStyle:"validation-watermark",passedStyle:"validation-passed",failedStyle:"validation-failed",ignoreFieldClass:"validation-ignore",useTitles:false,useErrorText:true,summaryId:"vsummary-",messageId:"vmessage-",validationTag:"ul",itemCallback:function(){},formCallback:function(){},onCall:function(){return true},onBlur:false, watermark:true,attach:"top",customRules:[]};d.extend(b,m?m:{});var q=function(a){if(a.val()==""||a.val()==a.attr("watermark"))b.styleParent?a.val(a.attr("watermark")).parent().addClass(b.watermarkStyle):a.val(a.attr("watermark")).addClass(b.watermarkStyle);a.bind("focus",function(){var c=d(this);if(c.val()==c.attr("watermark"))b.styleParent?c.val("").parent().removeClass(b.watermarkStyle):c.val("").removeClass(b.watermarkStyle)}).bind("blur",function(){var c=d(this);if(c.val()=="")b.styleParent?c.val(c.attr("watermark")).parent().addClass(b.watermarkStyle): c.val(c.attr("watermark")).addClass(b.watermarkStyle)})},n=function(){if(!b.onCall)return false;var a=true,c=f.attr("nextVal");d("#"+b.summaryId+c).remove();d.each(d("input[validate], textarea[validate], select[validate]",f),function(){k(d(this))||(a=false)});(a=b.formCallback(a)||a)&&d.each(d("*[watermark]",f),function(){$o=d(this);$o.val()==$o.attr("watermark")&&$o.val("")});return a},k=function(a){var c=f.attr("nextVal");if(a.hasClass(b.ignoreFieldClass))return true;var e=true;b.styleParent?a.parent().removeClass(b.passedStyle+ " "+b.failedStyle):a.removeClass(b.passedStyle+" "+b.failedStyle);if(b.watermark&&a.attr("watermark")&&a.val()==a.attr("watermark"))b.styleParent?a.val("").parent().removeClass(b.watermarkStyle):a.val("").removeClass(b.watermarkStyle);d("#"+b.messageId+c+"-"+j(a.attr("name"))).remove();c=[["empty",function(g){return g.val()==""},"Please enter some text in this field."],["checked",function(g){return!g.is(":checked")},"It is required that you check this check box."],["alpha",function(g){return!g.val().match(/^[a-zA-Z]+$/)}, "Please use letter only. For example Sketchy."],["decimal",function(g){return!g.val().match(/^[0-9]+$/)},"Please use decimal numbers only. For example 42."],["number",function(g){return!g.val().match(/^[-]?([1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|\.[0-9]{1,2})$/)},"Please use numbers only. For example -4.2."],["email",function(g){return!g.val().match(/^\w+([&\-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/)},"Please enter a valid email address. For example john@somedomain.com."],["phone",function(g){return!g.val().match(/^[01]?[- .]?\(?(?!\d[1]{2})[2-9]\d{2}\)?[- .]?(?!\d[1]{2})\d{3}[- .]?\d{4}$/)}, "Please enter a valid US/Canada phone number. For example (603) 555-5555."],["postal",function(g){return!g.val().match(/^\d{5}-\d{4}|\d{5}|[A-Z]\d[A-Z] \d[A-Z]\d$/)},"Please enter a valid US/Canada postal code. For example 03102."],["date",function(g){return!g.val().match(/^(((((((0?[13578])|(1[02]))[\.\-/]?((0?[1-9])|([12]\d)|(3[01])))|(((0?[469])|(11))[\.\-/]?((0?[1-9])|([12]\d)|(30)))|((0?2)[\.\-/]?((0?[1-9])|(1\d)|(2[0-8]))))[\.\-/]?(((19)|(20))?([\d][\d]))))|((0?2)[\.\-/]?(29)[\.\-/]?(((19)|(20))?(([02468][048])|([13579][26])))))$/)}, "Please enter a valid date. For example 7/3/1987."]];c=c.concat(b.customRules);var h=c.length;if(a.is(":checkbox")&&a.attr("validate")!="checked"){h=a.attr("validate");c=h.match(/.*min\[([\d]*)\].*/)?h.match(/.*min\[([\d]*)\].*/)[1]:0;h=h.match(/.*max\[([\d]*)\].*/)?h.match(/.*max\[([\d]*)\].*/)[1]:99999;var o=d('input[name="'+j(a.attr("name"))+'"]:checked',f).size();(e=o>=c&&o<=h?e:false)||l(a,"You have not met the selection requirements.")}else if(a.attr("validate").match(/regex\[([^\s]*)\]/)){if(a.val().match(a.attr("validate").match(/regex\[([^\s]*)\]/)[1])== null){l(a,"Please match the information specified.");e=false}}else for(i=0;i<h;i++)if(r(a,c[i][0])&&c[i][1](a)){l(a,c[i][2]);e=false}if(b.useStyles)b.styleParent?a.parent().addClass(e?b.passedStyle:b.failedStyle):a.addClass(e?b.passedStyle:b.failedStyle);e=b.itemCallback(e)||e;if(b.watermark&&a.attr("watermark")&&a.val()=="")b.styleParent?a.val(a.attr("watermark")).parent().addClass(b.watermarkStyle):a.val(a.attr("watermark")).addClass(b.watermarkStyle);return e},l=function(a,c){if(a.is(":checkbox")|| a.is(":radio")){var e=d('input[name="'+j(a.attr("name"))+'"]',f);switch(b.attach){case "top":case "custom":a=e.first();break;case "bottom":a=e.last();break;default:a=e.first();break}}b.useInline&&t(a,c);if(b.useSummary){e=a;var h=b.summaryId+f.attr("nextVal");if(d("#"+h).size()<1){s="<"+b.validationTag+' class="'+b.summaryStyle+'" id="'+h+'"></'+b.validationTag+">";switch(b.attach){case "top":f.prepend(s);break;case "bottom":f.append(s);break;case "custom":f.attr("attach")?d(f.attr("attach")).first().prepend(s): f.prepend(s);break;default:d(b.attach).first().prepend(s);break}}d("#"+h).append("<"+(b.validationTag=="ul"?"li":b.validationTag)+' id="'+b.messageId+f.attr("nextVal")+"-"+e.attr("name")+'">'+(b.useTitles==true&&e.attr("title")?e.attr("title"):c)+"</"+(b.validationTag=="ul"?"li":b.validationTag)+">")}},t=function(a,c){var e="<"+b.validationTag+' class="'+b.messageStyle+'" id="'+b.messageId+f.attr("nextVal")+"-"+a.attr("name")+'">'+(b.validationTag=="ul"?"<li>":"")+(b.useErrorText==true&&a.attr("errorText")? a.attr("errorText"):c)+(b.validationTag=="ul"?"</li>":"")+"</"+b.validationTag+">";switch(b.attach){case "top":return a.before(e);case "bottom":return a.after(e);case "custom":return a.attr("attach")?d(a.attr("attach")).first().prepend(e):a.before(e);default:return d(b.attach).first().prepend(e)}},r=function(a,c){c=" "+c+" ";var e=" "+a.attr("validate")+" ";return e.match(c)==null?false:e.match(c)},j=function(a){var c=Array("#",";","&",",",".","+","*","~","'",":",'"',"!","^","$","[","]","(",")","=", ">","|","/"),e=c.length;for(i=0;i<e;i++)a=a.replace(c[i],"\\"+c[i]);return a};(function(){f.attr("nextVal",Math.floor(Math.random()*200));f.bind("submit",function(){return n()});b.watermark&&d("input[watermark], textarea[watermark]",f).each(function(){var a=d(this);q(a)});if(b.onBlur){d.each(d("input[validate]:checkbox, input[validate]:radio",f),function(){var a=d(this),c=a.attr("name"),e=a.attr("validate");a=a.attr("title");d('input[name="'+j(c)+'"]',f).attr({validate:e,title:a})});d("input[validate], textarea[validate], select[validate]", f).bind("blur",function(){return k(d(this))})}f.data("nextVal",p);f.data("nextVal.validate",function(){n()});f.data("nextVal.validateField",function(a){k(a)})})()};d.fn.nextVal=function(f){return this.each(function(){new u(d(this),f)})};d.fn.nextVal.version="1.7.1";d.fn.nextVal.validate=function(){return this.each(function(){d(this).data("nextVal.validate")()})};d.fn.nextVal.validateField=function(){return this.each(function(f){d(this).data("nextVal.validateField")(f)})}})(jQuery);
