{"version":3,"sources":["../../../../../dev/j/mkt/technology/common/main-2021.js"],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_possibleConstructorReturn","self","call","ReferenceError","_inherits","subClass","superClass","TypeError","prototype","create","constructor","setPrototypeOf","__proto__","_classCallCheck","instance","Constructor","storageAvailable","type","storage","window","x","setItem","removeItem","e","DOMException","code","name","length","_typeof","Symbol","iterator","_createClass","defineProperties","target","props","i","descriptor","protoProps","staticProps","debug","consoleFunctions","originalConsoleFunctions","forEach","fn","enabled","cl","console","log","undefined","Helpers","rnd","from","to","except","Math","floor","random","shuffle","array","counter","index","temp","choose","items","randomSign","arguments","negativeSign","frac","distX","distance","angle","cos","distY","sin","sign","isNaN","Number","mod","n","_mod","reduceNumber","num","val","getURLParameter","decodeURIComponent","RegExp","exec","location","search","replace","getZeroInt","len","max","s","PRIORITYQUEUE_DEFAULT_PRIORITY","PriorityQueue","comparator","this","_comparator","a","b","_priorities","_queues","_callbacks","onBeforeTransform","onBeforeAdd","onAfterAdd","onBeforeRemove","onAfterRemove","_flags","dirty","_cachedQueues","_privateCallbacks","_transformers","object","priority","_len","args","Array","_key","every","cb","apply","concat","getAll","reduce","transformer","_getQueue","push","_this","sum","_setQueue","filter","remove","add","oldPriority","newPriority","indexOf","sort","splice","_this2","res","p","callback","CallbackQueue","createNew","queue","_PriorityQueue","_this3","getPrototypeOf","_typeCheck","LazyProps","thisArg","keys","hasOwnProperty","get","set","W_DEFAULT_DEBOUNCE_TIME","W_DEFAULT_KEYBOARD_PARAM","WebPage","_this4","callbacks","init","scroll","general","_scrollCallbackQueueFactory","start","active","end","resize","_resizeCallbackQueueFactory","width","height","layout","layoutGroup","visibility","keyboard","_keyUpCallbackQueueFactory","handlerNames","INIT","RESIZE","RESIZE_START","RESIZE_ACTIVE","RESIZE_END","RESIZE_WIDTH_START","RESIZE_WIDTH_ACTIVE","RESIZE_WIDTH_END","RESIZE_HEIGHT_START","RESIZE_HEIGHT_ACTIVE","RESIZE_HEIGHT_END","LAYOUT","LAYOUT_GROUP","SCROLL","SCROLL_START","SCROLL_ACTIVE","SCROLL_END","VISIBILITY","KEYBOARD","isInitialized","canHandleVisibilityChange","document","hidden","addEventListener","$html","$","$body","$document","$window","top","topLast","scrollTop","widthLast","outerWidth","heightLast","outerHeight","scrollDirection","breakpoints","layouts","map","isRetina","matchMedia","matches","devicePixelRatio","isStatic","isWindowFocused","scrolling","resizingWidth","resizingHeight","isScrollBound","isResizeBound","isKeyUpBound","_debounce","scrollTimeoutId","resizeTimeoutId","resizeWidthTimeoutId","resizeHeightTimeoutId","device","mobile","bowser","tablet","phone","ios","os","osversion","browser","chrome","safari","opera","mozilla","firefox","msie","msedge","version","parseInt","webkit","gecko","isLayout","smallerThan","compare","smallerOrEqual","biggerThan","biggerOrEqual","toggleClass","android","windowsphone","addClass","_visibilityHandler","bind","_getLayout","isDisabled","fire","_this5","objKey","match","handlerParams","slice","param","NEAR_VIEW","el","$element","$el","jQuery","nearView","_getCallbackQueueForHandlerName","doc","docEl","documentElement","requestFullScreen","requestFullscreen","mozRequestFullScreen","webkitRequestFullScreen","msRequestFullscreen","cancelFullScreen","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","isFullscreen","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","_this6","clearTimeout","setTimeout","_this7","oldLayout","oldLayoutGroup","currentBreakpoint","find","_this8","q","_scrollHandler","_this9","_resizeHandler","_this10","addTransformer","handler","keyCode","keyup","_keyUpHandler","test","w","Preload","retinaSuffix","image","_image","_createBatch","images","_images","callbackAll","callbackOne","imagesInContainer","container","$elements","each","idx","data","0","_$cacheElement","batch","totalCount","completedCount","_processBatch","_this11","imagePath","fromWidth","path","img","Image","onload","_cacheImage","progress","src","append","AnimatedSprite","createImg","imageNumber","animationSpeed","TimelineMax","repeat","repeatDelay","onRepeat","TweenMax","yPercent","resetImg","timeline","stop","_angles","IsometricSystem","axis","POS_X","NEG_X","POS_Y","NEG_Y","POS_Z","NEG_Z","angles","PI","isAxisNegative","getOppositeAxis","IsometricMotion","y","SvgLoader","load","filename","ajax","url","dataType","done","response"],"mappings":"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","file":"main-2021.js","sourcesContent":["'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = function () {\n\t//Don't use dot notation because of IE10\n\tvar consoleName = 'console';\n\tvar consoleFunctions = ['log', 'error', 'warn', 'info'];\n\tvar originalConsoleFunctions = {};\n\tconsoleFunctions.forEach(function (fn) {\n\t\toriginalConsoleFunctions[fn] = window[consoleName][fn];\n\t});\n\n\treturn function (enabled) {\n\t\tif (enabled) {\n\t\t\twindow.cl = function (x) {\n\t\t\t\treturn console.log(x), x;\n\t\t\t};\n\t\t\tconsoleFunctions.forEach(function (fn) {\n\t\t\t\twindow[consoleName][fn] = originalConsoleFunctions[fn];\n\t\t\t});\n\t\t} else {\n\t\t\tconsoleFunctions.forEach(function (fn) {\n\t\t\t\twindow[consoleName][fn] = function () {\n\t\t\t\t\treturn undefined;\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t};\n}();\n\n//debug(false);\n\n\nfunction storageAvailable(type) {\n\tvar storage = void 0;\n\n\ttry {\n\t\tstorage = window[type];\n\t\tvar x = '__storage_test__';\n\t\tstorage.setItem(x, x);\n\t\tstorage.removeItem(x);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn e instanceof DOMException && (\n\t\t// everything except Firefox\n\t\te.code === 22 ||\n\t\t// Firefox\n\t\te.code === 1014 ||\n\t\t// test name field too, because code might not be present\n\t\t// everything except Firefox\n\t\te.name === 'QuotaExceededError' ||\n\t\t// Firefox\n\t\te.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&\n\t\t// acknowledge QuotaExceededError only if there's something already stored\n\t\tstorage.length !== 0;\n\t}\n}\n\n;;var Helpers = {\n\t//Choose a random number from an interval, including both ends\n\trnd: function rnd(from, to, except) {\n\t\tvar rnd = void 0;\n\t\tdo {\n\t\t\trnd = Math.floor(Math.random() * (to - from + 1)) + from;\n\t\t} while (typeof except !== 'undefined' && except === rnd);\n\t\treturn rnd;\n\t},\n\n\n\t//Shuffles an array in-place\n\tshuffle: function shuffle(array) {\n\t\tvar counter = array.length;\n\t\twhile (counter > 0) {\n\t\t\tvar index = Math.floor(Math.random() * counter--);\n\t\t\tvar temp = array[counter];\n\t\t\tarray[counter] = array[index];\n\t\t\tarray[index] = temp;\n\t\t}\n\t\treturn array;\n\t},\n\n\n\t//Choose a random element from array `items`\n\tchoose: function choose(items) {\n\t\treturn items.length ? items[Math.floor(Math.random() * items.length)] : null;\n\t},\n\n\t//Returns -1 or 1 randomly, optionally multiplied by `x`\n\trandomSign: function randomSign() {\n\t\tvar x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n\t\treturn x * (Math.random() < 0.5 ? 1 : -1);\n\t},\n\n\t//Returns -1 if `x` is positive, 1 otherwise\n\tnegativeSign: function negativeSign(x) {\n\t\treturn x > 0 ? -1 : 1;\n\t},\n\n\t//Returns the fractional part of a number\n\tfrac: function frac(x) {\n\t\treturn x - Math.floor(x);\n\t},\n\n\t//Calculates horizontal length of vector (distance, angle)\n\tdistX: function distX(distance, angle) {\n\t\treturn Math.cos(angle) * distance;\n\t},\n\n\t//Calculates vertical length of vector (distance, angle)\n\tdistY: function distY(distance, angle) {\n\t\treturn -Math.sin(angle) * distance;\n\t},\n\n\t//Returns the sign of a number (-1, 0 or 1)\n\tsign: function sign(x) {\n\t\treturn +x === 0 || isNaN(+x) ? Number(x) : x > 0 ? 1 : -1;\n\t},\n\n\t//Calculates correct modulo even for negative numbers\n\tmod: function mod(n, _mod) {\n\t\treturn (n % _mod + _mod) % _mod;\n\t},\n\n\t//Works like Array.reduce but iterates `num` times\n\treduceNumber: function reduceNumber(num, fn, val) {\n\t\treturn num ? fn(Helpers.reduceNumber(--num, fn, val), num) : val;\n\t},\n\n\t//Returns a parameter value from current url\n\tgetURLParameter: function getURLParameter(name) {\n\t\treturn decodeURIComponent((new RegExp('[?|&]' + name + '=([^&;]+?)(&|#|;|$)').exec(location.search) || [null, ''])[1].replace(/\\+/g, '%20')) || null;\n\t},\n\n\t//Pads `number` with zeroes to a minimum length `len`\n\tgetZeroInt: function getZeroInt(num) {\n\t\tvar len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n\t\treturn Helpers.reduceNumber(Math.max(0, len - ('' + num).length), function (s) {\n\t\t\treturn '0' + s;\n\t\t}, '' + num);\n\t}\n};\n\n;;var PRIORITYQUEUE_DEFAULT_PRIORITY = 0;\n\nvar PriorityQueue = function () {\n\tfunction PriorityQueue(comparator) {\n\t\t_classCallCheck(this, PriorityQueue);\n\n\t\tthis._comparator = comparator || function (a, b) {\n\t\t\treturn a - b;\n\t\t}; //Sort ascending by default\n\t\tthis._priorities = []; //List of used priorities, always sorted\n\t\tthis._queues = {}; //Priority-keyed arrays of queued items\n\t\tthis._callbacks = {\n\t\t\tonBeforeTransform: [], //Called before (and if) transforming items to be added\n\t\t\tonBeforeAdd: [], //Called before adding (transformed) item (addition can be aborted by returning false)\n\t\t\tonAfterAdd: [], //Called after successfully adding an item\n\t\t\tonBeforeRemove: [], //Called before removing item (removal can be aborted by returning false)\n\t\t\tonAfterRemove: [] //Called after successfully removing an item\n\t\t};\n\t\tthis._flags = {\n\t\t\tdirty: false\n\t\t};\n\t\tthis._cachedQueues = []; //An array of all concatenated queues is kept here (result of .getAll())\n\t\tthis._privateCallbacks = {\n\t\t\tonBeforeAdd: []\n\t\t};\n\t\tthis._transformers = null; //This will be a CallbackQueue holding all input transformers\n\t\tthis.length = 0; //Total length of the queue (number of items queued)\n\t}\n\n\t//Add an item\n\n\n\t_createClass(PriorityQueue, [{\n\t\tkey: 'add',\n\t\tvalue: function add(object, priority) {\n\t\t\tfor (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n\t\t\t\targs[_key - 2] = arguments[_key];\n\t\t\t}\n\n\t\t\tif (typeof priority === 'function') {\n\t\t\t\tpriority = priority();\n\t\t\t}\n\t\t\tif (typeof priority !== 'number') {\n\t\t\t\tpriority = PRIORITYQUEUE_DEFAULT_PRIORITY;\n\t\t\t}\n\t\t\tif (this._transformers !== null) {\n\t\t\t\tif (this._callbacks.onBeforeTransform.every(function (cb) {\n\t\t\t\t\treturn cb.apply(undefined, [object, priority].concat(args)) !== false;\n\t\t\t\t})) {\n\t\t\t\t\t//Transformation can be aborted\n\t\t\t\t\tobject = this._transformers.getAll().reduce(function (obj, transformer) {\n\t\t\t\t\t\treturn transformer.apply(undefined, [obj, priority].concat(args));\n\t\t\t\t\t}, object); //Apply all transformers sequentially\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._privateCallbacks.onBeforeAdd.forEach(function (cb) {\n\t\t\t\treturn cb.apply(undefined, [object, priority].concat(args));\n\t\t\t});\n\t\t\tif (this._callbacks.onBeforeAdd.every(function (cb) {\n\t\t\t\treturn cb.apply(undefined, [object, priority].concat(args)) !== false;\n\t\t\t})) {\n\t\t\t\t//Addition can be aborted\n\t\t\t\tthis._getQueue(priority, true).push(object);\n\t\t\t\tthis.length++;\n\t\t\t\tthis._callbacks.onAfterAdd.forEach(function (cb) {\n\t\t\t\t\treturn cb.apply(undefined, [object, priority].concat(args));\n\t\t\t\t});\n\t\t\t\tthis._flags.dirty = true;\n\t\t\t\treturn object; //Return the new (transformed) item\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\t//Remove an item\n\n\t}, {\n\t\tkey: 'remove',\n\t\tvalue: function remove(object) {\n\t\t\tvar _this = this;\n\n\t\t\tif (this._callbacks.onBeforeRemove.every(function (cb) {\n\t\t\t\treturn cb(object) !== false;\n\t\t\t})) {\n\t\t\t\t//Removal can be aborted\n\t\t\t\tthis.length = this._priorities.reduce(function (sum, priority) {\n\t\t\t\t\treturn sum + _this._setQueue(priority, _this._getQueue(priority).filter(function (obj) {\n\t\t\t\t\t\treturn obj !== object;\n\t\t\t\t\t})).length;\n\t\t\t\t}, 0);\n\t\t\t\tthis._callbacks.onAfterRemove.forEach(function (cb) {\n\t\t\t\t\treturn cb(object);\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\t//Set a different priority for a queued item\n\n\t}, {\n\t\tkey: 'setPriority',\n\t\tvalue: function setPriority(object, priority) {\n\t\t\tthis.remove(object).add(object, priority);\n\t\t\tthis._flags.dirty = true;\n\t\t\treturn this;\n\t\t}\n\n\t\t//Set a new priority for all items with some old priority\n\n\t}, {\n\t\tkey: 'reassignPriority',\n\t\tvalue: function reassignPriority(oldPriority, newPriority) {\n\t\t\tif (this._priorities.indexOf(oldPriority) !== -1) {\n\t\t\t\t//If such old priority exists\n\t\t\t\tif (this._priorities.indexOf(newPriority) === -1) {\n\t\t\t\t\t//No queue with such new priority yet\n\t\t\t\t\tthis._priorities.push(newPriority); //Add new priority to the list\n\t\t\t\t\tthis._priorities.sort(this._comparator); //Sort the priorities\n\t\t\t\t\tthis._setQueue(newPriority, this._getQueue(oldPriority));\n\t\t\t\t} else {\n\t\t\t\t\t//Both priorities in use, concatenate the two queues\n\t\t\t\t\tthis._setQueue(newPriority, this._getQueue(newPriority).concat(this._getQueue(oldPriority)));\n\t\t\t\t}\n\t\t\t\tthis._priorities.splice(this._priorities.indexOf(oldPriority), 1); //Remove old priority, list is still sorted\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\t//Get all queued items in an array, possibly filtered by a priority\n\n\t}, {\n\t\tkey: 'getAll',\n\t\tvalue: function getAll(priority) {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (typeof priority === 'number') {\n\t\t\t\treturn this._getQueue(priority);\n\t\t\t}\n\t\t\tif (this._flags.dirty) {\n\t\t\t\tthis._cachedQueues = this._priorities.reduce(function (res, p) {\n\t\t\t\t\treturn res.concat(_this2._getQueue(p));\n\t\t\t\t}, []); //Concatenate all partial queues into one\n\t\t\t\tthis._flags.dirty = false;\n\t\t\t}\n\t\t\treturn this._cachedQueues;\n\t\t}\n\t}, {\n\t\tkey: 'getHighestPriority',\n\t\tvalue: function getHighestPriority() {\n\t\t\treturn this._priorities.length ? this._priorities[0] : PRIORITYQUEUE_DEFAULT_PRIORITY;\n\t\t}\n\t}, {\n\t\tkey: 'getLowestPriority',\n\t\tvalue: function getLowestPriority() {\n\t\t\treturn this._priorities.length ? this._priorities[this._priorities.length - 1] : PRIORITYQUEUE_DEFAULT_PRIORITY;\n\t\t}\n\n\t\t//Add a callback to be fired before transforming new items\n\n\t}, {\n\t\tkey: 'onBeforeTransform',\n\t\tvalue: function onBeforeTransform(callback) {\n\t\t\tthis._callbacks.onBeforeTransform.push(callback);\n\t\t\treturn this;\n\t\t}\n\n\t\t//Add a callback to be fired before adding new (already transformed) items\n\n\t}, {\n\t\tkey: 'onBeforeAdd',\n\t\tvalue: function onBeforeAdd(callback) {\n\t\t\tthis._callbacks.onBeforeAdd.push(callback);\n\t\t\treturn this;\n\t\t}\n\n\t\t//Add a callback to be fired after successfully adding a new item\n\n\t}, {\n\t\tkey: 'onAfterAdd',\n\t\tvalue: function onAfterAdd(callback) {\n\t\t\tthis._callbacks.onAfterAdd.push(callback);\n\t\t\treturn this;\n\t\t}\n\n\t\t//Add a callback to be fired before removing an item\n\n\t}, {\n\t\tkey: 'onBeforeRemove',\n\t\tvalue: function onBeforeRemove(callback) {\n\t\t\tthis._callbacks.onBeforeRemove.push(callback);\n\t\t\treturn this;\n\t\t}\n\n\t\t//Add a callback to be fired after successfully removing an item\n\n\t}, {\n\t\tkey: 'onAfterRemove',\n\t\tvalue: function onAfterRemove(callback) {\n\t\t\tthis._callbacks.onAfterRemove.push(callback);\n\t\t\treturn this;\n\t\t}\n\n\t\t//Add a transformer function to modify any new items being added\n\n\t}, {\n\t\tkey: 'addTransformer',\n\t\tvalue: function addTransformer(transformer, priority) {\n\t\t\tif (this._transformers === null) {\n\t\t\t\tthis._transformers = new CallbackQueue();\n\t\t\t}\n\t\t\tthis._transformers.add(transformer, priority);\n\t\t\treturn this;\n\t\t}\n\n\t\t//========================================================\n\n\t\t//Get or create a new partial queue for a certain priority\n\n\t}, {\n\t\tkey: '_getQueue',\n\t\tvalue: function _getQueue(priority) {\n\t\t\tvar createNew = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t\t\tif (this._priorities.indexOf(priority) === -1) {\n\t\t\t\t//No queue with such priority yet\n\t\t\t\tif (!createNew) {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tthis._priorities.push(priority); //Add the priority to the list\n\t\t\t\tthis._priorities.sort(this._comparator); //Sort the list\n\t\t\t\tthis._setQueue(priority, []); //The new queue is empty\n\t\t\t}\n\t\t\treturn this._queues[priority];\n\t\t}\n\n\t\t//Assign a partial queue to a certain priority\n\n\t}, {\n\t\tkey: '_setQueue',\n\t\tvalue: function _setQueue(priority, queue) {\n\t\t\tthis._flags.dirty = true;\n\t\t\treturn this._queues[priority] = queue;\n\t\t}\n\t}]);\n\n\treturn PriorityQueue;\n}();\n\n;;var CallbackQueue = function (_PriorityQueue) {\n\t_inherits(CallbackQueue, _PriorityQueue);\n\n\tfunction CallbackQueue(comparator) {\n\t\t_classCallCheck(this, CallbackQueue);\n\n\t\tvar _this3 = _possibleConstructorReturn(this, (CallbackQueue.__proto__ || Object.getPrototypeOf(CallbackQueue)).call(this, comparator));\n\n\t\t_this3._privateCallbacks.onBeforeAdd.push(CallbackQueue._typeCheck);\n\t\treturn _this3;\n\t}\n\n\t_createClass(CallbackQueue, [{\n\t\tkey: 'fire',\n\t\tvalue: function fire() {\n\t\t\tif (this.length) {\n\t\t\t\tvar args = arguments;\n\t\t\t\tthis.getAll().forEach(function (callback) {\n\t\t\t\t\treturn callback.apply(undefined, args);\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t}], [{\n\t\tkey: '_typeCheck',\n\t\tvalue: function _typeCheck(object) {\n\t\t\tif (typeof object !== 'function') {\n\t\t\t\tthrow new TypeError('Only functions can be added to CallbackQueue.');\n\t\t\t}\n\t\t}\n\t}]);\n\n\treturn CallbackQueue;\n}(PriorityQueue);\n\n;; /* Create a lazy-evaluation wrapper around an object. The properties will be evaluated on their first usage.\n *\n * i.e. `lazy = LazyProps.create({ prop() { return new X(); } });`\n * `lazy.prop` will be an instance of X only after `lazy.prop` has been referenced somewhere. Until that,\n * `lazy` will be an empty object.\n */\nvar LazyProps = {\n\tcreate: function create(obj, thisArg) {\n\t\tvar res = {};\n\t\tObject.keys(obj).filter(function (key) {\n\t\t\treturn obj.hasOwnProperty(key);\n\t\t}).forEach(function (key) {\n\t\t\tObject.defineProperty(res, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tget: function get() {\n\t\t\t\t\tObject.defineProperty(this, key, { //Define the property with a value of `undefined`\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\twritable: true\n\t\t\t\t\t});\n\t\t\t\t\tvar value = obj[key].call(thisArg); //Call a function that will return the value to be used\n\t\t\t\t\tObject.defineProperty(this, key, { //Overwrite the getter with the actual value\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\twritable: true,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t});\n\t\t\t\t\treturn value;\n\t\t\t\t},\n\t\t\t\tset: function set(value) {\n\t\t\t\t\tObject.defineProperty(this, key, { //Overwrite getter and setter and store the value\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\twritable: true,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t});\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treturn res;\n\t}\n};\n\n;; /**************************************************************************************/\n// WEBPAGE ENVIRONMENT OBJECT\n/**************************************************************************************/\nvar W_DEFAULT_DEBOUNCE_TIME = 300;\nvar W_DEFAULT_KEYBOARD_PARAM = -1;\n\nvar WebPage = function () {\n\tfunction WebPage() {\n\t\tvar _this4 = this;\n\n\t\t_classCallCheck(this, WebPage);\n\n\t\tthis.callbacks = LazyProps.create({\n\t\t\tinit: function init() {\n\t\t\t\treturn new CallbackQueue();\n\t\t\t},\n\t\t\tscroll: function scroll() {\n\t\t\t\treturn LazyProps.create({\n\t\t\t\t\tgeneral: _this4._scrollCallbackQueueFactory,\n\t\t\t\t\tstart: _this4._scrollCallbackQueueFactory,\n\t\t\t\t\tactive: _this4._scrollCallbackQueueFactory,\n\t\t\t\t\tend: _this4._scrollCallbackQueueFactory\n\t\t\t\t}, _this4);\n\t\t\t},\n\t\t\tresize: function resize() {\n\t\t\t\treturn LazyProps.create({\n\t\t\t\t\tgeneral: _this4._resizeCallbackQueueFactory,\n\t\t\t\t\twidth: function width() {\n\t\t\t\t\t\treturn LazyProps.create({\n\t\t\t\t\t\t\tstart: _this4._resizeCallbackQueueFactory,\n\t\t\t\t\t\t\tactive: _this4._resizeCallbackQueueFactory,\n\t\t\t\t\t\t\tend: _this4._resizeCallbackQueueFactory\n\t\t\t\t\t\t}, _this4);\n\t\t\t\t\t},\n\t\t\t\t\theight: function height() {\n\t\t\t\t\t\treturn LazyProps.create({\n\t\t\t\t\t\t\tstart: _this4._resizeCallbackQueueFactory,\n\t\t\t\t\t\t\tactive: _this4._resizeCallbackQueueFactory,\n\t\t\t\t\t\t\tend: _this4._resizeCallbackQueueFactory\n\t\t\t\t\t\t}, _this4);\n\t\t\t\t\t},\n\t\t\t\t\tstart: _this4._resizeCallbackQueueFactory,\n\t\t\t\t\tactive: _this4._resizeCallbackQueueFactory,\n\t\t\t\t\tend: _this4._resizeCallbackQueueFactory\n\t\t\t\t}, _this4);\n\t\t\t},\n\t\t\tlayout: function layout() {\n\t\t\t\treturn new CallbackQueue();\n\t\t\t},\n\t\t\tlayoutGroup: function layoutGroup() {\n\t\t\t\treturn new CallbackQueue();\n\t\t\t},\n\t\t\tvisibility: function visibility() {\n\t\t\t\treturn new CallbackQueue();\n\t\t\t},\n\t\t\tkeyboard: this._keyUpCallbackQueueFactory\n\t\t}, this);\n\n\t\tthis.handlerNames = {\n\t\t\tINIT: 'initHandler',\n\t\t\tRESIZE: 'resizeHandler',\n\t\t\tRESIZE_START: 'resizeStartHandler',\n\t\t\tRESIZE_ACTIVE: 'resizeActiveHandler',\n\t\t\tRESIZE_END: 'resizeEndHandler',\n\t\t\tRESIZE_WIDTH_START: 'resizeWidthStartHandler',\n\t\t\tRESIZE_WIDTH_ACTIVE: 'resizeWidthActiveHandler',\n\t\t\tRESIZE_WIDTH_END: 'resizeWidthEndHandler',\n\t\t\tRESIZE_HEIGHT_START: 'resizeHeightStartHandler',\n\t\t\tRESIZE_HEIGHT_ACTIVE: 'resizeHeightActiveHandler',\n\t\t\tRESIZE_HEIGHT_END: 'resizeHeightEndHandler',\n\t\t\tLAYOUT: 'layoutHandler',\n\t\t\tLAYOUT_GROUP: 'layoutGroupHandler',\n\t\t\tSCROLL: 'scrollHandler',\n\t\t\tSCROLL_START: 'scrollStartHandler',\n\t\t\tSCROLL_ACTIVE: 'scrollActiveHandler',\n\t\t\tSCROLL_END: 'scrollEndHandler',\n\t\t\tVISIBILITY: 'visibilityHandler',\n\t\t\tKEYBOARD: /keyboard(?:\\[(\\d+)(?:,(\\d+))*])?Handler/ //i.e. keyboardHandler, keyboard[27]Handler, keyboard[39,40]Handler\n\t\t};\n\n\t\tthis.isInitialized = false;\n\t\tthis.canHandleVisibilityChange = typeof document.hidden !== 'undefined' && !!document.addEventListener;\n\t\tthis.$html = $('html');\n\t\tthis.$body = $('body');\n\t\tthis.$document = $(document);\n\t\tthis.$window = $(window);\n\n\t\tthis.top = this.topLast = this.$window.scrollTop();\n\t\tthis.width = this.widthLast = this.$window.outerWidth(true);\n\t\tthis.height = this.heightLast = this.$window.outerHeight();\n\t\tthis.scrollDirection = 0;\n\t\tthis.layout = null;\n\t\tthis.breakpoints = [{ from: 0, to: 460, layout: 'tiny', layoutGroup: 'phone' }, { from: 461, to: 600, layout: 'phone', layoutGroup: 'phone' }, { from: 601, to: 900, layout: 'tablet-portrait', layoutGroup: 'tablet' }, { from: 901, to: 1200, layout: 'tablet-landscape', layoutGroup: 'tablet' }, { from: 1201, to: 1500, layout: 'desktop', layoutGroup: 'desktop' }, { from: 1501, to: 1800, layout: 'desktop-medium', layoutGroup: 'desktop' }, { from: 1801, to: 99999, layout: 'desktop-large', layoutGroup: 'desktop' }];\n\t\tthis.layouts = this.breakpoints.map(function (b) {\n\t\t\treturn b.layout;\n\t\t});\n\t\tthis.isRetina = window.matchMedia && (window.matchMedia('only screen and (min-resolution: 124dpi), only screen and (min-resolution: 1.3dppx), only screen and (min-resolution: 48.8dpcm)').matches || window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3)').matches) || window.devicePixelRatio && window.devicePixelRatio > 1.3;\n\t\tthis.isStatic = null;\n\t\tthis.isWindowFocused = true;\n\t\tthis._flags = {\n\t\t\tscrolling: false,\n\t\t\tresizingWidth: false,\n\t\t\tresizingHeight: false,\n\t\t\tisScrollBound: false,\n\t\t\tisResizeBound: false,\n\t\t\tisKeyUpBound: false\n\t\t};\n\t\tthis._debounce = {\n\t\t\tscrollTimeoutId: -1,\n\t\t\tresizeTimeoutId: -1,\n\t\t\tresizeWidthTimeoutId: -1,\n\t\t\tresizeHeightTimeoutId: -1\n\t\t};\n\t\tthis.device = {\n\t\t\tmobile: bowser.mobile || bowser.tablet,\n\t\t\ttablet: bowser.tablet,\n\t\t\tphone: bowser.mobile,\n\t\t\tios: bowser.ios,\n\t\t\tos: null,\n\t\t\tosversion: bowser.osversion\n\t\t};\n\t\tthis.browser = {\n\t\t\tname: function () {\n\t\t\t\tswitch (true) {\n\t\t\t\t\tcase bowser.chrome:\n\t\t\t\t\t\treturn \"chrome\";\n\t\t\t\t\tcase bowser.safari:\n\t\t\t\t\t\treturn \"safari\";\n\t\t\t\t\tcase bowser.opera:\n\t\t\t\t\t\treturn \"opera\";\n\t\t\t\t\tcase bowser.mozilla:\n\t\t\t\t\t\treturn \"mozilla\";\n\t\t\t\t\tcase bowser.firefox:\n\t\t\t\t\t\treturn \"firefox\";\n\t\t\t\t\tcase bowser.msie:\n\t\t\t\t\t\treturn \"ms msie\";\n\t\t\t\t\tcase bowser.msedge:\n\t\t\t\t\t\treturn \"ms msedge\";\n\t\t\t\t}\n\t\t\t}(),\n\t\t\tversion: parseInt(bowser.version),\n\t\t\twebkit: bowser.webkit,\n\t\t\tgecko: bowser.gecko\n\t\t};\n\n\t\t//Use like this: if (w.isLayout.smallerThan('desktop')) { ... }\n\t\tthis.isLayout = {\n\t\t\tsmallerThan: function smallerThan(compare) {\n\t\t\t\tvar layout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _this4.layout;\n\t\t\t\treturn _this4.layouts.indexOf(layout) < _this4.layouts.indexOf(compare);\n\t\t\t},\n\t\t\tsmallerOrEqual: function smallerOrEqual(compare) {\n\t\t\t\tvar layout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _this4.layout;\n\t\t\t\treturn _this4.layouts.indexOf(layout) <= _this4.layouts.indexOf(compare);\n\t\t\t},\n\t\t\tbiggerThan: function biggerThan(compare) {\n\t\t\t\tvar layout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _this4.layout;\n\t\t\t\treturn _this4.layouts.indexOf(layout) > _this4.layouts.indexOf(compare);\n\t\t\t},\n\t\t\tbiggerOrEqual: function biggerOrEqual(compare) {\n\t\t\t\tvar layout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _this4.layout;\n\t\t\t\treturn _this4.layouts.indexOf(layout) >= _this4.layouts.indexOf(compare);\n\t\t\t}\n\t\t};\n\n\t\tthis.$html.toggleClass('mobileos-android', !!bowser.android);\n\t\tthis.$html.toggleClass('mobileos-ios', !!bowser.ios);\n\t\tthis.$html.toggleClass('mobileos-wp', !!bowser.windowsphone);\n\n\t\tthis.$html.addClass(this.browser.name);\n\t\tthis.$html.addClass(\"v\" + this.browser.version);\n\t\tthis.$html.addClass(this.device.mobile ? \"mobileDevice\" : 'non-mobileDevice');\n\t\tthis.$html.addClass(this.canHandleVisibilityChange ? 'visibilityChange' : 'non-visibilityChange');\n\t}\n\n\t//========================================================\n\n\t//Initialize the webpage. Don't call this yourself! Should be called only once at the end of the document\n\n\n\t_createClass(WebPage, [{\n\t\tkey: 'init',\n\t\tvalue: function init() {\n\t\t\t//Handle visibility change\n\t\t\tif (this.canHandleVisibilityChange) {\n\t\t\t\tthis.isWindowFocused = !document.hidden;\n\t\t\t\tdocument.addEventListener('visibilitychange', this._visibilityHandler.bind(this));\n\t\t\t}\n\n\t\t\t//Ready to go!\n\t\t\tthis._getLayout();\n\t\t\tthis._debounce.isDisabled = false;\n\t\t\tthis.isInitialized = true;\n\t\t\tthis.callbacks.init.fire();\n\t\t}\n\n\t\t//Automatically find handlers in an object and register them\n\n\t}, {\n\t\tkey: 'autoHandle',\n\t\tvalue: function autoHandle(object, priority) {\n\t\t\tvar _this5 = this;\n\n\t\t\tObject.keys(this.handlerNames).forEach(function (key) {\n\t\t\t\t//Iterate over handler name keys\n\t\t\t\tvar name = _this5.handlerNames[key];\n\t\t\t\tif (name instanceof RegExp) {\n\t\t\t\t\t//Handler name is a RegExp\n\t\t\t\t\tObject.keys(object).forEach(function (objKey) {\n\t\t\t\t\t\tvar match = name.exec(objKey);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\t//This handler's name doesn't match the RegExp\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar handlerParams = match.slice(1).filter(function (p) {\n\t\t\t\t\t\t\treturn p !== undefined;\n\t\t\t\t\t\t}); //Extract all RegExp capture groups\n\t\t\t\t\t\tswitch (name) {\n\t\t\t\t\t\t\tcase _this5.handlerNames.KEYBOARD:\n\t\t\t\t\t\t\t\tif (handlerParams.length === 0) {\n\t\t\t\t\t\t\t\t\thandlerParams = [W_DEFAULT_KEYBOARD_PARAM]; //When no keyCode parameter is given, register a general keyboard handler\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\thandlerParams.reduce(function (res, param) {\n\t\t\t\t\t\t\t\t\treturn res.concat(_this5.callbacks.keyboard.add(object[objKey].bind(object), priority, +param));\n\t\t\t\t\t\t\t\t}, []);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t//Handler name is a simple string\n\t\t\t\t\tif (typeof object[name] !== 'function') {\n\t\t\t\t\t\t//The object doesn't implement this handler\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tswitch (name) {\n\t\t\t\t\t\tcase _this5.handlerNames.NEAR_VIEW:\n\t\t\t\t\t\t\t//Handle nearView differently\n\t\t\t\t\t\t\tvar el = object.$element || object.$el; //Get the related element for this object\n\t\t\t\t\t\t\tif (el instanceof jQuery) {\n\t\t\t\t\t\t\t\tel = el[0];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t_this5.callbacks.nearView.add(object[name].bind(object), priority, el); //Register the handler\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t_this5._getCallbackQueueForHandlerName(name).add(object[name].bind(object), priority); //Register the handler\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t//Toggle fullscreen\n\n\t}, {\n\t\tkey: 'toggleFullscreen',\n\t\tvalue: function toggleFullscreen(set) {\n\t\t\tvar doc = window.document,\n\t\t\t docEl = doc.documentElement,\n\t\t\t requestFullScreen = docEl.requestFullscreen || docEl.mozRequestFullScreen || docEl.webkitRequestFullScreen || docEl.msRequestFullscreen,\n\t\t\t cancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen || doc.msExitFullscreen,\n\t\t\t isFullscreen = !!(doc.fullscreenElement || doc.mozFullScreenElement || doc.webkitFullscreenElement || doc.msFullscreenElement);\n\n\t\t\tif (typeof set === 'undefined') {\n\t\t\t\t//Argument omitted, toggle fullscreen state\n\t\t\t\tset = !isFullscreen;\n\t\t\t}\n\n\t\t\tif (set && !isFullscreen) {\n\t\t\t\trequestFullScreen.call(docEl);\n\t\t\t} else if (!set && isFullscreen) {\n\t\t\t\tcancelFullScreen.call(doc);\n\t\t\t}\n\t\t}\n\n\t\t//========================================================\n\n\t}, {\n\t\tkey: '_resizeHandler',\n\t\tvalue: function _resizeHandler() {\n\t\t\tvar _this6 = this;\n\n\t\t\tthis.width = this.$window.outerWidth(true);\n\t\t\tthis.height = this.$window.outerHeight();\n\n\t\t\t//Resize in any direction start\n\t\t\tif (!this._flags.resizingWidth && !this._flags.resizingHeight) {\n\t\t\t\tthis.callbacks.resize.general.fire(this.handlerNames.RESIZE_START);\n\t\t\t\tthis.callbacks.resize.start.fire();\n\t\t\t}\n\n\t\t\tif (this.widthLast !== this.width) {\n\t\t\t\t//Resize width start\n\t\t\t\tif (!this._flags.resizingWidth) {\n\t\t\t\t\tthis._flags.resizingWidth = true;\n\t\t\t\t\tthis.callbacks.resize.general.fire(this.handlerNames.RESIZE_WIDTH_START);\n\t\t\t\t\tthis.callbacks.resize.width.start.fire();\n\t\t\t\t}\n\n\t\t\t\t//While resizing width\n\t\t\t\tthis.callbacks.resize.general.fire(this.handlerNames.RESIZE_WIDTH_ACTIVE);\n\t\t\t\tthis.callbacks.resize.width.active.fire();\n\n\t\t\t\t//Resize width end\n\t\t\t\tclearTimeout(this._debounce.resizeWidthTimeoutId);\n\t\t\t\tthis._debounce.resizeWidthTimeoutId = setTimeout(function () {\n\t\t\t\t\t_this6._getLayout();\n\t\t\t\t\t_this6._flags.resizingWidth = false;\n\t\t\t\t\t_this6.callbacks.resize.general.fire(_this6.handlerNames.RESIZE_WIDTH_END);\n\t\t\t\t\t_this6.callbacks.resize.width.end.fire();\n\t\t\t\t}, W_DEFAULT_DEBOUNCE_TIME);\n\t\t\t}\n\n\t\t\tif (this.heightLast !== this.height) {\n\t\t\t\t//Resize height start\n\t\t\t\tif (!this._flags.resizingHeight) {\n\t\t\t\t\tthis._flags.resizingHeight = true;\n\t\t\t\t\tthis.callbacks.resize.general.fire(this.handlerNames.RESIZE_HEIGHT_START);\n\t\t\t\t\tthis.callbacks.resize.height.start.fire();\n\t\t\t\t}\n\n\t\t\t\t//While resizing height\n\t\t\t\tthis.callbacks.resize.general.fire(this.handlerNames.RESIZE_HEIGHT_ACTIVE);\n\t\t\t\tthis.callbacks.resize.height.active.fire();\n\n\t\t\t\t//Resize height end\n\t\t\t\tclearTimeout(this._debounce.resizeHeightTimeoutId);\n\t\t\t\tthis._debounce.resizeHeightTimeoutId = setTimeout(function () {\n\t\t\t\t\t_this6._getLayout();\n\t\t\t\t\t_this6._flags.resizingHeight = false;\n\t\t\t\t\t_this6.callbacks.resize.general.fire(_this6.handlerNames.RESIZE_HEIGHT_END);\n\t\t\t\t\t_this6.callbacks.resize.height.end.fire();\n\t\t\t\t}, W_DEFAULT_DEBOUNCE_TIME);\n\t\t\t}\n\n\t\t\t//While resizing in any direction\n\t\t\tthis.callbacks.resize.general.fire(this.handlerNames.RESIZE_ACTIVE);\n\t\t\tthis.callbacks.resize.active.fire();\n\n\t\t\t//Resize in any direction end\n\t\t\tclearTimeout(this._debounce.resizeTimeoutId);\n\t\t\tthis._debounce.resizeTimeoutId = setTimeout(function () {\n\t\t\t\t_this6._getLayout();\n\t\t\t\t_this6.callbacks.resize.general.fire(_this6.handlerNames.RESIZE_END);\n\t\t\t\t_this6.callbacks.resize.end.fire();\n\t\t\t}, W_DEFAULT_DEBOUNCE_TIME);\n\n\t\t\tthis.widthLast = this.width; //Update last value\n\t\t\tthis.heightLast = this.height;\n\t\t}\n\t}, {\n\t\tkey: '_scrollHandler',\n\t\tvalue: function _scrollHandler() {\n\t\t\tvar _this7 = this;\n\n\t\t\tthis.top = this.$window.scrollTop();\n\t\t\tthis.scrollDirection = Helpers.sign(this.top - this.topLast);\n\n\t\t\t//Scroll start\n\t\t\tif (!this._flags.scrolling) {\n\t\t\t\tthis._flags.scrolling = true;\n\t\t\t\tthis.callbacks.resize.general.fire(this.handlerNames.SCROLL_START);\n\t\t\t\tthis.callbacks.scroll.start.fire();\n\t\t\t}\n\n\t\t\t//While scrolling\n\t\t\tthis.callbacks.resize.general.fire(this.handlerNames.SCROLL_ACTIVE);\n\t\t\tthis.callbacks.scroll.active.fire();\n\n\t\t\t//Scroll end\n\t\t\tclearTimeout(this._debounce.scrollTimeoutId);\n\t\t\tthis._debounce.scrollTimeoutId = setTimeout(function () {\n\t\t\t\t_this7._flags.scrolling = false;\n\t\t\t\t_this7.callbacks.scroll.general.fire(_this7.handlerNames.SCROLL_END);\n\t\t\t\t_this7.callbacks.scroll.end.fire();\n\t\t\t}, W_DEFAULT_DEBOUNCE_TIME);\n\n\t\t\tthis.topLast = this.top; //Update last value\n\t\t}\n\t}, {\n\t\tkey: '_keyUpHandler',\n\t\tvalue: function _keyUpHandler(e) {\n\t\t\tthis.callbacks.keyboard.fire(e);\n\t\t}\n\t}, {\n\t\tkey: '_visibilityHandler',\n\t\tvalue: function _visibilityHandler() {\n\t\t\tthis.callbacks.visibility.fire(this.isWindowFocused = !document.hidden);\n\t\t}\n\t}, {\n\t\tkey: '_getLayout',\n\t\tvalue: function _getLayout() {\n\t\t\tvar oldLayout = this.layout;\n\t\t\tvar oldLayoutGroup = this.layoutGroup;\n\t\t\tvar currentBreakpoint = this.breakpoints.find(function (b) {\n\t\t\t\treturn window.matchMedia('(min-width: ' + b.from + 'px) and (max-width: ' + b.to + 'px)').matches;\n\t\t\t});\n\n\t\t\tif (currentBreakpoint) {\n\t\t\t\tthis.layout = currentBreakpoint.layout;\n\t\t\t\tthis.layoutGroup = currentBreakpoint.layoutGroup;\n\t\t\t}\n\t\t\tif (oldLayout !== this.layout && this.layout !== null) {\n\t\t\t\t//Layout changed\n\t\t\t\tthis.callbacks.layout.fire(this.layout, oldLayout);\n\t\t\t}\n\t\t\tif (oldLayoutGroup !== this.layoutGroup && this.layoutGroup !== null) {\n\t\t\t\t//Layout group changed\n\t\t\t\tthis.callbacks.layoutGroup.fire(this.layoutGroup, oldLayoutGroup);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: '_scrollCallbackQueueFactory',\n\t\tvalue: function _scrollCallbackQueueFactory() {\n\t\t\tvar _this8 = this;\n\n\t\t\tvar q = new CallbackQueue();\n\t\t\tif (!this._flags.isScrollBound) {\n\t\t\t\tq.onAfterAdd(function () {\n\t\t\t\t\tif (!_this8._flags.isScrollBound) {\n\t\t\t\t\t\t_this8._flags.isScrollBound = true;\n\t\t\t\t\t\t_this8.$window.scroll(_this8._scrollHandler.bind(_this8));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn q;\n\t\t}\n\t}, {\n\t\tkey: '_resizeCallbackQueueFactory',\n\t\tvalue: function _resizeCallbackQueueFactory() {\n\t\t\tvar _this9 = this;\n\n\t\t\tvar q = new CallbackQueue();\n\t\t\tif (!this._flags.isResizeBound) {\n\t\t\t\tq.onAfterAdd(function () {\n\t\t\t\t\tif (!_this9._flags.isResizeBound) {\n\t\t\t\t\t\t_this9._flags.isResizeBound = true;\n\t\t\t\t\t\t_this9.$window.resize(_this9._resizeHandler.bind(_this9));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn q;\n\t\t}\n\t}, {\n\t\tkey: '_keyUpCallbackQueueFactory',\n\t\tvalue: function _keyUpCallbackQueueFactory() {\n\t\t\tvar _this10 = this;\n\n\t\t\tvar q = new CallbackQueue();\n\t\t\tq.addTransformer(function (handler, priority, keyCode) {\n\t\t\t\treturn function (e) {\n\t\t\t\t\t//Return a function that calls the handler only on correct keyCode\n\t\t\t\t\tif (keyCode === e.keyCode || keyCode === W_DEFAULT_KEYBOARD_PARAM) {\n\t\t\t\t\t\thandler(e);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t});\n\t\t\tif (!this._flags.isKeyUpBound) {\n\t\t\t\tq.onAfterAdd(function () {\n\t\t\t\t\tif (!_this10._flags.isKeyUpBound) {\n\t\t\t\t\t\t_this10._flags.isKeyUpBound = true;\n\t\t\t\t\t\t_this10.$document.keyup(_this10._keyUpHandler.bind(_this10));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn q;\n\t\t}\n\t}, {\n\t\tkey: '_getCallbackQueueForHandlerName',\n\t\tvalue: function _getCallbackQueueForHandlerName(name) {\n\t\t\tswitch (name) {\n\t\t\t\tcase this.handlerNames.INIT:\n\t\t\t\t\treturn this.callbacks.init;\n\t\t\t\tcase this.handlerNames.SCROLL:\n\t\t\t\t\treturn this.callbacks.scroll.general;\n\t\t\t\tcase this.handlerNames.SCROLL_START:\n\t\t\t\t\treturn this.callbacks.scroll.start;\n\t\t\t\tcase this.handlerNames.SCROLL_ACTIVE:\n\t\t\t\t\treturn this.callbacks.scroll.active;\n\t\t\t\tcase this.handlerNames.SCROLL_END:\n\t\t\t\t\treturn this.callbacks.scroll.end;\n\t\t\t\tcase this.handlerNames.RESIZE:\n\t\t\t\t\treturn this.callbacks.resize.general;\n\t\t\t\tcase this.handlerNames.RESIZE_START:\n\t\t\t\t\treturn this.callbacks.resize.start;\n\t\t\t\tcase this.handlerNames.RESIZE_ACTIVE:\n\t\t\t\t\treturn this.callbacks.resize.active;\n\t\t\t\tcase this.handlerNames.RESIZE_END:\n\t\t\t\t\treturn this.callbacks.resize.end;\n\t\t\t\tcase this.handlerNames.RESIZE_WIDTH_START:\n\t\t\t\t\treturn this.callbacks.resize.width.start;\n\t\t\t\tcase this.handlerNames.RESIZE_WIDTH_ACTIVE:\n\t\t\t\t\treturn this.callbacks.resize.width.active;\n\t\t\t\tcase this.handlerNames.RESIZE_WIDTH_END:\n\t\t\t\t\treturn this.callbacks.resize.width.end;\n\t\t\t\tcase this.handlerNames.RESIZE_HEIGHT_START:\n\t\t\t\t\treturn this.callbacks.resize.height.start;\n\t\t\t\tcase this.handlerNames.RESIZE_HEIGHT_ACTIVE:\n\t\t\t\t\treturn this.callbacks.resize.height.active;\n\t\t\t\tcase this.handlerNames.RESIZE_HEIGHT_END:\n\t\t\t\t\treturn this.callbacks.resize.height.end;\n\t\t\t\tcase this.handlerNames.LAYOUT:\n\t\t\t\t\treturn this.callbacks.layout;\n\t\t\t\tcase this.handlerNames.LAYOUT_GROUP:\n\t\t\t\t\treturn this.callbacks.layoutGroup;\n\t\t\t\tcase this.handlerNames.VISIBILITY:\n\t\t\t\t\treturn this.callbacks.visibility;\n\t\t\t\tcase this.handlerNames.KEYBOARD:\n\t\t\t\t\treturn this.callbacks.keyboard;\n\t\t\t}\n\t\t\tif (this.handlerNames.KEYBOARD.test(name)) {\n\t\t\t\treturn this.callbacks.keyboard;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\t}]);\n\n\treturn WebPage;\n}();\nwindow.w = new WebPage();\n\n;;var Preload = {\n\tretinaSuffix: '__2',\n\n\tisRetina: window.matchMedia && (window.matchMedia('only screen and (min-resolution: 124dpi), only screen and (min-resolution: 1.3dppx), only screen and (min-resolution: 48.8dpcm)').matches || window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3)').matches) || window.devicePixelRatio && window.devicePixelRatio > 1.3,\n\n\t//Load a single image\n\timage: function image(_image, callback) {\n\t\treturn this._createBatch([_image], null, callback);\n\t},\n\n\n\t//Load multiple images at once\n\timages: function images(_images, callbackAll, callbackOne) {\n\t\treturn this._createBatch.apply(this, arguments);\n\t},\n\n\n\t//Find images to load in an element\n\timagesInContainer: function imagesInContainer(container, callbackAll, callbackOne) {\n\t\tcontainer = $(container);\n\t\tvar $elements = container.find('[data-lazy-src]');\n\t\tvar images = [];\n\t\t$elements.each(function (idx, el) {\n\t\t\tvar data = $(el).data('lazy-src');\n\t\t\tif ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n\t\t\t\tif (typeof data.key === 'undefined') {\n\t\t\t\t\tdata.key = el;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdata = {\n\t\t\t\t\tkey: el,\n\t\t\t\t\t0: data\n\t\t\t\t};\n\t\t\t}\n\t\t\timages.push(data);\n\t\t});\n\t\treturn this._createBatch(images, callbackAll, callbackOne);\n\t},\n\n\n\t//=============================================================================\n\n\t_$cacheElement: null,\n\n\t_createBatch: function _createBatch(images, callbackAll, callbackOne) {\n\t\tvar batch = {\n\t\t\timages: images,\n\t\t\ttotalCount: images.length,\n\t\t\tcompletedCount: 0,\n\t\t\tcallbackOne: callbackOne,\n\t\t\tcallbackAll: callbackAll\n\t\t};\n\t\treturn Preload._processBatch(batch);\n\t},\n\t_processBatch: function _processBatch(batch) {\n\t\tvar _this11 = this;\n\n\t\t$.each(batch.images, function (key, image) {\n\t\t\tvar imagePath = null;\n\n\t\t\tif ((typeof image === 'undefined' ? 'undefined' : _typeof(image)) === 'object') {\n\t\t\t\tif (typeof image.key !== 'undefined') {\n\t\t\t\t\tkey = image.key;\n\t\t\t\t\tdelete image.key;\n\t\t\t\t}\n\t\t\t\t$.each(image, function (fromWidth, path) {\n\t\t\t\t\t//Figure out resolution dependency\n\t\t\t\t\tif (window.matchMedia('(min-width: ' + parseInt(fromWidth) + 'px)').matches) {\n\t\t\t\t\t\timagePath = path;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t//String image path\n\t\t\t\timagePath = image;\n\t\t\t}\n\n\t\t\tif (!imagePath) {\n\t\t\t\t//Path didn't pass the filter\n\t\t\t\tbatch.totalCount--;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!_this11.isRetina && _this11.retinaSuffix) {\n\t\t\t\timagePath = imagePath.replace(_this11.retinaSuffix, ''); //Remove the retina suffix if not on a retina display\n\t\t\t}\n\n\t\t\tvar img = new Image();\n\t\t\timg.onload = function () {\n\t\t\t\t//When the image has finished loading\n\t\t\t\tPreload._cacheImage(this);\n\t\t\t\tvar progress = ++batch.completedCount / batch.totalCount * 100; //Update progress\n\n\t\t\t\t//Fire callbacks\n\t\t\t\tif (typeof batch.callbackOne === 'function') {\n\t\t\t\t\tbatch.callbackOne(progress, imagePath, key);\n\t\t\t\t}\n\t\t\t\tif (batch.completedCount === batch.totalCount && typeof batch.callbackAll === 'function') {\n\t\t\t\t\tbatch.callbackAll(progress);\n\t\t\t\t}\n\t\t\t};\n\t\t\timg.src = imagePath; //Start loading the image\n\t\t});\n\n\t\treturn batch.totalCount > 0;\n\t},\n\n\n\t_cacheImage: function _cacheImage(image) {\n\t\tif (!this._$cacheElement) {\n\t\t\t$('body').append(this._$cacheElement = $('
'));\n\t\t}\n\t\tthis._$cacheElement.append(image);\n\t}\n};\n\n;;var AnimatedSprite = {\n\tcreateImg: function createImg($element, imageNumber, animationSpeed) {\n\t\tvar counter = 0;\n\t\treturn new TimelineMax({\n\t\t\trepeat: -1,\n\t\t\trepeatDelay: animationSpeed,\n\t\t\tonRepeat: function onRepeat() {\n\t\t\t\tcounter = (counter + 1) % imageNumber;\n\t\t\t\tTweenMax.set($element, { yPercent: -counter / imageNumber * 100 });\n\t\t\t}\n\t\t});\n\t},\n\tresetImg: function resetImg($element, timeline) {\n\t\ttimeline.stop();\n\t\tTweenMax.set($element, { yPercent: 0 });\n\t}\n\n\t//createBg() ...\n\n};\n\n;;(function () {\n\tvar _angles;\n\n\tvar POS_X = 1;\n\tvar NEG_X = 2;\n\tvar POS_Y = 4;\n\tvar NEG_Y = 8;\n\tvar POS_Z = 16;\n\tvar NEG_Z = 32;\n\n\twindow.IsometricSystem = {\n\t\taxis: {\n\t\t\tPOS_X: POS_X,\n\t\t\tNEG_X: NEG_X,\n\t\t\tPOS_Y: POS_Y,\n\t\t\tNEG_Y: NEG_Y,\n\t\t\tPOS_Z: POS_Z,\n\t\t\tNEG_Z: NEG_Z\n\t\t},\n\n\t\tangles: (_angles = {}, _defineProperty(_angles, POS_X, Math.PI / 6), _defineProperty(_angles, POS_Y, Math.PI / 2), _defineProperty(_angles, POS_Z, Math.PI * 5 / 6), _angles),\n\n\t\tisAxisNegative: function isAxisNegative(axis) {\n\t\t\treturn (axis & 0xaa) > 0;\n\t\t},\n\t\tgetOppositeAxis: function getOppositeAxis(axis) {\n\t\t\treturn this.isAxisNegative(axis) ? axis >> 1 : axis << 1;\n\t\t}\n\t};\n})();\n\n;;var IsometricMotion = {\n\tget: function get(axis, distance) {\n\t\tif (IsometricSystem.isAxisNegative(axis)) {\n\t\t\taxis = IsometricSystem.getOppositeAxis(axis);\n\t\t\tdistance = -distance;\n\t\t}\n\n\t\treturn {\n\t\t\tx: Helpers.distX(distance, IsometricSystem.angles[axis]),\n\t\t\ty: Helpers.distY(distance, IsometricSystem.angles[axis])\n\t\t};\n\t}\n};\n\n;;var SvgLoader = {\n\tload: function load(filename, cb) {\n\t\t$.ajax({\n\t\t\turl: filename,\n\t\t\tdataType: 'text'\n\t\t}).done(function (response) {\n\t\t\tcb(response);\n\t\t});\n\t}\n};\n"]}