YetiForceCompany/YetiForceCRM

View on GitHub
public_html/layouts/resources/validator/FieldValidator.min.js.map

Summary

Maintainability
Test Coverage
{"version":3,"file":"FieldValidator.min.js","sources":["FieldValidator.js"],"sourcesContent":["/*+***********************************************************************************\n * The contents of this file are subject to the vtiger CRM Public License Version 1.0\n * (\"License\"); You may not use this file except in compliance with the License\n * The Original Code is:  vtiger CRM Open Source\n * The Initial Developer of the Original Code is vtiger.\n * Portions created by vtiger are Copyright (C) vtiger.\n * All Rights Reserved.\n * Contributor(s): YetiForce S.A.\n *************************************************************************************/\n'use strict';\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_Email_Validator_Js',\n\t{\n\t\t/**\n\t\t *Function which invokes field validation\n\t\t *@param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar emailInstance = new Vtiger_Email_Validator_Js();\n\t\t\temailInstance.setElement(field);\n\t\t\tvar response = emailInstance.validate();\n\t\t\tif (response != true) {\n\t\t\t\treturn emailInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t *Overwrites base function to avoid trimming and validate white spaces\n\t\t * @return fieldValue\n\t\t * */\n\t\tgetFieldValue: function () {\n\t\t\treturn this.getElement().val();\n\t\t},\n\t\t/**\n\t\t * Function to validate the email field data\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar fieldValue = this.getFieldValue();\n\t\t\treturn this.validateValue(fieldValue);\n\t\t},\n\t\t/**\n\t\t * Function to validate the email field data\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidateValue: function (fieldValue) {\n\t\t\tvar emailFilter =\n\t\t\t\t/^[_/a-zA-Z0-9*]+([!\"#$%&'()*+,./:;<=>?\\^_`{|}~-]?[a-zA-Z0-9/_/-])*@[a-zA-Z0-9]+([\\_\\-\\.]?[a-zA-Z0-9]+)*\\.([\\-\\_]?[a-zA-Z0-9])+(\\.?[a-zA-Z0-9]+)?$/;\n\t\t\tvar illegalChars = /[\\(\\)\\<\\>\\,\\;\\:\\\\\\\"\\[\\]]/;\n\n\t\t\tif (!emailFilter.test(fieldValue)) {\n\t\t\t\tthis.setError(app.vtranslate('JS_PLEASE_ENTER_VALID_EMAIL_ADDRESS'));\n\t\t\t\treturn false;\n\t\t\t} else if (fieldValue.match(illegalChars)) {\n\t\t\t\tthis.setError(app.vtranslate('JS_CONTAINS_ILLEGAL_CHARACTERS'));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar field = this.getElement();\n\t\t\tvar fieldData = field.data();\n\t\t\tvar fieldInfo = fieldData.fieldinfo;\n\t\t\tif (\n\t\t\t\tfieldInfo &&\n\t\t\t\tfieldInfo.restrictedDomains &&\n\t\t\t\tfieldInfo.restrictedDomains.indexOf(fieldValue.split('@').pop()) !== -1\n\t\t\t) {\n\t\t\t\tthis.setError(app.vtranslate('JS_EMAIL_RESTRICTED_DOMAINS'));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_Phone_Validator_Js',\n\t{},\n\t{\n\t\t/**\n\t\t * Function to validate the phone field data\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar fieldValue = this.getFieldValue();\n\t\t\treturn this.validateValue(fieldValue);\n\t\t},\n\t\t/**\n\t\t * Function to validate the phone field data\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidateValue: function (fieldValue) {\n\t\t\tif (fieldValue == '') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tvar field = this.getElement();\n\t\t\tvar form = field.closest('form');\n\t\t\tvar fieldData = field.data();\n\t\t\tvar result = true;\n\t\t\tif (fieldData.advancedVerification == 1) {\n\t\t\t\tvar thisInstance = this;\n\t\t\t\tvar fieldInfo = fieldData.fieldinfo;\n\t\t\t\tvar group = field.closest('.input-group');\n\t\t\t\tvar phoneCountryList = group.find('.phoneCountryList');\n\t\t\t\tlet isReadOnly = field.get(0).readOnly;\n\t\t\t\tif (!isReadOnly) {\n\t\t\t\t\tfield.attr('readonly', true);\n\t\t\t\t}\n\t\t\t\tlet moduleName = form.find('[name=\"module\"]').length ? form.find('[name=\"module\"]').val() : app.getModuleName();\n\t\t\t\tif (moduleName === 'LayoutEditor') {\n\t\t\t\t\tmoduleName = $('#selectedModuleName').val();\n\t\t\t\t}\n\t\t\t\tAppConnector.request({\n\t\t\t\t\tasync: false,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmodule: moduleName,\n\t\t\t\t\t\taction: 'Fields',\n\t\t\t\t\t\tmode: 'verifyPhoneNumber',\n\t\t\t\t\t\tfieldName: fieldInfo.name,\n\t\t\t\t\t\tphoneNumber: fieldValue,\n\t\t\t\t\t\tphoneCountry: phoneCountryList.val()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t\t.done(function (data) {\n\t\t\t\t\t\tif (data.result.isValidNumber == false) {\n\t\t\t\t\t\t\tthisInstance.setError(data.result.message);\n\t\t\t\t\t\t\tresult = false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfield.val(data.result.number);\n\t\t\t\t\t\t\tfield.attr('title', data.result.geocoding + ' ' + data.result.carrier);\n\t\t\t\t\t\t\tif (phoneCountryList.val() != data.result.country) {\n\t\t\t\t\t\t\t\tphoneCountryList.val(data.result.country).trigger('change');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!isReadOnly) {\n\t\t\t\t\t\t\tfield.attr('readonly', false);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.fail(function (error, err) {\n\t\t\t\t\t\tthisInstance.setError(app.vtranslate('JS_ERROR'));\n\t\t\t\t\t\tresult = false;\n\t\t\t\t\t\tapp.errorLog(error, err);\n\t\t\t\t\t});\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_UserName_Validator_Js',\n\t{\n\t\t/**\n\t\t *Function which invokes field validation\n\t\t *@param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tlet usernameInstance = new Vtiger_UserName_Validator_Js();\n\t\t\tusernameInstance.setElement(field);\n\t\t\tlet response = usernameInstance.validate();\n\t\t\tif (response != true) {\n\t\t\t\treturn usernameInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the User Name\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tlet fieldValue = this.getFieldValue();\n\t\t\tlet fieldData = this.getElement().data();\n\t\t\tconst maximumLength = typeof fieldData.fieldinfo !== 'undefined' ? fieldData.fieldinfo.maximumlength : '3,64';\n\t\t\tlet ranges = maximumLength.split(',');\n\t\t\tif (fieldValue.length < parseInt(ranges[0])) {\n\t\t\t\tthis.setError(app.vtranslate('JS_ENTERED_VALUE_IS_TOO_SHORT'));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (fieldValue.length > parseInt(ranges[1])) {\n\t\t\t\tthis.setError(app.vtranslate('JS_ENTERED_VALUE_IS_TOO_LONG'));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tlet negativeRegex = /^[a-zA-Z0-9_.@-]+$/;\n\t\t\tif (!negativeRegex.test(fieldValue)) {\n\t\t\t\tthis.setError(app.vtranslate('JS_CONTAINS_ILLEGAL_CHARACTERS'));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_Integer_Validator_Js',\n\t{\n\t\t/**\n\t\t *Function which invokes field validation\n\t\t *@param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar integerInstance = new Vtiger_Integer_Validator_Js();\n\t\t\tintegerInstance.setElement(field);\n\t\t\tvar response = integerInstance.validate();\n\t\t\tif (response != true) {\n\t\t\t\treturn integerInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Integre field data\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tlet fieldValue = this.getFieldValue(),\n\t\t\t\tgroupSeperator = CONFIG.currencyGroupingSeparator,\n\t\t\t\tintegerRegex = new RegExp('(^[-+]?[\\\\d\\\\' + groupSeperator + ']+)$', 'g');\n\t\t\tif (!fieldValue.match(integerRegex)) {\n\t\t\t\tvar errorInfo = app.vtranslate('JS_PLEASE_ENTER_INTEGER_VALUE');\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tlet fieldInfo = this.getElement().data().fieldinfo;\n\t\t\tif (!fieldInfo || !fieldInfo.maximumlength) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tlet ranges = fieldInfo.maximumlength.split(',');\n\t\t\tif (ranges.length === 2) {\n\t\t\t\tif (fieldValue > parseFloat(ranges[1]) || fieldValue < parseFloat(ranges[0])) {\n\t\t\t\t\terrorInfo = app.vtranslate('JS_ERROR_MAX_VALUE');\n\t\t\t\t\tthis.setError(errorInfo);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (fieldValue > parseFloat(ranges[0]) || fieldValue < 0) {\n\t\t\t\t\terrorInfo = app.vtranslate('JS_ERROR_MAX_VALUE');\n\t\t\t\t\tthis.setError(errorInfo);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_Double_Validator_Js',\n\t{\n\t\t/**\n\t\t * Function which invokes field validation\n\t\t * @param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tlet doubleValidator = new Vtiger_Double_Validator_Js();\n\t\t\tdoubleValidator.setElement(field);\n\t\t\tif (!doubleValidator.validate()) {\n\t\t\t\treturn doubleValidator.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Decimal field data\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tlet response = this._super();\n\t\t\tif (response === true) {\n\t\t\t\tlet fieldValue = this.getFieldValue();\n\t\t\t\tlet doubleRegex = /(^[-+]?\\d+)(\\.\\d+)?$/;\n\t\t\t\tif (!fieldValue.toString().match(doubleRegex)) {\n\t\t\t\t\tthis.setError(app.vtranslate('JS_PLEASE_ENTER_DECIMAL_VALUE'));\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tlet fieldInfo = this.getElement().data().fieldinfo;\n\t\t\t\tif (!fieldInfo || !fieldInfo.maximumlength) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tlet maximumLength = fieldInfo.maximumlength,\n\t\t\t\t\tminimumLength = -maximumLength;\n\t\t\t\tfieldValue = parseFloat(fieldValue);\n\t\t\t\tlet ranges = maximumLength.split(',');\n\t\t\t\tif (ranges.length === 2) {\n\t\t\t\t\tmaximumLength = ranges[1];\n\t\t\t\t\tminimumLength = ranges[0];\n\t\t\t\t}\n\t\t\t\tif (fieldValue > parseFloat(maximumLength) || fieldValue < parseFloat(minimumLength)) {\n\t\t\t\t\tthis.setError(app.vtranslate('JS_ERROR_MAX_VALUE'));\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn response;\n\t\t},\n\t\t/**\n\t\t * Overwrites base function to avoid trimming and validate white spaces\n\t\t * @return fieldValue\n\t\t * */\n\t\tgetFieldValue: function () {\n\t\t\treturn App.Fields.Double.formatToDb(this.getElement().val());\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_PositiveNumber_Validator_Js',\n\t{\n\t\t/**\n\t\t *Function which invokes field validation\n\t\t *@param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar positiveNumberInstance = new Vtiger_PositiveNumber_Validator_Js();\n\t\t\tpositiveNumberInstance.setElement(field);\n\t\t\tvar response = positiveNumberInstance.validate();\n\t\t\tif (response != true) {\n\t\t\t\treturn positiveNumberInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Positive Numbers\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar response = this._super();\n\t\t\tif (response !== true) {\n\t\t\t\treturn response;\n\t\t\t}\n\t\t\tvar fieldValue = this.getFieldValue();\n\t\t\tvar negativeRegex = /(^[-]+\\d+)$/;\n\t\t\tif (isNaN(fieldValue) || fieldValue < 0 || fieldValue.toString().match(negativeRegex)) {\n\t\t\t\tthis.setError(app.vtranslate('JS_ACCEPT_POSITIVE_NUMBER'));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar maximumLength = null;\n\t\t\tif (this.getElement().data().fieldinfo) {\n\t\t\t\tmaximumLength = this.getElement().data().fieldinfo.maximumlength;\n\t\t\t} else {\n\t\t\t\tmaximumLength = this.getElement().data('maximumlength');\n\t\t\t}\n\t\t\tif (!maximumLength) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tlet ranges = maximumLength.split(',');\n\t\t\tif (ranges.length === 2) {\n\t\t\t\tif (fieldValue > parseFloat(ranges[1]) || fieldValue < parseFloat(ranges[0])) {\n\t\t\t\t\tthis.setError(app.vtranslate('JS_ERROR_MAX_VALUE'));\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (fieldValue > parseFloat(ranges[0]) || fieldValue < 0) {\n\t\t\t\t\tthis.setError(app.vtranslate('JS_ERROR_MAX_VALUE'));\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t/**\n\t\t * Overwrites base function to avoid trimming and validate white spaces\n\t\t * @return fieldValue\n\t\t * */\n\t\tgetFieldValue: function () {\n\t\t\treturn App.Fields.Double.formatToDb(this.getElement().val());\n\t\t}\n\t}\n);\n\nVtiger_PositiveNumber_Validator_Js(\n\t'Vtiger_Percentage_Validator_Js',\n\t{\n\t\t/**\n\t\t *Function which invokes field validation\n\t\t *@param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tlet percentageInstance = new Vtiger_Percentage_Validator_Js();\n\t\t\tpercentageInstance.setElement(field);\n\t\t\tif (!percentageInstance.validate()) {\n\t\t\t\treturn percentageInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the percentage field data\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate() {\n\t\t\tconst response = this._super();\n\t\t\tif (response !== true) {\n\t\t\t\treturn response;\n\t\t\t} else {\n\t\t\t\tif (this.getFieldValue() > 100) {\n\t\t\t\t\tthis.setError(app.vtranslate('JS_PERCENTAGE_VALUE_SHOULD_BE_LESS_THAN_100'));\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Overwrites base function to avoid trimming and validate white spaces\n\t\t * @return fieldValue\n\t\t * */\n\t\tgetFieldValue: function () {\n\t\t\treturn App.Fields.Double.formatToDb(this.getElement().val());\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_Url_Validator_Js',\n\t{\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar validatorInstance = new Vtiger_Url_Validator_Js();\n\t\t\tvalidatorInstance.setElement(field);\n\t\t\tconst result = validatorInstance.validate();\n\t\t\tif (result === true) {\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn validatorInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Url\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar fieldValue = this.getFieldValue();\n\t\t\tvar regexp = /(^|\\s)((https?:\\/\\/)?[\\w-]+(\\.[\\w-]+)+\\.?(:\\d+)?(\\/\\S*)?)/gi;\n\t\t\tvar result = regexp.test(fieldValue);\n\t\t\tif (!result) {\n\t\t\t\tif (\n\t\t\t\t\tfieldValue.indexOf('http://') === 0 ||\n\t\t\t\t\tfieldValue.indexOf('https://') === 0 ||\n\t\t\t\t\tfieldValue.indexOf('ftp://') === 0 ||\n\t\t\t\t\tfieldValue.indexOf('ftps://') === 0 ||\n\t\t\t\t\tfieldValue.indexOf('telnet://') === 0 ||\n\t\t\t\t\tfieldValue.indexOf('smb://') === 0 ||\n\t\t\t\t\tfieldValue.indexOf('www.') === 0\n\t\t\t\t) {\n\t\t\t\t\tresult = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!result) {\n\t\t\t\tvar errorInfo = app.vtranslate('JS_CONTAINS_ILLEGAL_CHARACTERS'); //\"Please enter valid url\";\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_MultiSelect_Validator_Js',\n\t{\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar validatorInstance = new Vtiger_MultiSelect_Validator_Js();\n\t\t\tvalidatorInstance.setElement(field);\n\t\t\tvar result = validatorInstance.validate();\n\t\t\tif (result == true) {\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn validatorInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Multi select\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar fieldInstance = this.getElement();\n\t\t\tvar selectElementValue = fieldInstance.val();\n\t\t\tif (selectElementValue == null) {\n\t\t\t\tvar errorInfo = app.vtranslate('JS_PLEASE_SELECT_ATLEAST_ONE_OPTION');\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_MultiDomain_Validator_Js',\n\t{\n\t\tinvokeValidation(field, rules, i, options) {\n\t\t\tconst validatorInstance = new Vtiger_MultiDomain_Validator_Js();\n\t\t\tvalidatorInstance.setElement(field);\n\t\t\tconst result = validatorInstance.validate();\n\t\t\tif (result === true) {\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn validatorInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Multi Domain select\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate() {\n\t\t\tconst fieldInstance = this.getElement();\n\t\t\tconst selectElementValue = fieldInstance.val();\n\t\t\tif (Array.isArray(selectElementValue)) {\n\t\t\t\tfor (let value of selectElementValue) {\n\t\t\t\t\tif (value && !/(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]/iu.test(value)) {\n\t\t\t\t\t\tthis.setError(app.vtranslate('JS_PLEASE_SELECT_VALID_DOMAIN_NAMES'));\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Double_Validator_Js(\n\t'Vtiger_GreaterThanZero_Validator_Js',\n\t{\n\t\t/**\n\t\t *Function which invokes field validation\n\t\t *@param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar GreaterThanZeroInstance = new Vtiger_GreaterThanZero_Validator_Js();\n\t\t\tGreaterThanZeroInstance.setElement(field);\n\t\t\tvar response = GreaterThanZeroInstance.validate();\n\t\t\tif (response != true) {\n\t\t\t\treturn GreaterThanZeroInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Positive Numbers and greater than zero value\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar response = this._super();\n\t\t\tif (response != true) {\n\t\t\t\treturn response;\n\t\t\t} else {\n\t\t\t\tvar fieldValue = this.getFieldValue();\n\t\t\t\tif (fieldValue <= 0) {\n\t\t\t\t\tvar errorInfo = app.vtranslate('JS_VALUE_SHOULD_BE_GREATER_THAN_ZERO');\n\t\t\t\t\tthis.setError(errorInfo);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_PositiveNumber_Validator_Js(\n\t'Vtiger_WholeNumber_Validator_Js',\n\t{\n\t\t/**\n\t\t *Function which invokes field validation\n\t\t *@param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar instance = new Vtiger_WholeNumber_Validator_Js();\n\t\t\tinstance.setElement(field);\n\t\t\tvar response = instance.validate();\n\t\t\tif (response != true) {\n\t\t\t\treturn instance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Positive Numbers and whole Number\n\t\t * @return boolean true if validation is successful or false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tlet response = this._super();\n\t\t\tif (response !== true) {\n\t\t\t\treturn response;\n\t\t\t}\n\t\t\tlet field = this.getElement(),\n\t\t\t\tfieldValue = this.getFieldValue(),\n\t\t\t\tfieldData = field.data(),\n\t\t\t\tfieldInfo = fieldData.fieldinfo,\n\t\t\t\terrorInfo;\n\t\t\tif (fieldValue % 1 !== 0) {\n\t\t\t\tif (!jQuery.isEmptyObject(fieldInfo)) {\n\t\t\t\t\terrorInfo = app.vtranslate('INVALID_NUMBER_OF') + ' ' + fieldInfo.label;\n\t\t\t\t} else {\n\t\t\t\t\terrorInfo = app.vtranslate('INVALID_NUMBER');\n\t\t\t\t}\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_lessThanToday_Validator_Js',\n\t{},\n\t{\n\t\t/**\n\t\t * Function to validate the birthday field\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar field = this.getElement();\n\t\t\tvar fieldData = field.data();\n\t\t\tvar fieldDateFormat = fieldData.dateFormat;\n\t\t\tvar fieldInfo = fieldData.fieldinfo;\n\t\t\tvar fieldValue = this.getFieldValue();\n\t\t\ttry {\n\t\t\t\tvar fieldDateInstance = App.Fields.Date.getDateInstance(fieldValue, fieldDateFormat);\n\t\t\t} catch (err) {\n\t\t\t\tthis.setError(err);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfieldDateInstance.setHours(0, 0, 0, 0);\n\t\t\tvar todayDateInstance = new Date();\n\t\t\ttodayDateInstance.setHours(0, 0, 0, 0);\n\t\t\tvar comparedDateVal = todayDateInstance - fieldDateInstance;\n\t\t\tif (comparedDateVal <= 0) {\n\t\t\t\tvar errorInfo = fieldInfo.label + ' ' + app.vtranslate('JS_SHOULD_BE_LESS_THAN_CURRENT_DATE');\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_lessThanOrEqualToToday_Validator_Js',\n\t{},\n\t{\n\t\t/**\n\t\t * Function to validate the datesold field\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar field = this.getElement();\n\t\t\tvar fieldData = field.data();\n\t\t\tvar fieldDateFormat = fieldData.dateFormat;\n\t\t\tvar fieldInfo = fieldData.fieldinfo;\n\t\t\tvar fieldValue = this.getFieldValue();\n\t\t\ttry {\n\t\t\t\tvar fieldDateInstance = App.Fields.Date.getDateInstance(fieldValue, fieldDateFormat);\n\t\t\t} catch (err) {\n\t\t\t\tthis.setError(err);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfieldDateInstance.setHours(0, 0, 0, 0);\n\t\t\tvar todayDateInstance = new Date();\n\t\t\ttodayDateInstance.setHours(0, 0, 0, 0);\n\t\t\tvar comparedDateVal = todayDateInstance - fieldDateInstance;\n\t\t\tif (comparedDateVal < 0) {\n\t\t\t\tvar errorInfo =\n\t\t\t\t\tfieldInfo.label +\n\t\t\t\t\t' ' +\n\t\t\t\t\tapp.vtranslate('JS_SHOULD_BE_LESS_THAN_OR_EQUAL_TO') +\n\t\t\t\t\t' ' +\n\t\t\t\t\tapp.vtranslate('JS_CURRENT_DATE');\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_greaterThanOrEqualToToday_Validator_Js',\n\t{},\n\t{\n\t\t/**\n\t\t * Function to validate the dateinservice field\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar field = this.getElement();\n\t\t\tvar fieldData = field.data();\n\t\t\tvar fieldDateFormat = fieldData.dateFormat;\n\t\t\tvar fieldInfo = fieldData.fieldinfo;\n\t\t\tvar fieldValue = this.getFieldValue();\n\t\t\ttry {\n\t\t\t\tvar fieldDateInstance = App.Fields.Date.getDateInstance(fieldValue, fieldDateFormat);\n\t\t\t} catch (err) {\n\t\t\t\tthis.setError(err);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfieldDateInstance.setHours(0, 0, 0, 0);\n\t\t\tvar todayDateInstance = new Date();\n\t\t\ttodayDateInstance.setHours(0, 0, 0, 0);\n\t\t\tvar comparedDateVal = todayDateInstance - fieldDateInstance;\n\t\t\tif (comparedDateVal > 0) {\n\t\t\t\tvar errorInfo =\n\t\t\t\t\tfieldInfo.label +\n\t\t\t\t\t' ' +\n\t\t\t\t\tapp.vtranslate('JS_SHOULD_BE_GREATER_THAN_OR_EQUAL_TO') +\n\t\t\t\t\t' ' +\n\t\t\t\t\tapp.vtranslate('JS_CURRENT_DATE');\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_greaterThanDependentField_Validator_Js',\n\t{\n\t\t/**\n\t\t *Function which invokes field validation\n\t\t *@param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar fieldForValidation = field[0];\n\t\t\tif (jQuery(fieldForValidation).attr('name') == 'followup_date_start') {\n\t\t\t\tvar dependentFieldList = new Array('date_start');\n\t\t\t}\n\t\t\tvar instance = new Vtiger_greaterThanDependentField_Validator_Js();\n\t\t\tinstance.setElement(field);\n\t\t\tvar response = instance.validate(dependentFieldList);\n\t\t\tif (response != true) {\n\t\t\t\treturn instance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the birthday field\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function (dependentFieldList) {\n\t\t\tvar field = this.getElement();\n\t\t\tvar fieldInfo = field.data('fieldinfo');\n\t\t\tvar fieldLabel;\n\t\t\tif (typeof fieldInfo === 'undefined') {\n\t\t\t\tfieldLabel = jQuery(field).attr('name');\n\t\t\t} else {\n\t\t\t\tfieldLabel = fieldInfo.label;\n\t\t\t}\n\t\t\tvar contextFormElem = field.closest('form');\n\t\t\tfor (var i = 0; i < dependentFieldList.length; i++) {\n\t\t\t\tvar dependentField = dependentFieldList[i];\n\t\t\t\tvar dependentFieldInContext = jQuery('input[name=' + dependentField + ']', contextFormElem);\n\t\t\t\tif (dependentFieldInContext.length > 0) {\n\t\t\t\t\tlet value, dependentValue;\n\t\t\t\t\tif ($.inArray(dependentFieldInContext.data('fieldinfo').type, ['currency', 'number', 'decimal']) !== -1) {\n\t\t\t\t\t\tvalue = App.Fields.Double.formatToDb(field.val());\n\t\t\t\t\t\tdependentValue = App.Fields.Double.formatToDb(dependentFieldInContext.val());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = this.getDateTimeInstance(field);\n\t\t\t\t\t\tdependentValue = this.getDateTimeInstance(dependentFieldInContext);\n\t\t\t\t\t}\n\t\t\t\t\tvar dependentFieldLabel = dependentFieldInContext.data('fieldinfo').label;\n\t\t\t\t\tvar comparedDateVal = value - dependentValue;\n\t\t\t\t\tif (comparedDateVal < 0) {\n\t\t\t\t\t\tvar errorInfo =\n\t\t\t\t\t\t\tfieldLabel +\n\t\t\t\t\t\t\t' ' +\n\t\t\t\t\t\t\tapp.vtranslate('JS_SHOULD_BE_GREATER_THAN_OR_EQUAL_TO') +\n\t\t\t\t\t\t\t' ' +\n\t\t\t\t\t\t\tdependentFieldLabel +\n\t\t\t\t\t\t\t'';\n\t\t\t\t\t\tthis.setError(errorInfo);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tgetDateTimeInstance: function (field) {\n\t\t\tvar dateFormat = field.data('dateFormat');\n\t\t\tvar fieldValue = field.val();\n\t\t\ttry {\n\t\t\t\tvar dateTimeInstance = App.Fields.Date.getDateInstance(fieldValue, dateFormat);\n\t\t\t} catch (err) {\n\t\t\t\tthis.setError(err);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn dateTimeInstance;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_dateAndTimeGreaterThanDependentField_Validator_Js',\n\t{},\n\t{\n\t\tfieldDateTime: '',\n\t\tfieldDateTimeInstance: [],\n\t\tdateFormat: '',\n\t\t/**\n\t\t * Function to validate the date field\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function (dependentFieldList) {\n\t\t\tlet thisInstance = this;\n\t\t\tlet field = this.getElement();\n\t\t\tlet fieldDateTime = '';\n\t\t\tlet fieldDateTimeInstance = [];\n\t\t\tlet contextFormElem = field.closest('form');\n\t\t\tlet view = contextFormElem.attr('name');\n\t\t\tlet j = 0;\n\n\t\t\tif (view == 'EditView' && contextFormElem.data('jqv').InvalidFields.length > 0) {\n\t\t\t\tlet invalidFields = contextFormElem.data('jqv').InvalidFields.map((e) => {\n\t\t\t\t\treturn e.attributes.name.value;\n\t\t\t\t});\n\t\t\t\tif (invalidFields.filter((value) => dependentFieldList.includes(value)).length > 0) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let i in dependentFieldList) {\n\t\t\t\tlet dependentField = dependentFieldList[i];\n\t\t\t\tlet dependentFieldInContext = jQuery('input[name=' + dependentField + ']', contextFormElem);\n\t\t\t\tif (dependentFieldInContext.length > 0) {\n\t\t\t\t\tif (typeof dependentFieldInContext.data('dateFormat') === 'undefined' && fieldDateTime) {\n\t\t\t\t\t\tfieldDateTime += ' ' + dependentFieldInContext.val();\n\t\t\t\t\t\tfieldDateTimeInstance[j] = App.Fields.Date.getDateInstance(fieldDateTime, dateFormat);\n\t\t\t\t\t\tj++;\n\t\t\t\t\t} else if (typeof dependentFieldInContext.data('dateFormat') !== 'undefined') {\n\t\t\t\t\t\tvar dateFormat = dependentFieldInContext.data('dateFormat');\n\t\t\t\t\t\tfieldDateTime = dependentFieldInContext.val();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn thisInstance.difference(fieldDateTimeInstance);\n\t\t},\n\t\tdifference: function (fieldDateTimeInstance) {\n\t\t\tif (fieldDateTimeInstance.length == 2) {\n\t\t\t\tvar comparedDateVal = fieldDateTimeInstance[1] - fieldDateTimeInstance[0];\n\t\t\t\tif (comparedDateVal < 0) {\n\t\t\t\t\tvar errorInfo = app.vtranslate('JS_AN_INCORRECT_RANGE_OF_DATES_WAS_ENTERED');\n\t\t\t\t\tthis.setError(errorInfo);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_futureEventCannotBeHeld_Validator_Js',\n\t{},\n\t{\n\t\t/**\n\t\t * Function to validate event status , which cannot be held for future events\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function (dependentFieldList) {\n\t\t\tvar field = this.getElement();\n\t\t\tvar fieldLabel = field.data('fieldinfo').label;\n\t\t\tvar status = field.val();\n\t\t\tvar contextFormElem = field.closest('form');\n\t\t\tfor (var i = 0; i < dependentFieldList.length; i++) {\n\t\t\t\tvar dependentField = dependentFieldList[i];\n\t\t\t\tvar dependentFieldInContext = jQuery('input[name=' + dependentField + ']', contextFormElem);\n\t\t\t\tif (dependentFieldInContext.length > 0) {\n\t\t\t\t\tvar dependentFieldLabel = dependentFieldInContext.data('fieldinfo').label;\n\t\t\t\t\tvar todayDateInstance = new Date();\n\t\t\t\t\tvar dateFormat = dependentFieldInContext.data('dateFormat');\n\t\t\t\t\tvar time = jQuery('input[name=time_start]', contextFormElem);\n\t\t\t\t\tvar fieldValue = dependentFieldInContext.val() + ' ' + time.val();\n\t\t\t\t\tvar dependentFieldDateInstance = App.Fields.Date.getDateInstance(fieldValue, dateFormat);\n\t\t\t\t\tvar comparedDateVal = todayDateInstance - dependentFieldDateInstance;\n\t\t\t\t\tif (comparedDateVal < 0 && status == 'Held') {\n\t\t\t\t\t\tvar errorInfo =\n\t\t\t\t\t\t\tfieldLabel + ' ' + app.vtranslate('JS_FUTURE_EVENT_CANNOT_BE_HELD') + ' ' + dependentFieldLabel + '';\n\t\t\t\t\t\tthis.setError(errorInfo);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_lessThanDependentField_Validator_Js',\n\t{},\n\t{\n\t\t/**\n\t\t * Function to validate the birthday field\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function (dependentFieldList) {\n\t\t\tlet field = this.getElement();\n\t\t\tlet fieldInfo = field.data('fieldinfo');\n\t\t\tlet fieldLabel = fieldInfo.label;\n\t\t\tlet contextFormElem = field.closest('form');\n\t\t\t//No need to validate if value is empty\n\t\t\tif (field.val().length == 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (var i = 0; i < dependentFieldList.length; i++) {\n\t\t\t\tvar dependentField = dependentFieldList[i];\n\t\t\t\tvar dependentFieldInContext = jQuery('input[name=' + dependentField + ']', contextFormElem);\n\t\t\t\tif (dependentFieldInContext.length > 0) {\n\t\t\t\t\tlet value, dependentValue;\n\t\t\t\t\tif ($.inArray(fieldInfo.type, ['currency', 'number', 'decimal']) !== -1) {\n\t\t\t\t\t\tvalue = App.Fields.Double.formatToDb(field.val());\n\t\t\t\t\t\tdependentValue = App.Fields.Double.formatToDb(dependentFieldInContext.val());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = this.getDateTimeInstance(field);\n\t\t\t\t\t\tdependentValue = this.getDateTimeInstance(dependentFieldInContext);\n\t\t\t\t\t}\n\t\t\t\t\tvar dependentFieldLabel = dependentFieldInContext.data('fieldinfo').label;\n\t\t\t\t\t//No need to validate if value is empty\n\t\t\t\t\tif (dependentFieldInContext.val().length == 0) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tvar comparedDateVal = value - dependentValue;\n\t\t\t\t\tif (comparedDateVal > 0) {\n\t\t\t\t\t\tvar errorInfo =\n\t\t\t\t\t\t\tfieldLabel + ' ' + app.vtranslate('JS_SHOULD_BE_LESS_THAN_OR_EQUAL_TO') + ' ' + dependentFieldLabel + '';\n\t\t\t\t\t\tthis.setError(errorInfo);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tgetDateTimeInstance: function (field) {\n\t\t\tvar dateFormat = field.data('dateFormat');\n\t\t\tvar fieldValue = field.val();\n\t\t\ttry {\n\t\t\t\tvar dateTimeInstance = App.Fields.Date.getDateInstance(fieldValue, dateFormat);\n\t\t\t} catch (err) {\n\t\t\t\tthis.setError(err);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn dateTimeInstance;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_Currency_Validator_Js',\n\t{\n\t\t/**\n\t\t *Function which invokes field validation\n\t\t *@param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar currencyValidatorInstance = new Vtiger_Currency_Validator_Js();\n\t\t\tcurrencyValidatorInstance.setElement(field);\n\t\t\tvar response = currencyValidatorInstance.validate();\n\t\t\tif (response != true) {\n\t\t\t\treturn currencyValidatorInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Currency Field\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tlet response = this._super();\n\t\t\tif (response != true) {\n\t\t\t\treturn response;\n\t\t\t}\n\t\t\tlet fieldData = this.getElement().data();\n\t\t\tlet decimalSeparator = fieldData.decimalSeparator ? fieldData.decimalSeparator : CONFIG.currencyDecimalSeparator;\n\t\t\tlet groupSeparator = fieldData.groupSeparator ? fieldData.groupSeparator : CONFIG.currencyGroupingSeparator;\n\n\t\t\tlet strippedValue = this.getFieldValue().replace(decimalSeparator, '');\n\t\t\tlet spacePattern = /\\s/;\n\t\t\tif (spacePattern.test(decimalSeparator) || spacePattern.test(groupSeparator))\n\t\t\t\tstrippedValue = strippedValue.replace(/ /g, '');\n\t\t\tlet errorInfo;\n\n\t\t\tif (groupSeparator === '$') {\n\t\t\t\tgroupSeparator = '\\\\$';\n\t\t\t}\n\t\t\tif (groupSeparator === '.') {\n\t\t\t\tgroupSeparator = '\\\\.';\n\t\t\t}\n\n\t\t\tlet regex = new RegExp(groupSeparator, 'g');\n\t\t\tstrippedValue = strippedValue.replace(regex, '');\n\n\t\t\tif (isNaN(strippedValue)) {\n\t\t\t\terrorInfo = app.vtranslate('JS_CONTAINS_ILLEGAL_CHARACTERS');\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tlet negativeNumber = fieldData.fieldinfo && fieldData.fieldinfo.fieldtype === 'NN';\n\t\t\tif (!negativeNumber && strippedValue < 0) {\n\t\t\t\terrorInfo = app.vtranslate('JS_ACCEPT_POSITIVE_NUMBER');\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst maximumLength = typeof fieldData.fieldinfo !== 'undefined' ? fieldData.fieldinfo.maximumlength : null;\n\t\t\tif (maximumLength) {\n\t\t\t\tlet ranges = maximumLength.split(',');\n\t\t\t\tif (\n\t\t\t\t\t(ranges.length === 2 && (strippedValue > parseFloat(ranges[1]) || strippedValue < parseFloat(ranges[0]))) ||\n\t\t\t\t\t(ranges.length === 1 && (strippedValue > parseFloat(ranges[0]) || strippedValue < 0))\n\t\t\t\t) {\n\t\t\t\t\terrorInfo = app.vtranslate('JS_ERROR_MAX_VALUE');\n\t\t\t\t\tthis.setError(errorInfo);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\nVtiger_Currency_Validator_Js('Vtiger_NumberUserFormat_Validator_Js', {\n\t/**\n\t *Function which invokes field validation\n\t * @param accepts field element as parameter\n\t * @return error if validation fails true on success\n\t */\n\tinvokeValidation: function (field, rules, i, options) {\n\t\tlet instance = new Vtiger_Currency_Validator_Js();\n\t\tinstance.setElement(field);\n\t\tif (instance.validate() !== true) {\n\t\t\treturn instance.getError();\n\t\t}\n\t}\n});\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_ReferenceField_Validator_Js',\n\t{},\n\t{\n\t\t/**\n\t\t * Function to validate the Positive Numbers and whole Number\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar field = this.getElement();\n\t\t\tvar parentElement = field.closest('.fieldValue');\n\t\t\tvar referenceField = parentElement.find('.sourceField');\n\t\t\tvar referenceFieldValue = referenceField.val();\n\t\t\tif (referenceFieldValue == '') {\n\t\t\t\tvar errorInfo = app.vtranslate('JS_REQUIRED_FIELD');\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_Date_Validator_Js',\n\t{\n\t\t/**\n\t\t *Function which invokes field validation\n\t\t *@param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar dateValidatorInstance = new Vtiger_Date_Validator_Js();\n\t\t\tdateValidatorInstance.setElement(field);\n\t\t\tvar response = dateValidatorInstance.validate();\n\t\t\tif (response != true) {\n\t\t\t\treturn dateValidatorInstance.getError();\n\t\t\t}\n\t\t\treturn response;\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Positive Numbers and whole Number\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar field = this.getElement();\n\t\t\tvar fieldData = field.data();\n\t\t\tvar fieldDateFormat = fieldData.dateFormat;\n\t\t\tvar fieldValue = this.getFieldValue();\n\t\t\ttry {\n\t\t\t\tif (fieldData.calendarType === 'range') {\n\t\t\t\t\tfieldValue = fieldValue.split(',');\n\t\t\t\t\tif (fieldValue.length !== 2) {\n\t\t\t\t\t\tthrow new Error();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfieldValue = [fieldValue];\n\t\t\t\t}\n\t\t\t\tfieldValue.forEach((key) => {\n\t\t\t\t\tApp.Fields.Date.getDateInstance(key, fieldDateFormat);\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tvar errorInfo = app.vtranslate('JS_PLEASE_ENTER_VALID_DATE');\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\nVtiger_Date_Validator_Js('Vtiger_Datetime_Validator_Js', {}, {});\nVtiger_Base_Validator_Js(\n\t'Vtiger_Time_Validator_Js',\n\t{\n\t\t/**\n\t\t * Function which invokes field validation\n\t\t * @param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar validatorInstance = new Vtiger_Time_Validator_Js();\n\t\t\tvalidatorInstance.setElement(field);\n\t\t\tvar result = validatorInstance.validate();\n\t\t\tif (result == true) {\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn validatorInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Time Fields\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tlet format = CONFIG.hourFormat;\n\t\t\tif (this.field.data('format') && [12, 24].indexOf(this.field.data('format')) != -1) {\n\t\t\t\tformat = this.field.data('format');\n\t\t\t}\n\t\t\tlet regexp = '';\n\t\t\tswitch (format) {\n\t\t\t\tcase 12:\n\t\t\t\t\tregexp = new RegExp('^([0][0-9]|1[0-2]):([0-5][0-9])([ ]PM|[ ]AM|PM|AM)$');\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tregexp = new RegExp('^(2[0-3]|[0][0-9]|1[0-9]):([0-5][0-9])$');\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (!regexp.test(this.getFieldValue())) {\n\t\t\t\tvar errorInfo = app.vtranslate('JS_PLEASE_ENTER_VALID_TIME');\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_Twitter_Validator_Js',\n\t{\n\t\t/**\n\t\t * Function which invokes field validation\n\t\t * @param {jQuery} field - accepts field element as parameter\n\t\t * @return string|true - error text if validation fails, true on success\n\t\t */\n\t\tinvokeValidation(field, rules, i, options) {\n\t\t\tlet validatorInstance = new Vtiger_Twitter_Validator_Js();\n\t\t\tvalidatorInstance.setElement(field);\n\t\t\tlet result = validatorInstance.validate();\n\t\t\tif (result == true) {\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn validatorInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Twwiter Account\n\t\t * @return bool true if validation is successfull\n\t\t */\n\t\tvalidate() {\n\t\t\tlet fieldValue = this.getFieldValue();\n\t\t\tif (!fieldValue.match(/^[a-zA-Z0-9_]{1,15}$/g)) {\n\t\t\t\tthis.setError(app.vtranslate('JS_PLEASE_ENTER_VALID_TWITTER_ACCOUNT'));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Email_Validator_Js(\n\t'Vtiger_MultiEmail_Validator_Js',\n\t{\n\t\t/**\n\t\t * Function which invokes field validation\n\t\t * @param {jQuery} field - accepts field element as parameter\n\t\t * @return string|true - error text if validation fails, true on success\n\t\t */\n\t\tinvokeValidation(field) {\n\t\t\tlet validatorInstance = new Vtiger_MultiEmail_Validator_Js();\n\t\t\tvalidatorInstance.setElement(field);\n\t\t\tlet result = validatorInstance.validate();\n\t\t\tif (result == true) {\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn validatorInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Multi email. Check if the email address is duplicated.\n\t\t * @return bool true if validation is successfull\n\t\t */\n\t\tvalidate() {\n\t\t\tlet fieldValue = this.getFieldValue();\n\t\t\tif (fieldValue === '') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (this.validateValue(fieldValue) === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tlet allFields = $(this.field).closest('div.js-multi-email').eq(0).find('.js-multi-email-item');\n\t\t\tlet arrayLength = allFields.length;\n\t\t\tlet amountOfDuplicateEmails = 0;\n\t\t\tfor (let i = 0; i < arrayLength; ++i) {\n\t\t\t\tlet inputField = $(allFields[i]).find('input.js-multi-email');\n\t\t\t\tif (inputField.val() === '') {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (inputField.val() === fieldValue) {\n\t\t\t\t\t++amountOfDuplicateEmails;\n\t\t\t\t}\n\t\t\t\tif (2 <= amountOfDuplicateEmails) {\n\t\t\t\t\tthis.setError(app.vtranslate('JS_EMAIL_DUPLICATED'));\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\n//Calendar Specific validators\n// We have placed it here since quick create will not load module specific validators\n\nVtiger_greaterThanDependentField_Validator_Js(\n\t'Calendar_greaterThanDependentField_Validator_Js',\n\t{},\n\t{\n\t\tgetDateTimeInstance: function (field) {\n\t\t\tlet form = field.closest('form'),\n\t\t\t\ttimeField,\n\t\t\t\ttimeFieldValue;\n\t\t\tif (field.attr('name') === 'date_start') {\n\t\t\t\ttimeField = form.find('[name=\"time_start\"]');\n\t\t\t\ttimeFieldValue = timeField.val();\n\t\t\t} else if (field.attr('name') === 'due_date') {\n\t\t\t\ttimeField = form.find('[name=\"time_end\"]');\n\t\t\t\tif (timeField.length > 0) {\n\t\t\t\t\ttimeFieldValue = timeField.val();\n\t\t\t\t} else {\n\t\t\t\t\t//Max value for the day\n\t\t\t\t\ttimeFieldValue = '11:59 PM';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet dateFieldValue = field.val() + ' ' + timeFieldValue,\n\t\t\t\tdateFormat = field.data('dateFormat');\n\t\t\treturn App.Fields.Date.getDateInstance(dateFieldValue, dateFormat);\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Calendar_greaterThanToday_Validator_Js',\n\t{},\n\t{\n\t\t/**\n\t\t * Function to validate the birthday field\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar field = this.getElement();\n\t\t\tvar fieldData = field.data();\n\t\t\tvar fieldDateFormat = fieldData.dateFormat;\n\t\t\tvar fieldInfo = fieldData.fieldinfo;\n\t\t\tvar fieldValue = this.getFieldValue();\n\t\t\ttry {\n\t\t\t\tvar fieldDateInstance = App.Fields.Date.getDateInstance(fieldValue, fieldDateFormat);\n\t\t\t} catch (err) {\n\t\t\t\tthis.setError(err);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfieldDateInstance.setHours(0, 0, 0, 0);\n\t\t\tvar todayDateInstance = new Date();\n\t\t\ttodayDateInstance.setHours(0, 0, 0, 0);\n\t\t\tvar comparedDateVal = todayDateInstance - fieldDateInstance;\n\t\t\tif (comparedDateVal >= 0) {\n\t\t\t\tvar errorInfo = fieldInfo.label + ' ' + app.vtranslate('JS_SHOULD_BE_GREATER_THAN_CURRENT_DATE');\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Calendar_RepeatMonthDate_Validator_Js',\n\t{\n\t\t/**\n\t\t *Function which invokes field validation\n\t\t *@param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar repeatMonthDateValidatorInstance = new Calendar_RepeatMonthDate_Validator_Js();\n\t\t\trepeatMonthDateValidatorInstance.setElement(field);\n\t\t\tvar response = repeatMonthDateValidatorInstance.validate();\n\t\t\tif (response != true) {\n\t\t\t\treturn repeatMonthDateValidatorInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Positive Numbers and whole Number\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar fieldValue = this.getFieldValue();\n\n\t\t\tif (\n\t\t\t\tparseInt(parseFloat(fieldValue)) != fieldValue ||\n\t\t\t\tfieldValue == '' ||\n\t\t\t\tparseInt(fieldValue) > '31' ||\n\t\t\t\tparseInt(fieldValue) <= 0\n\t\t\t) {\n\t\t\t\tvar result = app.vtranslate('JS_NUMBER_SHOULD_BE_LESS_THAN_32');\n\t\t\t\tthis.setError(result);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_WholeNumber_Validator_Js(\n\t'Vtiger_WholeNumberGreaterThanZero_Validator_Js',\n\t{\n\t\t/**\n\t\t *Function which invokes field validation\n\t\t *@param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar WholeNumberGreaterThanZero = new Vtiger_WholeNumberGreaterThanZero_Validator_Js();\n\t\t\tWholeNumberGreaterThanZero.setElement(field);\n\t\t\tvar response = WholeNumberGreaterThanZero.validate();\n\t\t\tif (response != true) {\n\t\t\t\treturn WholeNumberGreaterThanZero.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Positive Numbers and greater than zero value\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar response = this._super();\n\t\t\tif (response != true) {\n\t\t\t\treturn response;\n\t\t\t} else {\n\t\t\t\tvar fieldValue = this.getFieldValue();\n\t\t\t\tif (fieldValue == 0) {\n\t\t\t\t\tvar errorInfo = app.vtranslate('JS_VALUE_SHOULD_BE_GREATER_THAN_ZERO');\n\t\t\t\t\tthis.setError(errorInfo);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * Overwrites base function to avoid trimming and validate white spaces\n\t\t * @return fieldValue\n\t\t */\n\t\tgetFieldValue: function () {\n\t\t\treturn App.Fields.Double.formatToDb(this.getElement().val());\n\t\t}\n\t}\n);\nVtiger_Base_Validator_Js(\n\t'Vtiger_AlphaNumeric_Validator_Js',\n\t{\n\t\t/**\n\t\t *Function which invokes field validation\n\t\t *@param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar alphaNumericInstance = new Vtiger_AlphaNumeric_Validator_Js();\n\t\t\talphaNumericInstance.setElement(field);\n\t\t\tvar response = alphaNumericInstance.validate();\n\t\t\tif (response != true) {\n\t\t\t\treturn alphaNumericInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Positive Numbers\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar field = this.getElement();\n\t\t\tvar fieldValue = field.val();\n\t\t\tvar alphaNumericRegex = /^[a-z0-9 _-]*$/i;\n\t\t\tif (!fieldValue.match(alphaNumericRegex)) {\n\t\t\t\tvar errorInfo = app.vtranslate('JS_CONTAINS_ILLEGAL_CHARACTERS');\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\nVtiger_Base_Validator_Js(\n\t'Vtiger_AlphaNumericWithSlashesCurlyBraces_Validator_Js',\n\t{\n\t\t/**\n\t\t *Function which invokes field validation\n\t\t *@param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar alphaNumericInstance = new Vtiger_AlphaNumericWithSlashesCurlyBraces_Validator_Js();\n\t\t\talphaNumericInstance.setElement(field);\n\t\t\tvar response = alphaNumericInstance.validate();\n\t\t\tif (response != true) {\n\t\t\t\treturn alphaNumericInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Positive Numbers\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar field = this.getElement();\n\t\t\tvar fieldValue = field.val();\n\t\t\tvar alphaNumericRegex = /^[\\/a-z\\\\0-9{}()$|: _-]*$/i;\n\t\t\tif (!fieldValue.match(alphaNumericRegex)) {\n\t\t\t\tvar errorInfo = app.vtranslate('JS_CONTAINS_ILLEGAL_CHARACTERS');\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\nVtiger_Base_Validator_Js(\n\t'Vtiger_InputMask_Validator_Js',\n\t{\n\t\t/**\n\t\t *Function which invokes field validation\n\t\t *@param accepts field element as parameter\n\t\t * @return error if validation fails true on success\n\t\t */\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar maskInstance = new Vtiger_InputMask_Validator_Js();\n\t\t\tmaskInstance.setElement(field);\n\t\t\tvar response = maskInstance.validate();\n\t\t\tif (response != true) {\n\t\t\t\treturn maskInstance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the Positive Numbers\n\t\t * @return  boolean true if validation is successful false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tlet response = this._super();\n\t\t\tif (response !== true) {\n\t\t\t\treturn response;\n\t\t\t}\n\t\t\tlet field = this.getElement(),\n\t\t\t\terrorInfo;\n\t\t\tif (field.attr('data-inputmask')) {\n\t\t\t\tlet unMaskedValue = field.inputmask('unmaskedvalue'),\n\t\t\t\t\tgetMetaData = field.inputmask('getmetadata'),\n\t\t\t\t\tmaskLength =\n\t\t\t\t\t\t(getMetaData.match(/9/g) || []).length +\n\t\t\t\t\t\t(getMetaData.match(/A/g) || []).length +\n\t\t\t\t\t\t(getMetaData.match(/'*'/g) || []).length;\n\t\t\t\tif (unMaskedValue.length !== 0 && maskLength > unMaskedValue.length) {\n\t\t\t\t\terrorInfo = app.vtranslate('JS_INVALID_LENGTH');\n\t\t\t\t\tthis.setError(errorInfo);\n\t\t\t\t\twindow.inputMaskValidation = true;\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\twindow.inputMaskValidation = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (window.inputMaskValidation) {\n\t\t\t\terrorInfo = app.vtranslate('JS_INVALID_LENGTH');\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\nVtiger_Base_Validator_Js(\n\t'Vtiger_Textparser_Validator_Js',\n\t{\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar instance = new Vtiger_TextParser_Validator_Js();\n\t\t\tinstance.setElement(field);\n\t\t\tvar response = instance.validate();\n\t\t\tif (response != true) {\n\t\t\t\treturn instance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\tvalidate: function () {\n\t\t\tvar response = this._super();\n\t\t\tif (response != true) {\n\t\t\t\treturn response;\n\t\t\t}\n\t\t\tvar field = this.getElement();\n\t\t\tvar fieldValue = field.val();\n\t\t\tvar regex = /^\\$\\((\\w+) : ([,\"\\+\\-\\[\\]\\&\\w\\s\\|]+)\\)\\$$/;\n\t\t\tif (!regex.test(fieldValue)) {\n\t\t\t\tvar errorInfo = app.vtranslate('JS_INVALID_LENGTH');\n\t\t\t\tthis.setError(errorInfo);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\n\nVtiger_Base_Validator_Js(\n\t'Vtiger_YetiForceCompanyName_Validator_Js',\n\t{\n\t\tinvokeValidation: function (field, rules, i, options) {\n\t\t\tvar instance = new Vtiger_YetiForceCompanyName_Validator_Js();\n\t\t\tinstance.setElement(field);\n\t\t\tvar response = instance.validate();\n\t\t\tif (response != true) {\n\t\t\t\treturn instance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\tvalidate: function () {\n\t\t\tlet response = this._super();\n\t\t\tif (response != true) {\n\t\t\t\treturn response;\n\t\t\t}\n\t\t\tconst field = this.getElement();\n\t\t\tconst fieldValue = field.val();\n\t\t\tif (fieldValue.toLowerCase().indexOf('yetiforce') >= 0) {\n\t\t\t\tthis.setError(app.vtranslate('JS_YETIFORCE_COMPANY_NAME_NOT_ALLOWED'));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\nVtiger_Base_Validator_Js(\n\t'Vtiger_MultiImage_Validator_Js',\n\t{\n\t\tinvokeValidation(field, rules, i, options) {\n\t\t\tconst instance = new Vtiger_MultiImage_Validator_Js();\n\t\t\tinstance.setElement(field);\n\t\t\tif (instance.validate() != true) {\n\t\t\t\treturn instance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\tvalidate() {\n\t\t\tlet response = this._super();\n\t\t\tif (response != true) {\n\t\t\t\treturn response;\n\t\t\t}\n\t\t\tconst field = this.getElement();\n\t\t\tconst fieldValue = field.val();\n\t\t\tif (field.data('fieldinfo').mandatory && JSON.parse(fieldValue).length === 0) {\n\t\t\t\tthis.setError(app.vtranslate('JS_REQUIRED_FIELD'));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\nVtiger_Base_Validator_Js(\n\t'Vtiger_MaxSizeInByte_Validator_Js',\n\t{\n\t\tinvokeValidation(field, rules, i, options) {\n\t\t\tconst instance = new Vtiger_MaxSizeInByte_Validator_Js();\n\t\t\tinstance.setElement(field);\n\t\t\tif (instance.validate() != true) {\n\t\t\t\treturn instance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\tvalidate() {\n\t\t\tlet response = this._super();\n\t\t\tif (response != true) {\n\t\t\t\treturn response;\n\t\t\t}\n\t\t\tconst field = this.getElement();\n\t\t\tconst fieldValue = field.val();\n\t\t\tif (\n\t\t\t\tfield.data('fieldinfo').maximumlength &&\n\t\t\t\t(typeof TextEncoder === 'function'\n\t\t\t\t\t? new TextEncoder().encode(fieldValue).byteLength > field.data('fieldinfo').maximumlength\n\t\t\t\t\t: fieldValue.length > field.data('fieldinfo').maximumlength)\n\t\t\t) {\n\t\t\t\tthis.setError(app.vtranslate('JS_MAXIMUM_TEXT_SIZE_IN_BYTES') + ' ' + field.data('fieldinfo').maximumlength);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\nVtiger_Base_Validator_Js(\n\t'Vtiger_FieldName_Validator_Js',\n\t{\n\t\tinvokeValidation(field, rules, i, options) {\n\t\t\tconst instance = new Vtiger_FieldName_Validator_Js();\n\t\t\tinstance.setElement(field);\n\t\t\tif (instance.validate() != true) {\n\t\t\t\treturn instance.getError();\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * Function to validate the field name\n\t\t * @return true if validation is successfull\n\t\t * @return false if validation error occurs\n\t\t */\n\t\tvalidate: function () {\n\t\t\tvar fieldValue = this.getFieldValue();\n\t\t\tif (fieldValue === 'data') {\n\t\t\t\tthis.setError(app.vtranslate('JS_CONTAINS_ILLEGAL_CHARACTERS'));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n);\nVtiger_Double_Validator_Js('Vtiger_Advpercentage_Validator_Js', {});\n"],"names":["_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","err","normalCompletion","didErr","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","Vtiger_Base_Validator_Js","invokeValidation","field","emailInstance","Vtiger_Email_Validator_Js","setElement","response","validate","getError","getFieldValue","getElement","val","fieldValue","validateValue","setError","app","vtranslate","match","fieldData","data","fieldInfo","fieldinfo","restrictedDomains","indexOf","split","pop","form","closest","result","advancedVerification","thisInstance","group","phoneCountryList","find","isReadOnly","get","readOnly","attr","moduleName","getModuleName","$","AppConnector","request","async","module","action","mode","fieldName","phoneNumber","phoneCountry","isValidNumber","message","number","geocoding","carrier","country","trigger","fail","error","errorLog","usernameInstance","Vtiger_UserName_Validator_Js","maximumLength","maximumlength","ranges","parseInt","integerInstance","Vtiger_Integer_Validator_Js","groupSeperator","CONFIG","currencyGroupingSeparator","integerRegex","RegExp","errorInfo","parseFloat","doubleValidator","Vtiger_Double_Validator_Js","_super","minimumLength","App","Fields","Double","formatToDb","positiveNumberInstance","Vtiger_PositiveNumber_Validator_Js","isNaN","percentageInstance","Vtiger_Percentage_Validator_Js","validatorInstance","Vtiger_Url_Validator_Js","Vtiger_MultiSelect_Validator_Js","fieldInstance","selectElementValue","Vtiger_MultiDomain_Validator_Js","_step","_iterator","GreaterThanZeroInstance","Vtiger_GreaterThanZero_Validator_Js","instance","Vtiger_WholeNumber_Validator_Js","jQuery","isEmptyObject","label","fieldDateFormat","dateFormat","fieldDateInstance","Date","getDateInstance","setHours","todayDateInstance","fieldForValidation","dependentFieldList","Vtiger_greaterThanDependentField_Validator_Js","fieldLabel","contextFormElem","dependentField","dependentFieldInContext","dependentValue","inArray","type","getDateTimeInstance","dependentFieldLabel","comparedDateVal","dateTimeInstance","fieldDateTime","fieldDateTimeInstance","view","j","InvalidFields","invalidFields","map","attributes","filter","includes","difference","status","time","dependentFieldDateInstance","currencyValidatorInstance","Vtiger_Currency_Validator_Js","decimalSeparator","currencyDecimalSeparator","groupSeparator","strippedValue","replace","spacePattern","regex","negativeNumber","fieldtype","parentElement","referenceField","referenceFieldValue","dateValidatorInstance","Vtiger_Date_Validator_Js","calendarType","Error","forEach","key","Vtiger_Time_Validator_Js","format","hourFormat","regexp","Vtiger_Twitter_Validator_Js","Vtiger_MultiEmail_Validator_Js","inputField","allFields","eq","arrayLength","amountOfDuplicateEmails","timeField","timeFieldValue","dateFieldValue","repeatMonthDateValidatorInstance","Calendar_RepeatMonthDate_Validator_Js","WholeNumberGreaterThanZero","Vtiger_WholeNumberGreaterThanZero_Validator_Js","alphaNumericInstance","Vtiger_AlphaNumeric_Validator_Js","Vtiger_AlphaNumericWithSlashesCurlyBraces_Validator_Js","maskInstance","Vtiger_InputMask_Validator_Js","unMaskedValue","inputmask","getMetaData","maskLength","window","inputMaskValidation","Vtiger_TextParser_Validator_Js","Vtiger_YetiForceCompanyName_Validator_Js","toLowerCase","Vtiger_MultiImage_Validator_Js","mandatory","JSON","parse","Vtiger_MaxSizeInByte_Validator_Js","TextEncoder","encode","byteLength","Vtiger_FieldName_Validator_Js"],"mappings":"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"}