"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}var PrFormValidator=function(){function i(e,t,r){_classCallCheck(this,i),this.form=e,this.fields=t,this.rules=r,this.errors=[],this.errored={}}return _createClass(i,[{key:"initialize",value:function(){}},{key:"validateAllFields",value:function(){var t=this;return t.fields.forEach(function(e){"string"==typeof e&&""!==e&&(e=document.querySelector('[name="'+e+'"]'),t.validateField(e))}),!this.errors.length||this.errors}},{key:"getFieldMessages",value:function(e){var t,r="string"==typeof e?e:e.name;for(t in this.rules)if(void 0!==this.rules[t].fieldName&&this.rules[t].fieldName===r)return this.rules[t].rules.messages;return{}}},{key:"getFieldData",value:function(e,t){t=void 0!==t&&t;var r,i="string"==typeof e?e:e.name;for(r in this.rules)if(void 0!==this.rules[r].fieldName&&this.rules[r].fieldName===i)return!1!==t&&void 0!==this.rules[r][t]?this.rules[r][t]:this.rules[r];return{}}},{key:"getFieldRules",value:function(e){return this.getFieldData(e,"rules")}},{key:"getFieldLabel",value:function(e){var t,r="string"==typeof e?e:e.name;for(t in this.rules)if(void 0!==this.rules[t].fieldName&&this.rules[t].fieldName===r)return this.rules[t].fieldLabel;return""}},{key:"getFieldIndex",value:function(e){var t,r="string"==typeof e?e:e.name;for(t in this.rules)if(void 0!==this.rules[t].fieldName&&this.rules[t].fieldName===r)return this.rules[t].fieldIndex;return""}},{key:"validateField",value:function(e){var t=this.getFieldData(e),r=this.getFieldRules(e),i=(this.getFieldLabel(e),this.getFieldMessages(e),!1);if(void 0!==r.required&&1==r.required)if("radio"===t.fieldType||"checkbox"===t.fieldType){var a=[];document.querySelectorAll('input[name="'+t.fieldName+'"]:checked').forEach(function(e){""!==e.value.trim()&&a.push(e.value)}),a.length||(this.buildErrorObject(e,"required"),i=!0)}else if("select_multiple"===t.fieldType){var l=e.selectedOptions,s=[];if(l.length)for(var n=0;n<l.length;n++)null!==l[n].value&&""!==l[n].value.trim()&&s.push(l[n].value);s.length||(this.buildErrorObject(e,"required"),i=!0)}else""===e.value.trim()&&(this.buildErrorObject(e,"required"),i=!0);if(void 0!==r.email&&1==r.email&&!0!==/^[a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i.test(e.value)&&(this.buildErrorObject(e,""===e.value.trim()?"required":"email"),i=!0),void 0!==r.maxlength&&0<r.maxlength&&e.value.length>r.maxlength&&(this.buildErrorObject(e,"maxlength"),i=!0),void 0!==r.dateFormat&&1<r.dateFormat.length&&""!==e.value.trim()){var d,u="([123]0|[012][1-9]|31)",o="(0[1-9]|1[012])",h="(19[0-9]{2}|2[0-9]{3})",f="";switch(r.dateFormat){case"m-d-Y":f=o+"-"+u+"-"+h;break;case"Y-m-d":f=h+"-"+o+"-"+u;break;default:f=u+"-"+o+"-"+h}!0!==(f=new RegExp(f,"i")).test(e.value)?(this.buildErrorObject(e,"dateFormat"),i=!0):(void 0!==r.dateMinAge&&0<r.dateMinAge&&(d=e.value,"Y-m-d"!==r.dateFormat&&(d=this.convertToYmd(e.value,r.dateFormat)),this.getAge(d)<r.dateMinAge&&(this.buildErrorObject(e,"dateMinAge"),i=!0)),void 0!==r.dateMaxAge&&0<r.dateMaxAge&&(d=e.value,"Y-m-d"!==r.dateFormat&&(d=this.convertToYmd(e.value,r.dateFormat)),this.getAge(d)>r.dateMaxAge&&(this.buildErrorObject(e,"dateMaxAge"),i=!0)))}else void 0!==r.dateMinAge&&0<r.dateMinAge&&""===e.value.trim()&&(this.buildErrorObject(e,"dateMinAge"),i=!0);return void 0!==r.phoneFormat&&1==r.phoneFormat&&!0!==/^[\+0-9\.\-\(\)]+$/i.test(e.value)&&(this.buildErrorObject(e,"phoneFormat"),i=!0),!i}},{key:"buildErrorObject",value:function(e,t){var r,i;void 0!==this.errored[t]&&0<=this.errored[t].indexOf(e.name)||(i=this.getFieldLabel(e),this.errors.push({message:null!=(r=this.getFieldMessages(e)[t])?r:"An error occured with the field "+i,fieldName:e.name,fieldLabel:i,fieldType:null!=(r=e.type)?r:"",fieldIndex:this.getFieldIndex(e)}),void 0===this.errored[t]&&(this.errored[t]=[]),this.errored[t].push(e.name))}},{key:"convertToYmd",value:function(e,t){var r;return"Y-m-d"!==t&&(r=e.split("-"),e="m-d-Y"==t?r[2]+"-"+r[0]+"-"+r[1]:r[2]+"-"+r[1]+"-"+r[0]),e}},{key:"getAge",value:function(e){var t=new Date,e=new Date(e),r=t.getFullYear()-e.getFullYear();return t.getMonth()<e.getMonth()||t.getMonth()===e.getMonth()&&t.getDate()<e.getDate()?r-1:r}}]),i}();