{"version":3,"file":"/pc/all/libs/lightbox/core.js.map","sources":["/pc/all/libs/lightbox/core.js"],"sourcesContent":["/**\r\n * @plugin\r\n * @name Core\r\n * @description Formstone Library core. Required for all plugins.\r\n */\r\n\r\n/* global define */\r\n/* global ga */\r\n\r\n(function(factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define([\"jquery\"], factory);\r\n } else {\r\n factory(jQuery);\r\n }\r\n }(function($) {\r\n\r\n \"use strict\";\r\n\r\n // Namespace\r\n\r\n var Win = typeof window !== \"undefined\" ? window : this,\r\n Doc = Win.document,\r\n Core = function() {\r\n this.Version = '@version';\r\n this.Plugins = {};\r\n\r\n this.DontConflict = false;\r\n this.Conflicts = {\r\n fn: {}\r\n };\r\n this.ResizeHandlers = [];\r\n this.RAFHandlers = [];\r\n\r\n // Globals\r\n\r\n this.window = Win;\r\n this.$window = $(Win);\r\n this.document = Doc;\r\n this.$document = $(Doc);\r\n this.$body = null;\r\n\r\n this.windowWidth = 0;\r\n this.windowHeight = 0;\r\n this.fallbackWidth = 1024;\r\n this.fallbackHeight = 768;\r\n this.userAgent = window.navigator.userAgent || window.navigator.vendor || window.opera;\r\n this.isFirefox = /Firefox/i.test(this.userAgent);\r\n this.isChrome = /Chrome/i.test(this.userAgent);\r\n this.isSafari = /Safari/i.test(this.userAgent) && !this.isChrome;\r\n this.isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(this.userAgent);\r\n this.isIEMobile = /IEMobile/i.test(this.userAgent);\r\n this.isFirefoxMobile = (this.isFirefox && this.isMobile);\r\n this.transform = null;\r\n this.transition = null;\r\n\r\n this.support = {\r\n file: !!(window.File && window.FileList && window.FileReader),\r\n history: !!(window.history && window.history.pushState && window.history.replaceState),\r\n matchMedia: !!(window.matchMedia || window.msMatchMedia),\r\n pointer: !!(window.PointerEvent),\r\n raf: !!(window.requestAnimationFrame && window.cancelAnimationFrame),\r\n touch: !!((\"ontouchstart\" in window) || window.DocumentTouch && document instanceof window.DocumentTouch),\r\n transition: false,\r\n transform: false\r\n };\r\n },\r\n\r\n Functions = {\r\n\r\n /**\r\n * @method private\r\n * @name killEvent\r\n * @description Stops event action and bubble.\r\n * @param e [object] \"Event data\"\r\n */\r\n\r\n killEvent: function(e, immediate) {\r\n try {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (immediate) {\r\n e.stopImmediatePropagation();\r\n }\r\n } catch (error) {\r\n //\r\n }\r\n },\r\n\r\n /**\r\n * @method private\r\n * @name killGesture\r\n * @description Stops gesture event action.\r\n * @param e [object] \"Event data\"\r\n */\r\n\r\n killGesture: function(e) {\r\n try {\r\n e.preventDefault();\r\n } catch (error) {\r\n //\r\n }\r\n },\r\n\r\n /**\r\n * @method private\r\n * @name lockViewport\r\n * @description Unlocks the viewport, preventing getsures.\r\n */\r\n\r\n lockViewport: function(plugin_namespace) {\r\n ViewportLocks[plugin_namespace] = true;\r\n\r\n if (!$.isEmptyObject(ViewportLocks) && !ViewportLocked) {\r\n if ($ViewportMeta.length) {\r\n $ViewportMeta.attr(\"content\", ViewportMetaLocked);\r\n } else {\r\n $ViewportMeta = $(\"head\").append('');\r\n }\r\n\r\n Formstone.$body.on(Events.gestureChange, Functions.killGesture)\r\n .on(Events.gestureStart, Functions.killGesture)\r\n .on(Events.gestureEnd, Functions.killGesture);\r\n\r\n ViewportLocked = true;\r\n }\r\n },\r\n\r\n /**\r\n * @method private\r\n * @name unlockViewport\r\n * @description Unlocks the viewport, allowing getsures.\r\n */\r\n\r\n unlockViewport: function(plugin_namespace) {\r\n if ($.type(ViewportLocks[plugin_namespace]) !== 'undefined') {\r\n delete ViewportLocks[plugin_namespace];\r\n }\r\n\r\n if ($.isEmptyObject(ViewportLocks) && ViewportLocked) {\r\n if ($ViewportMeta.length) {\r\n if (ViewportMetaOriginal) {\r\n $ViewportMeta.attr(\"content\", ViewportMetaOriginal);\r\n } else {\r\n $ViewportMeta.remove();\r\n }\r\n }\r\n\r\n Formstone.$body.off(Events.gestureChange)\r\n .off(Events.gestureStart)\r\n .off(Events.gestureEnd);\r\n\r\n ViewportLocked = false;\r\n }\r\n },\r\n\r\n /**\r\n * @method private\r\n * @name startTimer\r\n * @description Starts an internal timer.\r\n * @param timer [int] \"Timer ID\"\r\n * @param time [int] \"Time until execution\"\r\n * @param callback [function] \"Function to execute\"\r\n * @return [int] \"Timer ID\"\r\n */\r\n\r\n startTimer: function(timer, time, callback, interval) {\r\n Functions.clearTimer(timer);\r\n\r\n return (interval) ? setInterval(callback, time) : setTimeout(callback, time);\r\n },\r\n\r\n /**\r\n * @method private\r\n * @name clearTimer\r\n * @description Clears an internal timer.\r\n * @param timer [int] \"Timer ID\"\r\n */\r\n\r\n clearTimer: function(timer, interval) {\r\n if (timer) {\r\n if (interval) {\r\n clearInterval(timer);\r\n } else {\r\n clearTimeout(timer);\r\n }\r\n\r\n timer = null;\r\n }\r\n },\r\n\r\n /**\r\n * @method private\r\n * @name sortAsc\r\n * @description Sorts an array (ascending).\r\n * @param a [mixed] \"First value\"\r\n * @param b [mixed] \"Second value\"\r\n * @return Difference between second and first values\r\n */\r\n\r\n sortAsc: function(a, b) {\r\n return (parseInt(a, 10) - parseInt(b, 10));\r\n },\r\n\r\n /**\r\n * @method private\r\n * @name sortDesc\r\n * @description Sorts an array (descending).\r\n * @param a [mixed] \"First value\"\r\n * @param b [mixed] \"Second value\"\r\n * @return Difference between second and first values\r\n */\r\n\r\n sortDesc: function(a, b) {\r\n return (parseInt(b, 10) - parseInt(a, 10));\r\n },\r\n\r\n /**\r\n * @method private\r\n * @name decodeEntities\r\n * @description Decodes HTML.\r\n * @param string [string] \"String to decode\"\r\n * @return Decoded string\r\n */\r\n\r\n decodeEntities: function(string) {\r\n // http://stackoverflow.com/a/1395954\r\n var el = Formstone.document.createElement(\"textarea\");\r\n el.innerHTML = string;\r\n\r\n return el.value;\r\n },\r\n\r\n /**\r\n * @method private\r\n * @name parseGetParams\r\n * @description Returns keyed object containing all GET query parameters\r\n * @param url [string] \"URL to parse\"\r\n * @return [object] \"Keyed query params\"\r\n */\r\n\r\n parseQueryString: function(url) {\r\n var params = {},\r\n parts = url.slice(url.indexOf(\"?\") + 1).split(\"&\");\r\n\r\n for (var i = 0; i < parts.length; i++) {\r\n var part = parts[i].split(\"=\");\r\n params[part[0]] = part[1];\r\n }\r\n\r\n return params;\r\n }\r\n },\r\n\r\n Formstone = new Core(),\r\n\r\n // Deferred ready\r\n\r\n $Ready = $.Deferred(),\r\n\r\n // Classes\r\n\r\n Classes = {\r\n base: \"{ns}\",\r\n element: \"{ns}-element\"\r\n },\r\n\r\n // Events\r\n\r\n Events = {\r\n namespace: \".{ns}\",\r\n beforeUnload: \"beforeunload.{ns}\",\r\n blur: \"blur.{ns}\",\r\n change: \"change.{ns}\",\r\n click: \"click.{ns}\",\r\n dblClick: \"dblclick.{ns}\",\r\n drag: \"drag.{ns}\",\r\n dragEnd: \"dragend.{ns}\",\r\n dragEnter: \"dragenter.{ns}\",\r\n dragLeave: \"dragleave.{ns}\",\r\n dragOver: \"dragover.{ns}\",\r\n dragStart: \"dragstart.{ns}\",\r\n drop: \"drop.{ns}\",\r\n error: \"error.{ns}\",\r\n focus: \"focus.{ns}\",\r\n focusIn: \"focusin.{ns}\",\r\n focusOut: \"focusout.{ns}\",\r\n gestureChange: \"gesturechange.{ns}\",\r\n gestureStart: \"gesturestart.{ns}\",\r\n gestureEnd: \"gestureend.{ns}\",\r\n input: \"input.{ns}\",\r\n keyDown: \"keydown.{ns}\",\r\n keyPress: \"keypress.{ns}\",\r\n keyUp: \"keyup.{ns}\",\r\n load: \"load.{ns}\",\r\n mouseDown: \"mousedown.{ns}\",\r\n mouseEnter: \"mouseenter.{ns}\",\r\n mouseLeave: \"mouseleave.{ns}\",\r\n mouseMove: \"mousemove.{ns}\",\r\n mouseOut: \"mouseout.{ns}\",\r\n mouseOver: \"mouseover.{ns}\",\r\n mouseUp: \"mouseup.{ns}\",\r\n panStart: \"panstart.{ns}\",\r\n pan: \"pan.{ns}\",\r\n panEnd: \"panend.{ns}\",\r\n resize: \"resize.{ns}\",\r\n scaleStart: \"scalestart.{ns}\",\r\n scaleEnd: \"scaleend.{ns}\",\r\n scale: \"scale.{ns}\",\r\n scroll: \"scroll.{ns}\",\r\n select: \"select.{ns}\",\r\n swipe: \"swipe.{ns}\",\r\n touchCancel: \"touchcancel.{ns}\",\r\n touchEnd: \"touchend.{ns}\",\r\n touchLeave: \"touchleave.{ns}\",\r\n touchMove: \"touchmove.{ns}\",\r\n touchStart: \"touchstart.{ns}\"\r\n },\r\n\r\n ResizeTimer = null,\r\n Debounce = 20,\r\n\r\n $ViewportMeta,\r\n ViewportMetaOriginal,\r\n ViewportMetaLocked,\r\n ViewportLocks = [],\r\n ViewportLocked = false;\r\n\r\n /**\r\n * @method\r\n * @name NoConflict\r\n * @description Resolves plugin namespace conflicts\r\n * @example Formstone.NoConflict();\r\n */\r\n\r\n Core.prototype.NoConflict = function() {\r\n Formstone.DontConflict = true;\r\n\r\n for (var i in Formstone.Plugins) {\r\n if (Formstone.Plugins.hasOwnProperty(i)) {\r\n $[i] = Formstone.Conflicts[i];\r\n $.fn[i] = Formstone.Conflicts.fn[i];\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * @method\r\n * @name Ready\r\n * @description Replacement for jQuery ready\r\n * @param e [object] \"Event data\"\r\n */\r\n\r\n Core.prototype.Ready = function(fn) {\r\n if (\r\n Formstone.document.readyState === \"complete\" ||\r\n (Formstone.document.readyState !== \"loading\" && !Formstone.document.documentElement.doScroll)\r\n ) {\r\n fn();\r\n } else {\r\n Formstone.document.addEventListener(\"DOMContentLoaded\", fn);\r\n }\r\n };\r\n\r\n /**\r\n * @method\r\n * @name Plugin\r\n * @description Builds a plugin and registers it with jQuery.\r\n * @param namespace [string] \"Plugin namespace\"\r\n * @param settings [object] \"Plugin settings\"\r\n * @return [object] \"Plugin properties. Includes `defaults`, `classes`, `events`, `functions`, `methods` and `utilities` keys\"\r\n * @example Formstone.Plugin(\"namespace\", { ... });\r\n */\r\n\r\n Core.prototype.Plugin = function(namespace, settings) {\r\n Formstone.Plugins[namespace] = (function(namespace, settings) {\r\n\r\n var namespaceDash = \"fs-\" + namespace,\r\n namespaceDot = \"fs.\" + namespace,\r\n namespaceClean = \"fs\" + namespace.replace(/(^|\\s)([a-z])/g, function(m, p1, p2) {\r\n return p1 + p2.toUpperCase();\r\n });\r\n\r\n /**\r\n * @method private\r\n * @name initialize\r\n * @description Creates plugin instance by adding base classname, creating data and scoping a _construct call.\r\n * @param options [object] <{}> \"Instance options\"\r\n */\r\n\r\n function initialize(options) {\r\n // Maintain Chain\r\n\r\n var hasOptions = $.type(options) === \"object\",\r\n args = Array.prototype.slice.call(arguments, (hasOptions ? 1 : 0)),\r\n $targets = this,\r\n $postTargets = $(),\r\n $element,\r\n i,\r\n count;\r\n\r\n // Extend Defaults\r\n\r\n options = $.extend(true, {}, settings.defaults || {}, (hasOptions ? options : {}));\r\n\r\n // All targets\r\n\r\n for (i = 0, count = $targets.length; i < count; i++) {\r\n $element = $targets.eq(i);\r\n\r\n // Gaurd Against Exiting Instances\r\n\r\n if (!getData($element)) {\r\n\r\n // Extend w/ Local Options\n\n settings.guid++;\r\n\r\n var guid = \"__\" + settings.guid,\r\n rawGuid = settings.classes.raw.base + guid,\r\n locals = $element.data(namespace + \"-options\"),\r\n data = $.extend(true, {\r\n $el: $element,\r\n guid: guid,\n numGuid: settings.guid,\r\n rawGuid: rawGuid,\r\n dotGuid: \".\" + rawGuid\r\n }, options, ($.type(locals) === \"object\" ? locals : {}));\r\n\r\n // Cache Instance\r\n\r\n $element.addClass(settings.classes.raw.element)\r\n .data(namespaceClean, data);\r\n\r\n // Constructor\r\n\r\n settings.methods._construct.apply($element, [data].concat(args));\r\n\r\n // Post Constructor\r\n\r\n $postTargets = $postTargets.add($element);\r\n }\r\n\r\n }\r\n\r\n // Post targets\r\n\r\n for (i = 0, count = $postTargets.length; i < count; i++) {\r\n $element = $postTargets.eq(i);\r\n\r\n // Post Constructor\r\n\r\n settings.methods._postConstruct.apply($element, [getData($element)]);\r\n }\r\n\r\n return $targets;\r\n }\r\n\r\n /**\r\n * @method private\r\n * @name destroy\r\n * @description Removes plugin instance by scoping a _destruct call, and removing the base classname and data.\r\n * @param data [object] <{}> \"Instance data\"\r\n */\r\n\r\n /**\r\n * @method widget\r\n * @name destroy\r\n * @description Removes plugin instance.\r\n * @example $(\".target\").{ns}(\"destroy\");\r\n */\r\n\r\n function destroy(data) {\r\n settings.functions.iterate.apply(this, [settings.methods._destruct].concat(Array.prototype.slice.call(arguments, 1)));\r\n\r\n this.removeClass(settings.classes.raw.element)\r\n .removeData(namespaceClean);\r\n }\r\n\r\n /**\r\n * @method private\r\n * @name getData\r\n * @description Creates class selector from text.\r\n * @param $element [jQuery] \"Target jQuery object\"\r\n * @return [object] \"Instance data\"\r\n */\r\n\r\n function getData($el) {\r\n return $el.data(namespaceClean);\r\n }\r\n\r\n /**\r\n * @method private\r\n * @name delegateWidget\r\n * @description Delegates public methods.\r\n * @param method [string] \"Method to execute\"\r\n * @return [jQuery] \"jQuery object\"\r\n */\r\n\r\n function delegateWidget(method) {\r\n\r\n // If jQuery object\r\n\r\n if (this instanceof $) {\r\n\r\n var _method = settings.methods[method];\r\n\r\n // Public method OR false\r\n\r\n if ($.type(method) === \"object\" || !method) {\r\n\r\n // Initialize\r\n\r\n return initialize.apply(this, arguments);\r\n } else if (_method && method.indexOf(\"_\") !== 0) {\r\n\r\n // Wrap Public Methods\r\n\n var args = [_method].concat(Array.prototype.slice.call(arguments, 1));\n\r\n return settings.functions.iterate.apply(this, args);\r\n }\r\n\r\n return this;\r\n }\r\n }\r\n\r\n /**\r\n * @method private\r\n * @name delegateUtility\r\n * @description Delegates utility methods.\r\n * @param method [string] \"Method to execute\"\r\n */\r\n\r\n function delegateUtility(method) {\r\n\r\n // public utility OR utility init OR false\r\n\r\n var _method = settings.utilities[method] || settings.utilities._initialize || false;\r\n\r\n if (_method) {\r\n\r\n // Wrap Utility Methods\r\n\n var args = Array.prototype.slice.call(arguments, ($.type(method) === \"object\" ? 0 : 1));\n\r\n return _method.apply(window, args);\r\n }\r\n }\r\n\r\n /**\r\n * @method utility\r\n * @name defaults\r\n * @description Extends plugin default settings; effects instances created hereafter.\r\n * @param options [object] <{}> \"New plugin defaults\"\r\n * @example $.{ns}(\"defaults\", { ... });\r\n */\r\n\r\n function defaults(options) {\r\n settings.defaults = $.extend(true, settings.defaults, options || {});\r\n }\r\n\r\n /**\r\n * @method private\r\n * @name iterate\r\n * @description Loops scoped function calls over jQuery object with instance data as first parameter.\r\n * @param func [function] \"Function to execute\"\r\n * @return [jQuery] \"jQuery object\"\r\n */\r\n\r\n function iterate(fn) {\r\n var $targets = this,\r\n args = Array.prototype.slice.call(arguments, 1);\r\n\r\n for (var i = 0, count = $targets.length; i < count; i++) {\r\n var $element = $targets.eq(i),\r\n data = getData($element) || {};\r\n\r\n if ($.type(data.$el) !== \"undefined\") {\r\n fn.apply($element, [data].concat(args));\r\n }\r\n }\r\n\r\n return $targets;\r\n }\r\n\r\n // Locals\r\n\r\n settings.initialized = false;\r\n settings.priority = settings.priority || 10;\r\n\r\n // Namespace Classes & Events\r\n\r\n settings.classes = namespaceProperties(\"classes\", namespaceDash, Classes, settings.classes);\r\n settings.events = namespaceProperties(\"events\", namespace, Events, settings.events);\r\n\r\n // Extend Functions\r\n\r\n settings.functions = $.extend({\r\n getData: getData,\r\n iterate: iterate\r\n }, Functions, settings.functions);\r\n\r\n // Extend Methods\r\n\r\n settings.methods = $.extend(true, {\r\n\r\n // Private Methods\r\n\r\n _construct: $.noop, // Constructor\r\n _postConstruct: $.noop, // Post Constructor\r\n _destruct: $.noop, // Destructor\r\n _resize: false, // Window resize\r\n\r\n // Public Methods\r\n\r\n destroy: destroy\r\n\r\n }, settings.methods);\r\n\r\n // Extend Utilities\r\n\r\n settings.utilities = $.extend(true, {\r\n\r\n // Private Utilities\r\n\r\n _initialize: false, // First Run\r\n _delegate: false, // Custom Delegation\r\n\r\n // Public Utilities\r\n\r\n defaults: defaults\r\n\r\n }, settings.utilities);\r\n\r\n // Register Plugin\r\n\r\n // Widget\r\n\r\n if (settings.widget) {\r\n\r\n // Store conflicting namesapaces\r\n Formstone.Conflicts.fn[namespace] = $.fn[namespace];\r\n\r\n // Widget Delegation: $(\".target\").fsPlugin(\"method\", ...);\r\n $.fn[namespaceClean] = delegateWidget;\r\n\r\n if (!Formstone.DontConflict) {\r\n\r\n // $(\".target\").plugin(\"method\", ...);\r\n $.fn[namespace] = $.fn[namespaceClean];\r\n }\r\n }\r\n\r\n // Utility\r\n\r\n Formstone.Conflicts[namespace] = $[namespace];\r\n\r\n // Utility Delegation: $.fsPlugin(\"method\", ... );\r\n $[namespaceClean] = settings.utilities._delegate || delegateUtility;\r\n\r\n if (!Formstone.DontConflict) {\r\n\r\n // $.plugin(\"method\", ... );\r\n $[namespace] = $[namespaceClean];\r\n }\r\n\r\n // Run Setup\r\n\r\n settings.namespace = namespace;\r\n settings.namespaceClean = namespaceClean;\r\n\r\n settings.guid = 0;\r\n\r\n // Resize handler\r\n\r\n if (settings.methods._resize) {\r\n Formstone.ResizeHandlers.push({\r\n namespace: namespace,\r\n priority: settings.priority,\r\n callback: settings.methods._resize\r\n });\r\n\r\n // Sort handlers on push\r\n Formstone.ResizeHandlers.sort(sortPriority);\r\n }\r\n\r\n // RAF handler\r\n\r\n if (settings.methods._raf) {\r\n Formstone.RAFHandlers.push({\r\n namespace: namespace,\r\n priority: settings.priority,\r\n callback: settings.methods._raf\r\n });\r\n\r\n // Sort handlers on push\r\n Formstone.RAFHandlers.sort(sortPriority);\r\n }\r\n\r\n return settings;\r\n })(namespace, settings);\r\n\r\n return Formstone.Plugins[namespace];\r\n };\r\n\r\n // Namespace Properties\r\n\r\n function namespaceProperties(type, namespace, globalProps, customProps) {\r\n var _props = {\r\n raw: {}\r\n },\r\n i;\r\n\r\n customProps = customProps || {};\r\n\r\n for (i in customProps) {\r\n if (customProps.hasOwnProperty(i)) {\r\n if (type === \"classes\") {\r\n\r\n // Custom classes\r\n _props.raw[customProps[i]] = namespace + \"-\" + customProps[i];\r\n _props[customProps[i]] = \".\" + namespace + \"-\" + customProps[i];\r\n } else {\r\n // Custom events\r\n _props.raw[i] = customProps[i];\r\n _props[i] = customProps[i] + \".\" + namespace;\r\n }\r\n }\r\n }\r\n\r\n for (i in globalProps) {\r\n if (globalProps.hasOwnProperty(i)) {\r\n if (type === \"classes\") {\r\n\r\n // Global classes\r\n _props.raw[i] = globalProps[i].replace(/{ns}/g, namespace);\r\n _props[i] = globalProps[i].replace(/{ns}/g, \".\" + namespace);\r\n } else {\r\n // Global events\r\n _props.raw[i] = globalProps[i].replace(/.{ns}/g, \"\");\r\n _props[i] = globalProps[i].replace(/{ns}/g, namespace);\r\n }\r\n }\r\n }\r\n\r\n return _props;\r\n }\r\n\r\n // Set Browser Prefixes\r\n\r\n function setBrowserPrefixes() {\r\n var transitionEvents = {\r\n \"WebkitTransition\": \"webkitTransitionEnd\",\r\n \"MozTransition\": \"transitionend\",\r\n \"OTransition\": \"otransitionend\",\r\n \"transition\": \"transitionend\"\r\n },\r\n transitionProperties = [\r\n \"transition\",\r\n \"-webkit-transition\"\r\n ],\r\n transformProperties = {\r\n 'transform': 'transform',\r\n 'MozTransform': '-moz-transform',\r\n 'OTransform': '-o-transform',\r\n 'msTransform': '-ms-transform',\r\n 'webkitTransform': '-webkit-transform'\r\n },\r\n transitionEvent = \"transitionend\",\r\n transitionProperty = \"\",\r\n transformProperty = \"\",\r\n testDiv = document.createElement(\"div\"),\r\n i;\r\n\r\n for (i in transitionEvents) {\r\n if (transitionEvents.hasOwnProperty(i) && i in testDiv.style) {\r\n transitionEvent = transitionEvents[i];\r\n Formstone.support.transition = true;\r\n break;\r\n }\r\n }\r\n\r\n Events.transitionEnd = transitionEvent + \".{ns}\";\r\n\r\n for (i in transitionProperties) {\r\n if (transitionProperties.hasOwnProperty(i) && transitionProperties[i] in testDiv.style) {\r\n transitionProperty = transitionProperties[i];\r\n break;\r\n }\r\n }\r\n\r\n Formstone.transition = transitionProperty;\r\n\r\n for (i in transformProperties) {\r\n if (transformProperties.hasOwnProperty(i) && transformProperties[i] in testDiv.style) {\r\n Formstone.support.transform = true;\r\n transformProperty = transformProperties[i];\r\n break;\r\n }\r\n }\r\n\r\n Formstone.transform = transformProperty;\r\n }\r\n\r\n // Window resize\r\n\r\n function onWindowResize() {\r\n Formstone.windowWidth = Formstone.$window.width();\r\n Formstone.windowHeight = Formstone.$window.height();\r\n\r\n ResizeTimer = Functions.startTimer(ResizeTimer, Debounce, handleWindowResize);\r\n }\r\n\r\n function handleWindowResize() {\r\n for (var i in Formstone.ResizeHandlers) {\r\n if (Formstone.ResizeHandlers.hasOwnProperty(i)) {\r\n Formstone.ResizeHandlers[i].callback.call(window, Formstone.windowWidth, Formstone.windowHeight);\r\n }\r\n }\r\n }\r\n\r\n Formstone.$window.on(\"resize.fs\", onWindowResize);\r\n onWindowResize();\r\n\r\n // RAF\r\n\r\n function handleRAF() {\r\n if (Formstone.support.raf) {\r\n Formstone.window.requestAnimationFrame(handleRAF);\r\n\r\n for (var i in Formstone.RAFHandlers) {\r\n if (Formstone.RAFHandlers.hasOwnProperty(i)) {\r\n Formstone.RAFHandlers[i].callback.call(window);\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleRAF();\r\n\r\n // Sort Priority\r\n\r\n function sortPriority(a, b) {\r\n return (parseInt(a.priority) - parseInt(b.priority));\r\n }\r\n\r\n // Document Ready\r\n\r\n Formstone.Ready(function() {\r\n Formstone.$body = $(\"body\");\n\n $(\"html\").addClass( (Formstone.support.touch) ? \"touchevents\" : \"no-touchevents\" );\r\n\r\n // Viewport\r\n $ViewportMeta = $('meta[name=\"viewport\"]');\r\n ViewportMetaOriginal = ($ViewportMeta.length) ? $ViewportMeta.attr(\"content\") : false;\r\n ViewportMetaLocked = 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0';\r\n\r\n $Ready.resolve();\r\n });\r\n\r\n // Custom Events\r\n\r\n Events.clickTouchStart = Events.click + \" \" + Events.touchStart;\r\n\r\n // Browser Prefixes\r\n\r\n setBrowserPrefixes();\r\n\r\n window.Formstone = Formstone;\r\n\r\n return Formstone;\r\n\r\n })\r\n\r\n);\r\n"],"names":["factory","define","amd","jQuery","$","namespaceProperties","type","namespace","globalProps","customProps","i","_props","raw","hasOwnProperty","replace","setBrowserPrefixes","transitionEvents","WebkitTransition","MozTransition","OTransition","transition","transitionProperties","transformProperties","transform","MozTransform","OTransform","msTransform","webkitTransform","transitionEvent","transitionProperty","transformProperty","testDiv","document","createElement","style","Formstone","support","Events","transitionEnd","onWindowResize","windowWidth","$window","width","windowHeight","height","ResizeTimer","Functions","startTimer","Debounce","handleWindowResize","ResizeHandlers","callback","call","window","handleRAF","raf","requestAnimationFrame","RAFHandlers","sortPriority","a","b","parseInt","priority","$ViewportMeta","ViewportMetaOriginal","ViewportMetaLocked","Win","this","Doc","Core","Version","Plugins","DontConflict","Conflicts","fn","$document","$body","fallbackWidth","fallbackHeight","userAgent","navigator","vendor","opera","isFirefox","test","isChrome","isSafari","isMobile","isIEMobile","isFirefoxMobile","file","File","FileList","FileReader","history","pushState","replaceState","matchMedia","msMatchMedia","pointer","cancelAnimationFrame","touch","DocumentTouch","killEvent","e","immediate","preventDefault","stopPropagation","stopImmediatePropagation","error","killGesture","lockViewport","plugin_namespace","ViewportLocks","isEmptyObject","ViewportLocked","length","attr","append","on","gestureChange","gestureStart","gestureEnd","unlockViewport","remove","off","timer","time","interval","clearTimer","setInterval","setTimeout","clearInterval","clearTimeout","sortAsc","sortDesc","decodeEntities","string","el","innerHTML","value","parseQueryString","url","params","parts","slice","indexOf","split","part","$Ready","Deferred","Classes","base","element","beforeUnload","blur","change","click","dblClick","drag","dragEnd","dragEnter","dragLeave","dragOver","dragStart","drop","focus","focusIn","focusOut","input","keyDown","keyPress","keyUp","load","mouseDown","mouseEnter","mouseLeave","mouseMove","mouseOut","mouseOver","mouseUp","panStart","pan","panEnd","resize","scaleStart","scaleEnd","scale","scroll","select","swipe","touchCancel","touchEnd","touchLeave","touchMove","touchStart","prototype","NoConflict","Ready","readyState","documentElement","doScroll","addEventListener","Plugin","settings","initialize","options","$element","count","hasOptions","args","Array","arguments","$targets","$postTargets","extend","defaults","eq","getData","guid","rawGuid","classes","locals","data","$el","numGuid","dotGuid","addClass","namespaceClean","methods","_construct","apply","concat","add","_postConstruct","destroy","functions","iterate","_destruct","removeClass","removeData","delegateWidget","method","_method","delegateUtility","utilities","_initialize","namespaceDash","m","p1","p2","toUpperCase","initialized","events","noop","_resize","_delegate","widget","push","sort","_raf","resolve","clickTouchStart"],"mappings":"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"}