{"version":3,"file":"ip.plugins.bundle.js","mappings":"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","sources":["webpack://industrienspension/./IP.Mockup/js/plugins/1.jquery.datepicker.picker.js","webpack://industrienspension/./IP.Mockup/js/plugins/2.jquery.datepicker.picker.date.js","webpack://industrienspension/./IP.Mockup/js/plugins/3.jquery.datepicker.picker.time.js","webpack://industrienspension/./IP.Mockup/js/plugins/4.jquery.datepicker.legacy.js","webpack://industrienspension/./IP.Mockup/js/plugins/5.jquery.datepicker.da_DK.js","webpack://industrienspension/./IP.Mockup/js/plugins/IP.ScrollEvent.js","webpack://industrienspension/./IP.Mockup/js/plugins/IP.Validation.js","webpack://industrienspension/./IP.Mockup/js/plugins/jquery.alertify.js","webpack://industrienspension/./IP.Mockup/js/plugins/jquery.cookieconsent.js","webpack://industrienspension/./IP.Mockup/js/plugins/jquery.fancybox.js","webpack://industrienspension/./IP.Mockup/js/plugins/jquery.hash.js","webpack://industrienspension/./IP.Mockup/js/plugins/jquery.headroom.js","webpack://industrienspension/./IP.Mockup/js/plugins/jquery.metadata.js","webpack://industrienspension/./IP.Mockup/js/plugins/jquery.placeholder.js","webpack://industrienspension/./IP.Mockup/js/plugins/jquery.rangeslider.js","webpack://industrienspension/./IP.Mockup/js/plugins/jquery.responsive-tables.js","webpack://industrienspension/./IP.Mockup/js/plugins/jquery.tools.js","webpack://industrienspension/./IP.Mockup/js/plugins/z.7.cleaver.js","webpack://industrienspension/./IP.Mockup/js/plugins/z.8.bootstrap-datepicker.js","webpack://industrienspension/./IP.Mockup/js/plugins/z.9.bootstrap-datepicker-range.js"],"sourcesContent":["/*!\r\n * pickadate.js v3.5.5, 2015/02/08\r\n * By Amsul, http://amsul.ca\r\n * Hosted on http://amsul.github.io/pickadate.js\r\n * Licensed under MIT\r\n * \r\n * Tilrettet af Csh pga. problemer med piletaster\r\n * line 29 -> https://github.com/amsul/pickadate.js/issues/634\r\n */ \r\n\r\n(function (factory) {\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd)\r\n define('picker', ['jquery'], factory)\r\n\r\n // Node.js/browserify.\r\n else if (typeof exports == 'object')\r\n module.exports = factory(require('jquery'))\r\n\r\n // Browser globals.\r\n else this.Picker = factory(jQuery)\r\n\r\n}(function ($) {\r\n\r\n var $window = $(window)\r\n var $document = $(document)\r\n var $html = $(document.documentElement)\r\n var supportsTransitions = function () { return document.body.style.transition != null; } //RETTET HER AF CSH.. ser kommentar øverst\r\n\r\n\r\n /**\r\n * The picker constructor that creates a blank picker.\r\n */\r\n function PickerConstructor(ELEMENT, NAME, COMPONENT, OPTIONS) {\r\n\r\n // If there’s no element, return the picker constructor.\r\n if (!ELEMENT) return PickerConstructor\r\n\r\n\r\n var\r\n IS_DEFAULT_THEME = false,\r\n\r\n\r\n // The state of the picker.\r\n STATE = {\r\n id: ELEMENT.id || 'P' + Math.abs(~~(Math.random() * new Date()))\r\n },\r\n\r\n\r\n // Merge the defaults and options passed.\r\n SETTINGS = COMPONENT ? $.extend(true, {}, COMPONENT.defaults, OPTIONS) : OPTIONS || {},\r\n\r\n\r\n // Merge the default classes with the settings classes.\r\n CLASSES = $.extend({}, PickerConstructor.klasses(), SETTINGS.klass),\r\n\r\n\r\n // The element node wrapper into a jQuery object.\r\n $ELEMENT = $(ELEMENT),\r\n\r\n\r\n // Pseudo picker constructor.\r\n PickerInstance = function () {\r\n return this.start()\r\n },\r\n\r\n\r\n // The picker prototype.\r\n P = PickerInstance.prototype = {\r\n\r\n constructor: PickerInstance,\r\n\r\n $node: $ELEMENT,\r\n\r\n\r\n /**\r\n * Initialize everything\r\n */\r\n start: function () {\r\n\r\n // If it’s already started, do nothing.\r\n if (STATE && STATE.start) return P\r\n\r\n\r\n // Update the picker states.\r\n STATE.methods = {}\r\n STATE.start = true\r\n STATE.open = false\r\n STATE.type = ELEMENT.type\r\n\r\n\r\n // Confirm focus state, convert into text input to remove UA stylings,\r\n // and set as readonly to prevent keyboard popup.\r\n ELEMENT.autofocus = ELEMENT == getActiveElement()\r\n ELEMENT.readOnly = !SETTINGS.editable\r\n ELEMENT.id = ELEMENT.id || STATE.id\r\n if (ELEMENT.type != 'text') {\r\n ELEMENT.type = 'text'\r\n }\r\n\r\n\r\n // Create a new picker component with the settings.\r\n P.component = new COMPONENT(P, SETTINGS)\r\n\r\n\r\n // Create the picker root and then prepare it.\r\n P.$root = $('
')\r\n prepareElementRoot()\r\n\r\n\r\n // Create the picker holder and then prepare it.\r\n P.$holder = $(createWrappedComponent()).appendTo(P.$root)\r\n prepareElementHolder()\r\n\r\n\r\n // If there’s a format for the hidden input element, create the element.\r\n if (SETTINGS.formatSubmit) {\r\n prepareElementHidden()\r\n }\r\n\r\n\r\n // Prepare the input element.\r\n prepareElement()\r\n\r\n\r\n // Insert the hidden input as specified in the settings.\r\n if (SETTINGS.containerHidden) $(SETTINGS.containerHidden).append(P._hidden)\r\n else $ELEMENT.after(P._hidden)\r\n\r\n\r\n // Insert the root as specified in the settings.\r\n if (SETTINGS.container) $(SETTINGS.container).append(P.$root)\r\n else $ELEMENT.after(P.$root)\r\n\r\n\r\n // Bind the default component and settings events.\r\n P.on({\r\n start: P.component.onStart,\r\n render: P.component.onRender,\r\n stop: P.component.onStop,\r\n open: P.component.onOpen,\r\n close: P.component.onClose,\r\n set: P.component.onSet\r\n }).on({\r\n start: SETTINGS.onStart,\r\n render: SETTINGS.onRender,\r\n stop: SETTINGS.onStop,\r\n open: SETTINGS.onOpen,\r\n close: SETTINGS.onClose,\r\n set: SETTINGS.onSet\r\n })\r\n\r\n\r\n // Once we’re all set, check the theme in use.\r\n IS_DEFAULT_THEME = isUsingDefaultTheme(P.$holder[0])\r\n\r\n\r\n // If the element has autofocus, open the picker.\r\n if (ELEMENT.autofocus) {\r\n P.open()\r\n }\r\n\r\n\r\n // Trigger queued the “start” and “render” events.\r\n return P.trigger('start').trigger('render')\r\n }, //start\r\n\r\n\r\n /**\r\n * Render a new picker\r\n */\r\n render: function (entireComponent) {\r\n\r\n // Insert a new component holder in the root or box.\r\n if (entireComponent) {\r\n P.$holder = createWrappedComponent()\r\n P.$root.html(P.$holder)\r\n }\r\n else P.$root.find('.' + CLASSES.box).html(P.component.nodes(STATE.open))\r\n\r\n // Trigger the queued “render” events.\r\n return P.trigger('render')\r\n }, //render\r\n\r\n\r\n /**\r\n * Destroy everything\r\n */\r\n stop: function () {\r\n\r\n // If it’s already stopped, do nothing.\r\n if (!STATE.start) return P\r\n\r\n // Then close the picker.\r\n P.close()\r\n\r\n // Remove the hidden field.\r\n if (P._hidden) {\r\n P._hidden.parentNode.removeChild(P._hidden)\r\n }\r\n\r\n // Remove the root.\r\n P.$root.remove()\r\n\r\n // Remove the input class, remove the stored data, and unbind\r\n // the events (after a tick for IE - see `P.close`).\r\n $ELEMENT.removeClass(CLASSES.input).removeData(NAME)\r\n setTimeout(function () {\r\n $ELEMENT.off('.' + STATE.id)\r\n }, 0)\r\n\r\n // Restore the element state\r\n ELEMENT.type = STATE.type\r\n ELEMENT.readOnly = false\r\n\r\n // Trigger the queued “stop” events.\r\n P.trigger('stop')\r\n\r\n // Reset the picker states.\r\n STATE.methods = {}\r\n STATE.start = false\r\n\r\n return P\r\n }, //stop\r\n\r\n\r\n /**\r\n * Open up the picker\r\n */\r\n open: function (dontGiveFocus) {\r\n\r\n // If it’s already open, do nothing.\r\n if (STATE.open) return P\r\n\r\n // Add the “active” class.\r\n $ELEMENT.addClass(CLASSES.active)\r\n aria(ELEMENT, 'expanded', true)\r\n\r\n // * A Firefox bug, when `html` has `overflow:hidden`, results in\r\n // killing transitions :(. So add the “opened” state on the next tick.\r\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\r\n setTimeout(function () {\r\n\r\n // Add the “opened” class to the picker root.\r\n P.$root.addClass(CLASSES.opened)\r\n aria(P.$root[0], 'hidden', false)\r\n\r\n }, 0)\r\n\r\n // If we have to give focus, bind the element and doc events.\r\n if (dontGiveFocus !== false) {\r\n\r\n // Set it as open.\r\n STATE.open = true\r\n\r\n // Prevent the page from scrolling.\r\n if (IS_DEFAULT_THEME) {\r\n $html.\r\n css('overflow', 'hidden').\r\n css('padding-right', '+=' + getScrollbarWidth())\r\n }\r\n\r\n // Pass focus to the root element’s jQuery object.\r\n focusPickerOnceOpened()\r\n\r\n // Bind the document events.\r\n $document.on('click.' + STATE.id + ' focusin.' + STATE.id, function (event) {\r\n\r\n var target = event.target\r\n\r\n // If the target of the event is not the element, close the picker picker.\r\n // * Don’t worry about clicks or focusins on the root because those don’t bubble up.\r\n // Also, for Firefox, a click on an `option` element bubbles up directly\r\n // to the doc. So make sure the target wasn't the doc.\r\n // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling,\r\n // which causes the picker to unexpectedly close when right-clicking it. So make\r\n // sure the event wasn’t a right-click.\r\n if (target != ELEMENT && target != document && event.which != 3) {\r\n\r\n // If the target was the holder that covers the screen,\r\n // keep the element focused to maintain tabindex.\r\n P.close(target === P.$holder[0])\r\n }\r\n\r\n }).on('keydown.' + STATE.id, function (event) {\r\n\r\n var\r\n // Get the keycode.\r\n keycode = event.keyCode,\r\n\r\n // Translate that to a selection change.\r\n keycodeToMove = P.component.key[keycode],\r\n\r\n // Grab the target.\r\n target = event.target\r\n\r\n\r\n // On escape, close the picker and give focus.\r\n if (keycode == 27) {\r\n P.close(true)\r\n }\r\n\r\n\r\n // Check if there is a key movement or “enter” keypress on the element.\r\n else if (target == P.$holder[0] && (keycodeToMove || keycode == 13)) {\r\n\r\n // Prevent the default action to stop page movement.\r\n event.preventDefault()\r\n\r\n // Trigger the key movement action.\r\n if (keycodeToMove) {\r\n PickerConstructor._.trigger(P.component.key.go, P, [PickerConstructor._.trigger(keycodeToMove)])\r\n }\r\n\r\n // On “enter”, if the highlighted item isn’t disabled, set the value and close.\r\n else if (!P.$root.find('.' + CLASSES.highlighted).hasClass(CLASSES.disabled)) {\r\n P.set('select', P.component.item.highlight)\r\n if (SETTINGS.closeOnSelect) {\r\n P.close(true)\r\n }\r\n }\r\n }\r\n\r\n\r\n // If the target is within the root and “enter” is pressed,\r\n // prevent the default action and trigger a click on the target instead.\r\n else if ($.contains(P.$root[0], target) && keycode == 13) {\r\n event.preventDefault()\r\n target.click()\r\n }\r\n })\r\n }\r\n\r\n // Trigger the queued “open” events.\r\n return P.trigger('open')\r\n }, //open\r\n\r\n\r\n /**\r\n * Close the picker\r\n */\r\n close: function (giveFocus) {\r\n\r\n // If we need to give focus, do it before changing states.\r\n if (giveFocus) {\r\n if (SETTINGS.editable) {\r\n ELEMENT.focus()\r\n }\r\n else {\r\n // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :|\r\n // The focus is triggered *after* the close has completed - causing it\r\n // to open again. So unbind and rebind the event at the next tick.\r\n P.$holder.off('focus.toOpen').focus()\r\n setTimeout(function () {\r\n P.$holder.on('focus.toOpen', handleFocusToOpenEvent)\r\n }, 0)\r\n }\r\n }\r\n\r\n // Remove the “active” class.\r\n $ELEMENT.removeClass(CLASSES.active)\r\n aria(ELEMENT, 'expanded', false)\r\n\r\n // * A Firefox bug, when `html` has `overflow:hidden`, results in\r\n // killing transitions :(. So remove the “opened” state on the next tick.\r\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\r\n setTimeout(function () {\r\n\r\n // Remove the “opened” and “focused” class from the picker root.\r\n P.$root.removeClass(CLASSES.opened + ' ' + CLASSES.focused)\r\n aria(P.$root[0], 'hidden', true)\r\n\r\n }, 0)\r\n\r\n // If it’s already closed, do nothing more.\r\n if (!STATE.open) return P\r\n\r\n // Set it as closed.\r\n STATE.open = false\r\n\r\n // Allow the page to scroll.\r\n if (IS_DEFAULT_THEME) {\r\n $html.\r\n css('overflow', '').\r\n css('padding-right', '-=' + getScrollbarWidth())\r\n }\r\n\r\n // Unbind the document events.\r\n $document.off('.' + STATE.id)\r\n\r\n // Trigger the queued “close” events.\r\n return P.trigger('close')\r\n }, //close\r\n\r\n\r\n /**\r\n * Clear the values\r\n */\r\n clear: function (options) {\r\n return P.set('clear', null, options)\r\n }, //clear\r\n\r\n\r\n /**\r\n * Set something\r\n */\r\n set: function (thing, value, options) {\r\n\r\n var thingItem, thingValue,\r\n thingIsObject = $.isPlainObject(thing),\r\n thingObject = thingIsObject ? thing : {}\r\n\r\n // Make sure we have usable options.\r\n options = thingIsObject && $.isPlainObject(value) ? value : options || {}\r\n\r\n if (thing) {\r\n\r\n // If the thing isn’t an object, make it one.\r\n if (!thingIsObject) {\r\n thingObject[thing] = value\r\n }\r\n\r\n // Go through the things of items to set.\r\n for (thingItem in thingObject) {\r\n\r\n // Grab the value of the thing.\r\n thingValue = thingObject[thingItem]\r\n\r\n // First, if the item exists and there’s a value, set it.\r\n if (thingItem in P.component.item) {\r\n if (thingValue === undefined) thingValue = null\r\n P.component.set(thingItem, thingValue, options)\r\n }\r\n\r\n // Then, check to update the element value and broadcast a change.\r\n if (thingItem == 'select' || thingItem == 'clear') {\r\n $ELEMENT.\r\n val(thingItem == 'clear' ? '' : P.get(thingItem, SETTINGS.format)).\r\n trigger('change')\r\n }\r\n }\r\n\r\n // Render a new picker.\r\n P.render()\r\n }\r\n\r\n // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`.\r\n return options.muted ? P : P.trigger('set', thingObject)\r\n }, //set\r\n\r\n\r\n /**\r\n * Get something\r\n */\r\n get: function (thing, format) {\r\n\r\n // Make sure there’s something to get.\r\n thing = thing || 'value'\r\n\r\n // If a picker state exists, return that.\r\n if (STATE[thing] != null) {\r\n return STATE[thing]\r\n }\r\n\r\n // Return the submission value, if that.\r\n if (thing == 'valueSubmit') {\r\n if (P._hidden) {\r\n return P._hidden.value\r\n }\r\n thing = 'value'\r\n }\r\n\r\n // Return the value, if that.\r\n if (thing == 'value') {\r\n return ELEMENT.value\r\n }\r\n\r\n // Check if a component item exists, return that.\r\n if (thing in P.component.item) {\r\n if (typeof format == 'string') {\r\n var thingValue = P.component.get(thing)\r\n return thingValue ?\r\n PickerConstructor._.trigger(\r\n P.component.formats.toString,\r\n P.component,\r\n [format, thingValue]\r\n ) : ''\r\n }\r\n return P.component.get(thing)\r\n }\r\n }, //get\r\n\r\n\r\n\r\n /**\r\n * Bind events on the things.\r\n */\r\n on: function (thing, method, internal) {\r\n\r\n var thingName, thingMethod,\r\n thingIsObject = $.isPlainObject(thing),\r\n thingObject = thingIsObject ? thing : {}\r\n\r\n if (thing) {\r\n\r\n // If the thing isn’t an object, make it one.\r\n if (!thingIsObject) {\r\n thingObject[thing] = method\r\n }\r\n\r\n // Go through the things to bind to.\r\n for (thingName in thingObject) {\r\n\r\n // Grab the method of the thing.\r\n thingMethod = thingObject[thingName]\r\n\r\n // If it was an internal binding, prefix it.\r\n if (internal) {\r\n thingName = '_' + thingName\r\n }\r\n\r\n // Make sure the thing methods collection exists.\r\n STATE.methods[thingName] = STATE.methods[thingName] || []\r\n\r\n // Add the method to the relative method collection.\r\n STATE.methods[thingName].push(thingMethod)\r\n }\r\n }\r\n\r\n return P\r\n }, //on\r\n\r\n\r\n\r\n /**\r\n * Unbind events on the things.\r\n */\r\n off: function () {\r\n var i, thingName,\r\n names = arguments;\r\n for (i = 0, namesCount = names.length; i < namesCount; i += 1) {\r\n thingName = names[i]\r\n if (thingName in STATE.methods) {\r\n delete STATE.methods[thingName]\r\n }\r\n }\r\n return P\r\n },\r\n\r\n\r\n /**\r\n * Fire off method events.\r\n */\r\n trigger: function (name, data) {\r\n var _trigger = function (name) {\r\n var methodList = STATE.methods[name]\r\n if (methodList) {\r\n methodList.map(function (method) {\r\n PickerConstructor._.trigger(method, P, [data])\r\n })\r\n }\r\n }\r\n _trigger('_' + name)\r\n _trigger(name)\r\n return P\r\n } //trigger\r\n } //PickerInstance.prototype\r\n\r\n\r\n /**\r\n * Wrap the picker holder components together.\r\n */\r\n function createWrappedComponent() {\r\n\r\n // Create a picker wrapper holder\r\n return PickerConstructor._.node('div',\r\n\r\n // Create a picker wrapper node\r\n PickerConstructor._.node('div',\r\n\r\n // Create a picker frame\r\n PickerConstructor._.node('div',\r\n\r\n // Create a picker box node\r\n PickerConstructor._.node('div',\r\n\r\n // Create the components nodes.\r\n P.component.nodes(STATE.open),\r\n\r\n // The picker box class\r\n CLASSES.box\r\n ),\r\n\r\n // Picker wrap class\r\n CLASSES.wrap\r\n ),\r\n\r\n // Picker frame class\r\n CLASSES.frame\r\n ),\r\n\r\n // Picker holder class\r\n CLASSES.holder,\r\n\r\n 'tabindex=\"-1\"'\r\n ) //endreturn\r\n } //createWrappedComponent\r\n\r\n\r\n\r\n /**\r\n * Prepare the input element with all bindings.\r\n */\r\n function prepareElement() {\r\n\r\n $ELEMENT.\r\n\r\n // Store the picker data by component name.\r\n data(NAME, P).\r\n\r\n // Add the “input” class name.\r\n addClass(CLASSES.input).\r\n\r\n // If there’s a `data-value`, update the value of the element.\r\n val($ELEMENT.data('value') ?\r\n P.get('select', SETTINGS.format) :\r\n ELEMENT.value\r\n )\r\n\r\n\r\n // Only bind keydown events if the element isn’t editable.\r\n if (!SETTINGS.editable) {\r\n\r\n $ELEMENT.\r\n\r\n // On focus/click, open the picker.\r\n on('focus.' + STATE.id + ' click.' + STATE.id, function (event) {\r\n event.preventDefault()\r\n P.open()\r\n }).\r\n\r\n // Handle keyboard event based on the picker being opened or not.\r\n on('keydown.' + STATE.id, handleKeydownEvent)\r\n }\r\n\r\n\r\n // Update the aria attributes.\r\n aria(ELEMENT, {\r\n haspopup: true,\r\n expanded: false,\r\n readonly: false,\r\n owns: ELEMENT.id + '_root'\r\n })\r\n }\r\n\r\n\r\n /**\r\n * Prepare the root picker element with all bindings.\r\n */\r\n function prepareElementRoot() {\r\n aria(P.$root[0], 'hidden', true)\r\n }\r\n\r\n\r\n /**\r\n * Prepare the holder picker element with all bindings.\r\n */\r\n function prepareElementHolder() {\r\n\r\n P.$holder.\r\n\r\n on({\r\n\r\n // For iOS8.\r\n keydown: handleKeydownEvent,\r\n\r\n 'focus.toOpen': handleFocusToOpenEvent,\r\n\r\n blur: function () {\r\n // Remove the “target” class.\r\n $ELEMENT.removeClass(CLASSES.target)\r\n },\r\n\r\n // When something within the holder is focused, stop from bubbling\r\n // to the doc and remove the “focused” state from the root.\r\n focusin: function (event) {\r\n P.$root.removeClass(CLASSES.focused)\r\n event.stopPropagation()\r\n },\r\n\r\n // When something within the holder is clicked, stop it\r\n // from bubbling to the doc.\r\n 'mousedown click': function (event) {\r\n\r\n var target = event.target\r\n\r\n // Make sure the target isn’t the root holder so it can bubble up.\r\n if (target != P.$holder[0]) {\r\n\r\n event.stopPropagation()\r\n\r\n // * For mousedown events, cancel the default action in order to\r\n // prevent cases where focus is shifted onto external elements\r\n // when using things like jQuery mobile or MagnificPopup (ref: #249 & #120).\r\n // Also, for Firefox, don’t prevent action on the `option` element.\r\n if (event.type == 'mousedown' && !$(target).is('input, select, textarea, button, option')) {\r\n\r\n event.preventDefault()\r\n\r\n // Re-focus onto the holder so that users can click away\r\n // from elements focused within the picker.\r\n P.$holder[0].focus()\r\n }\r\n }\r\n }\r\n\r\n }).\r\n\r\n // If there’s a click on an actionable element, carry out the actions.\r\n on('click', '[data-pick], [data-nav], [data-clear], [data-close]', function () {\r\n\r\n var $target = $(this),\r\n targetData = $target.data(),\r\n targetDisabled = $target.hasClass(CLASSES.navDisabled) || $target.hasClass(CLASSES.disabled),\r\n\r\n // * For IE, non-focusable elements can be active elements as well\r\n // (http://stackoverflow.com/a/2684561).\r\n activeElement = getActiveElement()\r\n activeElement = activeElement && (activeElement.type || activeElement.href)\r\n\r\n // If it’s disabled or nothing inside is actively focused, re-focus the element.\r\n if (targetDisabled || activeElement && !$.contains(P.$root[0], activeElement)) {\r\n P.$holder[0].focus()\r\n }\r\n\r\n // If something is superficially changed, update the `highlight` based on the `nav`.\r\n if (!targetDisabled && targetData.nav) {\r\n P.set('highlight', P.component.item.highlight, { nav: targetData.nav })\r\n }\r\n\r\n // If something is picked, set `select` then close with focus.\r\n else if (!targetDisabled && 'pick' in targetData) {\r\n P.set('select', targetData.pick)\r\n if (SETTINGS.closeOnSelect) {\r\n P.close(true)\r\n }\r\n }\r\n\r\n // If a “clear” button is pressed, empty the values and close with focus.\r\n else if (targetData.clear) {\r\n P.clear()\r\n if (SETTINGS.closeOnClear) {\r\n P.close(true)\r\n }\r\n }\r\n\r\n else if (targetData.close) {\r\n P.close(true)\r\n }\r\n\r\n }) //P.$holder\r\n\r\n }\r\n\r\n\r\n /**\r\n * Prepare the hidden input element along with all bindings.\r\n */\r\n function prepareElementHidden() {\r\n\r\n var name\r\n\r\n if (SETTINGS.hiddenName === true) {\r\n name = ELEMENT.name\r\n ELEMENT.name = ''\r\n }\r\n else {\r\n name = [\r\n typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '',\r\n typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit'\r\n ]\r\n name = name[0] + ELEMENT.name + name[1]\r\n }\r\n\r\n P._hidden = $(\r\n ''\r\n )[0]\r\n\r\n $ELEMENT.\r\n\r\n // If the value changes, update the hidden input with the correct format.\r\n on('change.' + STATE.id, function () {\r\n P._hidden.value = ELEMENT.value ?\r\n P.get('select', SETTINGS.formatSubmit) :\r\n ''\r\n })\r\n }\r\n\r\n\r\n // Wait for transitions to end before focusing the holder. Otherwise, while\r\n // using the `container` option, the view jumps to the container.\r\n function focusPickerOnceOpened() {\r\n\r\n if (IS_DEFAULT_THEME && supportsTransitions) {\r\n P.$holder.find('.' + CLASSES.frame).one('transitionend', function () {\r\n P.$holder[0].focus()\r\n })\r\n }\r\n else {\r\n P.$holder[0].focus()\r\n }\r\n }\r\n\r\n\r\n function handleFocusToOpenEvent(event) {\r\n\r\n // Stop the event from propagating to the doc.\r\n event.stopPropagation()\r\n\r\n // Add the “target” class.\r\n $ELEMENT.addClass(CLASSES.target)\r\n\r\n // Add the “focused” class to the root.\r\n P.$root.addClass(CLASSES.focused)\r\n\r\n // And then finally open the picker.\r\n P.open()\r\n }\r\n\r\n\r\n // For iOS8.\r\n function handleKeydownEvent(event) {\r\n\r\n var keycode = event.keyCode,\r\n\r\n // Check if one of the delete keys was pressed.\r\n isKeycodeDelete = /^(8|46)$/.test(keycode)\r\n\r\n // For some reason IE clears the input value on “escape”.\r\n if (keycode == 27) {\r\n P.close(true)\r\n return false\r\n }\r\n\r\n // Check if `space` or `delete` was pressed or the picker is closed with a key movement.\r\n if (keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[keycode]) {\r\n\r\n // Prevent it from moving the page and bubbling to doc.\r\n event.preventDefault()\r\n event.stopPropagation()\r\n\r\n // If `delete` was pressed, clear the values and close the picker.\r\n // Otherwise open the picker.\r\n if (isKeycodeDelete) { P.clear().close() }\r\n else { P.open() }\r\n }\r\n }\r\n\r\n\r\n // Return a new picker instance.\r\n return new PickerInstance()\r\n } //PickerConstructor\r\n\r\n\r\n\r\n /**\r\n * The default classes and prefix to use for the HTML classes.\r\n */\r\n PickerConstructor.klasses = function (prefix) {\r\n prefix = prefix || 'picker'\r\n return {\r\n\r\n picker: prefix,\r\n opened: prefix + '--opened',\r\n focused: prefix + '--focused',\r\n\r\n input: prefix + '__input',\r\n active: prefix + '__input--active',\r\n target: prefix + '__input--target',\r\n\r\n holder: prefix + '__holder',\r\n\r\n frame: prefix + '__frame',\r\n wrap: prefix + '__wrap',\r\n\r\n box: prefix + '__box'\r\n }\r\n } //PickerConstructor.klasses\r\n\r\n\r\n\r\n /**\r\n * Check if the default theme is being used.\r\n */\r\n function isUsingDefaultTheme(element) {\r\n\r\n var theme,\r\n prop = 'position'\r\n\r\n // For IE.\r\n if (element.currentStyle) {\r\n theme = element.currentStyle[prop]\r\n }\r\n\r\n // For normal browsers.\r\n else if (window.getComputedStyle) {\r\n theme = getComputedStyle(element)[prop]\r\n }\r\n\r\n return theme == 'fixed'\r\n }\r\n\r\n\r\n\r\n /**\r\n * Get the width of the browser’s scrollbar.\r\n * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js\r\n */\r\n function getScrollbarWidth() {\r\n\r\n if ($html.height() <= $window.height()) {\r\n return 0\r\n }\r\n\r\n var $outer = $('
').\r\n appendTo('body')\r\n\r\n // Get the width without scrollbars.\r\n var widthWithoutScroll = $outer[0].offsetWidth\r\n\r\n // Force adding scrollbars.\r\n $outer.css('overflow', 'scroll')\r\n\r\n // Add the inner div.\r\n var $inner = $('
').appendTo($outer)\r\n\r\n // Get the width with scrollbars.\r\n var widthWithScroll = $inner[0].offsetWidth\r\n\r\n // Remove the divs.\r\n $outer.remove()\r\n\r\n // Return the difference between the widths.\r\n return widthWithoutScroll - widthWithScroll\r\n }\r\n\r\n\r\n\r\n /**\r\n * PickerConstructor helper methods.\r\n */\r\n PickerConstructor._ = {\r\n\r\n /**\r\n * Create a group of nodes. Expects:\r\n * `\r\n {\r\n min: {Integer},\r\n max: {Integer},\r\n i: {Integer},\r\n node: {String},\r\n item: {Function}\r\n }\r\n * `\r\n */\r\n group: function (groupObject) {\r\n\r\n var\r\n // Scope for the looped object\r\n loopObjectScope,\r\n\r\n // Create the nodes list\r\n nodesList = '',\r\n\r\n // The counter starts from the `min`\r\n counter = PickerConstructor._.trigger(groupObject.min, groupObject)\r\n\r\n\r\n // Loop from the `min` to `max`, incrementing by `i`\r\n for (; counter <= PickerConstructor._.trigger(groupObject.max, groupObject, [counter]) ; counter += groupObject.i) {\r\n\r\n // Trigger the `item` function within scope of the object\r\n loopObjectScope = PickerConstructor._.trigger(groupObject.item, groupObject, [counter])\r\n\r\n // Splice the subgroup and create nodes out of the sub nodes\r\n nodesList += PickerConstructor._.node(\r\n groupObject.node,\r\n loopObjectScope[0], // the node\r\n loopObjectScope[1], // the classes\r\n loopObjectScope[2] // the attributes\r\n )\r\n }\r\n\r\n // Return the list of nodes\r\n return nodesList\r\n }, //group\r\n\r\n\r\n /**\r\n * Create a dom node string\r\n */\r\n node: function (wrapper, item, klass, attribute) {\r\n\r\n // If the item is false-y, just return an empty string\r\n if (!item) return ''\r\n\r\n // If the item is an array, do a join\r\n item = $.isArray(item) ? item.join('') : item\r\n\r\n // Check for the class\r\n klass = klass ? ' class=\"' + klass + '\"' : ''\r\n\r\n // Check for any attributes\r\n attribute = attribute ? ' ' + attribute : ''\r\n\r\n // Return the wrapped item\r\n return '<' + wrapper + klass + attribute + '>' + item + ''\r\n }, //node\r\n\r\n\r\n /**\r\n * Lead numbers below 10 with a zero.\r\n */\r\n lead: function (number) {\r\n return (number < 10 ? '0' : '') + number\r\n },\r\n\r\n\r\n /**\r\n * Trigger a function otherwise return the value.\r\n */\r\n trigger: function (callback, scope, args) {\r\n return typeof callback == 'function' ? callback.apply(scope, args || []) : callback\r\n },\r\n\r\n\r\n /**\r\n * If the second character is a digit, length is 2 otherwise 1.\r\n */\r\n digits: function (string) {\r\n return (/\\d/).test(string[1]) ? 2 : 1\r\n },\r\n\r\n\r\n /**\r\n * Tell if something is a date object.\r\n */\r\n isDate: function (value) {\r\n return {}.toString.call(value).indexOf('Date') > -1 && this.isInteger(value.getDate())\r\n },\r\n\r\n\r\n /**\r\n * Tell if something is an integer.\r\n */\r\n isInteger: function (value) {\r\n return {}.toString.call(value).indexOf('Number') > -1 && value % 1 === 0\r\n },\r\n\r\n\r\n /**\r\n * Create ARIA attribute strings.\r\n */\r\n ariaAttr: ariaAttr\r\n } //PickerConstructor._\r\n\r\n\r\n\r\n /**\r\n * Extend the picker with a component and defaults.\r\n */\r\n PickerConstructor.extend = function (name, Component) {\r\n\r\n // Extend jQuery.\r\n $.fn[name] = function (options, action) {\r\n\r\n // Grab the component data.\r\n var componentData = this.data(name)\r\n\r\n // If the picker is requested, return the data object.\r\n if (options == 'picker') {\r\n return componentData\r\n }\r\n\r\n // If the component data exists and `options` is a string, carry out the action.\r\n if (componentData && typeof options == 'string') {\r\n return PickerConstructor._.trigger(componentData[options], componentData, [action])\r\n }\r\n\r\n // Otherwise go through each matched element and if the component\r\n // doesn’t exist, create a new picker using `this` element\r\n // and merging the defaults and options with a deep copy.\r\n return this.each(function () {\r\n var $this = $(this)\r\n if (!$this.data(name)) {\r\n new PickerConstructor(this, name, Component, options)\r\n }\r\n })\r\n }\r\n\r\n // Set the defaults.\r\n $.fn[name].defaults = Component.defaults\r\n } //PickerConstructor.extend\r\n\r\n\r\n\r\n function aria(element, attribute, value) {\r\n if ($.isPlainObject(attribute)) {\r\n for (var key in attribute) {\r\n ariaSet(element, key, attribute[key])\r\n }\r\n }\r\n else {\r\n ariaSet(element, attribute, value)\r\n }\r\n }\r\n function ariaSet(element, attribute, value) {\r\n element.setAttribute(\r\n (attribute == 'role' ? '' : 'aria-') + attribute,\r\n value\r\n )\r\n }\r\n function ariaAttr(attribute, data) {\r\n if (!$.isPlainObject(attribute)) {\r\n attribute = { attribute: data }\r\n }\r\n data = ''\r\n for (var key in attribute) {\r\n var attr = (key == 'role' ? '' : 'aria-') + key,\r\n attrVal = attribute[key]\r\n data += attrVal == null ? '' : attr + '=\"' + attribute[key] + '\"'\r\n }\r\n return data\r\n }\r\n\r\n // IE8 bug throws an error for activeElements within iframes.\r\n function getActiveElement() {\r\n try {\r\n return document.activeElement\r\n } catch (err) { }\r\n }\r\n\r\n\r\n\r\n // Expose the picker constructor.\r\n return PickerConstructor\r\n\r\n\r\n}));\r\n\r\n\r\n\r\n","/*!\n * Date picker for pickadate.js v3.5.5\n * http://amsul.github.io/pickadate.js/date.htm\n */\n\n(function (factory) {\n\n // AMD.\n if (typeof define == 'function' && define.amd)\n define(['picker', 'jquery'], factory)\n\n // Node.js/browserify.\n else if (typeof exports == 'object')\n module.exports = factory(require('./picker.js'), require('jquery'))\n\n // Browser globals.\n else factory(Picker, jQuery)\r\n\n}(function (Picker, $) {\n\n\n /**\n * Globals and constants\n */\n var DAYS_IN_WEEK = 7,\n WEEKS_IN_CALENDAR = 6,\n _ = Picker._\n\n\n\n /**\n * The date picker constructor\n */\n function DatePicker(picker, settings) {\r\n\n var calendar = this,\n element = picker.$node[0],\n elementValue = element.value,\n elementDataValue = picker.$node.data('value'),\n valueString = elementDataValue || elementValue,\n formatString = elementDataValue ? settings.formatSubmit : settings.format,\n isRTL = function () {\r\n\n return element.currentStyle ?\n\n // For IE.\n element.currentStyle.direction == 'rtl' :\n\n // For normal browsers.\n getComputedStyle(picker.$root[0]).direction == 'rtl'\r\n }\n\n calendar.settings = settings\n calendar.$node = picker.$node\n\n // The queue of methods that will be used to build item objects.\n calendar.queue = {\r\n min: 'measure create',\n max: 'measure create',\n now: 'now create',\n select: 'parse create validate',\n highlight: 'parse navigate create validate',\n view: 'parse create validate viewset',\n disable: 'deactivate',\n enable: 'activate'\r\n }\n\n // The component's item object.\n calendar.item = {}\n\n calendar.item.clear = null\n calendar.item.disable = (settings.disable || []).slice(0)\n calendar.item.enable = -(function (collectionDisabled) {\r\n return collectionDisabled[0] === true ? collectionDisabled.shift() : -1\r\n })(calendar.item.disable)\n\n calendar.\n set('min', settings.min).\n set('max', settings.max).\n set('now')\n\n // When there’s a value, set the `select`, which in turn\n // also sets the `highlight` and `view`.\n if (valueString) {\r\n calendar.set('select', valueString, {\r\n format: formatString,\n defaultValue: true\r\n })\r\n }\n\n // If there’s no value, default to highlighting “today”.\n else {\r\n calendar.\n set('select', null).\n set('highlight', calendar.item.now)\r\n }\n\n\n // The keycode to movement mapping.\n calendar.key = {\r\n 40: 7, // Down\n 38: -7, // Up\n 39: function () { return isRTL() ? -1 : 1 }, // Right\n 37: function () { return isRTL() ? 1 : -1 }, // Left\n go: function (timeChange) {\r\n var highlightedObject = calendar.item.highlight,\n targetDate = new Date(highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange)\n calendar.set(\n 'highlight',\n targetDate,\n { interval: timeChange }\n )\n this.render()\r\n }\r\n }\n\n\n // Bind some picker events.\n picker.\n on('render', function () {\r\n picker.$root.find('.' + settings.klass.selectMonth).on('change', function () {\r\n var value = this.value\n if (value) {\r\n picker.set('highlight', [picker.get('view').year, value, picker.get('highlight').date])\n picker.$root.find('.' + settings.klass.selectMonth).trigger('focus')\r\n }\r\n })\n picker.$root.find('.' + settings.klass.selectYear).on('change', function () {\r\n var value = this.value\n if (value) {\r\n picker.set('highlight', [value, picker.get('view').month, picker.get('highlight').date])\n picker.$root.find('.' + settings.klass.selectYear).trigger('focus')\r\n }\r\n })\r\n }, 1).\n on('open', function () {\r\n var includeToday = ''\n if (calendar.disabled(calendar.get('now'))) {\r\n includeToday = ':not(.' + settings.klass.buttonToday + ')'\r\n }\n picker.$root.find('button' + includeToday + ', select').attr('disabled', false)\r\n }, 1).\n on('close', function () {\r\n picker.$root.find('button, select').attr('disabled', true)\r\n }, 1)\r\n\n } //DatePicker\n\n\n /**\n * Set a datepicker item object.\n */\n DatePicker.prototype.set = function (type, value, options) {\r\n\n var calendar = this,\n calendarItem = calendar.item\n\n // If the value is `null` just set it immediately.\n if (value === null) {\r\n if (type == 'clear') type = 'select'\n calendarItem[type] = value\n return calendar\r\n }\n\n // Otherwise go through the queue of methods, and invoke the functions.\n // Update this as the time unit, and set the final value as this item.\n // * In the case of `enable`, keep the queue but set `disable` instead.\n // And in the case of `flip`, keep the queue but set `enable` instead.\n calendarItem[(type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type)] = calendar.queue[type].split(' ').map(function (method) {\r\n value = calendar[method](type, value, options)\n return value\r\n }).pop()\n\n // Check if we need to cascade through more updates.\n if (type == 'select') {\r\n calendar.set('highlight', calendarItem.select, options)\r\n }\n else if (type == 'highlight') {\r\n calendar.set('view', calendarItem.highlight, options)\r\n }\n else if (type.match(/^(flip|min|max|disable|enable)$/)) {\r\n if (calendarItem.select && calendar.disabled(calendarItem.select)) {\r\n calendar.set('select', calendarItem.select, options)\r\n }\n if (calendarItem.highlight && calendar.disabled(calendarItem.highlight)) {\r\n calendar.set('highlight', calendarItem.highlight, options)\r\n }\r\n }\n\n return calendar\r\n } //DatePicker.prototype.set\n\n\n /**\n * Get a datepicker item object.\n */\n DatePicker.prototype.get = function (type) {\r\n return this.item[type]\r\n } //DatePicker.prototype.get\n\n\n /**\n * Create a picker date object.\n */\n DatePicker.prototype.create = function (type, value, options) {\r\n\n var isInfiniteValue,\n calendar = this\n\n // If there’s no value, use the type as the value.\n value = value === undefined ? type : value\n\n\n // If it’s infinity, update the value.\n if (value == -Infinity || value == Infinity) {\r\n isInfiniteValue = value\r\n }\n\n // If it’s an object, use the native date object.\n else if ($.isPlainObject(value) && _.isInteger(value.pick)) {\r\n value = value.obj\r\n }\n\n // If it’s an array, convert it into a date and make sure\n // that it’s a valid date – otherwise default to today.\n else if ($.isArray(value)) {\r\n value = new Date(value[0], value[1], value[2])\n value = _.isDate(value) ? value : calendar.create().obj\r\n }\n\n // If it’s a number or date object, make a normalized date.\n else if (_.isInteger(value) || _.isDate(value)) {\r\n value = calendar.normalize(new Date(value), options)\r\n }\n\n // If it’s a literal true or any other case, set it to now.\n else /*if ( value === true )*/ {\r\n value = calendar.now(type, value, options)\r\n }\n\n // Return the compiled object.\n return {\r\n year: isInfiniteValue || value.getFullYear(),\n month: isInfiniteValue || value.getMonth(),\n date: isInfiniteValue || value.getDate(),\n day: isInfiniteValue || value.getDay(),\n obj: isInfiniteValue || value,\n pick: isInfiniteValue || value.getTime()\r\n }\r\n } //DatePicker.prototype.create\n\n\n /**\n * Create a range limit object using an array, date object,\n * literal “true”, or integer relative to another time.\n */\n DatePicker.prototype.createRange = function (from, to) {\r\n\n var calendar = this,\n createDate = function (date) {\r\n if (date === true || $.isArray(date) || _.isDate(date)) {\r\n return calendar.create(date)\r\n }\n return date\r\n }\n\n // Create objects if possible.\n if (!_.isInteger(from)) {\r\n from = createDate(from)\r\n }\n if (!_.isInteger(to)) {\r\n to = createDate(to)\r\n }\n\n // Create relative dates.\n if (_.isInteger(from) && $.isPlainObject(to)) {\r\n from = [to.year, to.month, to.date + from];\r\n }\n else if (_.isInteger(to) && $.isPlainObject(from)) {\r\n to = [from.year, from.month, from.date + to];\r\n }\n\n return {\r\n from: createDate(from),\n to: createDate(to)\r\n }\r\n } //DatePicker.prototype.createRange\n\n\n /**\n * Check if a date unit falls within a date range object.\n */\n DatePicker.prototype.withinRange = function (range, dateUnit) {\r\n range = this.createRange(range.from, range.to)\n return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick\r\n }\n\n\n /**\n * Check if two date range objects overlap.\n */\n DatePicker.prototype.overlapRanges = function (one, two) {\r\n\n var calendar = this\n\n // Convert the ranges into comparable dates.\n one = calendar.createRange(one.from, one.to)\n two = calendar.createRange(two.from, two.to)\n\n return calendar.withinRange(one, two.from) || calendar.withinRange(one, two.to) ||\n calendar.withinRange(two, one.from) || calendar.withinRange(two, one.to)\r\n }\n\n\n /**\n * Get the date today.\n */\n DatePicker.prototype.now = function (type, value, options) {\r\n value = new Date()\n if (options && options.rel) {\r\n value.setDate(value.getDate() + options.rel)\r\n }\n return this.normalize(value, options)\r\n }\n\n\n /**\n * Navigate to next/prev month.\n */\n DatePicker.prototype.navigate = function (type, value, options) {\r\n\n var targetDateObject,\n targetYear,\n targetMonth,\n targetDate,\n isTargetArray = $.isArray(value),\n isTargetObject = $.isPlainObject(value),\n viewsetObject = this.item.view/*,\n safety = 100*/\n\n\n if (isTargetArray || isTargetObject) {\r\n\n if (isTargetObject) {\r\n targetYear = value.year\n targetMonth = value.month\n targetDate = value.date\r\n }\n else {\r\n targetYear = +value[0]\n targetMonth = +value[1]\n targetDate = +value[2]\r\n }\n\n // If we’re navigating months but the view is in a different\n // month, navigate to the view’s year and month.\n if (options && options.nav && viewsetObject && viewsetObject.month !== targetMonth) {\r\n targetYear = viewsetObject.year\n targetMonth = viewsetObject.month\r\n }\n\n // Figure out the expected target year and month.\n targetDateObject = new Date(targetYear, targetMonth + (options && options.nav ? options.nav : 0), 1)\n targetYear = targetDateObject.getFullYear()\n targetMonth = targetDateObject.getMonth()\n\n // If the month we’re going to doesn’t have enough days,\n // keep decreasing the date until we reach the month’s last date.\n while ( /*safety &&*/ new Date(targetYear, targetMonth, targetDate).getMonth() !== targetMonth) {\r\n targetDate -= 1\n /*safety -= 1\n if ( !safety ) {\n throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.'\n }*/\r\n }\n\n value = [targetYear, targetMonth, targetDate]\r\n }\n\n return value\r\n } //DatePicker.prototype.navigate\n\n\n /**\n * Normalize a date by setting the hours to midnight.\n */\n DatePicker.prototype.normalize = function (value/*, options*/) {\r\n value.setHours(0, 0, 0, 0)\n return value\r\n }\n\n\n /**\n * Measure the range of dates.\n */\n DatePicker.prototype.measure = function (type, value/*, options*/) {\r\n\n var calendar = this\n\n // If it’s anything false-y, remove the limits.\n if (!value) {\r\n value = type == 'min' ? -Infinity : Infinity\r\n }\n\n // If it’s a string, parse it.\n else if (typeof value == 'string') {\r\n value = calendar.parse(type, value)\r\n }\n\n // If it's an integer, get a date relative to today.\n else if (_.isInteger(value)) {\r\n value = calendar.now(type, value, { rel: value })\r\n }\n\n return value\r\n } ///DatePicker.prototype.measure\n\n\n /**\n * Create a viewset object based on navigation.\n */\n DatePicker.prototype.viewset = function (type, dateObject/*, options*/) {\r\n return this.create([dateObject.year, dateObject.month, 1])\r\n }\n\n\n /**\n * Validate a date as enabled and shift if needed.\n */\n DatePicker.prototype.validate = function (type, dateObject, options) {\r\n\n var calendar = this,\n\n // Keep a reference to the original date.\n originalDateObject = dateObject,\n\n // Make sure we have an interval.\n interval = options && options.interval ? options.interval : 1,\n\n // Check if the calendar enabled dates are inverted.\n isFlippedBase = calendar.item.enable === -1,\n\n // Check if we have any enabled dates after/before now.\n hasEnabledBeforeTarget, hasEnabledAfterTarget,\n\n // The min & max limits.\n minLimitObject = calendar.item.min,\n maxLimitObject = calendar.item.max,\n\n // Check if we’ve reached the limit during shifting.\n reachedMin, reachedMax,\n\n // Check if the calendar is inverted and at least one weekday is enabled.\n hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter(function (value) {\n\n // If there’s a date, check where it is relative to the target.\n if ($.isArray(value)) {\r\n var dateTime = calendar.create(value).pick\n if (dateTime < dateObject.pick) hasEnabledBeforeTarget = true\n else if (dateTime > dateObject.pick) hasEnabledAfterTarget = true\r\n }\n\n // Return only integers for enabled weekdays.\n return _.isInteger(value)\r\n }).length/*,\n\n safety = 100*/\n\n\n\n // Cases to validate for:\n // [1] Not inverted and date disabled.\n // [2] Inverted and some dates enabled.\n // [3] Not inverted and out of range.\n //\n // Cases to **not** validate for:\n // • Navigating months.\n // • Not inverted and date enabled.\n // • Inverted and all dates disabled.\n // • ..and anything else.\n if (!options || (!options.nav && !options.defaultValue)) if (\n /* 1 */ (!isFlippedBase && calendar.disabled(dateObject)) ||\n /* 2 */ (isFlippedBase && calendar.disabled(dateObject) && (hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget)) ||\n /* 3 */ (!isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick))\n ) {\n\n\n // When inverted, flip the direction if there aren’t any enabled weekdays\n // and there are no enabled dates in the direction of the interval.\n if (isFlippedBase && !hasEnabledWeekdays && ((!hasEnabledAfterTarget && interval > 0) || (!hasEnabledBeforeTarget && interval < 0))) {\r\n interval *= -1\r\n }\n\n\n // Keep looping until we reach an enabled date.\n while ( /*safety &&*/ calendar.disabled(dateObject)) {\n\n /*safety -= 1\n if ( !safety ) {\n throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.'\n }*/\n\n\n // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval.\n if (Math.abs(interval) > 1 && (dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month)) {\r\n dateObject = originalDateObject\n interval = interval > 0 ? 1 : -1\r\n }\n\n\n // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit.\n if (dateObject.pick <= minLimitObject.pick) {\r\n reachedMin = true\n interval = 1\n dateObject = calendar.create([\n minLimitObject.year,\n minLimitObject.month,\n minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1)\n ])\r\n }\n else if (dateObject.pick >= maxLimitObject.pick) {\r\n reachedMax = true\n interval = -1\n dateObject = calendar.create([\n maxLimitObject.year,\n maxLimitObject.month,\n maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1)\n ])\r\n }\n\n\n // If we’ve reached both limits, just break out of the loop.\n if (reachedMin && reachedMax) {\r\n break\r\n }\n\n\n // Finally, create the shifted date using the interval and keep looping.\n dateObject = calendar.create([dateObject.year, dateObject.month, dateObject.date + interval])\r\n }\r\n\n } //endif\n\n\n // Return the date object settled on.\n return dateObject\r\n } //DatePicker.prototype.validate\n\n\n /**\n * Check if a date is disabled.\n */\n DatePicker.prototype.disabled = function (dateToVerify) {\r\n\n var\n calendar = this,\n\n // Filter through the disabled dates to check if this is one.\n isDisabledMatch = calendar.item.disable.filter(function (dateToDisable) {\n\n // If the date is a number, match the weekday with 0index and `firstDay` check.\n if (_.isInteger(dateToDisable)) {\r\n return dateToVerify.day === (calendar.settings.firstDay ? dateToDisable : dateToDisable - 1) % 7\r\n }\n\n // If it’s an array or a native JS date, create and match the exact date.\n if ($.isArray(dateToDisable) || _.isDate(dateToDisable)) {\r\n return dateToVerify.pick === calendar.create(dateToDisable).pick\r\n }\n\n // If it’s an object, match a date within the “from” and “to” range.\n if ($.isPlainObject(dateToDisable)) {\r\n return calendar.withinRange(dateToDisable, dateToVerify)\r\n }\r\n })\n\n // If this date matches a disabled date, confirm it’s not inverted.\n isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function (dateToDisable) {\r\n return $.isArray(dateToDisable) && dateToDisable[3] == 'inverted' ||\n $.isPlainObject(dateToDisable) && dateToDisable.inverted\r\n }).length\n\n // Check the calendar “enabled” flag and respectively flip the\n // disabled state. Then also check if it’s beyond the min/max limits.\n return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||\n dateToVerify.pick < calendar.item.min.pick ||\n dateToVerify.pick > calendar.item.max.pick\r\n\n } //DatePicker.prototype.disabled\n\n\n /**\n * Parse a string into a usable type.\n */\n DatePicker.prototype.parse = function (type, value, options) {\r\n\n var calendar = this,\n parsingObject = {}\n\n // If it’s already parsed, we’re good.\n if (!value || typeof value != 'string') {\r\n return value\r\n }\n\n // We need a `.format` to parse the value with.\n if (!(options && options.format)) {\r\n options = options || {}\n options.format = calendar.settings.format\r\n }\n\n // Convert the format into an array and then map through it.\n calendar.formats.toArray(options.format).map(function (label) {\r\n\n var\n // Grab the formatting label.\n formattingLabel = calendar.formats[label],\n\n // The format length is from the formatting label function or the\n // label length without the escaping exclamation (!) mark.\n formatLength = formattingLabel ? _.trigger(formattingLabel, calendar, [value, parsingObject]) : label.replace(/^!/, '').length\n\n // If there's a format label, split the value up to the format length.\n // Then add it to the parsing object with appropriate label.\n if (formattingLabel) {\r\n parsingObject[label] = value.substr(0, formatLength)\r\n }\n\n // Update the value as the substring from format length to end.\n value = value.substr(formatLength)\r\n })\n\n // Compensate for month 0index.\n return [\n parsingObject.yyyy || parsingObject.yy,\n +(parsingObject.mm || parsingObject.m) - 1,\n parsingObject.dd || parsingObject.d\n ]\r\n } //DatePicker.prototype.parse\n\n\n /**\n * Various formats to display the object in.\n */\n DatePicker.prototype.formats = (function () {\n\n // Return the length of the first word in a collection.\n function getWordLengthFromCollection(string, collection, dateObject) {\n\n // Grab the first word from the string.\n // Regex pattern from http://stackoverflow.com/q/150033\n var word = string.match(/[^\\x00-\\x7F]+|\\w+/)[0]\n\n // If there's no month index, add it to the date object\n if (!dateObject.mm && !dateObject.m) {\r\n dateObject.m = collection.indexOf(word) + 1\r\n }\n\n // Return the length of the word.\n return word.length\r\n }\n\n // Get the length of the first word in a string.\n function getFirstWordLength(string) {\r\n return string.match(/\\w+/)[0].length\r\n }\n\n return {\r\n\n d: function (string, dateObject) {\n\n // If there's string, then get the digits length.\n // Otherwise return the selected date.\n return string ? _.digits(string) : dateObject.date\r\n },\n dd: function (string, dateObject) {\n\n // If there's a string, then the length is always 2.\n // Otherwise return the selected date with a leading zero.\n return string ? 2 : _.lead(dateObject.date)\r\n },\n ddd: function (string, dateObject) {\n\n // If there's a string, then get the length of the first word.\n // Otherwise return the short selected weekday.\n return string ? getFirstWordLength(string) : this.settings.weekdaysShort[dateObject.day]\r\n },\n dddd: function (string, dateObject) {\n\n // If there's a string, then get the length of the first word.\n // Otherwise return the full selected weekday.\n return string ? getFirstWordLength(string) : this.settings.weekdaysFull[dateObject.day]\r\n },\n m: function (string, dateObject) {\n\n // If there's a string, then get the length of the digits\n // Otherwise return the selected month with 0index compensation.\n return string ? _.digits(string) : dateObject.month + 1\r\n },\n mm: function (string, dateObject) {\n\n // If there's a string, then the length is always 2.\n // Otherwise return the selected month with 0index and leading zero.\n return string ? 2 : _.lead(dateObject.month + 1)\r\n },\n mmm: function (string, dateObject) {\r\n\n var collection = this.settings.monthsShort\n\n // If there's a string, get length of the relevant month from the short\n // months collection. Otherwise return the selected month from that collection.\n return string ? getWordLengthFromCollection(string, collection, dateObject) : collection[dateObject.month]\r\n },\n mmmm: function (string, dateObject) {\r\n\n var collection = this.settings.monthsFull\n\n // If there's a string, get length of the relevant month from the full\n // months collection. Otherwise return the selected month from that collection.\n return string ? getWordLengthFromCollection(string, collection, dateObject) : collection[dateObject.month]\r\n },\n yy: function (string, dateObject) {\n\n // If there's a string, then the length is always 2.\n // Otherwise return the selected year by slicing out the first 2 digits.\n return string ? 2 : ('' + dateObject.year).slice(2)\r\n },\n yyyy: function (string, dateObject) {\n\n // If there's a string, then the length is always 4.\n // Otherwise return the selected year.\n return string ? 4 : dateObject.year\r\n },\n\n // Create an array by splitting the formatting string passed.\n toArray: function (formatString) { return formatString.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g) },\n\n // Format an object into a string using the formatting options.\n toString: function (formatString, itemObject) {\r\n var calendar = this\n return calendar.formats.toArray(formatString).map(function (label) {\r\n return _.trigger(calendar.formats[label], calendar, [0, itemObject]) || label.replace(/^!/, '')\r\n }).join('')\r\n }\r\n }\r\n })() //DatePicker.prototype.formats\n\n\n\n\n /**\n * Check if two date units are the exact.\n */\n DatePicker.prototype.isDateExact = function (one, two) {\r\n\n var calendar = this\n\n // When we’re working with weekdays, do a direct comparison.\n if (\n (_.isInteger(one) && _.isInteger(two)) ||\n (typeof one == 'boolean' && typeof two == 'boolean')\n ) {\r\n return one === two\r\n }\n\n // When we’re working with date representations, compare the “pick” value.\n if (\n (_.isDate(one) || $.isArray(one)) &&\n (_.isDate(two) || $.isArray(two))\n ) {\r\n return calendar.create(one).pick === calendar.create(two).pick\r\n }\n\n // When we’re working with range objects, compare the “from” and “to”.\n if ($.isPlainObject(one) && $.isPlainObject(two)) {\r\n return calendar.isDateExact(one.from, two.from) && calendar.isDateExact(one.to, two.to)\r\n }\n\n return false\r\n }\n\n\n /**\n * Check if two date units overlap.\n */\n DatePicker.prototype.isDateOverlap = function (one, two) {\r\n\n var calendar = this,\n firstDay = calendar.settings.firstDay ? 1 : 0\n\n // When we’re working with a weekday index, compare the days.\n if (_.isInteger(one) && (_.isDate(two) || $.isArray(two))) {\r\n one = one % 7 + firstDay\n return one === calendar.create(two).day + 1\r\n }\n if (_.isInteger(two) && (_.isDate(one) || $.isArray(one))) {\r\n two = two % 7 + firstDay\n return two === calendar.create(one).day + 1\r\n }\n\n // When we’re working with range objects, check if the ranges overlap.\n if ($.isPlainObject(one) && $.isPlainObject(two)) {\r\n return calendar.overlapRanges(one, two)\r\n }\n\n return false\r\n }\n\n\n /**\n * Flip the “enabled” state.\n */\n DatePicker.prototype.flipEnable = function (val) {\r\n var itemObject = this.item\n itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1)\r\n }\n\n\n /**\n * Mark a collection of dates as “disabled”.\n */\n DatePicker.prototype.deactivate = function (type, datesToDisable) {\r\n\n var calendar = this,\n disabledItems = calendar.item.disable.slice(0)\n\n\n // If we’re flipping, that’s all we need to do.\n if (datesToDisable == 'flip') {\r\n calendar.flipEnable()\r\n }\n\n else if (datesToDisable === false) {\r\n calendar.flipEnable(1)\n disabledItems = []\r\n }\n\n else if (datesToDisable === true) {\r\n calendar.flipEnable(-1)\n disabledItems = []\r\n }\n\n // Otherwise go through the dates to disable.\n else {\r\n\n datesToDisable.map(function (unitToDisable) {\r\n\n var matchFound\n\n // When we have disabled items, check for matches.\n // If something is matched, immediately break out.\n for (var index = 0; index < disabledItems.length; index += 1) {\r\n if (calendar.isDateExact(unitToDisable, disabledItems[index])) {\r\n matchFound = true\n break\r\n }\r\n }\n\n // If nothing was found, add the validated unit to the collection.\n if (!matchFound) {\r\n if (\n _.isInteger(unitToDisable) ||\n _.isDate(unitToDisable) ||\n $.isArray(unitToDisable) ||\n ($.isPlainObject(unitToDisable) && unitToDisable.from && unitToDisable.to)\n ) {\r\n disabledItems.push(unitToDisable)\r\n }\r\n }\r\n })\r\n }\n\n // Return the updated collection.\n return disabledItems\r\n } //DatePicker.prototype.deactivate\n\n\n /**\n * Mark a collection of dates as “enabled”.\n */\n DatePicker.prototype.activate = function (type, datesToEnable) {\r\n\n var calendar = this,\n disabledItems = calendar.item.disable,\n disabledItemsCount = disabledItems.length\n\n // If we’re flipping, that’s all we need to do.\n if (datesToEnable == 'flip') {\r\n calendar.flipEnable()\r\n }\n\n else if (datesToEnable === true) {\r\n calendar.flipEnable(1)\n disabledItems = []\r\n }\n\n else if (datesToEnable === false) {\r\n calendar.flipEnable(-1)\n disabledItems = []\r\n }\n\n // Otherwise go through the disabled dates.\n else {\r\n\n datesToEnable.map(function (unitToEnable) {\r\n\n var matchFound,\n disabledUnit,\n index,\n isExactRange\n\n // Go through the disabled items and try to find a match.\n for (index = 0; index < disabledItemsCount; index += 1) {\r\n\n disabledUnit = disabledItems[index]\n\n // When an exact match is found, remove it from the collection.\n if (calendar.isDateExact(disabledUnit, unitToEnable)) {\r\n matchFound = disabledItems[index] = null\n isExactRange = true\n break\r\n }\n\n // When an overlapped match is found, add the “inverted” state to it.\n else if (calendar.isDateOverlap(disabledUnit, unitToEnable)) {\r\n if ($.isPlainObject(unitToEnable)) {\r\n unitToEnable.inverted = true\n matchFound = unitToEnable\r\n }\n else if ($.isArray(unitToEnable)) {\r\n matchFound = unitToEnable\n if (!matchFound[3]) matchFound.push('inverted')\r\n }\n else if (_.isDate(unitToEnable)) {\r\n matchFound = [unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted']\r\n }\n break\r\n }\r\n }\n\n // If a match was found, remove a previous duplicate entry.\n if (matchFound) for (index = 0; index < disabledItemsCount; index += 1) {\r\n if (calendar.isDateExact(disabledItems[index], unitToEnable)) {\r\n disabledItems[index] = null\n break\r\n }\r\n }\n\n // In the event that we’re dealing with an exact range of dates,\n // make sure there are no “inverted” dates because of it.\n if (isExactRange) for (index = 0; index < disabledItemsCount; index += 1) {\r\n if (calendar.isDateOverlap(disabledItems[index], unitToEnable)) {\r\n disabledItems[index] = null\n break\r\n }\r\n }\n\n // If something is still matched, add it into the collection.\n if (matchFound) {\r\n disabledItems.push(matchFound)\r\n }\r\n })\r\n }\n\n // Return the updated collection.\n return disabledItems.filter(function (val) { return val != null })\r\n } //DatePicker.prototype.activate\n\n\n /**\n * Create a string for the nodes in the picker.\n */\n DatePicker.prototype.nodes = function (isOpen) {\r\n\n var\n calendar = this,\n settings = calendar.settings,\n calendarItem = calendar.item,\n nowObject = calendarItem.now,\n selectedObject = calendarItem.select,\n highlightedObject = calendarItem.highlight,\n viewsetObject = calendarItem.view,\n disabledCollection = calendarItem.disable,\n minLimitObject = calendarItem.min,\n maxLimitObject = calendarItem.max,\n\n\n // Create the calendar table head using a copy of weekday labels collection.\n // * We do a copy so we don't mutate the original array.\n tableHead = (function (collection, fullCollection) {\n\n // If the first day should be Monday, move Sunday to the end.\n if (settings.firstDay) {\r\n collection.push(collection.shift())\n fullCollection.push(fullCollection.shift())\r\n }\n\n // Create and return the table head group.\n return _.node(\n 'thead',\n _.node(\n 'tr',\n _.group({\r\n min: 0,\n max: DAYS_IN_WEEK - 1,\n i: 1,\n node: 'th',\n item: function (counter) {\r\n return [\n collection[counter],\n settings.klass.weekdays,\n 'scope=col title=\"' + fullCollection[counter] + '\"'\n ]\r\n }\r\n })\n )\n ) //endreturn\n })((settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysShort).slice(0), settings.weekdaysFull.slice(0)), //tableHead\n\n\n // Create the nav for next/prev month.\n createMonthNav = function (next) {\n\n // Otherwise, return the created month tag.\n return _.node(\n 'div',\n ' ',\n settings.klass['nav' + (next ? 'Next' : 'Prev')] + (\n\n // If the focused month is outside the range, disabled the button.\n (next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month) ||\n (!next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month) ?\n ' ' + settings.klass.navDisabled : ''\n ),\n 'data-nav=' + (next || -1) + ' ' +\n _.ariaAttr({\r\n role: 'button',\n controls: calendar.$node[0].id + '_table'\r\n }) + ' ' +\n 'title=\"' + (next ? settings.labelMonthNext : settings.labelMonthPrev) + '\"'\n ) //endreturn\n }, //createMonthNav\n\n\n // Create the month label.\n createMonthLabel = function () {\r\n\n var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull\n\n // If there are months to select, add a dropdown menu.\n if (settings.selectMonths) {\r\n\n return _.node('select',\n _.group({\r\n min: 0,\n max: 11,\n i: 1,\n node: 'option',\n item: function (loopedMonth) {\r\n\n return [\n\n // The looped month and no classes.\n monthsCollection[loopedMonth], 0,\n\n // Set the value and selected index.\n 'value=' + loopedMonth +\n (viewsetObject.month == loopedMonth ? ' selected' : '') +\n (\n (\n (viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month) ||\n (viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month)\n ) ?\n ' disabled' : ''\n )\n ]\r\n }\r\n }),\n settings.klass.selectMonth,\n (isOpen ? '' : 'disabled') + ' ' +\n _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' +\n 'title=\"' + settings.labelMonthSelect + '\"'\n )\r\n }\n\n // If there's a need for a month selector\n return _.node('div', monthsCollection[viewsetObject.month], settings.klass.month)\r\n }, //createMonthLabel\n\n\n // Create the year label.\n createYearLabel = function () {\r\n\n var focusedYear = viewsetObject.year,\n\n // If years selector is set to a literal \"true\", set it to 5. Otherwise\n // divide in half to get half before and half after focused year.\n numberYears = settings.selectYears === true ? 5 : ~~(settings.selectYears / 2)\n\n // If there are years to select, add a dropdown menu.\n if (numberYears) {\r\n\n var\n minYear = minLimitObject.year,\n maxYear = maxLimitObject.year,\n lowestYear = focusedYear - numberYears,\n highestYear = focusedYear + numberYears\n\n // If the min year is greater than the lowest year, increase the highest year\n // by the difference and set the lowest year to the min year.\n if (minYear > lowestYear) {\r\n highestYear += minYear - lowestYear\n lowestYear = minYear\r\n }\n\n // If the max year is less than the highest year, decrease the lowest year\n // by the lower of the two: available and needed years. Then set the\n // highest year to the max year.\n if (maxYear < highestYear) {\r\n\n var availableYears = lowestYear - minYear,\n neededYears = highestYear - maxYear\n\n lowestYear -= availableYears > neededYears ? neededYears : availableYears\n highestYear = maxYear\r\n }\n\n return _.node('select',\n _.group({\r\n min: lowestYear,\n max: highestYear,\n i: 1,\n node: 'option',\n item: function (loopedYear) {\r\n return [\n\n // The looped year and no classes.\n loopedYear, 0,\n\n // Set the value and selected index.\n 'value=' + loopedYear + (focusedYear == loopedYear ? ' selected' : '')\n ]\r\n }\r\n }),\n settings.klass.selectYear,\n (isOpen ? '' : 'disabled') + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' +\n 'title=\"' + settings.labelYearSelect + '\"'\n )\r\n }\n\n // Otherwise just return the year focused\n return _.node('div', focusedYear, settings.klass.year)\r\n } //createYearLabel\n\n\n // Create and return the entire calendar.\n return _.node(\n 'div',\n (settings.selectYears ? createYearLabel() + createMonthLabel() : createMonthLabel() + createYearLabel()) +\n createMonthNav() + createMonthNav(1),\n settings.klass.header\n ) + _.node(\n 'table',\n tableHead +\n _.node(\n 'tbody',\n _.group({\r\n min: 0,\n max: WEEKS_IN_CALENDAR - 1,\n i: 1,\n node: 'tr',\n item: function (rowCounter) {\n\n // If Monday is the first day and the month starts on Sunday, shift the date back a week.\n var shiftDateBy = settings.firstDay && calendar.create([viewsetObject.year, viewsetObject.month, 1]).day === 0 ? -7 : 0\n\n return [\n _.group({\r\n min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index\n max: function () {\r\n return this.min + DAYS_IN_WEEK - 1\r\n },\n i: 1,\n node: 'td',\n item: function (targetDate) {\n\n // Convert the time date from a relative date to a target date.\n targetDate = calendar.create([viewsetObject.year, viewsetObject.month, targetDate + (settings.firstDay ? 1 : 0)])\n\n var isSelected = selectedObject && selectedObject.pick == targetDate.pick,\n isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick,\n isDisabled = disabledCollection && calendar.disabled(targetDate) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick,\n formattedDate = _.trigger(calendar.formats.toString, calendar, [settings.format, targetDate])\n\n return [\n _.node(\n 'div',\n targetDate.date,\n (function (klasses) {\n\n // Add the `infocus` or `outfocus` classes based on month in view.\n klasses.push(viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus)\n\n // Add the `today` class if needed.\n if (nowObject.pick == targetDate.pick) {\r\n klasses.push(settings.klass.now)\r\n }\n\n // Add the `selected` class if something's selected and the time matches.\n if (isSelected) {\r\n klasses.push(settings.klass.selected)\r\n }\n\n // Add the `highlighted` class if something's highlighted and the time matches.\n if (isHighlighted) {\r\n klasses.push(settings.klass.highlighted)\r\n }\n\n // Add the `disabled` class if something's disabled and the object matches.\n if (isDisabled) {\r\n klasses.push(settings.klass.disabled)\r\n }\n\n return klasses.join(' ')\r\n })([settings.klass.day]),\n 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({\r\n role: 'gridcell',\n label: formattedDate,\n selected: isSelected && calendar.$node.val() === formattedDate ? true : null,\n activedescendant: isHighlighted ? true : null,\n disabled: isDisabled ? true : null\r\n })\n ),\n '',\n _.ariaAttr({ role: 'presentation' })\n ] //endreturn\n }\r\n })\n ] //endreturn\n }\r\n })\n ),\n settings.klass.table,\n 'id=\"' + calendar.$node[0].id + '_table' + '\" ' + _.ariaAttr({\r\n role: 'grid',\n controls: calendar.$node[0].id,\n readonly: true\r\n })\n ) +\n\n // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”.\n _.node(\n 'div',\n _.node('button', settings.today, settings.klass.buttonToday,\n 'type=button data-pick=' + nowObject.pick +\n (isOpen && !calendar.disabled(nowObject) ? '' : ' disabled') + ' ' +\n _.ariaAttr({ controls: calendar.$node[0].id })) +\n _.node('button', settings.clear, settings.klass.buttonClear,\n 'type=button data-clear=1' +\n (isOpen ? '' : ' disabled') + ' ' +\n _.ariaAttr({ controls: calendar.$node[0].id })) +\n _.node('button', settings.close, settings.klass.buttonClose,\n 'type=button data-close=true ' +\n (isOpen ? '' : ' disabled') + ' ' +\n _.ariaAttr({ controls: calendar.$node[0].id })),\n settings.klass.footer\n ) //endreturn\n } //DatePicker.prototype.nodes\n\n\n\n\n /**\n * The date picker defaults.\n */\n DatePicker.defaults = (function (prefix) {\r\n\n return {\n\n // The title label to use for the month nav buttons\n labelMonthNext: 'Next month',\n labelMonthPrev: 'Previous month',\n\n // The title label to use for the dropdown selectors\n labelMonthSelect: 'Select a month',\n labelYearSelect: 'Select a year',\n\n // Months and weekdays\n monthsFull: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n weekdaysFull: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\n // Today and clear\n today: 'Today',\n clear: 'Clear',\n close: 'Close',\n\n // Picker close behavior\n closeOnSelect: true,\n closeOnClear: true,\n\n // The format to show on the `input` element\n format: 'd mmmm, yyyy',\n\n // Classes\n klass: {\r\n\n table: prefix + 'table',\n\n header: prefix + 'header',\n\n navPrev: prefix + 'nav--prev',\n navNext: prefix + 'nav--next',\n navDisabled: prefix + 'nav--disabled',\n\n month: prefix + 'month',\n year: prefix + 'year',\n\n selectMonth: prefix + 'select--month',\n selectYear: prefix + 'select--year',\n\n weekdays: prefix + 'weekday',\n\n day: prefix + 'day',\n disabled: prefix + 'day--disabled',\n selected: prefix + 'day--selected',\n highlighted: prefix + 'day--highlighted',\n now: prefix + 'day--today',\n infocus: prefix + 'day--infocus',\n outfocus: prefix + 'day--outfocus',\n\n footer: prefix + 'footer',\n\n buttonClear: prefix + 'button--clear',\n buttonToday: prefix + 'button--today',\n buttonClose: prefix + 'button--close'\r\n }\r\n }\r\n })(Picker.klasses().picker + '__')\n\n\n\n\n\n /**\n * Extend the picker to add the date picker.\n */\n Picker.extend('pickadate', DatePicker)\r\n\n\n}));\n\n\n\n","/*!\n * Time picker for pickadate.js v3.5.5\n * http://amsul.github.io/pickadate.js/time.htm\n */\n\n(function (factory) {\n\n // AMD.\n if (typeof define == 'function' && define.amd)\n define(['picker', 'jquery'], factory)\n\n // Node.js/browserify.\n else if (typeof exports == 'object')\n module.exports = factory(require('./picker.js'), require('jquery'))\n\n // Browser globals.\n else factory(Picker, jQuery)\r\n\n}(function (Picker, $) {\n\n\n /**\n * Globals and constants\n */\n var HOURS_IN_DAY = 24,\n MINUTES_IN_HOUR = 60,\n HOURS_TO_NOON = 12,\n MINUTES_IN_DAY = HOURS_IN_DAY * MINUTES_IN_HOUR,\n _ = Picker._\n\n\n\n /**\n * The time picker constructor\n */\n function TimePicker(picker, settings) {\r\n\n var clock = this,\n elementValue = picker.$node[0].value,\n elementDataValue = picker.$node.data('value'),\n valueString = elementDataValue || elementValue,\n formatString = elementDataValue ? settings.formatSubmit : settings.format\n\n clock.settings = settings\n clock.$node = picker.$node\n\n // The queue of methods that will be used to build item objects.\n clock.queue = {\r\n interval: 'i',\n min: 'measure create',\n max: 'measure create',\n now: 'now create',\n select: 'parse create validate',\n highlight: 'parse create validate',\n view: 'parse create validate',\n disable: 'deactivate',\n enable: 'activate'\r\n }\n\n // The component's item object.\n clock.item = {}\n\n clock.item.clear = null\n clock.item.interval = settings.interval || 30\n clock.item.disable = (settings.disable || []).slice(0)\n clock.item.enable = -(function (collectionDisabled) {\r\n return collectionDisabled[0] === true ? collectionDisabled.shift() : -1\r\n })(clock.item.disable)\n\n clock.\n set('min', settings.min).\n set('max', settings.max).\n set('now')\n\n // When there’s a value, set the `select`, which in turn\n // also sets the `highlight` and `view`.\n if (valueString) {\r\n clock.set('select', valueString, {\r\n format: formatString\r\n })\r\n }\n\n // If there’s no value, default to highlighting “today”.\n else {\r\n clock.\n set('select', null).\n set('highlight', clock.item.now)\r\n }\n\n // The keycode to movement mapping.\n clock.key = {\r\n 40: 1, // Down\n 38: -1, // Up\n 39: 1, // Right\n 37: -1, // Left\n go: function (timeChange) {\r\n clock.set(\n 'highlight',\n clock.item.highlight.pick + timeChange * clock.item.interval,\n { interval: timeChange * clock.item.interval }\n )\n this.render()\r\n }\r\n }\n\n\n // Bind some picker events.\n picker.\n on('render', function () {\r\n var $pickerHolder = picker.$root.children(),\n $viewset = $pickerHolder.find('.' + settings.klass.viewset),\n vendors = function (prop) {\r\n return ['webkit', 'moz', 'ms', 'o', ''].map(function (vendor) {\r\n return (vendor ? '-' + vendor + '-' : '') + prop\r\n })\r\n },\n animations = function ($el, state) {\r\n vendors('transform').map(function (prop) {\r\n $el.css(prop, state)\r\n })\n vendors('transition').map(function (prop) {\r\n $el.css(prop, state)\r\n })\r\n }\n if ($viewset.length) {\r\n animations($pickerHolder, 'none')\n $pickerHolder[0].scrollTop = ~~$viewset.position().top - ($viewset[0].clientHeight * 2)\n animations($pickerHolder, '')\r\n }\r\n }, 1).\n on('open', function () {\r\n picker.$root.find('button').attr('disabled', false)\r\n }, 1).\n on('close', function () {\r\n picker.$root.find('button').attr('disabled', true)\r\n }, 1)\r\n\n } //TimePicker\n\n\n /**\n * Set a timepicker item object.\n */\n TimePicker.prototype.set = function (type, value, options) {\r\n\n var clock = this,\n clockItem = clock.item\n\n // If the value is `null` just set it immediately.\n if (value === null) {\r\n if (type == 'clear') type = 'select'\n clockItem[type] = value\n return clock\r\n }\n\n // Otherwise go through the queue of methods, and invoke the functions.\n // Update this as the time unit, and set the final value as this item.\n // * In the case of `enable`, keep the queue but set `disable` instead.\n // And in the case of `flip`, keep the queue but set `enable` instead.\n clockItem[(type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type)] = clock.queue[type].split(' ').map(function (method) {\r\n value = clock[method](type, value, options)\n return value\r\n }).pop()\n\n // Check if we need to cascade through more updates.\n if (type == 'select') {\r\n clock.set('highlight', clockItem.select, options)\r\n }\n else if (type == 'highlight') {\r\n clock.set('view', clockItem.highlight, options)\r\n }\n else if (type == 'interval') {\r\n clock.\n set('min', clockItem.min, options).\n set('max', clockItem.max, options)\r\n }\n else if (type.match(/^(flip|min|max|disable|enable)$/)) {\r\n if (clockItem.select && clock.disabled(clockItem.select)) {\r\n clock.set('select', value, options)\r\n }\n if (clockItem.highlight && clock.disabled(clockItem.highlight)) {\r\n clock.set('highlight', value, options)\r\n }\n if (type == 'min') {\r\n clock.set('max', clockItem.max, options)\r\n }\r\n }\n\n return clock\r\n } //TimePicker.prototype.set\n\n\n /**\n * Get a timepicker item object.\n */\n TimePicker.prototype.get = function (type) {\r\n return this.item[type]\r\n } //TimePicker.prototype.get\n\n\n /**\n * Create a picker time object.\n */\n TimePicker.prototype.create = function (type, value, options) {\r\n\n var clock = this\n\n // If there’s no value, use the type as the value.\n value = value === undefined ? type : value\n\n // If it’s a date object, convert it into an array.\n if (_.isDate(value)) {\r\n value = [value.getHours(), value.getMinutes()]\r\n }\n\n // If it’s an object, use the “pick” value.\n if ($.isPlainObject(value) && _.isInteger(value.pick)) {\r\n value = value.pick\r\n }\n\n // If it’s an array, convert it into minutes.\n else if ($.isArray(value)) {\r\n value = +value[0] * MINUTES_IN_HOUR + (+value[1])\r\n }\n\n // If no valid value is passed, set it to “now”.\n else if (!_.isInteger(value)) {\r\n value = clock.now(type, value, options)\r\n }\n\n // If we’re setting the max, make sure it’s greater than the min.\n if (type == 'max' && value < clock.item.min.pick) {\r\n value += MINUTES_IN_DAY\r\n }\n\n // If the value doesn’t fall directly on the interval,\n // add one interval to indicate it as “passed”.\n if (type != 'min' && type != 'max' && (value - clock.item.min.pick) % clock.item.interval !== 0) {\r\n value += clock.item.interval\r\n }\n\n // Normalize it into a “reachable” interval.\n value = clock.normalize(type, value, options)\n\n // Return the compiled object.\n return {\n\n // Divide to get hours from minutes.\n hour: ~~(HOURS_IN_DAY + value / MINUTES_IN_HOUR) % HOURS_IN_DAY,\n\n // The remainder is the minutes.\n mins: (MINUTES_IN_HOUR + value % MINUTES_IN_HOUR) % MINUTES_IN_HOUR,\n\n // The time in total minutes.\n time: (MINUTES_IN_DAY + value) % MINUTES_IN_DAY,\n\n // Reference to the “relative” value to pick.\n pick: value % MINUTES_IN_DAY\r\n }\r\n } //TimePicker.prototype.create\n\n\n /**\n * Create a range limit object using an array, date object,\n * literal “true”, or integer relative to another time.\n */\n TimePicker.prototype.createRange = function (from, to) {\r\n\n var clock = this,\n createTime = function (time) {\r\n if (time === true || $.isArray(time) || _.isDate(time)) {\r\n return clock.create(time)\r\n }\n return time\r\n }\n\n // Create objects if possible.\n if (!_.isInteger(from)) {\r\n from = createTime(from)\r\n }\n if (!_.isInteger(to)) {\r\n to = createTime(to)\r\n }\n\n // Create relative times.\n if (_.isInteger(from) && $.isPlainObject(to)) {\r\n from = [to.hour, to.mins + (from * clock.settings.interval)];\r\n }\n else if (_.isInteger(to) && $.isPlainObject(from)) {\r\n to = [from.hour, from.mins + (to * clock.settings.interval)];\r\n }\n\n return {\r\n from: createTime(from),\n to: createTime(to)\r\n }\r\n } //TimePicker.prototype.createRange\n\n\n /**\n * Check if a time unit falls within a time range object.\n */\n TimePicker.prototype.withinRange = function (range, timeUnit) {\r\n range = this.createRange(range.from, range.to)\n return timeUnit.pick >= range.from.pick && timeUnit.pick <= range.to.pick\r\n }\n\n\n /**\n * Check if two time range objects overlap.\n */\n TimePicker.prototype.overlapRanges = function (one, two) {\r\n\n var clock = this\n\n // Convert the ranges into comparable times.\n one = clock.createRange(one.from, one.to)\n two = clock.createRange(two.from, two.to)\n\n return clock.withinRange(one, two.from) || clock.withinRange(one, two.to) ||\n clock.withinRange(two, one.from) || clock.withinRange(two, one.to)\r\n }\n\n\n /**\n * Get the time relative to now.\n */\n TimePicker.prototype.now = function (type, value/*, options*/) {\r\n\n var interval = this.item.interval,\n date = new Date(),\n nowMinutes = date.getHours() * MINUTES_IN_HOUR + date.getMinutes(),\n isValueInteger = _.isInteger(value),\n isBelowInterval\n\n // Make sure “now” falls within the interval range.\n nowMinutes -= nowMinutes % interval\n\n // Check if the difference is less than the interval itself.\n isBelowInterval = value < 0 && interval * value + nowMinutes <= -interval\n\n // Add an interval because the time has “passed”.\n nowMinutes += type == 'min' && isBelowInterval ? 0 : interval\n\n // If the value is a number, adjust by that many intervals.\n if (isValueInteger) {\r\n nowMinutes += interval * (\n isBelowInterval && type != 'max' ?\n value + 1 :\n value\n )\r\n }\n\n // Return the final calculation.\n return nowMinutes\r\n } //TimePicker.prototype.now\n\n\n /**\n * Normalize minutes to be “reachable” based on the min and interval.\n */\n TimePicker.prototype.normalize = function (type, value/*, options*/) {\r\n\n var interval = this.item.interval,\n minTime = this.item.min && this.item.min.pick || 0\n\n // If setting min time, don’t shift anything.\n // Otherwise get the value and min difference and then\n // normalize the difference with the interval.\n value -= type == 'min' ? 0 : (value - minTime) % interval\n\n // Return the adjusted value.\n return value\r\n } //TimePicker.prototype.normalize\n\n\n /**\n * Measure the range of minutes.\n */\n TimePicker.prototype.measure = function (type, value, options) {\r\n\n var clock = this\n\n // If it’s anything false-y, set it to the default.\n if (!value) {\r\n value = type == 'min' ? [0, 0] : [HOURS_IN_DAY - 1, MINUTES_IN_HOUR - 1]\r\n }\n\n // If it’s a string, parse it.\n if (typeof value == 'string') {\r\n value = clock.parse(type, value)\r\n }\n\n // If it’s a literal true, or an integer, make it relative to now.\n else if (value === true || _.isInteger(value)) {\r\n value = clock.now(type, value, options)\r\n }\n\n // If it’s an object already, just normalize it.\n else if ($.isPlainObject(value) && _.isInteger(value.pick)) {\r\n value = clock.normalize(type, value.pick, options)\r\n }\n\n return value\r\n } ///TimePicker.prototype.measure\n\n\n /**\n * Validate an object as enabled.\n */\n TimePicker.prototype.validate = function (type, timeObject, options) {\r\n\n var clock = this,\n interval = options && options.interval ? options.interval : clock.item.interval\n\n // Check if the object is disabled.\n if (clock.disabled(timeObject)) {\n\n // Shift with the interval until we reach an enabled time.\n timeObject = clock.shift(timeObject, interval)\r\n }\n\n // Scope the object into range.\n timeObject = clock.scope(timeObject)\n\n // Do a second check to see if we landed on a disabled min/max.\n // In that case, shift using the opposite interval as before.\n if (clock.disabled(timeObject)) {\r\n timeObject = clock.shift(timeObject, interval * -1)\r\n }\n\n // Return the final object.\n return timeObject\r\n } //TimePicker.prototype.validate\n\n\n /**\n * Check if an object is disabled.\n */\n TimePicker.prototype.disabled = function (timeToVerify) {\r\n\n var clock = this,\n\n // Filter through the disabled times to check if this is one.\n isDisabledMatch = clock.item.disable.filter(function (timeToDisable) {\n\n // If the time is a number, match the hours.\n if (_.isInteger(timeToDisable)) {\r\n return timeToVerify.hour == timeToDisable\r\n }\n\n // If it’s an array, create the object and match the times.\n if ($.isArray(timeToDisable) || _.isDate(timeToDisable)) {\r\n return timeToVerify.pick == clock.create(timeToDisable).pick\r\n }\n\n // If it’s an object, match a time within the “from” and “to” range.\n if ($.isPlainObject(timeToDisable)) {\r\n return clock.withinRange(timeToDisable, timeToVerify)\r\n }\r\n })\n\n // If this time matches a disabled time, confirm it’s not inverted.\n isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function (timeToDisable) {\r\n return $.isArray(timeToDisable) && timeToDisable[2] == 'inverted' ||\n $.isPlainObject(timeToDisable) && timeToDisable.inverted\r\n }).length\n\n // If the clock is \"enabled\" flag is flipped, flip the condition.\n return clock.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||\n timeToVerify.pick < clock.item.min.pick ||\n timeToVerify.pick > clock.item.max.pick\r\n } //TimePicker.prototype.disabled\n\n\n /**\n * Shift an object by an interval until we reach an enabled object.\n */\n TimePicker.prototype.shift = function (timeObject, interval) {\r\n\n var clock = this,\n minLimit = clock.item.min.pick,\n maxLimit = clock.item.max.pick/*,\n safety = 1000*/\n\n interval = interval || clock.item.interval\n\n // Keep looping as long as the time is disabled.\n while ( /*safety &&*/ clock.disabled(timeObject)) {\n\n /*safety -= 1\n if ( !safety ) {\n throw 'Fell into an infinite loop while shifting to ' + timeObject.hour + ':' + timeObject.mins + '.'\n }*/\n\n // Increase/decrease the time by the interval and keep looping.\n timeObject = clock.create(timeObject.pick += interval)\n\n // If we've looped beyond the limits, break out of the loop.\n if (timeObject.pick <= minLimit || timeObject.pick >= maxLimit) {\r\n break\r\n }\r\n }\n\n // Return the final object.\n return timeObject\r\n } //TimePicker.prototype.shift\n\n\n /**\n * Scope an object to be within range of min and max.\n */\n TimePicker.prototype.scope = function (timeObject) {\r\n var minLimit = this.item.min.pick,\n maxLimit = this.item.max.pick\n return this.create(timeObject.pick > maxLimit ? maxLimit : timeObject.pick < minLimit ? minLimit : timeObject)\r\n } //TimePicker.prototype.scope\n\n\n /**\n * Parse a string into a usable type.\n */\n TimePicker.prototype.parse = function (type, value, options) {\r\n\n var hour, minutes, isPM, item, parseValue,\n clock = this,\n parsingObject = {}\n\n // If it’s already parsed, we’re good.\n if (!value || typeof value != 'string') {\r\n return value\r\n }\n\n // We need a `.format` to parse the value with.\n if (!(options && options.format)) {\r\n options = options || {}\n options.format = clock.settings.format\r\n }\n\n // Convert the format into an array and then map through it.\n clock.formats.toArray(options.format).map(function (label) {\r\n\n var\n substring,\n\n // Grab the formatting label.\n formattingLabel = clock.formats[label],\n\n // The format length is from the formatting label function or the\n // label length without the escaping exclamation (!) mark.\n formatLength = formattingLabel ?\n _.trigger(formattingLabel, clock, [value, parsingObject]) :\n label.replace(/^!/, '').length\n\n // If there's a format label, split the value up to the format length.\n // Then add it to the parsing object with appropriate label.\n if (formattingLabel) {\r\n substring = value.substr(0, formatLength)\n parsingObject[label] = substring.match(/^\\d+$/) ? +substring : substring\r\n }\n\n // Update the time value as the substring from format length to end.\n value = value.substr(formatLength)\r\n })\n\n // Grab the hour and minutes from the parsing object.\n for (item in parsingObject) {\r\n parseValue = parsingObject[item]\n if (_.isInteger(parseValue)) {\r\n if (item.match(/^(h|hh)$/i)) {\r\n hour = parseValue\n if (item == 'h' || item == 'hh') {\r\n hour %= 12\r\n }\r\n }\n else if (item == 'i') {\r\n minutes = parseValue\r\n }\r\n }\n else if (item.match(/^a$/i) && parseValue.match(/^p/i) && ('h' in parsingObject || 'hh' in parsingObject)) {\r\n isPM = true\r\n }\r\n }\n\n // Calculate it in minutes and return.\n return (isPM ? hour + 12 : hour) * MINUTES_IN_HOUR + minutes\r\n } //TimePicker.prototype.parse\n\n\n /**\n * Various formats to display the object in.\n */\n TimePicker.prototype.formats = {\r\n\n h: function (string, timeObject) {\n\n // If there's string, then get the digits length.\n // Otherwise return the selected hour in \"standard\" format.\n return string ? _.digits(string) : timeObject.hour % HOURS_TO_NOON || HOURS_TO_NOON\r\n },\n hh: function (string, timeObject) {\n\n // If there's a string, then the length is always 2.\n // Otherwise return the selected hour in \"standard\" format with a leading zero.\n return string ? 2 : _.lead(timeObject.hour % HOURS_TO_NOON || HOURS_TO_NOON)\r\n },\n H: function (string, timeObject) {\n\n // If there's string, then get the digits length.\n // Otherwise return the selected hour in \"military\" format as a string.\n return string ? _.digits(string) : '' + (timeObject.hour % 24)\r\n },\n HH: function (string, timeObject) {\n\n // If there's string, then get the digits length.\n // Otherwise return the selected hour in \"military\" format with a leading zero.\n return string ? _.digits(string) : _.lead(timeObject.hour % 24)\r\n },\n i: function (string, timeObject) {\n\n // If there's a string, then the length is always 2.\n // Otherwise return the selected minutes.\n return string ? 2 : _.lead(timeObject.mins)\r\n },\n a: function (string, timeObject) {\n\n // If there's a string, then the length is always 4.\n // Otherwise check if it's more than \"noon\" and return either am/pm.\n return string ? 4 : MINUTES_IN_DAY / 2 > timeObject.time % MINUTES_IN_DAY ? 'a.m.' : 'p.m.'\r\n },\n A: function (string, timeObject) {\n\n // If there's a string, then the length is always 2.\n // Otherwise check if it's more than \"noon\" and return either am/pm.\n return string ? 2 : MINUTES_IN_DAY / 2 > timeObject.time % MINUTES_IN_DAY ? 'AM' : 'PM'\r\n },\n\n // Create an array by splitting the formatting string passed.\n toArray: function (formatString) { return formatString.split(/(h{1,2}|H{1,2}|i|a|A|!.)/g) },\n\n // Format an object into a string using the formatting options.\n toString: function (formatString, itemObject) {\r\n var clock = this\n return clock.formats.toArray(formatString).map(function (label) {\r\n return _.trigger(clock.formats[label], clock, [0, itemObject]) || label.replace(/^!/, '')\r\n }).join('')\r\n }\r\n } //TimePicker.prototype.formats\n\n\n\n\n /**\n * Check if two time units are the exact.\n */\n TimePicker.prototype.isTimeExact = function (one, two) {\r\n\n var clock = this\n\n // When we’re working with minutes, do a direct comparison.\n if (\n (_.isInteger(one) && _.isInteger(two)) ||\n (typeof one == 'boolean' && typeof two == 'boolean')\n ) {\r\n return one === two\r\n }\n\n // When we’re working with time representations, compare the “pick” value.\n if (\n (_.isDate(one) || $.isArray(one)) &&\n (_.isDate(two) || $.isArray(two))\n ) {\r\n return clock.create(one).pick === clock.create(two).pick\r\n }\n\n // When we’re working with range objects, compare the “from” and “to”.\n if ($.isPlainObject(one) && $.isPlainObject(two)) {\r\n return clock.isTimeExact(one.from, two.from) && clock.isTimeExact(one.to, two.to)\r\n }\n\n return false\r\n }\n\n\n /**\n * Check if two time units overlap.\n */\n TimePicker.prototype.isTimeOverlap = function (one, two) {\r\n\n var clock = this\n\n // When we’re working with an integer, compare the hours.\n if (_.isInteger(one) && (_.isDate(two) || $.isArray(two))) {\r\n return one === clock.create(two).hour\r\n }\n if (_.isInteger(two) && (_.isDate(one) || $.isArray(one))) {\r\n return two === clock.create(one).hour\r\n }\n\n // When we’re working with range objects, check if the ranges overlap.\n if ($.isPlainObject(one) && $.isPlainObject(two)) {\r\n return clock.overlapRanges(one, two)\r\n }\n\n return false\r\n }\n\n\n /**\n * Flip the “enabled” state.\n */\n TimePicker.prototype.flipEnable = function (val) {\r\n var itemObject = this.item\n itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1)\r\n }\n\n\n /**\n * Mark a collection of times as “disabled”.\n */\n TimePicker.prototype.deactivate = function (type, timesToDisable) {\r\n\n var clock = this,\n disabledItems = clock.item.disable.slice(0)\n\n\n // If we’re flipping, that’s all we need to do.\n if (timesToDisable == 'flip') {\r\n clock.flipEnable()\r\n }\n\n else if (timesToDisable === false) {\r\n clock.flipEnable(1)\n disabledItems = []\r\n }\n\n else if (timesToDisable === true) {\r\n clock.flipEnable(-1)\n disabledItems = []\r\n }\n\n // Otherwise go through the times to disable.\n else {\r\n\n timesToDisable.map(function (unitToDisable) {\r\n\n var matchFound\n\n // When we have disabled items, check for matches.\n // If something is matched, immediately break out.\n for (var index = 0; index < disabledItems.length; index += 1) {\r\n if (clock.isTimeExact(unitToDisable, disabledItems[index])) {\r\n matchFound = true\n break\r\n }\r\n }\n\n // If nothing was found, add the validated unit to the collection.\n if (!matchFound) {\r\n if (\n _.isInteger(unitToDisable) ||\n _.isDate(unitToDisable) ||\n $.isArray(unitToDisable) ||\n ($.isPlainObject(unitToDisable) && unitToDisable.from && unitToDisable.to)\n ) {\r\n disabledItems.push(unitToDisable)\r\n }\r\n }\r\n })\r\n }\n\n // Return the updated collection.\n return disabledItems\r\n } //TimePicker.prototype.deactivate\n\n\n /**\n * Mark a collection of times as “enabled”.\n */\n TimePicker.prototype.activate = function (type, timesToEnable) {\r\n\n var clock = this,\n disabledItems = clock.item.disable,\n disabledItemsCount = disabledItems.length\n\n // If we’re flipping, that’s all we need to do.\n if (timesToEnable == 'flip') {\r\n clock.flipEnable()\r\n }\n\n else if (timesToEnable === true) {\r\n clock.flipEnable(1)\n disabledItems = []\r\n }\n\n else if (timesToEnable === false) {\r\n clock.flipEnable(-1)\n disabledItems = []\r\n }\n\n // Otherwise go through the disabled times.\n else {\r\n\n timesToEnable.map(function (unitToEnable) {\r\n\n var matchFound,\n disabledUnit,\n index,\n isRangeMatched\n\n // Go through the disabled items and try to find a match.\n for (index = 0; index < disabledItemsCount; index += 1) {\r\n\n disabledUnit = disabledItems[index]\n\n // When an exact match is found, remove it from the collection.\n if (clock.isTimeExact(disabledUnit, unitToEnable)) {\r\n matchFound = disabledItems[index] = null\n isRangeMatched = true\n break\r\n }\n\n // When an overlapped match is found, add the “inverted” state to it.\n else if (clock.isTimeOverlap(disabledUnit, unitToEnable)) {\r\n if ($.isPlainObject(unitToEnable)) {\r\n unitToEnable.inverted = true\n matchFound = unitToEnable\r\n }\n else if ($.isArray(unitToEnable)) {\r\n matchFound = unitToEnable\n if (!matchFound[2]) matchFound.push('inverted')\r\n }\n else if (_.isDate(unitToEnable)) {\r\n matchFound = [unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted']\r\n }\n break\r\n }\r\n }\n\n // If a match was found, remove a previous duplicate entry.\n if (matchFound) for (index = 0; index < disabledItemsCount; index += 1) {\r\n if (clock.isTimeExact(disabledItems[index], unitToEnable)) {\r\n disabledItems[index] = null\n break\r\n }\r\n }\n\n // In the event that we’re dealing with an overlap of range times,\n // make sure there are no “inverted” times because of it.\n if (isRangeMatched) for (index = 0; index < disabledItemsCount; index += 1) {\r\n if (clock.isTimeOverlap(disabledItems[index], unitToEnable)) {\r\n disabledItems[index] = null\n break\r\n }\r\n }\n\n // If something is still matched, add it into the collection.\n if (matchFound) {\r\n disabledItems.push(matchFound)\r\n }\r\n })\r\n }\n\n // Return the updated collection.\n return disabledItems.filter(function (val) { return val != null })\r\n } //TimePicker.prototype.activate\n\n\n /**\n * The division to use for the range intervals.\n */\n TimePicker.prototype.i = function (type, value/*, options*/) {\r\n return _.isInteger(value) && value > 0 ? value : this.item.interval\r\n }\n\n\n /**\n * Create a string for the nodes in the picker.\n */\n TimePicker.prototype.nodes = function (isOpen) {\r\n\n var\n clock = this,\n settings = clock.settings,\n selectedObject = clock.item.select,\n highlightedObject = clock.item.highlight,\n viewsetObject = clock.item.view,\n disabledCollection = clock.item.disable\n\n return _.node(\n 'ul',\n _.group({\r\n min: clock.item.min.pick,\n max: clock.item.max.pick,\n i: clock.item.interval,\n node: 'li',\n item: function (loopedTime) {\r\n loopedTime = clock.create(loopedTime)\n var timeMinutes = loopedTime.pick,\n isSelected = selectedObject && selectedObject.pick == timeMinutes,\n isHighlighted = highlightedObject && highlightedObject.pick == timeMinutes,\n isDisabled = disabledCollection && clock.disabled(loopedTime),\n formattedTime = _.trigger(clock.formats.toString, clock, [settings.format, loopedTime])\n return [\n _.trigger(clock.formats.toString, clock, [_.trigger(settings.formatLabel, clock, [loopedTime]) || settings.format, loopedTime]),\n (function (klasses) {\r\n\n if (isSelected) {\r\n klasses.push(settings.klass.selected)\r\n }\n\n if (isHighlighted) {\r\n klasses.push(settings.klass.highlighted)\r\n }\n\n if (viewsetObject && viewsetObject.pick == timeMinutes) {\r\n klasses.push(settings.klass.viewset)\r\n }\n\n if (isDisabled) {\r\n klasses.push(settings.klass.disabled)\r\n }\n\n return klasses.join(' ')\r\n })([settings.klass.listItem]),\n 'data-pick=' + loopedTime.pick + ' ' + _.ariaAttr({\r\n role: 'option',\n label: formattedTime,\n selected: isSelected && clock.$node.val() === formattedTime ? true : null,\n activedescendant: isHighlighted ? true : null,\n disabled: isDisabled ? true : null\r\n })\n ]\r\n }\r\n }) +\n\n // * For Firefox forms to submit, make sure to set the button’s `type` attribute as “button”.\n _.node(\n 'li',\n _.node(\n 'button',\n settings.clear,\n settings.klass.buttonClear,\n 'type=button data-clear=1' + (isOpen ? '' : ' disabled') + ' ' +\n _.ariaAttr({ controls: clock.$node[0].id })\n ),\n '', _.ariaAttr({ role: 'presentation' })\n ),\n settings.klass.list,\n _.ariaAttr({ role: 'listbox', controls: clock.$node[0].id })\n )\r\n } //TimePicker.prototype.nodes\n\n\n\n\n\n\n\n /**\n * Extend the picker to add the component with the defaults.\n */\n TimePicker.defaults = (function (prefix) {\r\n\n return {\n\n // Clear\n clear: 'Clear',\n\n // The format to show on the `input` element\n format: 'h:i A',\n\n // The interval between each time\n interval: 30,\n\n // Picker close behavior\n closeOnSelect: true,\n closeOnClear: true,\n\n // Classes\n klass: {\r\n\n picker: prefix + ' ' + prefix + '--time',\n holder: prefix + '__holder',\n\n list: prefix + '__list',\n listItem: prefix + '__list-item',\n\n disabled: prefix + '__list-item--disabled',\n selected: prefix + '__list-item--selected',\n highlighted: prefix + '__list-item--highlighted',\n viewset: prefix + '__list-item--viewset',\n now: prefix + '__list-item--now',\n\n buttonClear: prefix + '__button--clear'\r\n }\r\n }\r\n })(Picker.klasses().picker)\n\n\n\n\n\n /**\n * Extend the picker to add the time picker.\n */\n Picker.extend('pickatime', TimePicker)\r\n\n\n}));\n\n\n\n","\n/*jshint\n asi: true,\n unused: true,\n boss: true,\n loopfunc: true,\n eqnull: true\n */\n\n\n/*!\n * Legacy browser support\n */\n\n\n// Map array support\nif (![].map) {\r\n Array.prototype.map = function (callback, self) {\r\n var array = this, len = array.length, newArray = new Array(len)\n for (var i = 0; i < len; i++) {\r\n if (i in array) {\r\n newArray[i] = callback.call(self, array[i], i, array)\r\n }\r\n }\n return newArray\r\n }\r\n}\n\n\n// Filter array support\nif (![].filter) {\r\n Array.prototype.filter = function (callback) {\r\n if (this == null) throw new TypeError()\n var t = Object(this), len = t.length >>> 0\n if (typeof callback != 'function') throw new TypeError()\n var newArray = [], thisp = arguments[1]\n for (var i = 0; i < len; i++) {\r\n if (i in t) {\r\n var val = t[i]\n if (callback.call(thisp, val, i, t)) newArray.push(val)\r\n }\r\n }\n return newArray\r\n }\r\n}\n\n\n// Index of array support\nif (![].indexOf) {\r\n Array.prototype.indexOf = function (searchElement) {\r\n if (this == null) throw new TypeError()\n var t = Object(this), len = t.length >>> 0\n if (len === 0) return -1\n var n = 0\n if (arguments.length > 1) {\r\n n = Number(arguments[1])\n if (n != n) {\r\n n = 0\r\n }\n else if (n !== 0 && n != Infinity && n != -Infinity) {\r\n n = (n > 0 || -1) * Math.floor(Math.abs(n))\r\n }\r\n }\n if (n >= len) return -1\n var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0)\n for (; k < len; k++) {\r\n if (k in t && t[k] === searchElement) return k\r\n }\n return -1\r\n }\r\n}\n\n\n/*!\n * Cross-Browser Split 1.1.1\n * Copyright 2007-2012 Steven Levithan \n * Available under the MIT License\n * http://blog.stevenlevithan.com/archives/cross-browser-split\n */\nvar nativeSplit = String.prototype.split, compliantExecNpcg = /()??/.exec('')[1] === undefined\nString.prototype.split = function (separator, limit) {\r\n var str = this\n if (Object.prototype.toString.call(separator) !== '[object RegExp]') {\r\n return nativeSplit.call(str, separator, limit)\r\n }\n var output = [],\n flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.extended ? 'x' : '') +\n (separator.sticky ? 'y' : ''),\n lastLastIndex = 0,\n separator2, match, lastIndex, lastLength\n separator = new RegExp(separator.source, flags + 'g')\n str += ''\n if (!compliantExecNpcg) {\r\n separator2 = new RegExp('^' + separator.source + '$(?!\\\\s)', flags)\r\n }\n limit = limit === undefined ? -1 >>> 0 : limit >>> 0\n while (match = separator.exec(str)) {\r\n lastIndex = match.index + match[0].length\n if (lastIndex > lastLastIndex) {\r\n output.push(str.slice(lastLastIndex, match.index))\n if (!compliantExecNpcg && match.length > 1) {\r\n match[0].replace(separator2, function () {\r\n for (var i = 1; i < arguments.length - 2; i++) {\r\n if (arguments[i] === undefined) {\r\n match[i] = undefined\r\n }\r\n }\r\n })\r\n }\n if (match.length > 1 && match.index < str.length) {\r\n Array.prototype.push.apply(output, match.slice(1))\r\n }\n lastLength = match[0].length\n lastLastIndex = lastIndex\n if (output.length >= limit) {\r\n break\r\n }\r\n }\n if (separator.lastIndex === match.index) {\r\n separator.lastIndex++\r\n }\r\n }\n if (lastLastIndex === str.length) {\r\n if (lastLength || !separator.test('')) {\r\n output.push('')\r\n }\r\n } else {\r\n output.push(str.slice(lastLastIndex))\r\n }\n return output.length > limit ? output.slice(0, limit) : output\r\n};\n","// Danish\n\njQuery.extend( jQuery.fn.pickadate.defaults, {\n monthsFull: [ 'Januar', 'Februar', 'Marts', 'April', 'Maj', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'December' ],\n monthsShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec' ],\n weekdaysFull: [ 'Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag' ],\n weekdaysShort: [ 'Søn', 'Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør' ],\n today: 'I dag',\n clear: 'Ryd dato',\n close: 'Luk',\n firstDay: 1,\n format: 'dd.mm.yyyy',\n formatSubmit: 'dd.mm.yyyy',\n min: [2007, 1, 1],\n max: +366\n \n});","// the semi-colon before function invocation is a safety net against concatenated\r\n// scripts and/or other plugins which may not be closed properly.\r\n;(function ( $, window, document, undefined ) {\r\n\r\n\t\"use strict\";\r\n\r\n\t\t// undefined is used here as the undefined global variable in ECMAScript 3 is\r\n\t\t// mutable (ie. it can be changed by someone else). undefined isn't really being\r\n\t\t// passed in so we can ensure the value of it is truly undefined. In ES5, undefined\r\n\t\t// can no longer be modified.\r\n\r\n\t\t// window and document are passed through as local variable rather than global\r\n\t\t// as this (slightly) quickens the resolution process and can be more efficiently\r\n\t\t// minified (especially when both are regularly referenced in your plugin).\r\n\r\n\t\t// Create the defaults once\r\n\t\tvar pluginName = \"scrollEvent\",\r\n\t\t\t\tdefaults = {\r\n\t\t\t\t\telements: [],\r\n\t\t\t\t\tgaCallback : function(){}\r\n\t\t\t\t},\r\n\t\t\t\t//callback = function(){},\r\n\t\t\t\tcache = {};\r\n\r\n\t\t// The actual plugin constructor\r\n\t\tfunction ScrollEvent ( element, options ) {\r\n\t\t\t\tthis.element = element;\r\n\t\t\t\t// jQuery has an extend method which merges the contents of two or\r\n\t\t\t\t// more objects, storing the result in the first object. The first object\r\n\t\t\t\t// is generally empty as we don't want to alter the default options for\r\n\t\t\t\t// future instances of the plugin\r\n\t\t\t\tthis.settings = $.extend( {}, defaults, options );\r\n\t\t\t\tthis._defaults = defaults;\r\n\t\t\t\tthis._name = pluginName;\r\n\t\t\t\t\r\n // TODO: fix new Map usage.\r\n this.init();\r\n\t\t}\r\n\r\n\t\t// Avoid Plugin.prototype conflicts\r\n\t\t$.extend(ScrollEvent.prototype, {\r\n\t\t\t\tinit: function () {\r\n\t\t\t\t\t\t// Place initialization logic here\r\n\t\t\t\t\t\t// You already have access to the DOM element and\r\n\t\t\t\t\t\t// the options via the instance, e.g. this.element\r\n\t\t\t\t\t\t// and this.settings\r\n\t\t\t\t\t\t// you can add more functions like the one below and\r\n\t\t\t\t\t\t// call them like so: this.yourOtherFunction(this.element, this.settings).\r\n\r\n\t\t\t\t\t\tvar cb = this.settings.gaCallback;\r\n\t\t\t\t\t\t//populate cache\r\n\t\t\t\t\t\t$.each(this.settings.elements, function(index, elem) {\r\n\t\t\t\t\t\t\tvar pos = $(elem).offset().top+100;\r\n\t\t\t\t\t\t\tpos = Math.round(pos);\r\n\t\t\t\t\t\t\tcache[elem] = {pos: pos, callback: cb, elem:elem};\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t$(window).on('scroll.IP', throttle(this.checkScrollElems, 500));\r\n\t\t\t\t},\r\n\t\t\t\tcheckScrollElems: function () {\r\n\t\t\t\t\t //var docHeight = $(document).height(), \r\n\t\t\t var winHeight = window.innerHeight ? window.innerHeight : $window.height(), \r\n\t\t\t scrollDistance = $(window).scrollTop() + winHeight \r\n\r\n\t\t\t\t\tvar keys = Object.keys(cache);\r\n\t\t\t\t\tif(keys.length === 0){\r\n\t\t\t\t\t\t$(window).off('scroll.IP');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar hits = [];\r\n\t\t\t\t\t\r\n\t\t\t\t\tfor (var i = 0 ; i < keys.length ; i++) {\r\n\t\t\t\t\t\tvar elm = cache[keys[i]];\r\n\t\t\t\t\t\tvar pos = elm.pos;\r\n\t\t\t\t\t\t\tif(scrollDistance >= pos){\r\n\t\t\t\t\t\t\t\t//Send event\r\n\t\t\t\t\t\t\t\tif(typeof elm.callback === 'function'){\r\n\t\t\t\t\t\t\t\t\telm.callback(keys[i]);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t//console.log(\"Scroll past: \"+key);\r\n\t\t\t\t\t\t\t\thits.push(keys[i]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t/*cache.forEach(function(value,key, map) {\r\n\t\t\t\t\t\t\tvar pos = value.pos;\r\n\t\t\t\t\t\t\tif(scrollDistance >= pos){\r\n\t\t\t\t\t\t\t\t//Send event\r\n\t\t\t\t\t\t\t\tif(typeof value.callback === 'function'){\r\n\t\t\t\t\t\t\t\t\tvalue.callback(key);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t//console.log(\"Scroll past: \"+key);\r\n\t\t\t\t\t\t\t\thits.push(key);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});*/\r\n\r\n\t\t\t\t\t//Clean up\r\n\t\t\t\t\t$.each(hits, function(index, elem){\r\n\t\t\t\t\t\tdelete cache[elem];\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t},\r\n\t\t\t\taddScrollPos : function (elem, callback){\r\n\t\t\t\t\t//if(!cache.has(elem)){\r\n\t\t\t\t\tvar pos = $(elem).offset().top+100;\r\n\t\t\t\t\t\t\tpos = Math.round(pos);\r\n\t\t\t\t\t\t\tcache[elem] = {pos: pos, callback: callback, elem:elem};\r\n\t\t\t\t\t\t//}\r\n\t\t\t\t},\r\n\r\n\t\t\t\treInitializePositions : function (){\r\n\t\t\t\t var keys = Object.keys(cache);\r\n\t\t\t\t for (var i = 0 ; i < keys.length ; i++) {\r\n\t\t\t\t var elm = cache[keys[i]];\r\n\t\t\t\t var elemID = elm.elem;\r\n\t\t\t\t var pos = $(elemID).offset().top+100;\r\n\t\t\t\t pos = Math.round(pos);\r\n\t\t\t\t elm.pos = pos;\r\n\t\t\t\t };\r\n\t\t\t\t},\r\n \r\n\t\t\t\talertCache: function () {\r\n\t\t\t\t var keys = Object.keys(cache);\r\n\t\t\t\t var msg = \"Cacheentries\";\r\n\t\t\t\t for (var i = 0 ; i < keys.length ; i++) {\r\n\t\t\t\t var elm = cache[keys[i]];\r\n\t\t\t\t msg += 'ID' + elm.elem + ', top:' + elm.pos;\r\n\t\t\t\t };\r\n\t\t\t\t alert(msg);\r\n\t\t\t\t}\r\n\t\t});\r\n\r\n\t\t\r\n\t\t// A really lightweight plugin wrapper around the constructor,\r\n\t\t// preventing against multiple instantiations\r\n\t\t/*$.fn[ pluginName ] = function ( options ) {\r\n\t\t\t\treturn this.each(function() {\r\n\t\t\t\t\t\tif ( !$.data( this, \"plugin_\" + pluginName ) ) {\r\n\t\t\t\t\t\t\t\t$.data( this, \"plugin_\" + pluginName, new ScrollEvent( this, options ) );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t};*/\r\n\r\n\t\t $.fn[pluginName] = function ( options ) {\r\n var args = arguments;\r\n\r\n // Is the first parameter an object (options), or was omitted,\r\n // instantiate a new instance of the plugin.\r\n if (options === undefined || typeof options === 'object') {\r\n return this.each(function () {\r\n\r\n // Only allow the plugin to be instantiated once,\r\n // so we check that the element has no plugin instantiation yet\r\n if (!$.data(this, 'plugin_' + pluginName)) {\r\n\r\n // if it has no instance, create a new one,\r\n // pass options to our plugin constructor,\r\n // and store the plugin instance\r\n // in the elements jQuery data object.\r\n $.data(this, 'plugin_' + pluginName, new ScrollEvent( this, options ));\r\n }\r\n });\r\n\r\n // If the first parameter is a string and it doesn't start\r\n // with an underscore or \"contains\" the `init`-function,\r\n // treat this as a call to a public method.\r\n } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {\r\n\r\n // Cache the method call\r\n // to make it possible\r\n // to return a value\r\n var returns;\r\n\r\n this.each(function () {\r\n var instance = $.data(this, 'plugin_' + pluginName);\r\n\r\n if(instance === undefined){\r\n \tinstance = new ScrollEvent( this, {});\r\n \t $.data(this, 'plugin_' + pluginName, instance);\r\n }\r\n\r\n // Tests that there's already a plugin-instance\r\n // and checks that the requested public method exists\r\n if (instance instanceof ScrollEvent && typeof instance[options] === 'function') {\r\n\r\n // Call the method of our plugin instance,\r\n // and pass it the supplied arguments.\r\n returns = instance[options].apply( instance, Array.prototype.slice.call( args, 1 ) );\r\n }\r\n\r\n // Allow instances to be destroyed via the 'destroy' method\r\n if (options === 'destroy') {\r\n $.data(this, 'plugin_' + pluginName, null);\r\n }\r\n });\r\n\r\n // If the earlier cached method\r\n // gives a value back return the value,\r\n // otherwise return this to preserve chainability.\r\n return returns !== undefined ? returns : this;\r\n }\r\n };\r\n\r\n\r\n\t\t/*\r\n * Throttle function borrowed from:\r\n * Underscore.js 1.5.2\r\n * http://underscorejs.org\r\n * (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\r\n * Underscore may be freely distributed under the MIT license.\r\n */\r\n\r\n function throttle(func, wait) {\r\n var context, args, result;\r\n var timeout = null;\r\n var previous = 0;\r\n var later = function() {\r\n previous = new Date;\r\n timeout = null;\r\n result = func.apply(context, args);\r\n };\r\n return function() {\r\n var now = new Date;\r\n if (!previous) previous = now;\r\n var remaining = wait - (now - previous);\r\n context = this;\r\n args = arguments;\r\n if (remaining <= 0) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n previous = now;\r\n result = func.apply(context, args);\r\n } else if (!timeout) {\r\n timeout = setTimeout(later, remaining);\r\n }\r\n return result;\r\n };\r\n }\r\n\r\n\r\n\r\n\r\n})( jQuery, window, document );\r\n\r\n/*\r\nHow to call\r\n$(document).ready(function(){\r\n\t\t\tvar options = {elements: ['#indbetalingafkastomkost', \"#pension\"], gaCallback: gaCallBack};\r\n\t\t\t$(window).scrollEvent(options);\r\n\t\t});\t\r\n\t\t\r\n\t\tfunction gaCallBack(lable){\r\n\t\t\t//doStuff...\r\n\t\t}\r\n}\r\n\r\nEller \r\n$(document).ready(function(){\r\n\t$(window).scrollEvent(\"addScrollPos\",'#pension', function(){alert('hit1')});\r\n});\r\n*/\r\n","/// \r\n//Valideringsfunktioner\r\n\r\n// When pressing next, on any page, the focus will shift to the first error on the page.\r\nconst nextButton = document.querySelector(\"#btnNaeste\") ?? document.querySelector(\".btn-next\");\r\nnextButton?.addEventListener('click', () => {\r\n Array.from(document.querySelectorAll(\".error\"))\r\n .find(e => 'none' !== window.getComputedStyle(e).display)\r\n ?.scrollIntoView()\r\n});\r\n\r\n// always returns false\r\nwindow.setValidationError = function (elem, tekst) {\r\n if (!(elem instanceof jQuery)) {\r\n elem = $(elem);\r\n }\r\n elem.nextAll('div.error').show();\r\n elem.closest('div.fu').addClass('error');\r\n if (tekst) {\r\n elem.nextAll('div.error').find('p').text(tekst);\r\n }\r\n return false; // always false!\r\n};\r\n\r\nwindow.setValidationWarning = function (elem, tekst) {\r\n if (!(elem instanceof jQuery)) {\r\n elem = $(elem);\r\n }\r\n elem.nextAll('div.note').show();\r\n elem.closest('div.fu').addClass('note');\r\n if (tekst) {\r\n elem.nextAll('div.note').find('p').text(tekst);\r\n }\r\n return false; // always false!\r\n};\r\n\r\nwindow.setValidationInfo = function (elem) {\r\n if (!(elem instanceof jQuery)) {\r\n elem = $(elem);\r\n }\r\n\r\n elem.nextAll('div.info').show();\r\n var fu = elem.closest('div.fu');\r\n if (!fu.hasClass('errorstatic')) {\r\n fu.removeClass('error');\r\n }\r\n};\r\n\r\nwindow.removeValidationInfo = function (elem) {\r\n if (!(elem instanceof jQuery)) {\r\n elem = $(elem);\r\n }\r\n\r\n elem.nextAll('div.info').hide();\r\n var fu = elem.closest('div.fu');\r\n\r\n if (!fu.hasClass('infostatic')) {\r\n fu.removeClass('info');\r\n }\r\n};\r\n\r\nwindow.isElementInError = function () {\r\n if (!(elem instanceof jQuery)) {\r\n elem = $(elem);\r\n }\r\n if (elem.closest('div.fu').hasClass('error')) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\nwindow.clearValidationMessage = function (elem) {\r\n window.setValidationOk(elem);\r\n};\r\n\r\n// alwasy returns true\r\nwindow.setValidationOk = function (elem) {\r\n if (!(elem instanceof jQuery)) {\r\n elem = $(elem);\r\n }\r\n elem.next('div.error.msg').hide();\r\n elem.nextAll('div.note').hide();\r\n elem.nextAll('div.info').hide();\r\n var fu = elem.closest('div.fu');\r\n fu.removeClass('note');\r\n fu.find('div.error.msg, div.note, div.info').hide();\r\n\r\n if (!fu.hasClass('errorstatic')) {\r\n fu.removeClass('error');\r\n }\r\n if (!fu.hasClass('infostatic')) {\r\n fu.removeClass('info');\r\n }\r\n return true; // always true!\r\n};\r\n\r\n// Benyttet til bla. kampagnebokse\r\nwindow.validateEmail = function (elem, tekst) {\r\n elem = $(elem);\r\n var email = getInputValue(elem);\r\n var regEx = /^\\s*[_a-z0-9-A-Z]+(\\.[_a-z0-9-A-Z]+)*@[a-z0-9-A-Z-]+(\\.[a-z0-9-A-Z-]+)*(\\.[a-z]{2,5})\\s*$/;\r\n if (email.length > 0) {\r\n if (regEx.test(email.trim())) {\r\n // korrekt format\r\n return setValidationOk(elem);\r\n } else {\r\n if (tekst) {\r\n return setValidationError(elem, tekst);\r\n } else {\r\n return setValidationError(elem);\r\n }\r\n }\r\n }\r\n return setValidationOk(elem);\r\n};\r\n\r\nwindow.validateEmailRequired = function (elem) {\r\n elem = $(elem);\r\n var email = getInputValue(elem);\r\n if (email.length == 0) {\r\n return false;\r\n } else {\r\n return validateEmail(elem);\r\n }\r\n};\r\n\r\nwindow.validateEmailLengthMax50 = function (elem) {\r\n elem = $(elem);\r\n var email = elem.val();\r\n if (email.trim().length > 50) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n};\r\n\r\n// Benyttet til bla. kampagnebokse\r\nwindow.validateMobile = function(elem) {\r\n elem = $(elem);\r\n var mobileNr = getInputValue(elem);\r\n // Forskellen på valideringen på telefon validering og på mobilvalidering er at der for mobiltelefonnumre ikke tillades\r\n // var regEx = /^((\\+\\s?[1-9]\\d{1,2})|(00[1-9][0-9]))?\\s?[0-9](\\s?\\d){7,22}$/; validateTelefon()\r\n var regEx = /^((\\+\\s?[1-9]{1,3})|(0[0-9][0-9][0-9]))?\\s?[1-9](\\s?\\d){7,22}$/;\r\n if (mobileNr.length > 0) {\r\n if (regEx.test(mobileNr)) {\r\n // korrekt format, nu edit outformat\r\n setValidationOk(elem);\r\n\r\n var tlfnr = mobileNr.replace(/\\s/g, '');\r\n var tlfOut;\r\n\r\n if (tlfnr.length == 8) {\r\n //\"normal\" telefonnr.\r\n tlfOut = tlfnr.substring(0, 2) + \" \" + tlfnr.substring(2, 4) + \" \" + tlfnr.substring(4, 6) + \" \" + tlfnr.substring(6, 8);\r\n }\r\n // 11 = +45 foran...\r\n else if (tlfnr.length == 11) {\r\n tlfOut = tlfnr.substring(0, 3) + \" \" + tlfnr.substring(3, 5) + \" \" + tlfnr.substring(5, 7) + \" \" + tlfnr.substring(7, 9) + \" \" + tlfnr.substring(9, 11);\r\n\r\n }\r\n //12 = 0045 foran..\r\n else if (tlfnr.length == 12) {\r\n tlfOut = tlfnr.substring(0, 4) + \" \" + tlfnr.substring(4, 6) + \" \" + tlfnr.substring(6, 8) + \" \" + tlfnr.substring(8, 10) + \" \" + tlfnr.substring(10, 12);\r\n }\r\n else {\r\n //Default.. kan ikke style den rigtigt ?\r\n tlfOut = tlfnr;\r\n }\r\n\r\n elem.val(tlfOut);\r\n return true;\r\n } else {\r\n return setValidationError(elem);\r\n }\r\n } else {\r\n return setValidationOk(elem);\r\n }\r\n}\r\n\r\nwindow.validateMobileRequired = function(elem) {\r\n elem = $(elem);\r\n var mobileNr = getInputValue(elem);\r\n if (mobileNr.length == 0) {\r\n setValidationError(elem);\r\n return false;\r\n }\r\n\r\n return validateMobile(elem);\r\n}\r\n\r\n// format: 26.12.19 || 26.12.2019 || 26-12-19 || 26-12-2019\r\nwindow.validateDateRequired = function (elem, minDateString, maxDateString) {\r\n var el = $(elem);\r\n var datestr = getInputValue(el);\r\n\r\n if (datestr.length == 0) {\r\n setValidationError(el);\r\n return false;\r\n }\r\n\r\n return validateDate(elem, minDateString, maxDateString);\r\n}\r\nwindow.validateDate = function (elem, minDateString, maxDateString) {\r\n var el = $(elem);\r\n //var regEx = /^([012][0-9]|3[01])[-\\.][01][0-9][-\\.](19|20)[0-9][0-9]$/;\r\n var datestr = getInputValue(el);\r\n if (datestr.length > 0) {\r\n //if (!regEx.test(datestr)) {\r\n // // u-korrekt format\r\n // return setValidationError(el);\r\n //}\r\n var dt = ipStringToDate(datestr);\r\n if (!(dt instanceof Date) && isNaN(dt)) {\r\n return setValidationError(el);\r\n }\r\n if (minDateString) {\r\n if (dt < new Date(minDateString)) {\r\n return setValidationError(el);\r\n }\r\n }\r\n if (maxDateString) {\r\n if (dt > new Date(maxDateString)) {\r\n return setValidationError(el);\r\n }\r\n }\r\n }\r\n return setValidationOk(elem);\r\n}\r\n\r\nwindow.ipStringToDate = function (ipstringdate) {\r\n ipstringdate = ipstringdate.replace('-', '.');\r\n var split = ipstringdate.split('.');\r\n\r\n return new Date(split[2], (split[1] - 1), split[0]);\r\n}\r\n\r\nwindow.validateTelefonRequired = function(elem) {\r\n elem = $(elem);\r\n var mobileNr = getInputValue(elem);\r\n if (mobileNr.length == 0) {\r\n setValidationError(elem);\r\n return false;\r\n }\r\n return validateTelefon(elem);\r\n}\r\n\r\nwindow.validateTelefon = function(elem) {\r\n elem = $(elem);\r\n var telNr = getInputValue(elem);\r\n //^((\\+½\\s?[1-9]\\d{1,2})|(00[1-9][0-9]))?\\s?[2-9](\\s?\\d){7,22}$\r\n var regEx = /^((\\+\\s?[1-9]\\d{1,2})|(00[1-9][0-9]))?\\s?[0-9](\\s?\\d){7,22}$/;\r\n if (telNr.length > 0) {\r\n if (regEx.test(telNr)) {\r\n // korrekt format, nu edit outformat\r\n setValidationOk(elem);\r\n\r\n var tlfnr = telNr.replace(/\\s/g, '');\r\n var tlfOut;\r\n\r\n if (tlfnr.length === 8) {\r\n //\"normal\" telefonnr.\r\n tlfOut = tlfnr.substring(0, 2) + \" \" + tlfnr.substring(2, 4) + \" \" + tlfnr.substring(4, 6) + \" \" + tlfnr.substring(6, 8);\r\n }\r\n // 11 = +45 foran...\r\n else if (tlfnr.length == 11) {\r\n tlfOut = tlfnr.substring(0, 3) + \" \" + tlfnr.substring(3, 5) + \" \" + tlfnr.substring(5, 7) + \" \" + tlfnr.substring(7, 9) + \" \" + tlfnr.substring(9, 11);\r\n\r\n }\r\n //12 = 0045 foran..\r\n else if (tlfnr.length === 12) {\r\n tlfOut = tlfnr.substring(0, 4) + \" \" + tlfnr.substring(4, 6) + \" \" + tlfnr.substring(6, 8) + \" \" + tlfnr.substring(8, 10) + \" \" + tlfnr.substring(10, 12);\r\n }\r\n else {\r\n //Default.. kan ikke style den rigtigt ?\r\n tlfOut = tlfnr;\r\n }\r\n\r\n elem.val(tlfOut);\r\n return true;\r\n }\r\n else {\r\n return setValidationError(elem);\r\n }\r\n }\r\n else {\r\n\r\n return setValidationOk(elem);\r\n }\r\n}\r\n\r\n//Required input\r\nwindow.validateRegNr = function(elem) {\r\n elem = $(elem);\r\n var regnr = getInputValue(elem);\r\n var regEx = /^\\d{4}$/;\r\n var errElem = elem.next('div.error');\r\n\r\n if (regnr.length > 0) {\r\n if (regEx.test(regnr)) {\r\n //korrekt format\r\n return setValidationOk(elem);\r\n } else {\r\n //Forkert format\r\n $(\":first-child\", errElem).hide();\r\n $(\":last-child\", errElem).show();\r\n errElem.show();\r\n elem.closest('div.fu').addClass('error');\r\n return false;\r\n }\r\n }\r\n else {\r\n $(\":first-child\", errElem).show();\r\n $(\":last-child\", errElem).hide();\r\n errElem.show();\r\n elem.closest('div.fu').addClass('error');\r\n return false;\r\n }\r\n return false;\r\n}\r\n\r\n//Validerer kontonr\r\n//konto nr er Required!\r\nwindow.validateKontoNr = function(elem) {\r\n\r\n elem = $(elem);\r\n var konto = getInputValue(elem);\r\n var regEx = /^\\d{0,10}$/;\r\n var errElem = elem.next('div.error');\r\n\r\n if (konto.length > 0) {\r\n if (regEx.test(konto)) {\r\n //korrekt format\r\n setValidationOk(elem);\r\n\r\n if (konto.length < 10) {\r\n var leadingZeros = '';\r\n var leng = 10 - konto.length;\r\n for (var i = 0; i < leng; i++) {\r\n leadingZeros += '0';\r\n }\r\n var kontoPrefixed = leadingZeros + konto;\r\n elem.val(kontoPrefixed);\r\n }\r\n\r\n return true;\r\n } else {\r\n //Forkert format\r\n $(\":first-child\", errElem).hide();\r\n $(\":last-child\", errElem).show();\r\n errElem.show();\r\n elem.closest('div.fu').addClass('error');\r\n return false;\r\n }\r\n }\r\n else {\r\n //Obligatorisk felt\r\n $(\":first-child\", errElem).show();\r\n $(\":last-child\", errElem).hide();\r\n errElem.show();\r\n elem.closest('div.fu').addClass('error');\r\n return false;\r\n }\r\n return false;\r\n}\r\n\r\nwindow.validateOnlyLetters = function(elem) {\r\n elem = $(elem);\r\n var input = getInputValue(elem);\r\n var regEx = /^[A-z]+$/;\r\n var errElem = elem.next('div.error');\r\n\r\n if (regEx.test(input)) {\r\n //korrekt format\r\n return setValidationOk(elem);\r\n } else {\r\n //Forkert format\r\n $(\":first-child\", errElem).hide();\r\n $(\":last-child\", errElem).show();\r\n errElem.show();\r\n elem.closest('div.fu').addClass('error');\r\n return false;\r\n }\r\n}\r\n\r\nwindow.validateOnlyDkLetters = function (elem) {\r\n elem = $(elem);\r\n var input = getInputValue(elem);\r\n var regEx = /^[a-zA-ZæøåéÆØÅÉ]+$/;\r\n var errElem = elem.next('div.error');\r\n\r\n if (regEx.test(input)) {\r\n //korrekt format\r\n return setValidationOk(elem);\r\n } else {\r\n //Forkert format\r\n $(':first-child', errElem).hide();\r\n $(':last-child', errElem).show();\r\n errElem.show();\r\n elem.closest('div.fu').addClass('error');\r\n return false;\r\n }\r\n}\r\n\r\nwindow.validateOnlyDkLettersOneWhiteSpaceAllowed = function (elem) {\r\n elem = $(elem);\r\n var input = getInputValue(elem);\r\n var regEx = /^[a-zA-ZæøåéÆØÅÉ]+( [a-zA-ZæøåéÆØÅÉ]+)*$/;\r\n var errElem = elem.next('div.error');\r\n\r\n if (regEx.test(input)) {\r\n //korrekt format\r\n return setValidationOk(elem);\r\n } else {\r\n //Forkert format\r\n $(':first-child', errElem).hide();\r\n $(':last-child', errElem).show();\r\n errElem.show();\r\n elem.closest('div.fu').addClass('error');\r\n return false;\r\n }\r\n}\r\n\r\nwindow.modulus11Cpr = function (elem) {\r\n elem = $(elem);\r\n var valid = {\r\n cpr: validateCprLogic(elem)\r\n };\r\n removeValidationInfo(elem);\r\n if (valid.cpr) {\r\n var cpr = getInputValue(elem).replace(/\\-/g, '');\r\n var chk = 0;\r\n for (var i = 9; i > -1; i--) {\r\n chk += (+cpr.charAt(i)) * ((i > 2) ? (10 - i) : (4 - i));\r\n }\r\n if (chk % 11 === 0) {\r\n removeValidationInfo(elem);\r\n valid.modulus11 = true;\r\n } else {\r\n setValidationInfo(elem);\r\n valid.modulus11 = false;\r\n }\r\n }\r\n return valid;\r\n};\r\n\r\nwindow.validateCpr = function (elem) {\r\n validateCprLogic(elem);\r\n};\r\n\r\nwindow.validateCprPensionsplan2022 = function (elem) {\r\n return validateCprLogic(elem);\r\n};\r\n\r\nwindow.validateCprLogic = function (elem) {\r\n elem = $(elem);\r\n var input = getInputValue(elem);\r\n var regEx = /^[0-3][0-9][0-1][0-9]\\d{2}-?\\d{4}$/;\r\n if (regEx.test(input)) {\r\n return setValidationOk(elem);\r\n }\r\n return setValidationError(elem);\r\n};\r\n\r\nwindow.validateSwift = function(elem) {\r\n elem = $(elem);\r\n var input = getInputValue(elem);\r\n var regEx = /^([A-Z]){4}([A-Z]){2}([0-9a-zA-Z]){2}([0-9a-zA-Z]{3})?$/;\r\n if (regEx.test(input)) {\r\n return setValidationOk(elem);\r\n }\r\n return setValidationError(elem);\r\n}\r\n\r\nwindow.validateIBAN = function(elem) {\r\n elem = $(elem);\r\n var input = getInputValue(elem);\r\n var regEx = /^(([A-Z]){2}([0-9]){2}([0-9A-Z]){0,30})?$/;\r\n if (regEx.test(input)) {\r\n setValidationOk(elem);\r\n return true;\r\n }\r\n return setValidationError(elem);\r\n}\r\n\r\nwindow.validateUdenlandskKontonummer = function(elem) {\r\n elem = $(elem);\r\n var input = getInputValue(elem);\r\n var regEx = /^([0-9a-zA-Z]){0,34}?$/;\r\n if (regEx.test(input)) {\r\n return setValidationOk(elem);\r\n }\r\n return setValidationError(elem);\r\n}\r\n\r\nwindow.validateCvr = function(elem) {\r\n elem = $(elem);\r\n var input = getInputValue(elem);\r\n var regEx = /^\\d{8}$/;\r\n return (regEx.test(input));\r\n}\r\n\r\n///Metoder der returnerer '' (string.empty) såfremt brugeren ikke har indtastet noget.. ellers returneres placeholderværdien (\"indtast email...\")\r\nwindow.getInputValue = function(elem) {\r\n var $this = elem,\r\n val = $this.eq(0).val();\r\n if (val == $this.attr('placeholder'))\r\n return '';\r\n else\r\n return val;\r\n}\r\n\r\n//required\r\n//min 1 max 50\r\n//no numbers\r\nwindow.validateName = function(elem) {\r\n elem = $(elem);\r\n var minlength = 1;\r\n var maxlength = 50;\r\n var regex = /^(\\D*)$/;\r\n var name = getInputValue(elem);\r\n if (name.length < minlength || name.length > maxlength) {\r\n return setValidationError(elem);\r\n }\r\n if (!regex.test(name)) {\r\n return setValidationError(elem);\r\n }\r\n return setValidationOk(elem);\r\n}\r\n// pensionsplan2022 full name validation.\r\nwindow.validateFullName = function(elem, min, max) {\r\n elem = $(elem);\r\n const minlength = min;\r\n const maxlength = max;\r\n // The Regex below matches full names.\r\n // The regex allows for letters a required space and more leters and space and ' Can not end on an space\r\n // Example of valid name \"Æskild Klar'skov hansen\"\r\n const regex = /^[a-zA-ZæøåÆØÅ'-]+\\s[a-zA-ZæøåÆØÅ'-]+(?:\\s[a-zA-ZæøåÆØÅ'-]+)*$/;\r\n const name = getInputValue(elem);\r\n if (name.length < minlength || name.length > maxlength) {\r\n return setValidationError(elem);\r\n }\r\n if (!regex.test(name)) {\r\n return setValidationError(elem);\r\n }\r\n return setValidationOk(elem);\r\n};\r\n\r\n//just required\r\nwindow.validateAddress = function(elem) {\r\n if (!required(elem)) {\r\n setValidationError(elem);\r\n return false;\r\n }\r\n return setValidationOk(elem);\r\n}\r\n\r\n//4 digits - no more no less\r\nwindow.validatePostalcodeDK = function(elem) {\r\n elem = $(elem);\r\n var regex = /^[0-9]{4}$/;\r\n var postal = getInputValue(elem);\r\n if (!regex.test(postal)) {\r\n setValidationError(elem);\r\n return false;\r\n }\r\n return setValidationOk(elem);\r\n}\r\n\r\nwindow.validatePostalcodeWorld = function(elem) {\r\n elem = $(elem);\r\n if (!required(elem)) {\r\n return setValidationError(elem);\r\n }\r\n return setValidationOk(elem);\r\n}\r\n\r\n//required\r\n//min 1 max 50\r\n//no numbers\r\nwindow.validateTown = function(elem) {\r\n elem = $(elem);\r\n var minlength = 1;\r\n var maxlength = 50;\r\n var regex = /^(\\D*)$/;\r\n var town = getInputValue(elem);\r\n if (town.length < minlength || town.length > maxlength) {\r\n return setValidationError(elem);\r\n }\r\n if (!regex.test(town)) {\r\n return setValidationError(elem);\r\n }\r\n return setValidationOk(elem)\r\n}\r\n\r\n\r\n//required\r\n//min 1 max 50\r\n//no numbers\r\nwindow.validateContry = function(elem) {\r\n elem = $(elem);\r\n var minlength = 1;\r\n var maxlength = 50;\r\n var regex = /^(\\D*)$/;\r\n var contry = getInputValue(elem);\r\n if (contry.length < minlength || contry.length > maxlength) {\r\n return setValidationError(elem);\r\n }\r\n if (!regex.test(contry)) {\r\n return setValidationError(elem);\r\n }\r\n return setValidationOk(elem);\r\n}\r\n\r\n\r\n//just required base - length GT 0\r\nwindow.required = function(elem) {\r\n elem = $(elem);\r\n var element = getInputValue(elem);\r\n return element.length > 0;\r\n}\r\n\r\nwindow.validateRequiredField = function(elem) {\r\n elem = $(elem);\r\n var element = getInputValue(elem);\r\n if (element.length === 0) {\r\n return setValidationError(elem);\r\n }\r\n return setValidationOk(elem);\r\n}\r\n\r\nwindow.ValidateTextField = function(elem, minlength, maxlength) {\r\n elem = $(elem);\r\n var theValue = getInputValue(elem);\r\n if (theValue) {\r\n return (theValue.length > minlength && theValue.length < maxlength);\r\n }\r\n //return true;\r\n}\r\n\r\nwindow.validateRequiredRadioBtn = function(elemname){\r\n var btns = $('input[name=\"'+elemname+'\"]');\r\n if(btns.is(':checked'))\r\n {\r\n btns.each(function(){\r\n setValidationOk(this);\r\n });\r\n return true;\r\n\r\n }\r\n else{\r\n btns.each(function(){\r\n setValidationError(this);\r\n });\r\n return false;\r\n }\r\n}\r\n\r\nwindow.validateRequiredRadioBtnBySelector = function (selector) {\r\n var retval = true;\r\n var btns = $(selector);\r\n var uniqueIdsArr = [];\r\n\r\n btns.each(function () {\r\n if (!~$.inArray(this.id, uniqueIdsArr))\r\n {\r\n uniqueIdsArr.push(this.id);\r\n }\r\n });\r\n $.each(uniqueIdsArr, function(index, value) {\r\n if ($(\"input:radio[id=\" + value + \"]:checked\").length == 0) {\r\n setValidationError(\"input:radio[id=\" + value + \"]\");\r\n retval = false;\r\n } else {\r\n setValidationOk(\"input:radio[id=\" + value + \"]\");\r\n }\r\n });\r\n\r\n return retval;\r\n}\r\n\r\n\r\nwindow.validateRequiredCheckboxBySelector = function (selector) {\r\n var retval = true;\r\n var btns = $(selector);\r\n var uniqueIdsArr = [];\r\n\r\n btns.each(function () {\r\n if (!~$.inArray(this.value, uniqueIdsArr)) {\r\n uniqueIdsArr.push(this.value);\r\n }\r\n });\r\n $.each(uniqueIdsArr, function (index, value) {\r\n if ($(\"input:checkbox[value=\" + value + \"]:checked\").length == 0) {\r\n retval = false;\r\n }\r\n });\r\n if (retval == false) {\r\n $.each(uniqueIdsArr, function (index, value) {\r\n setValidationError(\"input:checkbox[value=\" + value + \"]\");\r\n });\r\n }\r\n\r\n return retval;\r\n}\r\n","/**\n\nModificeret af Jan Hjørdie\nHar indstat AlertifyCss som global variabel, for at kunne håndtere parameter css, så når man eks sætter en anden knap farve, at den også forbliver samme farve når den fader ud\n**/\n\n/**\n * alertify\n * An unobtrusive customizable JavaScript notification system\n *\n * @author Fabien Doiron \n * @copyright Fabien Doiron 2013\n * @license MIT \n * @link http://fabien-d.github.com/alertify.js/\n * @module alertify\n * @version 0.3.11\n */\n(function (global, undefined) {\n \"use strict\";\n\n var document = global.document,\n Alertify;\n\n var AlertifyCss = \"\";\n\n Alertify = function () {\n\n var _alertify = {},\n dialogs = {},\n isopen = false,\n keys = { ENTER: 13, ESC: 27, SPACE: 32 },\n queue = [],\n $, btnCancel, btnOK, btnReset, btnResetBack, btnFocus, elCallee, elCover, elDialog, elLog, form, input, getTransitionEvent;\n\n /**\n * Markup pieces\n * @type {Object}\n */\n dialogs = {\n buttons : {\n holder : \"\",\n submit : \"\",\n ok : \"\",\n cancel : \"\"\n },\n input : \"
\",\n message : \"

{{message}}

\",\n log : \"
{{message}}
\"\n };\n\n /**\n * Return the proper transitionend event\n * @return {String} Transition type string\n */\n getTransitionEvent = function () {\n var t,\n type,\n supported = false,\n el = document.createElement(\"fakeelement\"),\n transitions = {\n \"WebkitTransition\" : \"webkitTransitionEnd\",\n \"MozTransition\" : \"transitionend\",\n \"OTransition\" : \"otransitionend\",\n \"transition\" : \"transitionend\"\n };\n\n for (t in transitions) {\n if (el.style[t] !== undefined) {\n type = transitions[t];\n supported = true;\n break;\n }\n }\n\n return {\n type : type,\n supported : supported\n };\n };\n\n /**\n * Shorthand for document.getElementById()\n *\n * @param {String} id A specific element ID\n * @return {Object} HTML element\n */\n $ = function (id) {\n return document.getElementById(id);\n };\n\n /**\n * Alertify private object\n * @type {Object}\n */\n _alertify = {\n\n /**\n * Labels object\n * @type {Object}\n */\n labels : {\n ok : \"OK\",\n cancel : \"Cancel\"\n },\n\n /**\n * Delay number\n * @type {Number}\n */\n delay : 5000,\n\n /**\n * Whether buttons are reversed (default is secondary/primary)\n * @type {Boolean}\n */\n buttonReverse : false,\n\n /**\n * Which button should be focused by default\n * @type {String} \"ok\" (default), \"cancel\", or \"none\"\n */\n buttonFocus : \"ok\",\n\n /**\n * Set the transition event on load\n * @type {[type]}\n */\n transition : undefined,\n\n /**\n * Set the proper button click events\n *\n * @param {Function} fn [Optional] Callback function\n *\n * @return {undefined}\n */\n addListeners : function (fn) {\n var hasOK = (typeof btnOK !== \"undefined\"),\n hasCancel = (typeof btnCancel !== \"undefined\"),\n hasInput = (typeof input !== \"undefined\"),\n val = \"\",\n self = this,\n ok, cancel, common, key, reset;\n\n // ok event handler\n ok = function (event) {\n if (typeof event.preventDefault !== \"undefined\") event.preventDefault();\n common(event);\n if (typeof input !== \"undefined\") val = input.value;\n if (typeof fn === \"function\") {\n if (typeof input !== \"undefined\") {\n fn(true, val);\n }\n else fn(true);\n }\n return false;\n };\n\n // cancel event handler\n cancel = function (event) {\n if (typeof event.preventDefault !== \"undefined\") event.preventDefault();\n common(event);\n if (typeof fn === \"function\") fn(false);\n return false;\n };\n\n // common event handler (keyup, ok and cancel)\n common = function (event) {\n self.hide();\n self.unbind(document.body, \"keyup\", key);\n self.unbind(btnReset, \"focus\", reset);\n if (hasOK) self.unbind(btnOK, \"click\", ok);\n if (hasCancel) self.unbind(btnCancel, \"click\", cancel);\n };\n\n // keyup handler\n key = function (event) {\n var keyCode = event.keyCode;\n if ((keyCode === keys.SPACE && !hasInput) || (hasInput && keyCode === keys.ENTER)) ok(event);\n if (keyCode === keys.ESC && hasCancel) cancel(event);\n };\n\n // reset focus to first item in the dialog\n reset = function (event) {\n try {\n if (hasInput) input.focus();\n else if (!hasCancel || self.buttonReverse) btnOK.focus();\n else btnCancel.focus();\n } catch (e) {\n\n }\n \n };\n\n // handle reset focus link\n // this ensures that the keyboard focus does not\n // ever leave the dialog box until an action has\n // been taken\n this.bind(btnReset, \"focus\", reset);\n this.bind(btnResetBack, \"focus\", reset);\n // handle OK click\n if (hasOK) this.bind(btnOK, \"click\", ok);\n // handle Cancel click\n if (hasCancel) this.bind(btnCancel, \"click\", cancel);\n // listen for keys, Cancel => ESC\n this.bind(document.body, \"keyup\", key);\n if (!this.transition.supported) {\n try {\n this.setFocus();\n } catch (e) {\n\n }\n \n }\n },\n\n /**\n * Bind events to elements\n *\n * @param {Object} el HTML Object\n * @param {Event} event Event to attach to element\n * @param {Function} fn Callback function\n *\n * @return {undefined}\n */\n bind : function (el, event, fn) {\n if (typeof el.addEventListener === \"function\") {\n el.addEventListener(event, fn, false);\n } else if (el.attachEvent) {\n el.attachEvent(\"on\" + event, fn);\n }\n },\n\n /**\n * Use alertify as the global error handler (using window.onerror)\n *\n * @return {boolean} success\n */\n handleErrors : function () {\n if (typeof global.onerror !== \"undefined\") {\n var self = this;\n global.onerror = function (msg, url, line) {\n self.error(\"[\" + msg + \" on line \" + line + \" of \" + url + \"]\", 0);\n };\n return true;\n } else {\n return false;\n }\n },\n\n /**\n * Append button HTML strings\n *\n * @param {String} secondary The secondary button HTML string\n * @param {String} primary The primary button HTML string\n *\n * @return {String} The appended button HTML strings\n */\n appendButtons : function (secondary, primary) {\n return this.buttonReverse ? primary + secondary : secondary + primary;\n },\n\n /**\n * Build the proper message box\n *\n * @param {Object} item Current object in the queue\n *\n * @return {String} An HTML string of the message box\n */\n build : function (item) {\n var html = \"\",\n type = item.type,\n message = item.message,\n css = item.cssClass || \"\";\n AlertifyCss = css;\n\n html += \"
\";\n html += \"Reset Focus\";\n\n if (_alertify.buttonFocus === \"none\") html += \"\";\n\n // doens't require an actual form\n if (type === \"prompt\") html += \"
\";\n\n html += \"
\";\n html += dialogs.message.replace(\"{{message}}\", message);\n\n if (type === \"prompt\") html += dialogs.input;\n\n html += dialogs.buttons.holder;\n html += \"
\";\n\n if (type === \"prompt\") html += \"
\";\n\n html += \"Reset Focus\";\n html += \"
\";\n\n switch (type) {\n case \"confirm\":\n html = html.replace(\"{{buttons}}\", this.appendButtons(dialogs.buttons.cancel, dialogs.buttons.ok));\n html = html.replace(\"{{ok}}\", this.labels.ok).replace(\"{{cancel}}\", this.labels.cancel);\n break;\n case \"prompt\":\n html = html.replace(\"{{buttons}}\", this.appendButtons(dialogs.buttons.cancel, dialogs.buttons.submit));\n html = html.replace(\"{{ok}}\", this.labels.ok).replace(\"{{cancel}}\", this.labels.cancel);\n break;\n case \"alert\":\n html = html.replace(\"{{buttons}}\", dialogs.buttons.ok);\n html = html.replace(\"{{ok}}\", this.labels.ok);\n break;\n default:\n break;\n }\n\n elDialog.className = \"alertify alertify-\" + type + \" \" + css;\n elCover.className = \"alertify-cover\";\n return html;\n },\n\n /**\n * Close the log messages\n *\n * @param {Object} elem HTML Element of log message to close\n * @param {Number} wait [optional] Time (in ms) to wait before automatically hiding the message, if 0 never hide\n *\n * @return {undefined}\n */\n close : function (elem, wait) {\n // Unary Plus: +\"2\" === 2\n var timer = (wait && !isNaN(wait)) ? +wait : this.delay,\n self = this,\n hideElement, transitionDone;\n\n // set click event on log messages\n this.bind(elem, \"click\", function () {\n hideElement(elem);\n });\n // Hide the dialog box after transition\n // This ensure it doens't block any element from being clicked\n transitionDone = function (event) {\n event.stopPropagation();\n // unbind event so function only gets called once\n self.unbind(this, self.transition.type, transitionDone);\n // remove log message\n elLog.removeChild(this);\n if (!elLog.hasChildNodes()) elLog.className += \" alertify-logs-hidden\";\n };\n // this sets the hide class to transition out\n // or removes the child if css transitions aren't supported\n hideElement = function (el) {\n // ensure element exists\n if (typeof el !== \"undefined\" && el.parentNode === elLog) {\n // whether CSS transition exists\n if (self.transition.supported) {\n self.bind(el, self.transition.type, transitionDone);\n el.className += \" alertify-log-hide\";\n } else {\n elLog.removeChild(el);\n if (!elLog.hasChildNodes()) elLog.className += \" alertify-logs-hidden\";\n }\n }\n };\n // never close (until click) if wait is set to 0\n if (wait === 0) return;\n // set timeout to auto close the log message\n setTimeout(function () { hideElement(elem); }, timer);\n },\n\n /**\n * Create a dialog box\n *\n * @param {String} message The message passed from the callee\n * @param {String} type Type of dialog to create\n * @param {Function} fn [Optional] Callback function\n * @param {String} placeholder [Optional] Default value for prompt input field\n * @param {String} cssClass [Optional] Class(es) to append to dialog box\n *\n * @return {Object}\n */\n dialog : function (message, type, fn, placeholder, cssClass) {\n // set the current active element\n // this allows the keyboard focus to be resetted\n // after the dialog box is closed\n elCallee = document.activeElement;\n // check to ensure the alertify dialog element\n // has been successfully created\n var check = function () {\n if ((elLog && elLog.scrollTop !== null) && (elCover && elCover.scrollTop !== null)) return;\n else check();\n };\n // error catching\n if (typeof message !== \"string\") throw new Error(\"message must be a string\");\n if (typeof type !== \"string\") throw new Error(\"type must be a string\");\n if (typeof fn !== \"undefined\" && typeof fn !== \"function\") throw new Error(\"fn must be a function\");\n // initialize alertify if it hasn't already been done\n this.init();\n check();\n\n queue.push({ type: type, message: message, callback: fn, placeholder: placeholder, cssClass: cssClass });\n if (!isopen) this.setup();\n\n return this;\n },\n\n /**\n * Extend the log method to create custom methods\n *\n * @param {String} type Custom method name\n *\n * @return {Function}\n */\n extend : function (type) {\n if (typeof type !== \"string\") throw new Error(\"extend method must have exactly one paramter\");\n return function (message, wait) {\n this.log(message, type, wait);\n return this;\n };\n },\n\n /**\n * Hide the dialog and rest to defaults\n *\n * @return {undefined}\n */\n hide : function () {\n var transitionDone,\n self = this;\n // remove reference from queue\n queue.splice(0,1);\n // if items remaining in the queue\n if (queue.length > 0) this.setup(true);\n else {\n isopen = false;\n // Hide the dialog box after transition\n // This ensure it doens't block any element from being clicked\n transitionDone = function (event) {\n event.stopPropagation();\n // unbind event so function only gets called once\n self.unbind(elDialog, self.transition.type, transitionDone);\n };\n // whether CSS transition exists\n if (this.transition.supported) {\n this.bind(elDialog, this.transition.type, transitionDone);\n elDialog.className = \"alertify alertify-hide alertify-hidden \" + AlertifyCss;\n } else {\n elDialog.className = \"alertify alertify-hide alertify-hidden alertify-isHidden\";\n }\n elCover.className = \"alertify-cover alertify-cover-hidden\";\n // set focus to the last element or body\n // after the dialog is closed\n try {\n elCallee.focus();\n } catch (e) {\n\n }\n \n }\n },\n\n /**\n * Initialize Alertify\n * Create the 2 main elements\n *\n * @return {undefined}\n */\n init : function () {\n // ensure legacy browsers support html5 tags\n document.createElement(\"nav\");\n document.createElement(\"article\");\n document.createElement(\"section\");\n // cover\n if ($(\"alertify-cover\") == null) {\n elCover = document.createElement(\"div\");\n elCover.setAttribute(\"id\", \"alertify-cover\");\n elCover.className = \"alertify-cover alertify-cover-hidden\";\n document.body.appendChild(elCover);\n }\n // main element\n if ($(\"alertify\") == null) {\n isopen = false;\n queue = [];\n elDialog = document.createElement(\"section\");\n elDialog.setAttribute(\"id\", \"alertify\");\n elDialog.className = \"alertify alertify-hidden\";\n document.body.appendChild(elDialog);\n }\n // log element\n if ($(\"alertify-logs\") == null) {\n elLog = document.createElement(\"section\");\n elLog.setAttribute(\"id\", \"alertify-logs\");\n elLog.className = \"alertify-logs alertify-logs-hidden\";\n document.body.appendChild(elLog);\n }\n // set tabindex attribute on body element\n // this allows script to give it focus\n // after the dialog is closed\n document.body.setAttribute(\"tabindex\", \"0\");\n // set transition type\n this.transition = getTransitionEvent();\n },\n\n /**\n * Show a new log message box\n *\n * @param {String} message The message passed from the callee\n * @param {String} type [Optional] Optional type of log message\n * @param {Number} wait [Optional] Time (in ms) to wait before auto-hiding the log\n *\n * @return {Object}\n */\n log : function (message, type, wait) {\n // check to ensure the alertify dialog element\n // has been successfully created\n var check = function () {\n if (elLog && elLog.scrollTop !== null) return;\n else check();\n };\n // initialize alertify if it hasn't already been done\n this.init();\n check();\n\n elLog.className = \"alertify-logs\";\n this.notify(message, type, wait);\n return this;\n },\n\n /**\n * Add new log message\n * If a type is passed, a class name \"alertify-log-{type}\" will get added.\n * This allows for custom look and feel for various types of notifications.\n *\n * @param {String} message The message passed from the callee\n * @param {String} type [Optional] Type of log message\n * @param {Number} wait [Optional] Time (in ms) to wait before auto-hiding\n *\n * @return {undefined}\n */\n notify : function (message, type, wait) {\n var log = document.createElement(\"article\");\n log.className = \"alertify-log\" + ((typeof type === \"string\" && type !== \"\") ? \" alertify-log-\" + type : \"\");\n log.innerHTML = message;\n // append child\n elLog.appendChild(log);\n // triggers the CSS animation\n setTimeout(function() { log.className = log.className + \" alertify-log-show\"; }, 50);\n this.close(log, wait);\n },\n\n /**\n * Set properties\n *\n * @param {Object} args Passing parameters\n *\n * @return {undefined}\n */\n set : function (args) {\n var k;\n // error catching\n if (typeof args !== \"object\" && args instanceof Array) throw new Error(\"args must be an object\");\n // set parameters\n for (k in args) {\n if (args.hasOwnProperty(k)) {\n this[k] = args[k];\n }\n }\n },\n\n /**\n * Common place to set focus to proper element\n *\n * @return {undefined}\n */\n setFocus : function () {\n try {\n if (input) {\n input.focus();\n input.select();\n }\n else btnFocus.focus();\n } catch (e) {\n\n }\n },\n\n /**\n * Initiate all the required pieces for the dialog box\n *\n * @return {undefined}\n */\n setup : function (fromQueue) {\n var item = queue[0],\n self = this,\n transitionDone;\n\n // dialog is open\n isopen = true;\n // Set button focus after transition\n transitionDone = function (event) {\n event.stopPropagation();\n try {\n self.setFocus();\n } catch (e) {\n\n }\n // unbind event so function only gets called once\n self.unbind(elDialog, self.transition.type, transitionDone);\n };\n // whether CSS transition exists\n if (this.transition.supported && !fromQueue) {\n this.bind(elDialog, this.transition.type, transitionDone);\n }\n // build the proper dialog HTML\n elDialog.innerHTML = this.build(item);\n // assign all the common elements\n btnReset = $(\"alertify-resetFocus\");\n btnResetBack = $(\"alertify-resetFocusBack\");\n btnOK = $(\"alertify-ok\") || undefined;\n btnCancel = $(\"alertify-cancel\") || undefined;\n btnFocus = (_alertify.buttonFocus === \"cancel\") ? btnCancel : ((_alertify.buttonFocus === \"none\") ? $(\"alertify-noneFocus\") : btnOK),\n input = $(\"alertify-text\") || undefined;\n form = $(\"alertify-form\") || undefined;\n // add placeholder value to the input field\n if (typeof item.placeholder === \"string\" && item.placeholder !== \"\") input.value = item.placeholder;\n try {\n if (fromQueue) this.setFocus();\n } catch (e) {\n \n }\n \n this.addListeners(item.callback);\n },\n\n /**\n * Unbind events to elements\n *\n * @param {Object} el HTML Object\n * @param {Event} event Event to detach to element\n * @param {Function} fn Callback function\n *\n * @return {undefined}\n */\n unbind : function (el, event, fn) {\n if (typeof el.removeEventListener === \"function\") {\n el.removeEventListener(event, fn, false);\n } else if (el.detachEvent) {\n el.detachEvent(\"on\" + event, fn);\n }\n }\n };\n\n return {\n alert : function (message, fn, cssClass) { _alertify.dialog(message, \"alert\", fn, \"\", cssClass); return this; },\n confirm : function (message, fn, cssClass) { _alertify.dialog(message, \"confirm\", fn, \"\", cssClass); return this; },\n extend : _alertify.extend,\n init : _alertify.init,\n log : function (message, type, wait) { _alertify.log(message, type, wait); return this; },\n prompt : function (message, fn, placeholder, cssClass) { _alertify.dialog(message, \"prompt\", fn, placeholder, cssClass); return this; },\n success : function (message, wait) { _alertify.log(message, \"success\", wait); return this; },\n error : function (message, wait) { _alertify.log(message, \"error\", wait); return this; },\n set : function (args) { _alertify.set(args); },\n labels : _alertify.labels,\n debug : _alertify.handleErrors\n };\n };\n\n // AMD and window support\n if (typeof define === \"function\") {\n define([], function () { return new Alertify(); });\n } else if (typeof global.alertify === \"undefined\") {\n global.alertify = new Alertify();\n }\n\n}(typeof window !== 'undefined' ? window : this)); ","/*!\r\n* jQuery cookie consent plugin\r\n* Original author: @mi2oon\r\n* Further changes, comments: @mi2oon\r\n* Licensed under the MIT license\r\n*/\r\n\r\n;(function ( $, window, document, undefined ) {\r\n\tvar pluginName = 'cookieConsent',\r\n\t\tdefaults = {\r\n\t\t\tcookieName: 'cookieConsent',\r\n\t\t\tbtn: {\r\n\t\t\t\taccept: '.accept',\r\n\t\t\t\tdecline: '.decline',\r\n\t\t\t\tclose: '.close'\r\n\t\t\t},\r\n\t\t\ttransition: {\r\n\t\t\t\tshow: {\r\n\t\t\t\t\ttype: 'fadeIn',\r\n\t\t\t\t\tduration: 800\r\n\t\t\t\t},\r\n\t\t\t\thide: {\r\n\t\t\t\t\ttype: 'fadeOut',\r\n\t\t\t\t\tduration: 800\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tconsentType: 'explicit', // implied\r\n\t\t\tonAccepted: function(elm){},\r\n\t\t\tonDeclined: function(elm){},\r\n\t\t\tonShow: function(elm){},\r\n\t\t\tonHide: function(elm){},\r\n\t\t\tonCheck: function(){}\r\n\t\t},\r\n\t\tcookie = {\r\n\t\tget: function(){\r\n\t\t\tvar ca = document.cookie.split(';');\r\n\t\t\tfor(var i=0;i < ca.length;i++) {\r\n\t\t\t\tvar c = ca[i];\r\n\t\t\t\twhile (c.charAt(0)==' ') c = c.substring(1, c.length);\r\n\t\t\t\tif (c.indexOf(defaults.cookieName) === 0){\r\n\t\t\t\t\treturn c.substring(defaults.cookieName.length + 1,c.length);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t},\r\n\t\tset: function(value){\r\n\t\t\tvar date = new Date();\r\n\t\t\tdate.setTime(date.getTime()+315532800000);\r\n\t\t\tdocument.cookie = defaults.cookieName+\"=\"+value+\"; expires=\"+date.toGMTString()+\"; path=/\";\r\n\t\t}\r\n\t};\r\n\t// The plugin constructor\r\n\tfunction Plugin( element, options ) {\r\n\t\tthis.element = element;\r\n\t\tthis.options = $.extend( {}, defaults, options) ;\r\n\r\n\t\tthis._defaults = defaults;\r\n\t\tthis._name = pluginName;\r\n\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tPlugin.prototype.init = function () {\r\n\t\tvar elm = $(this.element),\r\n\t\t\topt = this.options;\r\n\r\n\t\telm.on('click', 'a', function(e){\r\n\t\t\tif($(this).is(opt.btn.close)){\r\n\t\t\t\telm[opt.transition.hide.type](opt.transition.hide.duration);\r\n\r\n\t\t\t\tif(opt.consentType === 'implied'){\r\n\t\t\t\t\tcookie.set('allowed');\r\n\t\t\t\t\topt.onAccepted.call(this, elm);\r\n\t\t\t\t}\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tif($(this).is(opt.btn.accept)){\r\n\t\t\t\tcookie.set('allowed');\r\n\t\t\t\topt.onAccepted.call(this, elm);\r\n\t\t\t\telm[opt.transition.hide.type](opt.transition.hide.duration, function(){\r\n\t\t\t\t\topt.onHide.call(this, elm);\r\n\t\t\t\t});\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tif($(this).is(opt.btn.decline)){\r\n\t\t\t\tcookie.set('disallowed');\r\n\t\t\t\topt.onDeclined.call(this, elm);\r\n\t\t\t\telm[opt.transition.hide.type](opt.transition.hide.duration, function(){\r\n\t\t\t\t\topt.onHide.call(this, elm);\r\n\t\t\t\t});\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar status = cookie.get();\r\n\t\topt.onCheck.call(elm, status);\r\n\t\tif (status === null){\r\n\t\t\telm[opt.transition.show.type](opt.transition.show.duration, function(){\r\n\t\t\t\t\topt.onShow.call(this, elm);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\t$.fn[pluginName] = function ( options ) {\r\n\t\treturn this.each(function () {\r\n\t\t\tif (!$.data(this, 'plugin_' + pluginName)) {\r\n\t\t\t\t$.data(this, 'plugin_' + pluginName,\r\n\t\t\t\tnew Plugin( this, options ));\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n})( jQuery, window, document );","/*!\n * fancyBox - jQuery Plugin\n * version: 2.1.4 (Thu, 10 Jan 2013)\n * @requires jQuery v1.6 or later\n *\n * Examples at http://fancyapps.com/fancybox/\n * License: www.fancyapps.com/fancybox/#license\n *\n * Copyright 2012 Janis Skarnelis - janis@fancyapps.com\n *\n */\n\n(function (window, document, $, undefined) {\n\t\"use strict\";\n\n\tvar W = $(window),\n\t\tD = $(document),\n\t\tF = $.fancybox = function () {\n\t\t\tF.open.apply( this, arguments );\n\t\t},\n\t\tIE = navigator.userAgent.match(/msie/),\n\t\tdidUpdate = null,\n\t\tisTouch\t = document.createTouch !== undefined,\n\n\t\tisQuery\t= function(obj) {\n\t\t\treturn obj && obj.hasOwnProperty && obj instanceof $;\n\t\t},\n\t\tisString = function(str) {\n\t\t\treturn str && $.type(str) === \"string\";\n\t\t},\n\t\tisPercentage = function(str) {\n\t\t\treturn isString(str) && str.indexOf('%') > 0;\n\t\t},\n\t\tisScrollable = function(el) {\n\t\t\treturn (el && !(el.style.overflow && el.style.overflow === 'hidden') && ((el.clientWidth && el.scrollWidth > el.clientWidth) || (el.clientHeight && el.scrollHeight > el.clientHeight)));\n\t\t},\n\t\tgetScalar = function(orig, dim) {\n\t\t\tvar value = parseInt(orig, 10) || 0;\n\n\t\t\tif (dim && isPercentage(orig)) {\n\t\t\t\tvalue = F.getViewport()[ dim ] / 100 * value;\n\t\t\t}\n\n\t\t\treturn Math.ceil(value);\n\t\t},\n\t\tgetValue = function(value, dim) {\n\t\t\treturn getScalar(value, dim) + 'px';\n\t\t};\n\n\t$.extend(F, {\n\t\t// The current version of fancyBox\n\t\tversion: '2.1.4',\n\n\t\tdefaults: {\n\t\t\tpadding : 15,\n\t\t\tmargin : 20,\n\n\t\t\twidth : 800,\n\t\t\theight : 600,\n\t\t\tminWidth : 100,\n\t\t\tminHeight : 100,\n\t\t\tmaxWidth : 9999,\n\t\t\tmaxHeight : 9999,\n\n\t\t\tautoSize : true,\n\t\t\tautoHeight : false,\n\t\t\tautoWidth : false,\n\n\t\t\tautoResize : true,\n\t\t\tautoCenter : !isTouch,\n\t\t\tfitToView : true,\n\t\t\taspectRatio : false,\n\t\t\ttopRatio : 0.5,\n\t\t\tleftRatio : 0.5,\n\n\t\t\tscrolling : 'auto', // 'auto', 'yes' or 'no'\n\t\t\twrapCSS : '',\n\n\t\t\tarrows : true,\n\t\t\tcloseBtn : true,\n\t\t\tcloseClick : false,\n\t\t\tnextClick : false,\n\t\t\tmouseWheel : true,\n\t\t\tautoPlay : false,\n\t\t\tplaySpeed : 3000,\n\t\t\tpreload : 3,\n\t\t\tmodal : false,\n\t\t\tloop : true,\n\n\t\t\tajax : {\n\t\t\t\tdataType : 'html',\n\t\t\t\theaders : { 'X-fancyBox': true }\n\t\t\t},\n\t\t\tiframe : {\n\t\t\t\tscrolling : 'auto',\n\t\t\t\tpreload : true\n\t\t\t},\n\t\t\tswf : {\n\t\t\t\twmode: 'transparent',\n\t\t\t\tallowfullscreen : 'true',\n\t\t\t\tallowscriptaccess : 'always'\n\t\t\t},\n\n\t\t\tkeys : {\n\t\t\t\tnext : {\n\t\t\t\t\t13 : 'left', // enter\n\t\t\t\t\t34 : 'up', // page down\n\t\t\t\t\t39 : 'left', // right arrow\n\t\t\t\t\t40 : 'up' // down arrow\n\t\t\t\t},\n\t\t\t\tprev : {\n\t\t\t\t\t8 : 'right', // backspace\n\t\t\t\t\t33 : 'down', // page up\n\t\t\t\t\t37 : 'right', // left arrow\n\t\t\t\t\t38 : 'down' // up arrow\n\t\t\t\t},\n\t\t\t\tclose : [27], // escape key\n\t\t\t\tplay : [32], // space - start/stop slideshow\n\t\t\t\ttoggle : [70] // letter \"f\" - toggle fullscreen\n\t\t\t},\n\n\t\t\tdirection : {\n\t\t\t\tnext : 'left',\n\t\t\t\tprev : 'right'\n\t\t\t},\n\n\t\t\tscrollOutside : true,\n\n\t\t\t// Override some properties\n\t\t\tindex : 0,\n\t\t\ttype : null,\n\t\t\thref : null,\n\t\t\tcontent : null,\n\t\t\ttitle : null,\n\n\t\t\t// HTML templates\n\t\t\ttpl: {\n\t\t\t\twrap : '
',\n\t\t\t\timage : '\"\"',\n\t\t\t\tiframe : '',\n\t\t\t\terror : '

The requested content cannot be loaded.
Please try again later.

',\n\t\t\t\tcloseBtn : '',\n\t\t\t\tnext : '',\n\t\t\t\tprev : ''\n\t\t\t},\n\n\t\t\t// Properties for each animation type\n\t\t\t// Opening fancyBox\n\t\t\topenEffect : 'fade', // 'elastic', 'fade' or 'none'\n\t\t\topenSpeed : 250,\n\t\t\topenEasing : 'swing',\n\t\t\topenOpacity : true,\n\t\t\topenMethod : 'zoomIn',\n\n\t\t\t// Closing fancyBox\n\t\t\tcloseEffect : 'fade', // 'elastic', 'fade' or 'none'\n\t\t\tcloseSpeed : 250,\n\t\t\tcloseEasing : 'swing',\n\t\t\tcloseOpacity : true,\n\t\t\tcloseMethod : 'zoomOut',\n\n\t\t\t// Changing next gallery item\n\t\t\tnextEffect : 'elastic', // 'elastic', 'fade' or 'none'\n\t\t\tnextSpeed : 250,\n\t\t\tnextEasing : 'swing',\n\t\t\tnextMethod : 'changeIn',\n\n\t\t\t// Changing previous gallery item\n\t\t\tprevEffect : 'elastic', // 'elastic', 'fade' or 'none'\n\t\t\tprevSpeed : 250,\n\t\t\tprevEasing : 'swing',\n\t\t\tprevMethod : 'changeOut',\n\n\t\t\t// Enable default helpers\n\t\t\thelpers : {\n\t\t\t\toverlay : true,\n\t\t\t\ttitle : true\n\t\t\t},\n\n\t\t\t// Callbacks\n\t\t\tonCancel : $.noop, // If canceling\n\t\t\tbeforeLoad : $.noop, // Before loading\n\t\t\tafterLoad : $.noop, // After loading\n\t\t\tbeforeShow : $.noop, // Before changing in current item\n\t\t\tafterShow : $.noop, // After opening\n\t\t\tbeforeChange : $.noop, // Before changing gallery item\n\t\t\tbeforeClose : $.noop, // Before closing\n\t\t\tafterClose : $.noop // After closing\n\t\t},\n\n\t\t//Current state\n\t\tgroup : {}, // Selected group\n\t\topts : {}, // Group options\n\t\tprevious : null, // Previous element\n\t\tcoming : null, // Element being loaded\n\t\tcurrent : null, // Currently loaded element\n\t\tisActive : false, // Is activated\n\t\tisOpen : false, // Is currently open\n\t\tisOpened : false, // Have been fully opened at least once\n\n\t\twrap : null,\n\t\tskin : null,\n\t\touter : null,\n\t\tinner : null,\n\n\t\tplayer : {\n\t\t\ttimer : null,\n\t\t\tisActive : false\n\t\t},\n\n\t\t// Loaders\n\t\tajaxLoad : null,\n\t\timgPreload : null,\n\n\t\t// Some collections\n\t\ttransitions : {},\n\t\thelpers : {},\n\n\t\t/*\n\t\t *\tStatic methods\n\t\t */\n\n\t\topen: function (group, opts) {\n\t\t\tif (!group) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!$.isPlainObject(opts)) {\n\t\t\t\topts = {};\n\t\t\t}\n\n\t\t\t// Close if already active\n\t\t\tif (false === F.close(true)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Normalize group\n\t\t\tif (!$.isArray(group)) {\n\t\t\t\tgroup = isQuery(group) ? $(group).get() : [group];\n\t\t\t}\n\n\t\t\t// Recheck if the type of each element is `object` and set content type (image, ajax, etc)\n\t\t\t$.each(group, function(i, element) {\n\t\t\t\tvar obj = {},\n\t\t\t\t\thref,\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent,\n\t\t\t\t\ttype,\n\t\t\t\t\trez,\n\t\t\t\t\threfParts,\n\t\t\t\t\tselector;\n\n\t\t\t\tif ($.type(element) === \"object\") {\n\t\t\t\t\t// Check if is DOM element\n\t\t\t\t\tif (element.nodeType) {\n\t\t\t\t\t\telement = $(element);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isQuery(element)) {\n\t\t\t\t\t\tobj = {\n\t\t\t\t\t\t\thref : element.data('fancybox-href') || element.attr('href'),\n\t\t\t\t\t\t\ttitle : element.data('fancybox-title') || element.attr('title'),\n\t\t\t\t\t\t\tisDom : true,\n\t\t\t\t\t\t\telement : element\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif ($.metadata) {\n\t\t\t\t\t\t\t$.extend(true, obj, element.metadata());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tobj = element;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\thref = opts.href || obj.href || (isString(element) ? element : null);\n\t\t\t\ttitle = opts.title !== undefined ? opts.title : obj.title || '';\n\n\t\t\t\tcontent = opts.content || obj.content;\n\t\t\t\ttype = content ? 'html' : (opts.type || obj.type);\n\n\t\t\t\tif (!type && obj.isDom) {\n\t\t\t\t\ttype = element.data('fancybox-type');\n\n\t\t\t\t\tif (!type) {\n\t\t\t\t\t\trez = element.prop('class').match(/fancybox\\.(\\w+)/);\n\t\t\t\t\t\ttype = rez ? rez[1] : null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (isString(href)) {\n\t\t\t\t\t// Try to guess the content type\n\t\t\t\t\tif (!type) {\n\t\t\t\t\t\tif (F.isImage(href)) {\n\t\t\t\t\t\t\ttype = 'image';\n\n\t\t\t\t\t\t} else if (F.isSWF(href)) {\n\t\t\t\t\t\t\ttype = 'swf';\n\n\t\t\t\t\t\t} else if (href.charAt(0) === '#') {\n\t\t\t\t\t\t\ttype = 'inline';\n\n\t\t\t\t\t\t} else if (isString(element)) {\n\t\t\t\t\t\t\ttype = 'html';\n\t\t\t\t\t\t\tcontent = element;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Split url into two pieces with source url and content selector, e.g,\n\t\t\t\t\t// \"/mypage.html #my_id\" will load \"/mypage.html\" and display element having id \"my_id\"\n\t\t\t\t\tif (type === 'ajax') {\n\t\t\t\t\t\threfParts = href.split(/\\s+/, 2);\n\t\t\t\t\t\thref = hrefParts.shift();\n\t\t\t\t\t\tselector = hrefParts.shift();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!content) {\n\t\t\t\t\tif (type === 'inline') {\n\t\t\t\t\t\tif (href) {\n\t\t\t\t\t\t\tcontent = $( isString(href) ? href.replace(/.*(?=#[^\\s]+$)/, '') : href ); //strip for ie7\n\n\t\t\t\t\t\t} else if (obj.isDom) {\n\t\t\t\t\t\t\tcontent = element;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if (type === 'html') {\n\t\t\t\t\t\tcontent = href;\n\n\t\t\t\t\t} else if (!type && !href && obj.isDom) {\n\t\t\t\t\t\ttype = 'inline';\n\t\t\t\t\t\tcontent = element;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$.extend(obj, {\n\t\t\t\t\thref : href,\n\t\t\t\t\ttype : type,\n\t\t\t\t\tcontent : content,\n\t\t\t\t\ttitle : title,\n\t\t\t\t\tselector : selector\n\t\t\t\t});\n\n\t\t\t\tgroup[ i ] = obj;\n\t\t\t});\n\n\t\t\t// Extend the defaults\n\t\t\tF.opts = $.extend(true, {}, F.defaults, opts);\n\n\t\t\t// All options are merged recursive except keys\n\t\t\tif (opts.keys !== undefined) {\n\t\t\t\tF.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false;\n\t\t\t}\n\n\t\t\tF.group = group;\n\n\t\t\treturn F._start(F.opts.index);\n\t\t},\n\n\t\t// Cancel image loading or abort ajax request\n\t\tcancel: function () {\n\t\t\tvar coming = F.coming;\n\n\t\t\tif (!coming || false === F.trigger('onCancel')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tF.hideLoading();\n\n\t\t\tif (F.ajaxLoad) {\n\t\t\t\tF.ajaxLoad.abort();\n\t\t\t}\n\n\t\t\tF.ajaxLoad = null;\n\n\t\t\tif (F.imgPreload) {\n\t\t\t\tF.imgPreload.onload = F.imgPreload.onerror = null;\n\t\t\t}\n\n\t\t\tif (coming.wrap) {\n\t\t\t\tcoming.wrap.stop(true, true).trigger('onReset').remove();\n\t\t\t}\n\n\t\t\tF.coming = null;\n\n\t\t\t// If the first item has been canceled, then clear everything\n\t\t\tif (!F.current) {\n\t\t\t\tF._afterZoomOut( coming );\n\t\t\t}\n\t\t},\n\n\t\t// Start closing animation if is open; remove immediately if opening/closing\n\t\tclose: function (event) {\n\t\t\tF.cancel();\n\n\t\t\tif (false === F.trigger('beforeClose')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tF.unbindEvents();\n\n\t\t\tif (!F.isActive) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!F.isOpen || event === true) {\n\t\t\t\t$('.fancybox-wrap').stop(true).trigger('onReset').remove();\n\n\t\t\t\tF._afterZoomOut();\n\n\t\t\t} else {\n\t\t\t\tF.isOpen = F.isOpened = false;\n\t\t\t\tF.isClosing = true;\n\n\t\t\t\t$('.fancybox-item, .fancybox-nav').remove();\n\n\t\t\t\tF.wrap.stop(true, true).removeClass('fancybox-opened');\n\n\t\t\t\tF.transitions[ F.current.closeMethod ]();\n\t\t\t}\n\t\t},\n\n\t\t// Manage slideshow:\n\t\t// $.fancybox.play(); - toggle slideshow\n\t\t// $.fancybox.play( true ); - start\n\t\t// $.fancybox.play( false ); - stop\n\t\tplay: function ( action ) {\n\t\t\tvar clear = function () {\n\t\t\t\t\tclearTimeout(F.player.timer);\n\t\t\t\t},\n\t\t\t\tset = function () {\n\t\t\t\t\tclear();\n\n\t\t\t\t\tif (F.current && F.player.isActive) {\n\t\t\t\t\t\tF.player.timer = setTimeout(F.next, F.current.playSpeed);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tstop = function () {\n\t\t\t\t\tclear();\n\n\t\t\t\t\t$('body').unbind('.player');\n\n\t\t\t\t\tF.player.isActive = false;\n\n\t\t\t\t\tF.trigger('onPlayEnd');\n\t\t\t\t},\n\t\t\t\tstart = function () {\n\t\t\t\t\tif (F.current && (F.current.loop || F.current.index < F.group.length - 1)) {\n\t\t\t\t\t\tF.player.isActive = true;\n\n\t\t\t\t\t\t$('body').bind({\n\t\t\t\t\t\t\t'afterShow.player onUpdate.player' : set,\n\t\t\t\t\t\t\t'onCancel.player beforeClose.player' : stop,\n\t\t\t\t\t\t\t'beforeLoad.player' : clear\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tset();\n\n\t\t\t\t\t\tF.trigger('onPlayStart');\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\tif (action === true || (!F.player.isActive && action !== false)) {\n\t\t\t\tstart();\n\t\t\t} else {\n\t\t\t\tstop();\n\t\t\t}\n\t\t},\n\n\t\t// Navigate to next gallery item\n\t\tnext: function ( direction ) {\n\t\t\tvar current = F.current;\n\n\t\t\tif (current) {\n\t\t\t\tif (!isString(direction)) {\n\t\t\t\t\tdirection = current.direction.next;\n\t\t\t\t}\n\n\t\t\t\tF.jumpto(current.index + 1, direction, 'next');\n\t\t\t}\n\t\t},\n\n\t\t// Navigate to previous gallery item\n\t\tprev: function ( direction ) {\n\t\t\tvar current = F.current;\n\n\t\t\tif (current) {\n\t\t\t\tif (!isString(direction)) {\n\t\t\t\t\tdirection = current.direction.prev;\n\t\t\t\t}\n\n\t\t\t\tF.jumpto(current.index - 1, direction, 'prev');\n\t\t\t}\n\t\t},\n\n\t\t// Navigate to gallery item by index\n\t\tjumpto: function ( index, direction, router ) {\n\t\t\tvar current = F.current;\n\n\t\t\tif (!current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tindex = getScalar(index);\n\n\t\t\tF.direction = direction || current.direction[ (index >= current.index ? 'next' : 'prev') ];\n\t\t\tF.router = router || 'jumpto';\n\n\t\t\tif (current.loop) {\n\t\t\t\tif (index < 0) {\n\t\t\t\t\tindex = current.group.length + (index % current.group.length);\n\t\t\t\t}\n\n\t\t\t\tindex = index % current.group.length;\n\t\t\t}\n\n\t\t\tif (current.group[ index ] !== undefined) {\n\t\t\t\tF.cancel();\n\n\t\t\t\tF._start(index);\n\t\t\t}\n\t\t},\n\n\t\t// Center inside viewport and toggle position type to fixed or absolute if needed\n\t\treposition: function (e, onlyAbsolute) {\n\t\t\tvar current = F.current,\n\t\t\t\twrap = current ? current.wrap : null,\n\t\t\t\tpos;\n\n\t\t\tif (wrap) {\n\t\t\t\tpos = F._getPosition(onlyAbsolute);\n\n\t\t\t\tif (e && e.type === 'scroll') {\n\t\t\t\t\tdelete pos.position;\n\n\t\t\t\t\twrap.stop(true, true).animate(pos, 200);\n\n\t\t\t\t} else {\n\t\t\t\t\twrap.css(pos);\n\n\t\t\t\t\tcurrent.pos = $.extend({}, current.dim, pos);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tupdate: function (e) {\n\t\t\tvar type = (e && e.type),\n\t\t\t\tanyway = !type || type === 'orientationchange';\n\n\t\t\tif (anyway) {\n\t\t\t\tclearTimeout(didUpdate);\n\n\t\t\t\tdidUpdate = null;\n\t\t\t}\n\n\t\t\tif (!F.isOpen || didUpdate) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdidUpdate = setTimeout(function() {\n\t\t\t\tvar current = F.current;\n\n\t\t\t\tif (!current || F.isClosing) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tF.wrap.removeClass('fancybox-tmp');\n\n\t\t\t\tif (anyway || type === 'load' || (type === 'resize' && current.autoResize)) {\n\t\t\t\t\tF._setDimension();\n\t\t\t\t}\n\n\t\t\t\tif (!(type === 'scroll' && current.canShrink)) {\n\t\t\t\t\tF.reposition(e);\n\t\t\t\t}\n\n\t\t\t\tF.trigger('onUpdate');\n\n\t\t\t\tdidUpdate = null;\n\n\t\t\t}, (anyway && !isTouch ? 0 : 300));\n\t\t},\n\n\t\t// Shrink content to fit inside viewport or restore if resized\n\t\ttoggle: function ( action ) {\n\t\t\tif (F.isOpen) {\n\t\t\t\tF.current.fitToView = $.type(action) === \"boolean\" ? action : !F.current.fitToView;\n\n\t\t\t\t// Help browser to restore document dimensions\n\t\t\t\tif (isTouch) {\n\t\t\t\t\tF.wrap.removeAttr('style').addClass('fancybox-tmp');\n\n\t\t\t\t\tF.trigger('onUpdate');\n\t\t\t\t}\n\n\t\t\t\tF.update();\n\t\t\t}\n\t\t},\n\n\t\thideLoading: function () {\n\t\t\tD.unbind('.loading');\n\n\t\t\t$('#fancybox-loading').remove();\n\t\t},\n\n\t\tshowLoading: function () {\n\t\t\tvar el, viewport;\n\n\t\t\tF.hideLoading();\n\n\t\t\tel = $('
').click(F.cancel).appendTo('body');\n\n\t\t\t// If user will press the escape-button, the request will be canceled\n\t\t\tD.bind('keydown.loading', function(e) {\n\t\t\t\tif ((e.which || e.keyCode) === 27) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tF.cancel();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!F.defaults.fixed) {\n\t\t\t\tviewport = F.getViewport();\n\n\t\t\t\tel.css({\n\t\t\t\t\tposition : 'absolute',\n\t\t\t\t\ttop : (viewport.h * 0.5) + viewport.y,\n\t\t\t\t\tleft : (viewport.w * 0.5) + viewport.x\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tgetViewport: function () {\n\t\t\tvar locked = (F.current && F.current.locked) || false,\n\t\t\t\trez = {\n\t\t\t\t\tx: W.scrollLeft(),\n\t\t\t\t\ty: W.scrollTop()\n\t\t\t\t};\n\n\t\t\tif (locked) {\n\t\t\t\trez.w = locked[0].clientWidth;\n\t\t\t\trez.h = locked[0].clientHeight;\n\n\t\t\t} else {\n\t\t\t\t// See http://bugs.jquery.com/ticket/6724\n\t\t\t\trez.w = isTouch && window.innerWidth ? window.innerWidth : W.width();\n\t\t\t\trez.h = isTouch && window.innerHeight ? window.innerHeight : W.height();\n\t\t\t}\n\n\t\t\treturn rez;\n\t\t},\n\n\t\t// Unbind the keyboard / clicking actions\n\t\tunbindEvents: function () {\n\t\t\tif (F.wrap && isQuery(F.wrap)) {\n\t\t\t\tF.wrap.unbind('.fb');\n\t\t\t}\n\n\t\t\tD.unbind('.fb');\n\t\t\tW.unbind('.fb');\n\t\t},\n\n\t\tbindEvents: function () {\n\t\t\tvar current = F.current,\n\t\t\t\tkeys;\n\n\t\t\tif (!current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Changing document height on iOS devices triggers a 'resize' event,\n\t\t\t// that can change document height... repeating infinitely\n\t\t\tW.bind('orientationchange.fb' + (isTouch ? '' : ' resize.fb') + (current.autoCenter && !current.locked ? ' scroll.fb' : ''), F.update);\n\n\t\t\tkeys = current.keys;\n\n\t\t\tif (keys) {\n\t\t\t\tD.bind('keydown.fb', function (e) {\n\t\t\t\t\tvar code = e.which || e.keyCode,\n\t\t\t\t\t\ttarget = e.target || e.srcElement;\n\n\t\t\t\t\t// Skip esc key if loading, because showLoading will cancel preloading\n\t\t\t\t\tif (code === 27 && F.coming) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Ignore key combinations and key events within form elements\n\t\t\t\t\tif (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && !(target && (target.type || $(target).is('[contenteditable]')))) {\n\t\t\t\t\t\t$.each(keys, function(i, val) {\n\t\t\t\t\t\t\tif (current.group.length > 1 && val[ code ] !== undefined) {\n\t\t\t\t\t\t\t\tF[ i ]( val[ code ] );\n\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ($.inArray(code, val) > -1) {\n\t\t\t\t\t\t\t\tF[ i ] ();\n\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ($.fn.mousewheel && current.mouseWheel) {\n\t\t\t\tF.wrap.bind('mousewheel.fb', function (e, delta, deltaX, deltaY) {\n\t\t\t\t\tvar target = e.target || null,\n\t\t\t\t\t\tparent = $(target),\n\t\t\t\t\t\tcanScroll = false;\n\n\t\t\t\t\twhile (parent.length) {\n\t\t\t\t\t\tif (canScroll || parent.is('.fancybox-skin') || parent.is('.fancybox-wrap')) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcanScroll = isScrollable( parent[0] );\n\t\t\t\t\t\tparent = $(parent).parent();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (delta !== 0 && !canScroll) {\n\t\t\t\t\t\tif (F.group.length > 1 && !current.canShrink) {\n\t\t\t\t\t\t\tif (deltaY > 0 || deltaX > 0) {\n\t\t\t\t\t\t\t\tF.prev( deltaY > 0 ? 'down' : 'left' );\n\n\t\t\t\t\t\t\t} else if (deltaY < 0 || deltaX < 0) {\n\t\t\t\t\t\t\t\tF.next( deltaY < 0 ? 'up' : 'right' );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\ttrigger: function (event, o) {\n\t\t\tvar ret, obj = o || F.coming || F.current;\n\n\t\t\tif (!obj) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($.isFunction( obj[event] )) {\n\t\t\t\tret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1));\n\t\t\t}\n\n\t\t\tif (ret === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (obj.helpers) {\n\t\t\t\t$.each(obj.helpers, function (helper, opts) {\n\t\t\t\t\tif (opts && F.helpers[helper] && $.isFunction(F.helpers[helper][event])) {\n\t\t\t\t\t\topts = $.extend(true, {}, F.helpers[helper].defaults, opts);\n\n\t\t\t\t\t\tF.helpers[helper][event](opts, obj);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t$.event.trigger(event + '.fb');\n\t\t},\n\n\t\tisImage: function (str) {\n\t\t\treturn isString(str) && str.match(/(^data:image\\/.*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp)((\\?|#).*)?$)/i);\n\t\t},\n\n\t\tisSWF: function (str) {\n\t\t\treturn isString(str) && str.match(/\\.(swf)((\\?|#).*)?$/i);\n\t\t},\n\n\t\t_start: function (index) {\n\t\t\tvar coming = {},\n\t\t\t\tobj,\n\t\t\t\thref,\n\t\t\t\ttype,\n\t\t\t\tmargin,\n\t\t\t\tpadding;\n\n\t\t\tindex = getScalar( index );\n\t\t\tobj = F.group[ index ] || null;\n\n\t\t\tif (!obj) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tcoming = $.extend(true, {}, F.opts, obj);\n\n\t\t\t// Convert margin and padding properties to array - top, right, bottom, left\n\t\t\tmargin = coming.margin;\n\t\t\tpadding = coming.padding;\n\n\t\t\tif ($.type(margin) === 'number') {\n\t\t\t\tcoming.margin = [margin, margin, margin, margin];\n\t\t\t}\n\n\t\t\tif ($.type(padding) === 'number') {\n\t\t\t\tcoming.padding = [padding, padding, padding, padding];\n\t\t\t}\n\n\t\t\t// 'modal' propery is just a shortcut\n\t\t\tif (coming.modal) {\n\t\t\t\t$.extend(true, coming, {\n\t\t\t\t\tcloseBtn : false,\n\t\t\t\t\tcloseClick : false,\n\t\t\t\t\tnextClick : false,\n\t\t\t\t\tarrows : false,\n\t\t\t\t\tmouseWheel : false,\n\t\t\t\t\tkeys : null,\n\t\t\t\t\thelpers: {\n\t\t\t\t\t\toverlay : {\n\t\t\t\t\t\t\tcloseClick : false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// 'autoSize' property is a shortcut, too\n\t\t\tif (coming.autoSize) {\n\t\t\t\tcoming.autoWidth = coming.autoHeight = true;\n\t\t\t}\n\n\t\t\tif (coming.width === 'auto') {\n\t\t\t\tcoming.autoWidth = true;\n\t\t\t}\n\n\t\t\tif (coming.height === 'auto') {\n\t\t\t\tcoming.autoHeight = true;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Add reference to the group, so it`s possible to access from callbacks, example:\n\t\t\t * afterLoad : function() {\n\t\t\t * this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');\n\t\t\t * }\n\t\t\t */\n\n\t\t\tcoming.group = F.group;\n\t\t\tcoming.index = index;\n\n\t\t\t// Give a chance for callback or helpers to update coming item (type, title, etc)\n\t\t\tF.coming = coming;\n\n\t\t\tif (false === F.trigger('beforeLoad')) {\n\t\t\t\tF.coming = null;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttype = coming.type;\n\t\t\thref = coming.href;\n\n\t\t\tif (!type) {\n\t\t\t\tF.coming = null;\n\n\t\t\t\t//If we can not determine content type then drop silently or display next/prev item if looping through gallery\n\t\t\t\tif (F.current && F.router && F.router !== 'jumpto') {\n\t\t\t\t\tF.current.index = index;\n\n\t\t\t\t\treturn F[ F.router ]( F.direction );\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tF.isActive = true;\n\n\t\t\tif (type === 'image' || type === 'swf') {\n\t\t\t\tcoming.autoHeight = coming.autoWidth = false;\n\t\t\t\tcoming.scrolling = 'visible';\n\t\t\t}\n\n\t\t\tif (type === 'image') {\n\t\t\t\tcoming.aspectRatio = true;\n\t\t\t}\n\n\t\t\tif (type === 'iframe' && isTouch) {\n\t\t\t\tcoming.scrolling = 'scroll';\n\t\t\t}\n\n\t\t\t// Build the neccessary markup\n\t\t\tcoming.wrap = $(coming.tpl.wrap).addClass('fancybox-' + (isTouch ? 'mobile' : 'desktop') + ' fancybox-type-' + type + ' fancybox-tmp ' + coming.wrapCSS).appendTo( coming.parent || 'body' );\n\n\t\t\t$.extend(coming, {\n\t\t\t\tskin : $('.fancybox-skin', coming.wrap),\n\t\t\t\touter : $('.fancybox-outer', coming.wrap),\n\t\t\t\tinner : $('.fancybox-inner', coming.wrap)\n\t\t\t});\n\n\t\t\t$.each([\"Top\", \"Right\", \"Bottom\", \"Left\"], function(i, v) {\n\t\t\t\tcoming.skin.css('padding' + v, getValue(coming.padding[ i ]));\n\t\t\t});\n\n\t\t\tF.trigger('onReady');\n\n\t\t\t// Check before try to load; 'inline' and 'html' types need content, others - href\n\t\t\tif (type === 'inline' || type === 'html') {\n\t\t\t\tif (!coming.content || !coming.content.length) {\n\t\t\t\t\treturn F._error( 'content' );\n\t\t\t\t}\n\n\t\t\t} else if (!href) {\n\t\t\t\treturn F._error( 'href' );\n\t\t\t}\n\n\t\t\tif (type === 'image') {\n\t\t\t\tF._loadImage();\n\n\t\t\t} else if (type === 'ajax') {\n\t\t\t\tF._loadAjax();\n\n\t\t\t} else if (type === 'iframe') {\n\t\t\t\tF._loadIframe();\n\n\t\t\t} else {\n\t\t\t\tF._afterLoad();\n\t\t\t}\n\t\t},\n\n\t\t_error: function ( type ) {\n\t\t\t$.extend(F.coming, {\n\t\t\t\ttype : 'html',\n\t\t\t\tautoWidth : true,\n\t\t\t\tautoHeight : true,\n\t\t\t\tminWidth : 0,\n\t\t\t\tminHeight : 0,\n\t\t\t\tscrolling : 'no',\n\t\t\t\thasError : type,\n\t\t\t\tcontent : F.coming.tpl.error\n\t\t\t});\n\n\t\t\tF._afterLoad();\n\t\t},\n\n\t\t_loadImage: function () {\n\t\t\t// Reset preload image so it is later possible to check \"complete\" property\n\t\t\tvar img = F.imgPreload = new Image();\n\n\t\t\timg.onload = function () {\n\t\t\t\tthis.onload = this.onerror = null;\n\n\t\t\t\tF.coming.width = this.width;\n\t\t\t\tF.coming.height = this.height;\n\n\t\t\t\tF._afterLoad();\n\t\t\t};\n\n\t\t\timg.onerror = function () {\n\t\t\t\tthis.onload = this.onerror = null;\n\n\t\t\t\tF._error( 'image' );\n\t\t\t};\n\n\t\t\timg.src = F.coming.href;\n\n\t\t\tif (img.complete !== true) {\n\t\t\t\tF.showLoading();\n\t\t\t}\n\t\t},\n\n\t\t_loadAjax: function () {\n\t\t\tvar coming = F.coming;\n\n\t\t\tF.showLoading();\n\n\t\t\tF.ajaxLoad = $.ajax($.extend({}, coming.ajax, {\n\t\t\t\turl: coming.href,\n\t\t\t\terror: function (jqXHR, textStatus) {\n\t\t\t\t\tif (F.coming && textStatus !== 'abort') {\n\t\t\t\t\t\tF._error( 'ajax', jqXHR );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tF.hideLoading();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsuccess: function (data, textStatus) {\n\t\t\t\t\tif (textStatus === 'success') {\n\t\t\t\t\t\tcoming.content = data;\n\n\t\t\t\t\t\tF._afterLoad();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}));\n\t\t},\n\n\t\t_loadIframe: function() {\n\t\t\tvar coming = F.coming,\n\t\t\t\tiframe = $(coming.tpl.iframe.replace(/\\{rnd\\}/g, new Date().getTime()))\n\t\t\t\t\t.attr('scrolling', isTouch ? 'auto' : coming.iframe.scrolling)\n\t\t\t\t\t.attr('src', coming.href);\n\n\t\t\t// This helps IE\n\t\t\t$(coming.wrap).bind('onReset', function () {\n\t\t\t\ttry {\n\t\t\t\t\t$(this).find('iframe').hide().attr('src', '//about:blank').end().empty();\n\t\t\t\t} catch (e) {}\n\t\t\t});\n\n\t\t\tif (coming.iframe.preload) {\n\t\t\t\tF.showLoading();\n\n\t\t\t\tiframe.one('load', function() {\n\t\t\t\t\t$(this).data('ready', 1);\n\n\t\t\t\t\t// iOS will lose scrolling if we resize\n\t\t\t\t\tif (!isTouch) {\n\t\t\t\t\t\t$(this).bind('load.fb', F.update);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Without this trick:\n\t\t\t\t\t// - iframe won't scroll on iOS devices\n\t\t\t\t\t// - IE7 sometimes displays empty iframe\n\t\t\t\t\t$(this).parents('.fancybox-wrap').width('100%').removeClass('fancybox-tmp').show();\n\n\t\t\t\t\tF._afterLoad();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcoming.content = iframe.appendTo( coming.inner );\n\n\t\t\tif (!coming.iframe.preload) {\n\t\t\t\tF._afterLoad();\n\t\t\t}\n\t\t},\n\n\t\t_preloadImages: function() {\n\t\t\tvar group = F.group,\n\t\t\t\tcurrent = F.current,\n\t\t\t\tlen = group.length,\n\t\t\t\tcnt = current.preload ? Math.min(current.preload, len - 1) : 0,\n\t\t\t\titem,\n\t\t\t\ti;\n\n\t\t\tfor (i = 1; i <= cnt; i += 1) {\n\t\t\t\titem = group[ (current.index + i ) % len ];\n\n\t\t\t\tif (item.type === 'image' && item.href) {\n\t\t\t\t\tnew Image().src = item.href;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_afterLoad: function () {\n\t\t\tvar coming = F.coming,\n\t\t\t\tprevious = F.current,\n\t\t\t\tplaceholder = 'fancybox-placeholder',\n\t\t\t\tcurrent,\n\t\t\t\tcontent,\n\t\t\t\ttype,\n\t\t\t\tscrolling,\n\t\t\t\thref,\n\t\t\t\tembed;\n\n\t\t\tF.hideLoading();\n\n\t\t\tif (!coming || F.isActive === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (false === F.trigger('afterLoad', coming, previous)) {\n\t\t\t\tcoming.wrap.stop(true).trigger('onReset').remove();\n\n\t\t\t\tF.coming = null;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (previous) {\n\t\t\t\tF.trigger('beforeChange', previous);\n\n\t\t\t\tprevious.wrap.stop(true).removeClass('fancybox-opened')\n\t\t\t\t\t.find('.fancybox-item, .fancybox-nav')\n\t\t\t\t\t.remove();\n\t\t\t}\n\n\t\t\tF.unbindEvents();\n\n\t\t\tcurrent = coming;\n\t\t\tcontent = coming.content;\n\t\t\ttype = coming.type;\n\t\t\tscrolling = coming.scrolling;\n\n\t\t\t$.extend(F, {\n\t\t\t\twrap : current.wrap,\n\t\t\t\tskin : current.skin,\n\t\t\t\touter : current.outer,\n\t\t\t\tinner : current.inner,\n\t\t\t\tcurrent : current,\n\t\t\t\tprevious : previous\n\t\t\t});\n\n\t\t\thref = current.href;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'inline':\n\t\t\t\tcase 'ajax':\n\t\t\t\tcase 'html':\n\t\t\t\t\tif (current.selector) {\n\t\t\t\t\t\tcontent = $('
').html(content).find(current.selector);\n\n\t\t\t\t\t} else if (isQuery(content)) {\n\t\t\t\t\t\tif (!content.data(placeholder)) {\n\t\t\t\t\t\t\tcontent.data(placeholder, $('
').insertAfter( content ).hide() );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontent = content.show().detach();\n\n\t\t\t\t\t\tcurrent.wrap.bind('onReset', function () {\n\t\t\t\t\t\t\tif ($(this).find(content).length) {\n\t\t\t\t\t\t\t\tcontent.hide().replaceAll( content.data(placeholder) ).data(placeholder, false);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t\tcase 'image':\n\t\t\t\t\tcontent = current.tpl.image.replace('{href}', href);\n\t\t\t\tbreak;\n\n\t\t\t\tcase 'swf':\n\t\t\t\t\tcontent = '';\n\t\t\t\t\tembed = '';\n\n\t\t\t\t\t$.each(current.swf, function(name, val) {\n\t\t\t\t\t\tcontent += '';\n\t\t\t\t\t\tembed += ' ' + name + '=\"' + val + '\"';\n\t\t\t\t\t});\n\n\t\t\t\t\tcontent += '';\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (!(isQuery(content) && content.parent().is(current.inner))) {\n\t\t\t\tcurrent.inner.append( content );\n\t\t\t}\n\n\t\t\t// Give a chance for helpers or callbacks to update elements\n\t\t\tF.trigger('beforeShow');\n\n\t\t\t// Set scrolling before calculating dimensions\n\t\t\tcurrent.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling));\n\n\t\t\t// Set initial dimensions and start position\n\t\t\tF._setDimension();\n\n\t\t\tF.reposition();\n\n\t\t\tF.isOpen = false;\n\t\t\tF.coming = null;\n\n\t\t\tF.bindEvents();\n\n\t\t\tif (!F.isOpened) {\n\t\t\t\t$('.fancybox-wrap').not( current.wrap ).stop(true).trigger('onReset').remove();\n\n\t\t\t} else if (previous.prevMethod) {\n\t\t\t\tF.transitions[ previous.prevMethod ]();\n\t\t\t}\n\n\t\t\tF.transitions[ F.isOpened ? current.nextMethod : current.openMethod ]();\n\n\t\t\tF._preloadImages();\n\t\t},\n\n\t\t_setDimension: function () {\n\t\t\tvar viewport = F.getViewport(),\n\t\t\t\tsteps = 0,\n\t\t\t\tcanShrink = false,\n\t\t\t\tcanExpand = false,\n\t\t\t\twrap = F.wrap,\n\t\t\t\tskin = F.skin,\n\t\t\t\tinner = F.inner,\n\t\t\t\tcurrent = F.current,\n\t\t\t\twidth = current.width,\n\t\t\t\theight = current.height,\n\t\t\t\tminWidth = current.minWidth,\n\t\t\t\tminHeight = current.minHeight,\n\t\t\t\tmaxWidth = current.maxWidth,\n\t\t\t\tmaxHeight = current.maxHeight,\n\t\t\t\tscrolling = current.scrolling,\n\t\t\t\tscrollOut = current.scrollOutside ? current.scrollbarWidth : 0,\n\t\t\t\tmargin = current.margin,\n\t\t\t\twMargin = getScalar(margin[1] + margin[3]),\n\t\t\t\thMargin = getScalar(margin[0] + margin[2]),\n\t\t\t\twPadding,\n\t\t\t\thPadding,\n\t\t\t\twSpace,\n\t\t\t\thSpace,\n\t\t\t\torigWidth,\n\t\t\t\torigHeight,\n\t\t\t\torigMaxWidth,\n\t\t\t\torigMaxHeight,\n\t\t\t\tratio,\n\t\t\t\twidth_,\n\t\t\t\theight_,\n\t\t\t\tmaxWidth_,\n\t\t\t\tmaxHeight_,\n\t\t\t\tiframe,\n\t\t\t\tbody;\n\n\t\t\t// Reset dimensions so we could re-check actual size\n\t\t\twrap.add(skin).add(inner).width('auto').height('auto').removeClass('fancybox-tmp');\n\n\t\t\twPadding = getScalar(skin.outerWidth(true) - skin.width());\n\t\t\thPadding = getScalar(skin.outerHeight(true) - skin.height());\n\n\t\t\t// Any space between content and viewport (margin, padding, border, title)\n\t\t\twSpace = wMargin + wPadding;\n\t\t\thSpace = hMargin + hPadding;\n\n\t\t\torigWidth = isPercentage(width) ? (viewport.w - wSpace) * getScalar(width) / 100 : width;\n\t\t\torigHeight = isPercentage(height) ? (viewport.h - hSpace) * getScalar(height) / 100 : height;\n\n\t\t\tif (current.type === 'iframe') {\n\t\t\t\tiframe = current.content;\n\n\t\t\t\tif (current.autoHeight && iframe.data('ready') === 1) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (iframe[0].contentWindow.document.location) {\n\t\t\t\t\t\t\tinner.width( origWidth ).height(9999);\n\n\t\t\t\t\t\t\tbody = iframe.contents().find('body');\n\n\t\t\t\t\t\t\tif (scrollOut) {\n\t\t\t\t\t\t\t\tbody.css('overflow-x', 'hidden');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\torigHeight = body.height();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch (e) {}\n\t\t\t\t}\n\n\t\t\t} else if (current.autoWidth || current.autoHeight) {\n\t\t\t\tinner.addClass( 'fancybox-tmp' );\n\n\t\t\t\t// Set width or height in case we need to calculate only one dimension\n\t\t\t\tif (!current.autoWidth) {\n\t\t\t\t\tinner.width( origWidth );\n\t\t\t\t}\n\n\t\t\t\tif (!current.autoHeight) {\n\t\t\t\t\tinner.height( origHeight );\n\t\t\t\t}\n\n\t\t\t\tif (current.autoWidth) {\n\t\t\t\t\torigWidth = inner.width();\n\t\t\t\t}\n\n\t\t\t\tif (current.autoHeight) {\n\t\t\t\t\torigHeight = inner.height();\n\t\t\t\t}\n\n\t\t\t\tinner.removeClass( 'fancybox-tmp' );\n\t\t\t}\n\n\t\t\twidth = getScalar( origWidth );\n\t\t\theight = getScalar( origHeight );\n\n\t\t\tratio = origWidth / origHeight;\n\n\t\t\t// Calculations for the content\n\t\t\tminWidth = getScalar(isPercentage(minWidth) ? getScalar(minWidth, 'w') - wSpace : minWidth);\n\t\t\tmaxWidth = getScalar(isPercentage(maxWidth) ? getScalar(maxWidth, 'w') - wSpace : maxWidth);\n\n\t\t\tminHeight = getScalar(isPercentage(minHeight) ? getScalar(minHeight, 'h') - hSpace : minHeight);\n\t\t\tmaxHeight = getScalar(isPercentage(maxHeight) ? getScalar(maxHeight, 'h') - hSpace : maxHeight);\n\n\t\t\t// These will be used to determine if wrap can fit in the viewport\n\t\t\torigMaxWidth = maxWidth;\n\t\t\torigMaxHeight = maxHeight;\n\n\t\t\tif (current.fitToView) {\n\t\t\t\tmaxWidth = Math.min(viewport.w - wSpace, maxWidth);\n\t\t\t\tmaxHeight = Math.min(viewport.h - hSpace, maxHeight);\n\t\t\t}\n\n\t\t\tmaxWidth_ = viewport.w - wMargin;\n\t\t\tmaxHeight_ = viewport.h - hMargin;\n\n\t\t\tif (current.aspectRatio) {\n\t\t\t\tif (width > maxWidth) {\n\t\t\t\t\twidth = maxWidth;\n\t\t\t\t\theight = getScalar(width / ratio);\n\t\t\t\t}\n\n\t\t\t\tif (height > maxHeight) {\n\t\t\t\t\theight = maxHeight;\n\t\t\t\t\twidth = getScalar(height * ratio);\n\t\t\t\t}\n\n\t\t\t\tif (width < minWidth) {\n\t\t\t\t\twidth = minWidth;\n\t\t\t\t\theight = getScalar(width / ratio);\n\t\t\t\t}\n\n\t\t\t\tif (height < minHeight) {\n\t\t\t\t\theight = minHeight;\n\t\t\t\t\twidth = getScalar(height * ratio);\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\twidth = Math.max(minWidth, Math.min(width, maxWidth));\n\n\t\t\t\tif (current.autoHeight && current.type !== 'iframe') {\n\t\t\t\t\tinner.width( width );\n\n\t\t\t\t\theight = inner.height();\n\t\t\t\t}\n\n\t\t\t\theight = Math.max(minHeight, Math.min(height, maxHeight));\n\t\t\t}\n\n\t\t\t// Try to fit inside viewport (including the title)\n\t\t\tif (current.fitToView) {\n\t\t\t\tinner.width( width ).height( height );\n\n\t\t\t\twrap.width( width + wPadding );\n\n\t\t\t\t// Real wrap dimensions\n\t\t\t\twidth_ = wrap.width();\n\t\t\t\theight_ = wrap.height();\n\n\t\t\t\tif (current.aspectRatio) {\n\t\t\t\t\twhile ((width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight) {\n\t\t\t\t\t\tif (steps++ > 19) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\theight = Math.max(minHeight, Math.min(maxHeight, height - 10));\n\t\t\t\t\t\twidth = getScalar(height * ratio);\n\n\t\t\t\t\t\tif (width < minWidth) {\n\t\t\t\t\t\t\twidth = minWidth;\n\t\t\t\t\t\t\theight = getScalar(width / ratio);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (width > maxWidth) {\n\t\t\t\t\t\t\twidth = maxWidth;\n\t\t\t\t\t\t\theight = getScalar(width / ratio);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tinner.width( width ).height( height );\n\n\t\t\t\t\t\twrap.width( width + wPadding );\n\n\t\t\t\t\t\twidth_ = wrap.width();\n\t\t\t\t\t\theight_ = wrap.height();\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\twidth = Math.max(minWidth, Math.min(width, width - (width_ - maxWidth_)));\n\t\t\t\t\theight = Math.max(minHeight, Math.min(height, height - (height_ - maxHeight_)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (scrollOut && scrolling === 'auto' && height < origHeight && (width + wPadding + scrollOut) < maxWidth_) {\n\t\t\t\twidth += scrollOut;\n\t\t\t}\n\n\t\t\tinner.width( width ).height( height );\n\n\t\t\twrap.width( width + wPadding );\n\n\t\t\twidth_ = wrap.width();\n\t\t\theight_ = wrap.height();\n\n\t\t\tcanShrink = (width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight;\n\t\t\tcanExpand = current.aspectRatio ? (width < origMaxWidth && height < origMaxHeight && width < origWidth && height < origHeight) : ((width < origMaxWidth || height < origMaxHeight) && (width < origWidth || height < origHeight));\n\n\t\t\t$.extend(current, {\n\t\t\t\tdim : {\n\t\t\t\t\twidth\t: getValue( width_ ),\n\t\t\t\t\theight\t: getValue( height_ )\n\t\t\t\t},\n\t\t\t\torigWidth : origWidth,\n\t\t\t\torigHeight : origHeight,\n\t\t\t\tcanShrink : canShrink,\n\t\t\t\tcanExpand : canExpand,\n\t\t\t\twPadding : wPadding,\n\t\t\t\thPadding : hPadding,\n\t\t\t\twrapSpace : height_ - skin.outerHeight(true),\n\t\t\t\tskinSpace : skin.height() - height\n\t\t\t});\n\n\t\t\tif (!iframe && current.autoHeight && height > minHeight && height < maxHeight && !canExpand) {\n\t\t\t\tinner.height('auto');\n\t\t\t}\n\t\t},\n\n\t\t_getPosition: function (onlyAbsolute) {\n\t\t\tvar current = F.current,\n\t\t\t\tviewport = F.getViewport(),\n\t\t\t\tmargin = current.margin,\n\t\t\t\twidth = F.wrap.width() + margin[1] + margin[3],\n\t\t\t\theight = F.wrap.height() + margin[0] + margin[2],\n\t\t\t\trez = {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\ttop : margin[0],\n\t\t\t\t\tleft : margin[3]\n\t\t\t\t};\n\n\t\t\tif (current.autoCenter && current.fixed && !onlyAbsolute && height <= viewport.h && width <= viewport.w) {\n\t\t\t\trez.position = 'fixed';\n\n\t\t\t} else if (!current.locked) {\n\t\t\t\trez.top += viewport.y;\n\t\t\t\trez.left += viewport.x;\n\t\t\t}\n\n\t\t\trez.top = getValue(Math.max(rez.top, rez.top + ((viewport.h - height) * current.topRatio)));\n\t\t\trez.left = getValue(Math.max(rez.left, rez.left + ((viewport.w - width) * current.leftRatio)));\n\n\t\t\treturn rez;\n\t\t},\n\n\t\t_afterZoomIn: function () {\n\t\t\tvar current = F.current;\n\n\t\t\tif (!current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tF.isOpen = F.isOpened = true;\n\n\t\t\tF.wrap.css('overflow', 'visible').addClass('fancybox-opened');\n\n\t\t\tF.update();\n\n\t\t\t// Assign a click event\n\t\t\tif ( current.closeClick || (current.nextClick && F.group.length > 1) ) {\n\t\t\t\tF.inner.css('cursor', 'pointer').bind('click.fb', function(e) {\n\t\t\t\t\tif (!$(e.target).is('a') && !$(e.target).parent().is('a')) {\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tF[ current.closeClick ? 'close' : 'next' ]();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Create a close button\n\t\t\tif (current.closeBtn) {\n\t\t\t\t$(current.tpl.closeBtn).appendTo(F.skin).bind('click.fb', function(e) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tF.close();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Create navigation arrows\n\t\t\tif (current.arrows && F.group.length > 1) {\n\t\t\t\tif (current.loop || current.index > 0) {\n\t\t\t\t\t$(current.tpl.prev).appendTo(F.outer).bind('click.fb', F.prev);\n\t\t\t\t}\n\n\t\t\t\tif (current.loop || current.index < F.group.length - 1) {\n\t\t\t\t\t$(current.tpl.next).appendTo(F.outer).bind('click.fb', F.next);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tF.trigger('afterShow');\n\n\t\t\t// Stop the slideshow if this is the last item\n\t\t\tif (!current.loop && current.index === current.group.length - 1) {\n\t\t\t\tF.play( false );\n\n\t\t\t} else if (F.opts.autoPlay && !F.player.isActive) {\n\t\t\t\tF.opts.autoPlay = false;\n\n\t\t\t\tF.play();\n\t\t\t}\n\t\t},\n\n\t\t_afterZoomOut: function ( obj ) {\n\t\t\tobj = obj || F.current;\n\n\t\t\t$('.fancybox-wrap').trigger('onReset').remove();\n\n\t\t\t$.extend(F, {\n\t\t\t\tgroup : {},\n\t\t\t\topts : {},\n\t\t\t\trouter : false,\n\t\t\t\tcurrent : null,\n\t\t\t\tisActive : false,\n\t\t\t\tisOpened : false,\n\t\t\t\tisOpen : false,\n\t\t\t\tisClosing : false,\n\t\t\t\twrap : null,\n\t\t\t\tskin : null,\n\t\t\t\touter : null,\n\t\t\t\tinner : null\n\t\t\t});\n\n\t\t\tF.trigger('afterClose', obj);\n\t\t}\n\t});\n\n\t/*\n\t *\tDefault transitions\n\t */\n\n\tF.transitions = {\n\t\tgetOrigPosition: function () {\n\t\t\tvar current = F.current,\n\t\t\t\telement = current.element,\n\t\t\t\torig = current.orig,\n\t\t\t\tpos = {},\n\t\t\t\twidth = 50,\n\t\t\t\theight = 50,\n\t\t\t\thPadding = current.hPadding,\n\t\t\t\twPadding = current.wPadding,\n\t\t\t\tviewport = F.getViewport();\n\n\t\t\tif (!orig && current.isDom && element.is(':visible')) {\n\t\t\t\torig = element.find('img:first');\n\n\t\t\t\tif (!orig.length) {\n\t\t\t\t\torig = element;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isQuery(orig)) {\n\t\t\t\tpos = orig.offset();\n\n\t\t\t\tif (orig.is('img')) {\n\t\t\t\t\twidth = orig.outerWidth();\n\t\t\t\t\theight = orig.outerHeight();\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tpos.top = viewport.y + (viewport.h - height) * current.topRatio;\n\t\t\t\tpos.left = viewport.x + (viewport.w - width) * current.leftRatio;\n\t\t\t}\n\n\t\t\tif (F.wrap.css('position') === 'fixed' || current.locked) {\n\t\t\t\tpos.top -= viewport.y;\n\t\t\t\tpos.left -= viewport.x;\n\t\t\t}\n\n\t\t\tpos = {\n\t\t\t\ttop : getValue(pos.top - hPadding * current.topRatio),\n\t\t\t\tleft : getValue(pos.left - wPadding * current.leftRatio),\n\t\t\t\twidth : getValue(width + wPadding),\n\t\t\t\theight : getValue(height + hPadding)\n\t\t\t};\n\n\t\t\treturn pos;\n\t\t},\n\n\t\tstep: function (now, fx) {\n\t\t\tvar ratio,\n\t\t\t\tpadding,\n\t\t\t\tvalue,\n\t\t\t\tprop = fx.prop,\n\t\t\t\tcurrent = F.current,\n\t\t\t\twrapSpace = current.wrapSpace,\n\t\t\t\tskinSpace = current.skinSpace;\n\n\t\t\tif (prop === 'width' || prop === 'height') {\n\t\t\t\tratio = fx.end === fx.start ? 1 : (now - fx.start) / (fx.end - fx.start);\n\n\t\t\t\tif (F.isClosing) {\n\t\t\t\t\tratio = 1 - ratio;\n\t\t\t\t}\n\n\t\t\t\tpadding = prop === 'width' ? current.wPadding : current.hPadding;\n\t\t\t\tvalue = now - padding;\n\n\t\t\t\tF.skin[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) ) );\n\t\t\t\tF.inner[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) - (skinSpace * ratio) ) );\n\t\t\t}\n\t\t},\n\n\t\tzoomIn: function () {\n\t\t\tvar current = F.current,\n\t\t\t\tstartPos = current.pos,\n\t\t\t\teffect = current.openEffect,\n\t\t\t\telastic = effect === 'elastic',\n\t\t\t\tendPos = $.extend({opacity : 1}, startPos);\n\n\t\t\t// Remove \"position\" property that breaks older IE\n\t\t\tdelete endPos.position;\n\n\t\t\tif (elastic) {\n\t\t\t\tstartPos = this.getOrigPosition();\n\n\t\t\t\tif (current.openOpacity) {\n\t\t\t\t\tstartPos.opacity = 0.1;\n\t\t\t\t}\n\n\t\t\t} else if (effect === 'fade') {\n\t\t\t\tstartPos.opacity = 0.1;\n\t\t\t}\n\n\t\t\tF.wrap.css(startPos).animate(endPos, {\n\t\t\t\tduration : effect === 'none' ? 0 : current.openSpeed,\n\t\t\t\teasing : current.openEasing,\n\t\t\t\tstep : elastic ? this.step : null,\n\t\t\t\tcomplete : F._afterZoomIn\n\t\t\t});\n\t\t},\n\n\t\tzoomOut: function () {\n\t\t\tvar current = F.current,\n\t\t\t\teffect = current.closeEffect,\n\t\t\t\telastic = effect === 'elastic',\n\t\t\t\tendPos = {opacity : 0.1};\n\n\t\t\tif (elastic) {\n\t\t\t\tendPos = this.getOrigPosition();\n\n\t\t\t\tif (current.closeOpacity) {\n\t\t\t\t\tendPos.opacity = 0.1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tF.wrap.animate(endPos, {\n\t\t\t\tduration : effect === 'none' ? 0 : current.closeSpeed,\n\t\t\t\teasing : current.closeEasing,\n\t\t\t\tstep : elastic ? this.step : null,\n\t\t\t\tcomplete : F._afterZoomOut\n\t\t\t});\n\t\t},\n\n\t\tchangeIn: function () {\n\t\t\tvar current = F.current,\n\t\t\t\teffect = current.nextEffect,\n\t\t\t\tstartPos = current.pos,\n\t\t\t\tendPos = { opacity : 1 },\n\t\t\t\tdirection = F.direction,\n\t\t\t\tdistance = 200,\n\t\t\t\tfield;\n\n\t\t\tstartPos.opacity = 0.1;\n\n\t\t\tif (effect === 'elastic') {\n\t\t\t\tfield = direction === 'down' || direction === 'up' ? 'top' : 'left';\n\n\t\t\t\tif (direction === 'down' || direction === 'right') {\n\t\t\t\t\tstartPos[ field ] = getValue(getScalar(startPos[ field ]) - distance);\n\t\t\t\t\tendPos[ field ] = '+=' + distance + 'px';\n\n\t\t\t\t} else {\n\t\t\t\t\tstartPos[ field ] = getValue(getScalar(startPos[ field ]) + distance);\n\t\t\t\t\tendPos[ field ] = '-=' + distance + 'px';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Workaround for http://bugs.jquery.com/ticket/12273\n\t\t\tif (effect === 'none') {\n\t\t\t\tF._afterZoomIn();\n\n\t\t\t} else {\n\t\t\t\tF.wrap.css(startPos).animate(endPos, {\n\t\t\t\t\tduration : current.nextSpeed,\n\t\t\t\t\teasing : current.nextEasing,\n\t\t\t\t\tcomplete : F._afterZoomIn\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tchangeOut: function () {\n\t\t\tvar previous = F.previous,\n\t\t\t\teffect = previous.prevEffect,\n\t\t\t\tendPos = { opacity : 0.1 },\n\t\t\t\tdirection = F.direction,\n\t\t\t\tdistance = 200;\n\n\t\t\tif (effect === 'elastic') {\n\t\t\t\tendPos[ direction === 'down' || direction === 'up' ? 'top' : 'left' ] = ( direction === 'up' || direction === 'left' ? '-' : '+' ) + '=' + distance + 'px';\n\t\t\t}\n\n\t\t\tprevious.wrap.animate(endPos, {\n\t\t\t\tduration : effect === 'none' ? 0 : previous.prevSpeed,\n\t\t\t\teasing : previous.prevEasing,\n\t\t\t\tcomplete : function () {\n\t\t\t\t\t$(this).trigger('onReset').remove();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\t/*\n\t *\tOverlay helper\n\t */\n\n\tF.helpers.overlay = {\n\t\tdefaults : {\n\t\t\tcloseClick : true, // if true, fancyBox will be closed when user clicks on the overlay\n\t\t\tspeedOut : 200, // duration of fadeOut animation\n\t\t\tshowEarly : true, // indicates if should be opened immediately or wait until the content is ready\n\t\t\tcss : {}, // custom CSS properties\n\t\t\tlocked : !isTouch, // if true, the content will be locked into overlay\n\t\t\tfixed : true // if false, the overlay CSS position property will not be set to \"fixed\"\n\t\t},\n\n\t\toverlay : null, // current handle\n\t\tfixed : false, // indicates if the overlay has position \"fixed\"\n\n\t\t// Public methods\n\t\tcreate : function(opts) {\n\t\t\topts = $.extend({}, this.defaults, opts);\n\n\t\t\tif (this.overlay) {\n\t\t\t\tthis.close();\n\t\t\t}\n\n\t\t\tthis.overlay = $('
').appendTo( 'body' );\n\t\t\tthis.fixed = false;\n\n\t\t\tif (opts.fixed && F.defaults.fixed) {\n\t\t\t\tthis.overlay.addClass('fancybox-overlay-fixed');\n\n\t\t\t\tthis.fixed = true;\n\t\t\t}\n\t\t},\n\n\t\topen : function(opts) {\n\t\t\tvar that = this;\n\n\t\t\topts = $.extend({}, this.defaults, opts);\n\n\t\t\tif (this.overlay) {\n\t\t\t\tthis.overlay.unbind('.overlay').width('auto').height('auto');\n\n\t\t\t} else {\n\t\t\t\tthis.create(opts);\n\t\t\t}\n\n\t\t\tif (!this.fixed) {\n\t\t\t\tW.bind('resize.overlay', $.proxy( this.update, this) );\n\n\t\t\t\tthis.update();\n\t\t\t}\n\n\t\t\tif (opts.closeClick) {\n\t\t\t\tthis.overlay.bind('click.overlay', function(e) {\n\t\t\t\t\tif ($(e.target).hasClass('fancybox-overlay')) {\n\t\t\t\t\t\tif (F.isActive) {\n\t\t\t\t\t\t\tF.close();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthat.close();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.overlay.css( opts.css ).show();\n\t\t},\n\n\t\tclose : function() {\n\t\t\t$('.fancybox-overlay').remove();\n\n\t\t\tW.unbind('resize.overlay');\n\n\t\t\tthis.overlay = null;\n\n\t\t\tif (this.margin !== false) {\n\t\t\t\t$('body').css('margin-right', this.margin);\n\n\t\t\t\tthis.margin = false;\n\t\t\t}\n\n\t\t\tif (this.el) {\n\t\t\t\tthis.el.removeClass('fancybox-lock');\n\t\t\t}\n\t\t},\n\n\t\t// Private, callbacks\n\n\t\tupdate : function () {\n\t\t\tvar width = '100%', offsetWidth;\n\n\t\t\t// Reset width/height so it will not mess\n\t\t\tthis.overlay.width(width).height('100%');\n\n\t\t\t// jQuery does not return reliable result for IE\n\t\t\tif (IE) {\n\t\t\t\toffsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth);\n\n\t\t\t\tif (D.width() > offsetWidth) {\n\t\t\t\t\twidth = D.width();\n\t\t\t\t}\n\n\t\t\t} else if (D.width() > W.width()) {\n\t\t\t\twidth = D.width();\n\t\t\t}\n\n\t\t\tthis.overlay.width(width).height(D.height());\n\t\t},\n\n\t\t// This is where we can manipulate DOM, because later it would cause iframes to reload\n\t\tonReady : function (opts, obj) {\n\t\t\t$('.fancybox-overlay').stop(true, true);\n\n\t\t\tif (!this.overlay) {\n\t\t\t\tthis.margin = D.height() > W.height() || $('body').css('overflow-y') === 'scroll' ? $('body').css('margin-right') : false;\n\t\t\t\tthis.el = document.all && !document.querySelector ? $('html') : $('body');\n\n\t\t\t\tthis.create(opts);\n\t\t\t}\n\n\t\t\tif (opts.locked && this.fixed) {\n\t\t\t\tobj.locked = this.overlay.append( obj.wrap );\n\t\t\t\tobj.fixed = false;\n\t\t\t}\n\n\t\t\tif (opts.showEarly === true) {\n\t\t\t\tthis.beforeShow.apply(this, arguments);\n\t\t\t}\n\t\t},\n\n\t\tbeforeShow : function(opts, obj) {\n\t\t\tif (obj.locked) {\n\t\t\t\tthis.el.addClass('fancybox-lock');\n\n\t\t\t\tif (this.margin !== false) {\n\t\t\t\t\t$('body').css('margin-right', getScalar( this.margin ) + obj.scrollbarWidth);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.open(opts);\n\t\t},\n\n\t\tonUpdate : function() {\n\t\t\tif (!this.fixed) {\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t},\n\n\t\tafterClose: function (opts) {\n\t\t\t// Remove overlay if exists and fancyBox is not opening\n\t\t\t// (e.g., it is not being open using afterClose callback)\n\t\t\tif (this.overlay && !F.isActive) {\n\t\t\t\tthis.overlay.fadeOut(opts.speedOut, $.proxy( this.close, this ));\n\t\t\t}\n\t\t}\n\t};\n\n\t/*\n\t *\tTitle helper\n\t */\n\n\tF.helpers.title = {\n\t\tdefaults : {\n\t\t\ttype : 'float', // 'float', 'inside', 'outside' or 'over',\n\t\t\tposition : 'bottom' // 'top' or 'bottom'\n\t\t},\n\n\t\tbeforeShow: function (opts) {\n\t\t\tvar current = F.current,\n\t\t\t\ttext = current.title,\n\t\t\t\ttype = opts.type,\n\t\t\t\ttitle,\n\t\t\t\ttarget;\n\n\t\t\tif ($.isFunction(text)) {\n\t\t\t\ttext = text.call(current.element, current);\n\t\t\t}\n\n\t\t\tif (!isString(text) || $.trim(text) === '') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttitle = $('
' + text + '
');\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'inside':\n\t\t\t\t\ttarget = F.skin;\n\t\t\t\tbreak;\n\n\t\t\t\tcase 'outside':\n\t\t\t\t\ttarget = F.wrap;\n\t\t\t\tbreak;\n\n\t\t\t\tcase 'over':\n\t\t\t\t\ttarget = F.inner;\n\t\t\t\tbreak;\n\n\t\t\t\tdefault: // 'float'\n\t\t\t\t\ttarget = F.skin;\n\n\t\t\t\t\ttitle.appendTo('body');\n\n\t\t\t\t\tif (IE) {\n\t\t\t\t\t\ttitle.width( title.width() );\n\t\t\t\t\t}\n\n\t\t\t\t\ttitle.wrapInner('');\n\n\t\t\t\t\t//Increase bottom margin so this title will also fit into viewport\n\t\t\t\t\tF.current.margin[2] += Math.abs( getScalar(title.css('margin-bottom')) );\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\ttitle[ (opts.position === 'top' ? 'prependTo' : 'appendTo') ](target);\n\t\t}\n\t};\n\n\t// jQuery plugin initialization\n\t$.fn.fancybox = function (options) {\n\t\tvar index,\n\t\t\tthat = $(this),\n\t\t\tselector = this.selector || '',\n\t\t\trun = function(e) {\n\t\t\t\tvar what = $(this).blur(), idx = index, relType, relVal;\n\n\t\t\t\tif (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) && !what.is('.fancybox-wrap')) {\n\t\t\t\t\trelType = options.groupAttr || 'data-fancybox-group';\n\t\t\t\t\trelVal = what.attr(relType);\n\n\t\t\t\t\tif (!relVal) {\n\t\t\t\t\t\trelType = 'rel';\n\t\t\t\t\t\trelVal = what.get(0)[ relType ];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (relVal && relVal !== '' && relVal !== 'nofollow') {\n\t\t\t\t\t\twhat = selector.length ? $(selector) : that;\n\t\t\t\t\t\twhat = what.filter('[' + relType + '=\"' + relVal + '\"]');\n\t\t\t\t\t\tidx = what.index(this);\n\t\t\t\t\t}\n\n\t\t\t\t\toptions.index = idx;\n\n\t\t\t\t\t// Stop an event from bubbling if everything is fine\n\t\t\t\t\tif (F.open(what, options) !== false) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\toptions = options || {};\n\t\tindex = options.index || 0;\n\n\t\tif (!selector || options.live === false) {\n\t\t\tthat.unbind('click.fb-start').bind('click.fb-start', run);\n\n\t\t} else {\n\t\t\tD.undelegate(selector, 'click.fb-start').delegate(selector + \":not('.fancybox-item, .fancybox-nav')\", 'click.fb-start', run);\n\t\t}\n\n\t\tthis.filter('[data-fancybox-start=1]').trigger('click');\n\n\t\treturn this;\n\t};\n\n\t// Tests that need a body at doc ready\n\tD.ready(function() {\n\t\tif ( $.scrollbarWidth === undefined ) {\n\t\t\t// http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth\n\t\t\t$.scrollbarWidth = function() {\n\t\t\t\tvar parent = $('
').appendTo('body'),\n\t\t\t\t\tchild = parent.children(),\n\t\t\t\t\twidth = child.innerWidth() - child.height( 99 ).innerWidth();\n\n\t\t\t\tparent.remove();\n\n\t\t\t\treturn width;\n\t\t\t};\n\t\t}\n\n\t\tif ( $.support.fixedPosition === undefined ) {\n\t\t\t$.support.fixedPosition = (function() {\n\t\t\t\tvar elem = $('
').appendTo('body'),\n\t\t\t\t\tfixed = ( elem[0].offsetTop === 20 || elem[0].offsetTop === 15 );\n\n\t\t\t\telem.remove();\n\n\t\t\t\treturn fixed;\n\t\t\t}());\n\t\t}\n\n\t\t$.extend(F.defaults, {\n\t\t\tscrollbarWidth : $.scrollbarWidth(),\n\t\t\tfixed : $.support.fixedPosition,\n\t\t\tparent : $('body')\n\t\t});\n\t});\n\n}(window, document, jQuery));","( function(window, undefined) {\r\n\"use strict\";\r\n\r\nvar hash = (function() {\r\n\r\n var fromHash = function() {\r\n var params = window.location.hash ? window.location.hash.substr(1).split(\"&\") : [],\r\n paramsObject = {};\r\n\r\n for(var i = 0; i < params.length; i++) {\r\n var a = params[i].split(\"=\");\r\n paramsObject[a[0]] = decodeURIComponent(a[1]);\r\n }\r\n return paramsObject;\r\n };\r\n\r\n var toHash = function(params) {\r\n var str = [];\r\n for(var p in params) {\r\n if(p.length){\r\n if(p!=='!'){\r\n str.push(p + \"=\" + encodeURIComponent(params[p]));\r\n }\r\n }\r\n }\r\n if(typeof window.location.replace === 'function'){\r\n if(str.length){\r\n window.location.replace('#'+str.join(\"&\"));\r\n } else{\r\n window.location.replace('#!');\r\n }\r\n } else {\r\n window.location.hash = str.join(\"&\");\r\n }\r\n };\r\n return {\r\n get: function(param) {\r\n var params = fromHash();\r\n if (param) {\r\n return params[param];\r\n } else {\r\n return params;\r\n }\r\n },\r\n add: function(newParams) {\r\n var params = fromHash();\r\n for (var p in newParams) {\r\n params[p] = newParams[p];\r\n }\r\n toHash(params);\r\n },\r\n remove: function(removeParams) {\r\n removeParams = (typeof(removeParams)=='string') ? [removeParams] : removeParams;\r\n var params = fromHash();\r\n for (var i = 0; i < removeParams.length; i++) {\r\n delete params[removeParams[i]];\r\n }\r\n toHash(params);\r\n },\r\n clear: function() {\r\n toHash({});\r\n }\r\n };\r\n})();\r\n\r\nwindow.hash = hash;\r\n})(window);","/*!\r\n * headroom.js v0.5.0 - Give your page some headroom. Hide your header until you need it\r\n * Copyright (c) 2014 Nick Williams - http://wicky.nillia.ms/headroom.js\r\n * License: MIT\r\n */\r\n\r\n(function(window, document) {\r\n\r\n 'use strict';\r\n\r\n /* exported features */\r\n \r\n var features = {\r\n bind : !!(function(){}.bind),\r\n classList : 'classList' in document.documentElement,\r\n rAF : !!(window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame)\r\n };\r\n window.requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;\r\n \r\n /**\r\n * Handles debouncing of events via requestAnimationFrame\r\n * @see http://www.html5rocks.com/en/tutorials/speed/animations/\r\n * @param {Function} callback The callback to handle whichever event\r\n */\r\n function Debouncer (callback) {\r\n this.callback = callback;\r\n this.ticking = false;\r\n }\r\n Debouncer.prototype = {\r\n constructor : Debouncer,\r\n \r\n /**\r\n * dispatches the event to the supplied callback\r\n * @private\r\n */\r\n update : function() {\r\n this.callback && this.callback();\r\n this.ticking = false;\r\n },\r\n \r\n /**\r\n * ensures events don't get stacked\r\n * @private\r\n */\r\n requestTick : function() {\r\n if(!this.ticking) {\r\n requestAnimationFrame(this.rafCallback || (this.rafCallback = this.update.bind(this)));\r\n this.ticking = true;\r\n }\r\n },\r\n \r\n /**\r\n * Attach this as the event listeners\r\n */\r\n handleEvent : function() {\r\n this.requestTick();\r\n }\r\n };\r\n /**\r\n * Helper function for extending objects\r\n */\r\n function extend (object /*, objectN ... */) {\r\n if(arguments.length <= 0) {\r\n throw new Error('Missing arguments in extend function');\r\n }\r\n \r\n var result = object || {},\r\n key,\r\n i;\r\n \r\n for (i = 1; i < arguments.length; i++) {\r\n var replacement = arguments[i] || {};\r\n \r\n for (key in replacement) {\r\n if(typeof result[key] === 'object') {\r\n result[key] = extend(result[key], replacement[key]);\r\n }\r\n else {\r\n result[key] = result[key] || replacement[key];\r\n }\r\n }\r\n }\r\n \r\n return result;\r\n }\r\n \r\n /**\r\n * UI enhancement for fixed headers.\r\n * Hides header when scrolling down\r\n * Shows header when scrolling up\r\n * @constructor\r\n * @param {DOMElement} elem the header element\r\n * @param {Object} options options for the widget\r\n */\r\n function Headroom (elem, options) {\r\n options = extend(options, Headroom.options);\r\n \r\n this.lastKnownScrollY = 0;\r\n this.elem = elem;\r\n this.debouncer = new Debouncer(this.update.bind(this));\r\n this.tolerance = options.tolerance;\r\n this.classes = options.classes;\r\n this.offset = options.offset;\r\n this.initialised = false;\r\n this.onPin = options.onPin;\r\n this.onUnpin = options.onUnpin;\r\n this.onTop = options.onTop;\r\n this.onNotTop = options.onNotTop;\r\n }\r\n Headroom.prototype = {\r\n constructor : Headroom,\r\n \r\n /**\r\n * Initialises the widget\r\n */\r\n init : function() {\r\n if(!Headroom.cutsTheMustard) {\r\n return;\r\n }\r\n \r\n this.elem.classList.add(this.classes.initial);\r\n \r\n // defer event registration to handle browser \r\n // potentially restoring previous scroll position\r\n setTimeout(this.attachEvent.bind(this), 100);\r\n \r\n return this;\r\n },\r\n \r\n /**\r\n * Unattaches events and removes any classes that were added\r\n */\r\n destroy : function() {\r\n var classes = this.classes;\r\n \r\n this.initialised = false;\r\n window.removeEventListener('scroll', this.debouncer, false);\r\n this.elem.classList.remove(classes.unpinned, classes.pinned, classes.top, classes.initial);\r\n },\r\n \r\n /**\r\n * Attaches the scroll event\r\n * @private\r\n */\r\n attachEvent : function() {\r\n if(!this.initialised){\r\n this.lastKnownScrollY = this.getScrollY();\r\n this.initialised = true;\r\n window.addEventListener('scroll', this.debouncer, false);\r\n \r\n this.debouncer.handleEvent();\r\n }\r\n },\r\n \r\n /**\r\n * Unpins the header if it's currently pinned\r\n */\r\n unpin : function() {\r\n var classList = this.elem.classList,\r\n classes = this.classes;\r\n \r\n if(classList.contains(classes.pinned) || !classList.contains(classes.unpinned)) {\r\n classList.add(classes.unpinned);\r\n classList.remove(classes.pinned);\r\n this.onUnpin && this.onUnpin.call(this);\r\n }\r\n },\r\n \r\n /**\r\n * Pins the header if it's currently unpinned\r\n */\r\n pin : function() {\r\n var classList = this.elem.classList,\r\n classes = this.classes;\r\n \r\n if(classList.contains(classes.unpinned)) {\r\n classList.remove(classes.unpinned);\r\n classList.add(classes.pinned);\r\n this.onPin && this.onPin.call(this);\r\n }\r\n },\r\n \r\n /**\r\n * Handles the top states\r\n */\r\n top : function() {\r\n var classList = this.elem.classList,\r\n classes = this.classes;\r\n \r\n if(!classList.contains(classes.top)) {\r\n classList.add(classes.top);\r\n classList.remove(classes.notTop);\r\n this.onTop && this.onTop.call(this);\r\n }\r\n },\r\n \r\n /**\r\n * Handles the not top state\r\n */\r\n notTop : function() {\r\n var classList = this.elem.classList,\r\n classes = this.classes;\r\n \r\n if(!classList.contains(classes.notTop)) {\r\n classList.add(classes.notTop);\r\n classList.remove(classes.top);\r\n this.onNotTop && this.onNotTop.call(this);\r\n }\r\n },\r\n \r\n /**\r\n * Gets the Y scroll position\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY\r\n * @return {Number} pixels the page has scrolled along the Y-axis\r\n */\r\n getScrollY : function() {\r\n return (window.pageYOffset !== undefined)\r\n ? window.pageYOffset\r\n : (document.documentElement || document.body.parentNode || document.body).scrollTop;\r\n },\r\n \r\n /**\r\n * Gets the height of the viewport\r\n * @see http://andylangton.co.uk/blog/development/get-viewport-size-width-and-height-javascript\r\n * @return {int} the height of the viewport in pixels\r\n */\r\n getViewportHeight : function () {\r\n return window.innerHeight\r\n || document.documentElement.clientHeight\r\n || document.body.clientHeight;\r\n },\r\n \r\n /**\r\n * Gets the height of the document\r\n * @see http://james.padolsey.com/javascript/get-document-height-cross-browser/\r\n * @return {int} the height of the document in pixels\r\n */\r\n getDocumentHeight : function () {\r\n var body = document.body,\r\n documentElement = document.documentElement;\r\n \r\n return Math.max(\r\n body.scrollHeight, documentElement.scrollHeight,\r\n body.offsetHeight, documentElement.offsetHeight,\r\n body.clientHeight, documentElement.clientHeight\r\n );\r\n },\r\n \r\n /**\r\n * determines if the scroll position is outside of document boundaries\r\n * @param {int} currentScrollY the current y scroll position\r\n * @return {bool} true if out of bounds, false otherwise\r\n */\r\n isOutOfBounds : function (currentScrollY) {\r\n var pastTop = currentScrollY < 0,\r\n pastBottom = currentScrollY + this.getViewportHeight() > this.getDocumentHeight();\r\n \r\n return pastTop || pastBottom;\r\n },\r\n \r\n /**\r\n * determines if the tolerance has been exceeded\r\n * @param {int} currentScrollY the current scroll y position\r\n * @return {bool} true if tolerance exceeded, false otherwise\r\n */\r\n toleranceExceeded : function (currentScrollY) {\r\n return Math.abs(currentScrollY-this.lastKnownScrollY) >= this.tolerance;\r\n },\r\n \r\n /**\r\n * determine if it is appropriate to unpin\r\n * @param {int} currentScrollY the current y scroll position\r\n * @param {bool} toleranceExceeded has the tolerance been exceeded?\r\n * @return {bool} true if should unpin, false otherwise\r\n */\r\n shouldUnpin : function (currentScrollY, toleranceExceeded) {\r\n var scrollingDown = currentScrollY > this.lastKnownScrollY,\r\n pastOffset = currentScrollY >= this.offset;\r\n \r\n return scrollingDown && pastOffset && toleranceExceeded;\r\n },\r\n \r\n /**\r\n * determine if it is appropriate to pin\r\n * @param {int} currentScrollY the current y scroll position\r\n * @param {bool} toleranceExceeded has the tolerance been exceeded?\r\n * @return {bool} true if should pin, false otherwise\r\n */\r\n shouldPin : function (currentScrollY, toleranceExceeded) {\r\n var scrollingUp = currentScrollY < this.lastKnownScrollY,\r\n pastOffset = currentScrollY <= this.offset;\r\n \r\n return (scrollingUp && toleranceExceeded) || pastOffset;\r\n },\r\n \r\n /**\r\n * Handles updating the state of the widget\r\n */\r\n update : function() {\r\n var currentScrollY = this.getScrollY(),\r\n toleranceExceeded = this.toleranceExceeded(currentScrollY);\r\n \r\n if(this.isOutOfBounds(currentScrollY)) { // Ignore bouncy scrolling in OSX\r\n return;\r\n }\r\n \r\n if (currentScrollY <= this.offset ) {\r\n this.top();\r\n } else {\r\n this.notTop();\r\n }\r\n \r\n if(this.shouldUnpin(currentScrollY, toleranceExceeded)) {\r\n this.unpin();\r\n }\r\n else if(this.shouldPin(currentScrollY, toleranceExceeded)) {\r\n this.pin();\r\n }\r\n \r\n this.lastKnownScrollY = currentScrollY;\r\n }\r\n };\r\n /**\r\n * Default options\r\n * @type {Object}\r\n */\r\n Headroom.options = {\r\n tolerance : 0,\r\n offset: 0,\r\n classes : {\r\n pinned : 'headroom--pinned',\r\n unpinned : 'headroom--unpinned',\r\n top: 'headroom--top',\r\n notTop: 'headroom--not-top',\r\n initial : 'headroom'\r\n }\r\n };\r\n Headroom.cutsTheMustard = typeof features !== 'undefined' && features.rAF && features.bind && features.classList;\r\n\r\n window.Headroom = Headroom;\r\n\r\n}(window, document));\r\n\r\n\r\n(function($) {\r\n\r\n if(!$) {\r\n return;\r\n }\r\n\r\n ////////////\r\n // Plugin //\r\n ////////////\r\n\r\n $.fn.headroom = function(option) {\r\n return this.each(function() {\r\n var $this = $(this),\r\n data = $this.data('headroom'),\r\n options = typeof option === 'object' && option;\r\n\r\n options = $.extend(true, {}, Headroom.options, options);\r\n\r\n if (!data) {\r\n data = new Headroom(this, options);\r\n data.init();\r\n $this.data('headroom', data);\r\n }\r\n if (typeof option === 'string') {\r\n data[option]();\r\n }\r\n });\r\n };\r\n\r\n //////////////\r\n // Data API //\r\n //////////////\r\n\r\n $('[data-headroom]').each(function() {\r\n var $this = $(this);\r\n $this.headroom($this.data());\r\n });\r\n\r\n}(window.Zepto || window.jQuery));","/*\r\n * Metadata - jQuery plugin for parsing metadata from elements\r\n *\r\n * Copyright (c) 2006 John Resig, Yehuda Katz, Jörn Zaefferer, Paul McLanahan\r\n *\r\n * Dual licensed under the MIT and GPL licenses:\r\n * http://www.opensource.org/licenses/mit-license.php\r\n * http://www.gnu.org/licenses/gpl.html\r\n *\r\n */\r\n\r\n/**\r\n * Sets the type of metadata to use. Metadata is encoded in JSON, and each property\r\n * in the JSON will become a property of the element itself.\r\n *\r\n * There are three supported types of metadata storage:\r\n *\r\n * attr: Inside an attribute. The name parameter indicates *which* attribute.\r\n * \r\n * class: Inside the class attribute, wrapped in curly braces: { }\r\n * \r\n * elem: Inside a child element (e.g. a script tag). The\r\n * name parameter indicates *which* element.\r\n * \r\n * The metadata for an element is loaded the first time the element is accessed via jQuery.\r\n *\r\n * As a result, you can define the metadata type, use $(expr) to load the metadata into the elements\r\n * matched by expr, then redefine the metadata type and run another $(expr) for other elements.\r\n * \r\n * @name $.metadata.setType\r\n *\r\n * @example

This is a p

\r\n * @before $.metadata.setType(\"class\")\r\n * @after $(\"#one\").metadata().item_id == 1; $(\"#one\").metadata().item_label == \"Label\"\r\n * @desc Reads metadata from the class attribute\r\n * \r\n * @example

This is a p

\r\n * @before $.metadata.setType(\"attr\", \"data\")\r\n * @after $(\"#one\").metadata().item_id == 1; $(\"#one\").metadata().item_label == \"Label\"\r\n * @desc Reads metadata from a \"data\" attribute\r\n * \r\n * @example

This is a p

\r\n * @before $.metadata.setType(\"elem\", \"script\")\r\n * @after $(\"#one\").metadata().item_id == 1; $(\"#one\").metadata().item_label == \"Label\"\r\n * @desc Reads metadata from a nested script element\r\n * \r\n * @param String type The encoding type\r\n * @param String name The name of the attribute to be used to get metadata (optional)\r\n * @cat Plugins/Metadata\r\n * @descr Sets the type of encoding to be used when loading metadata for the first time\r\n * @type undefined\r\n * @see metadata()\r\n */\r\n\r\n(function($) {\r\n\r\n$.extend({\r\n\tmetadata : {\r\n\t\tdefaults : {\r\n\t\t\ttype: 'class',\r\n\t\t\tname: 'metadata',\r\n\t\t\tcre: /({.*})/,\r\n\t\t\tsingle: 'metadata'\r\n\t\t},\r\n\t\tsetType: function( type, name ){\r\n\t\t\tthis.defaults.type = type;\r\n\t\t\tthis.defaults.name = name;\r\n\t\t},\r\n\t\tget: function( elem, opts ){\r\n\t\t\tvar settings = $.extend({},this.defaults,opts);\r\n\t\t\t// check for empty string in single property\r\n\t\t\tif ( !settings.single.length ) settings.single = 'metadata';\r\n\t\t\t\r\n\t\t\tvar data = $.data(elem, settings.single);\r\n\t\t\t// returned cached data if it already exists\r\n\t\t\tif ( data ) return data;\r\n\t\t\t\r\n\t\t\tdata = \"{}\";\r\n\t\t\t\r\n\t\t\tif ( settings.type == \"class\" ) {\r\n\t\t\t\tvar m = settings.cre.exec( elem.className );\r\n\t\t\t\tif ( m )\r\n\t\t\t\t\tdata = m[1];\r\n\t\t\t} else if ( settings.type == \"elem\" ) {\r\n\t\t\t\tif( !elem.getElementsByTagName )\r\n\t\t\t\t\treturn undefined;\r\n\t\t\t\tvar e = elem.getElementsByTagName(settings.name);\r\n\t\t\t\tif ( e.length )\r\n\t\t\t\t\tdata = $.trim(e[0].innerHTML);\r\n\t\t\t} else if ( elem.getAttribute != undefined ) {\r\n\t\t\t\tvar attr = elem.getAttribute( settings.name );\r\n\t\t\t\tif ( attr )\r\n\t\t\t\t\tdata = attr;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif ( data.indexOf( '{' ) <0 )\r\n\t\t\tdata = \"{\" + data + \"}\";\r\n\t\t\t\r\n\t\t\tdata = eval(\"(\" + data + \")\");\r\n\t\t\t\r\n\t\t\t$.data( elem, settings.single, data );\r\n\t\t\treturn data;\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * Returns the metadata object for the first member of the jQuery object.\r\n *\r\n * @name metadata\r\n * @descr Returns element's metadata object\r\n * @param Object opts An object contianing settings to override the defaults\r\n * @type jQuery\r\n * @cat Plugins/Metadata\r\n */\r\n$.fn.metadata = function( opts ){\r\n\treturn $.metadata.get( this[0], opts );\r\n};\r\n\r\n})(jQuery);","// https://github.com/mathiasbynens/jquery-placeholder\r\n\r\n/* HTML5 Placeholder jQuery Plugin - v2.1.1\r\n * Copyright (c)2015 Mathias Bynens\r\n * 2015-03-11\r\n */\r\n!function(a){\"function\"==typeof define&&define.amd?define([\"jquery\"],a):a(\"object\"==typeof module&&module.exports?require(\"jquery\"):jQuery)}(function(a){function b(b){var c={},d=/^jQuery\\d+$/;return a.each(b.attributes,function(a,b){b.specified&&!d.test(b.name)&&(c[b.name]=b.value)}),c}function c(b,c){var d=this,f=a(d);if(d.value==f.attr(\"placeholder\")&&f.hasClass(m.customClass))if(f.data(\"placeholder-password\")){if(f=f.hide().nextAll('input[type=\"password\"]:first').show().attr(\"id\",f.removeAttr(\"id\").data(\"placeholder-id\")),b===!0)return f[0].value=c;f.focus()}else d.value=\"\",f.removeClass(m.customClass),d==e()&&d.select()}function d(){var d,e=this,f=a(e),g=this.id;if(\"\"===e.value){if(\"password\"===e.type){if(!f.data(\"placeholder-textinput\")){try{d=f.clone().attr({type:\"text\"})}catch(h){d=a(\"\").attr(a.extend(b(this),{type:\"text\"}))}d.removeAttr(\"name\").data({\"placeholder-password\":f,\"placeholder-id\":g}).bind(\"focus.placeholder\",c),f.data({\"placeholder-textinput\":d,\"placeholder-id\":g}).before(d)}f=f.removeAttr(\"id\").hide().prevAll('input[type=\"text\"]:first').attr(\"id\",g).show()}f.addClass(m.customClass),f[0].value=f.attr(\"placeholder\")}else f.removeClass(m.customClass)}function e(){try{return document.activeElement}catch(a){}}var f,g,h=\"[object OperaMini]\"==Object.prototype.toString.call(window.operamini),i=\"placeholder\"in document.createElement(\"input\")&&!h,j=\"placeholder\"in document.createElement(\"textarea\")&&!h,k=a.valHooks,l=a.propHooks;if(i&&j)g=a.fn.placeholder=function(){return this},g.input=g.textarea=!0;else{var m={};g=a.fn.placeholder=function(b){var e={customClass:\"placeholder\"};m=a.extend({},e,b);var f=this;return f.filter((i?\"textarea\":\":input\")+\"[placeholder]\").not(\".\"+m.customClass).bind({\"focus.placeholder\":c,\"blur.placeholder\":d}).data(\"placeholder-enabled\",!0).trigger(\"blur.placeholder\"),f},g.input=i,g.textarea=j,f={get:function(b){var c=a(b),d=c.data(\"placeholder-password\");return d?d[0].value:c.data(\"placeholder-enabled\")&&c.hasClass(m.customClass)?\"\":b.value},set:function(b,f){var g=a(b),h=g.data(\"placeholder-password\");return h?h[0].value=f:g.data(\"placeholder-enabled\")?(\"\"===f?(b.value=f,b!=e()&&d.call(b)):g.hasClass(m.customClass)?c.call(b,!0,f)||(b.value=f):b.value=f,g):b.value=f}},i||(k.input=f,l.value=f),j||(k.textarea=f,l.value=f),a(function(){a(document).delegate(\"form\",\"submit.placeholder\",function(){var b=a(\".\"+m.customClass,this).each(c);setTimeout(function(){b.each(d)},10)})}),a(window).bind(\"beforeunload.placeholder\",function(){a(\".\"+m.customClass).each(function(){this.value=\"\"})})}});\r\n\r\n\r\n\r\n","/*! rangeslider.js - v0.3.7 | (c) 2014 @andreruffert | MIT license | https://github.com/andreruffert/rangeslider.js */\r\n(function(factory) {\r\n 'use strict';\r\n\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define(['jquery'], factory);\r\n }\r\n else if (typeof exports === 'object') {\r\n // CommonJS\r\n factory(require('jquery'));\r\n } else {\r\n // Browser globals\r\n factory(jQuery);\r\n }\r\n}(function($) {\r\n 'use strict';\r\n\r\n /**\r\n * Range feature detection\r\n * @return {Boolean}\r\n */\r\n function supportsRange() {\r\n var input = document.createElement('input');\r\n input.setAttribute('type', 'range');\r\n return input.type !== 'text';\r\n }\r\n\r\n var pluginName = 'rangeslider',\r\n pluginInstances = [],\r\n pluginIdentifier = 0,\r\n inputrange = supportsRange(),\r\n defaults = {\r\n polyfill: true,\r\n rangeClass: 'rangeslider',\r\n disabledClass: 'rangeslider--disabled',\r\n fillClass: 'rangeslider__fill',\r\n handleClass: 'rangeslider__handle',\r\n startEvent: ['mousedown', 'touchstart', 'pointerdown'],\r\n moveEvent: ['mousemove', 'touchmove', 'pointermove'],\r\n endEvent: ['mouseup', 'touchend', 'pointerup']\r\n };\r\n\r\n /**\r\n * Delays a function for the given number of milliseconds, and then calls\r\n * it with the arguments supplied.\r\n *\r\n * @param {Function} fn [description]\r\n * @param {Number} wait [description]\r\n * @return {Function}\r\n */\r\n function delay(fn, wait) {\r\n var args = Array.prototype.slice.call(arguments, 2);\r\n return setTimeout(function(){ return fn.apply(null, args); }, wait);\r\n }\r\n\r\n /**\r\n * Returns a debounced function that will make sure the given\r\n * function is not triggered too much.\r\n *\r\n * @param {Function} fn Function to debounce.\r\n * @param {Number} debounceDuration OPTIONAL. The amount of time in milliseconds for which we will debounce the function. (defaults to 100ms)\r\n * @return {Function}\r\n */\r\n function debounce(fn, debounceDuration) {\r\n debounceDuration = debounceDuration || 100;\r\n return function() {\r\n if (!fn.debouncing) {\r\n var args = Array.prototype.slice.apply(arguments);\r\n fn.lastReturnVal = fn.apply(window, args);\r\n fn.debouncing = true;\r\n }\r\n clearTimeout(fn.debounceTimeout);\r\n fn.debounceTimeout = setTimeout(function(){\r\n fn.debouncing = false;\r\n }, debounceDuration);\r\n return fn.lastReturnVal;\r\n };\r\n }\r\n\r\n /**\r\n * Check if a `element` is visible in the DOM\r\n *\r\n * @param {Element} element\r\n * @return {Boolean}\r\n */\r\n function isHidden(element) {\r\n if (element.offsetWidth !== 0 || element.offsetHeight !== 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Get hidden parentNodes of an `element`\r\n *\r\n * @param {Element} element\r\n * @return {[type]}\r\n */\r\n function getHiddenParentNodes(element) {\r\n var parents = [],\r\n node = element.parentNode;\r\n\r\n while (node != null && isHidden(node)) {\r\n parents.push(node);\r\n node = node.parentNode;\r\n }\r\n return parents;\r\n }\r\n\r\n /**\r\n * Returns dimensions for an element even if it is not visible in the DOM.\r\n *\r\n * @param {Element} element\r\n * @param {String} key (e.g. offsetWidth �)\r\n * @return {Number}\r\n */\r\n function getDimension(element, key) {\r\n var hiddenParentNodes = getHiddenParentNodes(element),\r\n hiddenParentNodesLength = hiddenParentNodes.length,\r\n displayProperty = [],\r\n dimension = element[key];\r\n\r\n if (hiddenParentNodesLength) {\r\n for (var i = 0; i < hiddenParentNodesLength; i++) {\r\n // Cache the display property to restore it later.\r\n displayProperty[i] = hiddenParentNodes[i].style.display;\r\n\r\n hiddenParentNodes[i].style.display = 'block';\r\n hiddenParentNodes[i].style.height = '0';\r\n hiddenParentNodes[i].style.overflow = 'hidden';\r\n hiddenParentNodes[i].style.visibility = 'hidden';\r\n }\r\n\r\n dimension = element[key];\r\n\r\n for (var j = 0; j < hiddenParentNodesLength; j++) {\r\n hiddenParentNodes[j].style.display = displayProperty[j];\r\n hiddenParentNodes[j].style.height = '';\r\n hiddenParentNodes[j].style.overflow = '';\r\n hiddenParentNodes[j].style.visibility = '';\r\n }\r\n }\r\n return dimension;\r\n }\r\n\r\n /**\r\n * Plugin\r\n * @param {String} element\r\n * @param {Object} options\r\n */\r\n function Plugin(element, options) {\r\n this.$window = $(window);\r\n this.$document = $(document);\r\n this.$element = $(element);\r\n this.options = $.extend( {}, defaults, options );\r\n this._defaults = defaults;\r\n this._name = pluginName;\r\n this.startEvent = this.options.startEvent.join('.' + pluginName + ' ') + '.' + pluginName;\r\n this.moveEvent = this.options.moveEvent.join('.' + pluginName + ' ') + '.' + pluginName;\r\n this.endEvent = this.options.endEvent.join('.' + pluginName + ' ') + '.' + pluginName;\r\n this.polyfill = this.options.polyfill;\r\n this.onInit = this.options.onInit;\r\n this.onSlide = this.options.onSlide;\r\n this.onSlideEnd = this.options.onSlideEnd;\r\n\r\n // Plugin should only be used as a polyfill\r\n if (this.polyfill) {\r\n // Input range support?\r\n if (inputrange) { return false; }\r\n }\r\n\r\n this.identifier = 'js-' + pluginName + '-' +(pluginIdentifier++);\r\n this.min = parseFloat(this.$element[0].getAttribute('min') || 0);\r\n this.max = parseFloat(this.$element[0].getAttribute('max') || 100);\r\n this.value = parseFloat(this.$element[0].value || this.min + (this.max-this.min)/2);\r\n this.step = parseFloat(this.$element[0].getAttribute('step') || 1);\r\n this.toFixed = (this.step + '').replace('.', '').length - 1;\r\n this.$fill = $('
');\r\n this.$handle = $('
');\r\n this.$range = $('
').insertAfter(this.$element).prepend(this.$fill, this.$handle);\r\n\r\n // visually hide the input\r\n this.$element.css({\r\n 'position': 'absolute',\r\n 'width': '1px',\r\n 'height': '1px',\r\n 'overflow': 'hidden',\r\n 'opacity': '0'\r\n });\r\n\r\n // Store context\r\n this.handleDown = $.proxy(this.handleDown, this);\r\n this.handleMove = $.proxy(this.handleMove, this);\r\n this.handleEnd = $.proxy(this.handleEnd, this);\r\n\r\n this.init();\r\n\r\n // Attach Events\r\n var _this = this;\r\n this.$window.on('resize' + '.' + pluginName, debounce(function() {\r\n // Simulate resizeEnd event.\r\n delay(function() { _this.update(); }, 300);\r\n }, 20));\r\n\r\n this.$document.on(this.startEvent, '#' + this.identifier + ':not(.' + this.options.disabledClass + ')', this.handleDown);\r\n\r\n // Listen to programmatic value changes\r\n this.$element.on('change' + '.' + pluginName, function(e, data) {\r\n if (data && data.origin === pluginName) {\r\n return;\r\n }\r\n\r\n var value = e.target.value,\r\n pos = _this.getPositionFromValue(value);\r\n _this.setPosition(pos);\r\n });\r\n }\r\n\r\n Plugin.prototype.init = function() {\r\n if (this.onInit && typeof this.onInit === 'function') {\r\n this.onInit();\r\n }\r\n this.update();\r\n };\r\n\r\n Plugin.prototype.update = function() {\r\n this.handleWidth = getDimension(this.$handle[0], 'offsetWidth');\r\n this.rangeWidth = getDimension(this.$range[0], 'offsetWidth');\r\n this.maxHandleX = this.rangeWidth - this.handleWidth;\r\n this.grabX = this.handleWidth / 2;\r\n this.position = this.getPositionFromValue(this.value);\r\n\r\n // Consider disabled state\r\n if (this.$element[0].disabled) {\r\n this.$range.addClass(this.options.disabledClass);\r\n } else {\r\n this.$range.removeClass(this.options.disabledClass);\r\n }\r\n\r\n this.setPosition(this.position);\r\n };\r\n\r\n Plugin.prototype.handleDown = function(e) {\r\n e.preventDefault();\r\n this.$document.on(this.moveEvent, this.handleMove);\r\n this.$document.on(this.endEvent, this.handleEnd);\r\n\r\n // If we click on the handle don't set the new position\r\n if ((' ' + e.target.className + ' ').replace(/[\\n\\t]/g, ' ').indexOf(this.options.handleClass) > -1) {\r\n return;\r\n }\r\n\r\n var posX = this.getRelativePosition(e),\r\n rangeX = this.$range[0].getBoundingClientRect().left,\r\n handleX = this.getPositionFromNode(this.$handle[0]) - rangeX;\r\n\r\n this.setPosition(posX - this.grabX);\r\n\r\n if (posX >= handleX && posX < handleX + this.handleWidth) {\r\n this.grabX = posX - handleX;\r\n }\r\n };\r\n\r\n Plugin.prototype.handleMove = function(e) {\r\n e.preventDefault();\r\n var posX = this.getRelativePosition(e);\r\n this.setPosition(posX - this.grabX);\r\n };\r\n\r\n Plugin.prototype.handleEnd = function(e) {\r\n e.preventDefault();\r\n this.$document.off(this.moveEvent, this.handleMove);\r\n this.$document.off(this.endEvent, this.handleEnd);\r\n\r\n if (this.onSlideEnd && typeof this.onSlideEnd === 'function') {\r\n this.onSlideEnd(this.position, this.value);\r\n }\r\n };\r\n\r\n Plugin.prototype.cap = function(pos, min, max) {\r\n if (pos < min) { return min; }\r\n if (pos > max) { return max; }\r\n return pos;\r\n };\r\n\r\n Plugin.prototype.setPosition = function(pos) {\r\n var value, left;\r\n\r\n // Snapping steps\r\n value = this.getValueFromPosition(this.cap(pos, 0, this.maxHandleX));\r\n left = this.getPositionFromValue(value);\r\n\r\n // Update ui\r\n this.$fill[0].style.width = (left + this.grabX) + 'px';\r\n this.$handle[0].style.left = left + 'px';\r\n this.setValue(value);\r\n\r\n // Update globals\r\n this.position = left;\r\n this.value = value;\r\n\r\n if (this.onSlide && typeof this.onSlide === 'function') {\r\n this.onSlide(left, value);\r\n }\r\n };\r\n\r\n // Returns element position relative to the parent\r\n Plugin.prototype.getPositionFromNode = function(node) {\r\n var i = 0;\r\n while (node !== null) {\r\n i += node.offsetLeft;\r\n node = node.offsetParent;\r\n }\r\n return i;\r\n };\r\n\r\n Plugin.prototype.getRelativePosition = function(e) {\r\n // Get the offset left relative to the viewport\r\n var rangeX = this.$range[0].getBoundingClientRect().left,\r\n pageX = 0;\r\n\r\n if (typeof e.pageX !== 'undefined') {\r\n pageX = e.pageX;\r\n }\r\n else if (typeof e.originalEvent.clientX !== 'undefined') {\r\n pageX = e.originalEvent.clientX;\r\n }\r\n else if (e.originalEvent.touches && e.originalEvent.touches[0] && typeof e.originalEvent.touches[0].clientX !== 'undefined') {\r\n pageX = e.originalEvent.touches[0].clientX;\r\n }\r\n else if(e.currentPoint && typeof e.currentPoint.x !== 'undefined') {\r\n pageX = e.currentPoint.x;\r\n }\r\n\r\n return pageX - rangeX;\r\n };\r\n\r\n Plugin.prototype.getPositionFromValue = function(value) {\r\n var percentage, pos;\r\n percentage = (value - this.min)/(this.max - this.min);\r\n pos = percentage * this.maxHandleX;\r\n return pos;\r\n };\r\n\r\n Plugin.prototype.getValueFromPosition = function(pos) {\r\n var percentage, value;\r\n percentage = ((pos) / (this.maxHandleX || 1));\r\n value = this.step * Math.round(percentage * (this.max - this.min) / this.step) + this.min;\r\n return Number((value).toFixed(this.toFixed));\r\n };\r\n\r\n Plugin.prototype.setValue = function(value) {\r\n if (value !== this.value) {\r\n this.$element.val(value).trigger('change', {origin: pluginName});\r\n }\r\n };\r\n\r\n Plugin.prototype.destroy = function() {\r\n this.$document.off(this.startEvent, '#' + this.identifier, this.handleDown);\r\n this.$element\r\n .off('.' + pluginName)\r\n .removeAttr('style')\r\n .removeData('plugin_' + pluginName);\r\n\r\n // Remove the generated markup\r\n if (this.$range && this.$range.length) {\r\n this.$range[0].parentNode.removeChild(this.$range[0]);\r\n }\r\n\r\n // Remove global events if there isn't any instance anymore.\r\n pluginInstances.splice(pluginInstances.indexOf(this.$element[0]),1);\r\n if (!pluginInstances.length) {\r\n this.$window.off('.' + pluginName);\r\n }\r\n };\r\n\r\n // A really lightweight plugin wrapper around the constructor,\r\n // preventing against multiple instantiations\r\n $.fn[pluginName] = function(options) {\r\n return this.each(function() {\r\n var $this = $(this),\r\n data = $this.data('plugin_' + pluginName);\r\n\r\n // Create a new instance.\r\n if (!data) {\r\n $this.data('plugin_' + pluginName, (data = new Plugin(this, options)));\r\n pluginInstances.push(this);\r\n }\r\n\r\n // Make it possible to access methods from public.\r\n // e.g `$element.rangeslider('method');`\r\n if (typeof options === 'string') {\r\n data[options]();\r\n }\r\n });\r\n };\r\n\r\n}));","$(document).ready(function() {\n var switched = false;\n var updateTables = function() {\n if (($(window).width() < 767) && !switched ){\n switched = true;\n $(\".table-sticky .table\").each(function(i, element) {\n splitTable($(element));\n });\n return true;\n }\n else if (switched && ($(window).width() > 767)) {\n switched = false;\n $(\".table-sticky .table\").each(function(i, element) {\n unsplitTable($(element));\n });\n }\n };\n \n $(window).on('load', updateTables);\n $(window).on(\"redraw\",function(){switched=false;updateTables();}); // An event to listen for\n $(window).on(\"resize\", updateTables);\n \n\t\n\tfunction splitTable(original)\n\t{\n var columnCount = original.find(\"thead th\").length; // Count columns used to add a dynamic class\n\t\toriginal.wrap(\"
\");\n\t\t\n\t\tvar copy = original.clone();\n\t\tcopy.find(\"td:not(:first-child), th:not(:first-child)\").css(\"display\", \"none\");\n\t\tcopy.removeClass(\"responsive\");\n\t\t\n\t\toriginal.closest(\".table-wrapper\").append(copy);\n\t\tcopy.wrap(\"
\");\n\t\toriginal.wrap(\"
\");\n\n setCellHeights(original, copy);\n\t}\n\t\n\tfunction unsplitTable(original) {\n original.closest(\".table-wrapper\").find(\".pinned\").remove();\n original.unwrap();\n original.unwrap();\n\t}\n\n function setCellHeights(original, copy) {\n var tr = original.find('tr'),\n tr_copy = copy.find('tr'),\n heights = [];\n\n tr.each(function (index) {\n var self = $(this),\n tx = self.find('th, td');\n\n tx.each(function () {\n var height = $(this).outerHeight(true);\n heights[index] = heights[index] || 0;\n if (height > heights[index]) heights[index] = height;\n });\n\n });\n\n tr_copy.each(function (index) {\n $(this).height(heights[index]);\n });\n }\n\n});\n","/*!\r\n * jQuery Tools dev - The missing UI library for the Web\r\n * \r\n * scrollable/scrollable.js\r\n * scrollable/scrollable.autoscroll.js\r\n * scrollable/scrollable.navigator.js\r\n * tabs/tabs.js\r\n * tabs/tabs.slideshow.js\r\n * toolbox/toolbox.history.js\r\n * http://flowplayer.org/tools/\r\n */\r\n(function(a){a.tools=a.tools||{version:\"dev\"},a.tools.scrollable={conf:{activeClass:\"active\",circular:!1,clonedClass:\"cloned\",disabledClass:\"disabled\",easing:\"swing\",initialIndex:0,item:\"> *\",items:\".items\",keyboard:!0,mousewheel:!1,next:\".next\",prev:\".prev\",size:1,speed:400,vertical:!1,touch:!0,wheelSpeed:0}};function b(a,b){var c=parseInt(a.css(b),10);if(c)return c;var d=a[0].currentStyle;return d&&d.width&&parseInt(d.width,10)}function c(b,c){var d=a(c);return d.length<2?d:b.parent().find(c)}var d;function e(b,e){var f=this,g=b.add(f),h=b.children(),i=0,j=e.vertical;d||(d=f),h.length>1&&(h=a(e.items,b)),e.size>1&&(e.circular=!1),a.extend(f,{getConf:function(){return e},getIndex:function(){return i},getSize:function(){return f.getItems().size()},getNaviButtons:function(){return n.add(o)},getRoot:function(){return b},getItemWrap:function(){return h},getItems:function(){return h.find(e.item).not(\".\"+e.clonedClass)},move:function(a,b){return f.seekTo(i+a,b)},next:function(a){return f.move(e.size,a)},prev:function(a){return f.move(-e.size,a)},begin:function(a){return f.seekTo(0,a)},end:function(a){return f.seekTo(f.getSize()-1,a)},focus:function(){d=f;return f},addItem:function(b){b=a(b),e.circular?(h.children().last().before(b),h.children().first().replaceWith(b.clone().addClass(e.clonedClass))):(h.append(b),o.removeClass(\"disabled\")),g.trigger(\"onAddItem\",[b]);return f},seekTo:function(b,c,k){b.jquery||(b*=1);if(e.circular&&b===0&&i==-1&&c!==0)return f;if(!e.circular&&b<0||b>f.getSize()||b<-1)return f;var l=b;b.jquery?b=f.getItems().index(b):l=f.getItems().eq(b);var m=a.Event(\"onBeforeSeek\");if(!k){g.trigger(m,[b,c]);if(m.isDefaultPrevented()||!l.length)return f}var n=j?{top:-l.position().top}:{left:-l.position().left};i=b,d=f,c===undefined&&(c=e.speed),h.animate(n,c,e.easing,k||function(){g.trigger(\"onSeek\",[b])});return f}}),a.each([\"onBeforeSeek\",\"onSeek\",\"onAddItem\"],function(b,c){a.isFunction(e[c])&&a(f).bind(c,e[c]),f[c]=function(b){b&&a(f).bind(c,b);return f}});if(e.circular){var k=f.getItems().slice(-1).clone().prependTo(h),l=f.getItems().eq(1).clone().appendTo(h);k.add(l).addClass(e.clonedClass),f.onBeforeSeek(function(a,b,c){if(!a.isDefaultPrevented()){if(b==-1){f.seekTo(k,c,function(){f.end(0)});return a.preventDefault()}b==f.getSize()&&f.seekTo(l,c,function(){f.begin(0)})}});var m=b.parents().add(b).filter(function(){if(a(this).css(\"display\")===\"none\")return!0});m.length?(m.show(),f.seekTo(0,0,function(){}),m.hide()):f.seekTo(0,0,function(){})}var n=c(b,e.prev).click(function(a){a.stopPropagation(),f.prev()}),o=c(b,e.next).click(function(a){a.stopPropagation(),f.next()});e.circular||(f.onBeforeSeek(function(a,b){setTimeout(function(){a.isDefaultPrevented()||(n.toggleClass(e.disabledClass,b<=0),o.toggleClass(e.disabledClass,b>=f.getSize()-1))},1)}),e.initialIndex||n.addClass(e.disabledClass)),f.getSize()<2&&n.add(o).addClass(e.disabledClass),e.mousewheel&&a.fn.mousewheel&&b.mousewheel(function(a,b){if(e.mousewheel){f.move(b<0?1:-1,e.wheelSpeed||50);return!1}});if(e.touch){var p={};h[0].ontouchstart=function(a){var b=a.touches[0];p.x=b.clientX,p.y=b.clientY},h[0].ontouchmove=function(a){if(a.touches.length==1&&!h.is(\":animated\")){var b=a.touches[0],c=p.x-b.clientX,d=p.y-b.clientY;f[j&&d>0||!j&&c>0?\"next\":\"prev\"](),a.preventDefault()}}}e.keyboard&&a(document).bind(\"keydown.scrollable\",function(b){if(!(!e.keyboard||b.altKey||b.ctrlKey||b.metaKey||a(b.target).is(\":input\"))){if(e.keyboard!=\"static\"&&d!=f)return;var c=b.keyCode;if(j&&(c==38||c==40)){f.move(c==38?-1:1);return b.preventDefault()}if(!j&&(c==37||c==39)){f.move(c==37?-1:1);return b.preventDefault()}}}),e.initialIndex&&f.seekTo(e.initialIndex,0,function(){})}a.fn.scrollable=function(b){var c=this.data(\"scrollable\");if(c)return c;b=a.extend({},a.tools.scrollable.conf,b),this.each(function(){c=new e(a(this),b),a(this).data(\"scrollable\",c)});return b.api?c:this}})(jQuery);\r\n(function($) { var t=$.tools.scrollable;t.autoscroll={conf:{autoplay:true,interval:3e3,autopause:true}};$.fn.autoscroll=function(a){if(typeof a==\"number\"){a={interval:a}}var b=$.extend({},t.autoscroll.conf,a),c;this.each(function(){function g(){if(e)clearTimeout(e);e=setTimeout(function(){a.next()},b.interval)}var a=$(this).data(\"scrollable\"),d=a.getRoot(),e,f=false;if(a){c=a}a.play=function(){if(e){return}f=false;d.bind(\"onSeek\",g);g()};a.pause=function(){e=clearTimeout(e);d.unbind(\"onSeek\",g)};a.resume=function(){f||a.play()};a.stop=function(){f=true;a.pause()};if(b.autopause){d.add(a.getNaviButtons()).hover(a.pause,a.resume)}if(b.autoplay){a.play()}});return b.api?c:this} })(jQuery);\t\t\r\n(function(a){var b=a.tools.scrollable;b.navigator={conf:{navi:\".navi\",naviItem:null,activeClass:\"active\",indexed:!1,idPrefix:null,history:!1}};function c(b,c){var d=a(c);return d.length<2?d:b.parent().find(c)}a.fn.navigator=function(d){typeof d==\"string\"&&(d={navi:d}),d=a.extend({},b.navigator.conf,d);var e;this.each(function(){var b=a(this).data(\"scrollable\"),f=d.navi.jquery?d.navi:c(b.getRoot(),d.navi),g=b.getNaviButtons(),h=d.activeClass,i=d.history&&history.pushState,j=b.getConf().size;b&&(e=b),b.getNaviButtons=function(){return g.add(f)},i&&(history.pushState({i:0}),a(window).bind(\"popstate\",function(a){var c=a.originalEvent.state;c&&b.seekTo(c.i)}));function k(a,c,d){b.seekTo(c),d.preventDefault(),i&&history.pushState({i:c})}function l(){return f.find(d.naviItem||\"> *\")}function m(b){var c=a(\"<\"+(d.naviItem||\"a\")+\"/>\").click(function(c){k(a(this),b,c)});b===0&&c.addClass(h),d.indexed&&c.text(b+1),d.idPrefix&&c.attr(\"id\",d.idPrefix+b);return c.appendTo(f)}l().length?l().each(function(b){a(this).click(function(c){k(a(this),b,c)})}):a.each(b.getItems(),function(a){a%j==0&&m(a)}),b.onBeforeSeek(function(a,b){setTimeout(function(){if(!a.isDefaultPrevented()){var c=b/j,d=l().eq(c);d.length&&l().removeClass(h).eq(c).addClass(h)}},1)}),b.onAddItem(function(a,c){var d=b.getItems().index(c);d%j==0&&m(d)})});return d.api?e:this}})(jQuery);\r\n(function(a){a.tools=a.tools||{version:\"v1.2.6\"},a.tools.tabs={conf:{tabs:\"a\",current:\"current\",onBeforeClick:null,onClick:null,effect:\"default\",initialIndex:0,event:\"click\",rotate:!1,slideUpSpeed:400,slideDownSpeed:400,history:!1},addEffect:function(a,c){b[a]=c}};var b={\"default\":function(a,b){this.getPanes().hide().eq(a).show(),b.call()},fade:function(a,b){var c=this.getConf(),d=c.fadeOutSpeed,e=this.getPanes();d?e.fadeOut(d):e.hide(),e.eq(a).fadeIn(c.fadeInSpeed,b)},slide:function(a,b){var c=this.getConf();this.getPanes().slideUp(c.slideUpSpeed),this.getPanes().eq(a).slideDown(c.slideDownSpeed,b)},ajax:function(a,b){this.getPanes().eq(0).load(this.getTabs().eq(a).attr(\"href\"),b)}},c,d;a.tools.tabs.addEffect(\"horizontal\",function(b,e){if(!c){var f=this.getPanes().eq(b),g=this.getCurrentPane();d||(d=this.getPanes().eq(0).width()),c=!0,f.show(),g.animate({width:0},{step:function(a){f.css(\"width\",d-a)},complete:function(){a(this).hide(),e.call(),c=!1}}),g.length||(e.call(),c=!1)}});function e(c,d,e){var f=this,g=c.add(this),h=c.find(e.tabs),i=d.jquery?d:c.children(d),j;h.length||(h=c.children()),i.length||(i=c.parent().find(d)),i.length||(i=a(d)),a.extend(this,{click:function(c,d){var i=h.eq(c);typeof c==\"string\"&&c.replace(\"#\",\"\")&&(i=h.filter(\"[href*=\"+c.replace(\"#\",\"\")+\"]\"),c=Math.max(h.index(i),0));if(e.rotate){var k=h.length-1;if(c<0)return f.click(k,d);if(c>k)return f.click(0,d)}if(!i.length){if(j>=0)return f;c=e.initialIndex,i=h.eq(c)}if(c===j)return f;d=d||a.Event(),d.type=\"onBeforeClick\",g.trigger(d,[c]);if(!d.isDefaultPrevented()){b[e.effect].call(f,c,function(){j=c,d.type=\"onClick\",g.trigger(d,[c])}),h.removeClass(e.current),i.addClass(e.current);return f}},getConf:function(){return e},getTabs:function(){return h},getPanes:function(){return i},getCurrentPane:function(){return i.eq(j)},getCurrentTab:function(){return h.eq(j)},getIndex:function(){return j},next:function(){return f.click(j+1)},prev:function(){return f.click(j-1)},destroy:function(){h.unbind(e.event).removeClass(e.current),i.find(\"a[href^='#']\").unbind(\"click.T\");return f}}),a.each(\"onBeforeClick,onClick\".split(\",\"),function(b,c){a.isFunction(e[c])&&a(f).bind(c,e[c]),f[c]=function(b){b&&a(f).bind(c,b);return f}}),e.history&&a.fn.history&&(a.tools.history.init(h),e.event=\"history\"),h.each(function(b){a(this).bind(e.event,function(a){f.click(b,a);return a.preventDefault()})}),i.find(\"a[href^='#']\").bind(\"click.T\",function(b){f.click(a(this).attr(\"href\"),b)}),location.hash&&e.tabs==\"a\"&&c.find(\"[href=\"+location.hash+\"]\").length?f.click(location.hash):(e.initialIndex===0||e.initialIndex>0)&&f.click(e.initialIndex)}a.fn.tabs=function(b,c){var d=this.data(\"tabs\");d&&(d.destroy(),this.removeData(\"tabs\")),a.isFunction(c)&&(c={onBeforeClick:c}),c=a.extend({},a.tools.tabs.conf,c),this.each(function(){d=new e(a(this),b,c),a(this).data(\"tabs\",d)});return c.api?d:this}})(jQuery);\r\n(function(a){var b;b=a.tools.tabs.slideshow={conf:{next:\".forward\",prev:\".backward\",disabledClass:\"disabled\",autoplay:!1,autopause:!0,interval:3e3,clickable:!0,api:!1}};function c(b,c){var d=this,e=b.add(this),f=b.data(\"tabs\"),g,h=!0;function i(c){var d=a(c);return d.length<2?d:b.parent().find(c)}var j=i(c.next).click(function(){f.next()}),k=i(c.prev).click(function(){f.prev()});function l(){g=setTimeout(function(){f.next()},c.interval)}a.extend(d,{getTabs:function(){return f},getConf:function(){return c},play:function(){if(g)return d;var b=a.Event(\"onBeforePlay\");e.trigger(b);if(b.isDefaultPrevented())return d;h=!1,e.trigger(\"onPlay\"),e.bind(\"onClick\",l),l();return d},pause:function(){if(!g)return d;var b=a.Event(\"onBeforePause\");e.trigger(b);if(b.isDefaultPrevented())return d;g=clearTimeout(g),e.trigger(\"onPause\"),e.unbind(\"onClick\",l);return d},resume:function(){h||d.play()},stop:function(){d.pause(),h=!0}}),a.each(\"onBeforePlay,onPlay,onBeforePause,onPause\".split(\",\"),function(b,e){a.isFunction(c[e])&&a(d).bind(e,c[e]),d[e]=function(b){return a(d).bind(e,b)}}),c.autopause&&f.getTabs().add(j).add(k).add(f.getPanes()).hover(d.pause,d.resume),c.autoplay&&d.play(),c.clickable&&f.getPanes().click(function(){f.next()});if(!f.getConf().rotate){var m=c.disabledClass;f.getIndex()||k.addClass(m),f.onBeforeClick(function(a,b){k.toggleClass(m,!b),j.toggleClass(m,b==f.getTabs().length-1)})}}a.fn.slideshow=function(d){var e=this.data(\"slideshow\");if(e)return e;d=a.extend({},b.conf,d),this.each(function(){e=new c(a(this),d),a(this).data(\"slideshow\",e)});return d.api?e:this}})(jQuery);\r\n(function(a){var b,c,d,e;a.tools=a.tools||{version:\"dev\"},a.tools.history={init:function(g){e||(a.browser.msie&&a.browser.version<\"8\"?c||(c=a(\"