diff --git a/src/demo/index3.html b/src/demo/index3.html
index 9f47064..dd7bd32 100644
--- a/src/demo/index3.html
+++ b/src/demo/index3.html
@@ -110,12 +110,14 @@
form: 'clientAdd',
forceFilter: true,
onChange: true,
+ errorClass: '__error_cap',
message: {
- required: 'This field is required !',
- min: 'This field is less then the limit [INDEX]',
- max: 'This field is exceeds the limit of [INDEX]',
- password: 'Password doesn\'t match !',
- email: 'Invalid Email found !'
+ required: 'This field is required.',
+ min: 'This field length is too low.',
+ max: 'This field length is exceeds the limit.',
+ password: 'Password does not match.',
+ email: 'Email is not valid.',
+ file: 'This file is not allowed.'
}
});
diff --git a/src/js/formValidator.js b/src/js/formValidator.js
index e99e17d..96eb75c 100644
--- a/src/js/formValidator.js
+++ b/src/js/formValidator.js
@@ -17,7 +17,7 @@
* Released under the MIT license
* https://github.com/global-source/javascript_form_validator/blob/master/LICENSE
*
- * Date: 2017-05-01
+ * Date: 2017-07-21
*/
/*
@@ -59,6 +59,8 @@ var jsValidator = {
this.onlyFilter = option.onlyFilter;
// To Enable/Disable global validator.
this.onChange = option.onChange;
+ // Update default response "class".
+ if ('undefined' === typeof option.errorClass) option.errorClass = 'js-error-cop';
// Update "jsSettings" to global object.
this.jsSettings = jsSettings.init(option);
// Update "jsForm" to global object.
@@ -139,6 +141,7 @@ var jsValidator = {
}
if (false == this.initialLoad) validationResponse.init(errorList, this.option);
this.initialLoad = false;
+ helper.scrollToError();
return status;
},
/*
@@ -221,7 +224,7 @@ var jsFilter = {
checkStatus: function (elem) {
var status;
status = true;
- if (false === this.forceFilter) {
+ if (false === jsValidator.forceFilter) {
status = false;
if (true === elem.required) {
status = true;
@@ -296,8 +299,8 @@ var jsFilter = {
var min = event.target.min;
var max = event.target.max;
// Default values for Min and Max.
- if (!min) min = 0;
- if (!max) max = 54;
+ if (!min) min = 1;
+ if (!max) max = 31;
// Forming pattern for Restriction.
var regex = new RegExp('^[0-9]+$');
// Validation with Code.
@@ -309,7 +312,7 @@ var jsFilter = {
event.preventDefault();
}
- var num = +this.value, max = 31, min = 1; //converts value to a Number
+ var num = +this.value; //converts value to a Number
if (!this.value.length) return false; //allows empty field
this.value = isNaN(num) ? min : num > max ? max : num < min ? min : num;
@@ -535,9 +538,9 @@ var jsRuleSets = {
'id': activeElem.name + '_new1_1_1xv_resp'
});
firstErrorHit = activeElem.name + '_new1_1_1xv_resp';
- helper.scrollToItem('#' + firstErrorHit);
- } // To Check the Value is less than min or not.
+ }
+ // To Check the Value is less than minimum or not.
if (activeElem.min) {
if (jsRuleSets.isSet(activeElem)) {
if (!jsRuleSets.min(activeElem)) {
@@ -547,12 +550,12 @@ var jsRuleSets = {
'id': activeElem.name + '_new1_1_1xv_resp'
});
firstErrorHit = activeElem.name + '_new1_1_1xv_resp';
- helper.scrollToItem('#' + firstErrorHit);
validElem = false;
}
}
- } // To Check the Value is grater than max or not.
+ }
+ // To Check the Value is grater than max or not.
if (activeElem.max) {
if (jsRuleSets.isSet(activeElem)) {
if (!jsRuleSets.max(activeElem)) {
@@ -562,12 +565,12 @@ var jsRuleSets = {
'id': activeElem.name + '_new1_1_1xv_resp'
});
firstErrorHit = activeElem.name + '_new1_1_1xv_resp';
- helper.scrollToItem('#' + firstErrorHit);
validElem = false;
}
}
- } // To Check the Entered E-mail is Valid or Not.
+ }
+ // To Check the Entered E-mail is Valid or Not.
if (activeElem.type == 'email') {
if (jsRuleSets.isSet(activeElem)) {
if (!jsRuleSets.email(activeElem)) {
@@ -577,13 +580,13 @@ var jsRuleSets = {
'id': activeElem.name + '_new1_1_1xv_resp'
});
firstErrorHit = activeElem.name + '_new1_1_1xv_resp';
- helper.scrollToItem('#' + firstErrorHit);
validElem = false;
}
}
- } // To Compare the Password is Same or Not with Re-Password.
- // TODO: Implement Simplified Comparison.
+ }
+ // To Compare the Password is Same or Not with Re-Password.
+ // TODO: Implement Simplified Comparison.
if (activeElem.type == 'password') {
if (jsRuleSets.isSet(activeElem)) {
if (!jsRuleSets.compare(activeElem)) {
@@ -593,7 +596,6 @@ var jsRuleSets = {
'id': activeElem.name + '_new1_1_1xv_resp'
});
firstErrorHit = activeElem.name + '_new1_1_1xv_resp';
- helper.scrollToItem('#' + firstErrorHit);
validElem = false;
}
}
@@ -812,12 +814,27 @@ var helper = {
// Finally return "false" for general keys.
return false;
},
+ /*
+ * To Scroll Up / Down to notify the item that have validation message.
+ */
+ scrollToError: function () {
+ var active_class = validationResponse.getClass();
+ if (0 === document.getElementsByClassName(active_class).length) return false;
+ document.getElementsByClassName(active_class)[0].setAttribute('id', '__header_error_target_temp');
+ var id = '#' + document.getElementsByClassName(active_class)[0].id;
+ window.location.href = id;
+ document.getElementsByClassName(active_class)[0].removeAttribute('id');
+ // Remove the navigated value.
+ this.removeHash(id);
+ },
/*
* To Scroll Up / Down to notify the item that have validation message.
*/
scrollToItem: function (item) {
// Form hash value.
- var hash = '#' + item;
+ var hash = item;
+ // If "#" is missing, then add back to the ID.
+ if (-1 === hash.indexOf('#')) hash = '#' + hash;
// Navigate with the hash value.
window.location.href = hash;
// Remove the navigated value.
@@ -832,7 +849,7 @@ var helper = {
// Replacing the URL with specific hash value.
path = path.replace(hash, '');
// Update to url history.
- window.history.pushState('', 'Title', path)
+ window.history.pushState('', 'Title', path);
}
};
/**
@@ -877,16 +894,20 @@ var pattern = {
* To Manage all kind of error response.
*/
var validationResponse = {
+ active_class: false,
/*
* Initiating the Response handler.
*/
init: function (errorList, option) {
this.errorMessage = option.message;
+ // Updating the class.
+ this.active_class = option.errorClass;
// var errorElements = option.errorElem;
// jsLogger.out('Errors', errorList);
this.input(errorList.input);
this.select(errorList.select);
this.textArea(errorList.textArea);
+
},
/*
* To handle the "input" element.
@@ -900,6 +921,9 @@ var validationResponse = {
select: function (elem) {
this.process(elem);
},
+ getClass: function () {
+ return this.active_class;
+ },
/*
* To handle the "textArea" element.
*/
@@ -911,6 +935,7 @@ var validationResponse = {
*/
process: function (elem) {
var elementDefaultResponse = '';
+ var active_class = this.getClass();
for (var i in elem) {
// jsLogger.out('Element', document.getElementById(elem[i].id));
if (elem[i].el && true === elem[i].el.required) {
@@ -926,6 +951,7 @@ var validationResponse = {
// jsLogger.out('Element Found', false);
spanTag = document.createElement('span');
spanTag.setAttribute('id', activeElem.id);
+ spanTag.setAttribute('class', active_class);
spanTag.innerHTML = elementDefaultResponse;
} else {
// Re-use Existing response Message SPAN.
@@ -974,16 +1000,17 @@ var validationResponse = {
* then it will be replaces.
*/
default: function (errorType) {
+ var active_class = this.getClass();
var errorMessages = {
- required: 'This field is required',
- min: 'This field length is too low.',
- max: 'This field length is exceeds the limit',
- password: 'Password does not match.',
- email: 'Email is not valid',
- file: 'This file is not allowed'
+ required: 'This field is required.',
+ min: 'This field length is too low.',
+ max: 'This field length is exceeds the limit.',
+ password: 'Password does not match.',
+ email: 'Email is not valid.',
+ file: 'This file is not allowed.'
};
if (typeof errorType !== 'string') return false;
if (typeof errorMessages[errorType] === 'undefined') return false;
return errorMessages[errorType];
}
-};
+};
\ No newline at end of file
diff --git a/src/js/formValidator.min.js b/src/js/formValidator.min.js
index 20e5f01..105edcd 100644
--- a/src/js/formValidator.min.js
+++ b/src/js/formValidator.min.js
@@ -1 +1,23 @@
-var firstErrorHit=!1,jsValidator={formData:!1,onlyFilter:!1,jsForm:!1,jsSettings:!1,jsFormError:!1,formErrorList:{},forceFilter:!1,initialLoad:!0,option:!1,onChange:!1,init:function(a){return jsLogger.table(a),this.option=a,this.onlyFilter=a.onlyFilter,this.onChange=a.onChange,this.jsSettings=jsSettings.init(a),this.jsForm=jsForm.init(a),this.jsFormError=jsFormError.init(),this.forceFilter=a.forceFilter,this.check(),this.submitListener(this.jsForm.formCore,this),this},submitListener:function(a,b){!1!==this.onlyFilter&&void 0!==this.onlyFilter||document.querySelector("#"+a).addEventListener("submit",function(a){!1===b.check()&&a.preventDefault()})},update:function(){var a=this.option;this.onlyFilter=a.onlyFilter,this.jsSettings=jsSettings.init(a),this.jsForm=jsForm.init(a),this.jsFormError=jsFormError.init()},check:function(){var a=!1,b=this.jsForm,c=this.formErrorList,d=[];return c.input=this.elemLoop("input",b.input),c.textArea=this.elemLoop("textArea",b.textArea),c.select=this.elemLoop("select",b.select),jsLogger.out("Error List",this.formErrorList),d.push({errorElem:c}),0===c.input.length&&0===c.textArea.length&&0===c.select.length&&(alert("Form Valid !"),a=!0),0==this.initialLoad&&validationResponse.init(c,this.option),this.initialLoad=!1,a},elemLoop:function(a,b){var c=[];if(null===b||void 0===b)return!1;for(var d in b)if(b[d]){var e=b[d];this.applyFilters(e),1==this.onChange&&this.applyGlobalListener(e),jsLogger.out("Only Filter",this.onlyFilter),!1!==this.onlyFilter&&void 0!==this.onlyFilter||(c=jsRuleSets.checkValidation(e,c))}return c},applyFilters:function(a){"number"==a.type&&jsFilter.number(a),"email"==a.type&&jsFilter.email(a),a.getAttribute("data-allow")&&jsFilter.string(a),a.getAttribute("pattern")&&jsFilter.pattern(a)},applyGlobalListener:function(a){a.addEventListener("change",this.quickValidation,!1)},quickValidation:function(a){jsLogger.out("Quick",a);var b=[],c=a.target;b=jsRuleSets.checkValidation(c,b),jsLogger.out("Quick Out",b),validationResponse.process(b)},validate:function(){return this.check()}},jsFilter={number:function(a){var b=!0;!1===this.forceFilter&&(b=!1,!0===a.required&&(b=!0)),!0===b&&a.addEventListener("keypress",this.isNumberKey,!1)},string:function(a){var b=a.getAttribute("data-allow"),c=this,d=!0;switch(!1===this.forceFilter&&(d=!1,!0===a.required&&(d=!0)),b){case"onlyAlpha":!0===d&&a.addEventListener("keypress",c.isAlpha,!1);break;case"string":!0===d&&a.addEventListener("keypress",c.isAlphaNumeric,!1);break;default:!0===d&&a.addEventListener("keypress",c.isPatternValid,!1)}},pattern:function(a){var b=this,c=!0;!1===this.forceFilter&&(c=!1,!0===a.required&&(c=!0)),!0===c&&a.addEventListener("keypress",b.isPatternValid,!1)},email:function(a){var b=!0;!1===this.forceFilter&&(b=!1,!0===a.required&&(b=!0)),!0===b&&a.addEventListener("keypress",jsRuleSets.email,!1)},limit:function(a){var b=!0;!1===this.forceFilter&&(b=!1,!0===a.required&&(b=!0)),!0===b&&a.addEventListener("keypress",this.isInLimit,!1)},isInLimit:function(a){var b=a.target.value;if(!0===helper.isWindowAction(a))return!0;var c=a.target.min,d=a.target.max;c||(c=0),d||(d=54);var e=new RegExp("^[0-9]+$"),f=String.fromCharCode(a.charCode?a.charCode:a.which);jsLogger.out("Limit",e.test(f)+" | min |"+c+" | max | "+d),jsLogger.out("Regex",e.test(f)),(!1===e.test(f)||parseInt(b)>d||parseInt(b)31&&(b<48||b>57))||(a.preventDefault(),!1)}},jsSettings={errorColor:!1,errorTemplate:!1,init:function(a){return this.errorColor=a.errorColor,this.errorTemplate=a.errorTemplate,this},log:function(){jsLogger.out(this.errorColor),jsLogger.out(this.followedElement),jsLogger.out(this.errorTemplate)}},jsForm={form:!1,formCore:!1,input:!1,select:!1,textArea:!1,label:!1,forceFilter:!1,init:function(a){return jsLogger.out("Form",a.form),this.options=a,this.forceFilter=a.forceFilter,this.registerForm(a.form),this.parseForm(this.form),this.required(),this},registerForm:function(a){if(void 0===a&&jsLogger.out("Form Identification","Form Identification is Missing !"),null===a)return!1;this.form=document.getElementById(a),null===this.form&&jsLogger.out("Status 503","Failed to Proceed !"),this.formCore=a},parseForm:function(a){if(null===a)return!1;this.input=a.getElementsByTagName("input"),this.select=a.getElementsByTagName("select"),this.textArea=a.getElementsByTagName("textarea"),this.label=a.getElementsByTagName("label")},required:function(){var a=this.forceFilter;this.input=jsField.required(this.input,a),this.select=jsField.required(this.select,a),this.textArea=jsField.required(this.textArea,a)},log:function(){jsLogger.out("Form",this.form),jsLogger.out("input",this.input),jsLogger.out("select",this.select),jsLogger.out("textarea",this.textArea),jsLogger.out("labels",this.label)}},jsField={required:function(a,b){for(var c=[],d=0;dd&&0!=c.length&&(b=!1),b},email:function(a){if(!1===a.required)return!0;var b=!1,c=a.value;return c=c.toString(),/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(c)&&(b=!0),c||(b=!1),b},phone:function(a,b){if(!1===a.required)return!0;var c=!0;return""===a.value&&(c=!1),c},compare:function(a){var b=!1;!1===a.required&&(b=!0);var c=a.getAttribute("data-check");if(void 0!==c&&null!=c||(b=!1),null===c&&(c=a.getAttribute("data-parent")),null===c)b=!1;else{c=c.toString();var d=document.getElementById(c);a.value===d.value&&(b=!0)}return jsLogger.out("Compare Status",b),b}},jsFormError={errorHit:!1,errorCss:!1,successCss:!1,init:function(){this.errorHit=!1,this.errorCss="border-color: red;border-radius: 5px;color: red;",this.successCss="border-color: green;border-radius: 5px;color: green;"},log:function(){jsLogger.out("Form Error Hit",this.errorHit)},style:function(a){this.errorCss=a.error,this.successCss=a.success}},jsLogger={out:function(a,b){console.log("======"+a+"======"),console.log(b),console.log("------------------------")},bulk:function(a){console.log(a)},table:function(a){console.table(a)}},helper={isWindowAction:function(a){var b=a||window.event,c=b.shiftKey||b.which;return 9===c||0===c||8===c||32===c||13===c||8===c||c>=35&&c<=40||(c=String.fromCharCode(c),0===c.length)},scrollToItem:function(a){var b=a.nodeName;if(!b)return!1;if(null==b)return!1;a=document.getElementsByName(b);var c=(a.offsetTop-window.scrollY)/20;window._lastDiff||(window._lastDiff=0),Math.abs(c)>2?(window.scrollTo(0,window.scrollY+c),clearTimeout(window._TO),c!==window._lastDiff&&(window._lastDiff=c,window._TO=setTimeout(this.scrollToItem,100,a))):window.scrollTo(0,a.offsetTop)}},pattern={getDefault:function(a,b){void 0===b&&(b="");var c=a.target.getAttribute("data-allowSpecial"),d=a.target.pattern;console.log(d.length);return c||null!==c||(c=""),c=c.toString(),""!==d&&d.length>0&&null!==d?d:"^["+b+c+"]+$"},validate:function(a,b){var c=this.getDefault(a,b),d=new RegExp(c),e=String.fromCharCode(a.charCode?a.charCode:a.which);return d.test(e)}},validationResponse={init:function(a,b){this.errorMessage=b.message,this.input(a.input),this.select(a.select),this.textArea(a.textArea)},input:function(a){this.process(a)},select:function(a){this.process(a)},textArea:function(a){this.process(a)},process:function(a){var b="";for(var c in a)if(a[c].el&&!0===a[c].el.required){var d=a[c],e=a[c].type;b=this.template(d,e);var f=document.getElementById(d.id);void 0===f||"undefined"===f||null===f?(f=document.createElement("span"),f.setAttribute("id",d.id),f.innerHTML=b):f.innerHTML=b,d.el.parentNode.insertBefore(f,d.el.nextSibling)}},template:function(a,b){jsLogger.out("error Type 0",b);var c="",d="",e=a.el.getAttribute("data-message");return void 0!==e&&""!==e&&null!==e||(void 0!==this.errorMessage&&void 0!==this.errorMessage[b]?(b=this.errorMessage[b],a.el.getAttribute("data-message"),b&&(jsLogger.out("errorType",b),d=b,"min"!=a.type&&"max"!=a.type||("min"==a.type&&(c=a.el.min),"max"==a.type&&(c=a.el.max),d=d.replace("[INDEX]",c)))):d=this.default(b),e=d),e},default:function(a){var b={required:"This field is required",min:"This field length is too low.",max:"This field length is exceeds the limit",password:"Password does not match.",email:"Email is not valid"};return"string"==typeof a&&(void 0!==b[a]&&b[a])}};
\ No newline at end of file
+/*!
+ * JavaScript Validator Library v1.0
+ * To perform effective validation and filter with form elements.
+ *
+ * Author : Shankar Thiyagaraajan
+ * Email : shankarthiyagaraajan@gmail.com
+ * Github : https://github.com/shankarThiyagaraajan
+ *
+ * Source
+ * https://github.com/global-source/javascript_form_validator
+ *
+ * Site
+ * https://global-source.github.io/javascript_form_validator/
+ *
+ * Copyright 2017
+ *
+ * Released under the MIT license
+ * https://github.com/global-source/javascript_form_validator/blob/master/LICENSE
+ *
+ * Date: 2017-07-21
+ */
+
+var firstErrorHit=!1,jsValidator={formData:!1,onlyFilter:!1,jsForm:!1,jsSettings:!1,jsFormError:!1,formErrorList:{},forceFilter:!1,initialLoad:!0,option:!1,onChange:!1,init:function(e){return jsLogger.table(e),this.option=e,this.onlyFilter=e.onlyFilter,this.onChange=e.onChange,"undefined"==typeof e.errorClass&&(e.errorClass="js-error-cop"),this.jsSettings=jsSettings.init(e),this.jsForm=jsForm.init(e),this.jsFormError=jsFormError.init(),this.forceFilter=e.forceFilter,this.check(),this.submitListener(this.jsForm.formCore,this),this},submitListener:function(e,t){(!1===this.onlyFilter||"undefined"==typeof this.onlyFilter)&&document.querySelector("#"+e).addEventListener("submit",function(e){!1===t.check()&&e.preventDefault()})},update:function(){var e=this.option;this.onlyFilter=e.onlyFilter,this.jsSettings=jsSettings.init(e),this.jsForm=jsForm.init(e),this.jsFormError=jsFormError.init()},check:function(){var e=!1,t=this.jsForm,r=this.formErrorList,i=[];return r.input=this.elemLoop("input",t.input),r.textArea=this.elemLoop("textArea",t.textArea),r.select=this.elemLoop("select",t.select),jsLogger.out("Error List",this.formErrorList),i.push({errorElem:r}),0===r.input.length&&0===r.textArea.length&&0===r.select.length&&(e=!0),0==this.initialLoad&&validationResponse.init(r,this.option),this.initialLoad=!1,helper.scrollToError(),e},elemLoop:function(e,t){var r=[];if(null===t||"undefined"==typeof t)return!1;t=t.reverse();for(var i in t)if(t[i]){var n=t[i];this.applyFilters(n),1==this.onChange&&this.applyGlobalListener(n),(!1===this.onlyFilter||"undefined"==typeof this.onlyFilter)&&(r=jsRuleSets.checkValidation(n,r))}return r},applyFilters:function(e){"number"==e.type&&jsFilter.number(e),"email"==e.type&&jsFilter.email(e),"file"==e.type&&jsFilter.file(e),e.getAttribute("data-allow")&&jsFilter.string(e),e.getAttribute("pattern")&&jsFilter.pattern(e)},applyGlobalListener:function(e){e.addEventListener("change",this.quickValidation,!1)},quickValidation:function(e){var t=[],r=e.target;t=jsRuleSets.checkValidation(r,t),validationResponse.process(t)},validate:function(){return this.check()}},jsFilter={checkStatus:function(e){var t;return t=!0,!1===jsValidator.forceFilter&&(t=!1,!0===e.required&&(t=!0)),t},number:function(e){var t=this.checkStatus(e);!0===t&&e.addEventListener("keypress",this.isNumberKey,!1)},string:function(e){var t=e.getAttribute("data-allow"),r=this,i=this.checkStatus(e);switch(t){case"onlyAlpha":!0===i&&e.addEventListener("keypress",r.isAlpha,!1);break;case"string":!0===i&&e.addEventListener("keypress",r.isAlphaNumeric,!1);break;default:!0===i&&e.addEventListener("keypress",r.isPatternValid,!1)}},pattern:function(e){var t=this,r=this.checkStatus(e);!0===r&&e.addEventListener("keypress",t.isPatternValid,!1)},email:function(e){var t=this.checkStatus(e);!0===t&&e.addEventListener("keypress",jsRuleSets.email,!1)},file:function(e){var t=this.checkStatus(e);!0===t&&e.addEventListener("change",jsRuleSets.file,!1)},limit:function(e){var t=this.checkStatus(e);!0===t&&e.addEventListener("input",this.isInLimit,!1)},isInLimit:function(e){var t=e.target.value;if(!0===helper.isWindowAction(e))return!0;var r=e.target.min,i=e.target.max;r||(r=1),i||(i=31);var n=new RegExp("^[0-9]+$"),s=String.fromCharCode(e.charCode?e.charCode:e.which);(!1===n.test(s)||parseInt(t)>i||parseInt(t)i?i:r>o?r:o,void(e.target.value=e.target.value.substring(0,e.target.value.length-1))):!1},isAlpha:function(e){if(!0===helper.isWindowAction(e))return!0;var t=pattern.validate(e,"a-zA-Z");!1===t&&e.preventDefault()},isAlphaNumeric:function(e){if(!0===helper.isWindowAction(e))return!0;var t=pattern.validate(e,"a-zA-Z0-9");!1===t&&e.preventDefault()},isValidPassword:function(e){var t=e.which?e.which:e.keyCode;if(32===t)return e.preventDefault(),!1;if(!0===helper.isWindowAction(e))return!0;var r=pattern.validate(e,"a-zA-Z0-9");!1===r&&e.preventDefault()},isPatternValid:function(e){if(!0===helper.isWindowAction(e))return!0;var t=pattern.validate(e,"a-zA-Z0-4");!1===t&&e.preventDefault()},isNumberKey:function(e){if(!0===helper.isWindowAction(e))return!0;var t=e.which?e.which:e.keyCode;return 46===t||t>31&&(48>t||t>57)?(e.preventDefault(),!1):!0}},jsSettings={errorColor:!1,errorTemplate:!1,init:function(e){return this.errorColor=e.errorColor,this.errorTemplate=e.errorTemplate,this},log:function(){jsLogger.out(this.errorColor),jsLogger.out(this.errorTemplate)}},jsForm={form:!1,formCore:!1,input:!1,select:!1,textArea:!1,label:!1,forceFilter:!1,init:function(e){return jsLogger.out("Form",e.form),this.options=e,this.forceFilter=e.forceFilter,this.registerForm(e.form),this.parseForm(this.form),this.required(),this},registerForm:function(e){return"undefined"==typeof e&&jsLogger.out("Form Identification","Form Identification is Missing !"),null===e?!1:(this.form=document.getElementById(e),null===this.form&&jsLogger.out("Status 503","Failed to Proceed !"),void(this.formCore=e))},parseForm:function(e){return null===e?!1:(this.input=e.getElementsByTagName("input"),this.select=e.getElementsByTagName("select"),this.textArea=e.getElementsByTagName("textarea"),void(this.label=e.getElementsByTagName("label")))},required:function(){var e=this.forceFilter;this.input=jsField.required(this.input,e),this.select=jsField.required(this.select,e),this.textArea=jsField.required(this.textArea,e)},log:function(){jsLogger.out("Form",this.form),jsLogger.out("input",this.input),jsLogger.out("select",this.select),jsLogger.out("textarea",this.textArea),jsLogger.out("labels",this.label)}},jsField={required:function(e,t){for(var r=[],i=0;ii&&0!=r.length&&(t=!1),t},email:function(e){if(!1===e.required)return!0;var t=!1,r=e.value;return"undefined"==typeof r?!1:(r=r.toString(),/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(r)&&(t=!0),r||(t=!1),t)},file:function(e){var t,r,i=e.target.getAttribute("data-extensions"),n=e.target;if(""===i)return!0;t=-1===i.indexOf(",")?[i]:i.split(",");var s=n.value;return s=s.toLowerCase(),r=new RegExp("("+t.join("|").replace(/\./g,"\\.")+")$").test(s),!1===r?(alert('Allowed file types are "'+i+'" !'),e.target.value="",!1):!0},phone:function(e,t){if(!1===e.required)return!0;var r=!0;return""===e.value&&(r=!1),r},compare:function(e){var t=!1;!1===e.required&&(t=!0);var r=e.getAttribute("data-check");if(("undefined"==typeof r||null==r)&&(t=!1),null===r&&(r=e.getAttribute("data-parent")),null===r)t=!1;else{r=r.toString();var i=document.getElementById(r);e.value===i.value&&(t=!0)}return t}},jsFormError={errorHit:!1,errorCss:!1,successCss:!1,init:function(){this.errorHit=!1,this.errorCss="border-color: red;border-radius: 5px;color: red;",this.successCss="border-color: green;border-radius: 5px;color: green;"},log:function(){},style:function(e){this.errorCss=e.error,this.successCss=e.success}},jsLogger={out:function(e,t){console.log("======"+e+"======"),console.log(t),console.log("------------------------")},bulk:function(e){console.log(e)},table:function(e){console.table(e)}},helper={isWindowAction:function(e){var t=e||window.event,r=t.shiftKey||t.which;return 9===r||0===r||8===r||32===r||13===r||8===r||r>=35&&40>=r?!0:(r=String.fromCharCode(r),0===r.length?!0:!1)},scrollToError:function(){var e=validationResponse.getClass();if(0===document.getElementsByClassName(e).length)return!1;document.getElementsByClassName(e)[0].setAttribute("id","__header_error_target_temp");var t="#"+document.getElementsByClassName(e)[0].id;window.location.href=t,document.getElementsByClassName(e)[0].removeAttribute("id"),this.removeHash(t)},scrollToItem:function(e){var t=e;-1===t.indexOf("#")&&(t="#"+t),window.location.href=t,this.removeHash(t)},removeHash:function(e){var t=window.location.href;t=t.replace(e,""),window.history.pushState("","Title",t)}},pattern={getDefault:function(e,t){"undefined"==typeof t&&(t="");var r=e.target.getAttribute("data-allowSpecial"),i=e.target.pattern;console.log(i.length);var n;return r||null!==r||(r=""),r=r.toString(),n=""!==i&&i.length>0&&null!==i?i:"^["+t+r+"]+$"},validate:function(e,t){var r=this.getDefault(e,t),i=new RegExp(r),n=String.fromCharCode(e.charCode?e.charCode:e.which);return i.test(n)}},validationResponse={active_class:!1,init:function(e,t){this.errorMessage=t.message,this.active_class=t.errorClass,this.input(e.input),this.select(e.select),this.textArea(e.textArea)},input:function(e){this.process(e)},select:function(e){this.process(e)},getClass:function(){return this.active_class},textArea:function(e){this.process(e)},process:function(e){var t="",r=this.getClass();for(var i in e)if(e[i].el&&!0===e[i].el.required){var n=e[i],s=e[i].type;t=this.template(n,s);var o=document.getElementById(n.id);"undefined"==typeof o||"undefined"===o||null===o?(o=document.createElement("span"),o.setAttribute("id",n.id),o.setAttribute("class",r),o.innerHTML=t):o.innerHTML=t,n.el.parentNode.insertBefore(o,n.el.nextSibling)}},template:function(e,t){var r="",i="",n=e.el.getAttribute("data-message");return("undefined"==typeof n||""===n||null===n)&&("undefined"!=typeof this.errorMessage&&"undefined"!=typeof this.errorMessage[t]?(t=this.errorMessage[t],e.el.getAttribute("data-message"),t&&(i=t,("min"==e.type||"max"==e.type)&&("min"==e.type&&(r=e.el.min),"max"==e.type&&(r=e.el.max),i=i.replace("[INDEX]",r)))):i=this["default"](t),n=i),n},"default":function(e){var t=this.getClass(),r={required:'This field is required.',min:'This field length is too low.',max:'This field length is exceeds the limit.',password:'Password does not match.',email:'Email is not valid.',file:'This file is not allowed.'};return"string"!=typeof e?!1:"undefined"==typeof r[e]?!1:r[e]}};
\ No newline at end of file