{"version":3,"file":"147.chunk-120883.js","mappings":"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","sources":["webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/ajaxreplace/ajaxreplace.js","webpack://Cornetto/./wwwroot/Content/scripts/src/lib/jquery.validate.min.js","webpack://Cornetto/./wwwroot/Content/scripts/src/lib/jquery.validate.unobtrusive.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/form/form.umbraco.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/confirm/confirm.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/permissions/permissions.js","webpack://Cornetto/./wwwroot/Content/scripts/src/util/fileio.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/resources/resources.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/select-link/select-link.js","webpack://Cornetto/./wwwroot/Content/scripts/src/lib/scrollspy.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/ticker/ticker.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/track/link.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/track/scroll.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/track/share.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/track/video.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/track/external.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/track/analytics/universal.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/track/analytics/util.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/track/form.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/track/component.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/track/preload.js","webpack://Cornetto/./wwwroot/Content/scripts/src/app/ui/track/load.js","webpack://Cornetto/./wwwroot/Content/scripts/src/lib/appendaround.js","webpack://Cornetto/./wwwroot/Content/scripts/src/lib/jquery.magnific-popup.js","webpack://Cornetto/./wwwroot/Content/scripts/src/lib/terabyte/jquery.phatfingaz.js","webpack://Cornetto/./wwwroot/Content/scripts/src/util/activate.js","webpack://Cornetto/./wwwroot/Content/scripts/src/util/core.js","webpack://Cornetto/./wwwroot/Content/scripts/src/util/debounce.js","webpack://Cornetto/./wwwroot/Content/scripts/src/util/keybinding.js","webpack://Cornetto/./wwwroot/Content/scripts/src/lib/jquery.lazyload.1.8.2.js","webpack://Cornetto/./wwwroot/Content/scripts/src/lib/jquery.actual.js","webpack://Cornetto/./wwwroot/Content/scripts/src/lib/terabyte/jquery.lazyscroll.js","webpack://Cornetto/./wwwroot/Content/scripts/src/util/lazyload.js","webpack://Cornetto/./wwwroot/Content/scripts/src/lib/enquire.1.6.js","webpack://Cornetto/./wwwroot/Content/scripts/src/util/mediaqueries.js","webpack://Cornetto/./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import $ from 'jquery';\nimport { activate } from 'Util/activate';\nimport { publish, unpublish, subscribe } from 'Util/pubsub';\n\nvar selectors = {\n\t// Classes\n\tcontainer: '.js-ajax-replace',\n\tlink: '.js-ajax-replace-link',\n\tinput: '.js-ajax-replace-input',\n\n\t// Data\n\tajaxUrl: 'ajax',\n\tajaxQuery: 'ajax-query'\n};\n\nvar historySupport = window.history && window.history.pushState;\n\nvar AjaxReplace = {\n\tinit: function () {\n\t\tAjaxReplace = this;\n\t\tAjaxReplace._initEvents();\n\t},\n\n\t_initEvents: function () {\n\t\t$(document)\n\t\t\t.on(activate.event, selectors.link, activate(AjaxReplace._processLinkClick))\n\t\t\t.on('change', selectors.input, AjaxReplace._processInputChange);\n\n\t\twindow.addEventListener('popstate', AjaxReplace._processPopState);\n\t},\n\n\t_processLinkClick: function (e) {\n\t\tvar $link = $(this);\n\t\tvar $container = $link.closest(selectors.container);\n\t\tvar url = $container.data(selectors.ajaxUrl);\n\t\tvar query = this.href;\n\n\t\tquery = query.match(/(\\?[^#]*)($|#)/);\n\t\te.preventDefault();\n\n\t\tquery = query[1];\n\t\tAjaxReplace._requestPage($container, query);\n\t},\n\n\t_processInputChange: function (e) {\n\t\tvar $input = $(this);\n\t\tvar $container = $input.closest(selectors.container);\n\t\tvar $selected = $input.find('option:selected');\n\t\tvar query = $selected.data(selectors.ajaxQuery).replace(/#.*?$/, '');\n\n\t\tAjaxReplace._requestPage($container, query);\n\t},\n\n\t_requestPage: function ($container, query) {\n\t\tvar url = $container.data(selectors.ajaxUrl);\n\n\t\turl = url + query;\n\n\t\t$.ajax({\n\t\t\turl: url,\n\t\t\tsuccess: AjaxReplace._processAjaxSuccess($container, query),\n\t\t\terror: AjaxReplace._processAjaxError\n\t\t});\n\t},\n\n\t_processAjaxSuccess: function ($container, url) {\n\t\treturn function (html, status, request) {\n\t\t\tvar oldHistoryState;\n\t\t\tvar newHistoryState;\n\t\t\tvar ajaxUrl;\n\n\t\t\t$container.replaceWith(html);\n\t\t\tpublish('/lazyload/image', [$(selectors.container).find('.js-lazy-auto')]);\n\n\t\t\tif (historySupport) {\n\t\t\t\t// History state objects have to be able to be serialised,\n\t\t\t\t// so the HTML object can't be stored directly. Instead, store\n\t\t\t\t// the ajax URL and use that to find the same container again\n\n\n\t\t\t\t// This method is build on the assumption that there is only\n\t\t\t\t// one ajax container with this ajax URL on the page\n\t\t\t\tajaxUrl = $container.data(selectors.ajaxUrl);\n\n\t\t\t\toldHistoryState = {\n\t\t\t\t\tajaxUrl: ajaxUrl,\n\t\t\t\t\thtml: $container.html()\n\t\t\t\t};\n\n\t\t\t\tnewHistoryState = {\n\t\t\t\t\tajaxUrl: ajaxUrl,\n\t\t\t\t\thtml: html\n\t\t\t\t};\n\n\t\t\t\thistory.replaceState(oldHistoryState, document.title, document.location.href);\n\t\t\t\thistory.pushState(newHistoryState, document.title, url);\n\t\t\t}\n\t\t};\n\t},\n\n\t_processAjaxError: function (response, status, message) {\n\t\tconsole.error('AJAX load failed:', message);\n\t},\n\n\t_processPopState: function (event) {\n\t\tvar state = event.state;\n\t\tvar $container;\n\n\t\tif (state) {\n\t\t\t$container = $(selectors.container + '[data-' + selectors.ajaxUrl + '=\"' + state.ajaxUrl + '\"]');\n\t\t\t$container.html(state.html);\n\t\t}\n\t}\n};\n\nexport { AjaxReplace };","/*! jQuery Validation Plugin - v1.10.0 - 9/7/2012\n* https://github.com/jzaefferer/jquery-validation\n* Copyright (c) 2012 Jörn Zaefferer; Licensed MIT, GPL */\nimport jQuery from 'jquery';\n(function(a){a.extend(a.fn,{validate:function(b){if(!this.length){b&&b.debug&&window.console&&console.warn(\"nothing selected, can't validate, returning nothing\");return}var c=a.data(this[0],\"validator\");return c?c:(this.attr(\"novalidate\",\"novalidate\"),c=new a.validator(b,this[0]),a.data(this[0],\"validator\",c),c.settings.onsubmit&&(this.validateDelegate(\":submit\",\"click\",function(b){c.settings.submitHandler&&(c.submitButton=b.target),a(b.target).hasClass(\"cancel\")&&(c.cancelSubmit=!0)}),this.submit(function(b){function d(){var d;return c.settings.submitHandler?(c.submitButton&&(d=a(\"<input type='hidden'/>\").attr(\"name\",c.submitButton.name).val(c.submitButton.value).appendTo(c.currentForm)),c.settings.submitHandler.call(c,c.currentForm,b),c.submitButton&&d.remove(),!1):!0}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){if(a(this[0]).is(\"form\"))return this.validate().form();var b=!0,c=a(this[0].form).validate();return this.each(function(){b&=c.element(this)}),b},removeAttrs:function(b){var c={},d=this;return a.each(b.split(/\\s/),function(a,b){c[b]=d.attr(b),d.removeAttr(b)}),c},rules:function(b,c){var d=this[0];if(b){var e=a.data(d.form,\"validator\").settings,f=e.rules,g=a.validator.staticRules(d);switch(b){case\"add\":a.extend(g,a.validator.normalizeRule(c)),f[d.name]=g,c.messages&&(e.messages[d.name]=a.extend(e.messages[d.name],c.messages));break;case\"remove\":if(!c)return delete f[d.name],g;var h={};return a.each(c.split(/\\s/),function(a,b){h[b]=g[b],delete g[b]}),h}}var i=a.validator.normalizeRules(a.extend({},a.validator.metadataRules(d),a.validator.classRules(d),a.validator.attributeRules(d),a.validator.staticRules(d)),d);if(i.required){var j=i.required;delete i.required,i=a.extend({required:j},i)}return i}}),a.extend(a.expr[\":\"],{blank:function(b){return!a.trim(\"\"+b.value)},filled:function(b){return!!a.trim(\"\"+b.value)},unchecked:function(a){return!a.checked}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return arguments.length===1?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp(\"\\\\{\"+a+\"\\\\}\",\"g\"),c)}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:\"error\",validClass:\"valid\",errorElement:\"label\",focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:\":hidden\",ignoreTitle:!1,onfocusin:function(a,b){this.lastActive=a,this.settings.focusCleanup&&!this.blockFocusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.addWrapper(this.errorsFor(a)).hide())},onfocusout:function(a,b){!this.checkable(a)&&(a.name in this.submitted||!this.optional(a))&&this.element(a)},onkeyup:function(a,b){if(b.which===9&&this.elementValue(a)===\"\")return;(a.name in this.submitted||a===this.lastActive)&&this.element(a)},onclick:function(a,b){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){b.type===\"radio\"?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){b.type===\"radio\"?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:\"This field is required.\",remote:\"Please fix this field.\",email:\"Please enter a valid email address.\",url:\"Please enter a valid URL.\",date:\"Please enter a valid date.\",dateISO:\"Please enter a valid date (ISO).\",number:\"Please enter a valid number.\",digits:\"Please enter only digits.\",creditcard:\"Please enter a valid credit card number.\",equalTo:\"Please enter the same value again.\",maxlength:a.validator.format(\"Please enter no more than {0} characters.\"),minlength:a.validator.format(\"Please enter at least {0} characters.\"),rangelength:a.validator.format(\"Please enter a value between {0} and {1} characters long.\"),range:a.validator.format(\"Please enter a value between {0} and {1}.\"),max:a.validator.format(\"Please enter a value less than or equal to {0}.\"),min:a.validator.format(\"Please enter a value greater than or equal to {0}.\")},autoCreateRanges:!1,prototype:{init:function(){function d(b){var c=a.data(this[0].form,\"validator\"),d=\"on\"+b.type.replace(/^validate/,\"\");c.settings[d]&&c.settings[d].call(c,this[0],b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var b=this.groups={};a.each(this.settings.groups,function(c,d){a.each(d.split(/\\s/),function(a,d){b[d]=c})});var c=this.settings.rules;a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).validateDelegate(\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] \",\"focusin focusout keyup\",d).validateDelegate(\"[type='radio'], [type='checkbox'], select, option\",\"click\",d),this.settings.invalidHandler&&a(this.currentForm).bind(\"invalid-form.validate\",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler(\"invalid-form\",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){b=this.validationTargetFor(this.clean(b)),this.lastElement=b,this.prepareElement(b),this.currentElements=a(b);var c=this.check(b)!==!1;return c?delete this.invalid[b.name]:this.invalid[b.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),c},showErrors:function(b){if(b){a.extend(this.errorMap,b),this.errorList=[];for(var c in b)this.errorList.push({message:b[c],element:this.findByName(c)[0]});this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors(),this.elements().removeClass(this.settings.errorClass).removeData(\"previousValue\")},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b=0;for(var c in a)b++;return b},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return this.size()===0},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(\":visible\").focus().trigger(\"focusin\")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&a.grep(this.errorList,function(a){return a.element.name===b.name}).length===1&&b},elements:function(){var b=this,c={};return a(this.currentForm).find(\"input, select, textarea\").not(\":submit, :reset, :image, [disabled]\").not(this.settings.ignore).filter(function(){return!this.name&&b.settings.debug&&window.console&&console.error(\"%o has no name assigned\",this),this.name in c||!b.objectLength(a(this).rules())?!1:(c[this.name]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.replace(\" \",\".\");return a(this.settings.errorElement+\".\"+b,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([]),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c=a(b).attr(\"type\"),d=a(b).val();return c===\"radio\"||c===\"checkbox\"?a('input[name=\"'+a(b).attr(\"name\")+'\"]:checked').val():typeof d==\"string\"?d.replace(/\\r/g,\"\"):d},check:function(b){b=this.validationTargetFor(this.clean(b));var c=a(b).rules(),d=!1,e=this.elementValue(b),f;for(var g in c){var h={method:g,parameters:c[g]};try{f=a.validator.methods[g].call(this,e,b,h.parameters);if(f===\"dependency-mismatch\"){d=!0;continue}d=!1;if(f===\"pending\"){this.toHide=this.toHide.not(this.errorsFor(b));return}if(!f)return this.formatAndAdd(b,h),!1}catch(i){throw this.settings.debug&&window.console&&console.log(\"exception occured when checking element \"+b.id+\", check the '\"+h.method+\"' method\",i),i}}if(d)return;return this.objectLength(c)&&this.successList.push(b),!0},customMetaMessage:function(b,c){if(!a.metadata)return;var d=this.settings.meta?a(b).metadata()[this.settings.meta]:a(b).metadata();return d&&d.messages&&d.messages[c]},customDataMessage:function(b,c){return a(b).data(\"msg-\"+c.toLowerCase())||b.attributes&&a(b).attr(\"data-msg-\"+c.toLowerCase())},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(arguments[a]!==undefined)return arguments[a];return undefined},defaultMessage:function(b,c){return this.findDefined(this.customMessage(b.name,c),this.customDataMessage(b,c),this.customMetaMessage(b,c),!this.settings.ignoreTitle&&b.title||undefined,a.validator.messages[c],\"<strong>Warning: No message defined for \"+b.name+\"</strong>\")},formatAndAdd:function(b,c){var d=this.defaultMessage(b,c.method),e=/\\$?\\{(\\d+)\\}/g;typeof d==\"function\"?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,\"{$1}\"),c.parameters)),this.errorList.push({message:d,element:b}),this.errorMap[b.name]=d,this.submitted[b.name]=d},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b;for(a=0;this.errorList[a];a++){var c=this.errorList[a];this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message)}this.errorList.length&&(this.toShow=this.toShow.add(this.containers));if(this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d=this.errorsFor(b);d.length?(d.removeClass(this.settings.validClass).addClass(this.settings.errorClass),d.attr(\"generated\")&&d.html(c)):(d=a(\"<\"+this.settings.errorElement+\"/>\").attr({\"for\":this.idOrName(b),generated:!0}).addClass(this.settings.errorClass).html(c||\"\"),this.settings.wrapper&&(d=d.hide().show().wrap(\"<\"+this.settings.wrapper+\"/>\").parent()),this.labelContainer.append(d).length||(this.settings.errorPlacement?this.settings.errorPlacement(d,a(b)):d.insertAfter(b))),!c&&this.settings.success&&(d.text(\"\"),typeof this.settings.success==\"string\"?d.addClass(this.settings.success):this.settings.success(d,b)),this.toShow=this.toShow.add(d)},errorsFor:function(b){var c=this.idOrName(b);return this.errors().filter(function(){return a(this).attr(\"for\")===c})},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(a){return this.checkable(a)&&(a=this.findByName(a.name).not(this.settings.ignore)[0]),a},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find('[name=\"'+b+'\"]')},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case\"select\":return a(\"option:selected\",c).length;case\"input\":if(this.checkable(c))return this.findByName(c.name).filter(\":checked\").length}return b.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):!0},dependTypes:{\"boolean\":function(a,b){return a},string:function(b,c){return!!a(b,c.form).length},\"function\":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&\"dependency-mismatch\"},startRequest:function(a){this.pending[a.name]||(this.pendingRequest++,this.pending[a.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],c&&this.pendingRequest===0&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.formSubmitted=!1):!c&&this.pendingRequest===0&&this.formSubmitted&&(a(this.currentForm).triggerHandler(\"invalid-form\",[this]),this.formSubmitted=!1)},previousValue:function(b){return a.data(b,\"previousValue\")||a.data(b,\"previousValue\",{old:null,valid:!0,message:this.defaultMessage(b,\"remote\")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr(\"class\");return d&&a.each(d.split(\" \"),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},attributeRules:function(b){var c={},d=a(b);for(var e in a.validator.methods){var f;e===\"required\"?(f=d.get(0).getAttribute(e),f===\"\"&&(f=!0),f=!!f):f=d.attr(e),f?c[e]=f:d[0].getAttribute(\"type\")===e&&(c[e]=!0)}return c.maxlength&&/-1|2147483647|524288/.test(c.maxlength)&&delete c.maxlength,c},metadataRules:function(b){if(!a.metadata)return{};var c=a.data(b.form,\"validator\").settings.meta;return c?a(b).metadata()[c]:a(b).metadata()},staticRules:function(b){var c={},d=a.data(b.form,\"validator\");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1){delete b[d];return}if(e.param||e.depends){var f=!0;switch(typeof e.depends){case\"string\":f=!!a(e.depends,c.form).length;break;case\"function\":f=e.depends.call(c,c)}f?b[d]=e.param!==undefined?e.param:!0:delete b[d]}}),a.each(b,function(d,e){b[d]=a.isFunction(e)?e(c):e}),a.each([\"minlength\",\"maxlength\",\"min\",\"max\"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each([\"rangelength\",\"range\"],function(){b[this]&&(b[this]=[Number(b[this][0]),Number(b[this][1])])}),a.validator.autoCreateRanges&&(b.min&&b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),b.minlength&&b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b.messages&&delete b.messages,b},normalizeRule:function(b){if(typeof b==\"string\"){var c={};a.each(b.split(/\\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=d!==undefined?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return\"dependency-mismatch\";if(c.nodeName.toLowerCase()===\"select\"){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:a.trim(b).length>0},remote:function(b,c,d){if(this.optional(c))return\"dependency-mismatch\";var e=this.previousValue(c);this.settings.messages[c.name]||(this.settings.messages[c.name]={}),e.originalMessage=this.settings.messages[c.name].remote,this.settings.messages[c.name].remote=e.message,d=typeof d==\"string\"&&{url:d}||d;if(this.pending[c.name])return\"pending\";if(e.old===b)return e.valid;e.old=b;var f=this;this.startRequest(c);var g={};return g[c.name]=b,a.ajax(a.extend(!0,{url:d,mode:\"abort\",port:\"validate\"+c.name,dataType:\"json\",data:g,success:function(d){f.settings.messages[c.name].remote=e.originalMessage;var g=d===!0||d===\"true\";if(g){var h=f.formSubmitted;f.prepareElement(c),f.formSubmitted=h,f.successList.push(c),delete f.invalid[c.name],f.showErrors()}else{var i={},j=d||f.defaultMessage(c,\"remote\");i[c.name]=e.message=a.isFunction(j)?j(b):j,f.invalid[c.name]=!0,f.showErrors(i)}e.valid=g,f.stopRequest(c,g)}},d)),\"pending\"},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e<=d},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},email:function(a,b){return this.optional(b)||/^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i.test(a)},url:function(a,b){return this.optional(b)||/^(https?|ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a))},dateISO:function(a,b){return this.optional(b)||/^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return\"dependency-mismatch\";if(/[^0-9 \\-]+/.test(a))return!1;var c=0,d=0,e=!1;a=a.replace(/\\D/g,\"\");for(var f=a.length-1;f>=0;f--){var g=a.charAt(f);d=parseInt(g,10),e&&(d*=2)>9&&(d-=9),c+=d,e=!e}return c%10===0},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.unbind(\".validate-equalTo\").bind(\"blur.validate-equalTo\",function(){a(c).valid()}),b===e.val()}}}),a.format=a.validator.format})(jQuery),function(a){var b={};if(a.ajaxPrefilter)a.ajaxPrefilter(function(a,c,d){var e=a.port;a.mode===\"abort\"&&(b[e]&&b[e].abort(),b[e]=d)});else{var c=a.ajax;a.ajax=function(d){var e=(\"mode\"in d?d:a.ajaxSettings).mode,f=(\"port\"in d?d:a.ajaxSettings).port;return e===\"abort\"?(b[f]&&b[f].abort(),b[f]=c.apply(this,arguments)):c.apply(this,arguments)}}}(jQuery),function(a){!jQuery.event.special.focusin&&!jQuery.event.special.focusout&&document.addEventListener&&a.each({focus:\"focusin\",blur:\"focusout\"},function(b,c){function d(b){return b=a.event.fix(b),b.type=c,a.event.handle.call(this,b)}a.event.special[c]={setup:function(){this.addEventListener(b,d,!0)},teardown:function(){this.removeEventListener(b,d,!0)},handler:function(b){var d=arguments;return d[0]=a.event.fix(b),d[0].type=c,a.event.handle.apply(this,d)}}}),a.extend(a.fn,{validateDelegate:function(b,c,d){return this.bind(c,function(c){var e=a(c.target);if(e.is(b))return d.apply(e,arguments)})}})}(jQuery)","/*!\n** Unobtrusive validation support library for jQuery and jQuery Validate\n** Copyright (C) Microsoft Corporation. All rights reserved.\n*/\n\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\n/*global document: false, jQuery: false */\n\nimport jQuery from 'jquery';\n\n(function($) {\n\tvar $jQval = $.validator,\n\t\tadapters,\n\t\tdata_validation = \"unobtrusiveValidation\";\n\n\tfunction setValidationValues(options, ruleName, value) {\n\t\toptions.rules[ruleName] = value;\n\t\tif (options.message) {\n\t\t\toptions.messages[ruleName] = options.message;\n\t\t}\n\t}\n\n\tfunction splitAndTrim(value) {\n\t\treturn value.replace(/^\\s+|\\s+$/g, \"\").split(/\\s*,\\s*/g);\n\t}\n\n\tfunction escapeAttributeValue(value) {\n\t\t// As mentioned on http://api.jquery.com/category/selectors/\n\t\treturn value.replace(/([!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~])/g, \"\\\\$1\");\n\t}\n\n\tfunction getModelPrefix(fieldName) {\n\t\treturn fieldName.substr(0, fieldName.lastIndexOf(\".\") + 1);\n\t}\n\n\tfunction appendModelPrefix(value, prefix) {\n\t\tif (value.indexOf(\"*.\") === 0) {\n\t\t\tvalue = value.replace(\"*.\", prefix);\n\t\t}\n\t\treturn value;\n\t}\n\n\tfunction onError(error, inputElement) { // 'this' is the form element\n\t\tvar container = $(this).find(\"[data-valmsg-for='\" + escapeAttributeValue(inputElement[0].name) + \"']\"),\n\t\t\treplaceAttrValue = container.attr(\"data-valmsg-replace\"),\n\t\t\treplace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;\n\n\t\tcontainer.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");\n\t\terror.data(\"unobtrusiveContainer\", container);\n\n\t\tif (replace) {\n\t\t\tcontainer.empty();\n\t\t\terror.removeClass(\"input-validation-error\").appendTo(container);\n\t\t} else {\n\t\t\terror.hide();\n\t\t}\n\t}\n\n\tfunction onErrors(event, validator) { // 'this' is the form element\n\t\tvar container = $(this).find(\"[data-valmsg-summary=true]\"),\n\t\t\tlist = container.find(\"ul\");\n\n\t\tif (list && list.length && validator.errorList.length) {\n\t\t\tlist.empty();\n\t\t\tcontainer.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\n\n\t\t\t$.each(validator.errorList, function() {\n\t\t\t\t$(\"<li />\").html(this.message).appendTo(list);\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction onSuccess(error) { // 'this' is the form element\n\t\tvar container = error.data(\"unobtrusiveContainer\");\n\n\t\tif (container) {\n\t\t\tvar replaceAttrValue = container.attr(\"data-valmsg-replace\"),\n\t\t\t\treplace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;\n\n\t\t\tcontainer.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\");\n\t\t\terror.removeData(\"unobtrusiveContainer\");\n\n\t\t\tif (replace) {\n\t\t\t\tcontainer.empty();\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction onReset(event) { // 'this' is the form element\n\t\tvar $form = $(this),\n\t\t\tkey = '__jquery_unobtrusive_validation_form_reset';\n\t\tif ($form.data(key)) {\n\t\t\treturn;\n\t\t}\n\t\t// Set a flag that indicates we're currently resetting the form.\n\t\t$form.data(key, true);\n\t\ttry {\n\t\t\t$form.data(\"validator\").resetForm();\n\t\t} finally {\n\t\t\t$form.removeData(key);\n\t\t}\n\n\t\t$form.find(\".validation-summary-errors\")\n\t\t\t.addClass(\"validation-summary-valid\")\n\t\t\t.removeClass(\"validation-summary-errors\");\n\t\t$form.find(\".field-validation-error\")\n\t\t\t.addClass(\"field-validation-valid\")\n\t\t\t.removeClass(\"field-validation-error\")\n\t\t\t.removeData(\"unobtrusiveContainer\")\n\t\t\t.find(\">*\") // If we were using valmsg-replace, get the underlying error\n\t\t\t.removeData(\"unobtrusiveContainer\");\n\t}\n\n\tfunction validationInfo(form) {\n\t\tvar $form = $(form),\n\t\t\tresult = $form.data(data_validation),\n\t\t\tonResetProxy = $.proxy(onReset, form),\n\t\t\tdefaultOptions = $jQval.unobtrusive.options || {},\n\t\t\texecInContext = function(name, args) {\n\t\t\t\tvar func = defaultOptions[name];\n\t\t\t\tfunc && $.isFunction(func) && func.apply(form, args);\n\t\t\t}\n\n\t\tif (!result) {\n\t\t\tresult = {\n\t\t\t\toptions: {\n// options structure passed to jQuery Validate's validate() method\n\t\t\t\t\terrorClass: defaultOptions.errorClass || \"input-validation-error\",\n\t\t\t\t\terrorElement: defaultOptions.errorElement || \"span\",\n\t\t\t\t\terrorPlacement: function() {\n\t\t\t\t\t\tonError.apply(form, arguments);\n\t\t\t\t\t\texecInContext(\"errorPlacement\", arguments);\n\t\t\t\t\t},\n\t\t\t\t\tinvalidHandler: function() {\n\t\t\t\t\t\tonErrors.apply(form, arguments);\n\t\t\t\t\t\texecInContext(\"invalidHandler\", arguments);\n\t\t\t\t\t},\n\t\t\t\t\tmessages: {},\n\t\t\t\t\trules: {},\n\t\t\t\t\tsuccess: function() {\n\t\t\t\t\t\tonSuccess.apply(form, arguments);\n\t\t\t\t\t\texecInContext(\"success\", arguments);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tattachValidation: function() {\n\t\t\t\t\t$form\n\t\t\t\t\t\t.off(\"reset.\" + data_validation, onResetProxy)\n\t\t\t\t\t\t.on(\"reset.\" + data_validation, onResetProxy)\n\t\t\t\t\t\t.validate(this.options);\n\t\t\t\t},\n\t\t\t\tvalidate: function() { // a validation function that is called by unobtrusive Ajax\n\t\t\t\t\t$form.validate();\n\t\t\t\t\treturn $form.valid();\n\t\t\t\t}\n\t\t\t};\n\t\t\t$form.data(data_validation, result);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t$jQval.unobtrusive = {\n\t\tadapters: [],\n\n\t\tparseElement: function(element, skipAttach) {\n\t\t\t/// <summary>\n\t\t\t/// Parses a single HTML element for unobtrusive validation attributes.\n\t\t\t/// </summary>\n\t\t\t/// <param name=\"element\" domElement=\"true\">The HTML element to be parsed.</param>\n\t\t\t/// <param name=\"skipAttach\" type=\"Boolean\">[Optional] true to skip attaching the\n\t\t\t/// validation to the form. If parsing just this single element, you should specify true.\n\t\t\t/// If parsing several elements, you should specify false, and manually attach the validation\n\t\t\t/// to the form when you are finished. The default is false.</param>\n\t\t\tvar $element = $(element),\n\t\t\t\tform = $element.parents(\"form\")[0],\n\t\t\t\tvalInfo,\n\t\t\t\trules,\n\t\t\t\tmessages;\n\n\t\t\tif (!form) { // Cannot do client-side validation without a form\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvalInfo = validationInfo(form);\n\t\t\tvalInfo.options.rules[element.name] = rules = {};\n\t\t\tvalInfo.options.messages[element.name] = messages = {};\n\n\t\t\t$.each(this.adapters, function() {\n\t\t\t\tvar prefix = \"data-val-\" + this.name,\n\t\t\t\t\tmessage = $element.attr(prefix),\n\t\t\t\t\tparamValues = {};\n\n\t\t\t\tif (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)\n\t\t\t\t\tprefix += \"-\";\n\n\t\t\t\t\t$.each(this.params, function() {\n\t\t\t\t\t\tparamValues[this] = $element.attr(prefix + this);\n\t\t\t\t\t});\n\n\t\t\t\t\tthis.adapt({\n\t\t\t\t\t\telement: element,\n\t\t\t\t\t\tform: form,\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\tparams: paramValues,\n\t\t\t\t\t\trules: rules,\n\t\t\t\t\t\tmessages: messages\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$.extend(rules, { \"__dummy__\": true });\n\n\t\t\tif (!skipAttach) {\n\t\t\t\tvalInfo.attachValidation();\n\t\t\t}\n\t\t},\n\n\t\tparse: function(selector) {\n\t\t\t/// <summary>\n\t\t\t/// Parses all the HTML elements in the specified selector. It looks for input elements decorated\n\t\t\t/// with the [data-val=true] attribute value and enables validation according to the data-val-*\n\t\t\t/// attribute values.\n\t\t\t/// </summary>\n\t\t\t/// <param name=\"selector\" type=\"String\">Any valid jQuery selector.</param>\n\n\t\t\t// $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one\n\t\t\t// element with data-val=true\n\t\t\tvar $selector = $(selector),\n\t\t\t\t$forms = $selector.parents()\n\t\t\t\t\t.addBack()\n\t\t\t\t\t.filter(\"form\")\n\t\t\t\t\t.add($selector.find(\"form\"))\n\t\t\t\t\t.has(\"[data-val=true]\");\n\n\t\t\t$selector.find(\"[data-val=true]\").each(function() {\n\t\t\t\t$jQval.unobtrusive.parseElement(this, true);\n\t\t\t});\n\n\t\t\t$forms.each(function() {\n\t\t\t\tvar info = validationInfo(this);\n\t\t\t\tif (info) {\n\t\t\t\t\tinfo.attachValidation();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\tadapters = $jQval.unobtrusive.adapters;\n\n\tadapters.add = function(adapterName, params, fn) {\n\t\t/// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.</summary>\n\t\t/// <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\n\t\t/// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>\n\t\t/// <param name=\"params\" type=\"Array\" optional=\"true\">[Optional] An array of parameter names (strings) that will\n\t\t/// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and\n\t\t/// mmmm is the parameter name).</param>\n\t\t/// <param name=\"fn\" type=\"Function\">The function to call, which adapts the values from the HTML\n\t\t/// attributes into jQuery Validate rules and/or messages.</param>\n\t\t/// <returns type=\"jQuery.validator.unobtrusive.adapters\" />\n\t\tif (!fn) { // Called with no params, just a function\n\t\t\tfn = params;\n\t\t\tparams = [];\n\t\t}\n\t\tthis.push({ name: adapterName, params: params, adapt: fn });\n\t\treturn this;\n\t};\n\n\tadapters.addBool = function(adapterName, ruleName) {\n\t\t/// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n\t\t/// the jQuery Validate validation rule has no parameter values.</summary>\n\t\t/// <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\n\t\t/// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>\n\t\t/// <param name=\"ruleName\" type=\"String\" optional=\"true\">[Optional] The name of the jQuery Validate rule. If not provided, the value\n\t\t/// of adapterName will be used instead.</param>\n\t\t/// <returns type=\"jQuery.validator.unobtrusive.adapters\" />\n\t\treturn this.add(adapterName, function(options) {\n\t\t\tsetValidationValues(options, ruleName || adapterName, true);\n\t\t});\n\t};\n\n\tadapters.addMinMax = function(adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {\n\t\t/// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n\t\t/// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and\n\t\t/// one for min-and-max). The HTML parameters are expected to be named -min and -max.</summary>\n\t\t/// <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\n\t\t/// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>\n\t\t/// <param name=\"minRuleName\" type=\"String\">The name of the jQuery Validate rule to be used when you only\n\t\t/// have a minimum value.</param>\n\t\t/// <param name=\"maxRuleName\" type=\"String\">The name of the jQuery Validate rule to be used when you only\n\t\t/// have a maximum value.</param>\n\t\t/// <param name=\"minMaxRuleName\" type=\"String\">The name of the jQuery Validate rule to be used when you\n\t\t/// have both a minimum and maximum value.</param>\n\t\t/// <param name=\"minAttribute\" type=\"String\" optional=\"true\">[Optional] The name of the HTML attribute that\n\t\t/// contains the minimum value. The default is \"min\".</param>\n\t\t/// <param name=\"maxAttribute\" type=\"String\" optional=\"true\">[Optional] The name of the HTML attribute that\n\t\t/// contains the maximum value. The default is \"max\".</param>\n\t\t/// <returns type=\"jQuery.validator.unobtrusive.adapters\" />\n\t\treturn this.add(adapterName, [minAttribute || \"min\", maxAttribute || \"max\"], function(options) {\n\t\t\tvar min = options.params.min,\n\t\t\t\tmax = options.params.max;\n\n\t\t\tif (min && max) {\n\t\t\t\tsetValidationValues(options, minMaxRuleName, [min, max]);\n\t\t\t} else if (min) {\n\t\t\t\tsetValidationValues(options, minRuleName, min);\n\t\t\t} else if (max) {\n\t\t\t\tsetValidationValues(options, maxRuleName, max);\n\t\t\t}\n\t\t});\n\t};\n\n\tadapters.addSingleVal = function(adapterName, attribute, ruleName) {\n\t\t/// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n\t\t/// the jQuery Validate validation rule has a single value.</summary>\n\t\t/// <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\n\t\t/// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).</param>\n\t\t/// <param name=\"attribute\" type=\"String\">[Optional] The name of the HTML attribute that contains the value.\n\t\t/// The default is \"val\".</param>\n\t\t/// <param name=\"ruleName\" type=\"String\" optional=\"true\">[Optional] The name of the jQuery Validate rule. If not provided, the value\n\t\t/// of adapterName will be used instead.</param>\n\t\t/// <returns type=\"jQuery.validator.unobtrusive.adapters\" />\n\t\treturn this.add(adapterName, [attribute || \"val\"], function(options) {\n\t\t\tsetValidationValues(options, ruleName || adapterName, options.params[attribute]);\n\t\t});\n\t};\n\n\t$jQval.addMethod(\"__dummy__\", function(value, element, params) {\n\t\treturn true;\n\t});\n\n\t$jQval.addMethod(\"regex\", function(value, element, params) {\n\t\tvar match;\n\t\tif (this.optional(element)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tmatch = new RegExp(params).exec(value);\n\t\treturn (match && (match.index === 0) && (match[0].length === value.length));\n\t});\n\n\t$jQval.addMethod(\"nonalphamin\", function(value, element, nonalphamin) {\n\t\tvar match;\n\t\tif (nonalphamin) {\n\t\t\tmatch = value.match(/\\W/g);\n\t\t\tmatch = match && match.length >= nonalphamin;\n\t\t}\n\t\treturn match;\n\t});\n\n\tif ($jQval.methods.extension) {\n\t\tadapters.addSingleVal(\"accept\", \"mimtype\");\n\t\tadapters.addSingleVal(\"extension\", \"extension\");\n\t} else {\n\t\t// for backward compatibility, when the 'extension' validation method does not exist, such as with versions\n\t\t// of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for\n\t\t// validating the extension, and ignore mime-type validations as they are not supported.\n\t\tadapters.addSingleVal(\"extension\", \"extension\", \"accept\");\n\t}\n\n\tadapters.addSingleVal(\"regex\", \"pattern\");\n\tadapters.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\");\n\tadapters.addMinMax(\"length\", \"minlength\", \"maxlength\", \"rangelength\").addMinMax(\"range\", \"min\", \"max\", \"range\");\n\tadapters.addMinMax(\"minlength\", \"minlength\").addMinMax(\"maxlength\", \"minlength\", \"maxlength\");\n\tadapters.add(\"equalto\", [\"other\"], function(options) {\n\t\tvar prefix = getModelPrefix(options.element.name),\n\t\t\tother = options.params.other,\n\t\t\tfullOtherName = appendModelPrefix(other, prefix),\n\t\t\telement = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(fullOtherName) + \"']\")[0];\n\n\t\tsetValidationValues(options, \"equalTo\", element);\n\t});\n\tadapters.add(\"required\", function(options) {\n\t\t// jQuery Validate equates \"required\" with \"mandatory\" for checkbox elements\n\t\tif (options.element.tagName.toUpperCase() !== \"INPUT\" || options.element.type.toUpperCase() !== \"CHECKBOX\") {\n\t\t\tsetValidationValues(options, \"required\", true);\n\t\t}\n\t});\n\tadapters.add(\"remote\", [\"url\", \"type\", \"additionalfields\"], function(options) {\n\t\tvar value = {\n\t\t\t    url: options.params.url,\n\t\t\t    type: options.params.type || \"GET\",\n\t\t\t    data: {}\n\t\t    },\n\t\t\tprefix = getModelPrefix(options.element.name);\n\n\t\t$.each(splitAndTrim(options.params.additionalfields || options.element.name), function(i, fieldName) {\n\t\t\tvar paramName = appendModelPrefix(fieldName, prefix);\n\t\t\tvalue.data[paramName] = function() {\n\t\t\t\tvar field = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(paramName) + \"']\");\n\t\t\t\t// For checkboxes and radio buttons, only pick up values from checked fields.\n\t\t\t\tif (field.is(\":checkbox\")) {\n\t\t\t\t\treturn field.filter(\":checked\").val() || field.filter(\":hidden\").val() || '';\n\t\t\t\t} else if (field.is(\":radio\")) {\n\t\t\t\t\treturn field.filter(\":checked\").val() || '';\n\t\t\t\t}\n\t\t\t\treturn field.val();\n\t\t\t};\n\t\t});\n\n\t\tsetValidationValues(options, \"remote\", value);\n\t});\n\tadapters.add(\"password\", [\"min\", \"nonalphamin\", \"regex\"], function(options) {\n\t\tif (options.params.min) {\n\t\t\tsetValidationValues(options, \"minlength\", options.params.min);\n\t\t}\n\t\tif (options.params.nonalphamin) {\n\t\t\tsetValidationValues(options, \"nonalphamin\", options.params.nonalphamin);\n\t\t}\n\t\tif (options.params.regex) {\n\t\t\tsetValidationValues(options, \"regex\", options.params.regex);\n\t\t}\n\t});\n\n\t$(function() {\n\t\t$jQval.unobtrusive.parse(document);\n\t});\n}(jQuery));","import $ from 'jquery';\nimport moment from 'moment';\nimport Pikaday from 'pikaday';\n\nimport 'validate';\nimport 'validateUnobtrusive';\n\nvar UmbracoForms = {\n\tinit: function () {\n\n\t\tvar $umbracoForms = $('.js-umbraco-form');\n\n\t\tif ($umbracoForms.length) {\n\n\t\t\tvar $datepickers = $umbracoForms.find('.datepickerfield');\n\n\t\t\tif ($datepickers.length) {\n\t\t\t\t$datepickers.each(function () {\n\t\t\t\t\tvar $datepicker = $(this);\n\n\t\t\t\t\tif ($('.touchevents').length) {\n\t\t\t\t\t\t$datepicker.attr('readonly', 'readonly');\n\t\t\t\t\t}\n\t\t\t\t\tnew Pikaday({\n\t\t\t\t\t\tfield: this,\n\t\t\t\t\t\tyearRange: 10,\n\t\t\t\t\t\tonSelect: function (date) {\n\t\t\t\t\t\t\tsetShadow($datepicker[0].id.replace(\"_1\", \"\"), date);\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\tfunction setShadow(id, date) {\n\t\t\t\tvar value = moment(date).format('YYYY-MM-DD');\n\t\t\t\tvar field = document.getElementById(id);\n\t\t\t\tfield.value = value;\n\t\t\t}\n\n\t\t};\n\t}\n};\n\nexport { UmbracoForms }","import $ from 'jquery';\nimport { activate } from 'Util/activate';\n\nvar selectors = {\n\tyes: '.js-confirm-yes',\n\tno: '.js-confirm-no',\n\tclose: '.js-confirm-close'\n};\n\nvar dataSelectors = {\n\tyes: 'confirm-yes',\n\tno: 'confirm-no',\n\tclose: 'confirm-close'\n};\n\nvar Confirm = {\n\tcheck: function ($el, yes, no) {\n\n\t\tif (!$el.jquery) {\n\t\t\t$el = $($el);\n\t\t}\n\n\t\t$el.show();\n\t\tConfirm._bindEvents($el, yes, no);\n\t},\n\n\t_bindEvents: function ($el, yes, no) {\n\t\tvar close = Confirm._buttonClick($.noop, $el);\n\t\tyes = Confirm._buttonClick(yes, $el);\n\t\tno = Confirm._buttonClick(no, $el);\n\n\t\tConfirm._unbindEvents($el);\n\n\t\t$el.on(activate.event, selectors.yes, yes);\n\t\t$el.on(activate.event, selectors.no, no);\n\t\t$el.on(activate.event, selectors.close, close);\n\n\t\t$el.data(dataSelectors.yes, yes);\n\t\t$el.data(dataSelectors.no, no);\n\t\t$el.data(dataSelectors.close, close);\n\t},\n\n\t_unbindEvents: function ($el) {\n\t\tvar yes = $el.data(dataSelectors.yes);\n\t\tvar no = $el.data(dataSelectors.no);\n\t\tvar close = $el.data(dataSelectors.close);\n\n\t\tif (yes) {\n\t\t\t$el.off('click keydown', selectors.yes, yes);\n\t\t\t$el.data(dataSelectors.yes, null);\n\t\t}\n\t\tif (no) {\n\t\t\t$el.off('click keydown', selectors.no, no);\n\t\t\t$el.data(dataSelectors.no, null);\n\t\t}\n\t\tif (close) {\n\t\t\t$el.off('click keydown', selectors.close, close);\n\t\t\t$el.data(dataSelectors.close, null);\n\t\t}\n\t},\n\n\t_buttonClick: function (callback, $el) {\n\t\treturn activate(function (e) {\n\t\t\te.preventDefault();\n\n\t\t\t$el.hide();\n\t\t\tConfirm._unbindEvents($el);\n\n\t\t\tcallback.apply(this, arguments);\n\t\t});\n\t}\n};\n\nexport { Confirm };","import { Confirm } from 'App/confirm/confirm';\n\nvar PermissionStates = {\n\tPENDING: 'PENDING', // Initial state\n\tNO: 'NO', // User selected \"no\" button\n\tYES: 'YES', // User selected \"yes\" button\n\tBLOCKED: 'BLOCKED' // User selected \"yes\" but blocked browser permission\n};\n\nvar selectors = {\n\tgeolocation: '.js-permission-location-check',\n\tcookie: '.js-cookie-confirm'\n};\n\nvar support = {\n\tlocalStorage: !!window.localStorage && ('setItem' in window.localStorage),\n\tpermissions: 'permissions' in navigator,\n\tgeolocation: 'geolocation' in navigator,\n\tcookie: true\n};\nvar permissionApiSupport = {\n\tgeolocation: true\n};\n\n// Supported permissions must have an entry in selectors and support\nvar permissions = {\n\tgeolocation: PermissionStates.PENDING,\n\tcookie: PermissionStates.PENDING\n};\n\nvar Permissions = {\n\tget: function (options) {\n\t\tvar type = options.type;\n\t\tvar allowed;\n\t\tvar supportedPermissions = [];\n\t\tvar i;\n\n\t\t// First check that this Permissions script supports the requested API\n\t\tif (!(type in permissions)) {\n\t\t\tfor (i in permissions) {\n\t\t\t\tsupportedPermissions.push(i);\n\t\t\t}\n\t\t\tconsole.error('Permissions for ' + type + ' not supported. Supported permissions are ', supportedPermissions.join(', '));\n\t\t\tif (options.no) {\n\t\t\t\toptions.no();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Permissions are only relevant if the API is supported\n\t\tif (support[type]) {\n\n\t\t\t// If the permission state has already been determined, act immediately\n\t\t\tif (permissions[type] !== PermissionStates.PENDING) {\n\t\t\t\tPermissions._permissionDetermined(options, permissions[type]);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (support.permissions && permissionApiSupport[type]) {\n\t\t\t\t// Permission can be checked directly\n\t\t\t\t// However, this is asynchronous, so a callback is necessary\n\t\t\t\tnavigator.permissions.query({ 'name': type }).then(Permissions._checkPermissionApi(options));\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tallowed = Permissions._checkPermissionStorage(options);\n\t\t\t\tPermissions._permissionDetermined(options, allowed);\n\t\t\t}\n\n\t\t} else if (options.no) {\n\t\t\toptions.no();\n\t\t}\n\t},\n\n\t_checkPermissionApi: function (options) {\n\t\t// Detecting permissions directly lets us re-prompt the user\n\t\t// if they rescind their permissions, instead of relying\n\t\t// solely on our own record in localStorage\n\n\t\treturn function (permission) {\n\n\t\t\tvar allowed;\n\t\t\tvar allowedStorage;\n\n\t\t\tswitch (permission.state) {\n\t\t\t\tcase 'prompt':\n\t\t\t\t\t// Either the user has never been prompted by the browser,\n\t\t\t\t\t// or they have rescinded previous granted or blocked permissions.\n\t\t\t\t\t// Compare with stored value in localStorage, if possible\n\n\t\t\t\t\tallowedStorage = Permissions._checkPermissionStorage(options);\n\n\t\t\t\t\tif ((allowedStorage === PermissionStates.BLOCKED) ||\n\t\t\t\t\t\t(allowedStorage === PermissionStates.YES)) {\n\t\t\t\t\t\t// User had previously granted or blocked this permission, then\n\t\t\t\t\t\t// rescinded that. So they should be offered another prompt\n\t\t\t\t\t\tallowed = PermissionStates.PROMPT;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// State could either be initial, or that user selected \"no\",\n\t\t\t\t\t\t// so preferentially use a value in localStorage if present\n\t\t\t\t\t\tallowed = allowedStorage;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'granted':\n\t\t\t\t\tallowed = PermissionStates.YES;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'denied':\n\t\t\t\t\tallowed = PermissionStates.BLOCKED;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tPermissions._permissionDetermined(options, allowed);\n\t\t};\n\t},\n\n\t_checkPermissionStorage: function (options) {\n\t\t// Use localStorage as a backup to record the permission state\n\n\t\tvar allowed;\n\n\t\tif (support.localStorage) {\n\t\t\tallowed = localStorage.getItem('permissions-' + options.type);\n\t\t\tif (allowed === null) {\n\t\t\t\tallowed = undefined;\n\t\t\t}\n\t\t}\n\n\t\treturn allowed;\n\t},\n\n\t_permissionDetermined: function (options, allowed) {\n\t\t// We've determined the current permission,\n\t\t// so call the appropriate callback\n\n\t\tvar type = options.type;\n\n\t\tif (typeof allowed !== 'undefined') {\n\t\t\tPermissions._setPermission(type, allowed);\n\t\t}\n\n\t\tif (permissions[type] === PermissionStates.YES) {\n\t\t\tif (options.yes) {\n\t\t\t\toptions.yes();\n\t\t\t}\n\t\t} else if (permissions[type] === PermissionStates.NO || permissions[type] === PermissionStates.BLOCKED) {\n\t\t\tif (options.no) {\n\t\t\t\toptions.no();\n\t\t\t}\n\t\t} else {\n\t\t\t// PENDING state or undetermined\n\t\t\t// Callbacks will be delayed for user confirmation\n\t\t\tPermissions._requestPermission(options);\n\t\t}\n\t},\n\n\t_requestPermission: function (options) {\n\t\t// Let the user know why permission is needed,\n\t\t// and ask them before having the browser prompt them\n\n\t\tvar $popup = document.querySelectorAll(selectors[options.type]);\n\n\t\tif ($popup.length) {\n\t\t\tConfirm.check(\n\t\t\t\t$popup,\n\t\t\t\tPermissions._permissionGranted(options),\n\t\t\t\tPermissions._permissionDenied(options)\n\t\t\t);\n\t\t\tPermissions._permissionPrompted(options);\n\t\t} else {\n\t\t\t// No field exists to tell users why we need permission,\n\t\t\t// so have the browser prompt them directly\n\t\t\tPermissions._permissionGranted(options)();\n\t\t}\n\t},\n\n\t_permissionGranted: function (options) {\n\t\t// The user selected \"yes\", and will now be\n\t\t// prompted for permission by the browser.\n\n\t\t// They will not be prompted again unless they\n\t\t// rescind this permission and we have access\n\t\t// to the permissions API\n\n\t\treturn function () {\n\t\t\tPermissions._setPermission(options.type, PermissionStates.YES);\n\t\t\tif (options.yes) {\n\t\t\t\toptions.yes();\n\t\t\t}\n\t\t};\n\t},\n\n\t_permissionDenied: function (options) {\n\t\t// The user selected \"no\".\n\n\t\t// They will not be prompted again unless\n\t\t// this is removed from localStorage\n\n\t\treturn function () {\n\t\t\tPermissions._setPermission(options.type, PermissionStates.NO);\n\t\t\tif (options.no) {\n\t\t\t\toptions.no();\n\t\t\t}\n\t\t};\n\t},\n\n\t_permissionPrompted: function (options) {\n\t\t// The user has been prompted for permission\n\n\t\tif (options.prompt) {\n\t\t\toptions.prompt();\n\t\t}\n\t},\n\n\t_setPermission: function (type, allowed) {\n\t\tpermissions[type] = allowed;\n\t\tif (support.localStorage) {\n\t\t\tlocalStorage.setItem('permissions-' + type, permissions[type]);\n\t\t}\n\t}\n};\n\nconst permission = {\n\tget: Permissions.get\n};\n\nexport { Permissions };","\nvar fileIO = (function () {\n\tvar module;\n\tvar $link;\n\n\tvar ReadMethods = {\n\t\tTEXT: 'readAsText',\n\t\tDATA_URL: 'readAsDataURL'\n\t};\n\n\tmodule = {\n\t\tsave: {\n\t\t\tdata: function (data, filename, type) {\n\t\t\t\t// Construct a Blob and download it\n\t\t\t\tvar blob;\n\n\t\t\t\tblob = new Blob(\n\t\t\t\t\t[data],\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: type || 'text/plain'\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tmodule.save.blob(blob, filename);\n\t\t\t},\n\n\t\t\tjson: function (data, filename) {\n\t\t\t\ttry {\n\t\t\t\t\tif (typeof data !== 'string') {\n\t\t\t\t\t\tdata = JSON.stringify(data);\n\t\t\t\t\t}\n\n\t\t\t\t\tfilename = module.save._extendFilename(filename, 'json');\n\t\t\t\t\tmodule.save.data(data, filename, 'application/json');\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.error(e);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tblob: function (blob, filename) {\n\t\t\t\tvar url;\n\n\t\t\t\tif (navigator.msSaveBlob) {\n\t\t\t\t\tnavigator.msSaveBlob(blob, filename);\n\t\t\t\t} else {\n\t\t\t\t\turl = URL.createObjectURL(blob);\n\t\t\t\t\tmodule.save._downloadDataUrl(url, filename);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tfile: function (file, filename) {\n\t\t\t\tvar reader;\n\n\t\t\t\tif (navigator.msSaveBlob) {\n\t\t\t\t\tnavigator.msSaveBlob(file, filename);\n\t\t\t\t} else {\n\t\t\t\t\treader = new FileReader();\n\n\t\t\t\t\treader.readAsDataURL(file);\n\t\t\t\t\treader.addEventListener('load', module.save._processedFile(filename));\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tcsv: function (data, filename, transpose, sanitise) {\n\t\t\t\tvar rows = module.save._csvPrepareData(data, transpose, sanitise);\n\n\t\t\t\tfilename = module.save._extendFilename(filename, 'csv');\n\t\t\t\tmodule.save.data(rows, filename, 'text/csv');\n\t\t\t},\n\n\t\t\t_csvPrepareData: function (data, transpose, sanitise) {\n\t\t\t\tvar rows;\n\t\t\t\tvar i;\n\n\t\t\t\trows = module.save._csvShapeData(data, transpose);\n\t\t\t\trows = module.save._csvEscape(rows, sanitise);\n\n\t\t\t\tfor (i = 0; i < rows.length; i++) {\n\t\t\t\t\trows[i] = rows[i].join(',');\n\t\t\t\t}\n\t\t\t\trows = rows.join('\\n');\n\n\t\t\t\treturn rows;\n\t\t\t},\n\n\t\t\t_csvShapeData: function (data, transpose) {\n\t\t\t\t// Pad empty cells with empty strings and,\n\t\t\t\t// if necessary, transpose the data\n\n\t\t\t\tvar rows = [];\n\t\t\t\tvar row;\n\n\t\t\t\tvar cellValue;\n\n\t\t\t\tvar i;\n\t\t\t\tvar iMax;\n\n\t\t\t\tvar j;\n\t\t\t\tvar jMax;\n\n\t\t\t\tvar maxLength = 0;\n\n\t\t\t\tfor (i = 0; i < data.length; i++) {\n\t\t\t\t\trow = data[i];\n\n\t\t\t\t\tmaxLength = Math.max(maxLength, row.length);\n\t\t\t\t}\n\n\t\t\t\t// Flip rows and columns if transposing data\n\t\t\t\tiMax = transpose ? maxLength : data.length;\n\t\t\t\tjMax = transpose ? data.length : maxLength;\n\n\t\t\t\tfor (i = 0; i < iMax; i++) {\n\t\t\t\t\trow = [];\n\t\t\t\t\tfor (j = 0; j < jMax; j++) {\n\t\t\t\t\t\tcellValue = transpose ? data[j][i] : data[i][j];\n\n\t\t\t\t\t\tif (typeof cellValue === 'undefined') {\n\t\t\t\t\t\t\tcellValue = '';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trow.push(cellValue);\n\t\t\t\t\t}\n\t\t\t\t\trows.push(row);\n\t\t\t\t}\n\n\t\t\t\treturn rows;\n\t\t\t},\n\n\t\t\t_csvEscape: function (rows, sanitise) {\n\t\t\t\tvar i;\n\t\t\t\tvar row;\n\n\t\t\t\tvar j;\n\n\t\t\t\tfor (i = 0; i < rows.length; i++) {\n\t\t\t\t\trow = rows[i];\n\n\t\t\t\t\tfor (j = 0; j < row.length; j++) {\n\t\t\t\t\t\tif (typeof row[j] === 'undefined') {\n\t\t\t\t\t\t\trow[j] = '';\n\t\t\t\t\t\t} else if (typeof row[j] !== 'string') {\n\t\t\t\t\t\t\t// Convert to string\n\t\t\t\t\t\t\trow[j] = '' + row[j];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (sanitise) {\n\t\t\t\t\t\t\t// Prevent spreadsheet software like\n\t\t\t\t\t\t\t// Excel from trying to execute code\n\t\t\t\t\t\t\tif (row[j].match(/^[=\\-+@]/)) {\n\t\t\t\t\t\t\t\trow[j] = '\\t' + row[j];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (row[j].match(/,|\"|\\n/)) {\n\n\t\t\t\t\t\t\t// Turn any double quotes into escaped double quites\n\t\t\t\t\t\t\trow[j] = row[j].replace(/\"/g, '\"\"');\n\n\t\t\t\t\t\t\t// Wrap cell in double quotes\n\t\t\t\t\t\t\trow[j] = '\"' + row[j] + '\"';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn rows;\n\t\t\t},\n\n\t\t\t_processedFile: function (filename) {\n\t\t\t\t// Callback for FileReader load event\n\t\t\t\treturn function () {\n\t\t\t\t\tmodule.save._downloadDataUrl(this.result, filename);\n\t\t\t\t};\n\t\t\t},\n\n\t\t\t_downloadDataUrl: function (dataUrl, filename) {\n\t\t\t\t$link = $link || document.createElement('a');\n\t\t\t\t$link.href = dataUrl;\n\t\t\t\t$link.download = filename;\n\t\t\t\t$link.click();\n\n\t\t\t\tURL.revokeObjectURL(dataUrl);\n\t\t\t},\n\n\t\t\t_extendFilename: function (filename, extension) {\n\t\t\t\tvar testPattern = new RegExp('\\\\.' + extension + '$');\n\n\t\t\t\tif (!testPattern.test(filename)) {\n\t\t\t\t\tfilename += '.' + extension;\n\t\t\t\t}\n\n\t\t\t\treturn filename;\n\t\t\t}\n\t\t},\n\n\t\tload: {\n\t\t\ttext: function (fileLoadedCallback) {\n\t\t\t\tmodule.load._file(fileLoadedCallback, ReadMethods.TEXT);\n\t\t\t},\n\n\t\t\timage: function (fileLoadedCallback) {\n\t\t\t\tmodule.load._file(fileLoadedCallback, ReadMethods.DATA_URL);\n\t\t\t},\n\n\t\t\t_file: function (fileLoadedCallback, readMethod) {\n\t\t\t\t// Create a file input, and use it to prompt the user to select a file.\n\t\t\t\t// Once a file is selected, pass it to fileLoadedCallback\n\n\t\t\t\tvar $fileInput = document.createElement('input');\n\n\t\t\t\t$fileInput.type = 'file';\n\t\t\t\t$fileInput.addEventListener('change', module.load._loadSelectedFile($fileInput, fileLoadedCallback, readMethod));\n\n\t\t\t\t$fileInput.click();\n\t\t\t},\n\n\t\t\t_loadSelectedFile: function ($fileInput, fileLoadedCallback, readMethod) {\n\t\t\t\treturn function (e) {\n\t\t\t\t\tvar file = $fileInput.files[0];\n\t\t\t\t\tvar reader = new FileReader();\n\n\t\t\t\t\treader.onload = module.load._fileLoaded(fileLoadedCallback);\n\t\t\t\t\treader[readMethod](file);\n\t\t\t\t};\n\t\t\t},\n\n\t\t\t_fileLoaded: function (fileLoadedCallback) {\n\t\t\t\treturn function (e) {\n\t\t\t\t\tvar reader = e.target;\n\n\t\t\t\t\tif (reader.readyState === 2) {\n\t\t\t\t\t\t// DONE\n\t\t\t\t\t\tfileLoadedCallback(reader.result);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t};\n\n\treturn {\n\t\tsave: {\n\t\t\tdata: module.save.data,\n\t\t\tjson: module.save.json,\n\t\t\tblob: module.save.blob,\n\t\t\tfile: module.save.file,\n\t\t\tcsv: module.save.csv\n\t\t},\n\t\tload: {\n\t\t\ttext: module.load.text,\n\t\t\timage: module.load.image\n\t\t}\n\t};\n})();\n\nexport { fileIO };","import $ from 'jquery';\nimport { FileIO } from 'Util/fileio';\nimport { publish, unpublish, subscribe } from 'Util/pubsub';\n\nvar selectors = {\n\tresourceItem: '.js-resources__item',\n\tresourceDownload: '.js-resources__download',\n\n\tresourceFileContainer: '.js-resources__file-container',\n\tresourceFile: '.js-resources__file',\n\tresourceFileType: '.js-resources__file-type',\n\n\tresourceTitle: '.js-resources__title'\n};\n\nvar dataSelectors = {\n\tresourceDownloadError: 'resources-download-error'\n};\n\nvar classes = {\n\tloader: 'o-loader'\n};\n\nvar api = {\n\tdownload: '/download-zip'\n};\n\nvar publications = {\n\terror: '/status/error'\n};\n\nvar States = {\n\tENABLED: 'enabled',\n\tDISABLED: 'disabled'\n};\n\nvar Resources = {\n\n\tinit: function () {\n\t\tResources._initEvents();\n\n\t\tResources._initButtonStates();\n\t},\n\n\t_initEvents: function () {\n\t\t$(selectors.resourceFile).on('change resources/init', Resources.resources.fileChangeEvent);\n\t\t$(selectors.resourceDownload).on('click', Resources.resources.downloadEvent);\n\t},\n\n\t_initButtonStates: function () {\n\t\t// This is only necessary if the use does something\n\t\t// before the JS loads that should cause the button states to change\n\n\t\t$(selectors.resourceItem).each(function (i, el) {\n\t\t\tvar $item = $(el);\n\t\t\tvar $file = $item.find(selectors.file).first();\n\n\t\t\t$file.trigger('resources/init');\n\t\t});\n\t},\n\n\tresources: {\n\t\tfileChangeEvent: function (e) {\n\t\t\tvar $item = $(e.target).closest(selectors.resourceItem);\n\t\t\tvar files = Resources.resources._getSelectedFiles($item);\n\n\t\t\tvar state = files.length ? States.ENABLED : States.DISABLED;\n\n\t\t\tResources.resources._setDownloadDisabledState($item, state);\n\t\t},\n\n\n\t\tdownloadEvent: function (e) {\n\t\t\te.preventDefault();\n\n\t\t\tvar $item = $(e.target).closest(selectors.resourceItem);\n\n\t\t\tResources.resources._download($item);\n\t\t},\n\n\t\t_download: function ($item) {\n\t\t\tvar files = Resources.resources._getSelectedFiles($item);\n\t\t\tvar mediaIds = Resources.resources._getMediaIdList(files);\n\n\t\t\tvar request;\n\t\t\tvar filename = Resources.resources._getFilename($item);\n\n\t\t\t$item.addClass(classes.loader);\n\t\t\tResources.resources._setDownloadDisabledState($item, States.DISABLED);\n\t\t\tResources.resources._setFileDisabledState($item, States.DISABLED);\n\n\t\t\t// jQuery doesn't handle ajax requests for files well, so use native JS\n\t\t\trequest = new XMLHttpRequest();\n\t\t\trequest.open('GET', api.download + '/' + mediaIds, true);\n\t\t\trequest.responseType = 'arraybuffer';\n\n\t\t\trequest.onload = Resources.resources._handleDownloadResponse(request, $item, filename);\n\t\t\trequest.send();\n\t\t},\n\n\t\t_handleDownloadResponse: function (request, $item, filename) {\n\t\t\treturn function (event) {\n\t\t\t\tResources.resources._downloadComplete($item);\n\n\t\t\t\tif (request.status === 200) {\n\t\t\t\t\tResources.resources._downloadSuccess(filename, request);\n\t\t\t\t} else {\n\t\t\t\t\tResources.resources._downloadError($item);\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\n\t\t_downloadComplete: function ($item) {\n\t\t\t$item.removeClass(classes.loader);\n\t\t\tResources.resources._setDownloadDisabledState($item, States.ENABLED);\n\t\t\tResources.resources._setFileDisabledState($item, States.ENABLED);\n\t\t},\n\n\t\t_downloadSuccess: function (filename, request) {\n\t\t\tfileIO.save.data(request.response, filename, 'application/x-zip-compressed');\n\t\t},\n\n\t\t_downloadError: function ($item) {\n\t\t\tvar errorMessage = $item.data(dataSelectors.resourceDownloadError);\n\n\t\t\tpublish(publications.error, errorMessage);\n\t\t},\n\n\n\t\t_setFileDisabledState: function ($item, state) {\n\t\t\tvar $file = $item.find(selectors.resourceFile);\n\n\t\t\tif (state === States.ENABLED) {\n\t\t\t\t$file.prop('disabled', false);\n\t\t\t} else if (state === States.DISABLED) {\n\t\t\t\t$file.prop('disabled', true);\n\t\t\t}\n\t\t},\n\n\t\t_setDownloadDisabledState: function ($item, state) {\n\t\t\tvar $download = $item.find(selectors.resourceDownload);\n\n\t\t\tif (state === States.ENABLED) {\n\t\t\t\t$download.prop('disabled', false);\n\t\t\t} else if (state === States.DISABLED) {\n\t\t\t\t$download.prop('disabled', true);\n\t\t\t}\n\t\t},\n\n\t\t_getSelectedFiles: function ($item) {\n\t\t\tvar $files = $item.find(selectors.resourceFile);\n\t\t\tvar $selectedFiles = $files.filter(':checked');\n\n\t\t\tvar ids = [];\n\n\t\t\tvar i;\n\t\t\tvar $file;\n\t\t\tvar id;\n\n\t\t\tfor (i = 0; i < $selectedFiles.length; i++) {\n\t\t\t\t$file = $selectedFiles.eq(i);\n\t\t\t\tid = $file.val();\n\n\t\t\t\tids.push(id);\n\t\t\t}\n\n\t\t\treturn ids;\n\t\t},\n\n\t\t_getFilename: function ($item) {\n\t\t\tvar $name = $item.find(selectors.resourceTitle);\n\t\t\tvar name = $name.text().trim();\n\n\t\t\tvar $files = $item.find(selectors.resourceFile);\n\t\t\tvar $selectedFiles = $files.filter(':checked');\n\t\t\tvar $selectedFileContainers = $selectedFiles.closest(selectors.resourceFileContainer);\n\t\t\tvar $selectedFileTypes = $selectedFileContainers.find(selectors.resourceFileType);\n\n\t\t\tvar selectedFileTypes = [];\n\t\t\tvar type;\n\t\t\tvar i;\n\n\t\t\tvar filename;\n\n\t\t\tfor (i = 0; i < $selectedFileTypes.length; i++) {\n\t\t\t\ttype = $selectedFileTypes.eq(i).text().trim();\n\n\t\t\t\tselectedFileTypes.push(type);\n\t\t\t}\n\n\t\t\tfilename = name + ' ' + selectedFileTypes.join(', ') + '.zip';\n\n\t\t\treturn filename;\n\t\t},\n\n\t\t_getMediaIdList: function (files) {\n\t\t\t// Convert combination IDs for CAD files into only the media ID\n\t\t\tvar i;\n\t\t\tvar id;\n\t\t\tvar idParts;\n\t\t\tvar mediaIds = [];\n\n\t\t\tfor (i = 0; i < files.length; i++) {\n\t\t\t\tid = files[i];\n\t\t\t\tmediaIds.push(id);\n\t\t\t}\n\n\t\t\treturn mediaIds;\n\t\t}\n\t}\n};\n\nexport { Resources };","import $ from 'jquery';\nimport { debounce } from 'Util/debounce';\n\nvar selectors = {\n\tselect: '.js-select-link'\n};\n\nvar SelectLink = {\n\tinit: function () {\n\t\tSelectLink._initEvents();\n\t},\n\n\t_initEvents: function () {\n\t\t$(selectors.select).on('change', SelectLink._changeEvent);\n\t},\n\n\t_changeEvent: function (e) {\n\t\tvar $select = $(e.target);\n\n\t\tSelectLink._change($select);\n\t},\n\n\t_change: debounce(function ($select) {\n\t\tvar value = $select.val();\n\n\t\tdocument.location = value;\n\t}, 500)\n};\n\nexport { SelectLink }","/**\n * Extend jquery with a scrollspy plugin.\n * This watches the window scroll and fires events when elements are scrolled into viewport.\n *\n * @author Copyright 2013 John Smart\n * @license https://raw.github.com/thesmart/jquery-scrollspy/master/LICENSE\n * @see https://github.com/thesmart\n * @version 0.0.8\n */\n\nimport jQuery from 'jquery';\n\n(function($) {\n\n\tvar jWindow = $(window);\n\tvar elements = [];\n\tvar elementsInView = [];\n\tvar isSpying = false;\n\tvar ticks = 0;\n\n\t/**\n\t * Find elements that are within the boundary\n\t * @param {number} top\n\t * @param {number} right\n\t * @param {number} bottom\n\t * @param {number} left\n\t * @return {jQuery}\t\tA collection of elements\n\t */\n\tfunction findElements(top, right, bottom, left) {\n\t\tvar hits = $();\n\t\t$.each(elements, function(i, element) {\n\t\t\tvar elTop = element.offset().top,\n\t\t\t\telLeft = element.offset().left,\n\t\t\t\telRight = elLeft + element.width(),\n\t\t\t\telBottom = elTop + element.height();\n\n\t\t\tvar isIntersect = !(elLeft > right ||\n\t\t\t\telRight < left ||\n\t\t\t\telTop > bottom ||\n\t\t\t\telBottom < top);\n\n\t\t\tif (isIntersect) {\n\t\t\t\thits.push(element);\n\t\t\t}\n\t\t});\n\n\t\treturn hits;\n\t}\n\n\t/**\n\t * Called when the user scrolls the window\n\t */\n\tfunction onScroll() {\n\t\t// unique tick id\n\t\t++ticks;\n\n\t\t// viewport rectangle\n\t\tvar top = jWindow.scrollTop(),\n\t\t\tleft = jWindow.scrollLeft(),\n\t\t\tright = left + jWindow.width(),\n\t\t\tbottom = top + jWindow.height();\n\n\t\t// determine which elements are in view\n\t\tvar intersections = findElements(top, right, bottom, left);\n\t\t$.each(intersections, function(i, element) {\n\t\t\tvar lastTick = element.data('scrollSpy:ticks');\n\t\t\tif (typeof lastTick != 'number') {\n\t\t\t\t// entered into view\n\t\t\t\telement.triggerHandler('scrollSpy:enter');\n\t\t\t}\n\n\t\t\t// update tick id\n\t\t\telement.data('scrollSpy:ticks', ticks);\n\t\t});\n\n\t\t// determine which elements are no longer in view\n\t\t$.each(elementsInView, function(i, element) {\n\t\t\tvar lastTick = element.data('scrollSpy:ticks');\n\t\t\tif (typeof lastTick == 'number' && lastTick !== ticks) {\n\t\t\t\t// exited from view\n\t\t\t\telement.triggerHandler('scrollSpy:exit');\n\t\t\t\telement.data('scrollSpy:ticks', null);\n\t\t\t}\n\t\t});\n\n\t\t// remember elements in view for next tick\n\t\telementsInView = intersections;\n\t}\n\n\t/**\n\t * Enables ScrollSpy using a selector\n\t * @param {jQuery|string} selector\t\tThe elements collection, or a selector\n\t * @returns {jQuery}\n\t */\n\t$.scrollSpy = function(selector) {\n\t\tselector = $(selector);\n\t\tselector.each(function(i, element) {\n\t\t\telements.push($(element));\n\t\t});\n\n\t\tif (!isSpying) {\n\t\t\tjWindow.on('scroll', onScroll);\n\t\t\tisSpying = true;\n\n\t\t\t// perform a scan once, after current execution context, and after dom is ready\n\t\t\tsetTimeout(function() {\n\t\t\t\t$(document).ready(onScroll);\n\t\t\t}, 0);\n\t\t}\n\n\t\treturn selector;\n\t};\n\n\t/**\n\t * Enables ScrollSpy on a collection of elements\n\t * e.g. $('.scrollSpy').scrollSpy()\n\t * @returns {jQuery}\n\t */\n\t$.fn.scrollSpy = function() {\n\t\treturn $.scrollSpy($(this));\n\t};\n\n})(jQuery);","import $ from 'jquery';\nimport 'scrollspy';\n\nvar selectors = {\n\ttickerContainer: '.js-statistics',\n\ttickerItem: '.js-statistics-num'\n};\n\nvar $tickerContainer;\nvar animationDuration = 2000;\n\nvar Ticker = {\n\tinit: function () {\n\t\tTicker = this;\n\t\t$tickerContainer = $(selectors.tickerContainer);\n\t\t$tickerContainer.each(function (index, item) {\n\t\t\tvar $item = $(item);\n\t\t\t$item.on('scrollSpy:enter',\n\t\t\t\tfunction () {\n\t\t\t\t\tif (!$item.hasClass('js-is-visited')) {\n\t\t\t\t\t\tTicker._startAnimation($item);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t$item.on('scrollSpy:exit',\n\t\t\t\tfunction () {\n\t\t\t\t\tTicker._noMoreAnimation($item);\n\t\t\t\t});\n\t\t\t$item.scrollSpy();\n\t\t});\n\t},\n\n\t_startAnimation: function ($container) {\n\t\tvar $tickerItem = $container.find(selectors.tickerItem);\n\t\t$tickerItem.each(function () {\n\t\t\t$(this).prop('Counter', 0).animate({\n\t\t\t\tCounter: $(this).attr('data-target-num')\n\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tduration: animationDuration,\n\t\t\t\t\teasing: 'swing',\n\t\t\t\t\tstep: function (now) {\n\t\t\t\t\t\t$(this).text(Math.floor(now).toFixed().replace(/\\B(?=(?:\\d{3})+(?!\\d))/g, ','));\n\t\t\t\t\t},\n\t\t\t\t\tcomplete: function () {\n\t\t\t\t\t\t$(this).text($(this).attr('data-target-num').replace(/\\B(?=(?:\\d{3})+(?!\\d))/g, ','));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t});\n\t},\n\n\t_noMoreAnimation: function ($container) {\n\t\t$container.addClass('js-is-visited');\n\t}\n};\n\nexport { Ticker }","/* app/ui/track/link */\n\nimport $ from 'jquery';\nimport { Universal } from 'App/track/analytics/universal';\n\nvar config = {\n\tdataTrackCateogry: 'TrackLinkCategory',\n\tcomponents: {\n\t\t// [name]:[selector]\n\t\t// e.g. 'menu': '.js-menu'\n\t},\n\tactionLinkClick: 'Link Click',\n\tactionButtonClick: 'Button Click',\n\tactionDefaultClick: 'Click',\n\tactionLinkRightClick:  'Link Click (Right)'\n};\nvar $linkList;\nvar componentObj;\n\nvar Track = {\n\tinit: function ( settings ) {\n\t\t// console.log('Track Link Init');\n\n\n\t\tconfig = $.extend( config, settings );\n\n\t\tTrack._initElements();\n\t\tTrack._initEvents();\n\t},\n\n\t_initElements: function () {\n\t\t$linkList = Track._getComponents();\n\t},\n\n\t_initEvents: function () {\n\t\t$linkList.on( 'click contextmenu', Track._processLinkClick );\n\t\t$linkList.on( 'click contextmenu', 'a,button,input[type=submit]', Track._processComponentClick );\n\t},\n\n\t_processLinkClick: function( event ) {\n\t\tif( event.delegateTarget === event.target ) {\n\t\t\tvar tag = event.target.tagName.toLowerCase();\n\t\t\tif( tag === 'a' || tag === 'input' || tag === 'button' ) {\n\t\t\t\tTrack._processClick( event );\n\t\t\t}\n\t\t}\n\t},\n\n\t_processComponentClick: function( event ) {\n\t\tTrack._processClick( event );\n\t},\n\n\t_processClick: function( event ) {\n\t\tvar type = event.type;\n\t\tvar tag = event.target.tagName.toLowerCase();\n\t\tvar trackIt = true;\n\n\t\tvar category =  Track._getCategoryName( event );\n\t\tvar action = Track._getActionType( event.target );\n\t\tvar label = Track._getLabelValue( event.target );\n\n\t\tif( type === 'contextmenu' && tag === \"a\") {\n\t\t\taction = config.actionLinkRightClick;\n\t\t\ttrackIt = true;\n\n\t\t} else if ( type === 'contextmenu') {\n\t\t\ttrackIt = false;\n\t\t}\n\n\t\tif( trackIt ) {\n\t\t\tvar data = {\n\t\t\t\teventCategory: category,\n\t\t\t\teventAction: action,\n\t\t\t\teventLabel: label\n\t\t\t};\n\n\t\t\tUniversal.sendEvent( data );\n\t\t}\n\t},\n\n\t_getComponents: function() {\n\t\tvar $componentList = $();\n\t\tvar componentKeyList = Track._getComponentKeys();\n\n\t\tfor (var i = 0; i < componentKeyList.length; i++) {\n\t\t\tvar componentKey = componentKeyList[i];\n\t\t\tvar componentClass = config.components[componentKey];\n\t\t\tvar $component = $( componentClass);\n\n\t\t\tTrack._setCategoryName($component, componentKey);\n\n\t\t\tif( $component.length > 0 ) {\n\t\t\t\tif( $componentList.length === 0 ) {\n\t\t\t\t\t$componentList = $( componentClass);\n\t\t\t\t} else {\n\t\t\t\t\t$componentList = $componentList.add( componentClass );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn $componentList;\n\t},\n\n\t_getComponentKeys: function() {\n\t\treturn Object.keys( config.components );\n\t},\n\n\t_getCategoryName: function( event ) {\n\t\treturn $( event.delegateTarget ).data( config.dataTrackCateogry );\n\t},\n\n\t_setCategoryName: function( $elem, name ) {\n\t\t$elem.data( config.dataTrackCateogry, Track._capitalizeString( name ));\n\t},\n\n\t_getActionType: function( element ) {\n\t\tvar tag = element.tagName.toLowerCase();\n\t\tvar eventAction = '';\n\t\tswitch(tag) {\n\t\t\tcase 'a':\n\t\t\t\teventAction = config.actionLinkClick;\n\t\t\t\tbreak;\n\n\t\t\tcase 'button':\n\t\t\t\teventAction = config.actionButtonClick;\n\t\t\t\tbreak;\n\n\t\t\tcase 'input':\n\t\t\t\tif( element.getAttribute('type').toLowerCase() === 'submit') {\n\t\t\t\t\teventAction = config.actionButtonClick;\n\t\t\t\t} else {\n\t\t\t\t\teventAction = config.actionDefaultClick;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\teventAction = config.actionDefaultClick;\n\n\t\t}\n\n\t\treturn eventAction;\n\t},\n\n\t_getLabelValue: function( element ) {\n\t\tvar $element = $( element );\n\t\tvar tag = element.tagName.toLowerCase();\n\t\tvar label = 'Label:';\n\t\tvar link = 'Url:';\n\t\tvar value;\n\t\tvar eventLabel;\n\n\t\tswitch(tag) {\n\t\t\tcase 'a':\n\t\t\t\tlabel = label + $.trim( $element.text() );\n\t\t\t\tlink = link + $element.attr('href');\n\t\t\t\teventLabel = label + ', ' + link;\n\t\t\t\tbreak;\n\n\t\t\tcase 'button':\n\t\t\t\tlabel = label + $.trim( $element.text() );\n\t\t\t\teventLabel = label;\n\t\t\t\tbreak;\n\n\t\t\tcase 'input':\n\t\t\t\tif( element.getAttribute('type').toLowerCase() === 'submit') {\n\t\t\t\t\tvalue = $element.attr('value');\n\t\t\t\t\tlabel = label + ( value !== undefined && value !== 'Submit Query' ? value : 'Submit' );\n\t\t\t\t\teventLabel = label;\n\t\t\t\t} else {\n\t\t\t\t\teventLabel = 'n/a';\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\teventLabel = 'n/a';\n\n\t\t}\n\n\t\treturn eventLabel;\n\t},\n\n\t_capitalizeString: function( txt ) {\n\t\treturn txt.replace(/\\w\\S*/g, function(word) {\n\t\t\treturn word.charAt(0).toUpperCase() + word.substr(1).toLowerCase();\n\t\t});\n\t}\n};\n\nexport { Track as Link };\n","/* app/ui/track/scroll */\n\nimport $ from 'jquery';\nimport { Util } from 'App/track/analytics/util';\n\nvar $html;\nvar $body;\nvar $view;\n\nvar isHalfway = false;\nvar isEnd = false;\n\nvar state = {\n\tverticalHeight: '',\n\tverticalPlacement: '',\n\tisHalfway: false,\n\tisEnd: false\n};\n\nvar eventData = {\n\teventCategory: 'Scrolled',\n\teventAction: '',\n\teventLabel: ''\n};\n\nvar eventActions = {\n\tlandedPassedHalfway: 'Landed Passed Halfway',\n\tlandedEnd: 'Landed End',\n\tscrolledHalfway: 'Passed Halfway',\n\tscrolledEnd: 'Reached End'\n};\n\nvar Track = {\n\tinit: function () {\n\t\t// console.log('Track Scroll Init');\n\n\t\tTrack._initElements();\n\t\tTrack._initState();\n\t\tTrack._initEvents();\n\t},\n\n\t_initElements: function () {\n\t\t$html = $( 'html' );\n\t\t$body = $( 'body' );\n\t\t$view = $( window );\n\t},\n\n\t_initEvents: function () {\n\t\t$(window).on('scroll', Track._processWindowScroll );\n\t},\n\n\t_initState: function() {\n\t\tTrack._updateState();\n\n\t\t// Check to see if user landed at an anchor at the end of the page\n\t\tif( state.isEnd ) {\n\t\t\tisHalfway = true;\n\t\t\tisEnd = true;\n\t\t\tTrack._processPublishEvent( eventActions.landedEnd );\n\n\t\t// Check to see if user landed passed way of the page\n\t\t} else if( state.isHalfway ) {\n\t\t\tisHalfway = true;\n\t\t\tTrack._processPublishEvent( eventActions.landedPassedHalfway );\n\t\t}\n\t},\n\n\t_updateState: function() {\n\t\tstate.verticalHeight = $html.outerHeight();\n\t\tstate.verticalPlacement = $body.scrollTop() + $view.height();\n\t\tstate.isHalfway = state.verticalPlacement >= ( state.verticalHeight / 2 );\n\t\tstate.isEnd = state.verticalPlacement + 100 /* buffer */ > state.verticalHeight;\n\t},\n\n\t_processWindowScroll: function() {\n\t\tif(!isHalfway || !isEnd) {\n\t\t\tTrack._updateState();\n\n\t\t\t// User has passed halfway of the page\n\t\t\tif( !isHalfway && state.isHalfway ) {\n\t\t\t\tisHalfway = true;\n\t\t\t\tTrack._processPublishEvent( eventActions.scrolledHalfway );\n\t\t\t}\n\n\t\t\t// User has reached the buffered zone of the page\n\t\t\tif( !isEnd && state.isEnd) {\n\t\t\t\tisEnd = true;\n\t\t\t\tTrack._processPublishEvent( eventActions.scrolledEnd );\n\t\t\t}\n\t\t}\n\t},\n\n\t_processPublishEvent: function( actionLabel ) {\n\t\teventData.eventAction = actionLabel;\n\t\teventData.eventLabel = 'Height:' + state.verticalHeight + 'px, Position:' + state.verticalPlacement + 'px';\n\t\tUtil.publishEvent( eventData );\n\n\t}\n};\n\nexport { Track as Scroll };\n","/* app/ui/track/share */\n\nimport $ from 'jquery';\nimport { Util } from 'App/track/analytics/util';\n\nvar $sharePopup;\nvar $shareEmail;\n\nvar selectors = {\n\tsharePopup: '.js-social-popup',\n\tshareEmail: '.js-social-email',\n\tdataValue: 'trackValue'\n};\n\nvar Track = {\n\tinit: function () {\n\t\t// console.log('Track Share Init');\n\n\t\tTrack._initElements();\n\t\tTrack._initSubscriptions();\n\t\tTrack._initEvents();\n\t},\n\n\t_initElements: function () {\n\t\t$sharePopup = $( selectors.sharePopup );\n\t\t$shareEmail = $( selectors.shareEmail );\n\t},\n\n\t_initSubscriptions: function () {\n\n\t},\n\n\t_initEvents: function () {\n\t\t$sharePopup.on( 'click', Track._processShareClick );\n\t\t$shareEmail.on( 'click', Track._processShareClick );\n\t},\n\n\t_processShareClick: function() {\n\t\t// console.log('Track Share Click');\n\n\t\tvar $link = $( this );\n\t\tvar value = Track._setValue( $link );\n\t\tvar data = {\n\t\t\teventCategory: 'Share',\n\t\t\teventAction: $.trim( $link.text() ),\n\t\t\teventLabel: '',\n\t\t\teventValue: value\n\t\t};\n\n\t\tUtil.publishEvent( data );\n\t},\n\n\t_setValue: function( $link ) {\n\t\tvar value;\n\n\t\tif( typeof $link.data( selectors.dataValue ) != 'undefined' ) {\n\t\t\tvalue = $link.data( selectors.dataValue ) + 1;\n\t\t} else {\n\t\t\tvalue = 1;\n\t\t}\n\t\t$link.data( selectors.dataValue, value );\n\n\t\treturn value;\n\t}\n};\n\nexport { Track as Share };\n","/* app/ui/track/video */\n\nimport $ from 'jquery';\nimport { Util } from 'App/track/analytics/util';\n\nvar $player;\n\nvar selectors = {\n\tplayer: '.js-video-player',\n\tvideo: '.js-video'\n};\n\nvar Track = {\n\tinit: function() {\n\t\tTrack._initElements();\n\t\tTrack._initEvents();\n\t},\n\n\t_initElements: function() {\n\t\t$player = $(selectors.player);\n\t},\n\n\t_initEvents: function() {\n\t\t$player.on('click', selectors.video, Track._processClick);\n\t},\n\n\t_processClick: function() {\n\t\t//console.log('Track Video Click');\n\n\t\tvar data = {\n\t\t\teventCategory: 'Video',\n\t\t\teventAction: 'Click',\n\t\t\teventLabel: '',\n\t\t\teventValue: '1'\n\t\t};\n\n\t\tUtil.publishEvent(data);\n\t}\n};\n\nexport { Track as Video };\n","/* app/ui/track/external */\n\nimport $ from 'jquery';\nimport { Util } from 'App/track/analytics/util';\n\nvar $link;\nvar downloadFiles = new RegExp( /\\.(zip|pdf|doc?x|xls?x|ppt?x|txt)$/gi );\n\nvar selectors = {\n\tanchor: 'a'\n};\n\nvar Track = {\n\tinit: function () {\n\t\t// console.log( 'Track External Init' );\n\n\t\tTrack._initElements();\n\t\tTrack._initEvents();\n\t},\n\n\t_initElements: function () {\n\t\t$link = $( selectors.anchor );\n\t},\n\n\t_initEvents: function () {\n\t\t$link.on( 'click', Track._processLinkClick );\n\t},\n\n\t_processLinkClick: function() {\n\t\tvar href = this.href;\n\t\tvar trackIt = false;\n\t\tvar category = 'External';\n\t\tvar action;\n\t\tvar label;\n\n\t\tif ( Track._isDownloadLink( href ) ) {\n\t\t\tvar type = Track._getDownloadFileType( href );\n\t\t\ttrackIt = true;\n\t\t\taction = 'File';\n\t\t\tlabel = type + ' Link:' + this.getAttribute( 'href' ); // Only record what the attribute contains. this.href adds the hostname to relative paths\n\t\t}\n\n\t\tif ( Track._isExternalLink( href ) ) {\n\t\t\ttrackIt = true;\n\t\t\taction = 'Site';\n\t\t\tlabel = 'Link:' + href;\n\t\t}\n\n\t\tif ( Track._isMailtoLink( href ) ) {\n\t\t\ttrackIt = true;\n\t\t\taction = 'Email';\n\t\t\tlabel = 'Email:' + Track._getEmailAddress( href );\n\t\t}\n\n\t\tif ( Track._isTelephoneLink( href ) ) {\n\t\t\ttrackIt = true;\n\t\t\taction = 'Telephone';\n\t\t\tlabel = 'Telephone:' + Track._getEmailAddress( href );\n\t\t}\n\n\t\tif ( trackIt ) {\n\t\t\tvar data = {};\n\t\t\tdata.eventCategory = category;\n\t\t\tdata.eventAction = action;\n\t\t\tdata.eventLabel = label;\n\n\t\t\tUtil.publishEvent( data );\n\n\t\t\t/*if ( this.target !== '_blank' ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\twindow.setTimeout(\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\twindow.location = href;\n\t\t\t\t\t},\n\t\t\t\t\t100\n\t\t\t\t);\n\t\t\t}*/\n\t\t}\n\t},\n\n\t_getDownloadFileType: function ( url ) {\n\t\tvar extension = url.slice( url.search( downloadFiles ) );\n\t\textension = extension.split( '.' )[1];\n\t\textension = extension.split( '?' )[0];\n\t\textension = extension.toUpperCase();\n\n\t\treturn extension;\n\t},\n\n\t_getEmailAddress: function ( url ) {\n\t\treturn url.split( 'mailto:' )[1];\n\t},\n\n\t_isExternalLink: function ( url ) {\n\t\tvar link = document.createElement( 'a' );\n\t\tlink.href = url;\n\t\treturn link.hostname !== window.location.hostname;\n\t},\n\n\t_isMailtoLink: function ( url ) {\n\t\treturn url.search( 'mailto' ) === 0;\n\t},\n\n\t_isTelephoneLink: function ( url ) {\n\t\treturn url.search( 'tel' ) === 0;\n\t},\n\n\t_isDownloadLink: function ( url ) {\n\t\treturn url.search( downloadFiles ) !== -1;\n\t}\n};\n\nexport { Track as External };\n","/* app/ui/track/analytics/universal */\n/*global window, ga */\n/*\n\tGoogle Analytics Universal Reading material\n\thttps://developers.google.com/analytics/devguides/collection/analyticsjs/pages\n\thttps://developers.google.com/analytics/devguides/collection/analyticsjs/events\n\thttps://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference\n*/\n\nimport $ from 'jquery';\nimport { subscribe } from 'Util/pubsub';\n\nvar Universal = {\n\tinit: function () {\n\t\tUniversal._initSubscriptions();\n\t},\n\n\t_initSubscriptions: function () {\n\t\tsubscribe( '/track/analytics/event', Universal.sendEvent );\n\t\tsubscribe( '/track/analytics/pageview', Universal.sendPageView );\n\t},\n\n\tsendEvent: function ( eventObj ) {\n\t\t// eventObj object to\n\t\t// eventObj.eventCategory\tstring | REQUIRED\n\t\t// eventObj.eventAction\t\tstring | REQUIRED\n\t\t// eventObj.eventLabel\t\tstring | Optional\n\t\t// eventObj.eventValue\t\tinteger | Optional\n\t\teventObj.hitType = 'event';\n\n\t\tif ( eventObj.eventCategory && eventObj.eventAction ) {\n\t\t\tif ( Universal._isReady() ) {\n\t\t\t\t// console.info( 'Track Universal Event Sent', eventObj );\n\t\t\t\tga( 'send', eventObj );\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tUniversal.sendEvent( eventObj );\n\t\t\t\t\t},\n\t\t\t\t\t500\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t},\n\n\tsendPageView: function ( pageObj ) {\n\t\t// pageObj.location\t\tstring | Optional\n\t\t// pageObj.page\t\t\tstring | Optional\n\t\t// pageObj.title\t\tstring | Optional\n\n\t\tpageObj.hitType = 'pageview';\n\n\t\tif ( Universal._isReady() ) {\n\t\t\t// console.log( 'Universal Page View', pageObj );\n\t\t\tga( 'send', pageObj );\n\t\t} else {\n\t\t\twindow.setTimeout(\n\t\t\t\tfunction () {\n\t\t\t\t\tUniversal.sendPageView( pageObj );\n\t\t\t\t},\n\t\t\t\t500\n\t\t\t);\n\t\t}\n\t},\n\n\t_isReady: function () {\n\t\treturn typeof ga !== 'undefined';\n\t}\n};\n\nexport { Universal };\n","/* app/ui/track/util */\n\nimport $ from 'jquery';\nimport { Universal as Analytics } from 'App/track/analytics/universal';\n\nvar selectors = {};\n\nvar Track = {\n\tinit: function () {},\n\n\tpublishEvent: function ( data ) {\n\t\tAnalytics.sendEvent( data );\n\t},\n\n\tpublishPage: function ( data ) {\n\t\tAnalytics.sendPageView( data );\n\t}\n};\n\nexport { Track as Util };\n","/* app/ui/track/form */\n\nimport $ from 'jquery';\nimport { Util } from 'App/track/analytics/util';\nimport { subscribe } from 'Util/pubsub';\n\nvar eventData = {\n\teventCategory: 'Form',\n\teventAction: '',\n\teventLabel: '',\n\teventValue: ''\n};\n\nvar eventActions = {\n\tvalidationPassed: 'Validation Passed (Clientside)',\n\tvalidationFailed: 'Validation Failed (Clientside)'\n};\n\nvar selectors = {\n\tdataFormAttempts: 'FormAttempts'\n};\n\nvar Track = {\n\tinit: function () {\n\t\tTrack._initSubscriptions();\n\t},\n\n\n\t_initSubscriptions: function () {\n\t\tsubscribe('/form/validate/clientside/failed', Track._processValidateFailed);\n\t\tsubscribe('/form/validate/clientside/passed', Track._processValidatePassed);\n\t},\n\n\t_processValidatePassed: function( data ) {\n\t\tvar $form = data.form;\n\n\t\teventData.eventAction = eventActions.validationPassed;\n\t\teventData.eventValue = Track._getAttempts( $form );\n\t\tTrack._resetAttempts( $form );\n\t\tTrack._processEvent();\n\t},\n\n\t_processValidateFailed: function( data ) {\n\t\tvar $errorFields = data.errorFields;\n\t\tvar $form = data.form;\n\n\t\teventData.eventAction = eventActions.validationFailed;\n\t\teventData.eventLabel = 'Errors:[' + Track._getInputLabels( $errorFields ) + ']';\n\t\teventData.eventValue = Track._getAttempts( $form );\n\t\tTrack._processEvent();\n\t},\n\n\t_processEvent: function() {\n\t\tUtil.publishEvent( eventData );\n\t},\n\n\t_getInputLabels: function( $fields ) {\n\t\tvar labelArray = [];\n\t\tfor (var i = 0; i < $fields.length; i++) {\n\t\t\tvar $field = $fields.eq(i);\n\t\t\tvar labelName = $.trim( $field.find('label').eq( 0 ).text() );\n\t\t\tlabelArray.push(labelName);\n\t\t}\n\t\treturn labelArray.toString();\n\t},\n\n\t_resetAttempts: function( $form ) {\n\t\t$form.data( selectors.dataFormAttempts, 0 );\n\t},\n\n\t_getAttempts: function( $form ) {\n\t\tvar attempts;\n\t\tvar eventValue;\n\n\t\tif( $form.data( selectors.dataFormAttempts ) === undefined) {\n\t\t\tTrack._resetAttempts( $form );\n\t\t}\n\n\t\tattempts = $form.data( selectors.dataFormAttempts );\n\t\teventLabel = attempts + 1;\n\t\t$form.data( selectors.dataFormAttempts, eventLabel );\n\n\t\treturn eventLabel;\n\t}\n};\n\nexport { Track as Form };\n","/* app/ui/track/advanced */\n\nimport { Form } from 'App/track/form';\nimport { Link } from 'App/track/link';\nimport { Scroll } from 'App/track/scroll';\nimport { Share } from 'App/track/share';\nimport { Video } from 'App/track/video';\n\nvar linkSettings = {\n\tcomponents: {\n\t\t// [name]:[selector]\n\t\t// e.g. 'menu': '.js-menu'\n\t\t'header': '.js-header',\n\t\t'footer': '.js-footer',\n\t\t'menu': '.js-menu',\n\t\t'test': '.js-test'\n\t}\n};\n\nvar Track = {\n\tinit: function() {\n\t\tForm.init();\n\t\tLink.init(linkSettings);\n\t\tScroll.init();\n\t\tShare.init();\n\t\tVideo.init();\n\t}\n};\n\nexport { Track as Component };\n","/* app/ui/track/preload */\n\nimport $ from 'jquery';\nimport { Util } from 'App/track/analytics/util';\n\nvar preloadEvents = window._trackPreloadEvents;\n\nvar selectors = {\n\n};\n\nvar Track = {\n\tinit: function () {\n\t\t// console.log( 'Track Preload Init' );\n\n\t\tvar preloadEvents = window._trackPreloadEvents;\n\n\t\tif ( typeof preloadEvents != 'undefined' && preloadEvents.length ) {\n\t\t\tfor ( var i = 0; i < preloadEvents.length; i++ ) {\n\t\t\t\tvar data = preloadEvents[i];\n\n\t\t\t\tUtil.publishEvent( data );\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport { Track as Preload };\n","/* app/ui/track */\n\nimport $ from 'jquery';\nimport { Universal as Analytics } from 'App/track/analytics/universal';\nimport { Component } from 'App/track/component';\nimport { External } from 'App/track/external';\nimport { Preload } from 'App/track/preload';\n\nvar TrackLoad = {\n\tinit: function () {\n\t\t// Initiate Analytics\n\t\tAnalytics.init();\n\t\t//AnalyticsClassic.init();\n\n\t\t// Initiate Global Page Tracking\n\t\tPreload.init();\n\t\tExternal.init();\n\n\t\t// Initiate Component Tracking\n\t\tComponent.init();\n\t}\n};\n\nexport { TrackLoad };\n","/*! appendAround markup pattern. [c]2012, @scottjehl, Filament Group, Inc. MIT/GPL \nhow-to:\n\t1. Insert potential element containers throughout the DOM\n\t2. give each container a data-set attribute with a value that matches all other containers' values\n\t3. Place your appendAround content in one of the potential containers\n\t4. Call appendAround() on that element when the DOM is ready\n*/\n\nimport jQuery from 'jquery';\n\n(function( $ ){\n\t$.fn.appendAround = function(){\n\t  return this.each(function(){\n      \n\t    var $self = $( this ),\n\t        att = \"data-set\",\n\t        $parent = $self.parent(), \n\t        parent = $parent[ 0 ],\n\t        attval = $parent.attr( att ),\n\t        $set = $( \"[\"+ att +\"='\" + attval + \"']\" );\n\n\t\tfunction isHidden( elem ){\n\t\t\treturn $(elem).css( \"display\" ) === \"none\";\n\t\t}\n\n\t\tfunction appendToVisibleContainer(){\n\t\t\tif( isHidden( parent ) ){\n\t\t\t\tvar found = 0;\n\t\t\t\t$set.each(function(){\n\t\t\t\t\tif( !isHidden( this ) && !found ){\n\t\t\t\t\t\t$self.appendTo( this );\n\t\t\t\t\t\tfound++;\n\t\t\t\t\t\tparent = this;\n\t\t\t\t\t}\n\t\t\t\t});\n\t      \t}\n\t    }\n      \n\t    appendToVisibleContainer();\n      \n\t    $(window).bind( \"resize\", appendToVisibleContainer );\n      \n\t  });\n\t};\n}( jQuery ));\n","import jQuery from 'jquery';\n\n/*! Magnific Popup - v0.9.9 - 2013-12-27\n* http://dimsemenov.com/plugins/magnific-popup/\n* Copyright (c) 2013 Dmitry Semenov; */\n; (function ($) {\n\n\t/*>>core*/\n\t/**\n\t * \n\t * Magnific Popup Core JS file\n\t * \n\t */\n\n\n\t/**\n\t * Private static constants\n\t */\n\tvar CLOSE_EVENT = 'Close',\n\t\tBEFORE_CLOSE_EVENT = 'BeforeClose',\n\t\tAFTER_CLOSE_EVENT = 'AfterClose',\n\t\tBEFORE_APPEND_EVENT = 'BeforeAppend',\n\t\tMARKUP_PARSE_EVENT = 'MarkupParse',\n\t\tOPEN_EVENT = 'Open',\n\t\tCHANGE_EVENT = 'Change',\n\t\tNS = 'mfp',\n\t\tEVENT_NS = '.' + NS,\n\t\tREADY_CLASS = 'mfp-ready',\n\t\tREMOVING_CLASS = 'mfp-removing',\n\t\tPREVENT_CLOSE_CLASS = 'mfp-prevent-close';\n\n\n\t/**\n\t * Private vars \n\t */\n\tvar mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this'\n\t\tMagnificPopup = function () { },\n\t\t_isJQ = !!(window.jQuery),\n\t\t_prevStatus,\n\t\t_window = $(window),\n\t\t_body,\n\t\t_document,\n\t\t_prevContentType,\n\t\t_wrapClasses,\n\t\t_currPopupType;\n\n\n\t/**\n\t * Private functions\n\t */\n\tvar _mfpOn = function (name, f) {\n\t\tmfp.ev.on(NS + name + EVENT_NS, f);\n\t},\n\t\t_getEl = function (className, appendTo, html, raw) {\n\t\t\tvar el = document.createElement('div');\n\t\t\tel.className = 'mfp-' + className;\n\t\t\tif (html) {\n\t\t\t\tel.innerHTML = html;\n\t\t\t}\n\t\t\tif (!raw) {\n\t\t\t\tel = $(el);\n\t\t\t\tif (appendTo) {\n\t\t\t\t\tel.appendTo(appendTo);\n\t\t\t\t}\n\t\t\t} else if (appendTo) {\n\t\t\t\tappendTo.appendChild(el);\n\t\t\t}\n\t\t\treturn el;\n\t\t},\n\t\t_mfpTrigger = function (e, data) {\n\t\t\tmfp.ev.triggerHandler(NS + e, data);\n\n\t\t\tif (mfp.st.callbacks) {\n\t\t\t\t// converts \"mfpEventName\" to \"eventName\" callback and triggers it if it's present\n\t\t\t\te = e.charAt(0).toLowerCase() + e.slice(1);\n\t\t\t\tif (mfp.st.callbacks[e]) {\n\t\t\t\t\tmfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_getCloseBtn = function (type) {\n\t\t\tif (type !== _currPopupType || !mfp.currTemplate.closeBtn) {\n\t\t\t\tmfp.currTemplate.closeBtn = $(mfp.st.closeMarkup.replace('%title%', mfp.st.tClose));\n\t\t\t\t_currPopupType = type;\n\t\t\t}\n\t\t\treturn mfp.currTemplate.closeBtn;\n\t\t},\n\t\t// Initialize Magnific Popup only when called at least once\n\t\t_checkInstance = function () {\n\t\t\tif (!$.magnificPopup.instance) {\n\t\t\t\tmfp = new MagnificPopup();\n\t\t\t\tmfp.init();\n\t\t\t\t$.magnificPopup.instance = mfp;\n\t\t\t}\n\t\t},\n\t\t// CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr\n\t\tsupportsTransitions = function () {\n\t\t\tvar s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist\n\t\t\t\tv = ['ms', 'O', 'Moz', 'Webkit']; // 'v' for vendor\n\n\t\t\tif (s['transition'] !== undefined) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\twhile (v.length) {\n\t\t\t\tif (v.pop() + 'Transition' in s) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t};\n\n\n\n\t/**\n\t * Public functions\n\t */\n\tMagnificPopup.prototype = {\n\n\t\tconstructor: MagnificPopup,\n\n\t\t/**\n\t\t * Initializes Magnific Popup plugin. \n\t\t * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed\n\t\t */\n\t\tinit: function () {\n\t\t\tvar appVersion = navigator.appVersion;\n\t\t\tmfp.isIE7 = appVersion.indexOf(\"MSIE 7.\") !== -1;\n\t\t\tmfp.isIE8 = appVersion.indexOf(\"MSIE 8.\") !== -1;\n\t\t\tmfp.isLowIE = mfp.isIE7 || mfp.isIE8;\n\t\t\tmfp.isAndroid = (/android/gi).test(appVersion);\n\t\t\tmfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion);\n\t\t\tmfp.supportsTransition = supportsTransitions();\n\n\t\t\t// We disable fixed positioned lightbox on devices that don't handle it nicely.\n\t\t\t// If you know a better way of detecting this - let me know.\n\t\t\tmfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent));\n\t\t\t_document = $(document);\n\n\t\t\tmfp.popupsCache = {};\n\t\t},\n\n\t\t/**\n\t\t * Opens popup\n\t\t * @param  data [description]\n\t\t */\n\t\topen: function (data) {\n\n\t\t\tif (!_body) {\n\t\t\t\t_body = $(document.body);\n\t\t\t}\n\n\t\t\tvar i;\n\n\t\t\tif (data.isObj === false) {\n\t\t\t\t// convert jQuery collection to array to avoid conflicts later\n\t\t\t\tmfp.items = data.items.toArray();\n\n\t\t\t\tmfp.index = 0;\n\t\t\t\tvar items = data.items,\n\t\t\t\t\titem;\n\t\t\t\tfor (i = 0; i < items.length; i++) {\n\t\t\t\t\titem = items[i];\n\t\t\t\t\tif (item.parsed) {\n\t\t\t\t\t\titem = item.el[0];\n\t\t\t\t\t}\n\t\t\t\t\tif (item === data.el[0]) {\n\t\t\t\t\t\tmfp.index = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tmfp.items = $.isArray(data.items) ? data.items : [data.items];\n\t\t\t\tmfp.index = data.index || 0;\n\t\t\t}\n\n\t\t\t// if popup is already opened - we just update the content\n\t\t\tif (mfp.isOpen) {\n\t\t\t\tmfp.updateItemHTML();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmfp.types = [];\n\t\t\t_wrapClasses = '';\n\t\t\tif (data.mainEl && data.mainEl.length) {\n\t\t\t\tmfp.ev = data.mainEl.eq(0);\n\t\t\t} else {\n\t\t\t\tmfp.ev = _document;\n\t\t\t}\n\n\t\t\tif (data.key) {\n\t\t\t\tif (!mfp.popupsCache[data.key]) {\n\t\t\t\t\tmfp.popupsCache[data.key] = {};\n\t\t\t\t}\n\t\t\t\tmfp.currTemplate = mfp.popupsCache[data.key];\n\t\t\t} else {\n\t\t\t\tmfp.currTemplate = {};\n\t\t\t}\n\n\n\n\t\t\tmfp.st = $.extend(true, {}, $.magnificPopup.defaults, data);\n\t\t\tmfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos;\n\n\t\t\tif (mfp.st.modal) {\n\t\t\t\tmfp.st.closeOnContentClick = false;\n\t\t\t\tmfp.st.closeOnBgClick = false;\n\t\t\t\tmfp.st.showCloseBtn = false;\n\t\t\t\tmfp.st.enableEscapeKey = false;\n\t\t\t}\n\n\n\t\t\t// Building markup\n\t\t\t// main containers are created only once\n\t\t\tif (!mfp.bgOverlay) {\n\n\t\t\t\t// Dark overlay\n\t\t\t\tmfp.bgOverlay = _getEl('bg').on('click' + EVENT_NS, function () {\n\t\t\t\t\tmfp.close();\n\t\t\t\t});\n\n\t\t\t\tmfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click' + EVENT_NS, function (e) {\n\t\t\t\t\tif (mfp._checkIfClose(e.target)) {\n\t\t\t\t\t\tmfp.close();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tmfp.container = _getEl('container', mfp.wrap);\n\t\t\t}\n\n\t\t\tmfp.contentContainer = _getEl('content');\n\t\t\tif (mfp.st.preloader) {\n\t\t\t\tmfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading);\n\t\t\t}\n\n\n\t\t\t// Initializing modules\n\t\t\tvar modules = $.magnificPopup.modules;\n\t\t\tfor (i = 0; i < modules.length; i++) {\n\t\t\t\tvar n = modules[i];\n\t\t\t\tn = n.charAt(0).toUpperCase() + n.slice(1);\n\t\t\t\tmfp['init' + n].call(mfp);\n\t\t\t}\n\t\t\t_mfpTrigger('BeforeOpen');\n\n\n\t\t\tif (mfp.st.showCloseBtn) {\n\t\t\t\t// Close button\n\t\t\t\tif (!mfp.st.closeBtnInside) {\n\t\t\t\t\tmfp.wrap.append(_getCloseBtn());\n\t\t\t\t} else {\n\t\t\t\t\t_mfpOn(MARKUP_PARSE_EVENT, function (e, template, values, item) {\n\t\t\t\t\t\tvalues.close_replaceWith = _getCloseBtn(item.type);\n\t\t\t\t\t});\n\t\t\t\t\t_wrapClasses += ' mfp-close-btn-in';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (mfp.st.alignTop) {\n\t\t\t\t_wrapClasses += ' mfp-align-top';\n\t\t\t}\n\n\n\n\t\t\tif (mfp.fixedContentPos) {\n\t\t\t\tmfp.wrap.css({\n\t\t\t\t\toverflow: mfp.st.overflowY,\n\t\t\t\t\toverflowX: 'hidden',\n\t\t\t\t\toverflowY: mfp.st.overflowY\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tmfp.wrap.css({\n\t\t\t\t\ttop: _window.scrollTop(),\n\t\t\t\t\tposition: 'absolute'\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos)) {\n\t\t\t\tmfp.bgOverlay.css({\n\t\t\t\t\theight: _document.height(),\n\t\t\t\t\tposition: 'absolute'\n\t\t\t\t});\n\t\t\t}\n\n\n\n\t\t\tif (mfp.st.enableEscapeKey) {\n\t\t\t\t// Close on ESC key\n\t\t\t\t_document.on('keyup' + EVENT_NS, function (e) {\n\t\t\t\t\tif (e.keyCode === 27) {\n\t\t\t\t\t\tmfp.close();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t_window.on('resize' + EVENT_NS, function () {\n\t\t\t\tmfp.updateSize();\n\t\t\t});\n\n\n\t\t\tif (!mfp.st.closeOnContentClick) {\n\t\t\t\t_wrapClasses += ' mfp-auto-cursor';\n\t\t\t}\n\n\t\t\tif (_wrapClasses)\n\t\t\t\tmfp.wrap.addClass(_wrapClasses);\n\n\n\t\t\t// this triggers recalculation of layout, so we get it once to not to trigger twice\n\t\t\tvar windowHeight = mfp.wH = _window.height();\n\n\n\t\t\tvar windowStyles = {};\n\n\t\t\tif (mfp.fixedContentPos) {\n\t\t\t\tif (mfp._hasScrollBar(windowHeight)) {\n\t\t\t\t\tvar s = mfp._getScrollbarSize();\n\t\t\t\t\tif (s) {\n\t\t\t\t\t\twindowStyles.marginRight = s;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (mfp.fixedContentPos) {\n\t\t\t\tif (!mfp.isIE7) {\n\t\t\t\t\twindowStyles.overflow = 'hidden';\n\t\t\t\t} else {\n\t\t\t\t\t// ie7 double-scroll bug\n\t\t\t\t\t$('body, html').css('overflow', 'hidden');\n\t\t\t\t}\n\t\t\t}\n\n\n\n\t\t\tvar classesToadd = mfp.st.mainClass;\n\t\t\tif (mfp.isIE7) {\n\t\t\t\tclassesToadd += ' mfp-ie7';\n\t\t\t}\n\t\t\tif (classesToadd) {\n\t\t\t\tmfp._addClassToMFP(classesToadd);\n\t\t\t}\n\n\t\t\t// add content\n\t\t\tmfp.updateItemHTML();\n\n\t\t\t_mfpTrigger('BuildControls');\n\n\t\t\t// remove scrollbar, add margin e.t.c\n\t\t\t$('html').css(windowStyles);\n\n\t\t\t// add everything to DOM\n\t\t\tmfp.bgOverlay.add(mfp.wrap).prependTo(mfp.st.prependTo || _body);\n\n\t\t\t// Save last focused element\n\t\t\tmfp._lastFocusedEl = document.activeElement;\n\n\t\t\t// Wait for next cycle to allow CSS transition\n\t\t\tsetTimeout(function () {\n\n\t\t\t\tif (mfp.content) {\n\t\t\t\t\tmfp._addClassToMFP(READY_CLASS);\n\t\t\t\t\tmfp._setFocus();\n\t\t\t\t} else {\n\t\t\t\t\t// if content is not defined (not loaded e.t.c) we add class only for BG\n\t\t\t\t\tmfp.bgOverlay.addClass(READY_CLASS);\n\t\t\t\t}\n\n\t\t\t\t// Trap the focus in popup\n\t\t\t\t_document.on('focusin' + EVENT_NS, mfp._onFocusIn);\n\n\t\t\t}, 16);\n\n\t\t\tmfp.isOpen = true;\n\t\t\tmfp.updateSize(windowHeight);\n\t\t\t_mfpTrigger(OPEN_EVENT);\n\n\t\t\treturn data;\n\t\t},\n\n\t\t/**\n\t\t * Closes the popup\n\t\t */\n\t\tclose: function () {\n\t\t\tif (!mfp.isOpen) return;\n\t\t\t_mfpTrigger(BEFORE_CLOSE_EVENT);\n\n\t\t\tmfp.isOpen = false;\n\t\t\t// for CSS3 animation\n\t\t\tif (mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition) {\n\t\t\t\tmfp._addClassToMFP(REMOVING_CLASS);\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tmfp._close();\n\t\t\t\t}, mfp.st.removalDelay);\n\t\t\t} else {\n\t\t\t\tmfp._close();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Helper for close() function\n\t\t */\n\t\t_close: function () {\n\t\t\t_mfpTrigger(CLOSE_EVENT);\n\n\t\t\tvar classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' ';\n\n\t\t\tmfp.bgOverlay.detach();\n\t\t\tmfp.wrap.detach();\n\t\t\tmfp.container.empty();\n\n\t\t\tif (mfp.st.mainClass) {\n\t\t\t\tclassesToRemove += mfp.st.mainClass + ' ';\n\t\t\t}\n\n\t\t\tmfp._removeClassFromMFP(classesToRemove);\n\n\t\t\tif (mfp.fixedContentPos) {\n\t\t\t\tvar windowStyles = { marginRight: '' };\n\t\t\t\tif (mfp.isIE7) {\n\t\t\t\t\t$('body, html').css('overflow', '');\n\t\t\t\t} else {\n\t\t\t\t\twindowStyles.overflow = '';\n\t\t\t\t}\n\t\t\t\t$('html').css(windowStyles);\n\t\t\t}\n\n\t\t\t_document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS);\n\t\t\tmfp.ev.off(EVENT_NS);\n\n\t\t\t// clean up DOM elements that aren't removed\n\t\t\tmfp.wrap.attr('class', 'mfp-wrap').removeAttr('style');\n\t\t\tmfp.bgOverlay.attr('class', 'mfp-bg');\n\t\t\tmfp.container.attr('class', 'mfp-container');\n\n\t\t\t// remove close button from target element\n\t\t\tif (mfp.st.showCloseBtn &&\n\t\t\t\t(!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) {\n\t\t\t\tif (mfp.currTemplate.closeBtn)\n\t\t\t\t\tmfp.currTemplate.closeBtn.detach();\n\t\t\t}\n\n\n\t\t\tif (mfp._lastFocusedEl) {\n\t\t\t\t$(mfp._lastFocusedEl).focus(); // put tab focus back\n\t\t\t}\n\t\t\tmfp.currItem = null;\n\t\t\tmfp.content = null;\n\t\t\tmfp.currTemplate = null;\n\t\t\tmfp.prevHeight = 0;\n\n\t\t\t_mfpTrigger(AFTER_CLOSE_EVENT);\n\t\t},\n\n\t\tupdateSize: function (winHeight) {\n\n\t\t\tif (mfp.isIOS) {\n\t\t\t\t// fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2\n\t\t\t\tvar zoomLevel = document.documentElement.clientWidth / window.innerWidth;\n\t\t\t\tvar height = window.innerHeight * zoomLevel;\n\t\t\t\tmfp.wrap.css('height', height);\n\t\t\t\tmfp.wH = height;\n\t\t\t} else {\n\t\t\t\tmfp.wH = winHeight || _window.height();\n\t\t\t}\n\t\t\t// Fixes #84: popup incorrectly positioned with position:relative on body\n\t\t\tif (!mfp.fixedContentPos) {\n\t\t\t\tmfp.wrap.css('height', mfp.wH);\n\t\t\t}\n\n\t\t\t_mfpTrigger('Resize');\n\n\t\t},\n\n\t\t/**\n\t\t * Set content of popup based on current index\n\t\t */\n\t\tupdateItemHTML: function () {\n\t\t\tvar item = mfp.items[mfp.index];\n\n\t\t\t// Detach and perform modifications\n\t\t\tmfp.contentContainer.detach();\n\n\t\t\tif (mfp.content)\n\t\t\t\tmfp.content.detach();\n\n\t\t\tif (!item.parsed) {\n\t\t\t\titem = mfp.parseEl(mfp.index);\n\t\t\t}\n\n\t\t\tvar type = item.type;\n\n\t\t\t_mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]);\n\t\t\t// BeforeChange event works like so:\n\t\t\t// _mfpOn('BeforeChange', function(e, prevType, newType) { });\n\n\t\t\tmfp.currItem = item;\n\n\n\n\n\n\t\t\tif (!mfp.currTemplate[type]) {\n\t\t\t\tvar markup = mfp.st[type] ? mfp.st[type].markup : false;\n\n\t\t\t\t// allows to modify markup\n\t\t\t\t_mfpTrigger('FirstMarkupParse', markup);\n\n\t\t\t\tif (markup) {\n\t\t\t\t\tmfp.currTemplate[type] = $(markup);\n\t\t\t\t} else {\n\t\t\t\t\t// if there is no markup found we just define that template is parsed\n\t\t\t\t\tmfp.currTemplate[type] = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (_prevContentType && _prevContentType !== item.type) {\n\t\t\t\tmfp.container.removeClass('mfp-' + _prevContentType + '-holder');\n\t\t\t}\n\n\t\t\tvar newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]);\n\t\t\tmfp.appendContent(newContent, type);\n\n\t\t\titem.preloaded = true;\n\n\t\t\t_mfpTrigger(CHANGE_EVENT, item);\n\t\t\t_prevContentType = item.type;\n\n\t\t\t// Append container back after its content changed\n\t\t\tmfp.container.prepend(mfp.contentContainer);\n\n\t\t\t_mfpTrigger('AfterChange');\n\t\t},\n\n\n\t\t/**\n\t\t * Set HTML content of popup\n\t\t */\n\t\tappendContent: function (newContent, type) {\n\t\t\tmfp.content = newContent;\n\n\t\t\tif (newContent) {\n\t\t\t\tif (mfp.st.showCloseBtn && mfp.st.closeBtnInside &&\n\t\t\t\t\tmfp.currTemplate[type] === true) {\n\t\t\t\t\t// if there is no markup, we just append close button element inside\n\t\t\t\t\tif (!mfp.content.find('.mfp-close').length) {\n\t\t\t\t\t\tmfp.content.append(_getCloseBtn());\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmfp.content = newContent;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tmfp.content = '';\n\t\t\t}\n\n\t\t\t_mfpTrigger(BEFORE_APPEND_EVENT);\n\t\t\tmfp.container.addClass('mfp-' + type + '-holder');\n\n\t\t\tmfp.contentContainer.append(mfp.content);\n\t\t},\n\n\n\n\n\t\t/**\n\t\t * Creates Magnific Popup data object based on given data\n\t\t * @param  {int} index Index of item to parse\n\t\t */\n\t\tparseEl: function (index) {\n\t\t\tvar item = mfp.items[index],\n\t\t\t\ttype;\n\n\t\t\tif (item.tagName) {\n\t\t\t\titem = { el: $(item) };\n\t\t\t} else {\n\t\t\t\ttype = item.type;\n\t\t\t\titem = { data: item, src: item.src };\n\t\t\t}\n\n\t\t\tif (item.el) {\n\t\t\t\tvar types = mfp.types;\n\n\t\t\t\t// check for 'mfp-TYPE' class\n\t\t\t\tfor (var i = 0; i < types.length; i++) {\n\t\t\t\t\tif (item.el.hasClass('mfp-' + types[i])) {\n\t\t\t\t\t\ttype = types[i];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\titem.src = item.el.attr('data-mfp-src');\n\t\t\t\tif (!item.src) {\n\t\t\t\t\titem.src = item.el.attr('href');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\titem.type = type || mfp.st.type || 'inline';\n\t\t\titem.index = index;\n\t\t\titem.parsed = true;\n\t\t\tmfp.items[index] = item;\n\t\t\t_mfpTrigger('ElementParse', item);\n\n\t\t\treturn mfp.items[index];\n\t\t},\n\n\n\t\t/**\n\t\t * Initializes single popup or a group of popups\n\t\t */\n\t\taddGroup: function (el, options) {\n\t\t\tvar eHandler = function (e) {\n\t\t\t\te.mfpEl = this;\n\t\t\t\tmfp._openClick(e, el, options);\n\t\t\t};\n\n\t\t\tif (!options) {\n\t\t\t\toptions = {};\n\t\t\t}\n\n\t\t\tvar eName = 'click.magnificPopup';\n\t\t\toptions.mainEl = el;\n\n\t\t\tif (options.items) {\n\t\t\t\toptions.isObj = true;\n\t\t\t\tel.off(eName).on(eName, eHandler);\n\t\t\t} else {\n\t\t\t\toptions.isObj = false;\n\t\t\t\tif (options.delegate) {\n\t\t\t\t\tel.off(eName).on(eName, options.delegate, eHandler);\n\t\t\t\t} else {\n\t\t\t\t\toptions.items = el;\n\t\t\t\t\tel.off(eName).on(eName, eHandler);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_openClick: function (e, el, options) {\n\t\t\tvar midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick;\n\n\n\t\t\tif (!midClick && (e.which === 2 || e.ctrlKey || e.metaKey)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn;\n\n\t\t\tif (disableOn) {\n\t\t\t\tif ($.isFunction(disableOn)) {\n\t\t\t\t\tif (!disableOn.call(mfp)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t} else { // else it's number\n\t\t\t\t\tif (_window.width() < disableOn) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (e.type) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\t// This will prevent popup from closing if element is inside and popup is already opened\n\t\t\t\tif (mfp.isOpen) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\toptions.el = $(e.mfpEl);\n\t\t\tif (options.delegate) {\n\t\t\t\toptions.items = el.find(options.delegate);\n\t\t\t}\n\t\t\tmfp.open(options);\n\t\t},\n\n\n\t\t/**\n\t\t * Updates text on preloader\n\t\t */\n\t\tupdateStatus: function (status, text) {\n\n\t\t\tif (mfp.preloader) {\n\t\t\t\tif (_prevStatus !== status) {\n\t\t\t\t\tmfp.container.removeClass('mfp-s-' + _prevStatus);\n\t\t\t\t}\n\n\t\t\t\tif (!text && status === 'loading') {\n\t\t\t\t\ttext = mfp.st.tLoading;\n\t\t\t\t}\n\n\t\t\t\tvar data = {\n\t\t\t\t\tstatus: status,\n\t\t\t\t\ttext: text\n\t\t\t\t};\n\t\t\t\t// allows to modify status\n\t\t\t\t_mfpTrigger('UpdateStatus', data);\n\n\t\t\t\tstatus = data.status;\n\t\t\t\ttext = data.text;\n\n\t\t\t\tmfp.preloader.html(text);\n\n\t\t\t\tmfp.preloader.find('a').on('click', function (e) {\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t});\n\n\t\t\t\tmfp.container.addClass('mfp-s-' + status);\n\t\t\t\t_prevStatus = status;\n\t\t\t}\n\t\t},\n\n\n\t\t/*\n\t\t\t\"Private\" helpers that aren't private at all\n\t\t */\n\t\t// Check to close popup or not\n\t\t// \"target\" is an element that was clicked\n\t\t_checkIfClose: function (target) {\n\t\t\tif ($(target).hasClass(PREVENT_CLOSE_CLASS)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar closeOnContent = mfp.st.closeOnContentClick;\n\t\t\tvar closeOnBg = mfp.st.closeOnBgClick;\n\n\t\t\tif (closeOnContent && closeOnBg) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\n\t\t\t\t// We close the popup if click is on close button or on preloader. Or if there is no content.\n\t\t\t\tif (!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0])) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// if click is outside the content\n\t\t\t\tif ((target !== mfp.content[0] && !$.contains(mfp.content[0], target))) {\n\t\t\t\t\tif (closeOnBg) {\n\t\t\t\t\t\t// last check, if the clicked element is in DOM, (in case it's removed onclick)\n\t\t\t\t\t\tif ($.contains(document, target)) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (closeOnContent) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t_addClassToMFP: function (cName) {\n\t\t\tmfp.bgOverlay.addClass(cName);\n\t\t\tmfp.wrap.addClass(cName);\n\t\t},\n\t\t_removeClassFromMFP: function (cName) {\n\t\t\tthis.bgOverlay.removeClass(cName);\n\t\t\tmfp.wrap.removeClass(cName);\n\t\t},\n\t\t_hasScrollBar: function (winHeight) {\n\t\t\treturn ((mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()));\n\t\t},\n\t\t_setFocus: function () {\n\t\t\t(mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus();\n\t\t},\n\t\t_onFocusIn: function (e) {\n\t\t\tif (e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target)) {\n\t\t\t\tmfp._setFocus();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\t_parseMarkup: function (template, values, item) {\n\t\t\tvar arr;\n\t\t\tif (item.data) {\n\t\t\t\tvalues = $.extend(item.data, values);\n\t\t\t}\n\t\t\t_mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item]);\n\n\t\t\t$.each(values, function (key, value) {\n\t\t\t\tif (value === undefined || value === false) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tarr = key.split('_');\n\t\t\t\tif (arr.length > 1) {\n\t\t\t\t\tvar el = template.find(EVENT_NS + '-' + arr[0]);\n\n\t\t\t\t\tif (el.length > 0) {\n\t\t\t\t\t\tvar attr = arr[1];\n\t\t\t\t\t\tif (attr === 'replaceWith') {\n\t\t\t\t\t\t\tif (el[0] !== value[0]) {\n\t\t\t\t\t\t\t\tel.replaceWith(value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (attr === 'img') {\n\t\t\t\t\t\t\tif (el.is('img')) {\n\t\t\t\t\t\t\t\tel.attr('src', value);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tel.replaceWith('<img src=\"' + value + '\" class=\"' + el.attr('class') + '\" />');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tel.attr(arr[1], value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\ttemplate.find(EVENT_NS + '-' + key).html(value);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t_getScrollbarSize: function () {\n\t\t\t// thx David\n\t\t\tif (mfp.scrollbarSize === undefined) {\n\t\t\t\tvar scrollDiv = document.createElement(\"div\");\n\t\t\t\tscrollDiv.id = \"mfp-sbm\";\n\t\t\t\tscrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';\n\t\t\t\tdocument.body.appendChild(scrollDiv);\n\t\t\t\tmfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n\t\t\t\tdocument.body.removeChild(scrollDiv);\n\t\t\t}\n\t\t\treturn mfp.scrollbarSize;\n\t\t}\n\n\t}; /* MagnificPopup core prototype end */\n\n\n\n\n\t/**\n\t * Public static functions\n\t */\n\t$.magnificPopup = {\n\t\tinstance: null,\n\t\tproto: MagnificPopup.prototype,\n\t\tmodules: [],\n\n\t\topen: function (options, index) {\n\t\t\t_checkInstance();\n\n\t\t\tif (!options) {\n\t\t\t\toptions = {};\n\t\t\t} else {\n\t\t\t\toptions = $.extend(true, {}, options);\n\t\t\t}\n\n\n\t\t\toptions.isObj = true;\n\t\t\toptions.index = index || 0;\n\t\t\treturn this.instance.open(options);\n\t\t},\n\n\t\tclose: function () {\n\t\t\treturn $.magnificPopup.instance && $.magnificPopup.instance.close();\n\t\t},\n\n\t\tregisterModule: function (name, module) {\n\t\t\tif (module.options) {\n\t\t\t\t$.magnificPopup.defaults[name] = module.options;\n\t\t\t}\n\t\t\t$.extend(this.proto, module.proto);\n\t\t\tthis.modules.push(name);\n\t\t},\n\n\t\tdefaults: {\n\n\t\t\t// Info about options is in docs:\n\t\t\t// http://dimsemenov.com/plugins/magnific-popup/documentation.html#options\n\n\t\t\tdisableOn: 0,\n\n\t\t\tkey: null,\n\n\t\t\tmidClick: false,\n\n\t\t\tmainClass: '',\n\n\t\t\tpreloader: true,\n\n\t\t\tfocus: '', // CSS selector of input to focus after popup is opened\n\n\t\t\tcloseOnContentClick: false,\n\n\t\t\tcloseOnBgClick: true,\n\n\t\t\tcloseBtnInside: true,\n\n\t\t\tshowCloseBtn: true,\n\n\t\t\tenableEscapeKey: true,\n\n\t\t\tmodal: false,\n\n\t\t\talignTop: false,\n\n\t\t\tremovalDelay: 0,\n\n\t\t\tprependTo: null,\n\n\t\t\tfixedContentPos: 'auto',\n\n\t\t\tfixedBgPos: 'auto',\n\n\t\t\toverflowY: 'auto',\n\n\t\t\tcloseMarkup: '<button title=\"%title%\" type=\"button\" class=\"mfp-close o-btn--reset iconf-close\"></button>',\n\n\t\t\ttClose: 'Close (Esc)',\n\n\t\t\ttLoading: 'Loading...'\n\n\t\t}\n\t};\n\n\n\n\t$.fn.magnificPopup = function (options) {\n\t\t_checkInstance();\n\n\t\tvar jqEl = $(this);\n\n\t\t// We call some API method of first param is a string\n\t\tif (typeof options === \"string\") {\n\n\t\t\tif (options === 'open') {\n\t\t\t\tvar items,\n\t\t\t\t\titemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup,\n\t\t\t\t\tindex = parseInt(arguments[1], 10) || 0;\n\n\t\t\t\tif (itemOpts.items) {\n\t\t\t\t\titems = itemOpts.items[index];\n\t\t\t\t} else {\n\t\t\t\t\titems = jqEl;\n\t\t\t\t\tif (itemOpts.delegate) {\n\t\t\t\t\t\titems = items.find(itemOpts.delegate);\n\t\t\t\t\t}\n\t\t\t\t\titems = items.eq(index);\n\t\t\t\t}\n\t\t\t\tmfp._openClick({ mfpEl: items }, jqEl, itemOpts);\n\t\t\t} else {\n\t\t\t\tif (mfp.isOpen)\n\t\t\t\t\tmfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1));\n\t\t\t}\n\n\t\t} else {\n\t\t\t// clone options obj\n\t\t\toptions = $.extend(true, {}, options);\n\n\t\t\t/*\n\t\t\t * As Zepto doesn't support .data() method for objects \n\t\t\t * and it works only in normal browsers\n\t\t\t * we assign \"options\" object directly to the DOM element. FTW!\n\t\t\t */\n\t\t\tif (_isJQ) {\n\t\t\t\tjqEl.data('magnificPopup', options);\n\t\t\t} else {\n\t\t\t\tjqEl[0].magnificPopup = options;\n\t\t\t}\n\n\t\t\tmfp.addGroup(jqEl, options);\n\n\t\t}\n\t\treturn jqEl;\n\t};\n\n\n\t//Quick benchmark\n\t/*\n\tvar start = performance.now(),\n\t\ti,\n\t\trounds = 1000;\n\t\n\tfor(i = 0; i < rounds; i++) {\n\t\n\t}\n\tconsole.log('Test #1:', performance.now() - start);\n\t\n\tstart = performance.now();\n\tfor(i = 0; i < rounds; i++) {\n\t\n\t}\n\tconsole.log('Test #2:', performance.now() - start);\n\t*/\n\n\n\t/*>>core*/\n\n\t/*>>inline*/\n\n\tvar INLINE_NS = 'inline',\n\t\t_hiddenClass,\n\t\t_inlinePlaceholder,\n\t\t_lastInlineElement,\n\t\t_putInlineElementsBack = function () {\n\t\t\tif (_lastInlineElement) {\n\t\t\t\t_inlinePlaceholder.after(_lastInlineElement.addClass(_hiddenClass)).detach();\n\t\t\t\t_lastInlineElement = null;\n\t\t\t}\n\t\t};\n\n\t$.magnificPopup.registerModule(INLINE_NS, {\n\t\toptions: {\n\t\t\thiddenClass: 'hide', // will be appended with `mfp-` prefix\n\t\t\tmarkup: '',\n\t\t\ttNotFound: 'Content not found'\n\t\t},\n\t\tproto: {\n\n\t\t\tinitInline: function () {\n\t\t\t\tmfp.types.push(INLINE_NS);\n\n\t\t\t\t_mfpOn(CLOSE_EVENT + '.' + INLINE_NS, function () {\n\t\t\t\t\t_putInlineElementsBack();\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tgetInline: function (item, template) {\n\n\t\t\t\t_putInlineElementsBack();\n\n\t\t\t\tif (item.src) {\n\t\t\t\t\tvar inlineSt = mfp.st.inline,\n\t\t\t\t\t\tel = $(item.src);\n\n\t\t\t\t\tif (el.length) {\n\n\t\t\t\t\t\t// If target element has parent - we replace it with placeholder and put it back after popup is closed\n\t\t\t\t\t\tvar parent = el[0].parentNode;\n\t\t\t\t\t\tif (parent && parent.tagName) {\n\t\t\t\t\t\t\tif (!_inlinePlaceholder) {\n\t\t\t\t\t\t\t\t_hiddenClass = inlineSt.hiddenClass;\n\t\t\t\t\t\t\t\t_inlinePlaceholder = _getEl(_hiddenClass);\n\t\t\t\t\t\t\t\t_hiddenClass = 'mfp-' + _hiddenClass;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// replace target inline element with placeholder\n\t\t\t\t\t\t\t_lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmfp.updateStatus('ready');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmfp.updateStatus('error', inlineSt.tNotFound);\n\t\t\t\t\t\tel = $('<div>');\n\t\t\t\t\t}\n\n\t\t\t\t\titem.inlineElement = el;\n\t\t\t\t\treturn el;\n\t\t\t\t}\n\n\t\t\t\tmfp.updateStatus('ready');\n\t\t\t\tmfp._parseMarkup(template, {}, item);\n\t\t\t\treturn template;\n\t\t\t}\n\t\t}\n\t});\n\n\t/*>>inline*/\n\n\t/*>>ajax*/\n\tvar AJAX_NS = 'ajax',\n\t\t_ajaxCur,\n\t\t_removeAjaxCursor = function () {\n\t\t\tif (_ajaxCur) {\n\t\t\t\t_body.removeClass(_ajaxCur);\n\t\t\t}\n\t\t},\n\t\t_destroyAjaxRequest = function () {\n\t\t\t_removeAjaxCursor();\n\t\t\tif (mfp.req) {\n\t\t\t\tmfp.req.abort();\n\t\t\t}\n\t\t};\n\n\t$.magnificPopup.registerModule(AJAX_NS, {\n\n\t\toptions: {\n\t\t\tsettings: null,\n\t\t\tcursor: 'mfp-ajax-cur',\n\t\t\ttError: '<a href=\"%url%\">The content</a> could not be loaded.'\n\t\t},\n\n\t\tproto: {\n\t\t\tinitAjax: function () {\n\t\t\t\tmfp.types.push(AJAX_NS);\n\t\t\t\t_ajaxCur = mfp.st.ajax.cursor;\n\n\t\t\t\t_mfpOn(CLOSE_EVENT + '.' + AJAX_NS, _destroyAjaxRequest);\n\t\t\t\t_mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest);\n\t\t\t},\n\t\t\tgetAjax: function (item) {\n\n\t\t\t\tif (_ajaxCur)\n\t\t\t\t\t_body.addClass(_ajaxCur);\n\n\t\t\t\tmfp.updateStatus('loading');\n\n\t\t\t\tvar opts = $.extend({\n\t\t\t\t\turl: item.src,\n\t\t\t\t\tsuccess: function (data, textStatus, jqXHR) {\n\t\t\t\t\t\tvar temp = {\n\t\t\t\t\t\t\tdata: data,\n\t\t\t\t\t\t\txhr: jqXHR\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t_mfpTrigger('ParseAjax', temp);\n\n\t\t\t\t\t\tmfp.appendContent($(temp.data), AJAX_NS);\n\n\t\t\t\t\t\titem.finished = true;\n\n\t\t\t\t\t\t_removeAjaxCursor();\n\n\t\t\t\t\t\tmfp._setFocus();\n\n\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\tmfp.wrap.addClass(READY_CLASS);\n\t\t\t\t\t\t}, 16);\n\n\t\t\t\t\t\tmfp.updateStatus('ready');\n\n\t\t\t\t\t\t_mfpTrigger('AjaxContentAdded');\n\t\t\t\t\t},\n\t\t\t\t\terror: function () {\n\t\t\t\t\t\t_removeAjaxCursor();\n\t\t\t\t\t\titem.finished = item.loadError = true;\n\t\t\t\t\t\tmfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src));\n\t\t\t\t\t}\n\t\t\t\t}, mfp.st.ajax.settings);\n\n\t\t\t\tmfp.req = $.ajax(opts);\n\n\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\t});\n\n\n\n\n\n\n\n\t/*>>ajax*/\n\n\t/*>>image*/\n\tvar _imgInterval,\n\t\t_getTitle = function (item) {\n\t\t\tif (item.data && item.data.title !== undefined)\n\t\t\t\treturn item.data.title;\n\n\t\t\tvar src = mfp.st.image.titleSrc;\n\n\t\t\tif (src) {\n\t\t\t\tif ($.isFunction(src)) {\n\t\t\t\t\treturn src.call(mfp, item);\n\t\t\t\t} else if (item.el) {\n\t\t\t\t\treturn item.el.attr(src) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn '';\n\t\t};\n\n\t$.magnificPopup.registerModule('image', {\n\n\t\toptions: {\n\t\t\tmarkup: '<div class=\"mfp-figure\">' +\n\t\t\t\t'<div class=\"mfp-close\"></div>' +\n\t\t\t\t'<figure>' +\n\t\t\t\t'<div class=\"mfp-img\"></div>' +\n\t\t\t\t'<figcaption>' +\n\t\t\t\t'<div class=\"mfp-bottom-bar\">' +\n\t\t\t\t'<div class=\"mfp-title\"></div>' +\n\t\t\t\t'<div class=\"mfp-counter\"></div>' +\n\t\t\t\t'</div>' +\n\t\t\t\t'</figcaption>' +\n\t\t\t\t'</figure>' +\n\t\t\t\t'</div>',\n\t\t\tcursor: 'mfp-zoom-out-cur',\n\t\t\ttitleSrc: 'title',\n\t\t\tverticalFit: true,\n\t\t\ttError: '<a href=\"%url%\">The image</a> could not be loaded.'\n\t\t},\n\n\t\tproto: {\n\t\t\tinitImage: function () {\n\t\t\t\tvar imgSt = mfp.st.image,\n\t\t\t\t\tns = '.image';\n\n\t\t\t\tmfp.types.push('image');\n\n\t\t\t\t_mfpOn(OPEN_EVENT + ns, function () {\n\t\t\t\t\tif (mfp.currItem.type === 'image' && imgSt.cursor) {\n\t\t\t\t\t\t_body.addClass(imgSt.cursor);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t_mfpOn(CLOSE_EVENT + ns, function () {\n\t\t\t\t\tif (imgSt.cursor) {\n\t\t\t\t\t\t_body.removeClass(imgSt.cursor);\n\t\t\t\t\t}\n\t\t\t\t\t_window.off('resize' + EVENT_NS);\n\t\t\t\t});\n\n\t\t\t\t_mfpOn('Resize' + ns, mfp.resizeImage);\n\t\t\t\tif (mfp.isLowIE) {\n\t\t\t\t\t_mfpOn('AfterChange', mfp.resizeImage);\n\t\t\t\t}\n\t\t\t},\n\t\t\tresizeImage: function () {\n\t\t\t\tvar item = mfp.currItem;\n\t\t\t\tif (!item || !item.img) return;\n\n\t\t\t\tif (mfp.st.image.verticalFit) {\n\t\t\t\t\tvar decr = 0;\n\t\t\t\t\t// fix box-sizing in ie7/8\n\t\t\t\t\tif (mfp.isLowIE) {\n\t\t\t\t\t\tdecr = parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'), 10);\n\t\t\t\t\t}\n\t\t\t\t\titem.img.css('max-height', mfp.wH - decr);\n\t\t\t\t}\n\t\t\t},\n\t\t\t_onImageHasSize: function (item) {\n\t\t\t\tif (item.img) {\n\n\t\t\t\t\titem.hasSize = true;\n\n\t\t\t\t\tif (_imgInterval) {\n\t\t\t\t\t\tclearInterval(_imgInterval);\n\t\t\t\t\t}\n\n\t\t\t\t\titem.isCheckingImgSize = false;\n\n\t\t\t\t\t_mfpTrigger('ImageHasSize', item);\n\n\t\t\t\t\tif (item.imgHidden) {\n\t\t\t\t\t\tif (mfp.content)\n\t\t\t\t\t\t\tmfp.content.removeClass('mfp-loading');\n\n\t\t\t\t\t\titem.imgHidden = false;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Function that loops until the image has size to display elements that rely on it asap\n\t\t\t */\n\t\t\tfindImageSize: function (item) {\n\n\t\t\t\tvar counter = 0,\n\t\t\t\t\timg = item.img[0],\n\t\t\t\t\tmfpSetInterval = function (delay) {\n\n\t\t\t\t\t\tif (_imgInterval) {\n\t\t\t\t\t\t\tclearInterval(_imgInterval);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// decelerating interval that checks for size of an image\n\t\t\t\t\t\t_imgInterval = setInterval(function () {\n\t\t\t\t\t\t\tif (img.naturalWidth > 0) {\n\t\t\t\t\t\t\t\tmfp._onImageHasSize(item);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (counter > 200) {\n\t\t\t\t\t\t\t\tclearInterval(_imgInterval);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcounter++;\n\t\t\t\t\t\t\tif (counter === 3) {\n\t\t\t\t\t\t\t\tmfpSetInterval(10);\n\t\t\t\t\t\t\t} else if (counter === 40) {\n\t\t\t\t\t\t\t\tmfpSetInterval(50);\n\t\t\t\t\t\t\t} else if (counter === 100) {\n\t\t\t\t\t\t\t\tmfpSetInterval(500);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, delay);\n\t\t\t\t\t};\n\n\t\t\t\tmfpSetInterval(1);\n\t\t\t},\n\n\t\t\tgetImage: function (item, template) {\n\n\t\t\t\tvar guard = 0,\n\n\t\t\t\t\t// image load complete handler\n\t\t\t\t\tonLoadComplete = function () {\n\t\t\t\t\t\tif (item) {\n\t\t\t\t\t\t\tif (item.img[0].complete) {\n\t\t\t\t\t\t\t\titem.img.off('.mfploader');\n\n\t\t\t\t\t\t\t\tif (item === mfp.currItem) {\n\t\t\t\t\t\t\t\t\tmfp._onImageHasSize(item);\n\n\t\t\t\t\t\t\t\t\tmfp.updateStatus('ready');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\titem.hasSize = true;\n\t\t\t\t\t\t\t\titem.loaded = true;\n\n\t\t\t\t\t\t\t\t_mfpTrigger('ImageLoadComplete');\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t// if image complete check fails 200 times (20 sec), we assume that there was an error.\n\t\t\t\t\t\t\t\tguard++;\n\t\t\t\t\t\t\t\tif (guard < 200) {\n\t\t\t\t\t\t\t\t\tsetTimeout(onLoadComplete, 100);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tonLoadError();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\n\t\t\t\t\t// image error handler\n\t\t\t\t\tonLoadError = function () {\n\t\t\t\t\t\tif (item) {\n\t\t\t\t\t\t\titem.img.off('.mfploader');\n\t\t\t\t\t\t\tif (item === mfp.currItem) {\n\t\t\t\t\t\t\t\tmfp._onImageHasSize(item);\n\t\t\t\t\t\t\t\tmfp.updateStatus('error', imgSt.tError.replace('%url%', item.src));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\titem.hasSize = true;\n\t\t\t\t\t\t\titem.loaded = true;\n\t\t\t\t\t\t\titem.loadError = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\timgSt = mfp.st.image;\n\n\n\t\t\t\tvar el = template.find('.mfp-img');\n\t\t\t\tif (el.length) {\n\t\t\t\t\tvar img = document.createElement('img');\n\t\t\t\t\timg.className = 'mfp-img';\n\t\t\t\t\titem.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError);\n\t\t\t\t\timg.src = item.src;\n\n\t\t\t\t\t// without clone() \"error\" event is not firing when IMG is replaced by new IMG\n\t\t\t\t\t// TODO: find a way to avoid such cloning\n\t\t\t\t\tif (el.is('img')) {\n\t\t\t\t\t\titem.img = item.img.clone();\n\t\t\t\t\t}\n\n\t\t\t\t\timg = item.img[0];\n\t\t\t\t\tif (img.naturalWidth > 0) {\n\t\t\t\t\t\titem.hasSize = true;\n\t\t\t\t\t} else if (!img.width) {\n\t\t\t\t\t\titem.hasSize = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tmfp._parseMarkup(template, {\n\t\t\t\t\ttitle: _getTitle(item),\n\t\t\t\t\timg_replaceWith: item.img\n\t\t\t\t}, item);\n\n\t\t\t\tmfp.resizeImage();\n\n\t\t\t\tif (item.hasSize) {\n\t\t\t\t\tif (_imgInterval) clearInterval(_imgInterval);\n\n\t\t\t\t\tif (item.loadError) {\n\t\t\t\t\t\ttemplate.addClass('mfp-loading');\n\t\t\t\t\t\tmfp.updateStatus('error', imgSt.tError.replace('%url%', item.src));\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttemplate.removeClass('mfp-loading');\n\t\t\t\t\t\tmfp.updateStatus('ready');\n\t\t\t\t\t}\n\t\t\t\t\treturn template;\n\t\t\t\t}\n\n\t\t\t\tmfp.updateStatus('loading');\n\t\t\t\titem.loading = true;\n\n\t\t\t\tif (!item.hasSize) {\n\t\t\t\t\titem.imgHidden = true;\n\t\t\t\t\ttemplate.addClass('mfp-loading');\n\t\t\t\t\tmfp.findImageSize(item);\n\t\t\t\t}\n\n\t\t\t\treturn template;\n\t\t\t}\n\t\t}\n\t});\n\n\n\n\t/*>>image*/\n\n\t/*>>zoom*/\n\tvar hasMozTransform,\n\t\tgetHasMozTransform = function () {\n\t\t\tif (hasMozTransform === undefined) {\n\t\t\t\thasMozTransform = document.createElement('p').style.MozTransform !== undefined;\n\t\t\t}\n\t\t\treturn hasMozTransform;\n\t\t};\n\n\t$.magnificPopup.registerModule('zoom', {\n\n\t\toptions: {\n\t\t\tenabled: false,\n\t\t\teasing: 'ease-in-out',\n\t\t\tduration: 300,\n\t\t\topener: function (element) {\n\t\t\t\treturn element.is('img') ? element : element.find('img');\n\t\t\t}\n\t\t},\n\n\t\tproto: {\n\n\t\t\tinitZoom: function () {\n\t\t\t\tvar zoomSt = mfp.st.zoom,\n\t\t\t\t\tns = '.zoom',\n\t\t\t\t\timage;\n\n\t\t\t\tif (!zoomSt.enabled || !mfp.supportsTransition) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar duration = zoomSt.duration,\n\t\t\t\t\tgetElToAnimate = function (image) {\n\t\t\t\t\t\tvar newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'),\n\t\t\t\t\t\t\ttransition = 'all ' + (zoomSt.duration / 1000) + 's ' + zoomSt.easing,\n\t\t\t\t\t\t\tcssObj = {\n\t\t\t\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\t\t\t\tzIndex: 9999,\n\t\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\t\t'-webkit-backface-visibility': 'hidden'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tt = 'transition';\n\n\t\t\t\t\t\tcssObj['-webkit-' + t] = cssObj['-moz-' + t] = cssObj['-o-' + t] = cssObj[t] = transition;\n\n\t\t\t\t\t\tnewImg.css(cssObj);\n\t\t\t\t\t\treturn newImg;\n\t\t\t\t\t},\n\t\t\t\t\tshowMainContent = function () {\n\t\t\t\t\t\tmfp.content.css('visibility', 'visible');\n\t\t\t\t\t},\n\t\t\t\t\topenTimeout,\n\t\t\t\t\tanimatedImg;\n\n\t\t\t\t_mfpOn('BuildControls' + ns, function () {\n\t\t\t\t\tif (mfp._allowZoom()) {\n\n\t\t\t\t\t\tclearTimeout(openTimeout);\n\t\t\t\t\t\tmfp.content.css('visibility', 'hidden');\n\n\t\t\t\t\t\t// Basically, all code below does is clones existing image, puts in on top of the current one and animated it\n\n\t\t\t\t\t\timage = mfp._getItemToZoom();\n\n\t\t\t\t\t\tif (!image) {\n\t\t\t\t\t\t\tshowMainContent();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tanimatedImg = getElToAnimate(image);\n\n\t\t\t\t\t\tanimatedImg.css(mfp._getOffset());\n\n\t\t\t\t\t\tmfp.wrap.append(animatedImg);\n\n\t\t\t\t\t\topenTimeout = setTimeout(function () {\n\t\t\t\t\t\t\tanimatedImg.css(mfp._getOffset(true));\n\t\t\t\t\t\t\topenTimeout = setTimeout(function () {\n\n\t\t\t\t\t\t\t\tshowMainContent();\n\n\t\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\t\tanimatedImg.remove();\n\t\t\t\t\t\t\t\t\timage = animatedImg = null;\n\t\t\t\t\t\t\t\t\t_mfpTrigger('ZoomAnimationEnded');\n\t\t\t\t\t\t\t\t}, 16); // avoid blink when switching images \n\n\t\t\t\t\t\t\t}, duration); // this timeout equals animation duration\n\n\t\t\t\t\t\t}, 16); // by adding this timeout we avoid short glitch at the beginning of animation\n\n\n\t\t\t\t\t\t// Lots of timeouts...\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t_mfpOn(BEFORE_CLOSE_EVENT + ns, function () {\n\t\t\t\t\tif (mfp._allowZoom()) {\n\n\t\t\t\t\t\tclearTimeout(openTimeout);\n\n\t\t\t\t\t\tmfp.st.removalDelay = duration;\n\n\t\t\t\t\t\tif (!image) {\n\t\t\t\t\t\t\timage = mfp._getItemToZoom();\n\t\t\t\t\t\t\tif (!image) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tanimatedImg = getElToAnimate(image);\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tanimatedImg.css(mfp._getOffset(true));\n\t\t\t\t\t\tmfp.wrap.append(animatedImg);\n\t\t\t\t\t\tmfp.content.css('visibility', 'hidden');\n\n\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\tanimatedImg.css(mfp._getOffset());\n\t\t\t\t\t\t}, 16);\n\t\t\t\t\t}\n\n\t\t\t\t});\n\n\t\t\t\t_mfpOn(CLOSE_EVENT + ns, function () {\n\t\t\t\t\tif (mfp._allowZoom()) {\n\t\t\t\t\t\tshowMainContent();\n\t\t\t\t\t\tif (animatedImg) {\n\t\t\t\t\t\t\tanimatedImg.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\timage = null;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t_allowZoom: function () {\n\t\t\t\treturn mfp.currItem.type === 'image';\n\t\t\t},\n\n\t\t\t_getItemToZoom: function () {\n\t\t\t\tif (mfp.currItem.hasSize) {\n\t\t\t\t\treturn mfp.currItem.img;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Get element postion relative to viewport\n\t\t\t_getOffset: function (isLarge) {\n\t\t\t\tvar el;\n\t\t\t\tif (isLarge) {\n\t\t\t\t\tel = mfp.currItem.img;\n\t\t\t\t} else {\n\t\t\t\t\tel = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem);\n\t\t\t\t}\n\n\t\t\t\tvar offset = el.offset();\n\t\t\t\tvar paddingTop = parseInt(el.css('padding-top'), 10);\n\t\t\t\tvar paddingBottom = parseInt(el.css('padding-bottom'), 10);\n\t\t\t\toffset.top -= ($(window).scrollTop() - paddingTop);\n\n\n\t\t\t\t/*\n\t\t\t\t\n\t\t\t\tAnimating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa.\n\t\n\t\t\t\t */\n\t\t\t\tvar obj = {\n\t\t\t\t\twidth: el.width(),\n\t\t\t\t\t// fix Zepto height+padding issue\n\t\t\t\t\theight: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop\n\t\t\t\t};\n\n\t\t\t\t// I hate to do this, but there is no another option\n\t\t\t\tif (getHasMozTransform()) {\n\t\t\t\t\tobj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)';\n\t\t\t\t} else {\n\t\t\t\t\tobj.left = offset.left;\n\t\t\t\t\tobj.top = offset.top;\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\n\t\t}\n\t});\n\n\n\n\t/*>>zoom*/\n\n\t/*>>iframe*/\n\n\tvar IFRAME_NS = 'iframe',\n\t\t_emptyPage = '//about:blank',\n\n\t\t_fixIframeBugs = function (isShowing) {\n\t\t\tif (mfp.currTemplate[IFRAME_NS]) {\n\t\t\t\tvar el = mfp.currTemplate[IFRAME_NS].find('iframe');\n\t\t\t\tif (el.length) {\n\t\t\t\t\t// reset src after the popup is closed to avoid \"video keeps playing after popup is closed\" bug\n\t\t\t\t\tif (!isShowing) {\n\t\t\t\t\t\tel[0].src = _emptyPage;\n\t\t\t\t\t}\n\n\t\t\t\t\t// IE8 black screen bug fix\n\t\t\t\t\tif (mfp.isIE8) {\n\t\t\t\t\t\tel.css('display', isShowing ? 'block' : 'none');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t$.magnificPopup.registerModule(IFRAME_NS, {\n\n\t\toptions: {\n\t\t\tmarkup: '<div class=\"mfp-iframe-scaler\">' +\n\t\t\t\t'<div class=\"mfp-close\"></div>' +\n\t\t\t\t'<iframe class=\"mfp-iframe\" src=\"//about:blank\" frameborder=\"0\" allowfullscreen></iframe>' +\n\t\t\t\t'</div>',\n\n\t\t\tsrcAction: 'iframe_src',\n\n\t\t\t// we don't care and support only one default type of URL by default\n\t\t\tpatterns: {\n\t\t\t\tyoutube: {\n\t\t\t\t\tindex: 'youtube.com',\n\t\t\t\t\tid: 'v=',\n\t\t\t\t\tsrc: '//www.youtube.com/embed/%id%?autoplay=1'\n\t\t\t\t},\n\t\t\t\tvimeo: {\n\t\t\t\t\tindex: 'vimeo.com/',\n\t\t\t\t\tid: '/',\n\t\t\t\t\tsrc: '//player.vimeo.com/video/%id%?autoplay=1'\n\t\t\t\t},\n\t\t\t\tgmaps: {\n\t\t\t\t\tindex: '//maps.google.',\n\t\t\t\t\tsrc: '%id%&output=embed'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tproto: {\n\t\t\tinitIframe: function () {\n\t\t\t\tmfp.types.push(IFRAME_NS);\n\n\t\t\t\t_mfpOn('BeforeChange', function (e, prevType, newType) {\n\t\t\t\t\tif (prevType !== newType) {\n\t\t\t\t\t\tif (prevType === IFRAME_NS) {\n\t\t\t\t\t\t\t_fixIframeBugs(); // iframe if removed\n\t\t\t\t\t\t} else if (newType === IFRAME_NS) {\n\t\t\t\t\t\t\t_fixIframeBugs(true); // iframe is showing\n\t\t\t\t\t\t}\n\t\t\t\t\t}// else {\n\t\t\t\t\t// iframe source is switched, don't do anything\n\t\t\t\t\t//}\n\t\t\t\t});\n\n\t\t\t\t_mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function () {\n\t\t\t\t\t_fixIframeBugs();\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tgetIframe: function (item, template) {\n\t\t\t\tvar embedSrc = item.src;\n\t\t\t\tvar iframeSt = mfp.st.iframe;\n\n\t\t\t\t$.each(iframeSt.patterns, function () {\n\t\t\t\t\tif (embedSrc.indexOf(this.index) > -1) {\n\t\t\t\t\t\tif (this.id) {\n\t\t\t\t\t\t\tif (typeof this.id === 'string') {\n\t\t\t\t\t\t\t\tembedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id) + this.id.length, embedSrc.length);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tembedSrc = this.id.call(this, embedSrc);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tembedSrc = this.src.replace('%id%', embedSrc);\n\t\t\t\t\t\treturn false; // break;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tvar dataObj = {};\n\t\t\t\tif (iframeSt.srcAction) {\n\t\t\t\t\tdataObj[iframeSt.srcAction] = embedSrc;\n\t\t\t\t}\n\t\t\t\tmfp._parseMarkup(template, dataObj, item);\n\n\t\t\t\tmfp.updateStatus('ready');\n\n\t\t\t\treturn template;\n\t\t\t}\n\t\t}\n\t});\n\n\n\n\t/*>>iframe*/\n\n\t/*>>gallery*/\n\t/**\n\t * Get looped index depending on number of slides\n\t */\n\tvar _getLoopedId = function (index) {\n\t\tvar numSlides = mfp.items.length;\n\t\tif (index > numSlides - 1) {\n\t\t\treturn index - numSlides;\n\t\t} else if (index < 0) {\n\t\t\treturn numSlides + index;\n\t\t}\n\t\treturn index;\n\t},\n\t\t_replaceCurrTotal = function (text, curr, total) {\n\t\t\treturn text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total);\n\t\t};\n\n\t$.magnificPopup.registerModule('gallery', {\n\n\t\toptions: {\n\t\t\tenabled: false,\n\t\t\tarrowMarkup: '<button title=\"%title%\" type=\"button\" class=\"btn--blank mfp-arrow mfp-arrow-%dir% iconf-arrow-%dir%\"></button>',\n\t\t\tpreload: [0, 2],\n\t\t\tnavigateByImgClick: true,\n\t\t\tarrows: true,\n\n\t\t\ttPrev: 'Previous (Left arrow key)',\n\t\t\ttNext: 'Next (Right arrow key)',\n\t\t\ttCounter: '%curr% of %total%'\n\t\t},\n\n\t\tproto: {\n\t\t\tinitGallery: function () {\n\n\t\t\t\tvar gSt = mfp.st.gallery,\n\t\t\t\t\tns = '.mfp-gallery',\n\t\t\t\t\tsupportsFastClick = Boolean($.fn.mfpFastClick);\n\n\t\t\t\tmfp.direction = true; // true - next, false - prev\n\n\t\t\t\tif (!gSt || !gSt.enabled) return false;\n\n\t\t\t\t_wrapClasses += ' mfp-gallery';\n\n\t\t\t\t_mfpOn(OPEN_EVENT + ns, function () {\n\n\t\t\t\t\tif (gSt.navigateByImgClick) {\n\t\t\t\t\t\tmfp.wrap.on('click' + ns, '.mfp-img', function () {\n\t\t\t\t\t\t\tif (mfp.items.length > 1) {\n\t\t\t\t\t\t\t\tmfp.next();\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\n\t\t\t\t\t_document.on('keydown' + ns, function (e) {\n\t\t\t\t\t\tif (e.keyCode === 37) {\n\t\t\t\t\t\t\tmfp.prev();\n\t\t\t\t\t\t} else if (e.keyCode === 39) {\n\t\t\t\t\t\t\tmfp.next();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\t_mfpOn('UpdateStatus' + ns, function (e, data) {\n\t\t\t\t\tif (data.text) {\n\t\t\t\t\t\tdata.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t_mfpOn(MARKUP_PARSE_EVENT + ns, function (e, element, values, item) {\n\t\t\t\t\tvar l = mfp.items.length;\n\t\t\t\t\tvalues.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : '';\n\t\t\t\t});\n\n\t\t\t\t_mfpOn('BuildControls' + ns, function () {\n\t\t\t\t\tif (mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) {\n\t\t\t\t\t\tvar markup = gSt.arrowMarkup,\n\t\t\t\t\t\t\tarrowLeft = mfp.arrowLeft = $(markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left')).addClass(PREVENT_CLOSE_CLASS),\n\t\t\t\t\t\t\tarrowRight = mfp.arrowRight = $(markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right')).addClass(PREVENT_CLOSE_CLASS);\n\n\t\t\t\t\t\tvar eName = supportsFastClick ? 'mfpFastClick' : 'click';\n\t\t\t\t\t\tarrowLeft[eName](function () {\n\t\t\t\t\t\t\tmfp.prev();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tarrowRight[eName](function () {\n\t\t\t\t\t\t\tmfp.next();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Polyfill for :before and :after (adds elements with classes mfp-a and mfp-b)\n\t\t\t\t\t\tif (mfp.isIE7) {\n\t\t\t\t\t\t\t_getEl('b', arrowLeft[0], false, true);\n\t\t\t\t\t\t\t_getEl('a', arrowLeft[0], false, true);\n\t\t\t\t\t\t\t_getEl('b', arrowRight[0], false, true);\n\t\t\t\t\t\t\t_getEl('a', arrowRight[0], false, true);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmfp.container.append(arrowLeft.add(arrowRight));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t_mfpOn(CHANGE_EVENT + ns, function () {\n\t\t\t\t\tif (mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout);\n\n\t\t\t\t\tmfp._preloadTimeout = setTimeout(function () {\n\t\t\t\t\t\tmfp.preloadNearbyImages();\n\t\t\t\t\t\tmfp._preloadTimeout = null;\n\t\t\t\t\t}, 16);\n\t\t\t\t});\n\n\n\t\t\t\t_mfpOn(CLOSE_EVENT + ns, function () {\n\t\t\t\t\t_document.off(ns);\n\t\t\t\t\tmfp.wrap.off('click' + ns);\n\n\t\t\t\t\tif (mfp.arrowLeft && supportsFastClick) {\n\t\t\t\t\t\tmfp.arrowLeft.add(mfp.arrowRight).destroyMfpFastClick();\n\t\t\t\t\t}\n\t\t\t\t\tmfp.arrowRight = mfp.arrowLeft = null;\n\t\t\t\t});\n\n\t\t\t},\n\t\t\tnext: function () {\n\t\t\t\tmfp.direction = true;\n\t\t\t\tmfp.index = _getLoopedId(mfp.index + 1);\n\t\t\t\tmfp.updateItemHTML();\n\t\t\t},\n\t\t\tprev: function () {\n\t\t\t\tmfp.direction = false;\n\t\t\t\tmfp.index = _getLoopedId(mfp.index - 1);\n\t\t\t\tmfp.updateItemHTML();\n\t\t\t},\n\t\t\tgoTo: function (newIndex) {\n\t\t\t\tmfp.direction = (newIndex >= mfp.index);\n\t\t\t\tmfp.index = newIndex;\n\t\t\t\tmfp.updateItemHTML();\n\t\t\t},\n\t\t\tpreloadNearbyImages: function () {\n\t\t\t\tvar p = mfp.st.gallery.preload,\n\t\t\t\t\tpreloadBefore = Math.min(p[0], mfp.items.length),\n\t\t\t\t\tpreloadAfter = Math.min(p[1], mfp.items.length),\n\t\t\t\t\ti;\n\n\t\t\t\tfor (i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) {\n\t\t\t\t\tmfp._preloadItem(mfp.index + i);\n\t\t\t\t}\n\t\t\t\tfor (i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) {\n\t\t\t\t\tmfp._preloadItem(mfp.index - i);\n\t\t\t\t}\n\t\t\t},\n\t\t\t_preloadItem: function (index) {\n\t\t\t\tindex = _getLoopedId(index);\n\n\t\t\t\tif (mfp.items[index].preloaded) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar item = mfp.items[index];\n\t\t\t\tif (!item.parsed) {\n\t\t\t\t\titem = mfp.parseEl(index);\n\t\t\t\t}\n\n\t\t\t\t_mfpTrigger('LazyLoad', item);\n\n\t\t\t\tif (item.type === 'image') {\n\t\t\t\t\titem.img = $('<img class=\"mfp-img\" />').on('load.mfploader', function () {\n\t\t\t\t\t\titem.hasSize = true;\n\t\t\t\t\t}).on('error.mfploader', function () {\n\t\t\t\t\t\titem.hasSize = true;\n\t\t\t\t\t\titem.loadError = true;\n\t\t\t\t\t\t_mfpTrigger('LazyLoadError', item);\n\t\t\t\t\t}).attr('src', item.src);\n\t\t\t\t}\n\n\n\t\t\t\titem.preloaded = true;\n\t\t\t}\n\t\t}\n\t});\n\n\t/*\n\tTouch Support that might be implemented some day\n\t\n\taddSwipeGesture: function() {\n\t\tvar startX,\n\t\t\tmoved,\n\t\t\tmultipleTouches;\n\t\n\t\t\treturn;\n\t\n\t\tvar namespace = '.mfp',\n\t\t\taddEventNames = function(pref, down, move, up, cancel) {\n\t\t\t\tmfp._tStart = pref + down + namespace;\n\t\t\t\tmfp._tMove = pref + move + namespace;\n\t\t\t\tmfp._tEnd = pref + up + namespace;\n\t\t\t\tmfp._tCancel = pref + cancel + namespace;\n\t\t\t};\n\t\n\t\tif(window.navigator.msPointerEnabled) {\n\t\t\taddEventNames('MSPointer', 'Down', 'Move', 'Up', 'Cancel');\n\t\t} else if('ontouchstart' in window) {\n\t\t\taddEventNames('touch', 'start', 'move', 'end', 'cancel');\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t\t_window.on(mfp._tStart, function(e) {\n\t\t\tvar oE = e.originalEvent;\n\t\t\tmultipleTouches = moved = false;\n\t\t\tstartX = oE.pageX || oE.changedTouches[0].pageX;\n\t\t}).on(mfp._tMove, function(e) {\n\t\t\tif(e.originalEvent.touches.length > 1) {\n\t\t\t\tmultipleTouches = e.originalEvent.touches.length;\n\t\t\t} else {\n\t\t\t\t//e.preventDefault();\n\t\t\t\tmoved = true;\n\t\t\t}\n\t\t}).on(mfp._tEnd + ' ' + mfp._tCancel, function(e) {\n\t\t\tif(moved && !multipleTouches) {\n\t\t\t\tvar oE = e.originalEvent,\n\t\t\t\t\tdiff = startX - (oE.pageX || oE.changedTouches[0].pageX);\n\t\n\t\t\t\tif(diff > 20) {\n\t\t\t\t\tmfp.next();\n\t\t\t\t} else if(diff < -20) {\n\t\t\t\t\tmfp.prev();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\t*/\n\n\n\t/*>>gallery*/\n\n\t/*>>retina*/\n\n\tvar RETINA_NS = 'retina';\n\n\t$.magnificPopup.registerModule(RETINA_NS, {\n\t\toptions: {\n\t\t\treplaceSrc: function (item) {\n\t\t\t\treturn item.src.replace(/\\.\\w+$/, function (m) { return '@2x' + m; });\n\t\t\t},\n\t\t\tratio: 1 // Function or number.  Set to 1 to disable.\n\t\t},\n\t\tproto: {\n\t\t\tinitRetina: function () {\n\t\t\t\tif (window.devicePixelRatio > 1) {\n\n\t\t\t\t\tvar st = mfp.st.retina,\n\t\t\t\t\t\tratio = st.ratio;\n\n\t\t\t\t\tratio = !isNaN(ratio) ? ratio : ratio();\n\n\t\t\t\t\tif (ratio > 1) {\n\t\t\t\t\t\t_mfpOn('ImageHasSize' + '.' + RETINA_NS, function (e, item) {\n\t\t\t\t\t\t\titem.img.css({\n\t\t\t\t\t\t\t\t'max-width': item.img[0].naturalWidth / ratio,\n\t\t\t\t\t\t\t\t'width': '100%'\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\t_mfpOn('ElementParse' + '.' + RETINA_NS, function (e, item) {\n\t\t\t\t\t\t\titem.src = st.replaceSrc(item, ratio);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t});\n\n\t/*>>retina*/\n\n\t/*>>fastclick*/\n\t/**\n\t * FastClick event implementation. (removes 300ms delay on touch devices)\n\t * Based on https://developers.google.com/mobile/articles/fast_buttons\n\t *\n\t * You may use it outside the Magnific Popup by calling just:\n\t *\n\t * $('.your-el').mfpFastClick(function() {\n\t *     console.log('Clicked!');\n\t * });\n\t *\n\t * To unbind:\n\t * $('.your-el').destroyMfpFastClick();\n\t * \n\t * \n\t * Note that it's a very basic and simple implementation, it blocks ghost click on the same element where it was bound.\n\t * If you need something more advanced, use plugin by FT Labs https://github.com/ftlabs/fastclick\n\t * \n\t */\n\n\t(function () {\n\t\tvar ghostClickDelay = 1000,\n\t\t\tsupportsTouch = 'ontouchstart' in window,\n\t\t\tunbindTouchMove = function () {\n\t\t\t\t_window.off('touchmove' + ns + ' touchend' + ns);\n\t\t\t},\n\t\t\teName = 'mfpFastClick',\n\t\t\tns = '.' + eName;\n\n\n\t\t// As Zepto.js doesn't have an easy way to add custom events (like jQuery), so we implement it in this way\n\t\t$.fn.mfpFastClick = function (callback) {\n\n\t\t\treturn $(this).each(function () {\n\n\t\t\t\tvar elem = $(this),\n\t\t\t\t\tlock;\n\n\t\t\t\tif (supportsTouch) {\n\n\t\t\t\t\tvar timeout,\n\t\t\t\t\t\tstartX,\n\t\t\t\t\t\tstartY,\n\t\t\t\t\t\tpointerMoved,\n\t\t\t\t\t\tpoint,\n\t\t\t\t\t\tnumPointers;\n\n\t\t\t\t\telem.on('touchstart' + ns, function (e) {\n\t\t\t\t\t\tpointerMoved = false;\n\t\t\t\t\t\tnumPointers = 1;\n\n\t\t\t\t\t\tpoint = e.originalEvent ? e.originalEvent.touches[0] : e.touches[0];\n\t\t\t\t\t\tstartX = point.clientX;\n\t\t\t\t\t\tstartY = point.clientY;\n\n\t\t\t\t\t\t_window.on('touchmove' + ns, function (e) {\n\t\t\t\t\t\t\tpoint = e.originalEvent ? e.originalEvent.touches : e.touches;\n\t\t\t\t\t\t\tnumPointers = point.length;\n\t\t\t\t\t\t\tpoint = point[0];\n\t\t\t\t\t\t\tif (Math.abs(point.clientX - startX) > 10 ||\n\t\t\t\t\t\t\t\tMath.abs(point.clientY - startY) > 10) {\n\t\t\t\t\t\t\t\tpointerMoved = true;\n\t\t\t\t\t\t\t\tunbindTouchMove();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}).on('touchend' + ns, function (e) {\n\t\t\t\t\t\t\tunbindTouchMove();\n\t\t\t\t\t\t\tif (pointerMoved || numPointers > 1) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlock = true;\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\t\t\ttimeout = setTimeout(function () {\n\t\t\t\t\t\t\t\tlock = false;\n\t\t\t\t\t\t\t}, ghostClickDelay);\n\t\t\t\t\t\t\tcallback();\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t}\n\n\t\t\t\telem.on('click' + ns, function () {\n\t\t\t\t\tif (!lock) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\t$.fn.destroyMfpFastClick = function () {\n\t\t\t$(this).off('touchstart' + ns + ' click' + ns);\n\t\t\tif (supportsTouch) _window.off('touchmove' + ns + ' touchend' + ns);\n\t\t};\n\t})();\n\n\t/*>>fastclick*/\n\t_checkInstance();\n})(jQuery || window.Zepto);","import jQuery from 'jquery';\n\n(function($, window, document, undefined) {\n\n\t'use strict';\n\n\t// Create the defaults once\n\tvar pluginName = 'phatFingaz',\n\t    defaults = {\n\t    \tcallback: null\n\t    };\n\n\t// The actual plugin constructor\n\n\tfunction Plugin(element, options) {\n\t\tthis.element = element;\n\t\tthis.options = $.extend({ }, defaults, options);\n\n\t\tthis._defaults = defaults;\n\t\tthis._name = pluginName;\n\t\tthis.link = this.setLink();\n\t\t\n\t\tif(this.link === null) {\n\t\t\t//stop processing items with no link\n\t\t\treturn;\n\t\t} \n\t\t\n\t\tthis.url = this.setUrl();\n\t\tthis.inNewWindow = this.setNewWindow();\n\n\t\tthis.init();\n\t}\n\n\tPlugin.prototype = {\n\t\tinit: function() {\n\t\t\tif($(this.element).find('a[href]')) {\n\t\t\t\t$(this.element).on('click', {$plugin: this}, this.processClick);\n\t\t\t}\n\t\t},\n\t\tprocessClick: function(e) {\n\t\t\te.preventDefault();\n\t\t\tvar $plugin = e.data.$plugin;\n\t\t\tif($plugin.options.callback) {\n\t\t\t\t$plugin.options.callback.call(this);\n\t\t\t} else {\n\t\t\t\t$plugin.openLink($plugin.url, $plugin.inNewWindow);\n\t\t\t}\n\t\t\t\n\t\t},\n\t\topenLink: function(url, newWindow) {\n\t\t\twindow.open(url, newWindow);\n\t\t},\n\t\tsetLink: function( ) {\n\t\t\treturn $(this.element).find('a[href]').first()[0] || null;\n\t\t},\n\t\tsetUrl: function( ) {\n\t\t\treturn this.link.href;\n\t\t},\n\t\tsetNewWindow: function() {\n\t\t\tif ( this.link.target === '_blank') {\n\t\t\t\treturn '_blank';\n\t\t\t}\n\t\t\treturn '_self';\n\t\t}\n\t};\n\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function(options) {\n\t\treturn this.each(function() {\n\t\t\tif (!$.data(this, 'plugin_' + pluginName)) {\n\t\t\t\t$.data(this, 'plugin_' + pluginName,\n\t\t\t\t\tnew Plugin(this, options));\n\t\t\t}\n\t\t});\n\t};\n\n})(jQuery, window, document);","\nvar enterEvent = 'keydown';\nvar spaceEvent = 'keyup';\n\nvar activate = function (callback) {\n\treturn function (e) {\n\t\tvar eventType = e.type;\n\t\tvar isButton = e.target.nodeName.toLowerCase() === 'button';\n\t\tvar isInput = (['input', 'textarea']).indexOf(e.target.nodeName.toLowerCase()) !== -1;\n\n\t\tvar isEnter = e.key && (e.key.toLowerCase() === 'enter');\n\t\t// Need to check for 'spacebar' because of IE11\n\t\tvar isSpace = e.key && (e.key === ' ' || e.key.toLowerCase() === 'spacebar');\n\n\t\tvar enterTrigger = eventType === enterEvent && isEnter;\n\t\tvar spaceTrigger = eventType === spaceEvent && isSpace;\n\t\tvar otherTrigger = eventType !== enterEvent && eventType !== spaceEvent;\n\n\t\t// Prevent space from scrolling the page down\n\t\tif (!isButton && !isInput && eventType === 'keydown' && isSpace) {\n\t\t\te.preventDefault(e);\n\t\t}\n\n\t\tif (otherTrigger || (!isButton && (enterTrigger || spaceTrigger))) {\n\t\t\tcallback.apply(this, arguments);\n\t\t}\n\t};\n};\n\n// It's not necessary to use this to specify events, but it's a useful shorthand\nactivate.keyboardEvent = 'keydown keyup';\nactivate.event = 'click ' + activate.keyboardEvent;\n\nexport { activate };","import $ from 'jquery';\n\nvar scrollTimeout = null;\nvar scrollSpeedMult = 2;\nvar scrollSpeedMax = 600;\n\nvar module = {\n\t// Scroll to an element on screen\n\t// $elm = jQuery element - the element to scroll to\n\t// pxAbove = int - padding between top of screen and element (defaults to 0)\n\tscrollToElm: function ($elm, pxAbove) {\n\t\t// Use timoeut to prevent queueing multiple animations\n\t\tif (scrollTimeout === null) {\n\t\t\tvar topPadding = pxAbove || 0;\n\t\t\tvar scrollHeight = $elm.offset().top;\n\n\t\t\tvar currentScrollHeight = $(document).scrollTop();\n\t\t\tvar targetScrollHeight = scrollHeight - topPadding;\n\t\t\tvar scrollHeightDiff = Math.abs(currentScrollHeight - targetScrollHeight);\n\n\t\t\t// Travel faster to nearer elements, but never take longer than 600 ms\n\t\t\tvar scrollSpeed = Math.min(scrollSpeedMult * scrollHeightDiff, scrollSpeedMax);\n\n\t\t\tif (targetScrollHeight !== currentScrollHeight) {\n\t\t\t\t$('html, body').animate({ scrollTop: targetScrollHeight }, scrollSpeed);\n\t\t\t\tscrollTimeout = window.setTimeout(module._clearScrollTimeout, scrollSpeed);\n\t\t\t}\n\t\t}\n\t},\n\n\t_clearScrollTimeout: function () {\n\t\tscrollTimeout = null;\n\t},\n\n\t// Returns a class name with no '.'\n\t// selector = string - the jQuery selector to remove '.' from\n\tgetClassName: function (selector) {\n\t\treturn selector.replace('.', '');\n\t},\n\n\t// Returns an object containing the current URL's query string\n\t// Combines values with the same key\n\t// e.g. 'filter-content-type=photos,videos' instead of form.serialize which will return 'filter-content-type=photos&filter-content-type=videos'\n\tgetQueryStringObject: function (queryString) {\n\t\tqueryString = typeof queryString !== 'undefined' ? queryString : document.location.search.substr(1);\n\t\tqueryString = queryString.split('&');\n\n\t\tvar query = {};\n\n\t\tfor (var i = 0; i < queryString.length; i++) {\n\t\t\tqueryString[i] = queryString[i].split('=');\n\n\t\t\tif (queryString[i].length > 1) {\n\t\t\t\tvar key = decodeURIComponent(queryString[i][0]);\n\t\t\t\tvar val = decodeURIComponent(queryString[i][1]);\n\n\t\t\t\tif (query[key]) {\n\t\t\t\t\tquery[key] += ',' + val;\n\t\t\t\t} else {\n\t\t\t\t\tquery[key] = val;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn query;\n\t}\n};\n\nvar scrollToElm = module.scrollToElm;\nvar getClassName = module.getClassName;\nvar getQueryStringObject = module.getQueryStringObject;\n\nexport {\n\tscrollToElm,\n\tgetClassName,\n\tgetQueryStringObject\n};\n","var debounce = function (fn, delay) {\n\n\tvar timeout;\n\n\treturn function () {\n\t\tvar self = this;\n\t\tvar args = arguments;\n\n\t\tif (timeout) {\n\t\t\twindow.clearTimeout(timeout);\n\t\t}\n\n\t\ttimeout = window.setTimeout(function () {\n\t\t\ttimeout = undefined;\n\t\t\tfn.apply(self, args);\n\t\t}, delay);\n\t};\n};\n\nexport { debounce };","\nvar keys = (function () {\n\tvar bindings = {};\n\n\tvar module = {\n\t\t_isFocusOnInput: function () {\n\t\t\t// Check if the current active element is an input that accepts keypresses\n\n\t\t\tvar $activeEl = document.activeElement;\n\t\t\tvar nodeName = $activeEl.nodeName.toLowerCase();\n\t\t\tvar inputType;\n\n\t\t\tvar isInput = (['input', 'textarea', 'select'].indexOf(nodeName) !== -1);\n\n\t\t\tif (nodeName === 'input') {\n\t\t\t\tinputType = $activeEl.attributes.type.value.toLowerCase();\n\n\t\t\t\tif (['color', 'radio', 'checkbox'].indexOf(inputType) !== -1) {\n\t\t\t\t\tisInput = false;\n\t\t\t\t}\n\t\t\t} else if ($activeEl.isContentEditable) {\n\t\t\t\tisInput = true;\n\t\t\t}\n\n\t\t\treturn isInput;\n\t\t},\n\n\t\t_bindFn: function (key, fn, fnWrapper) {\n\t\t\tdocument.addEventListener('keydown', fnWrapper);\n\t\t\tif (!bindings[key]) {\n\t\t\t\tbindings[key] = [];\n\t\t\t}\n\n\t\t\tbindings[key].push({\n\t\t\t\tfn: fn,\n\t\t\t\tfnWrapper: fnWrapper\n\t\t\t});\n\t\t},\n\n\t\tbind: function (key, fn, allowInInput, requireCtrl) {\n\t\t\tvar fnWrapper;\n\n\t\t\tif (typeof key !== 'string') {\n\t\t\t\tthrow new TypeError('The key parameter to bind must be a string.');\n\t\t\t} else {\n\t\t\t\tkey = key.toLowerCase();\n\t\t\t}\n\n\t\t\tfnWrapper = function (event) {\n\t\t\t\t// Don't check key if focus is on an input element,\n\t\t\t\t// unless it is allowed or requires Ctrl\n\t\t\t\tif (!allowInInput && module._isFocusOnInput() && !requireCtrl) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Some behaviour, like selecting an autocomplete result, can\n\t\t\t\t// fire a keydown event with no key\n\t\t\t\tif (event.key && event.key.toLowerCase() === key) {\n\t\t\t\t\tif (!requireCtrl || event.ctrlKey) {\n\t\t\t\t\t\tif (fn.apply(this, arguments) === false) {\n\t\t\t\t\t\t\t// Implement jQuery-like shorthand of return false;\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\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\tmodule._bindFn(key, fn, fnWrapper);\n\t\t},\n\n\t\tunbind: function (key, fn) {\n\t\t\tvar binding = bindings[key];\n\t\t\tvar index;\n\n\t\t\tif (binding) {\n\t\t\t\t// Find index\n\t\t\t\tfor (index = 0; index < binding.length; index++) {\n\t\t\t\t\tif (binding[index].fn === fn) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (index < binding.length) {\n\t\t\t\t\tdocument.removeEventListener('keydown', binding[index].fnWrapper);\n\t\t\t\t\tbinding.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_getSequenceArgs: function (keyA, keyB, keyC, fn) {\n\t\t\tvar args = Array.prototype.splice.call(arguments, 0);\n\t\t\tvar keys = args[0];\n\t\t\tfn = args[args.length - 1]; // The function should be the last event\n\n\t\t\tif (!Array.isArray(keys)) {\n\t\t\t\tkeys = args.splice(0, args.length - 1);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tkeys: keys,\n\t\t\t\tfn: fn\n\t\t\t};\n\t\t},\n\n\t\tbindSequence: function (keyA, keyB, keyC, fn) {\n\t\t\tvar args = module._getSequenceArgs.apply(this, arguments);\n\t\t\tvar keys = args.keys;\n\n\t\t\tvar keyString;\n\n\t\t\tvar fnWrapper;\n\t\t\tvar keysPressed = [];\n\t\t\tvar i;\n\n\t\t\tfn = args.fn;\n\n\t\t\tif (keys.length > 1) {\n\t\t\t\t// Record as many of the past keys pressed as required for the sequence\n\n\t\t\t\tfnWrapper = function (event) {\n\t\t\t\t\tvar key = event.key.toLowerCase();\n\n\t\t\t\t\t// Don't check key presses if focus is on an input element\n\t\t\t\t\tif (module._isFocusOnInput()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (key !== 'shift') {\n\t\t\t\t\t\t// Ignore shift, as it's used as a modifier\n\t\t\t\t\t\tkeysPressed.push(key);\n\t\t\t\t\t}\n\t\t\t\t\tif (keysPressed.length > keys.length) {\n\t\t\t\t\t\tkeysPressed.shift();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (key === keys[keys.length - 1]) {\n\t\t\t\t\t\t// When the final key is pressed, check if the whole sequence matches\n\t\t\t\t\t\tfor (i = 0; i < keys.length; i++) {\n\t\t\t\t\t\t\tif (keys[i] !== keysPressed[i]) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// i only reaches keys.length if the break; line was never executed\n\t\t\t\t\t\tif (i === keys.length) {\n\t\t\t\t\t\t\tif (fn.apply(this, arguments) === false) {\n\t\t\t\t\t\t\t\t// Implement jQuery-like shorthand of return false;\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tevent.stopPropagation();\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\n\t\t\t\tkeyString = keys.join(',');\n\t\t\t\tmodule._bindFn(keyString, fn, fnWrapper);\n\t\t\t}\n\t\t},\n\n\t\tunbindSequence: function (keyA, keyB, keyC, fn) {\n\t\t\tvar args = module._getSequenceArgs.apply(this, arguments);\n\t\t\tvar keyString = args.keys.join(',');\n\n\t\t\tfn = args.fn;\n\n\t\t\tmodule.unbind(keyString, fn);\n\t\t}\n\t};\n\n\treturn {\n\t\tbind: module.bind,\n\t\tunbind: module.unbind,\n\t\tbindSequence: module.bindSequence,\n\t\tunbindSequence: module.unbindSequence\n\t};\n})();\n\nvar bind = keys.bind;\nvar unbind = keys.unbind;\nvar bindSequence = keys.bindSequence;\nvar unbindSequence = keys.unbindSequence;\n\nexport { bind, unbind, bindSequence, unbindSequence };","/*\n* Lazy Load - jQuery plugin for lazy loading images\n*\n* Copyright (c) 2007-2012 Mika Tuupola\n*\n* Licensed under the MIT license:\n*   http://www.opensource.org/licenses/mit-license.php\n*\n* Project home:\n*   http://www.appelsiini.net/projects/lazyload\n*\n* Version:  1.8.2\n*\n*/\n\nimport jQuery from 'jquery';\n\n\n(function ( $, window, document, undefined ) {\n\tvar $window = $( window );\n\n\t$.fn.lazyload = function ( options ) {\n\t\tvar elements = this;\n\t\tvar $container;\n\t\tvar settings = {\n\t\t\tthreshold: 0,\n\t\t\tfailure_limit: 0,\n\t\t\tevent: \"scroll\",\n\t\t\teffect: \"show\",\n\t\t\tcontainer: window,\n\t\t\tdata_attribute: \"original\",\n\t\t\tskip_invisible: true,\n\t\t\tappear: null,\n\t\t\tload: null\n\t\t};\n\n\t\tfunction update() {\n\t\t\tvar counter = 0;\n\n\t\t\telements.each( function () {\n\t\t\t\tvar $this = $( this );\n\t\t\t\tif ( settings.skip_invisible && !$this.is( \":visible\" ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( $.abovethetop( this, settings ) ||\n\t\t\t\t\t$.leftofbegin( this, settings ) ) {\n\t\t\t\t\t/* Nothing. */\n\t\t\t\t} else if ( !$.belowthefold( this, settings ) &&\n\t\t\t\t\t!$.rightoffold( this, settings ) ) {\n\t\t\t\t\t$this.trigger( \"appear\" );\n\t\t\t\t\t/* if we found an image we'll load, reset the counter */\n\t\t\t\t\tcounter = 0;\n\t\t\t\t} else {\n\t\t\t\t\tif ( ++counter > settings.failure_limit ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( options ) {\n\t\t\t/* Maintain BC for a couple of versions. */\n\t\t\tif ( undefined !== options.failurelimit ) {\n\t\t\t\toptions.failure_limit = options.failurelimit;\n\t\t\t\tdelete options.failurelimit;\n\t\t\t}\n\t\t\tif ( undefined !== options.effectspeed ) {\n\t\t\t\toptions.effect_speed = options.effectspeed;\n\t\t\t\tdelete options.effectspeed;\n\t\t\t}\n\n\t\t\t$.extend( settings, options );\n\t\t}\n\n\t\t/* Cache container as jQuery as object. */\n\t\t$container = ( settings.container === undefined ||\n\t\t\t\t\t  settings.container === window ) ? $window : $( settings.container );\n\n\t\t/* Fire one scroll event per scroll. Not one scroll event per image. */\n\t\tif ( 0 === settings.event.indexOf( \"scroll\" ) ) {\n\t\t\t$container.bind( settings.event, function ( event ) {\n\t\t\t\treturn update();\n\t\t\t} );\n\t\t}\n\n\t\tthis.each( function () {\n\t\t\tvar self = this;\n\t\t\tvar $self = $( self );\n\n\t\t\tself.loaded = false;\n\n\t\t\t/* When appear is triggered load original image. */\n\t\t\t$self.one( \"appear\", function () {\n\t\t\t\tif ( !this.loaded ) {\n\t\t\t\t\tif ( settings.appear ) {\n\t\t\t\t\t\tvar elements_left = elements.length;\n\t\t\t\t\t\tsettings.appear.call( self, elements_left, settings );\n\t\t\t\t\t}\n\t\t\t\t\t$( \"<img />\" )\n\t\t\t\t\t\t.bind( \"load\", function () {\n\t\t\t\t\t\t\t$self\n\t\t\t\t\t\t\t\t.hide()\n\t\t\t\t\t\t\t\t.attr( \"src\", $self.data( settings.data_attribute ) )\n\t\t\t\t\t\t\t\t[settings.effect]( settings.effect_speed );\n\t\t\t\t\t\t\tself.loaded = true;\n\n\t\t\t\t\t\t\t/* Remove image from array so it is not looped next time. */\n\t\t\t\t\t\t\tvar temp = $.grep( elements, function ( element ) {\n\t\t\t\t\t\t\t\treturn !element.loaded;\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\telements = $( temp );\n\n\t\t\t\t\t\t\tif ( settings.load ) {\n\t\t\t\t\t\t\t\tvar elements_left = elements.length;\n\t\t\t\t\t\t\t\tsettings.load.call( self, elements_left, settings );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.attr( \"src\", $self.data( settings.data_attribute ) );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t/* When wanted event is triggered load original image */\n\t\t\t/* by triggering appear.                              */\n\t\t\tif ( 0 !== settings.event.indexOf( \"scroll\" ) ) {\n\t\t\t\t$self.bind( settings.event, function ( event ) {\n\t\t\t\t\tif ( !self.loaded ) {\n\t\t\t\t\t\t$self.trigger( \"appear\" );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\t/* Check if something appears when window is resized. */\n\t\t$window.bind( \"resize\", function ( event ) {\n\t\t\tupdate();\n\t\t} );\n\n\t\t/* With IOS5 force loading images when navigating with back button. */\n\t\t/* Non optimal workaround. */\n\t\tif ( ( /iphone|ipod|ipad.*os 5/gi ).test( navigator.appVersion ) ) {\n\t\t\t$window.bind( \"pageshow\", function ( event ) {\n\t\t\t\tif ( event.originalEvent.persisted ) {\n\t\t\t\t\telements.each( function () {\n\t\t\t\t\t\t$( this ).trigger( \"appear\" );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t/* Force initial check if images should appear. */\n\t\t$( document ).ready( function () {\n\t\t\tupdate();\n\t\t} );\n\n\t\treturn this;\n\t};\n\n\t/* Convenience methods in jQuery namespace.           */\n\t/* Use as  $.belowthefold(element, {threshold : 100, container : window}) */\n\n\t$.belowthefold = function ( element, settings ) {\n\t\tvar fold;\n\n\t\tif ( settings.container === undefined || settings.container === window ) {\n\t\t\tfold = $window.height() + $window.scrollTop();\n\t\t} else {\n\t\t\tfold = $( settings.container ).offset().top + $( settings.container ).height();\n\t\t}\n\n\t\treturn fold <= $( element ).offset().top - settings.threshold;\n\t};\n\n\t$.rightoffold = function ( element, settings ) {\n\t\tvar fold;\n\n\t\tif ( settings.container === undefined || settings.container === window ) {\n\t\t\tfold = $window.width() + $window.scrollLeft();\n\t\t} else {\n\t\t\tfold = $( settings.container ).offset().left + $( settings.container ).width();\n\t\t}\n\n\t\treturn fold <= $( element ).offset().left - settings.threshold;\n\t};\n\n\t$.abovethetop = function ( element, settings ) {\n\t\tvar fold;\n\n\t\tif ( settings.container === undefined || settings.container === window ) {\n\t\t\tfold = $window.scrollTop();\n\t\t} else {\n\t\t\tfold = $( settings.container ).offset().top;\n\t\t}\n\n\t\treturn fold >= $( element ).offset().top + settings.threshold + $( element ).height();\n\t};\n\n\t$.leftofbegin = function ( element, settings ) {\n\t\tvar fold;\n\n\t\tif ( settings.container === undefined || settings.container === window ) {\n\t\t\tfold = $window.scrollLeft();\n\t\t} else {\n\t\t\tfold = $( settings.container ).offset().left;\n\t\t}\n\n\t\treturn fold >= $( element ).offset().left + settings.threshold + $( element ).width();\n\t};\n\n\t$.inviewport = function ( element, settings ) {\n\t\treturn !$.rightoffold( element, settings ) && !$.leftofbegin( element, settings ) &&\n\t\t\t\t!$.belowthefold( element, settings ) && !$.abovethetop( element, settings );\n\t};\n\n\t/* Custom selectors for your convenience.   */\n\t/* Use as $(\"img:below-the-fold\").something() or */\n\t/* $(\"img\").filter(\":below-the-fold\").something() which is faster */\n\n\t$.extend( $.expr[':'], {\n\t\t\"below-the-fold\": function ( a ) { return $.belowthefold( a, { threshold: 0 } ); },\n\t\t\"above-the-top\": function ( a ) { return !$.belowthefold( a, { threshold: 0 } ); },\n\t\t\"right-of-screen\": function ( a ) { return $.rightoffold( a, { threshold: 0 } ); },\n\t\t\"left-of-screen\": function ( a ) { return !$.rightoffold( a, { threshold: 0 } ); },\n\t\t\"in-viewport\": function ( a ) { return $.inviewport( a, { threshold: 0 } ); },\n\t\t/* Maintain BC for couple of versions. */\n\t\t\"above-the-fold\": function ( a ) { return !$.belowthefold( a, { threshold: 0 } ); },\n\t\t\"right-of-fold\": function ( a ) { return $.rightoffold( a, { threshold: 0 } ); },\n\t\t\"left-of-fold\": function ( a ) { return !$.rightoffold( a, { threshold: 0 } ); }\n\t} );\n\n} )( jQuery, window, document );","/*! Copyright 2012, Ben Lin (http://dreamerslab.com/)\n * Licensed under the MIT License (LICENSE.txt).\n *\n * Version: 1.0.16\n *\n * Requires: jQuery >= 1.2.3\n */\n\nimport jQuery from 'jquery';\n\n;( function ( $ ){\n  $.fn.addBack = $.fn.addBack || $.fn.andSelf;\n\n  $.fn.extend({\n\n    actual : function ( method, options ){\n      // check if the jQuery method exist\n      if( !this[ method ]){\n        throw '$.actual => The jQuery method \"' + method + '\" you called does not exist';\n      }\n\n      var defaults = {\n        absolute      : false,\n        clone         : false,\n        includeMargin : false\n      };\n\n      var configs = $.extend( defaults, options );\n\n      var $target = this.eq( 0 );\n      var fix, restore;\n\n      if( configs.clone === true ){\n        fix = function (){\n          var style = 'position: absolute !important; top: -1000 !important; ';\n\n          // this is useful with css3pie\n          $target = $target.\n            clone().\n            attr( 'style', style ).\n            appendTo( 'body' );\n        };\n\n        restore = function (){\n          // remove DOM element after getting the width\n          $target.remove();\n        };\n      }else{\n        var tmp   = [];\n        var style = '';\n        var $hidden;\n\n        fix = function (){\n          // get all hidden parents\n          $hidden = $target.parents().addBack().filter( ':hidden' );\n          style   += 'visibility: hidden !important; display: block !important; ';\n\n          if( configs.absolute === true ) style += 'position: absolute !important; ';\n\n          // save the origin style props\n          // set the hidden el css to be got the actual value later\n          $hidden.each( function (){\n            // Save original style. If no style was set, attr() returns undefined\n            var $this     = $( this );\n            var thisStyle = $this.attr( 'style' );\n\n            tmp.push( thisStyle );\n            // Retain as much of the original style as possible, if there is one\n            $this.attr( 'style', thisStyle ? thisStyle + ';' + style : style );\n          });\n        };\n\n        restore = function (){\n          // restore origin style values\n          $hidden.each( function ( i ){\n            var $this = $( this );\n            var _tmp  = tmp[ i ];\n\n            if( _tmp === undefined ){\n              $this.removeAttr( 'style' );\n            }else{\n              $this.attr( 'style', _tmp );\n            }\n          });\n        };\n      }\n\n      fix();\n      // get the actual value with user specific methed\n      // it can be 'width', 'height', 'outerWidth', 'innerWidth'... etc\n      // configs.includeMargin only works for 'outerWidth' and 'outerHeight'\n      var actual = /(outer)/.test( method ) ?\n        $target[ method ]( configs.includeMargin ) :\n        $target[ method ]();\n\n      restore();\n      // IMPORTANT, this plugin only return the value of the first element\n      return actual;\n    }\n  });\n})( jQuery );\n","import jQuery from 'jquery';\nimport { throttle } from 'Util/throttle';\nimport { subscribe, publish } from 'Util/pubsub';\n\n(function($, window, document, undefined) {\n\n\t'use strict';\n\n\t// Create the defaults once\n\tvar pluginName = 'lazyScroll';\n\tvar defaults = {\n\t\ttolerance: 100,\n\t\tcallback: function () {\n\t\t\tconsole.log('scrolled');\n\t\t}\n\t};\n\tvar $window = $(window);\n\n\tvar _getPosition = function($el) {\n\t\treturn $el.offset().top;\n\t};\n\n\tvar _getCurrentScrollPosition = function() {\n\t\treturn $window.scrollTop();\n\t};\n\n\tvar _lazyCondition = function(position, tolerance) {\n\t//\tconsole.log(position, _getCurrentScrollPosition() + $(window).height() + tolerance, position <= (_getCurrentScrollPosition() + $(window).height()) + tolerance);\n\t\treturn position <= (_getCurrentScrollPosition() + $(window).height()) + tolerance;\n\t};\n\n\tvar initWindowEvents = function() {\n\t\t\n\t\tif (!$window .data('/lazyscroll/scroll')) {\n\t\t\t$window .on('scroll', throttle( function () {\n\t\t\t\tpublish('/lazyscroll/scroll');\n\t\t\t}));\n\t\t\t$window.data('/lazyscroll/scroll', true);\n\t\t}\n\t\t\n\t\tif (!$window .data('/lazyscroll/resize')) {\n\t\t\t$window .on('resize', throttle( function () {\n\t\t\t\tpublish('/lazyscroll/resize');\n\t\t\t}));\n\t\t\t$window.data('/lazyscroll/resize', true);\n\t\t}\n\t};\n\n\t// The actual plugin constructor\n\tfunction Plugin(element, options) {\n\t\tthis.element = element;\n\t\tthis.$element = $(element);\n\t\tthis.options = $.extend({ }, defaults, options);\n\t\tthis.position = _getPosition(this.$element);\n\n\t\tthis._defaults = defaults;\n\t\tthis._name = pluginName;\n\n\t\tthis.init();\n\t}\n\n\tPlugin.prototype = {\n\t\tinit: function () {\n\t\t\tthis.initSubscriptions();\n\t\t\tthis.processScrollEvent(this);\n\t\t},\n\t\tinitSubscriptions: function () {\n\t\t\tvar $this = this;\n\t\t\tsubscribe('/lazyscroll/scroll', function () {\n\t\t\t\t$this.processScrollEvent($this);\n\t\t\t});\n\t\t\tsubscribe('/lazyscroll/resize', function () {\n\t\t\t\t$this.recalculatePosition($this);\n\t\t\t\t$this.processScrollEvent($this);\n\t\t\t});\n\t\t},\n\t\tprocessScrollEvent: function ( $thisPlugin ) {\n\t\t\tif($thisPlugin.$element) {\n\t\t\t\tvar triggerCondition = _lazyCondition( $thisPlugin.position, $thisPlugin.options.tolerance);\n\t\t\t\tif(triggerCondition) {\n\t\t\t\t\t$thisPlugin.fire.call($thisPlugin);\n\t\t\t\t\tthis.$element.trigger('lazyscroll.fire');\n\t\t\t\t\t$thisPlugin.$element = null;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\trecalculatePosition: function ( $thisPlugin ) {\n\t\t\tif($thisPlugin.$element) {\n\t\t\t\t$thisPlugin.position = _getPosition(this.$element);\n\t\t\t}\n\t\t},\n\t\tfire: function() {\n\t\t\tthis.options.callback.call(this.element);\n\t\t}\n\t};\n\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function(options) {\n\t\treturn this.each(function() {\n\t\t\tif (!$.data(this, 'plugin_' + pluginName)) {\n\t\t\t\t$.data(this, 'plugin_' + pluginName,\n\t\t\t\t\tnew Plugin(this, options));\n\t\t\t}\n\t\t});\n\t};\n\n\tinitWindowEvents();\n\n})(jQuery, window, document);","import $ from 'jquery';\nimport { publish, unpublish, subscribe } from 'Util/pubsub';\n\nimport 'lazyload';\nimport 'lazyscroll';\nimport { actual } from 'actual';\n\nvar contentClass = '.js-lazy-content';\nvar imagesClass = '.js-lazy-auto';\nvar $lazyLoadContent;\nvar $lazyLoadImages;\nvar widthPattern = /width=[0-9]*/;\nvar heightPattern = /height=[0-9]*/;\nvar roundTo = 100;\n\nvar resizeTimer;\nvar lazyLoadDataAttr = \"original\";\n\nvar LazyLoad = {\n\n\tinit: function () {\n\n\t\tLazyLoad = this;\n\t\t$lazyLoadContent = $(contentClass);\n\t\t$lazyLoadImages = $(imagesClass);\n\n\t\tif ($lazyLoadImages.length) {\n\t\t\tLazyLoad.updateImageWidth($lazyLoadImages);\n\t\t\tLazyLoad.loadImages($lazyLoadImages);\n\t\t}\n\t\tif ($lazyLoadContent.length) {\n\t\t\tLazyLoad.loadContent();\n\t\t}\n\n\t\tLazyLoad._initSubscriptions();\n\t},\n\n\tinitLazyFunction: function (config) {\n\t\tconfig.elems.lazyScroll({\n\t\t\tcallback: config.callback\n\t\t});\n\t},\n\n\t_initSubscriptions: function () {\n\t\tsubscribe('/lazyload/image', this.loadImages);\n\t\tsubscribe('/lazyload/ajax', this._loadAjaxedImages);\n\t\t$(window).on('resize /lazyload/resize', this._processResize);\n\t},\n\n\t_loadAjaxedImages: function (data) {\n\n\t\tif (data.html) {\n\t\t\tLazyLoad.loadImagesInHtml(data.html);\n\t\t}\n\t\tLazyLoad.loadImages(data.images);\n\t},\n\n\tloadContent: function ($html) {\n\t\t$html = $html instanceof jQuery ? $html : $($.trim($html));\n\t\tif ($html.length) {\n\t\t\tvar $content = $html.find(contentClass);\n\t\t\tLazyLoad.content($content);\n\t\t\treturn;\n\t\t}\n\t\tLazyLoad.content($lazyLoadContent);\n\t},\n\n\tupdateImageWidth: function ($images) {\n\t\t$images.each(function () {\n\t\t\tvar $image = $(this);\n\t\t\tvar src = $image.data('original');\n\t\t\tif (src === \"\" || $image.closest('.rotator').length) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar container = $image.closest('.figure');\n\t\t\t//fix if .figure is not used. use parent element.\n\t\t\tif (!container.length) {\n\t\t\t\tcontainer = $image.parent();\n\t\t\t}\n\t\t\tvar containerWidth = container.width();\n\t\t\tif (containerWidth === 0) {\n\t\t\t\tcontainerWidth = container.actual('width');\n\t\t\t}\n\t\t\tif (containerWidth === 0 || container.is(':not(:visible)')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If an image is restrained by the height of its container, and\n\t\t\t// is wider than its container, use the width of the <img> element\n\t\t\tif ((container.height() >= $image.height()) && (containerWidth < $image.width())) {\n\t\t\t\tcontainerWidth = $image.width();\n\t\t\t}\n\n\t\t\tif (container.is('[data-sizes]')) {\n\t\t\t\tcontainerWidth = LazyLoad.getBestWidth(containerWidth, container.data('sizes'));\n\t\t\t}\n\n\t\t\tvar pixelRatio = Math.min(window.devicePixelRatio || 1, 2);\n\t\t\t//need to round width to reduce 1px image generation variations on server\n\t\t\tvar widthRounded = Math.ceil(pixelRatio * containerWidth / roundTo) * roundTo;\n\n\t\t\tvar oldWidth = $image.data('newWidth');\n\n\t\t\tif (!oldWidth || oldWidth < widthRounded) {\n\t\t\t\tsrc = LazyLoad.changeWidth(src, widthRounded);\n\t\t\t\t$image.data('original', src);\n\t\t\t\t$image.data('newWidth', widthRounded);\n\t\t\t}\n\t\t});\n\t},\n\n\tchangeWidth: function (src, width) {\n\t\tvar ratio = LazyLoad.getRatio(src);\n\t\tif (widthPattern.test(src)) {\n\t\t\tsrc = src.replace(widthPattern, 'width=' + width);\n\t\t} else if (src.indexOf('?') !== -1) {\n\t\t\tsrc += '&width=' + width;\n\t\t} else {\n\t\t\tsrc += '?width=' + width;\n\t\t}\n\n\t\tif (ratio) {\n\t\t\t//var height = Math.round(width * ratio);\n\t\t\tif (heightPattern.test(src)) {\n\t\t\t\tsrc = src.replace(heightPattern, 'heightratio=' + ratio);\n\t\t\t} else {\n\t\t\t\tsrc += '&heightratio=' + ratio;\n\t\t\t}\n\t\t}\n\t\treturn src;\n\t},\n\n\tgetRatio: function (src) {\n\t\tvar ratio = 0;\n\t\tvar data = {};\n\t\tif (src.indexOf('?') !== -1) {\n\t\t\tvar querys = src.split('?')[1].split('&');\n\t\t\tfor (var i = 0; i < querys.length; i++) {\n\t\t\t\tvar keyValue = querys[i].split('=');\n\t\t\t\tdata[keyValue[0]] = keyValue[1];\n\t\t\t}\n\t\t}\n\n\t\tif (data.height && data.width) {\n\t\t\tratio = parseInt(data.height, 10) / parseInt(data.width, 10);\n\t\t}\n\n\t\treturn ratio;\n\t},\n\n\tgetBestWidth: function (containerWidth, sizeData) {\n\t\tvar sizes = sizeData.match(/[0-9]+/g);\n\t\tsizes = $.map(sizes, function (num) { return parseInt(num.toString(), 10); });\n\t\tsizes.sort(function (a, b) { return a - b; });\n\n\t\tif (sizes.length) {\n\t\t\tvar bestSize = sizes[sizes.length - 1];\n\t\t\tfor (var i = sizes.length - 2; i >= 0; i--) {\n\t\t\t\tif (sizes[i] >= containerWidth) {\n\t\t\t\t\tbestSize = sizes[i];\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn bestSize;\n\t\t}\n\t\treturn containerWidth;\n\t},\n\n\t_processResize: function () {\n\t\tif (resizeTimer) {\n\t\t\tclearTimeout(resizeTimer);\n\t\t}\n\t\tresizeTimer = setTimeout(function () {\n\t\t\tif ($lazyLoadImages.length) {\n\t\t\t\tLazyLoad.updateImageWidth($lazyLoadImages);\n\t\t\t\tLazyLoad._getImages($lazyLoadImages, true);\n\t\t\t}\n\t\t}, 1500);\n\t},\n\n\tloadImages: function ($images) {\n\t\tLazyLoad._getImages($images);\n\t},\n\n\tloadImagesInHtml: function ($html) {\n\t\t$html = $html instanceof jQuery ? $html : $($.trim($html));\n\t\tif ($html.length) {\n\t\t\tvar $images = $html.find(imagesClass);\n\t\t\tif (!$images.length) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t$lazyLoadImages = $lazyLoadImages.add($images);\n\t\t\tLazyLoad.updateImageWidth($images);\n\t\t\tLazyLoad._getImages($images);\n\t\t\treturn;\n\t\t}\n\t\tthis._getImages($lazyLoadImages);\n\t},\n\n\t_getImages: function ($images, noAnimation) {\n\t\tvar effect = !noAnimation && !$('.oldie').length ? 'fadeIn' : 'show';\n\n\t\tif (!$images || !$images.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar $lazyImages = $images.filter(function () {\n\t\t\tvar $thisImg = $(this);\n\n\t\t\treturn this.src.indexOf($thisImg.data('original')) === -1;\n\t\t});\n\n\t\tif ($lazyImages.length) {\n\t\t\t$lazyImages.lazyload({\n\t\t\t\teffect: effect,\n\t\t\t\tfailure_limit: 99999,\n\t\t\t\tthreshold: 300,\n\t\t\t\tdata_attribute: lazyLoadDataAttr,\n\t\t\t});\n\t\t}\n\t},\n\n\tcontent: function ($elms) {\n\t\t$elms.lazyScroll({\n\t\t\tcallback: function () {\n\t\t\t\tthis.$element.ajaxInclude();\n\t\t\t}\n\t\t});\n\t}\n};\n\nexport { LazyLoad };","// enquire.js v1.5.6 - Awesome Media Queries in JavaScript\n// Copyright (c) 2013 Nick Williams - http://wicky.nillia.ms/enquire.js\n// License: MIT (http://www.opensource.org/licenses/mit-license.php)\n\n\nwindow.enquire = (function(matchMedia) {\n\n\t\"use strict\";\n\n\t/**\n\t * Helper function for iterating over a collection\n\t *\n\t * @param collection\n\t * @param fn\n\t */\n\tfunction each(collection, fn) {\n\t\tvar i      = 0,\n\t\t\tlength = collection.length,\n\t\t\tcont;\n\n\t\tfor(i; i < length; i++) {\n\t\t\tcont = fn(collection[i], i);\n\t\t\tif(cont === false) {\n\t\t\t\tbreak; //allow early exit\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Helper function for determining whether target object is an array\n\t *\n\t * @param target the object under test\n\t * @return {Boolean} true if array, false otherwise\n\t */\n\tfunction isArray(target) {\n\t\treturn Object.prototype.toString.apply(target) === \"[object Array]\";\n\t}\n\n\t/**\n\t * Helper function for determining whether target object is a function\n\t *\n\t * @param target the object under test\n\t * @return {Boolean} true if function, false otherwise\n\t */\n\tfunction isFunction(target) {\n\t\treturn typeof target === \"function\";\n\t}\n\n\t/**\n\t * Delegate to handle a media query being matched and unmatched.\n\t *\n\t * @param {object} options\n\t * @param {function} options.match callback for when the media query is matched\n\t * @param {function} [options.unmatch] callback for when the media query is unmatched\n\t * @param {function} [options.setup] one-time callback triggered the first time a query is matched\n\t * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\n\t * @constructor\n\t */\n\tfunction QueryHandler(options) {\n\t\tthis.initialised = false;\n\t\tthis.options = options;\n\n\t\tif(!options.deferSetup) {\n\t\t\tthis.setup();\n\t\t}\n\t}\n\tQueryHandler.prototype = {\n\n\t\t/**\n\t\t * coordinates setup of the handler\n\t\t *\n\t\t * @function\n\t\t */\n\t\tsetup : function(e) {\n\t\t\tif(this.options.setup){\n\t\t\t\tthis.options.setup(e);\n\t\t\t}\n\t\t\tthis.initialised = true;\n\t\t},\n\n\t\t/**\n\t\t * coordinates setup and triggering of the handler\n\t\t *\n\t\t * @function\n\t\t * @param [e] the browser event which triggered a match\n\t\t */\n\t\ton : function(e) {\n\t\t\tif(!this.initialised){\n\t\t\t\tthis.setup(e);\n\t\t\t}\n\t\t\tthis.options.match(e);\n\t\t},\n\n\t\t/**\n\t\t * coordinates the unmatch event for the handler\n\t\t *\n\t\t * @function\n\t\t * @param [e] the browser event which triggered a match\n\t\t */\n\t\toff : function(e) {\n\t\t\tif(this.options.unmatch){\n\t\t\t\tthis.options.unmatch(e);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * called when a handler is to be destroyed.\n\t\t * delegates to the destroy or unmatch callbacks, depending on availability.\n\t\t *\n\t\t * @function\n\t\t */\n\t\tdestroy : function() {\n\t\t\tif(this.options.destroy) {\n\t\t\t\tthis.options.destroy();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.off();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * determines equality by reference.\n\t\t * if object is supplied compare options, if function, compare match callback\n\t\t *\n\t\t * @function\n\t\t * @param {object || function} [target] the target for comparison\n\t\t */\n\t\tequals : function(target) {\n\t\t\treturn this.options === target || this.options.match === target;\n\t\t}\n\n\t};\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\nfunction MediaQuery(query, isUnconditional) {\n\tthis.query = query;\n\tthis.isUnconditional = isUnconditional;\n\t\n\tthis.handlers = [];\n\tthis.matched = false;\n}\nMediaQuery.prototype = {\n\n\t/**\n\t * tests whether this media query is currently matching\n\t *\n\t * @function\n\t * @returns {boolean} true if match, false otherwise\n\t */\n\tmatchMedia : function() {\n\t\treturn matchMedia(this.query).matches;\n\t},\n\n\t/**\n\t * add a handler for this query, triggering if already active\n\t *\n\t * @function\n\t * @param {object} handler\n\t * @param {function} handler.match callback for when query is activated\n\t * @param {function} [handler.unmatch] callback for when query is deactivated\n\t * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n\t * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n\t * @param {boolean} [turnOn=false] should the handler be turned on if the query is matching?\n\t */\n\taddHandler : function(handler, turnOn) {\n\t\tvar qh = new QueryHandler(handler);\n\t\tthis.handlers.push(qh);\n\n\t\tturnOn && this.matched && qh.on();\n\t},\n\n\t/**\n\t * removes the given handler from the collection, and calls it's destroy methods\n\t *\n\t * @function\n\t * @param {object || function} handler the handler to remove\n\t */\n\tremoveHandler : function(handler) {\n\t\tvar handlers = this.handlers;\n\t\teach(handlers, function(h, i) {\n\t\t\tif(h.equals(handler)) {\n\t\t\t\th.destroy();\n\t\t\t\treturn !handlers.splice(i,1); //remove from array and exit each early\n\t\t\t}\n\t\t});\n\t},\n\n\t/*\n\t * assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n\t *\n\t * @function\n\t */\n\tassess : function(e) {\n\t\tif(this.matchMedia() || this.isUnconditional) {\n\t\t\tthis.match(e);\n\t\t}\n\t\telse {\n\t\t\tthis.unmatch(e);\n\t\t}\n\t},\n\n\t/**\n\t * activates a query.\n\t * callbacks are fired only if the query is currently unmatched\n\t *\n\t * @function\n\t * @param {Event} [e] browser event if triggered as the result of a browser event\n\t */\n\tmatch : function(e) {\n\t\tif(this.matched) {\n\t\t\treturn; //already on\n\t\t}\n\n\t\teach(this.handlers, function(handler) {\n\t\t\thandler.on(e);\n\t\t});\n\t\tthis.matched = true;\n\t},\n\n\t/**\n\t * deactivates a query.\n\t * callbacks are fired only if the query is currently matched\n\t *\n\t * @function\n\t * @param {Event} [e] browser event if triggered as the result of a browser event\n\t */\n\tunmatch : function(e) {\n\t\tif(!this.matched) {\n\t\t\treturn; //already off\n\t\t}\n\n\t\teach(this.handlers, function(handler){\n\t\t\thandler.off(e);\n\t\t});\n\t\tthis.matched = false;\n\t}\n};\n\t/**\n\t * Allows for reigstration of query handlers.\n\t * Manages the  query handler's state and is responsible for wiring up browser events\n\t *\n\t * @constructor\n\t */\n\tfunction MediaQueryDispatch () {\n\t\tif(!matchMedia) {\n\t\t\tthrow new Error('matchMedia is required');\n\t\t}\n\n\t\tvar capabilityTest = new MediaQuery('only all');\n\t\tthis.queries = {};\n\t\tthis.listening = false;\n\t\tthis.browserIsIncapable = !capabilityTest.matchMedia();\n\t}\n\n\tMediaQueryDispatch.prototype = {\n\n\t\t/**\n\t\t * Registers a handler for the given media query\n\t\t *\n\t\t * @function\n\t\t * @param {string} q the media query\n\t\t * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n\t\t * @param {function} options.match fired when query matched\n\t\t * @param {function} [options.unmatch] fired when a query is no longer matched\n\t\t * @param {function} [options.setup] fired when handler first triggered\n\t\t * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n\t\t * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n\t\t */\n\t\tregister : function(q, options, shouldDegrade) {\n\t\t\tvar queries         = this.queries,\n\t\t\t\tisUnconditional = shouldDegrade && this.browserIsIncapable,\n\t\t\t\tlistening       = this.listening;\n\n\t\t\tif(!queries.hasOwnProperty(q)) {\n\t\t\t\tqueries[q] = new MediaQuery(q, isUnconditional);\n\n\t\t\t\tthis.listening && queries[q].assess();\n\t\t\t}\n\n\t\t\t//normalise to object\n\t\t\tif(isFunction(options)) {\n\t\t\t\toptions = {\n\t\t\t\t\tmatch : options\n\t\t\t\t};\n\t\t\t}\n\t\t\t//normalise to array\n\t\t\tif(!isArray(options)) {\n\t\t\t\toptions = [options];\n\t\t\t}\n\t\t\teach(options, function(handler) {\n\t\t\t\tqueries[q].addHandler(handler, listening);\n\t\t\t});\n\n\t\t\treturn this;\n\t\t},\n\n\t\t/**\n\t\t * unregisters a query and all it's handlers, or a specific handler for a query\n\t\t *\n\t\t * @function\n\t\t * @param {string} q the media query to target\n\t\t * @param {object || function} [handler] specific handler to unregister\n\t\t */\n\t\tunregister : function(q, handler) {\n\t\t\tvar queries = this.queries;\n\n\t\t\tif(!queries.hasOwnProperty(q)) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\t\n\t\t\tif(!handler) {\n\t\t\t\teach(this.queries[q].handlers, function(handler) {\n\t\t\t\t\thandler.destroy();\n\t\t\t\t});\n\t\t\t\tdelete queries[q];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tqueries[q].removeHandler(handler);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\t/**\n\t\t * Tests all media queries and calls relevant methods depending whether\n\t\t * transitioning from unmatched->matched or matched->unmatched\n\t\t *\n\t\t * @function\n\t\t * @param {Event} [e] if fired as a result of a browser event,\n\t\t * an event can be supplied to propagate to the various media query handlers\n\t\t */\n\t\tfire : function(e) {\n\t\t\tvar queries = this.queries,\n\t\t\t\tmediaQuery;\n\n\t\t\tfor(mediaQuery in queries) {\n\t\t\t\tif(queries.hasOwnProperty(mediaQuery)) {\n\t\t\t\t\tqueries[mediaQuery].assess(e);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\t/**\n\t\t * sets up listeners for resize and orientation events\n\t\t *\n\t\t * @function\n\t\t * @param {int} [timeout=500] the time (in milliseconds) after which the queries should be handled\n\t\t */\n\t\tlisten : function(timeout) {\n\t\t\tvar self = this;\n\n\t\t\ttimeout = timeout || 500;\n\n\t\t\t//creates closure for separate timed events\n\t\t\tfunction wireFire(event) {\n\t\t\t\tvar timer;\n\n\t\t\t\twindow.addEventListener(event, function(e) {\n\t\t\t\t\ttimer && clearTimeout(timer);\n\n\t\t\t\t\ttimer = setTimeout(function() {\n\t\t\t\t\t\tself.fire(e);\n\t\t\t\t\t}, timeout);\n\t\t\t\t}, false);\n\t\t\t}\n\n\t\t\t//prevent multiple event handlers\n\t\t\tif(this.listening) {\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\t// any browser that doesn't implement this\n\t\t\t// will not have media query support\n\t\t\tif(window.addEventListener) {\n\t\t\t\twireFire('resize');\n\t\t\t\twireFire('orientationChange');\n\t\t\t}\n\n\t\t\tself.fire();\n\t\t\tthis.listening = true;\n\t\t\t\n\t\t\treturn this;\n\t\t}\n\t};\n\n\n\treturn new MediaQueryDispatch();\n\n}(window.matchMedia));","import $ from 'jquery';\nimport 'enquire';\n\nvar shouldDegrade;\n\nvar MediaQueries = {\n\tqueries: {\n\t\t'megamenu--small': 'screen and (max-width: 1023px)',\n\t\t'megamenu--large': 'screen and (min-width: 1024px)',\n\n\t\t'pricing--two-col': 'screen and (min-width: 768px)',\n\t\t'pricing--three-col': 'screen and (min-width: 1024px)',\n\n\t\t'button-filter-carousel': 'screen and (max-width: 767px)'\n\t},\n\n\tinit: function () {\n\t\t//We only want to fire mediaqueries for mediaquery capable browsers. i.e. Not Old IE which gets a fixed view\n\t\tshouldDegrade = !$('.oldie').length;\n\t},\n\n\tregister: function (config) {\n\t\tif (Object.prototype.toString.call(config) === '[object Array]') {\n\t\t\tfor (var i = 0; i < config.length; i++) {\n\t\t\t\tvar currentConfig = config[i];\n\t\t\t\tthis._addToHandler(currentConfig);\n\t\t\t}\n\t\t} else {\n\t\t\tthis._addToHandler(config);\n\t\t}\n\n\t},\n\n\t_addToHandler: function (config) {\n\t\t//Init JS mediaquery handlers using Enquire.JS\n\t\tenquire.register(config.queries, {\n\t\t\tmatch: config.match,\n\t\t\tunmatch: config.unmatch,\n\t\t\tdeferSetup: true\n\t\t}, config.shouldDegrade).listen(250);\n\t}\n};\n\nexport { MediaQueries };","var map = {\n\t\"./af\": 5177,\n\t\"./af.js\": 5177,\n\t\"./ar\": 1509,\n\t\"./ar-dz\": 1488,\n\t\"./ar-dz.js\": 1488,\n\t\"./ar-kw\": 8676,\n\t\"./ar-kw.js\": 8676,\n\t\"./ar-ly\": 2353,\n\t\"./ar-ly.js\": 2353,\n\t\"./ar-ma\": 2115,\n\t\"./ar-ma.js\": 2115,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 2682,\n\t\"./ar-sa.js\": 2682,\n\t\"./ar-tn\": 9756,\n\t\"./ar-tn.js\": 9756,\n\t\"./ar.js\": 1509,\n\t\"./az\": 5533,\n\t\"./az.js\": 5533,\n\t\"./be\": 8959,\n\t\"./be.js\": 8959,\n\t\"./bg\": 7777,\n\t\"./bg.js\": 7777,\n\t\"./bm\": 4903,\n\t\"./bm.js\": 4903,\n\t\"./bn\": 1290,\n\t\"./bn-bd\": 7357,\n\t\"./bn-bd.js\": 7357,\n\t\"./bn.js\": 1290,\n\t\"./bo\": 1545,\n\t\"./bo.js\": 1545,\n\t\"./br\": 1470,\n\t\"./br.js\": 1470,\n\t\"./bs\": 4429,\n\t\"./bs.js\": 4429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 6464,\n\t\"./cs.js\": 6464,\n\t\"./cv\": 6016,\n\t\"./cv.js\": 6016,\n\t\"./cy\": 4226,\n\t\"./cy.js\": 4226,\n\t\"./da\": 3601,\n\t\"./da.js\": 3601,\n\t\"./de\": 7853,\n\t\"./de-at\": 6111,\n\t\"./de-at.js\": 6111,\n\t\"./de-ch\": 4697,\n\t\"./de-ch.js\": 4697,\n\t\"./de.js\": 7853,\n\t\"./dv\": 708,\n\t\"./dv.js\": 708,\n\t\"./el\": 4691,\n\t\"./el.js\": 4691,\n\t\"./en-au\": 3872,\n\t\"./en-au.js\": 3872,\n\t\"./en-ca\": 8298,\n\t\"./en-ca.js\": 8298,\n\t\"./en-gb\": 6195,\n\t\"./en-gb.js\": 6195,\n\t\"./en-ie\": 6584,\n\t\"./en-ie.js\": 6584,\n\t\"./en-il\": 5543,\n\t\"./en-il.js\": 5543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 9402,\n\t\"./en-nz.js\": 9402,\n\t\"./en-sg\": 3004,\n\t\"./en-sg.js\": 3004,\n\t\"./eo\": 2934,\n\t\"./eo.js\": 2934,\n\t\"./es\": 7650,\n\t\"./es-do\": 838,\n\t\"./es-do.js\": 838,\n\t\"./es-mx\": 7730,\n\t\"./es-mx.js\": 7730,\n\t\"./es-us\": 6575,\n\t\"./es-us.js\": 6575,\n\t\"./es.js\": 7650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 527,\n\t\"./fi.js\": 527,\n\t\"./fil\": 5995,\n\t\"./fil.js\": 5995,\n\t\"./fo\": 2477,\n\t\"./fo.js\": 2477,\n\t\"./fr\": 5498,\n\t\"./fr-ca\": 6435,\n\t\"./fr-ca.js\": 6435,\n\t\"./fr-ch\": 7892,\n\t\"./fr-ch.js\": 7892,\n\t\"./fr.js\": 5498,\n\t\"./fy\": 7071,\n\t\"./fy.js\": 7071,\n\t\"./ga\": 1734,\n\t\"./ga.js\": 1734,\n\t\"./gd\": 217,\n\t\"./gd.js\": 217,\n\t\"./gl\": 7329,\n\t\"./gl.js\": 7329,\n\t\"./gom-deva\": 2124,\n\t\"./gom-deva.js\": 2124,\n\t\"./gom-latn\": 3383,\n\t\"./gom-latn.js\": 3383,\n\t\"./gu\": 5050,\n\t\"./gu.js\": 5050,\n\t\"./he\": 1713,\n\t\"./he.js\": 1713,\n\t\"./hi\": 3861,\n\t\"./hi.js\": 3861,\n\t\"./hr\": 6308,\n\t\"./hr.js\": 6308,\n\t\"./hu\": 609,\n\t\"./hu.js\": 609,\n\t\"./hy-am\": 7160,\n\t\"./hy-am.js\": 7160,\n\t\"./id\": 4063,\n\t\"./id.js\": 4063,\n\t\"./is\": 9374,\n\t\"./is.js\": 9374,\n\t\"./it\": 8383,\n\t\"./it-ch\": 1827,\n\t\"./it-ch.js\": 1827,\n\t\"./it.js\": 8383,\n\t\"./ja\": 3827,\n\t\"./ja.js\": 3827,\n\t\"./jv\": 9722,\n\t\"./jv.js\": 9722,\n\t\"./ka\": 1794,\n\t\"./ka.js\": 1794,\n\t\"./kk\": 7088,\n\t\"./kk.js\": 7088,\n\t\"./km\": 6870,\n\t\"./km.js\": 6870,\n\t\"./kn\": 4451,\n\t\"./kn.js\": 4451,\n\t\"./ko\": 783,\n\t\"./ko.js\": 783,\n\t\"./ku\": 8174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 8174,\n\t\"./ky\": 8474,\n\t\"./ky.js\": 8474,\n\t\"./lb\": 9680,\n\t\"./lb.js\": 9680,\n\t\"./lo\": 5867,\n\t\"./lo.js\": 5867,\n\t\"./lt\": 5766,\n\t\"./lt.js\": 5766,\n\t\"./lv\": 9532,\n\t\"./lv.js\": 9532,\n\t\"./me\": 8076,\n\t\"./me.js\": 8076,\n\t\"./mi\": 1848,\n\t\"./mi.js\": 1848,\n\t\"./mk\": 306,\n\t\"./mk.js\": 306,\n\t\"./ml\": 3739,\n\t\"./ml.js\": 3739,\n\t\"./mn\": 9053,\n\t\"./mn.js\": 9053,\n\t\"./mr\": 6169,\n\t\"./mr.js\": 6169,\n\t\"./ms\": 3386,\n\t\"./ms-my\": 2297,\n\t\"./ms-my.js\": 2297,\n\t\"./ms.js\": 3386,\n\t\"./mt\": 7075,\n\t\"./mt.js\": 7075,\n\t\"./my\": 2264,\n\t\"./my.js\": 2264,\n\t\"./nb\": 2274,\n\t\"./nb.js\": 2274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 2572,\n\t\"./nl-be\": 3784,\n\t\"./nl-be.js\": 3784,\n\t\"./nl.js\": 2572,\n\t\"./nn\": 4566,\n\t\"./nn.js\": 4566,\n\t\"./oc-lnc\": 9330,\n\t\"./oc-lnc.js\": 9330,\n\t\"./pa-in\": 9849,\n\t\"./pa-in.js\": 9849,\n\t\"./pl\": 4418,\n\t\"./pl.js\": 4418,\n\t\"./pt\": 9834,\n\t\"./pt-br\": 8303,\n\t\"./pt-br.js\": 8303,\n\t\"./pt.js\": 9834,\n\t\"./ro\": 4457,\n\t\"./ro.js\": 4457,\n\t\"./ru\": 2271,\n\t\"./ru.js\": 2271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 3478,\n\t\"./se.js\": 3478,\n\t\"./si\": 7538,\n\t\"./si.js\": 7538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 6637,\n\t\"./sl.js\": 6637,\n\t\"./sq\": 6794,\n\t\"./sq.js\": 6794,\n\t\"./sr\": 5719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 5719,\n\t\"./ss\": 6000,\n\t\"./ss.js\": 6000,\n\t\"./sv\": 1011,\n\t\"./sv.js\": 1011,\n\t\"./sw\": 748,\n\t\"./sw.js\": 748,\n\t\"./ta\": 1025,\n\t\"./ta.js\": 1025,\n\t\"./te\": 1885,\n\t\"./te.js\": 1885,\n\t\"./tet\": 8861,\n\t\"./tet.js\": 8861,\n\t\"./tg\": 6571,\n\t\"./tg.js\": 6571,\n\t\"./th\": 5802,\n\t\"./th.js\": 5802,\n\t\"./tk\": 9527,\n\t\"./tk.js\": 9527,\n\t\"./tl-ph\": 9231,\n\t\"./tl-ph.js\": 9231,\n\t\"./tlh\": 1052,\n\t\"./tlh.js\": 1052,\n\t\"./tr\": 5096,\n\t\"./tr.js\": 5096,\n\t\"./tzl\": 9846,\n\t\"./tzl.js\": 9846,\n\t\"./tzm\": 1765,\n\t\"./tzm-latn\": 7711,\n\t\"./tzm-latn.js\": 7711,\n\t\"./tzm.js\": 1765,\n\t\"./ug-cn\": 8414,\n\t\"./ug-cn.js\": 8414,\n\t\"./uk\": 6618,\n\t\"./uk.js\": 6618,\n\t\"./ur\": 158,\n\t\"./ur.js\": 158,\n\t\"./uz\": 7609,\n\t\"./uz-latn\": 4856,\n\t\"./uz-latn.js\": 4856,\n\t\"./uz.js\": 7609,\n\t\"./vi\": 1135,\n\t\"./vi.js\": 1135,\n\t\"./x-pseudo\": 4051,\n\t\"./x-pseudo.js\": 4051,\n\t\"./yo\": 2218,\n\t\"./yo.js\": 2218,\n\t\"./zh-cn\": 2648,\n\t\"./zh-cn.js\": 2648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 1541,\n\t\"./zh-mo.js\": 1541,\n\t\"./zh-tw\": 304,\n\t\"./zh-tw.js\": 304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 5358;"],"names":["selectors","historySupport","window","history","pushState","AjaxReplace","init","this","_initEvents","$","document","on","activate","event","_processLinkClick","_processInputChange","addEventListener","_processPopState","e","$container","closest","query","data","href","match","preventDefault","_requestPage","$input","find","replace","url","success","_processAjaxSuccess","error","_processAjaxError","html","status","request","oldHistoryState","newHistoryState","ajaxUrl","replaceWith","publish","replaceState","title","location","response","message","console","state","a","jQuery","extend","fn","validate","b","length","c","attr","validator","settings","onsubmit","validateDelegate","submitHandler","submitButton","target","hasClass","cancelSubmit","submit","d","name","val","value","appendTo","currentForm","call","remove","debug","form","pendingRequest","formSubmitted","focusInvalid","warn","valid","is","each","element","removeAttrs","split","removeAttr","rules","f","g","staticRules","normalizeRule","messages","h","i","normalizeRules","metadataRules","classRules","attributeRules","required","j","expr","blank","trim","filled","unchecked","checked","defaults","format","arguments","makeArray","unshift","apply","constructor","Array","slice","RegExp","groups","errorClass","validClass","errorElement","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","focusCleanup","blockFocusCleanup","unhighlight","addWrapper","errorsFor","hide","onfocusout","checkable","submitted","optional","onkeyup","which","elementValue","onclick","parentNode","highlight","type","findByName","addClass","removeClass","setDefaults","remote","email","date","dateISO","number","digits","creditcard","equalTo","maxlength","minlength","rangelength","range","max","min","autoCreateRanges","prototype","labelContainer","errorContext","containers","add","valueCache","pending","invalid","reset","invalidHandler","bind","checkForm","errorMap","triggerHandler","showErrors","prepareForm","currentElements","elements","check","validationTargetFor","clean","lastElement","prepareElement","numberOfInvalids","toHide","errorList","push","successList","grep","defaultShowErrors","resetForm","hideErrors","removeData","objectLength","size","findLastActive","filter","focus","trigger","not","errors","toShow","method","parameters","methods","formatAndAdd","log","id","customMetaMessage","metadata","meta","customDataMessage","toLowerCase","attributes","customMessage","String","findDefined","undefined","defaultMessage","test","wrapper","parent","showLabel","validElements","show","invalidElements","map","idOrName","generated","wrap","append","errorPlacement","insertAfter","text","getLength","nodeName","depend","dependTypes","_typeof","string","startRequest","stopRequest","previousValue","old","classRuleSettings","addClassRules","get","getAttribute","param","depends","isFunction","Number","addMethod","originalMessage","ajax","mode","port","dataType","isArray","Date","charAt","parseInt","unbind","ajaxPrefilter","abort","ajaxSettings","special","focusin","focusout","blur","fix","handle","setup","teardown","removeEventListener","handler","adapters","$jQval","data_validation","setValidationValues","options","ruleName","escapeAttributeValue","getModelPrefix","fieldName","substr","lastIndexOf","appendModelPrefix","prefix","indexOf","onError","inputElement","container","replaceAttrValue","parseJSON","empty","onErrors","list","onSuccess","onReset","$form","key","validationInfo","result","onResetProxy","proxy","defaultOptions","unobtrusive","execInContext","args","func","attachValidation","off","parseElement","skipAttach","valInfo","$element","parents","paramValues","params","adapt","parse","selector","$selector","$forms","addBack","has","info","adapterName","addBool","addMinMax","minRuleName","maxRuleName","minMaxRuleName","minAttribute","maxAttribute","addSingleVal","attribute","exec","index","nonalphamin","extension","fullOtherName","other","tagName","toUpperCase","splitAndTrim","additionalfields","paramName","field","regex","UmbracoForms","$umbracoForms","$datepickers","$datepicker","Pikaday","yearRange","onSelect","moment","getElementById","setShadow","dataSelectors","Confirm","$el","yes","no","jquery","_bindEvents","close","_buttonClick","_unbindEvents","callback","PermissionStates","PENDING","NO","YES","BLOCKED","geolocation","cookie","support","localStorage","permissions","navigator","permissionApiSupport","Permissions","allowed","supportedPermissions","join","_permissionDetermined","then","_checkPermissionApi","_checkPermissionStorage","permission","allowedStorage","PROMPT","getItem","_setPermission","_requestPermission","$popup","querySelectorAll","_permissionGranted","_permissionDenied","_permissionPrompted","prompt","setItem","module","$link","save","filename","blob","Blob","json","JSON","stringify","_extendFilename","msSaveBlob","URL","createObjectURL","_downloadDataUrl","file","reader","FileReader","readAsDataURL","_processedFile","csv","transpose","sanitise","rows","_csvPrepareData","_csvShapeData","_csvEscape","row","cellValue","iMax","jMax","maxLength","Math","dataUrl","createElement","download","click","revokeObjectURL","load","fileLoadedCallback","_file","image","readMethod","$fileInput","_loadSelectedFile","files","onload","_fileLoaded","readyState","resourceItem","resourceDownload","resourceFileContainer","resourceFile","resourceFileType","resourceTitle","classes","States","Resources","_initButtonStates","resources","fileChangeEvent","downloadEvent","el","first","$item","_getSelectedFiles","_setDownloadDisabledState","_download","mediaIds","_getMediaIdList","_getFilename","_setFileDisabledState","XMLHttpRequest","open","api","responseType","_handleDownloadResponse","send","_downloadComplete","_downloadSuccess","_downloadError","fileIO","errorMessage","$file","prop","$download","$selectedFiles","ids","eq","$selectedFileTypes","selectedFileTypes","SelectLink","_changeEvent","$select","_change","debounce","jWindow","elementsInView","isSpying","ticks","onScroll","top","scrollTop","left","scrollLeft","intersections","right","bottom","hits","elTop","offset","elLeft","elRight","width","elBottom","height","findElements","lastTick","scrollSpy","setTimeout","ready","Ticker","item","_startAnimation","_noMoreAnimation","animate","Counter","duration","easing","step","now","floor","toFixed","complete","$linkList","$html","$body","$view","$sharePopup","$shareEmail","$player","Universal","_initSubscriptions","subscribe","sendEvent","sendPageView","eventObj","hitType","eventCategory","eventAction","_isReady","ga","pageObj","Track","Analytics","eventData","eventLabel","eventValue","_processValidateFailed","_processValidatePassed","_getAttempts","_resetAttempts","_processEvent","$errorFields","errorFields","_getInputLabels","Util","$fields","labelArray","$field","labelName","toString","attempts","config","dataTrackCateogry","components","actionLinkClick","actionButtonClick","actionDefaultClick","actionLinkRightClick","_initElements","_getComponents","_processComponentClick","delegateTarget","tag","_processClick","trackIt","category","_getCategoryName","action","_getActionType","label","_getLabelValue","$componentList","componentKeyList","_getComponentKeys","componentKey","componentClass","$component","_setCategoryName","Object","keys","$elem","_capitalizeString","link","txt","word","isHalfway","isEnd","verticalHeight","verticalPlacement","_initState","_processWindowScroll","_updateState","_processPublishEvent","outerHeight","actionLabel","_processShareClick","_setValue","linkSettings","downloadFiles","_isDownloadLink","_getDownloadFileType","_isExternalLink","_isMailtoLink","_getEmailAddress","_isTelephoneLink","search","hostname","_trackPreloadEvents","preloadEvents","TrackLoad","Preload","External","Form","Link","Scroll","Share","Video","appendAround","$self","att","$parent","attval","$set","isHidden","elem","css","appendToVisibleContainer","found","mfp","_prevStatus","_body","_document","_prevContentType","_wrapClasses","_currPopupType","CLOSE_EVENT","BEFORE_CLOSE_EVENT","MARKUP_PARSE_EVENT","OPEN_EVENT","CHANGE_EVENT","NS","EVENT_NS","READY_CLASS","REMOVING_CLASS","PREVENT_CLOSE_CLASS","MagnificPopup","_isJQ","_window","_mfpOn","ev","_getEl","className","raw","innerHTML","appendChild","_mfpTrigger","st","callbacks","_getCloseBtn","currTemplate","closeBtn","closeMarkup","tClose","_checkInstance","magnificPopup","instance","appVersion","isIE7","isIE8","isLowIE","isAndroid","isIOS","supportsTransition","s","style","v","pop","supportsTransitions","probablyMobile","userAgent","popupsCache","body","isObj","items","toArray","parsed","isOpen","types","mainEl","fixedContentPos","modal","closeOnContentClick","closeOnBgClick","showCloseBtn","enableEscapeKey","bgOverlay","_checkIfClose","contentContainer","preloader","tLoading","modules","n","closeBtnInside","template","values","close_replaceWith","alignTop","overflow","overflowY","overflowX","position","fixedBgPos","keyCode","updateSize","windowHeight","wH","windowStyles","_hasScrollBar","_getScrollbarSize","marginRight","classesToadd","mainClass","_addClassToMFP","updateItemHTML","prependTo","_lastFocusedEl","activeElement","content","_setFocus","_onFocusIn","removalDelay","_close","classesToRemove","detach","_removeClassFromMFP","currItem","prevHeight","winHeight","zoomLevel","documentElement","clientWidth","innerWidth","innerHeight","parseEl","markup","newContent","appendContent","preloaded","prepend","src","addGroup","eHandler","mfpEl","_openClick","eName","delegate","midClick","ctrlKey","metaKey","disableOn","stopPropagation","updateStatus","stopImmediatePropagation","closeOnContent","closeOnBg","contains","cName","scrollHeight","_parseMarkup","arr","scrollbarSize","scrollDiv","cssText","offsetWidth","removeChild","proto","registerModule","jqEl","itemOpts","_hiddenClass","_inlinePlaceholder","_lastInlineElement","INLINE_NS","_putInlineElementsBack","after","hiddenClass","tNotFound","initInline","getInline","inlineSt","inline","inlineElement","_ajaxCur","AJAX_NS","_removeAjaxCursor","_destroyAjaxRequest","req","cursor","tError","initAjax","getAjax","opts","textStatus","jqXHR","temp","xhr","finished","loadError","_imgInterval","hasMozTransform","_getTitle","titleSrc","verticalFit","initImage","imgSt","ns","resizeImage","img","decr","_onImageHasSize","hasSize","clearInterval","isCheckingImgSize","imgHidden","findImageSize","counter","mfpSetInterval","delay","setInterval","naturalWidth","getImage","guard","onLoadError","loaded","onLoadComplete","clone","img_replaceWith","loading","enabled","opener","initZoom","zoomSt","zoom","openTimeout","animatedImg","getElToAnimate","newImg","transition","cssObj","zIndex","t","showMainContent","_allowZoom","clearTimeout","_getItemToZoom","_getOffset","isLarge","paddingTop","paddingBottom","obj","offsetHeight","MozTransform","IFRAME_NS","_fixIframeBugs","isShowing","srcAction","patterns","youtube","vimeo","gmaps","initIframe","prevType","newType","getIframe","embedSrc","iframeSt","iframe","dataObj","_getLoopedId","numSlides","_replaceCurrTotal","curr","total","arrowMarkup","preload","navigateByImgClick","arrows","tPrev","tNext","tCounter","initGallery","gSt","gallery","supportsFastClick","Boolean","mfpFastClick","direction","next","prev","l","arrowLeft","arrowRight","_preloadTimeout","preloadNearbyImages","destroyMfpFastClick","goTo","newIndex","p","preloadBefore","preloadAfter","_preloadItem","supportsTouch","unbindTouchMove","RETINA_NS","replaceSrc","m","ratio","initRetina","devicePixelRatio","retina","isNaN","lock","timeout","startX","startY","pointerMoved","point","numPointers","originalEvent","touches","clientX","clientY","abs","Zepto","pluginName","Plugin","_defaults","_name","setLink","setUrl","inNewWindow","setNewWindow","$plugin","processClick","openLink","newWindow","enterEvent","spaceEvent","eventType","isButton","isInput","isEnter","isSpace","enterTrigger","spaceTrigger","otherTrigger","keyboardEvent","scrollTimeout","scrollToElm","$elm","pxAbove","topPadding","currentScrollHeight","targetScrollHeight","scrollHeightDiff","scrollSpeed","_clearScrollTimeout","getClassName","getQueryStringObject","queryString","decodeURIComponent","self","bindings","_isFocusOnInput","inputType","$activeEl","isContentEditable","_bindFn","fnWrapper","allowInInput","requireCtrl","TypeError","binding","splice","_getSequenceArgs","keyA","keyB","keyC","bindSequence","keyString","keysPressed","shift","unbindSequence","$window","lazyload","threshold","failure_limit","effect","data_attribute","skip_invisible","appear","update","$this","abovethetop","leftofbegin","belowthefold","rightoffold","failurelimit","effectspeed","effect_speed","one","elements_left","persisted","inviewport","tolerance","_getPosition","initSubscriptions","processScrollEvent","recalculatePosition","$thisPlugin","fire","throttle","andSelf","actual","restore","configs","absolute","includeMargin","$target","$hidden","tmp","thisStyle","_tmp","$lazyLoadContent","$lazyLoadImages","resizeTimer","contentClass","imagesClass","widthPattern","heightPattern","LazyLoad","updateImageWidth","loadImages","loadContent","initLazyFunction","elems","lazyScroll","_loadAjaxedImages","_processResize","loadImagesInHtml","images","$content","$images","$image","containerWidth","getBestWidth","pixelRatio","widthRounded","ceil","oldWidth","changeWidth","getRatio","querys","keyValue","sizeData","sizes","num","sort","bestSize","_getImages","noAnimation","$lazyImages","$thisImg","$elms","ajaxInclude","enquire","matchMedia","collection","QueryHandler","initialised","deferSetup","MediaQuery","isUnconditional","handlers","matched","MediaQueryDispatch","Error","capabilityTest","queries","listening","browserIsIncapable","unmatch","destroy","equals","matches","addHandler","turnOn","qh","removeHandler","assess","register","q","shouldDegrade","hasOwnProperty","unregister","mediaQuery","listen","wireFire","timer","MediaQueries","currentConfig","_addToHandler","webpackContext","webpackContextResolve","__webpack_require__","o","code","resolve","exports"],"sourceRoot":""}