/* Validator v1.0.5 (c) 2012 Yair Even Or MIT-style license. */ var validator=(function(){var message,tests,checkField,validate,mark,unmark,field,minmax,defaults,validateWords,lengthRange,lengthLimit,pattern,alertTxt,data,email_illegalChars=/[\(\)\<\>\,\;\:\\\/\"\[\]]/,email_filter=/^.+@.+\..{2,3}$/;message={invalid:"invalid input",empty:"please put something here",min:"input is too short",max:"input is too long",number_min:"too low",number_max:"too high",url:"invalid URL",number:"not a number",email:"email address is invalid",email_repeat:"emails do not match",password_repeat:"passwords do not match",repeat:"no match",complete:"input is not complete",select:"Please select an option"};defaults={alerts:true};tests={sameAsPlaceholder:function(a){return $.fn.placeholder&&a.attr("placeholder")!==undefined&&data.val==a.prop("placeholder")},hasValue:function(a){if(!a){alertTxt=message.empty;return false}return true},linked:function(a,b){if(b!=a){alertTxt=message[data.type+"_repeat"]||message.no_match;return false}return true},email:function(a){if(!email_filter.test(a)||a.match(email_illegalChars)){alertTxt=a?message.email:message.empty;return false}return true},text:function(a){if(validateWords){var words=a.split(" ");var wordsLength=function(len){for(var w=words.length;w--;){if(words[w].lengthlengthRange[1]){alertTxt=message.max;return false}if(lengthLimit.length){var obeyLimit=false;while(lengthLimit.length){if(lengthLimit.pop()==a.length){obeyLimit=true}}if(!obeyLimit){alertTxt=message.complete;return false}}if(pattern){var regex;switch(pattern){case"alphanumeric":regex=/^[a-z0-9]+$/i;break;case"numeric":regex=/^[0-9]+$/i;break;case"phone":regex=/^\+?([0-9]|[-|' '])+$/i;break;default:regex=pattern}try{if(regex&&!eval(regex).test(a)){return false}}catch(err){console.log(err,field,"regex is invalid");return false}}return true},number:function(a){if(isNaN(parseFloat(a))&&!isFinite(a)){alertTxt=message.number;return false}else{if(a.lengthlengthRange[1]){alertTxt=message.max;return false}else{if(minmax[0]&&(a|0)minmax[1]){alertTxt=message.number_max;return false}}}}}return true},date:function(a){var day,A=a.split(/[-./]/g),i;if(field[0].valueAsNumber){return true}for(i=A.length;i--;){if(isNaN(parseFloat(a))&&!isFinite(a)){return false}}try{day=new Date(A[2],A[1]-1,A[0]);if(day.getMonth()+1==A[1]&&day.getDate()==A[0]){return day}return false}catch(er){console.log("date test: ",err);return false}},url:function(a){function testUrl(url){return/^(https?:\/\/)?([\w\d\-_]+\.+[A-Za-z]{2,})+\/?/.test(url)}if(!testUrl(a)){console.log(a);alertTxt=a?message.url:message.empty;return false}return true},hidden:function(a){if(a.length").addClass("alert").text(text);item.append(warning)}item.removeClass("bad");setTimeout(function(){item.addClass("bad")},0)};unmark=function(field){if(!field||!field.length){console.warn('no "field" argument, null or DOM object not found');return false}field.parents(".item").removeClass("bad").find(".alert").animate({marginLeft:32,opacity:0},200,function(){$(this).remove()})};function checkField(){field=$(this);if(field[0].type!="hidden"&&field.is(":hidden")){return true}field.data("valid",true);field.data("type",field.attr("type"));field.data("val",field[0].value.replace(/^\s+|\s+$/g,""));data=field.data();var v=data.val;alertTxt=message[field.prop("name")]||message.invalid;if(field[0].nodeName.toLowerCase()==="select"){data.type="select"}if(field[0].nodeName.toLowerCase()==="textarea"){data.type="text"}validateWords=data.validateWords||0;lengthRange=data.validateLengthRange?(data.validateLengthRange+"").split(","):[1];lengthLimit=data.validateLength?(data.validateLength+"").split(","):false;minmax=data.validateMinmax?(data.validateMinmax+"").split(","):"";pattern=data.validatePattern;if(tests.sameAsPlaceholder(field)){alertTxt=msg.form.empty;data.valid=false}if(data.validateLinked){var linkedTo=data.validateLinked.indexOf("#")==0?$(data.validateLinked):$(":input[name="+data.validateLinked+"]");data.valid=tests.linked(v,linkedTo.val())}if(data.valid&&(data.valid=tests.hasValue(v))||data.type=="select"){switch(data.type){case"email":data.valid=tests.email(v);break;case"text":data.valid=tests.text(v);break;case"tel":pattern=pattern||"phone";data.valid=tests.text(v);break;case"password":data.valid=tests.text(v);break;case"number":data.valid=tests.number(v);break;case"date":data.valid=tests.date(v);break;case"url":data.valid=tests.url(v);break;case"select":data.valid=tests.select(v);break;case"hidden":data.valid=tests.hidden(v);break}}if(field.hasClass("optional")&&!data.val){data.valid=true}if(data.valid){unmark(field)}else{mark(field,alertTxt);submit=false}return data.valid}function checkAll($form){if($form.length==0){console.warn("element not found");return false}var that=this,submit=true,fieldsToCheck=$form.find(":input").filter("[required=required], .required, .optional").not("[disabled=disabled]");fieldsToCheck.each(function(){submit=submit*checkField.apply(this)});return !!submit}return{defaults:defaults,checkField:checkField,checkAll:checkAll,mark:mark,unmark:unmark,message:message,tests:tests}})();