UNPKG

nos-forms-jquery

Version:

Build and validate DRY html forms in minutes with JSON, jQuery and Bootstrap

9 lines 31.9 kB
/* * nos-forms-jquery - v2.1.0 * Build and validate DRY html forms in minutes with JSON, jQuery and Bootstrap * http://ibidata.github.io/nos-forms-jquery/ * * Made by IBI Data * Under MIT License */ !function(a){"object"==typeof module&&"object"==typeof module.exports?a(require("jquery"),window,document):a(jQuery,window,document)}(function(a,b,c,d){"use strict";function e(b,e){var g=this,h="#"+b.id;this.form=a(b),this.settings=a.extend(!0,{},f,e);var i={text:["text","email","tel","password","number","hidden","zip","date","week","time","month","datetime-local","search","url"],textarea:["textarea"],buttons:["submit","reset","button"],select:["select"],file:["file"],check:["checkbox","radio"],state:["state"],clone:["clone"],html:["html"],other:["range","color","image"],lbl:["label"],buttonGroup:["buttonGroup"]},j=function(b){return a.extend({},b,{type:b.type?' type="'+b.type+'"':"",name:b.name?' name="'+b.name+'"':"",id:b.id||b.name?' id="'+(b.id||b.name)+'"':"",minlength:b.minlength||"number"==typeof b.minlength?' minlength="'+b.minlength+'"':"",maxlength:b.maxlength||"number"==typeof b.maxlength?' maxlength="'+b.maxlength+'"':"",required:b.required?" required":"",value:b.value||"number"==typeof b.value?' value="'+b.value+'"':"",placeholder:b.placeholder?' placeholder="'+b.placeholder+'"':"",formGroup:b.formGroup||b.formGroup===d?l.formGroup():{start:"",end:""},label:b.label?l.label(b):"",helpBlock:b.helpBlock?'<span id="'+(b.id||b.name)+'-help-block" class="help-block nos-help-block">'+b.helpBlock+"</span>":"",classname:b.classname?' class="'+b.classname+'"':"",multiple:b.multiple?" multiple":"",autofocus:b.autofocus?" autofocus":"",disabled:b.disabled?" disabled":"",readonly:b.readonly?" readonly":"",title:b.title?' title="'+b.title+'"':"",size:b.size?' size="'+b.size+'"':"",data:b.data?l.data(b.data):"",message:g.settings.validate?k(b):{required:"",minlength:"",maxlength:"",min:"",max:"",valid:""},tabindex:b.tabindex?' tabindex="'+b.tabindex+'"':""})},k=function(b){return a.extend({},{required:b.required?m.required(b):"",valid:"email"===b.type||"zip"===b.type||"tel"===b.type||b.pattern||b.match?m.valid(b):"",minlength:b.minlength&&b.minlength>1?m.minlength(b):"",maxlength:b.maxlength&&b.maxlength>1?m.maxlength(b):"",min:b.min&&b.min>1?m.min(b):"",max:b.max?m.max(b):""})},l={self:this,formGroup:function(){return{start:'<div class="form-group nos-group">',end:"</div>"}},honeypot:function(){return'<div class="nos-div-hp-css"><label for="nos-text-css[]">Please leave this field blank</label><input type="text" class="nos-text-css" name="nos-text-css[]" value=""></div><div class="nos-div-hp-js"><label for="nos-email-js[]">Please leave this field unchanged</label><input type="email" class="nos-email-js" name="nos-email-js[]" value="validemail@email.com"></div>'},div:function(a){return{start:'<div class="'+a+'">',end:"</div>"}},data:function(b){var c="";return a.each(b,function(a,b){c+=" data-"+a+'="'+b+'"'}),c},inputGroup:function(b){var c=b.left?Object.keys(b.left):"",d=b.right?Object.keys(b.right):"",e=b.left?c[a.inArray("text",c)]||c[a.inArray("button",c)]:"",f=b.right?d[a.inArray("text",d)]||d[a.inArray("button",d)]:"",g={left:b.left?{text:'<span class="input-group-addon '+(b.left.classname||"")+'">'+(b.left.text||"")+"</span>",button:'<span class="input-group-btn"><button class="'+(b.left.classname||"")+'" type="button">'+(b.left.button||"")+"</button></span>"}:"",right:b.right?{text:'<span class="input-group-addon '+(b.right.classname||"")+'">'+(b.right.text||"")+"</span>",button:'<span class="input-group-btn"><button class="'+(b.right.classname||"")+'" type="button">'+(b.right.button||"")+"</button></span>"}:""},h={large:"input-group-lg",lg:"input-group-lg",small:"input-group-sm",sm:"input-group-sm"};return{start:b&&'<div class="input-group '+(b.size&&h[b.size]||"")+'">',left:b.left?g.left[e]:"",right:b.right?g.right[f]:"",end:b&&"</div>"}},fieldset:function(a,b){return{start:'<fieldset id="'+a+'" class="nos-fieldset nos-submit-'+(b||"object")+'">',end:"</fieldset>"}},label:function(a){return'<label for="'+(a.id||a.name)+'" class="nos-label'+(a.required&&" required-field"||"")+'">'+a.label+"</label>"},lbl:function(a){return'<label class="nos-label label-'+(a.name||a.id)+" "+(a.classname||"")+'">'+a.value+"</label>"},text:function(b){var c=a.extend(j(b),{pattern:b.pattern?' pattern="'+b.pattern+'"':"",autocomplete:b.autocomplete?' autocomplete="'+b.autocomplete+'"':"",step:b.step?' step="'+b.step+'"':"",min:b.min?' min="'+b.min+'"':"",max:b.max?' max="'+b.max+'"':"",classname:b.classname?' class="form-control '+b.classname+'"':' class="form-control"',inputGroup:b.inputGroup?this.inputGroup(b.inputGroup):{start:"",left:"",right:"",end:""}}),d=c.formGroup.start+c.label+c.inputGroup.start+c.inputGroup.left+"<input data-nos"+c.type+c.name+c.id+c.data+c.minlength+c.maxlength+c.placeholder+c.classname+c.tabindex+c.value+c.title+c.min+c.max+c.step+c.size+c.pattern+c.autocomplete+c.multiple+c.readonly+c.disabled+c.autofocus+c.required+">"+c.inputGroup.right+c.inputGroup.end+c.helpBlock+c.message.required+c.message.minlength+c.message.maxlength+c.message.valid+c.message.min+c.message.max+c.formGroup.end;return d},buttons:function(b){var c=b.formGroup?"nos-form-group nos-group ":"",e=b.inline?"nos-inline ":"",f=b.align?"pull-"+b.align:"",g="right"===b.align?"&nbsp;":"",h="left"===b.align||b.align===d?"&nbsp;":"",i=a.extend(j(b),{formaction:b.formaction?' formaction="'+b.formaction+'"':"",formenctype:b.formenctype?' formenctype="'+b.formenctype+'"':"",formmethod:b.formmethod?' formmethod="'+b.formmethod+'"':"",formnovalidate:b.formnovalidate?" formnovalidate":"",formtarget:b.formtarget?' formtarget="'+b.formtarget+'"':"",value:b.value?b.value:"",formGroup:b.formGroup||b.inline?this.div(c+e+f):{start:"",end:""}}),k=i.formGroup.start+g+"<button data-nos"+i.type+i.id+i.data+i.classname+i.title+i.formtarget+i.formmethod+i.formaction+i.tabindex+i.formenctype+i.formnovalidate+i.disabled+">"+i.value+"</button>"+h+i.formGroup.end;return k},buttonGroup:function(b){var c,d=b.formGroup?"nos-form-group nos-group ":"",e=b.align?"pull-"+b.align:"",f=b.vertical?"-vertical ":" ",g="",h=b.buttons,i=a.extend(j(b),{classname:b.classname?' class="btn-group'+f+b.classname+'"':' class="btn-group'+f+'"',formGroup:b.formGroup||b.align?this.div(d+e):{start:"",end:""}});for(c=0;c<h.length;c++)g+='<button data-nos type="'+h[c].type+'" class="'+h[c].classname+'" tabindex="'+h[c].tabindex+'">'+h[c].value+"</button>";var k=i.formGroup.start+i.label+"<br><div "+i.classname+' role="group">'+g+i.formGroup.end;return k},textarea:function(b){var c=a.extend(j(b),{rows:b.rows?' rows="'+b.rows+'"':"",cols:b.cols?' cols="'+b.cols+'"':"",wrap:b.wrap?' wrap="'+b.wrap+'"':"",classname:b.classname?' class="form-control '+b.classname+'"':' class="form-control"',value:b.value||"number"==typeof b.value?b.value:""}),d=c.formGroup.start+c.label+"<textarea data-nos"+c.name+c.id+c.title+c.data+c.minlength+c.maxlength+c.placeholder+c.classname+c.tabindex+c.rows+c.cols+c.wrap+c.readonly+c.disabled+c.autofocus+c.required+">"+c.value+"</textarea>"+c.helpBlock+c.message.required+c.message.minlength+c.message.maxlength+c.formGroup.end;return d},select:function(b){var c={},d={};b.options.length?a.each(b.options,function(){"object"==typeof this?a.extend(c,this):(d[this]=this,a.extend(c,d))}):c=b.options;var e="",f=a.extend(j(b),{classname:b.classname?' class="form-control '+b.classname+'"':' class="form-control"',selected:b.selected?b.selected.toString().toLowerCase():"",inputGroup:b.inputGroup?this.inputGroup(b.inputGroup):{start:"",left:"",right:"",end:""}});a.each(c,function(a,b){e+='<option value="'+a+'" '+(f.selected===a.toString().toLowerCase()||f.selected===b.toString().toLowerCase()?" selected":"")+">"+b+"</option>"});var g=f.formGroup.start+f.label+f.inputGroup.start+f.inputGroup.left+"<select data-nos"+f.name+f.id+f.data+f.classname+f.multiple+f.title+f.size+f.readonly+f.tabindex+f.disabled+f.autofocus+f.required+">"+e+"</select>"+f.inputGroup.right+f.inputGroup.end+f.helpBlock+f.message.required+f.formGroup.end;return g},check:function(b){var c={},e={};b.options.length?a.each(b.options,function(){"object"==typeof this?a.extend(c,this):(e[this]=this,a.extend(c,e))}):c=b.options;var f="",g=a.extend(j(b),{inline:b.inline?' class="'+b.type+'-inline"':"",name:b.name&&"checkbox"===b.type?' name="'+b.name+'[]"':' name="'+b.name+'"',id:' id="'+b.name+"-",div:b.inline?{start:"",end:""}:this.div(b.type),fieldset:this.fieldset(b.name,b.submitType)||{start:"",end:""}}),h=g.formGroup.start+g.label+g.fieldset.start;return a.each(c,function(c,e){"object"==typeof b.checked||b.checked===d?f=a.inArray(c,b.checked)>-1?" checked":"":"string"==typeof b.checked?f=c===b.checked?" checked":"":console.warn('Your checkbox/radio "checked" property must be an object or string'),h+=g.div.start+"<label"+g.inline+"><input data-nos"+g.type+g.name+g.data+g.title+g.id+c+'" '+g.classname+' value="'+c+'"'+f+g.disabled+g.autofocus+g.required+">"+e+"</label>"+g.helpBlock+g.div.end}),h+=g.fieldset.end+g.message.required+g.formGroup.end},file:function(b){var c=a.extend(j(b),{accept:b.accept&&' accept="'+b.accept+'"'||"",div:b.classname&&this.div(b.classname)||{start:"",end:""}}),d=c.formGroup.start+c.label+c.div.start+"<input data-nos"+c.type+c.name+c.id+c.data+c.title+c.accept+c.multiple+c.tabindex+c.disabled+c.autofocus+c.required+">"+c.helpBlock+c.message.required+c.div.end+c.formGroup.end;return d},html:function(a){return a.element},other:function(b){var c=a.extend(j(b),{step:b.step?' step="'+b.step+'"':"",min:b.min||"number"==typeof b.min?' min="'+b.min+'"':"",max:b.max||"number"==typeof b.max?' max="'+b.max+'"':"",height:b.height||"number"==typeof b.height?' height="'+b.height+'"':"",width:b.width||"number"==typeof b.width?' width="'+b.width+'"':"",src:b.src?' src="'+b.src+'"':"",alt:b.alt?' alt="'+b.alt+'"':""}),d=c.formGroup.start+c.label+"<input data-nos"+c.type+c.name+c.id+c.data+c.classname+c.value+c.title+c.height+c.width+c.src+c.alt+c.tabindex+c.min+c.max+c.step+c.readonly+c.disabled+c.autofocus+c.required+">"+c.helpBlock+c.message.required+c.message.min+c.message.max+c.formGroup.end;return d},clone:function(b){var c,d,e=(b.maxFields||10)+1,f=b.start||1,g="",h=a.extend(j(b),{placeholder:b.placeholder?b.placeholder:"",classname:b.classname?b.classname:"form-control",addValue:b.addButtonValue?b.addButtonValue:"Add Field",removeValue:b.removeButtonValue?b.removeButtonValue:"Remove Field",addButtonClass:b.addButtonClass?b.addButtonClass:"btn btn-primary",removeButtonClass:b.removeButtonClass?b.removeButtonClass:"btn btn-danger",name:b.name?' name="'+b.name:"",message:{required:'<div style="display: none;" class="alert alert-danger nos-help nos-required msg-required-'+b.name+'">'+(b.label||"This")+" is a required field</div>"}});for(g+=h.formGroup.start,g+=h.label,d=1;d<e;d++){var i=b.addon||d;c=d<=f?"":" hidden";var k=this.div("input-group nos-input-group"+c);g+=h.formGroup.start+k.start+'<span class="input-group-addon nos-input-group-addon">'+(h.placeholder||"")+" "+i+'</span><input data-nos type="text" class="nos-clone '+h.classname+'"'+h.data+h.name+d+'[]" '+h.required+">"+k.end+h.formGroup.end}return g+=h.formGroup.end,g+=h.helpBlock,g+='<input type="button" data-nos-add-button class="'+h.addButtonClass+' nos-form-group" value="'+h.addValue+'">&nbsp;<input type="button" data-nos-remove-button value="'+h.removeValue+'" class="'+h.removeButtonClass+' nos-form-group">',g+=h.message.required},state:function(b){function c(a,b){var c,d,e=[],f={};for(c in a)e.push(c);if(e.sort(function(a,b){return a.toLowerCase().localeCompare(b.toLowerCase())}),"desc"===b)for(d=e.length-1;d>=0;d--)f[e[d]]=a[e[d]];else for(d=0;d<e.length;d++)f[e[d]]=a[e[d]];return f}var e=b.us||b.us===d,f={"American Samoa":"AS","Federated States Of Micronesia":"FM",Guam:"GU","Marshall Islands":"MH","Northern Mariana Islands":"MP",Palau:"PW","Puerto Rico":"PR","Virgin Islands":"VI"},g={Alabama:"AL",Alaska:"AK",Arizona:"AZ",Arkansas:"AR",California:"CA",Colorado:"CO",Connecticut:"CT",Delaware:"DE","District Of Columbia":"DC",Florida:"FL",Georgia:"GA",Hawaii:"HI",Idaho:"ID",Illinois:"IL",Indiana:"IN",Iowa:"IA",Kansas:"KS",Kentucky:"KY",Louisiana:"LA",Maine:"ME",Maryland:"MD",Massachusetts:"MA",Michigan:"MI",Minnesota:"MN",Mississippi:"MS",Missouri:"MO",Montana:"MT",Nebraska:"NE",Nevada:"NV","New Hampshire":"NH","New Jersey":"NJ","New Mexico":"NM","New York":"NY","North Carolina":"NC","North Dakota":"ND",Ohio:"OH",Oklahoma:"OK",Oregon:"OR",Pennsylvania:"PA","Rhode Island":"RI","South Carolina":"SC","South Dakota":"SD",Tennessee:"TN",Texas:"TX",Utah:"UT",Vermont:"VT",Virginia:"VA",Washington:"WA","West Virginia":"WV",Wisconsin:"WI",Wyoming:"WY"},h={Alberta:"AB","British Columbia":"BC",Manitoba:"MB","New Brunswick":"NB","Newfoundland and Labrador":"NL","Nova Scotia":"NS","Northwest Territories":"NT",Nunavut:"NU",Ontario:"ON","Prince Edward Island":"PE",Quebec:"QC",Saskatchewan:"SK",Yukon:"YT"},i={Aguascalientes:"AG","Baja California":"BC","Baja California Sur":"BS",Campeche:"CM",Chiapas:"CS",Chihuahua:"CH",Coahuila:"MX",Colima:"CL","Federal District":"DF",Durango:"DG",Guanajuato:"GT",Guerrero:"GR",Hidalgo:"HG",Jalisco:"JA",Mexico:"ME","Michoacán":"MI",Morelos:"MO",Nayarit:"NA","Nuevo León":"NL",Oaxaca:"OA",Puebla:"PU","Querétaro":"QE","Quintana Roo":"QR","San Luis Potosí":"SL",Sinaloa:"SI",Sonora:"SO",Tabasco:"TB",Tamaulipas:"TM",Tlaxcala:"TL",Veracruz:"VE","Yucatán":"YU",Zacatecas:"ZA"},k=c(a.extend(e&&g,b.usTerritory&&f,b.canada&&h,b.mexico&&i)),l='<option value="">'+(b.defaultSelected||"Select One...")+"</option>",m=a.extend(j(b),{classname:b.classname?' class="form-control '+b.classname+'"':' class="form-control"',selected:b.selected?b.selected.toString().toLowerCase():""});a.each(k,function(a,b){l+='<option value="'+b+'" '+(m.selected===b.toString().toLowerCase()||m.selected===a.toString().toLowerCase()?" selected":"")+">"+a+"</option>"});var n=m.formGroup.start+m.label+"<select data-nos "+m.name+m.id+m.data+m.classname+m.size+m.multiple+m.readonly+m.tabindex+m.disabled+m.autofocus+m.required+">"+l+"</select>"+m.helpBlock+m.message.required+m.formGroup.end;return n}},m={required:function(a){var b;return b=a.messages?a.messages.required:null,'<div style="display: none;" class="alert alert-danger nos-help nos-required msg-required-'+a.name+'">'+(b||(a.label||a.placeholder||"This")+" is a required field")+"</div>"},valid:function(a){var b;return b=a.messages?a.messages.invalid:null,'<div style="display: none;" class="alert alert-warning nos-help nos-invalid msg-invalid-'+a.name+'">'+(b||(a.label||a.placeholder||"This field")+" must be valid")+"</div>"},minlength:function(a){var b;return b=a.messages?a.messages.minlength:null,'<div style="display: none;" class="alert alert-warning nos-help nos-invalid msg-minlength-'+a.name+'">'+(b||(a.label||a.placeholder||"This field")+" must have a minimum of "+a.minlength+" characters")+"</div>"},maxlength:function(a){var b;return b=a.messages?a.messages.maxlength:null,'<div style="display: none;" class="alert alert-warning nos-help nos-invalid msg-maxlength-'+a.name+'">'+(b||(a.label||a.placeholder||"This field")+" must have a maximum of "+a.maxlength+" characters")+"</div>"},min:function(a){var b;return b=a.messages?a.messages.min:null,'<div style="display: none;" class="alert alert-warning nos-help nos-invalid msg-min-'+a.name+'">'+(b||(a.label||a.placeholder||"This field")+" must have a minimum value of "+a.min)+"</div>"},max:function(a){var b;return b=a.messages?a.messages.max:null,'<div style="display: none;" class="alert alert-warning nos-help nos-invalid msg-max-'+a.name+'">'+(b||(a.label||a.placeholder||"This field")+" must have a maximum value of "+a.max)+"</div>"},form:{required:function(a){return'<div style="display: none;" class="alert alert-danger nos-help nos-form-required msg-required-'+(a.name||a.id)+'">'+g.settings.messages.required+"</div>"},invalid:function(a){return'<div style="display: none;" class="alert alert-warning nos-help nos-form-invalid msg-invalid-'+(a.name||a.id)+'">'+g.settings.messages.invalid+"</div>"}}},n={email:function(a){return/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(a)},phone:function(a){return/^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$/.test(a)},zipcode:function(a){var b=/^\d{5}(-\d{4})?$/.test(a),c=/^\\d{5}$/.test(a),d=/^[A-Za-z]\d[A-Za-z][ -]?\d[A-Za-z]\d$/.test(a);return b||c||d},sanitize:function(a){var b=a.replace(/<script[^>]*?>.*?<\/script>/gi,"").replace(/<[\/\!]*?[^<>]*?>/gi,"").replace(/<style[^>]*?>.*?<\/style>/gi,"").replace(/<![\s\S]*?--[ \t\n\r]*>/gi,"");return b}};this._validate=function(b){function c(){var b=a(h+" [data-nos]:not(:submit, :reset, :button, :image, :checkbox, :radio, input[type=color], input[type=range])");b.addClass("nos-untouched").on("focus change",function(){a(this).alterClass("nos-untouched","nos-touched")})}function e(){a(h+" :reset[data-nos]").off("click").on("click",function(){a(this).closest("form").find(":input:not(:submit, :reset, :button, :image)").val("").alterClass("nos-*","").addClass("nos-untouched"),a(h+" .nos-help").nosSlideUp()})}function f(b){var c=b.id||b.name,d=".msg-maxlength-"+b.name;a("#"+c).on("keydown",function(c){a(this).val().length>b.maxlength&&(a(this).val(a(this).val().substring(0,b.maxlength)),c.preventDefault())}).on("blur keydown",function(){a(this).val().length>b.maxlength?a(d).nosSlideDown():a(d).nosSlideUp()})}function g(b){var c=".msg-minlength-"+b.name,d="#"+(b.id||b.name);a(d).on("keyup change blur focus paste",function(){var d=a(this).val().length;d>0?d<b.minlength?(a(c).nosSlideDown(),a(this).alterClass("nos-valid-minlength","nos-invalid-minlength")):(a(c).nosSlideUp(),a(this).alterClass("nos-invalid-minlength","nos-valid-minlength")):(a(c).nosSlideUp(),a(this).removeClass("nos-invalid-minlength nos-valid-minlength"))}).on("blur change",function(){a(this).removeClass("nos-valid-minlength")})}function i(b){var c=".msg-min-"+b.name,d=".msg-max-"+b.name,e="#"+(b.id||b.name);a(e).on("keyup change blur focus paste submit",function(){var e=a(this).val();e>0?(e<b.min?(a(c).nosSlideDown(),a(this).alterClass("nos-valid-min","nos-invalid-min")):(a(c).nosSlideUp(),a(this).alterClass("nos-invalid-min","nos-valid-min")),e>b.max?(a(d).nosSlideDown(),a(this).alterClass("nos-valid-max","nos-invalid-max")):(a(d).nosSlideUp(),a(this).alterClass("nos-invalid-max","nos-valid-max"))):(a(c).nosSlideUp(),a(this).removeClass("nos-invalid-min nos-invalid-max"))}).on("blur change",function(){a(this).removeClass("nos-valid-min nos-valid-max")})}function j(b){var c=b.name,d=".msg-invalid-"+c,e="#"+(b.id||c),f=new RegExp(b.pattern);a(e).on("keyup change blur focus paste",function(){a(this).val().length>0?f.test(a(this).val())?(a(d).nosSlideUp(),a(this).alterClass("nos-invalid-pattern","nos-valid-pattern")):(a(d).nosSlideDown(),a(this).alterClass("nos-valid-pattern","nos-invalid-pattern")):(a(d).nosSlideUp(),a(this).removeClass("nos-invalid-pattern nos-valid-pattern"))}).on("blur change",function(){a(this).removeClass("nos-valid-pattern")})}function k(b){var c="#"+b.match,d="#"+(b.id||b.name),e=".msg-invalid-"+b.name;a(d+","+c).on("keyup change blur paste focus",function(){a(d).val().length>0?a(c).val()!==a(d).val()?(a(e).nosSlideDown(),a(d+","+c).alterClass("nos-valid-match","nos-invalid-match")):(a(e).nosSlideUp(),a(d+","+c).alterClass("nos-invalid-match","nos-valid-match")):(a(e).nosSlideUp(),a(d+","+c).removeClass("nos-invalid-match nos-valid-match"))}).on("blur change",function(){a(this).removeClass("nos-valid-match")})}function l(b){var c,d=b.name,e=h+" .msg-invalid-"+d,f="#"+(b.id||d);a(f).on("keyup input change blur paste focus",function(){switch(b.type){case"email":c=a(this).val(),c.length>0&&(n.email(c)?(a(e).nosSlideUp(),a(this).alterClass("nos-invalid-email","nos-valid-email")):(a(e).nosSlideDown(),a(this).alterClass("nos-valid-email","nos-invalid-email"))),""===c&&(a(e).nosSlideUp(),a(this).removeClass("nos-invalid-email nos-valid-email"));break;case"zip":c=a(this).val(),c.length>0&&(n.zipcode(c)?(a(e).nosSlideUp(),a(this).alterClass("nos-invalid-zip","nos-valid-zip")):(a(e).nosSlideDown(),a(this).alterClass("nos-valid-zip","nos-invalid-zip"))),""===c&&(a(e).nosSlideUp(),a(this).removeClass("nos-invalid-zip nos-valid-zip"));break;case"tel":c=a(this).val(),c.length>0&&(n.phone(c)?(a(e).nosSlideUp(),a(this).alterClass("nos-invalid-tel","nos-valid-tel")):(a(e).nosSlideDown(),a(this).alterClass("nos-valid-tel","nos-invalid-tel"))),""===c&&(a(e).nosSlideUp(),a(this).removeClass("nos-invalid-tel nos-valid-tel"))}}).on("blur change",function(){a(this).removeClass("nos-valid-email nos-valid-zip nos-valid-tel")})}function m(b){a.maskWatchers?(a("#"+(b.id||b.name)).mask(b.mask),a("#"+(b.id||b.name)).attr("data-mask",!0)):console.warn('You must include jQUery-Mask-Plugin to use "mask". Go here: https://igorescobar.github.io/jQuery-Mask-Plugin/')}function o(){a(h+" [data-nos-add-button]").off("click").on("click",function(){a(h+" .nos-input-group.hidden").length>0&&a(".nos-input-group.hidden").eq(0).removeClass("hidden"),0===a(h+" .nos-input-group.hidden").length&&a(this).addClass("disabled"),a(h+" .nos-input-group:not(.hidden)").length>1&&a("[data-nos-remove-button]").removeClass("disabled")}),a(h+" [data-nos-remove-button]").off("click").on("click",function(){a(h+" .nos-input-group:not(.hidden)").length>1&&a(".nos-input-group:not(.hidden)").eq(-1).addClass("hidden"),1===a(h+" .nos-input-group:not(.hidden)").length&&a(this).addClass("disabled"),a(h+" .nos-input-group.hidden").length>0&&a("[data-nos-add-button]").removeClass("disabled")})}function p(a,b){"clone"===b.type&&o(),b.mask&&m(b),"reset"===b.type&&e(),"email"!==b.type&&"zip"!==b.type&&"tel"!==b.type||!b.validate&&b.validate!==d||l(b),b.pattern&&j(b),b.maxlength&&f(b),b.minlength&&g(b),(b.min||b.max)&&i(b),b.match&&k(b)}function q(b){a.each(b,function(a,b){p(a,b),this.column&&q(this.column)})}a.each(b,function(a,b){this.column?(p(a,b),q(this.column)):p(a,b)}),c()},this._submitValidation=function(b,d){function e(){a.each(u,function(a,b){if(b.name.indexOf("[]")===-1&&(g.settings.onlySubmitWithValue?b.value&&""!==b.value:b))if(b.name.indexOf(".")>-1){var c=b.name.split(".");v[c[0]]||(v[c[0]]={}),v[c[0]][c[1]]=b.value}else v[b.name]=b.value}),q()}function f(){C.each(function(){a(this).val().length<1?a(this).alterClass("nos-valid-required","nos-invalid-required"):a(this).alterClass("nos-invalid-required","nos-valid-required"),a(this).on("change keyup keydown blur paste input",function(){a(this).val().length<1?a(this).alterClass("nos-valid-required","nos-invalid-required"):a(this).alterClass("nos-invalid-required","nos-valid-required")})})}function i(){var b=a(D).parents().siblings(".nos-label").attr("for");v[b]={},a.each(D,function(){var c=a(this).attr("name").split("[]");""!==a(this).val()&&(v[b][c[0]]=a(this).val())})}function j(){function b(a){for(var b in a)if(a[b]===!0)return!1;return!0}var c={};z.each(function(d){var e=a(this).attr("id"),f=a(this).find(":checkbox"),h=e.split("."),i=e.indexOf(".")>-1;if(a(this).hasClass("nos-submit-string")){var j=[];f.each(function(){this.checked&&j.push(a(this).attr("value"))}),i?(v[h[0]]||(v[h[0]]={}),v[h[0]][h[1]]=j.toString()):v[e]=j.toString(),g.settings.onlySubmitWithValue&&!v[e]&&delete v[e]}else if(a(this).hasClass("nos-submit-array")){var k=[];f.each(function(){this.checked&&k.push(a(this).attr("value"))}),i?(v[h[0]]||(v[h[0]]={}),v[h[0]][h[1]]=k):v[e]=k,g.settings.onlySubmitWithValue&&v[e].length<1&&delete v[e]}else c[d]={},f.each(function(){var b=a(this).attr("value");c[d][b]=this.checked}),i?(v[h[0]]||(v[h[0]]={}),v[h[0]][h[1]]=c[d]):v[e]=c[d],g.settings.onlySubmitWithValue&&b(v[e])&&delete v[e]})}function k(){var b={},c={};A.each(function(d){var e=a(this).find(":checkbox");c[d]=".msg-required-"+a(this).attr("id"),b[d]=[],a(e).each(function(){a(this).is(":checked")&&b[d].push(a(this).val()),a(this).off("change").on("change",function(){a.inArray(a(this).val(),b[d])>-1?b[d].splice(a.inArray(a(this).val(),b[d]),1):b[d].push(a(this).val()),b[d].length>0?a(c[d]).nosSlideUp():a(c[d]).nosSlideDown()})}),b[d].length<1&&a(c[d]).nosSlideDown()})}function l(){var b=[];B.each(function(){var c=a(this).find(":radio"),d=".msg-required-"+a(this).attr("id");a(c).each(function(){a(this).is(":checked")&&b.push(this.value),a(this).on("change",function(){a(this).is(":checked")&&(b.push(this.value),a(d).nosSlideUp())})}),b.length<1&&a(d).nosSlideDown()})}function m(){a(w).each(function(b){var c=w[b],d=h+" .msg-required-"+c.name;c.value=n.sanitize(c.value),a(c).val().length<1&&(a(d).nosSlideDown(),a(this).on("keyup keydown change blur paste input",function(){this.value.length>0&&a(d).nosSlideUp(),this.value.length<1&&a(d).nosSlideDown()}))})}function o(){a(x).each(function(b){var c=x[b],d=h+" .msg-required-"+c.name;""===a(c).val()&&(a(d).nosSlideDown(),a(this).off("change").on("change",function(){""!==a(this).val()&&a(d).nosSlideUp(),""===a(this).val()&&a(d).nosSlideDown()}))})}function p(){a(y).each(function(b){var d=y[b],e=h+" .msg-required-"+d.name,f=c.getElementById(d.id||d.name).files||c.getElementById(d.id||d.name).value;0===f.length&&a(d).attr("required",!0)&&(a(e).nosSlideDown(),a(this).off("change").on("change",function(){""!==a(this).val()&&a(e).nosSlideUp(),""===a(this).val()&&a(e).nosSlideDown()})),v[d.name]=f})}function q(){r()?s():!a(h+" .nos-help").is(":visible")&&a(h+" .nos-untouched[required]").is(":visible")?(a(h+" [data-nos]").each(function(){a(this).trigger("change"),a(this).alterClass("nos-untouched","nos-touched")}),r()&&s()):(a(h+" .nos-required").is(":visible")&&a(h+" .nos-form-required").nosSlideDown(),a(h+" .nos-invalid").is(":visible")&&a(h+" .nos-form-invalid").nosSlideDown(),a(h+" [data-nos]").on("change input keyup blur focus paste",function(){a(h+" .nos-invalid").is(":visible")?a(h+" .nos-form-invalid").nosSlideDown():a(h+" .nos-form-invalid").nosSlideUp(),a(h+" .nos-required").is(":visible")?a(h+" .nos-form-required").nosSlideDown():a(h+" .nos-form-required").nosSlideUp()}))}function r(){return!a(h+" .nos-help").is(":visible")&&!a(h+" .nos-untouched[required]").is(":visible")}function s(){var b=g.settings.honeypot&&(""!==a(h+" .nos-text-css").val()||"validemail@email.com"!==a(h+" .nos-email-js").val());g.settings.ajax?(b&&(v.honeypot=!0),g.settings.submit(v,a(h),d),g.form.trigger("nos.submit",[{formdata:v,form:a(h),submitEvent:d}])):(a("div.nos-div-hp-css").remove(),a("div.nos-div-hp-js").remove(),b&&g.form.append('<input type="hidden" value="true" name="honeypot">'),t())}function t(){g.form.off("submit nos.submit"),g.settings.submit?g.settings.submit(v,a(h),d):g.form.submit()}var u=a(b).serializeArray(),v={},w=a(h+" [data-nos]:not(:radio, :checkbox, :button, :submit, :reset, :file, :image, select, .nos-clone)").filter("[required]:visible"),x=a(h+" select[data-nos]").filter("[required]:visible"),y=a(h+" :file[data-nos]"),z=a(h+" :checkbox[data-nos]").parents("fieldset"),A=a(h+" :checkbox[data-nos]").filter("[required]:visible").parents("fieldset"),B=a(h+" :radio[data-nos]").filter("[required]:visible").parents("fieldset"),C=a(h+" [data-nos]:not(:file, input[type=range], input[type=color])").filter("[required]:visible"),D=a(h+" .nos-clone");D.length&&i(),z&&j(),this.settings.validate&&(f(),m(),k(),l(),o(),p()),e()},this._bindEvents=function(){var b=this;b.form.on("nos.init",function(){b.settings.init&&b.settings.init(b.form)}),b.form.on("submit",function(c){c.preventDefault(),b._submitValidation(a(this),c)})},this._errorMessages=function(){var a=this.settings;"object"!=typeof a.fields&&console.warn("Your form data is not an object!"),a.fields||console.warn("You must supply form fields!"),a.validate&&"boolean"!=typeof a.validate&&console.warn('"validate" must have a boolean value!'),a.htmlValidation&&"boolean"!=typeof a.htmlValidation&&console.warn('"htmlValidation" must have a boolean value!'),a.submit&&"function"!=typeof a.submit&&console.warn('"submit" must be a function!'),a.init&&"function"!=typeof a.init&&console.warn('"init" must be a function!'),a.animationSpeed&&"number"!=typeof a.animationSpeed&&console.warn('"animationSpeed" must be a number!'),a.messages&&"object"!=typeof a.messages&&console.warn('"messages" must be an object!'),a.messageLocation&&"object"!=typeof a.messageLocation&&console.warn('"messageLocation" must be an object!'),a.ajax&&"boolean"!=typeof a.ajax&&console.warn('"ajax" must have a boolean value!'),a.honeypot&&"boolean"!=typeof a.honeypot&&console.warn('"honeypot" must have a boolean value!'),a.onlySubmitWithValue&&"boolean"!=typeof a.onlySubmitWithValue&&console.warn('"onlySubmitWithValue" must have a boolean value!')},this._setBehavior=function(b){this.settings.htmlValidation||this.form.attr("novalidate",""),this.settings.honeypot&&a("#"+this.form[0].id+" .nos-div-hp-js").css("display","none"),Object.keys||(Object.keys=function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b}),a.prototype.alterClass=function(b,c){var d=this;if(b.indexOf("*")===-1)return d.removeClass(b),c?d.addClass(c):d;var e=new RegExp("\\s"+b.replace(/\*/g,"[A-Za-z0-9-_]+").split(" ").join("\\s|\\s")+"\\s","g");return d.each(function(b,c){for(var d=" "+c.className+" ";e.test(d);)d=d.replace(e," ");c.className=a.trim(d)}),c?d.addClass(c):d},a.prototype.nosSlideDown=function(a){var c=b.animationSpeed;return function(b){a.call(this,b||c)}}(a.prototype.slideDown),a.prototype.nosSlideUp=function(a){var c=b.animationSpeed;return function(b){a.call(this,b||c)}}(a.prototype.slideUp)};var o=function(c){a(b).html(c)};this._build={self:this,buildElements:function(b){var c="";return a.each(i,function(d){a.inArray(b.type,this)>-1&&(c+=l[d](b))}),c},buildBlock:function(b){function c(b){d+=b.classname?'<div class="'+b.classname+'">':"",a.each(b.column,function(){this.column?(d+=this.row?'<div class="row nos-row">':"",c(this),d+=this.row?"</div>":""):d+=e.buildElements(this)}),d+=b.classname?"</div>":""}var d=b.row?'<div class="row nos-row">':"",e=this;return c(b),d+=b.row?"</div>":""},form:function(){var b=this,c=this.self.settings.honeypot?l.honeypot():"",d=this.self.settings.fields;a.each(d,function(){c+=this.column?b.buildBlock(this):b.buildElements(this)}),o(c)}},this._addMessage=function(){function b(){return a(h).find('[class^="col-"]').length>0}var c={row:{start:a(h).find(".nos-row").length?'<div class="row">':"",end:a(h).find(".nos-row").length?"</div>":""},structure:1===this.settings.fields.length?this.settings.fields[0].classname:b()&&"col-md-12 col-sm-12 col-xs-12"||""},d='<div class="clearfix"></div>'+c.row.start+'<div class="'+c.structure+'">'+m.form.required(this.form[0])+"</div>"+c.row.end,e='<div class="clearfix"></div>'+c.row.start+'<div class="'+c.structure+'">'+m.form.invalid(this.form[0])+"</div>"+c.row.end;this.settings.messageLocation.bottom&&a(this.form[0]).append(d).append(e),this.settings.messageLocation.top&&a(this.form[0]).prepend(d).prepend(e)},this._init()}var f={fields:null,animationSpeed:100,validate:!0,htmlValidation:!1,ajax:!0,honeypot:!1,messages:{required:"Please fill out all required fields",invalid:"Please correct errors"},messageLocation:{top:!1,bottom:!0},onlySubmitWithValue:!1,init:null,submit:null};a.extend(e.prototype,{_init:function(){return this._errorMessages(),this._setBehavior(this.settings),this._build.form(),this._bindEvents(),this.form.trigger("nos.init"),this.settings.validate&&(this._validate(this.settings.fields),this._addMessage()),this}}),a.fn.nosForm=function(b){return this.each(function(){a.data(this,"plugin_nosForm")||a.data(this,"plugin_nosForm",new e(this,b)),"destroy"===b&&(a(this).off().empty(),a.data(this,"plugin_nosForm",null))})}});