{"version":3,"names":[],"mappings":"","sources":["validator.custom.js"],"sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i\\/]+$/,\r\n personalnumber: /^[a-zA-Z0-9]{6,18}$/\r\n };\r\n\r\n/**\r\n * @function\r\n * @description Validates a given phone number against the countries phone regex\r\n * @param {String} value The phone number which will be validated\r\n * @param {String} el The input field\r\n */\r\nvar validatePhone = function (value, el) {\r\n var country = $(el).closest('form').find('.country option:selected').val()\r\n\r\n if (country == undefined || country.length === 0 || !regex.phone[country.toLowerCase()]) {\r\n country = 'other';\r\n }\r\n\r\n var rgx = regex.phone[country.toLowerCase()];\r\n var isOptional = this.optional(el);\r\n var isValid = rgx.test($.trim(value));\r\n\r\n // format the phone number\r\n return isOptional || isValid;\r\n};\r\n\r\nvar validatePersonalNumber = function (value, el) {\r\n var rgx = regex.personalnumber;\r\n var isOptional = this.optional(el);\r\n var isValid = rgx.test($.trim(value));\r\n\r\n // format the personal number\r\n return isOptional || isValid;\r\n}\r\n\r\nvar validateExpirationDate = function (value, el) {\r\n var currentDate = new Date();\r\n var selectedMonth = $('select[name*=\"expiration_month\"]').val(),\r\n selectedYear = $('select[name*=\"expiration_year\"]').val();\r\n var selectedDate = new Date(selectedYear, selectedMonth, 1);\r\n if (selectedDate < currentDate) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * @function\r\n * @description Validates a black list postcode china\r\n */\r\n\r\nvar validatePostalCodeBlackList = function (value, el) {\r\n var country = $(el).closest('form').find('.country option:selected').val();\r\n if (country == undefined || country.length === 0 || !postalcodeblacklist[country.toLowerCase()]) {\r\n country = 'other';\r\n }\r\n\r\n var postalCodeBlackList = postalcodeblacklist[country.toLowerCase()];\r\n var blackList = JSON.parse(postalCodeBlackList);\r\n\r\n if (blackList.length > 0) {\r\n var isCheck = blackList.indexOf($.trim(value));\r\n if (isCheck > -1) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\n/**\r\n * @function\r\n * @description Validates that kanji character\r\n * @param {String} value The kanji field which will be validated\r\n * @param {String} el The input field\r\n */\r\nfunction validateKanji(value, el) {\r\n var country = $(el).closest('form').find('.country option:selected').val()\r\n\r\n if (country == undefined || country.length === 0 || !regex.kanji[country.toLowerCase()]) {\r\n country = 'other';\r\n }\r\n\r\n var rgx = regex.kanji[country.toLowerCase()];\r\n var isOptional = this.optional(el);\r\n var isValid = rgx.test($.trim(value));\r\n return isValid;\r\n};\r\n\r\n/**\r\n * @function\r\n * @description Validates that katakana character and Romanji\r\n * @param {String} value The katakana field which will be validated\r\n * @param {String} el The input field\r\n */\r\nvar validateKatakana = function (value, el) {\r\n var country = $(el).closest('form').find('.country option:selected').val()\r\n\r\n if (country == undefined || country.length === 0 || !regex.katakana[country.toLowerCase()]) {\r\n country = 'other';\r\n }\r\n\r\n var rgx = regex.katakana[country.toLowerCase()];\r\n var isValid = rgx.test($.trim(value));\r\n if (isRequired(el) === false && $.trim(value).length === 0) {\r\n isValid = true;\r\n }\r\n return isValid;\r\n};\r\n\r\n/**\r\n * @function\r\n * @description Validates a input field by byte\r\n * @param {String} value The input field which will be validated\r\n * @param {String} el The input field\r\n */\r\nvar validateByte = function (value, el) {\r\n var maxlength = $(el).prop('maxlength');\r\n var len = encodeURI(value).split(/%..|./).length - 1;\r\n if (len <= maxlength) {\r\n return true;\r\n }\r\n};\r\n\r\nvar validateSimpleText = function(value, el) {\r\n var country = $(el).closest('form').find('.country option:selected').val()\r\n\r\n if (country == undefined || country.length === 0 || !regex.simpletext[country.toLowerCase()]) {\r\n country = 'other';\r\n }\r\n var rgx = regex.simpletext[country.toLowerCase()];\r\n\r\n var isValid = rgx.test($.trim(value));\r\n return isValid;\r\n}\r\n\r\nvar validatePostal = function(value, el) {\r\n var country = $(el).closest('form').find('select.country');\r\n if (country.length === 0 || country.val().length === 0 || !regex.postal[country.val().toLowerCase()]) {\r\n return true;\r\n }\r\n\r\n var rgx = regex.postal[country.val().toLowerCase()];\r\n var isValid = rgx.test($.trim(value));\r\n\r\n var isValidateWhiteListPostal = true;\r\n if (isRequired(el) === true || $.trim(value).length > 0) {\r\n isValidateWhiteListPostal = validateWhiteListPostal(value, country);\r\n }\r\n var isOptional = this.optional(el);\r\n\r\n return isValidateWhiteListPostal && (isOptional || isValid);\r\n}\r\n\r\nvar validateRomaji = function(value, el) {\r\n var country = $(el).closest('form').find('.country option:selected').val()\r\n\r\n if (country == undefined || country.length === 0 || !regex.romanji[country.toLowerCase()]) {\r\n country = 'other';\r\n }\r\n var rgx = regex.romanji[country.toLowerCase()];\r\n\r\n var isValid = rgx.test($.trim(value));\r\n if (isRequired(el) === false && $.trim(value).length === 0) {\r\n isValid = true;\r\n }\r\n return isValid;\r\n}\r\n\r\nvar validateRomajiPlus = function(value, el) {\r\n var country = $(el).closest('form').find('.country option:selected').val()\r\n\r\n if (country == undefined || country.length === 0 || !regex.romajiplus[country.toLowerCase()]) {\r\n country = 'other';\r\n }\r\n var rgx = regex.romajiplus[country.toLowerCase()];\r\n\r\n var isValid = rgx.test($.trim(value));\r\n if (isRequired(el) === false && $.trim(value).length === 0) {\r\n isValid = true;\r\n }\r\n return isValid;\r\n}\r\n\r\nfunction validateWhiteListPostal(postcode, country) {\r\n var addressList = postalcodewhitelist[country.val().toLowerCase()];\r\n var addressListData = JSON.parse(addressList);\r\n\r\n if (addressListData.length > 0) {\r\n for (var i = 0; i < addressListData.length; i++) {\r\n if (addressListData[i] == postcode) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nfunction removeTextError(isValid) {\r\n $('.c-text-error').hide();\r\n if (isValid) {\r\n $('.c-input-box').removeClass('is-error');\r\n }\r\n}\r\n\r\nfunction isRequired(element) {\r\n var result = false;\r\n if ($(element).hasClass('required')) {\r\n result = true;\r\n }\r\n return result;\r\n}\r\n\r\nvar replaceTwoByteToOneByteNumber = function(value) {\r\n var fieldValue = value;\r\n var oneByteCharacters = '0,1,2,3,4,5,6,7,8,9,-'.split(',');\r\n var twoByteCharacters = '0,1,2,3,4,5,6,7,8,9,-'.split(',');\r\n\r\n for (var i = 0; i < fieldValue.length; i++) {\r\n var fieldChar = fieldValue.charAt(i);\r\n var towByteCharIdx = twoByteCharacters.indexOf(fieldChar);\r\n\r\n if (towByteCharIdx > -1 && (towByteCharIdx in oneByteCharacters)) {\r\n fieldValue = fieldValue.replace(new RegExp(twoByteCharacters[towByteCharIdx]), oneByteCharacters[towByteCharIdx]);\r\n }\r\n }\r\n\r\n return fieldValue;\r\n}\r\n\r\nvar validateCreditCard = function(value, el) {\r\n var result = replaceTwoByteToOneByteNumber(value);\r\n return regex.creditCard.test(result);\r\n}\r\n\r\nfunction initializeConfig(params) {\r\n options = $.extend({}, options, params);\r\n}\r\n\r\nfunction initializeCache(params) {\r\n $cache.document = $(document);\r\n}\r\nvar validateSpace = function (value, el) {\r\n var isValid = value.indexOf(\" \") < 0;\r\n\r\n // check space\r\n return isValid;\r\n};\r\n\r\nfunction initializeEvents() {\r\n $.validator.addMethod('no-space', validateSpace, Resources.INVALID_PHONE);\r\n $.validator.addMethod('phone', validatePhone, Resources.INVALID_PHONE);\r\n $.validator.addMethod('firstname', validateKanji, Resources.VALIDATE_TEXT);\r\n $.validator.addMethod('lastname', validateKanji, Resources.VALIDATE_TEXT);\r\n $.validator.addMethod('katakana', validateKatakana, Resources.VALIDATE_TEXT);\r\n $.validator.addMethod('kanji', validateKanji, Resources.VALIDATE_TEXT);\r\n $.validator.addMethod('postal-code-black-list', validatePostalCodeBlackList, Resources.VALIDATE_POSTAL);\r\n $.validator.addMethod('byte', validateByte, function (value, el) {\r\n var msg = $(el).prop('maxlength') + Resources.VALIDATE_BYTE;\r\n return msg;\r\n });\r\n $.validator.addMethod('simpletext', validateSimpleText, Resources.VALIDATE_TEXT);\r\n $.validator.addMethod('postal', validatePostal, Resources.VALIDATE_POSTAL);\r\n $.validator.addMethod('romaji', validateRomaji, Resources.VALIDATE_TEXT);\r\n $.validator.addMethod('romajiplus', validateRomajiPlus, Resources.VALIDATE_TEXT);\r\n $.validator.addMethod('number', validateCreditCard, function (value, el) {\r\n if (replaceTwoByteToOneByteNumber($(el).val()).indexOf('-') > -1) {\r\n var msg = Resources.VALIDATE_CREDITCARD_HYPHEN;\r\n } else {\r\n var msg = Resources.VALIDATE_CREDITCARD;\r\n }\r\n return msg;\r\n });\r\n $.validator.addMethod(\"cvn\", function (value, el) {\r\n var result = replaceTwoByteToOneByteNumber(value);\r\n return regex.cvn.test(result);\r\n }, Resources.VALIDATE_CVN);\r\n\r\n $.validator.addMethod(\"inquiry\", function (value, el) {\r\n return regex.inquiry.test(value);\r\n }, Resources.VALIDATE_TEXT);\r\n\r\n $.validator.addMethod(\"personalnumberid\", validatePersonalNumber, Resources.VALIDATE_PERSONAL_NUMBER);\r\n $.validator.addMethod(\"expirationDate\", validateExpirationDate, Resources.VALIDATE_EXPIRATION_DATE);\r\n\r\n $.validator.addClassRules({\r\n city: {\r\n simpletext: false\r\n },\r\n address1: {\r\n simpletext: false,\r\n address: false\r\n },\r\n province: {\r\n simpletext: false\r\n },\r\n address2: {\r\n address2: false\r\n }\r\n });\r\n}\r\n\r\nfunction init(e, params) {\r\n if (initialized) {\r\n return;\r\n }\r\n initializeConfig(params);\r\n initializeCache();\r\n initializeEvents();\r\n initialized = true;\r\n}\r\n\r\nconst attachEvents = function () {\r\n $(window)\r\n .off(\"\".concat(EventNames.VALIDATOR_CUSTOM_INITIALIZE, \".init\"))\r\n .on(\"\".concat(EventNames.VALIDATOR_CUSTOM_INITIALIZE, \".init\"), init);\r\n}\r\n\r\nwindow.validatorCustomEventsHandler = {\r\n init: function () {\r\n attachEvents();\r\n }\r\n}\r\n\r\nwindow.validatorCustomEventsHandler.init();\n},{\"../../../../app_theginza/cartridge/js/constants/EventNames\":1}]},{},[2]);\n"],"file":"validator.custom.js"}