(function(f){var b=function(k,h){var j=typeof k[h],i=new RegExp("^function|object$","i");return !!((i.test(j)&&k[h])||j=="unknown")};var d=document.createElement("input");var a={inputAttr:{placeholder:!!("placeholder" in d),required:!!("required" in d),pattern:!!("pattern" in d),min:!!("min" in d),max:!!("max" in d)},hostMethod:{validity:b(d,"validity"),checkValidity:b(d,"checkValidity"),setCustomValidity:b(d,"setCustomValidity"),valueAsNumber:b(d,"valueAsNumber"),valueAsDate:b(d,"valueAsDate")}};var c=(function(){if(a.inputAttr.placeholder){return function(i,j){i.get(0).control.value=function(){return i.get(0).value}}}var h=function(i,j){this.input=i;this.style=j.classes.placeholder;if(i.attr("type")=="password"){this.handlePassword()}};h.prototype={show:function(j){if(this.input[0].value===""||(j&&this.valueIsPlaceholder())){if(this.isPassword){try{this.input[0].setAttribute("type","text")}catch(i){this.input.before(this.fakePassword.show()).hide()}}this.input.addClass(this.style);this.input[0].value=this.input.attr(this.style)}},hide:function(){if(this.valueIsPlaceholder()&&this.input.hasClass(this.style)){this.input.removeClass(this.style);this.input[0].value="";if(this.isPassword){try{this.input[0].setAttribute("type","password")}catch(i){}this.input.show();this.input[0].focus()}}},valueIsPlaceholder:function(){return this.input[0].value==this.input.attr(this.style)},handlePassword:function(){var i=this.input;i.attr("realType","password");this.isPassword=true;if(f.browser.msie&&i[0].outerHTML){var j=f(i[0].outerHTML.replace(/type=(['"])?password\1/gi,"type=$1text$1"));this.fakePassword=j.val(i.attr(this.style)).addClass(this.style).focus(function(){i.trigger("focus");f(this).hide()});f(i[0].form).submit(function(){j.remove();i.show()})}}};return function(i,j){var k=i.get(0);if(i.attr("placeholder")){k.control.value=function(){var m=i.attr("placeholder");var n=i.val();return(!!m&&i.hasClass(j.classes.placeholder)&&n===m)?"":n};var l=new h(i,j);l.show(true);i.focus(function(){l.hide()}).blur(function(){l.show(false)});if(f.browser.msie){f(window).load(function(){if(i.val()){i.removeClass(j.classes.placeholder)}l.show(true)});i.focus(function(){if(this.value==""){var m=this.createTextRange();m.collapse(true);m.moveStart("character",0);m.select()}})}}else{k.control.value=function(){return k.value}}}})();var g=(function(){if(a.hostMethod.validity){return function(){}}var h=function(k,j){return j.test(k)};var i={email:new RegExp("^[a-z0-9_.%+-]+@[0-9a-z.-]+\\.[a-z.]{2,6}$","i"),url:new RegExp("[a-z][-.+a-z]*://","i")};return function(k,o){var p=k.get(0);var j=p.getAttribute("type");p.validationMessage="";p.validity={customError:false,patternMismatch:false,rangeOverflow:false,rangeUnderflow:false,stepMismatch:false,tooLong:false,typeMismatch:false,valid:true,valueMissing:false};if(k.attr("required")!==undefined){k.addClass(o.classes.required)}var n=[{check:true,op:function(){if(p.validity.customError){return p.validationMessage}}},{check:k.attr("required")!==undefined,op:function(){if(p.control.value()===""){p.validity.valueMissing=true;return o.messages.required}else{p.validity.valueMissing=false}}},{check:j==="email"||j==="url",op:function(){var r=p.control.value();if(!h(r,i[j])&&r!==""){p.validity.typeMismatch=true;return o.messages[j]}else{p.validity.typeMismatch=false}}},{check:j==="number",op:function(){var r=p.control.value();if(isNaN(r)&&r!==""){p.validity.typeMismatch=true;return o.messages.number}else{p.validity.typeMismatch=false}}},{check:k.attr("pattern")!==undefined,op:function(){var s=p.control.value();var r=new RegExp(k.attr("pattern"));if(!r.test(s)&&s!==""){p.validity.patternMismatch=true;return o.messages.pattern}else{p.validity.patternMismatch=false}}}];var m=[];for(var l=0;l<n.length;l++){if(n[l].check){m.push(n[l].op)}}var q=p.control.validate=function(){var t=undefined;for(var r=0;r<m.length;r++){var s=m[r]();if(!!s&&!!!t){t=s}}p.validationMessage=t||"";p.validity.valid=(!p.validity.customError&&!p.validity.valueMissing&&!p.validity.tooLong&&!p.validity.typeMismatch&&!p.validity.patternMismatch&&!p.validity.rangeOverflow&&!p.validity.rangeUnderflow&&!p.validity.stepMismatch);if(p.validity.valid){k.removeClass(o.classes.invalid).addClass(o.classes.valid)}else{k.removeClass(o.classes.valid).addClass(o.classes.invalid)}};if(f.browser.msie){k.bind("keyup change",function(){f(this).trigger("input")})}k.bind("input change",q);p.control.validate();if(!a.hostMethod.setCustomValidity){p.setCustomValidity=function(r){p.validity.customError=!!r;p.validationMessage=r||"";p.control.validate()}}if(!a.hostMethod.checkValidity){p.checkValidity=function(){var r=!!p.validity&&p.validity.valid;k.trigger(r?"valid":"invalid");return r}}}})();var e=function(h,i){if(!a.hostMethod.validity||i.error.force){h.get(0).control.error=i.error.create.apply(h);h.bind("invalid",function(){f(this.control.error).text(this.validationMessage)});if(f.browser.msie){h.bind("valid",function(){f(this.control.error).text("")}).bind("focus",function(){f(this.control.error).show()}).bind("blur",function(){f(this.control.error).hide()})}}};f.fn.f5=function(h){var i={classes:{valid:"valid",invalid:"invalid",required:"required",placeholder:"placeholder"},messages:{required:"Please fill out this field.",pattern:"Please match the requested format.",email:"Please enter an email address.",url:"Please enter URL",number:"Please enter numeric value",max:"Value too large",min:"Value too small"},error:{force:false,create:function(){var j=f('<span class="error"></span>');f(this).after(j);return j}}};if(h){f.extend(true,i,h)}return this.filter("form").each(function(){var k=f(this);f(":input:not(:submit):not(:reset)",k).each(function(){var m=f(this);m.get(0).control={};c(m,i);e(m,i);g(m,i)});var j=b(k.get(0),"checkValidity");if(!j){var l=k.get(0);l.checkValidity=function(){var m=true;f(":input:not(:submit):not(:reset)",k).each(function(){if(!f(this).get(0).checkValidity()){all=false}});return all}}if(!j){k.bind("submit",function(n){var m=f(":input:not(:submit):not(:reset)",k).filter(function(){return !f(this).get(0).validity.valid});if(m.length==0){f(":input:not(:submit):not(:reset)",k).each(function(){$this=f(this);$this.val($this.get(0).control.value())});return true}else{k.get(0).checkValidity();m.filter(":first").select();return false}})}})}})(jQuery);
