{"version":3,"names":[],"mappings":"","sources":["global.js"],"sourcesContent":["/**\n * All utilities methods and global initialization have to be put here\n * @constructor\n */\nfunction Global() {\n 'use strict';\n\n}\n\nGlobal.prototype = {\n constructor: Global,\n init: function () {\n 'use strict';\n\n Global.configMask();\n },\n};\n\nGlobal.configMask = function() {\n var ceps = document.querySelectorAll('.js-Form-cep');\n var tels = document.querySelectorAll('.js-Form-tel');\n var cels = document.querySelectorAll('.js-Form-cel');\n var years = document.querySelectorAll('.js-Form-year');\n var i = 0;\n\n for (i = 0; i < ceps.length; ++i) {\n VMasker(ceps[i]).maskPattern('99999-999');\n }\n\n for (i = 0; i < tels.length; ++i) {\n VMasker(tels[i]).maskPattern('(99) 9999-99999');\n }\n\n for (i = 0; i < cels.length; ++i) {\n VMasker(cels[i]).maskPattern('(99) 9999-99999');\n }\n\n for (i = 0; i < years.length; ++i) {\n VMasker(years[i]).maskPattern('9999');\n }\n};\n\n/**\n * Cross platform function to create a new event. Fix to some version of IE/Edge\n * @param {String} eventName Name of the new event\n * @returns {Event} New event\n */\nGlobal.createNewEvent = function (eventName) {\n 'use strict';\n\n var event;\n if (typeof (Event) === 'function') {\n event = new Event(eventName);\n } else {\n event = document.createEvent('Event');\n event.initEvent(eventName, true, true);\n }\n\n return event;\n};\n\n/**\n * Extend funtion like jQuery. Merge two objects, with result will be in first parameter\n * @param {Object} obj Object that will receive the merge and be merged\n * @param {Object} src Object to merge\n * @returns {Object} Object merged\n */\nGlobal.extend = function (obj, src) {\n 'use strict';\n\n Object.keys(src).forEach(function (key) {\n if (obj[key] && typeof obj[key] === typeof {}) {\n Global.extend(obj[key], src[key]);\n } else {\n obj[key] = src[key];\n }\n });\n return obj;\n};\n\n/**\n * Ready function like jQuery with addiction of page load event\n * @param {Function} fn Callback executed\n * @param {boolean} isLoaded Wait for complete page load\n * @return {void} void\n */\nGlobal.ready = function (fn, isLoaded) {\n 'use strict';\n\n if (isLoaded && document.readyState === \"complete\") {\n fn();\n }\n\n else if ((document.readyState === \"interactive\" || document.readyState === \"complete\") && !isLoaded) {\n fn();\n } else if (!isLoaded) {\n document.addEventListener(\"DOMContentLoaded\", fn);\n } else if (isLoaded) {\n window.addEventListener('load', function () {\n fn();\n });\n }\n};\n\n/**\n * Remove page loader\n * @return {void} void\n */\nGlobal.removeLoader = function () {\n 'use strict';\n\n document.querySelector('.js-Loading').classList.add('Hide-Loader');\n setTimeout(function () {\n document.querySelector('.js-Loading').classList.remove('Hide-Loader');\n document.querySelector('.js-Loading').classList.add('zIndex');\n }, 500)\n};\n\n/**\n * Add many events to one element\n * @param {Element} el Element to add events\n * @param {Event} events The events to add to element\n * @param {Function} fn Callback executed by the events\n * @return {void} void\n */\nGlobal.addManyEvents = function (el, events, fn) {\n 'use strict';\n\n events.split(' ').forEach(function (event) {\n el.addEventListener(event, fn, false)\n });\n};\n\n/**\n * Send ajax like jQuery\n * @param {Object} options {{url, method, onreadystatechange, headers:{{,}}, data:{{}} }}\n * @return {void} void\n */\nGlobal.ajax = function (options) {\n 'use strict';\n\n var httpReq = new XMLHttpRequest();\n Global.ajaxIsLoading++;\n\n httpReq.onreadystatechange = function () {\n var newFunc = options.onreadystatechange.bind(this);\n newFunc();\n\n if (this.readyState === XMLHttpRequest.DONE) {\n Global.ajaxIsLoading--;\n }\n };\n httpReq.open(options.method, options.url);\n\n if (options.timeout) {\n httpReq.timeout = options.timeout;\n }\n if (options.responseType) {\n httpReq.responseType = 'text'\n }\n if (options.ontimeout) {\n httpReq.ontimeout = options.ontimeout;\n }\n\n // Have to have\n if (!options.headers) {\n httpReq.setRequestHeader('X-CSRF-Token', document.querySelector('meta[name=_token]').getAttribute('content'));\n httpReq.setRequestHeader('content-type', 'application/ajax');\n } else {\n if (!('content-type' in options.headers) && options.headers['content-type'] === '') {\n httpReq.setRequestHeader('content-type', 'application/ajax');\n }\n if (!('X-CSRF-Token' in options.headers) && options.headers['X-CSRF-Token'] === '') {\n httpReq.setRequestHeader('X-CSRF-Token', document.querySelector('meta[name=_token]').getAttribute('content'));\n }\n }\n\n if (options.headers) {\n Object.keys(options.headers).forEach(function (key) {\n httpReq.setRequestHeader(key, options.headers[key]);\n });\n }\n\n if (!options.data) {\n options.data = {};\n }\n\n Global.extend(options.data, {\n noCache: Date.now()\n });\n\n httpReq.send(JSON.stringify(options.data));\n};\n\nGlobal.ajaxIsLoading = 0;\n\nGlobal.ready(function () {\n 'use strict';\n\n var global = new Global();\n global.init();\n});\n\n/**\n * Remove loader when page was totally loaded\n */\nGlobal.ready(function () {\n 'use strict';\n\n try {\n Global.removeLoader();\n } catch (e) {\n }\n}, true);\n"],"file":"global.js"}