/*! Lazy Load 1.9.1 - MIT license - Copyright 2010-2013 Mika Tuupola */
!function (a, b, c, d) { var e = a(b); a.fn.lazyload = function (f) { function g() { var b = 0; i.each(function () { var c = a(this); if (!j.skip_invisible || c.is(":visible")) if (a.abovethetop(this, j) || a.leftofbegin(this, j)); else if (a.belowthefold(this, j) || a.rightoffold(this, j)) { if (++b > j.failure_limit) return !1 } else c.trigger("appear"), b = 0 }) } var h, i = this, j = { threshold: 0, failure_limit: 0, event: "scroll", effect: "show", container: b, data_attribute: "original", skip_invisible: !0, appear: null, load: null, placeholder: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" }; return f && (d !== f.failurelimit && (f.failure_limit = f.failurelimit, delete f.failurelimit), d !== f.effectspeed && (f.effect_speed = f.effectspeed, delete f.effectspeed), a.extend(j, f)), h = j.container === d || j.container === b ? e : a(j.container), 0 === j.event.indexOf("scroll") && h.bind(j.event, function () { return g() }), this.each(function () { var b = this, c = a(b); b.loaded = !1, (c.attr("src") === d || c.attr("src") === !1) && c.is("img") && c.attr("src", j.placeholder), c.one("appear", function () { if (!this.loaded) { if (j.appear) { var d = i.length; j.appear.call(b, d, j) } a("<img />").bind("load", function () { var d = c.attr("data-" + j.data_attribute); c.hide(), c.is("img") ? c.attr("src", d) : c.css("background-image", "url('" + d + "')"), c[j.effect](j.effect_speed), b.loaded = !0; var e = a.grep(i, function (a) { return !a.loaded }); if (i = a(e), j.load) { var f = i.length; j.load.call(b, f, j) } }).attr("src", c.attr("data-" + j.data_attribute)) } }), 0 !== j.event.indexOf("scroll") && c.bind(j.event, function () { b.loaded || c.trigger("appear") }) }), e.bind("resize", function () { g() }), /(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion) && e.bind("pageshow", function (b) { b.originalEvent && b.originalEvent.persisted && i.each(function () { a(this).trigger("appear") }) }), a(c).ready(function () { g() }), this }, a.belowthefold = function (c, f) { var g; return g = f.container === d || f.container === b ? (b.innerHeight ? b.innerHeight : e.height()) + e.scrollTop() : a(f.container).offset().top + a(f.container).height(), g <= a(c).offset().top - f.threshold }, a.rightoffold = function (c, f) { var g; return g = f.container === d || f.container === b ? e.width() + e.scrollLeft() : a(f.container).offset().left + a(f.container).width(), g <= a(c).offset().left - f.threshold }, a.abovethetop = function (c, f) { var g; return g = f.container === d || f.container === b ? e.scrollTop() : a(f.container).offset().top, g >= a(c).offset().top + f.threshold + a(c).height() }, a.leftofbegin = function (c, f) { var g; return g = f.container === d || f.container === b ? e.scrollLeft() : a(f.container).offset().left, g >= a(c).offset().left + f.threshold + a(c).width() }, a.inviewport = function (b, c) { return !(a.rightoffold(b, c) || a.leftofbegin(b, c) || a.belowthefold(b, c) || a.abovethetop(b, c)) }, a.extend(a.expr[":"], { "below-the-fold": function (b) { return a.belowthefold(b, { threshold: 0 }) }, "above-the-top": function (b) { return !a.belowthefold(b, { threshold: 0 }) }, "right-of-screen": function (b) { return a.rightoffold(b, { threshold: 0 }) }, "left-of-screen": function (b) { return !a.rightoffold(b, { threshold: 0 }) }, "in-viewport": function (b) { return a.inviewport(b, { threshold: 0 }) }, "above-the-fold": function (b) { return !a.belowthefold(b, { threshold: 0 }) }, "right-of-fold": function (b) { return a.rightoffold(b, { threshold: 0 }) }, "left-of-fold": function (b) { return !a.rightoffold(b, { threshold: 0 }) } }) }(jQuery, window, document);;
/**
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */

/**
 * Create a cookie with the given name and value and other optional parameters.
 *
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Set the value of a cookie.
 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
 * @desc Create a cookie with all available options.
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Create a session cookie.
 * @example $.cookie('the_cookie', null);
 * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
 *       used when the cookie was set.
 *
 * @param String name The name of the cookie.
 * @param String value The value of the cookie.
 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
 *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
 *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
 *                             when the the browser exits.
 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
 *                        require a secure protocol (like HTTPS).
 * @type undefined
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */

/**
 * Get the value of a cookie with the given name.
 *
 * @example $.cookie('the_cookie');
 * @desc Get the value of a cookie.
 *
 * @param String name The name of the cookie.
 * @return The value of the cookie.
 * @type String
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */
jQuery.cookie = function (name, value, options) {
	if (typeof value != 'undefined') { // name and value given, set cookie
		options = options || {};
		if (value === null) {
			value = '';
			options.expires = -1;
		}
		var expires = '';
		if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
			var date;
			if (typeof options.expires == 'number') {
				date = new Date();
				date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
			} else {
				date = options.expires;
			}
			expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
		}
		// CAUTION: Needed to parenthesize options.path and options.domain
		// in the following expressions, otherwise they evaluate to undefined
		// in the packed version for some reason...
		var path = options.path ? '; path=' + (options.path) : '';
		var domain = options.domain ? '; domain=' + (options.domain) : '';
		var secure = options.secure ? '; secure' : '';
		document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
	} else { // only name given, get cookie
		var cookieValue = null;
		if (document.cookie && document.cookie != '') {
			var cookies = document.cookie.split(';');
			for (var i = 0; i < cookies.length; i++) {
				var cookie = jQuery.trim(cookies[i]);
				// Does this cookie string begin with the name we want?
				if (cookie.substring(0, name.length + 1) == (name + '=')) {
					cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
					break;
				}
			}
		}
		return cookieValue;
	}
};;
/*
     _ _      _       _
 ___| (_) ___| | __  (_)___
/ __| | |/ __| |/ /  | / __|
\__ \ | | (__|   < _ | \__ \
|___/_|_|\___|_|\_(_)/ |___/
                   |__/

 Version: 1.6.0
  Author: Ken Wheeler
 Website: http://kenwheeler.github.io
    Docs: http://kenwheeler.github.io/slick
    Repo: http://github.com/kenwheeler/slick
  Issues: http://github.com/kenwheeler/slick/issues

 */
!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";var b=window.Slick||{};b=function(){function c(c,d){var f,e=this;e.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:a(c),appendDots:a(c),arrows:!0,asNavFor:null,prevArrow:'<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>',nextArrow:'<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(b,c){return a('<button type="button" data-role="none" role="button" tabindex="0" />').text(c+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},e.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},a.extend(e,e.initials),e.activeBreakpoint=null,e.animType=null,e.animProp=null,e.breakpoints=[],e.breakpointSettings=[],e.cssTransitions=!1,e.focussed=!1,e.interrupted=!1,e.hidden="hidden",e.paused=!0,e.positionProp=null,e.respondTo=null,e.rowCount=1,e.shouldClick=!0,e.$slider=a(c),e.$slidesCache=null,e.transformType=null,e.transitionType=null,e.visibilityChange="visibilitychange",e.windowWidth=0,e.windowTimer=null,f=a(c).data("slick")||{},e.options=a.extend({},e.defaults,d,f),e.currentSlide=e.options.initialSlide,e.originalSettings=e.options,"undefined"!=typeof document.mozHidden?(e.hidden="mozHidden",e.visibilityChange="mozvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(e.hidden="webkitHidden",e.visibilityChange="webkitvisibilitychange"),e.autoPlay=a.proxy(e.autoPlay,e),e.autoPlayClear=a.proxy(e.autoPlayClear,e),e.autoPlayIterator=a.proxy(e.autoPlayIterator,e),e.changeSlide=a.proxy(e.changeSlide,e),e.clickHandler=a.proxy(e.clickHandler,e),e.selectHandler=a.proxy(e.selectHandler,e),e.setPosition=a.proxy(e.setPosition,e),e.swipeHandler=a.proxy(e.swipeHandler,e),e.dragHandler=a.proxy(e.dragHandler,e),e.keyHandler=a.proxy(e.keyHandler,e),e.instanceUid=b++,e.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,e.registerBreakpoints(),e.init(!0)}var b=0;return c}(),b.prototype.activateADA=function(){var a=this;a.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},b.prototype.addSlide=b.prototype.slickAdd=function(b,c,d){var e=this;if("boolean"==typeof c)d=c,c=null;else if(0>c||c>=e.slideCount)return!1;e.unload(),"number"==typeof c?0===c&&0===e.$slides.length?a(b).appendTo(e.$slideTrack):d?a(b).insertBefore(e.$slides.eq(c)):a(b).insertAfter(e.$slides.eq(c)):d===!0?a(b).prependTo(e.$slideTrack):a(b).appendTo(e.$slideTrack),e.$slides=e.$slideTrack.children(this.options.slide),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.append(e.$slides),e.$slides.each(function(b,c){a(c).attr("data-slick-index",b)}),e.$slidesCache=e.$slides,e.reinit()},b.prototype.animateHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.animate({height:b},a.options.speed)}},b.prototype.animateSlide=function(b,c){var d={},e=this;e.animateHeight(),e.options.rtl===!0&&e.options.vertical===!1&&(b=-b),e.transformsEnabled===!1?e.options.vertical===!1?e.$slideTrack.animate({left:b},e.options.speed,e.options.easing,c):e.$slideTrack.animate({top:b},e.options.speed,e.options.easing,c):e.cssTransitions===!1?(e.options.rtl===!0&&(e.currentLeft=-e.currentLeft),a({animStart:e.currentLeft}).animate({animStart:b},{duration:e.options.speed,easing:e.options.easing,step:function(a){a=Math.ceil(a),e.options.vertical===!1?(d[e.animType]="translate("+a+"px, 0px)",e.$slideTrack.css(d)):(d[e.animType]="translate(0px,"+a+"px)",e.$slideTrack.css(d))},complete:function(){c&&c.call()}})):(e.applyTransition(),b=Math.ceil(b),e.options.vertical===!1?d[e.animType]="translate3d("+b+"px, 0px, 0px)":d[e.animType]="translate3d(0px,"+b+"px, 0px)",e.$slideTrack.css(d),c&&setTimeout(function(){e.disableTransition(),c.call()},e.options.speed))},b.prototype.getNavTarget=function(){var b=this,c=b.options.asNavFor;return c&&null!==c&&(c=a(c).not(b.$slider)),c},b.prototype.asNavFor=function(b){var c=this,d=c.getNavTarget();null!==d&&"object"==typeof d&&d.each(function(){var c=a(this).slick("getSlick");c.unslicked||c.slideHandler(b,!0)})},b.prototype.applyTransition=function(a){var b=this,c={};b.options.fade===!1?c[b.transitionType]=b.transformType+" "+b.options.speed+"ms "+b.options.cssEase:c[b.transitionType]="opacity "+b.options.speed+"ms "+b.options.cssEase,b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.autoPlay=function(){var a=this;a.autoPlayClear(),a.slideCount>a.options.slidesToShow&&(a.autoPlayTimer=setInterval(a.autoPlayIterator,a.options.autoplaySpeed))},b.prototype.autoPlayClear=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer)},b.prototype.autoPlayIterator=function(){var a=this,b=a.currentSlide+a.options.slidesToScroll;a.paused||a.interrupted||a.focussed||(a.options.infinite===!1&&(1===a.direction&&a.currentSlide+1===a.slideCount-1?a.direction=0:0===a.direction&&(b=a.currentSlide-a.options.slidesToScroll,a.currentSlide-1===0&&(a.direction=1))),a.slideHandler(b))},b.prototype.buildArrows=function(){var b=this;b.options.arrows===!0&&(b.$prevArrow=a(b.options.prevArrow).addClass("slick-arrow"),b.$nextArrow=a(b.options.nextArrow).addClass("slick-arrow"),b.slideCount>b.options.slidesToShow?(b.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.prependTo(b.options.appendArrows),b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.appendTo(b.options.appendArrows),b.options.infinite!==!0&&b.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):b.$prevArrow.add(b.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},b.prototype.buildDots=function(){var c,d,b=this;if(b.options.dots===!0&&b.slideCount>b.options.slidesToShow){for(b.$slider.addClass("slick-dotted"),d=a("<ul />").addClass(b.options.dotsClass),c=0;c<=b.getDotCount();c+=1)d.append(a("<li />").append(b.options.customPaging.call(this,b,c)));b.$dots=d.appendTo(b.options.appendDots),b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden","false")}},b.prototype.buildOut=function(){var b=this;b.$slides=b.$slider.children(b.options.slide+":not(.slick-cloned)").addClass("slick-slide"),b.slideCount=b.$slides.length,b.$slides.each(function(b,c){a(c).attr("data-slick-index",b).data("originalStyling",a(c).attr("style")||"")}),b.$slider.addClass("slick-slider"),b.$slideTrack=0===b.slideCount?a('<div class="slick-track"/>').appendTo(b.$slider):b.$slides.wrapAll('<div class="slick-track"/>').parent(),b.$list=b.$slideTrack.wrap('<div aria-live="polite" class="slick-list"/>').parent(),b.$slideTrack.css("opacity",0),(b.options.centerMode===!0||b.options.swipeToSlide===!0)&&(b.options.slidesToScroll=1),a("img[data-lazy]",b.$slider).not("[src]").addClass("slick-loading"),b.setupInfinite(),b.buildArrows(),b.buildDots(),b.updateDots(),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.options.draggable===!0&&b.$list.addClass("draggable")},b.prototype.buildRows=function(){var b,c,d,e,f,g,h,a=this;if(e=document.createDocumentFragment(),g=a.$slider.children(),a.options.rows>1){for(h=a.options.slidesPerRow*a.options.rows,f=Math.ceil(g.length/h),b=0;f>b;b++){var i=document.createElement("div");for(c=0;c<a.options.rows;c++){var j=document.createElement("div");for(d=0;d<a.options.slidesPerRow;d++){var k=b*h+(c*a.options.slidesPerRow+d);g.get(k)&&j.appendChild(g.get(k))}i.appendChild(j)}e.appendChild(i)}a.$slider.empty().append(e),a.$slider.children().children().children().css({width:100/a.options.slidesPerRow+"%",display:"inline-block"})}},b.prototype.checkResponsive=function(b,c){var e,f,g,d=this,h=!1,i=d.$slider.width(),j=window.innerWidth||a(window).width();if("window"===d.respondTo?g=j:"slider"===d.respondTo?g=i:"min"===d.respondTo&&(g=Math.min(j,i)),d.options.responsive&&d.options.responsive.length&&null!==d.options.responsive){f=null;for(e in d.breakpoints)d.breakpoints.hasOwnProperty(e)&&(d.originalSettings.mobileFirst===!1?g<d.breakpoints[e]&&(f=d.breakpoints[e]):g>d.breakpoints[e]&&(f=d.breakpoints[e]));null!==f?null!==d.activeBreakpoint?(f!==d.activeBreakpoint||c)&&(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):null!==d.activeBreakpoint&&(d.activeBreakpoint=null,d.options=d.originalSettings,b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b),h=f),b||h===!1||d.$slider.trigger("breakpoint",[d,h])}},b.prototype.changeSlide=function(b,c){var f,g,h,d=this,e=a(b.currentTarget);switch(e.is("a")&&b.preventDefault(),e.is("li")||(e=e.closest("li")),h=d.slideCount%d.options.slidesToScroll!==0,f=h?0:(d.slideCount-d.currentSlide)%d.options.slidesToScroll,b.data.message){case"previous":g=0===f?d.options.slidesToScroll:d.options.slidesToShow-f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide-g,!1,c);break;case"next":g=0===f?d.options.slidesToScroll:f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide+g,!1,c);break;case"index":var i=0===b.data.index?0:b.data.index||e.index()*d.options.slidesToScroll;d.slideHandler(d.checkNavigable(i),!1,c),e.children().trigger("focus");break;default:return}},b.prototype.checkNavigable=function(a){var c,d,b=this;if(c=b.getNavigableIndexes(),d=0,a>c[c.length-1])a=c[c.length-1];else for(var e in c){if(a<c[e]){a=d;break}d=c[e]}return a},b.prototype.cleanUpEvents=function(){var b=this;b.options.dots&&null!==b.$dots&&a("li",b.$dots).off("click.slick",b.changeSlide).off("mouseenter.slick",a.proxy(b.interrupt,b,!0)).off("mouseleave.slick",a.proxy(b.interrupt,b,!1)),b.$slider.off("focus.slick blur.slick"),b.options.arrows===!0&&b.slideCount>b.options.slidesToShow&&(b.$prevArrow&&b.$prevArrow.off("click.slick",b.changeSlide),b.$nextArrow&&b.$nextArrow.off("click.slick",b.changeSlide)),b.$list.off("touchstart.slick mousedown.slick",b.swipeHandler),b.$list.off("touchmove.slick mousemove.slick",b.swipeHandler),b.$list.off("touchend.slick mouseup.slick",b.swipeHandler),b.$list.off("touchcancel.slick mouseleave.slick",b.swipeHandler),b.$list.off("click.slick",b.clickHandler),a(document).off(b.visibilityChange,b.visibility),b.cleanUpSlideEvents(),b.options.accessibility===!0&&b.$list.off("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().off("click.slick",b.selectHandler),a(window).off("orientationchange.slick.slick-"+b.instanceUid,b.orientationChange),a(window).off("resize.slick.slick-"+b.instanceUid,b.resize),a("[draggable!=true]",b.$slideTrack).off("dragstart",b.preventDefault),a(window).off("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).off("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.cleanUpSlideEvents=function(){var b=this;b.$list.off("mouseenter.slick",a.proxy(b.interrupt,b,!0)),b.$list.off("mouseleave.slick",a.proxy(b.interrupt,b,!1))},b.prototype.cleanUpRows=function(){var b,a=this;a.options.rows>1&&(b=a.$slides.children().children(),b.removeAttr("style"),a.$slider.empty().append(b))},b.prototype.clickHandler=function(a){var b=this;b.shouldClick===!1&&(a.stopImmediatePropagation(),a.stopPropagation(),a.preventDefault())},b.prototype.destroy=function(b){var c=this;c.autoPlayClear(),c.touchObject={},c.cleanUpEvents(),a(".slick-cloned",c.$slider).detach(),c.$dots&&c.$dots.remove(),c.$prevArrow&&c.$prevArrow.length&&(c.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.prevArrow)&&c.$prevArrow.remove()),c.$nextArrow&&c.$nextArrow.length&&(c.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.nextArrow)&&c.$nextArrow.remove()),c.$slides&&(c.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){a(this).attr("style",a(this).data("originalStyling"))}),c.$slideTrack.children(this.options.slide).detach(),c.$slideTrack.detach(),c.$list.detach(),c.$slider.append(c.$slides)),c.cleanUpRows(),c.$slider.removeClass("slick-slider"),c.$slider.removeClass("slick-initialized"),c.$slider.removeClass("slick-dotted"),c.unslicked=!0,b||c.$slider.trigger("destroy",[c])},b.prototype.disableTransition=function(a){var b=this,c={};c[b.transitionType]="",b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.fadeSlide=function(a,b){var c=this;c.cssTransitions===!1?(c.$slides.eq(a).css({zIndex:c.options.zIndex}),c.$slides.eq(a).animate({opacity:1},c.options.speed,c.options.easing,b)):(c.applyTransition(a),c.$slides.eq(a).css({opacity:1,zIndex:c.options.zIndex}),b&&setTimeout(function(){c.disableTransition(a),b.call()},c.options.speed))},b.prototype.fadeSlideOut=function(a){var b=this;b.cssTransitions===!1?b.$slides.eq(a).animate({opacity:0,zIndex:b.options.zIndex-2},b.options.speed,b.options.easing):(b.applyTransition(a),b.$slides.eq(a).css({opacity:0,zIndex:b.options.zIndex-2}))},b.prototype.filterSlides=b.prototype.slickFilter=function(a){var b=this;null!==a&&(b.$slidesCache=b.$slides,b.unload(),b.$slideTrack.children(this.options.slide).detach(),b.$slidesCache.filter(a).appendTo(b.$slideTrack),b.reinit())},b.prototype.focusHandler=function(){var b=this;b.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick","*:not(.slick-arrow)",function(c){c.stopImmediatePropagation();var d=a(this);setTimeout(function(){b.options.pauseOnFocus&&(b.focussed=d.is(":focus"),b.autoPlay())},0)})},b.prototype.getCurrent=b.prototype.slickCurrentSlide=function(){var a=this;return a.currentSlide},b.prototype.getDotCount=function(){var a=this,b=0,c=0,d=0;if(a.options.infinite===!0)for(;b<a.slideCount;)++d,b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;else if(a.options.centerMode===!0)d=a.slideCount;else if(a.options.asNavFor)for(;b<a.slideCount;)++d,b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;else d=1+Math.ceil((a.slideCount-a.options.slidesToShow)/a.options.slidesToScroll);return d-1},b.prototype.getLeft=function(a){var c,d,f,b=this,e=0;return b.slideOffset=0,d=b.$slides.first().outerHeight(!0),b.options.infinite===!0?(b.slideCount>b.options.slidesToShow&&(b.slideOffset=b.slideWidth*b.options.slidesToShow*-1,e=d*b.options.slidesToShow*-1),b.slideCount%b.options.slidesToScroll!==0&&a+b.options.slidesToScroll>b.slideCount&&b.slideCount>b.options.slidesToShow&&(a>b.slideCount?(b.slideOffset=(b.options.slidesToShow-(a-b.slideCount))*b.slideWidth*-1,e=(b.options.slidesToShow-(a-b.slideCount))*d*-1):(b.slideOffset=b.slideCount%b.options.slidesToScroll*b.slideWidth*-1,e=b.slideCount%b.options.slidesToScroll*d*-1))):a+b.options.slidesToShow>b.slideCount&&(b.slideOffset=(a+b.options.slidesToShow-b.slideCount)*b.slideWidth,e=(a+b.options.slidesToShow-b.slideCount)*d),b.slideCount<=b.options.slidesToShow&&(b.slideOffset=0,e=0),b.options.centerMode===!0&&b.options.infinite===!0?b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)-b.slideWidth:b.options.centerMode===!0&&(b.slideOffset=0,b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)),c=b.options.vertical===!1?a*b.slideWidth*-1+b.slideOffset:a*d*-1+e,b.options.variableWidth===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow),c=b.options.rtl===!0?f[0]?-1*(b.$slideTrack.width()-f[0].offsetLeft-f.width()):0:f[0]?-1*f[0].offsetLeft:0,b.options.centerMode===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow+1),c=b.options.rtl===!0?f[0]?-1*(b.$slideTrack.width()-f[0].offsetLeft-f.width()):0:f[0]?-1*f[0].offsetLeft:0,c+=(b.$list.width()-f.outerWidth())/2)),c},b.prototype.getOption=b.prototype.slickGetOption=function(a){var b=this;return b.options[a]},b.prototype.getNavigableIndexes=function(){var e,a=this,b=0,c=0,d=[];for(a.options.infinite===!1?e=a.slideCount:(b=-1*a.options.slidesToScroll,c=-1*a.options.slidesToScroll,e=2*a.slideCount);e>b;)d.push(b),b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;return d},b.prototype.getSlick=function(){return this},b.prototype.getSlideCount=function(){var c,d,e,b=this;return e=b.options.centerMode===!0?b.slideWidth*Math.floor(b.options.slidesToShow/2):0,b.options.swipeToSlide===!0?(b.$slideTrack.find(".slick-slide").each(function(c,f){return f.offsetLeft-e+a(f).outerWidth()/2>-1*b.swipeLeft?(d=f,!1):void 0}),c=Math.abs(a(d).attr("data-slick-index")-b.currentSlide)||1):b.options.slidesToScroll},b.prototype.goTo=b.prototype.slickGoTo=function(a,b){var c=this;c.changeSlide({data:{message:"index",index:parseInt(a)}},b)},b.prototype.init=function(b){var c=this;a(c.$slider).hasClass("slick-initialized")||(a(c.$slider).addClass("slick-initialized"),c.buildRows(),c.buildOut(),c.setProps(),c.startLoad(),c.loadSlider(),c.initializeEvents(),c.updateArrows(),c.updateDots(),c.checkResponsive(!0),c.focusHandler()),b&&c.$slider.trigger("init",[c]),c.options.accessibility===!0&&c.initADA(),c.options.autoplay&&(c.paused=!1,c.autoPlay())},b.prototype.initADA=function(){var b=this;b.$slides.add(b.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),b.$slideTrack.attr("role","listbox"),b.$slides.not(b.$slideTrack.find(".slick-cloned")).each(function(c){a(this).attr({role:"option","aria-describedby":"slick-slide"+b.instanceUid+c})}),null!==b.$dots&&b.$dots.attr("role","tablist").find("li").each(function(c){a(this).attr({role:"presentation","aria-selected":"false","aria-controls":"navigation"+b.instanceUid+c,id:"slick-slide"+b.instanceUid+c})}).first().attr("aria-selected","true").end().find("button").attr("role","button").end().closest("div").attr("role","toolbar"),b.activateADA()},b.prototype.initArrowEvents=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.off("click.slick").on("click.slick",{message:"previous"},a.changeSlide),a.$nextArrow.off("click.slick").on("click.slick",{message:"next"},a.changeSlide))},b.prototype.initDotEvents=function(){var b=this;b.options.dots===!0&&b.slideCount>b.options.slidesToShow&&a("li",b.$dots).on("click.slick",{message:"index"},b.changeSlide),b.options.dots===!0&&b.options.pauseOnDotsHover===!0&&a("li",b.$dots).on("mouseenter.slick",a.proxy(b.interrupt,b,!0)).on("mouseleave.slick",a.proxy(b.interrupt,b,!1))},b.prototype.initSlideEvents=function(){var b=this;b.options.pauseOnHover&&(b.$list.on("mouseenter.slick",a.proxy(b.interrupt,b,!0)),b.$list.on("mouseleave.slick",a.proxy(b.interrupt,b,!1)))},b.prototype.initializeEvents=function(){var b=this;b.initArrowEvents(),b.initDotEvents(),b.initSlideEvents(),b.$list.on("touchstart.slick mousedown.slick",{action:"start"},b.swipeHandler),b.$list.on("touchmove.slick mousemove.slick",{action:"move"},b.swipeHandler),b.$list.on("touchend.slick mouseup.slick",{action:"end"},b.swipeHandler),b.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},b.swipeHandler),b.$list.on("click.slick",b.clickHandler),a(document).on(b.visibilityChange,a.proxy(b.visibility,b)),b.options.accessibility===!0&&b.$list.on("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),a(window).on("orientationchange.slick.slick-"+b.instanceUid,a.proxy(b.orientationChange,b)),a(window).on("resize.slick.slick-"+b.instanceUid,a.proxy(b.resize,b)),a("[draggable!=true]",b.$slideTrack).on("dragstart",b.preventDefault),a(window).on("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).on("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.initUI=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.show(),a.$nextArrow.show()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.show()},b.prototype.keyHandler=function(a){var b=this;a.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===a.keyCode&&b.options.accessibility===!0?b.changeSlide({data:{message:b.options.rtl===!0?"next":"previous"}}):39===a.keyCode&&b.options.accessibility===!0&&b.changeSlide({data:{message:b.options.rtl===!0?"previous":"next"}}))},b.prototype.lazyLoad=function(){function g(c){a("img[data-lazy]",c).each(function(){var c=a(this),d=a(this).attr("data-lazy"),e=document.createElement("img");e.onload=function(){c.animate({opacity:0},100,function(){c.attr("src",d).animate({opacity:1},200,function(){c.removeAttr("data-lazy").removeClass("slick-loading")}),b.$slider.trigger("lazyLoaded",[b,c,d])})},e.onerror=function(){c.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),b.$slider.trigger("lazyLoadError",[b,c,d])},e.src=d})}var c,d,e,f,b=this;b.options.centerMode===!0?b.options.infinite===!0?(e=b.currentSlide+(b.options.slidesToShow/2+1),f=e+b.options.slidesToShow+2):(e=Math.max(0,b.currentSlide-(b.options.slidesToShow/2+1)),f=2+(b.options.slidesToShow/2+1)+b.currentSlide):(e=b.options.infinite?b.options.slidesToShow+b.currentSlide:b.currentSlide,f=Math.ceil(e+b.options.slidesToShow),b.options.fade===!0&&(e>0&&e--,f<=b.slideCount&&f++)),c=b.$slider.find(".slick-slide").slice(e,f),g(c),b.slideCount<=b.options.slidesToShow?(d=b.$slider.find(".slick-slide"),g(d)):b.currentSlide>=b.slideCount-b.options.slidesToShow?(d=b.$slider.find(".slick-cloned").slice(0,b.options.slidesToShow),g(d)):0===b.currentSlide&&(d=b.$slider.find(".slick-cloned").slice(-1*b.options.slidesToShow),g(d))},b.prototype.loadSlider=function(){var a=this;a.setPosition(),a.$slideTrack.css({opacity:1}),a.$slider.removeClass("slick-loading"),a.initUI(),"progressive"===a.options.lazyLoad&&a.progressiveLazyLoad()},b.prototype.next=b.prototype.slickNext=function(){var a=this;a.changeSlide({data:{message:"next"}})},b.prototype.orientationChange=function(){var a=this;a.checkResponsive(),a.setPosition()},b.prototype.pause=b.prototype.slickPause=function(){var a=this;a.autoPlayClear(),a.paused=!0},b.prototype.play=b.prototype.slickPlay=function(){var a=this;a.autoPlay(),a.options.autoplay=!0,a.paused=!1,a.focussed=!1,a.interrupted=!1},b.prototype.postSlide=function(a){var b=this;b.unslicked||(b.$slider.trigger("afterChange",[b,a]),b.animating=!1,b.setPosition(),b.swipeLeft=null,b.options.autoplay&&b.autoPlay(),b.options.accessibility===!0&&b.initADA())},b.prototype.prev=b.prototype.slickPrev=function(){var a=this;a.changeSlide({data:{message:"previous"}})},b.prototype.preventDefault=function(a){a.preventDefault()},b.prototype.progressiveLazyLoad=function(b){b=b||1;var e,f,g,c=this,d=a("img[data-lazy]",c.$slider);d.length?(e=d.first(),f=e.attr("data-lazy"),g=document.createElement("img"),g.onload=function(){e.attr("src",f).removeAttr("data-lazy").removeClass("slick-loading"),c.options.adaptiveHeight===!0&&c.setPosition(),c.$slider.trigger("lazyLoaded",[c,e,f]),c.progressiveLazyLoad()},g.onerror=function(){3>b?setTimeout(function(){c.progressiveLazyLoad(b+1)},500):(e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),c.$slider.trigger("lazyLoadError",[c,e,f]),c.progressiveLazyLoad())},g.src=f):c.$slider.trigger("allImagesLoaded",[c])},b.prototype.refresh=function(b){var d,e,c=this;e=c.slideCount-c.options.slidesToShow,!c.options.infinite&&c.currentSlide>e&&(c.currentSlide=e),c.slideCount<=c.options.slidesToShow&&(c.currentSlide=0),d=c.currentSlide,c.destroy(!0),a.extend(c,c.initials,{currentSlide:d}),c.init(),b||c.changeSlide({data:{message:"index",index:d}},!1)},b.prototype.registerBreakpoints=function(){var c,d,e,b=this,f=b.options.responsive||null;if("array"===a.type(f)&&f.length){b.respondTo=b.options.respondTo||"window";for(c in f)if(e=b.breakpoints.length-1,d=f[c].breakpoint,f.hasOwnProperty(c)){for(;e>=0;)b.breakpoints[e]&&b.breakpoints[e]===d&&b.breakpoints.splice(e,1),e--;b.breakpoints.push(d),b.breakpointSettings[d]=f[c].settings}b.breakpoints.sort(function(a,c){return b.options.mobileFirst?a-c:c-a})}},b.prototype.reinit=function(){var b=this;b.$slides=b.$slideTrack.children(b.options.slide).addClass("slick-slide"),b.slideCount=b.$slides.length,b.currentSlide>=b.slideCount&&0!==b.currentSlide&&(b.currentSlide=b.currentSlide-b.options.slidesToScroll),b.slideCount<=b.options.slidesToShow&&(b.currentSlide=0),b.registerBreakpoints(),b.setProps(),b.setupInfinite(),b.buildArrows(),b.updateArrows(),b.initArrowEvents(),b.buildDots(),b.updateDots(),b.initDotEvents(),b.cleanUpSlideEvents(),b.initSlideEvents(),b.checkResponsive(!1,!0),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.setPosition(),b.focusHandler(),b.paused=!b.options.autoplay,b.autoPlay(),b.$slider.trigger("reInit",[b])},b.prototype.resize=function(){var b=this;a(window).width()!==b.windowWidth&&(clearTimeout(b.windowDelay),b.windowDelay=window.setTimeout(function(){b.windowWidth=a(window).width(),b.checkResponsive(),b.unslicked||b.setPosition()},50))},b.prototype.removeSlide=b.prototype.slickRemove=function(a,b,c){var d=this;return"boolean"==typeof a?(b=a,a=b===!0?0:d.slideCount-1):a=b===!0?--a:a,d.slideCount<1||0>a||a>d.slideCount-1?!1:(d.unload(),c===!0?d.$slideTrack.children().remove():d.$slideTrack.children(this.options.slide).eq(a).remove(),d.$slides=d.$slideTrack.children(this.options.slide),d.$slideTrack.children(this.options.slide).detach(),d.$slideTrack.append(d.$slides),d.$slidesCache=d.$slides,void d.reinit())},b.prototype.setCSS=function(a){var d,e,b=this,c={};b.options.rtl===!0&&(a=-a),d="left"==b.positionProp?Math.ceil(a)+"px":"0px",e="top"==b.positionProp?Math.ceil(a)+"px":"0px",c[b.positionProp]=a,b.transformsEnabled===!1?b.$slideTrack.css(c):(c={},b.cssTransitions===!1?(c[b.animType]="translate("+d+", "+e+")",b.$slideTrack.css(c)):(c[b.animType]="translate3d("+d+", "+e+", 0px)",b.$slideTrack.css(c)))},b.prototype.setDimensions=function(){var a=this;a.options.vertical===!1?a.options.centerMode===!0&&a.$list.css({padding:"0px "+a.options.centerPadding}):(a.$list.height(a.$slides.first().outerHeight(!0)*a.options.slidesToShow),a.options.centerMode===!0&&a.$list.css({padding:a.options.centerPadding+" 0px"})),a.listWidth=a.$list.width(),a.listHeight=a.$list.height(),a.options.vertical===!1&&a.options.variableWidth===!1?(a.slideWidth=Math.ceil(a.listWidth/a.options.slidesToShow),a.$slideTrack.width(Math.ceil(a.slideWidth*a.$slideTrack.children(".slick-slide").length))):a.options.variableWidth===!0?a.$slideTrack.width(5e3*a.slideCount):(a.slideWidth=Math.ceil(a.listWidth),a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0)*a.$slideTrack.children(".slick-slide").length)));var b=a.$slides.first().outerWidth(!0)-a.$slides.first().width();a.options.variableWidth===!1&&a.$slideTrack.children(".slick-slide").width(a.slideWidth-b)},b.prototype.setFade=function(){var c,b=this;b.$slides.each(function(d,e){c=b.slideWidth*d*-1,b.options.rtl===!0?a(e).css({position:"relative",right:c,top:0,zIndex:b.options.zIndex-2,opacity:0}):a(e).css({position:"relative",left:c,top:0,zIndex:b.options.zIndex-2,opacity:0})}),b.$slides.eq(b.currentSlide).css({zIndex:b.options.zIndex-1,opacity:1})},b.prototype.setHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.css("height",b)}},b.prototype.setOption=b.prototype.slickSetOption=function(){var c,d,e,f,h,b=this,g=!1;if("object"===a.type(arguments[0])?(e=arguments[0],g=arguments[1],h="multiple"):"string"===a.type(arguments[0])&&(e=arguments[0],f=arguments[1],g=arguments[2],"responsive"===arguments[0]&&"array"===a.type(arguments[1])?h="responsive":"undefined"!=typeof arguments[1]&&(h="single")),"single"===h)b.options[e]=f;else if("multiple"===h)a.each(e,function(a,c){b.options[a]=c});else if("responsive"===h)for(d in f)if("array"!==a.type(b.options.responsive))b.options.responsive=[f[d]];else{for(c=b.options.responsive.length-1;c>=0;)b.options.responsive[c].breakpoint===f[d].breakpoint&&b.options.responsive.splice(c,1),c--;b.options.responsive.push(f[d])}g&&(b.unload(),b.reinit())},b.prototype.setPosition=function(){var a=this;a.setDimensions(),a.setHeight(),a.options.fade===!1?a.setCSS(a.getLeft(a.currentSlide)):a.setFade(),a.$slider.trigger("setPosition",[a])},b.prototype.setProps=function(){var a=this,b=document.body.style;a.positionProp=a.options.vertical===!0?"top":"left","top"===a.positionProp?a.$slider.addClass("slick-vertical"):a.$slider.removeClass("slick-vertical"),(void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.msTransition)&&a.options.useCSS===!0&&(a.cssTransitions=!0),a.options.fade&&("number"==typeof a.options.zIndex?a.options.zIndex<3&&(a.options.zIndex=3):a.options.zIndex=a.defaults.zIndex),void 0!==b.OTransform&&(a.animType="OTransform",a.transformType="-o-transform",a.transitionType="OTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.MozTransform&&(a.animType="MozTransform",a.transformType="-moz-transform",a.transitionType="MozTransition",void 0===b.perspectiveProperty&&void 0===b.MozPerspective&&(a.animType=!1)),void 0!==b.webkitTransform&&(a.animType="webkitTransform",a.transformType="-webkit-transform",a.transitionType="webkitTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.msTransform&&(a.animType="msTransform",a.transformType="-ms-transform",a.transitionType="msTransition",void 0===b.msTransform&&(a.animType=!1)),void 0!==b.transform&&a.animType!==!1&&(a.animType="transform",a.transformType="transform",a.transitionType="transition"),a.transformsEnabled=a.options.useTransform&&null!==a.animType&&a.animType!==!1},b.prototype.setSlideClasses=function(a){var c,d,e,f,b=this;d=b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),b.$slides.eq(a).addClass("slick-current"),b.options.centerMode===!0?(c=Math.floor(b.options.slidesToShow/2),b.options.infinite===!0&&(a>=c&&a<=b.slideCount-1-c?b.$slides.slice(a-c,a+c+1).addClass("slick-active").attr("aria-hidden","false"):(e=b.options.slidesToShow+a,
d.slice(e-c+1,e+c+2).addClass("slick-active").attr("aria-hidden","false")),0===a?d.eq(d.length-1-b.options.slidesToShow).addClass("slick-center"):a===b.slideCount-1&&d.eq(b.options.slidesToShow).addClass("slick-center")),b.$slides.eq(a).addClass("slick-center")):a>=0&&a<=b.slideCount-b.options.slidesToShow?b.$slides.slice(a,a+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):d.length<=b.options.slidesToShow?d.addClass("slick-active").attr("aria-hidden","false"):(f=b.slideCount%b.options.slidesToShow,e=b.options.infinite===!0?b.options.slidesToShow+a:a,b.options.slidesToShow==b.options.slidesToScroll&&b.slideCount-a<b.options.slidesToShow?d.slice(e-(b.options.slidesToShow-f),e+f).addClass("slick-active").attr("aria-hidden","false"):d.slice(e,e+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false")),"ondemand"===b.options.lazyLoad&&b.lazyLoad()},b.prototype.setupInfinite=function(){var c,d,e,b=this;if(b.options.fade===!0&&(b.options.centerMode=!1),b.options.infinite===!0&&b.options.fade===!1&&(d=null,b.slideCount>b.options.slidesToShow)){for(e=b.options.centerMode===!0?b.options.slidesToShow+1:b.options.slidesToShow,c=b.slideCount;c>b.slideCount-e;c-=1)d=c-1,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d-b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");for(c=0;e>c;c+=1)d=c,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d+b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");b.$slideTrack.find(".slick-cloned").find("[id]").each(function(){a(this).attr("id","")})}},b.prototype.interrupt=function(a){var b=this;a||b.autoPlay(),b.interrupted=a},b.prototype.selectHandler=function(b){var c=this,d=a(b.target).is(".slick-slide")?a(b.target):a(b.target).parents(".slick-slide"),e=parseInt(d.attr("data-slick-index"));return e||(e=0),c.slideCount<=c.options.slidesToShow?(c.setSlideClasses(e),void c.asNavFor(e)):void c.slideHandler(e)},b.prototype.slideHandler=function(a,b,c){var d,e,f,g,j,h=null,i=this;return b=b||!1,i.animating===!0&&i.options.waitForAnimate===!0||i.options.fade===!0&&i.currentSlide===a||i.slideCount<=i.options.slidesToShow?void 0:(b===!1&&i.asNavFor(a),d=a,h=i.getLeft(d),g=i.getLeft(i.currentSlide),i.currentLeft=null===i.swipeLeft?g:i.swipeLeft,i.options.infinite===!1&&i.options.centerMode===!1&&(0>a||a>i.getDotCount()*i.options.slidesToScroll)?void(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d))):i.options.infinite===!1&&i.options.centerMode===!0&&(0>a||a>i.slideCount-i.options.slidesToScroll)?void(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d))):(i.options.autoplay&&clearInterval(i.autoPlayTimer),e=0>d?i.slideCount%i.options.slidesToScroll!==0?i.slideCount-i.slideCount%i.options.slidesToScroll:i.slideCount+d:d>=i.slideCount?i.slideCount%i.options.slidesToScroll!==0?0:d-i.slideCount:d,i.animating=!0,i.$slider.trigger("beforeChange",[i,i.currentSlide,e]),f=i.currentSlide,i.currentSlide=e,i.setSlideClasses(i.currentSlide),i.options.asNavFor&&(j=i.getNavTarget(),j=j.slick("getSlick"),j.slideCount<=j.options.slidesToShow&&j.setSlideClasses(i.currentSlide)),i.updateDots(),i.updateArrows(),i.options.fade===!0?(c!==!0?(i.fadeSlideOut(f),i.fadeSlide(e,function(){i.postSlide(e)})):i.postSlide(e),void i.animateHeight()):void(c!==!0?i.animateSlide(h,function(){i.postSlide(e)}):i.postSlide(e))))},b.prototype.startLoad=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.hide(),a.$nextArrow.hide()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.hide(),a.$slider.addClass("slick-loading")},b.prototype.swipeDirection=function(){var a,b,c,d,e=this;return a=e.touchObject.startX-e.touchObject.curX,b=e.touchObject.startY-e.touchObject.curY,c=Math.atan2(b,a),d=Math.round(180*c/Math.PI),0>d&&(d=360-Math.abs(d)),45>=d&&d>=0?e.options.rtl===!1?"left":"right":360>=d&&d>=315?e.options.rtl===!1?"left":"right":d>=135&&225>=d?e.options.rtl===!1?"right":"left":e.options.verticalSwiping===!0?d>=35&&135>=d?"down":"up":"vertical"},b.prototype.swipeEnd=function(a){var c,d,b=this;if(b.dragging=!1,b.interrupted=!1,b.shouldClick=b.touchObject.swipeLength>10?!1:!0,void 0===b.touchObject.curX)return!1;if(b.touchObject.edgeHit===!0&&b.$slider.trigger("edge",[b,b.swipeDirection()]),b.touchObject.swipeLength>=b.touchObject.minSwipe){switch(d=b.swipeDirection()){case"left":case"down":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide+b.getSlideCount()):b.currentSlide+b.getSlideCount(),b.currentDirection=0;break;case"right":case"up":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide-b.getSlideCount()):b.currentSlide-b.getSlideCount(),b.currentDirection=1}"vertical"!=d&&(b.slideHandler(c),b.touchObject={},b.$slider.trigger("swipe",[b,d]))}else b.touchObject.startX!==b.touchObject.curX&&(b.slideHandler(b.currentSlide),b.touchObject={})},b.prototype.swipeHandler=function(a){var b=this;if(!(b.options.swipe===!1||"ontouchend"in document&&b.options.swipe===!1||b.options.draggable===!1&&-1!==a.type.indexOf("mouse")))switch(b.touchObject.fingerCount=a.originalEvent&&void 0!==a.originalEvent.touches?a.originalEvent.touches.length:1,b.touchObject.minSwipe=b.listWidth/b.options.touchThreshold,b.options.verticalSwiping===!0&&(b.touchObject.minSwipe=b.listHeight/b.options.touchThreshold),a.data.action){case"start":b.swipeStart(a);break;case"move":b.swipeMove(a);break;case"end":b.swipeEnd(a)}},b.prototype.swipeMove=function(a){var d,e,f,g,h,b=this;return h=void 0!==a.originalEvent?a.originalEvent.touches:null,!b.dragging||h&&1!==h.length?!1:(d=b.getLeft(b.currentSlide),b.touchObject.curX=void 0!==h?h[0].pageX:a.clientX,b.touchObject.curY=void 0!==h?h[0].pageY:a.clientY,b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curX-b.touchObject.startX,2))),b.options.verticalSwiping===!0&&(b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curY-b.touchObject.startY,2)))),e=b.swipeDirection(),"vertical"!==e?(void 0!==a.originalEvent&&b.touchObject.swipeLength>4&&a.preventDefault(),g=(b.options.rtl===!1?1:-1)*(b.touchObject.curX>b.touchObject.startX?1:-1),b.options.verticalSwiping===!0&&(g=b.touchObject.curY>b.touchObject.startY?1:-1),f=b.touchObject.swipeLength,b.touchObject.edgeHit=!1,b.options.infinite===!1&&(0===b.currentSlide&&"right"===e||b.currentSlide>=b.getDotCount()&&"left"===e)&&(f=b.touchObject.swipeLength*b.options.edgeFriction,b.touchObject.edgeHit=!0),b.options.vertical===!1?b.swipeLeft=d+f*g:b.swipeLeft=d+f*(b.$list.height()/b.listWidth)*g,b.options.verticalSwiping===!0&&(b.swipeLeft=d+f*g),b.options.fade===!0||b.options.touchMove===!1?!1:b.animating===!0?(b.swipeLeft=null,!1):void b.setCSS(b.swipeLeft)):void 0)},b.prototype.swipeStart=function(a){var c,b=this;return b.interrupted=!0,1!==b.touchObject.fingerCount||b.slideCount<=b.options.slidesToShow?(b.touchObject={},!1):(void 0!==a.originalEvent&&void 0!==a.originalEvent.touches&&(c=a.originalEvent.touches[0]),b.touchObject.startX=b.touchObject.curX=void 0!==c?c.pageX:a.clientX,b.touchObject.startY=b.touchObject.curY=void 0!==c?c.pageY:a.clientY,void(b.dragging=!0))},b.prototype.unfilterSlides=b.prototype.slickUnfilter=function(){var a=this;null!==a.$slidesCache&&(a.unload(),a.$slideTrack.children(this.options.slide).detach(),a.$slidesCache.appendTo(a.$slideTrack),a.reinit())},b.prototype.unload=function(){var b=this;a(".slick-cloned",b.$slider).remove(),b.$dots&&b.$dots.remove(),b.$prevArrow&&b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.remove(),b.$nextArrow&&b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.remove(),b.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")},b.prototype.unslick=function(a){var b=this;b.$slider.trigger("unslick",[b,a]),b.destroy()},b.prototype.updateArrows=function(){var b,a=this;b=Math.floor(a.options.slidesToShow/2),a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&!a.options.infinite&&(a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===a.currentSlide?(a.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-a.options.slidesToShow&&a.options.centerMode===!1?(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-1&&a.options.centerMode===!0&&(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},b.prototype.updateDots=function(){var a=this;null!==a.$dots&&(a.$dots.find("li").removeClass("slick-active").attr("aria-hidden","true"),a.$dots.find("li").eq(Math.floor(a.currentSlide/a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden","false"))},b.prototype.visibility=function(){var a=this;a.options.autoplay&&(document[a.hidden]?a.interrupted=!0:a.interrupted=!1)},a.fn.slick=function(){var f,g,a=this,c=arguments[0],d=Array.prototype.slice.call(arguments,1),e=a.length;for(f=0;e>f;f++)if("object"==typeof c||"undefined"==typeof c?a[f].slick=new b(a[f],c):g=a[f].slick[c].apply(a[f].slick,d),"undefined"!=typeof g)return g;return a}});;
/*	
 * jQuery mmenu v5.3.2
 * @requires jQuery 1.7.0 or later
 *
 * mmenu.frebsite.nl
 *	
 * Copyright (c) Fred Heusschen
 * www.frebsite.nl
 *
 * Licensed under the MIT license:
 * http://en.wikipedia.org/wiki/MIT_License
 */
!function(e){function n(){e[t].glbl||(r={$wndw:e(window),$html:e("html"),$body:e("body")},a={},i={},l={},e.each([a,i,l],function(e,n){n.add=function(e){e=e.split(" ");for(var t=0,s=e.length;s>t;t++)n[e[t]]=n.mm(e[t])}}),a.mm=function(e){return"mm-"+e},a.add("wrapper menu panel nopanel current highest opened subopened navbar hasnavbar title btn prev next listview nolistview inset vertical selected divider spacer hidden fullsubopen"),a.umm=function(e){return"mm-"==e.slice(0,3)&&(e=e.slice(3)),e},i.mm=function(e){return"mm-"+e},i.add("parent sub"),l.mm=function(e){return e+".mm"},l.add("transitionend webkitTransitionEnd mousedown mouseup touchstart touchmove touchend click keydown"),e[t]._c=a,e[t]._d=i,e[t]._e=l,e[t].glbl=r)}var t="mmenu",s="5.3.2";if(!e[t]){e[t]=function(e,n,t){this.$menu=e,this._api=["bind","init","update","setSelected","getInstance","openPanel","closePanel","closeAllPanels"],this.opts=n,this.conf=t,this.vars={},this.cbck={},"function"==typeof this.___deprecated&&this.___deprecated(),this._initMenu(),this._initAnchors();var s=this.$menu.children(this.conf.panelNodetype);return this._initAddons(),this.init(s),"function"==typeof this.___debug&&this.___debug(),this},e[t].version=s,e[t].addons={},e[t].uniqueId=0,e[t].defaults={extensions:[],navbar:{add:!0,title:"Menu",titleLink:"panel"},onClick:{setSelected:!0},slidingSubmenus:!0},e[t].configuration={classNames:{divider:"Divider",inset:"Inset",panel:"Panel",selected:"Selected",spacer:"Spacer",vertical:"Vertical"},clone:!1,openingInterval:25,panelNodetype:"ul, ol, div",transitionDuration:400},e[t].prototype={init:function(e){e=e.not("."+a.nopanel),e=this._initPanels(e),this.trigger("init",e),this.trigger("update")},update:function(){this.trigger("update")},setSelected:function(e){this.$menu.find("."+a.listview).children().removeClass(a.selected),e.addClass(a.selected),this.trigger("setSelected",e)},openPanel:function(e){var n=e.parent();if(n.hasClass(a.vertical)){var t=n.parents("."+a.subopened);if(t.length)return this.openPanel(t.first());n.addClass(a.opened)}else{if(e.hasClass(a.current))return;var s=this.$menu.children("."+a.panel),i=s.filter("."+a.current);s.removeClass(a.highest).removeClass(a.current).not(e).not(i).not("."+a.vertical).addClass(a.hidden),e.hasClass(a.opened)?e.nextAll("."+a.opened).addClass(a.highest).removeClass(a.opened).removeClass(a.subopened):(e.addClass(a.highest),i.addClass(a.subopened)),e.removeClass(a.hidden).addClass(a.current),setTimeout(function(){e.removeClass(a.subopened).addClass(a.opened)},this.conf.openingInterval)}this.trigger("openPanel",e)},closePanel:function(e){var n=e.parent();n.hasClass(a.vertical)&&(n.removeClass(a.opened),this.trigger("closePanel",e))},closeAllPanels:function(){this.$menu.find("."+a.listview).children().removeClass(a.selected).filter("."+a.vertical).removeClass(a.opened);var e=this.$menu.children("."+a.panel),n=e.first();this.$menu.children("."+a.panel).not(n).removeClass(a.subopened).removeClass(a.opened).removeClass(a.current).removeClass(a.highest).addClass(a.hidden),this.openPanel(n)},togglePanel:function(e){var n=e.parent();n.hasClass(a.vertical)&&this[n.hasClass(a.opened)?"closePanel":"openPanel"](e)},getInstance:function(){return this},bind:function(e,n){this.cbck[e]=this.cbck[e]||[],this.cbck[e].push(n)},trigger:function(){var e=this,n=Array.prototype.slice.call(arguments),t=n.shift();if(this.cbck[t])for(var s=0,a=this.cbck[t].length;a>s;s++)this.cbck[t][s].apply(e,n)},_initMenu:function(){this.opts.offCanvas&&this.conf.clone&&(this.$menu=this.$menu.clone(!0),this.$menu.add(this.$menu.find("[id]")).filter("[id]").each(function(){e(this).attr("id",a.mm(e(this).attr("id")))})),this.$menu.contents().each(function(){3==e(this)[0].nodeType&&e(this).remove()}),this.$menu.parent().addClass(a.wrapper);var n=[a.menu];this.opts.slidingSubmenus||n.push(a.vertical),this.opts.extensions=this.opts.extensions.length?"mm-"+this.opts.extensions.join(" mm-"):"",this.opts.extensions&&n.push(this.opts.extensions),this.$menu.addClass(n.join(" "))},_initPanels:function(n){var t=this,s=this.__findAddBack(n,"ul, ol");this.__refactorClass(s,this.conf.classNames.inset,"inset").addClass(a.nolistview+" "+a.nopanel),s.not("."+a.nolistview).addClass(a.listview);var l=this.__findAddBack(n,"."+a.listview).children();this.__refactorClass(l,this.conf.classNames.selected,"selected"),this.__refactorClass(l,this.conf.classNames.divider,"divider"),this.__refactorClass(l,this.conf.classNames.spacer,"spacer"),this.__refactorClass(this.__findAddBack(n,"."+this.conf.classNames.panel),this.conf.classNames.panel,"panel");var r=e(),d=n.add(n.find("."+a.panel)).add(this.__findAddBack(n,"."+a.listview).children().children(this.conf.panelNodetype)).not("."+a.nopanel);this.__refactorClass(d,this.conf.classNames.vertical,"vertical"),this.opts.slidingSubmenus||d.addClass(a.vertical),d.each(function(){var n=e(this),s=n;n.is("ul, ol")?(n.wrap('<div class="'+a.panel+'" />'),s=n.parent()):s.addClass(a.panel);var i=n.attr("id");n.removeAttr("id"),s.attr("id",i||t.__getUniqueId()),n.hasClass(a.vertical)&&(n.removeClass(t.conf.classNames.vertical),s.add(s.parent()).addClass(a.vertical)),r=r.add(s)});var o=e("."+a.panel,this.$menu);r.each(function(){var n=e(this),s=n.parent(),l=s.children("a, span").first();if(s.is("."+a.menu)||(s.data(i.sub,n),n.data(i.parent,s)),!s.children("."+a.next).length&&s.parent().is("."+a.listview)){var r=n.attr("id"),d=e('<a class="'+a.next+'" href="#'+r+'" data-target="#'+r+'" />').insertBefore(l);l.is("span")&&d.addClass(a.fullsubopen)}if(!n.children("."+a.navbar).length&&!s.hasClass(a.vertical)){if(s.parent().is("."+a.listview))var s=s.closest("."+a.panel);else var l=s.closest("."+a.panel).find('a[href="#'+n.attr("id")+'"]').first(),s=l.closest("."+a.panel);var o=e('<div class="'+a.navbar+'" />');if(s.length){var r=s.attr("id");switch(t.opts.navbar.titleLink){case"anchor":_url=l.attr("href");break;case"panel":case"parent":_url="#"+r;break;case"none":default:_url=!1}o.append('<a class="'+a.btn+" "+a.prev+'" href="#'+r+'" data-target="#'+r+'"></a>').append('<a class="'+a.title+'"'+(_url?' href="'+_url+'"':"")+">"+l.text()+"</a>").prependTo(n),t.opts.navbar.add&&n.addClass(a.hasnavbar)}else t.opts.navbar.title&&(o.append('<a class="'+a.title+'">'+t.opts.navbar.title+"</a>").prependTo(n),t.opts.navbar.add&&n.addClass(a.hasnavbar))}});var c=this.__findAddBack(n,"."+a.listview).children("."+a.selected).removeClass(a.selected).last().addClass(a.selected);c.add(c.parentsUntil("."+a.menu,"li")).filter("."+a.vertical).addClass(a.opened).end().not("."+a.vertical).each(function(){e(this).parentsUntil("."+a.menu,"."+a.panel).not("."+a.vertical).first().addClass(a.opened).parentsUntil("."+a.menu,"."+a.panel).not("."+a.vertical).first().addClass(a.opened).addClass(a.subopened)}),c.children("."+a.panel).not("."+a.vertical).addClass(a.opened).parentsUntil("."+a.menu,"."+a.panel).not("."+a.vertical).first().addClass(a.opened).addClass(a.subopened);var h=o.filter("."+a.opened);return h.length||(h=r.first()),h.addClass(a.opened).last().addClass(a.current),r.not("."+a.vertical).not(h.last()).addClass(a.hidden).end().appendTo(this.$menu),r},_initAnchors:function(){var n=this;r.$body.on(l.click+"-oncanvas","a[href]",function(s){var i=e(this),l=!1,d=n.$menu.find(i).length;for(var o in e[t].addons)if(l=e[t].addons[o].clickAnchor.call(n,i,d))break;if(!l&&d){var c=i.attr("href");if(c.length>1&&"#"==c.slice(0,1))try{var h=e(c,n.$menu);h.is("."+a.panel)&&(l=!0,n[i.parent().hasClass(a.vertical)?"togglePanel":"openPanel"](h))}catch(u){}}if(l&&s.preventDefault(),!l&&d&&i.is("."+a.listview+" > li > a")&&!i.is('[rel="external"]')&&!i.is('[target="_blank"]')){n.__valueOrFn(n.opts.onClick.setSelected,i)&&n.setSelected(e(s.target).parent());var p=n.__valueOrFn(n.opts.onClick.preventDefault,i,"#"==c.slice(0,1));p&&s.preventDefault(),n.__valueOrFn(n.opts.onClick.blockUI,i,!p)&&r.$html.addClass(a.blocking),n.__valueOrFn(n.opts.onClick.close,i,p)&&n.close()}})},_initAddons:function(){for(var n in e[t].addons)e[t].addons[n].add.call(this),e[t].addons[n].add=function(){};for(var n in e[t].addons)e[t].addons[n].setup.call(this)},__api:function(){var n=this,t={};return e.each(this._api,function(){var e=this;t[e]=function(){var s=n[e].apply(n,arguments);return"undefined"==typeof s?t:s}}),t},__valueOrFn:function(e,n,t){return"function"==typeof e?e.call(n[0]):"undefined"==typeof e&&"undefined"!=typeof t?t:e},__refactorClass:function(e,n,t){return e.filter("."+n).removeClass(n).addClass(a[t])},__findAddBack:function(e,n){return e.find(n).add(e.filter(n))},__filterListItems:function(e){return e.not("."+a.divider).not("."+a.hidden)},__transitionend:function(e,n,t){var s=!1,a=function(){s||n.call(e[0]),s=!0};e.one(l.transitionend,a),e.one(l.webkitTransitionEnd,a),setTimeout(a,1.1*t)},__getUniqueId:function(){return a.mm(e[t].uniqueId++)}},e.fn[t]=function(s,a){return n(),s=e.extend(!0,{},e[t].defaults,s),a=e.extend(!0,{},e[t].configuration,a),this.each(function(){var n=e(this);if(!n.data(t)){var i=new e[t](n,s,a);n.data(t,i.__api())}})},e[t].support={touch:"ontouchstart"in window||navigator.msMaxTouchPoints};var a,i,l,r}}(jQuery);
/*	
 * jQuery mmenu offCanvas addon
 * mmenu.frebsite.nl
 *
 * Copyright (c) Fred Heusschen
 */
!function(t){var e="mmenu",o="offCanvas";t[e].addons[o]={setup:function(){if(this.opts[o]){var n=this.opts[o],i=this.conf[o];a=t[e].glbl,this._api=t.merge(this._api,["open","close","setPage"]),("top"==n.position||"bottom"==n.position)&&(n.zposition="front"),"string"!=typeof i.pageSelector&&(i.pageSelector="> "+i.pageNodetype),a.$allMenus=(a.$allMenus||t()).add(this.$menu),this.vars.opened=!1;var r=[s.offcanvas];"left"!=n.position&&r.push(s.mm(n.position)),"back"!=n.zposition&&r.push(s.mm(n.zposition)),this.$menu.addClass(r.join(" ")).parent().removeClass(s.wrapper),this.setPage(a.$page),this._initBlocker(),this["_initWindow_"+o](),this.$menu[i.menuInjectMethod+"To"](i.menuWrapperSelector)}},add:function(){s=t[e]._c,n=t[e]._d,i=t[e]._e,s.add("offcanvas slideout modal background opening blocker page"),n.add("style"),i.add("resize")},clickAnchor:function(t){if(!this.opts[o])return!1;var e=this.$menu.attr("id");if(e&&e.length&&(this.conf.clone&&(e=s.umm(e)),t.is('[href="#'+e+'"]')))return this.open(),!0;if(a.$page){var e=a.$page.first().attr("id");return e&&e.length&&t.is('[href="#'+e+'"]')?(this.close(),!0):!1}}},t[e].defaults[o]={position:"left",zposition:"back",modal:!1,moveBackground:!0},t[e].configuration[o]={pageNodetype:"div",pageSelector:null,wrapPageIfNeeded:!0,menuWrapperSelector:"body",menuInjectMethod:"prepend"},t[e].prototype.open=function(){if(!this.vars.opened){var t=this;this._openSetup(),setTimeout(function(){t._openFinish()},this.conf.openingInterval),this.trigger("open")}},t[e].prototype._openSetup=function(){var e=this;this.closeAllOthers(),a.$page.each(function(){t(this).data(n.style,t(this).attr("style")||"")}),a.$wndw.trigger(i.resize+"-offcanvas",[!0]);var r=[s.opened];this.opts[o].modal&&r.push(s.modal),this.opts[o].moveBackground&&r.push(s.background),"left"!=this.opts[o].position&&r.push(s.mm(this.opts[o].position)),"back"!=this.opts[o].zposition&&r.push(s.mm(this.opts[o].zposition)),this.opts.extensions&&r.push(this.opts.extensions),a.$html.addClass(r.join(" ")),setTimeout(function(){e.vars.opened=!0},this.conf.openingInterval),this.$menu.addClass(s.current+" "+s.opened)},t[e].prototype._openFinish=function(){var t=this;this.__transitionend(a.$page.first(),function(){t.trigger("opened")},this.conf.transitionDuration),a.$html.addClass(s.opening),this.trigger("opening")},t[e].prototype.close=function(){if(this.vars.opened){var e=this;this.__transitionend(a.$page.first(),function(){e.$menu.removeClass(s.current).removeClass(s.opened),a.$html.removeClass(s.opened).removeClass(s.modal).removeClass(s.background).removeClass(s.mm(e.opts[o].position)).removeClass(s.mm(e.opts[o].zposition)),e.opts.extensions&&a.$html.removeClass(e.opts.extensions),a.$page.each(function(){t(this).attr("style",t(this).data(n.style))}),e.vars.opened=!1,e.trigger("closed")},this.conf.transitionDuration),a.$html.removeClass(s.opening),this.trigger("close"),this.trigger("closing")}},t[e].prototype.closeAllOthers=function(){a.$allMenus.not(this.$menu).each(function(){var o=t(this).data(e);o&&o.close&&o.close()})},t[e].prototype.setPage=function(e){var n=this,i=this.conf[o];e&&e.length||(e=a.$body.find(i.pageSelector),e.length>1&&i.wrapPageIfNeeded&&(e=e.wrapAll("<"+this.conf[o].pageNodetype+" />").parent())),e.each(function(){t(this).attr("id",t(this).attr("id")||n.__getUniqueId())}),e.addClass(s.page+" "+s.slideout),a.$page=e,this.trigger("setPage",e)},t[e].prototype["_initWindow_"+o]=function(){a.$wndw.off(i.keydown+"-offcanvas").on(i.keydown+"-offcanvas",function(t){return a.$html.hasClass(s.opened)&&9==t.keyCode?(t.preventDefault(),!1):void 0});var t=0;a.$wndw.off(i.resize+"-offcanvas").on(i.resize+"-offcanvas",function(e,o){if(1==a.$page.length&&(o||a.$html.hasClass(s.opened))){var n=a.$wndw.height();(o||n!=t)&&(t=n,a.$page.css("minHeight",n))}})},t[e].prototype._initBlocker=function(){var e=this;a.$blck||(a.$blck=t('<div id="'+s.blocker+'" class="'+s.slideout+'" />')),a.$blck.appendTo(a.$body).off(i.touchstart+"-offcanvas "+i.touchmove+"-offcanvas").on(i.touchstart+"-offcanvas "+i.touchmove+"-offcanvas",function(t){t.preventDefault(),t.stopPropagation(),a.$blck.trigger(i.mousedown+"-offcanvas")}).off(i.mousedown+"-offcanvas").on(i.mousedown+"-offcanvas",function(t){t.preventDefault(),a.$html.hasClass(s.modal)||(e.closeAllOthers(),e.close())})};var s,n,i,a}(jQuery);;
!function(e,t){"use strict";function n(){function n(t){var n=t||e.event,o=n.keyCode||n.which;if(-1!==[9,13,32,27].indexOf(o)){for(var a=n.target||n.srcElement,r=-1,s=0;s<x.length;s++)if(a===x[s]){r=s;break}9===o?(a=-1===r?k:n.shiftKey?0===r?x[x.length-1]:x[r-1]:r===x.length-1?x[0]:x[r+1],H(n),l(a)):13===o||32===o?-1===r&&I(k,n):27===o&&u.allowEscapeKey===!0&&I(B,n)}}if(void 0===arguments[0])return e.console.error("sweetAlert expects at least 1 attribute!"),!1;var u=r({},w);switch(typeof arguments[0]){case"string":u.title=arguments[0],u.text=arguments[1]||"",u.type=arguments[2]||"";break;case"object":u.title=arguments[0].title||w.title,u.text=arguments[0].text||w.text,u.html=arguments[0].html||w.html,u.type=arguments[0].type||w.type,u.animation=void 0!==arguments[0].animation?arguments[0].animation:w.animation,u.customClass=arguments[0].customClass||u.customClass,u.allowOutsideClick=void 0!==arguments[0].allowOutsideClick?arguments[0].allowOutsideClick:w.allowOutsideClick,u.allowEscapeKey=void 0!==arguments[0].allowEscapeKey?arguments[0].allowEscapeKey:w.allowEscapeKey,u.showConfirmButton=void 0!==arguments[0].showConfirmButton?arguments[0].showConfirmButton:w.showConfirmButton,u.showCancelButton=void 0!==arguments[0].showCancelButton?arguments[0].showCancelButton:w.showCancelButton,u.closeOnConfirm=void 0!==arguments[0].closeOnConfirm?arguments[0].closeOnConfirm:w.closeOnConfirm,u.closeOnCancel=void 0!==arguments[0].closeOnCancel?arguments[0].closeOnCancel:w.closeOnCancel,u.timer=parseInt(arguments[0].timer)||w.timer,u.width=parseInt(arguments[0].width)||w.width,u.padding=parseInt(arguments[0].padding)||w.padding,u.background=void 0!==arguments[0].background?arguments[0].background:w.background,u.confirmButtonText=arguments[0].confirmButtonText||w.confirmButtonText,u.confirmButtonColor=arguments[0].confirmButtonColor||w.confirmButtonColor,u.confirmButtonClass=arguments[0].confirmButtonClass||u.confirmButtonClass,u.cancelButtonText=arguments[0].cancelButtonText||w.cancelButtonText,u.cancelButtonColor=arguments[0].cancelButtonColor||w.cancelButtonColor,u.cancelButtonClass=arguments[0].cancelButtonClass||u.cancelButtonClass,u.imageUrl=arguments[0].imageUrl||w.imageUrl,u.imageSize=arguments[0].imageSize||w.imageSize,u.callback=arguments[1]||null,e.sweetAlert.callback=e.swal.callback=function(e){"function"==typeof u.callback&&u.callback(e)};break;default:return e.console.error('Unexpected type of argument! Expected "string" or "object", got '+typeof arguments[0]),!1}o(u),c(),s();var g=b();u.timer&&(g.timeout=setTimeout(function(){i(),"function"==typeof u.callback&&u.callback()},u.timer));var y,p=function(t){var n=t||e.event,o=n.target||n.srcElement,r=C(o,"confirm"),l=C(o,"cancel"),s=C(g,"visible");switch(n.type){case"mouseover":case"mouseup":case"focus":r?o.style.backgroundColor=a(u.confirmButtonColor,-.1):l&&(o.style.backgroundColor=a(u.cancelButtonColor,-.1));break;case"mouseout":case"blur":r?o.style.backgroundColor=u.confirmButtonColor:l&&(o.style.backgroundColor=u.cancelButtonColor);break;case"mousedown":r?o.style.backgroundColor=a(u.confirmButtonColor,-.2):l&&(o.style.backgroundColor=a(u.cancelButtonColor,-.2));break;case"click":if(r&&u.callback&&s)u.callback(!0),u.closeOnConfirm&&i();else if(u.callback&&s){var c=String(u.callback).replace(/\s/g,""),m="function("===c.substring(0,9)&&")"!==c.substring(9,10);m&&u.callback(!1),u.closeOnCancel&&i()}else i()}},v=g.querySelectorAll("button");for(y=0;y<v.length;y++)v[y].onclick=p,v[y].onmouseover=p,v[y].onmouseout=p,v[y].onmousedown=p;m=t.onclick,t.onclick=function(t){var n=t||e.event,o=n.target||n.srcElement;o===h()&&u.allowOutsideClick&&i()};var k=g.querySelector("button.confirm"),B=g.querySelector("button.cancel"),x=g.querySelectorAll("button, input:not([type=hidden]), textarea");for(y=0;y<x.length;y++)x[y].addEventListener("focus",p,!0),x[y].addEventListener("blur",p,!0);d=e.onkeydown,e.onkeydown=n,k.style.borderLeftColor=u.confirmButtonColor,k.style.borderRightColor=u.confirmButtonColor,e.swal.toggleLoading=function(){k.disabled=!k.disabled,B.disabled=!B.disabled},e.swal.enableButtons=function(){k.disabled=!1,B.disabled=!1},e.swal.disableButtons=function(){k.disabled=!0,B.disabled=!0},swal.enableButtons(),e.onfocus=function(){e.setTimeout(function(){void 0!==f&&(f.focus(),f=void 0)},0)}}function o(n){var o=b();o.style.width=n.width+"px",o.style.padding=n.padding+"px",o.style.marginLeft=-n.width/2+"px",o.style.background=n.background;var a=t.getElementsByTagName("head")[0],r=t.createElement("style");r.type="text/css",r.id=p,r.innerHTML="@media screen and (max-width: "+n.width+"px) {.sweet-alert {max-width: 100%;left: 0 !important;margin-left: 0 !important;}}",a.appendChild(r);var l=o.querySelector("h2"),s=o.querySelector("p"),i=o.querySelector("button.cancel"),c=o.querySelector("button.confirm"),u=o.querySelector("hr");if(l.innerHTML=x(n.title).split("\n").join("<br>"),s.innerHTML=x(n.text.split("\n").join("<br>"))||n.html,s.innerHTML&&E(s),n.customClass&&k(o,n.customClass),q(o.querySelectorAll(".icon")),n.type){for(var m=!1,d=0;d<v.length;d++)if(n.type===v[d]){m=!0;break}if(!m)return e.console.error("Unknown alert type: "+n.type),!1;var f=o.querySelector(".icon."+n.type);switch(E(f),n.type){case"success":k(f,"animate"),k(f.querySelector(".tip"),"animate-success-tip"),k(f.querySelector(".long"),"animate-success-long");break;case"error":k(f,"animate-error-icon"),k(f.querySelector(".x-mark"),"animate-x-mark");break;case"warning":k(f,"pulse-warning"),k(f.querySelector(".body"),"pulse-warning-ins"),k(f.querySelector(".dot"),"pulse-warning-ins")}}if(n.imageUrl){var g=o.querySelector(".icon.custom");if(g.style.backgroundImage="url("+n.imageUrl+")",E(g),n.imageSize){var y=n.imageSize.match(/(\d+)x(\d+)/);y?g.setAttribute("style",g.getAttribute("style")+"width:"+y[1]+"px; height:"+y[2]+"px"):e.console.error("Parameter imageSize expects value with format WIDTHxHEIGHT, got "+n.imageSize)}}n.showCancelButton?i.style.display="inline-block":q(i),n.showConfirmButton?c.style.display="inline-block":q(c),n.showConfirmButton||n.showCancelButton||q(u),c.innerHTML=x(n.confirmButtonText),i.innerHTML=x(n.cancelButtonText),c.style.backgroundColor=n.confirmButtonColor,i.style.backgroundColor=n.cancelButtonColor,c.className="confirm",k(c,n.confirmButtonClass),i.className="cancel",k(i,n.cancelButtonClass),n.animation===!0?B(o,"no-animation"):k(o,"no-animation")}function a(e,t){e=String(e).replace(/[^0-9a-f]/gi,""),e.length<6&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),t=t||0;for(var n="#",o=0;3>o;o++){var a=parseInt(e.substr(2*o,2),16);a=Math.round(Math.min(Math.max(0,a+a*t),255)).toString(16),n+=("00"+a).substr(a.length)}return n}function r(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function l(e){e.focus()}function s(){var e=b();L(h(),10),E(e),k(e,"show-sweet-alert"),B(e,"hide-sweet-alert"),u=t.activeElement,setTimeout(function(){k(e,"visible")},500)}function i(){var n=b();M(h(),5),M(n,5),B(n,"showSweetAlert"),k(n,"hideSweetAlert"),B(n,"visible");var o=n.querySelector(".icon.success");B(o,"animate"),B(o.querySelector(".tip"),"animate-success-tip"),B(o.querySelector(".long"),"animate-success-long");var a=n.querySelector(".icon.error");B(a,"animate-error-icon"),B(a.querySelector(".x-mark"),"animate-x-mark");var r=n.querySelector(".icon.warning");B(r,"pulse-warning"),B(r.querySelector(".body"),"pulse-warning-ins"),B(r.querySelector(".dot"),"pulse-warning-ins"),e.onkeydown=d,t.onclick=m,u&&u.focus(),f=void 0,clearTimeout(n.timeout);var l=t.getElementsByTagName("head")[0],s=t.getElementById(p);l.removeChild(s)}function c(){var e=b();e.style.marginTop=O(b())}var u,m,d,f,g=".sweet-alert",y=".sweet-overlay",p="sweet-alert-mediaquery",v=["error","warning","info","success"],w={title:"",text:"",html:"",type:null,animation:!0,allowOutsideClick:!0,allowEscapeKey:!0,showConfirmButton:!0,showCancelButton:!1,closeOnConfirm:!0,closeOnCancel:!0,confirmButtonText:"OK",confirmButtonColor:"#3085d6",confirmButtonClass:null,cancelButtonText:"Cancel",cancelButtonColor:"#aaa",cancelButtonClass:null,imageUrl:null,imageSize:null,timer:null,width:500,padding:20,background:"#fff"},b=function(){return t.querySelector(g)},h=function(){return t.querySelector(y)},C=function(e,t){return new RegExp(" "+t+" ").test(" "+e.className+" ")},k=function(e,t){t&&!C(e,t)&&(e.className+=" "+t)},B=function(e,t){var n=" "+e.className.replace(/[\t\r\n]/g," ")+" ";if(C(e,t)){for(;n.indexOf(" "+t+" ")>=0;)n=n.replace(" "+t+" "," ");e.className=n.replace(/^\s+|\s+$/g,"")}},x=function(e){var n=t.createElement("div");return n.appendChild(t.createTextNode(e)),n.innerHTML},S=function(e){e.style.opacity="",e.style.display="block"},E=function(e){if(e&&!e.length)return S(e);for(var t=0;t<e.length;++t)S(e[t])},T=function(e){e.style.opacity="",e.style.display="none"},q=function(e){if(e&&!e.length)return T(e);for(var t=0;t<e.length;++t)T(e[t])},O=function(e){e.style.left="-9999px",e.style.display="block";var t,n=e.clientHeight;return t="undefined"!=typeof getComputedStyle?parseInt(getComputedStyle(e).getPropertyValue("padding"),10):parseInt(e.currentStyle.padding),e.style.left="",e.style.display="none","-"+parseInt(n/2+t)+"px"},L=function(e,t){if(+e.style.opacity<1){t=t||16,e.style.opacity=0,e.style.display="block";var n=+new Date,o=function(){e.style.opacity=+e.style.opacity+(new Date-n)/100,n=+new Date,+e.style.opacity<1&&setTimeout(o,t)};o()}e.style.display="block"},M=function(e,t){t=t||16,e.style.opacity=1;var n=+new Date,o=function(){e.style.opacity=+e.style.opacity-(new Date-n)/100,n=+new Date,+e.style.opacity>0?setTimeout(o,t):e.style.display="none"};o()},I=function(n){if("function"==typeof MouseEvent){var o=new MouseEvent("click",{view:e,bubbles:!1,cancelable:!0});n.dispatchEvent(o)}else if(t.createEvent){var a=t.createEvent("MouseEvents");a.initEvent("click",!1,!1),n.dispatchEvent(a)}else t.createEventObject?n.fireEvent("onclick"):"function"==typeof n.onclick&&n.onclick()},H=function(t){"function"==typeof t.stopPropagation?(t.stopPropagation(),t.preventDefault()):e.event&&e.event.hasOwnProperty("cancelBubble")&&(e.event.cancelBubble=!0)};e.sweetAlert=e.swal=function(){var e=arguments;if(null!==b())n.apply(this,e);else var t=setInterval(function(){null!==b()&&(clearInterval(t),n.apply(this,e))},100)},e.sweetAlert.closeModal=e.swal.closeModal=function(){i()},e.swal.init=function(){var e='<div class="sweet-overlay" tabIndex="-1"></div><div class="sweet-alert" tabIndex="-1"><div class="icon error"><span class="x-mark"><span class="line left"></span><span class="line right"></span></span></div><div class="icon warning"> <span class="body"></span> <span class="dot"></span> </div> <div class="icon info"></div> <div class="icon success"> <span class="line tip"></span> <span class="line long"></span> <div class="placeholder"></div> <div class="fix"></div> </div> <div class="icon custom"></div> <h2>Title</h2><p>Text</p><hr><button class="confirm">OK</button><button class="cancel">Cancel</button></div>',n=t.createElement("div");n.className="sweet-container",n.innerHTML=e,t.body.appendChild(n)},e.swal.setDefaults=function(e){if(!e)throw new Error("userParams is required");if("object"!=typeof e)throw new Error("userParams has to be a object");r(w,e)},function(){"complete"===t.readyState||"interactive"===t.readyState&&t.body?swal.init():t.addEventListener?t.addEventListener("DOMContentLoaded",function e(){t.removeEventListener("DOMContentLoaded",e,!1),swal.init()},!1):t.attachEvent&&t.attachEvent("onreadystatechange",function n(){"complete"===t.readyState&&(t.detachEvent("onreadystatechange",n),swal.init())})}()}(window,document);;
/*! v0.2.3 https://github.com/codekipple/conformity. Plugin adapted from this code:- http://codepen.io/micahgodbolt/details/FgqLc */

/*
    pass conformity a jquery collection of blocks inside a container, conformity will make sure each row is
    equal heights, call conformity on window resize for responsive equal heights

    Supports CommonJS, AMD or browser globals.
    see: https://github.com/umdjs/umd/blob/master/jqueryPluginCommonjs.js
*/
(function (factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD. Register as an anonymous module.
        define(['jquery'], factory);
    } else if (typeof exports === 'object') {
        // Node/CommonJS
        factory(require('jquery'));
    } else {
        // Browser globals
        factory(jQuery);
    }
}(function ($) {
    $.fn.conformity = function (options) {
        var settings = {
                'mode': 'min-height'
            },
            elements = $(this),
            currentTallest = 0,
            currentRowStart = 0,
            rowDivs = [],
            $el,
            topPosition = 0;

        if (options) {
            $.extend(settings, options);
        }

        return elements.each(function() {
            $el = $(this);

            /*
                alter height and min-height so we can get an accurate measure of the
                elements height
            */
            if (settings.mode === 'min-height') {
                $el
                    .height('auto')
                    .css('min-height', 0);
            } else if (settings.mode === 'height')  {
                $el.height('auto');
            }

            /*
                top offset is used to determine if the element is on the current
                row or a new one
            */
            topPosition = $el.offset().top;

            if (currentRowStart != topPosition) {
                for (currentDiv = 0 ; currentDiv < rowDivs.length ; currentDiv++) {
                    rowDivs[currentDiv].css(settings.mode, currentTallest);
                }

                rowDivs.length = 0; // empty the array
                currentRowStart = topPosition;
                currentTallest = $el.outerHeight();
                rowDivs.push($el);
            } else {
                rowDivs.push($el);
                currentTallest = (currentTallest < $el.outerHeight()) ? ($el.outerHeight()) : (currentTallest);
            }

            for (currentDiv = 0 ; currentDiv < rowDivs.length ; currentDiv++) {
                rowDivs[currentDiv].css(settings.mode, currentTallest);
            }
        });
    };
}));;
/* ImageMapster
   Version: 1.2.14-beta1 (6/18/2013)

Copyright 2011-2012 James Treworgy

http://www.outsharked.com/imagemapster
https://github.com/jamietre/ImageMapster

A jQuery plugin to enhance image maps.

*/
/// The above copyright notice and this permission notice shall be
/// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
/** @license MIT License (c) copyright B Cavalier & J Hann */
! function (e) {
    e(function () {
        function e() {}

        function t(t) {
            var n = new e;
            return n.then = function (e) {
                var n;
                try {
                    return e && (n = e(t)), s(n === _ ? t : n)
                } catch (i) {
                    return a(i)
                }
            }, w(n)
        }

        function a(t) {
            var n = new e;
            return n.then = function (e, n) {
                var i;
                try {
                    return n ? (i = n(t), s(i === _ ? t : i)) : a(t)
                } catch (o) {
                    return a(o)
                }
            }, w(n)
        }

        function n(e) {
            return r(e, function (e) {
                return a(e)
            })
        }

        function i() {
            function n(e, t, a) {
                return p(e, t, a)
            }

            function o(e) {
                d(t(e))
            }

            function r(e) {
                d(a(e))
            }

            function s(e) {
                f(e)
            }
            var c, l, u, h, p, f, d;
            return u = [], h = [], p = function (e, t, a) {
                var n = i();
                return u.push(function (a) {
                    a.then(e, t).then(n.resolve, n.reject, n.progress)
                }), a && h.push(a), n.promise
            }, f = function (e) {
                for (var t, a = 0; t = h[a++];) t(e)
            }, d = function (e) {
                var t, a = 0;
                for (p = e.then, d = f = function () {
                        throw new Error("already completed")
                    }, h = _; t = u[a++];) t(e);
                u = []
            }, c = {}, l = new e, l.then = c.then = n, c.promise = w(l), c.resolver = w({
                resolve: c.resolve = o,
                reject: c.reject = r,
                progress: c.progress = s
            }), c
        }

        function o(e) {
            return e && "function" == typeof e.then
        }

        function r(e, t, a, n) {
            var i = s(e);
            return i.then(t, a, n)
        }

        function s(t) {
            var a, n;
            return t instanceof e ? a = t : (n = i(), o(t) ? (t.then(n.resolve, n.reject, n.progress), a = n.promise) : (n.resolve(t), a = n.promise)), a
        }

        function c(e, t, a, n, o) {
            return v(2, arguments), r(e, function (e) {
                function s(e) {
                    m(e)
                }

                function c(e) {
                    g(e)
                }

                function l(e) {
                    v(e)
                }

                function u() {
                    m = g = v = y
                }
                var h, p, f, d, m, g, v, w, b;
                if (w = e.length >>> 0, h = Math.max(0, Math.min(t, w)), p = [], d = i(), f = r(d, a, n, o), h)
                    for (m = function (e) {
                            p.push(e), --h || (u(), d.resolve(p))
                        }, g = function (e) {
                            u(), d.reject(e)
                        }, v = d.progress, b = 0; w > b; ++b) b in e && r(e[b], s, c, l);
                else d.resolve(p);
                return f
            })
        }

        function l(e, t, a, n) {
            return v(1, arguments), r(e, function (e) {
                return m(e, u, [])
            }).then(t, a, n)
        }

        function u(e, t, a) {
            return e[a] = t, e
        }

        function h(e, t, a, n) {
            function i(e) {
                return t ? t(e[0]) : e[0]
            }
            return c(e, 1, i, a, n)
        }

        function p(e, t) {
            return r(e, function (e) {
                return f(e, t)
            })
        }

        function f(e, t) {
            var a, n, i;
            for (n = e.length >>> 0, a = new Array(n), i = 0; n > i; i++) i in e && (a[i] = r(e[i], t));
            return m(a, u, a)
        }

        function d(e, t, a) {
            var n = k.call(arguments, 1);
            return r(e, function (e) {
                return m.apply(_, [e].concat(n))
            })
        }

        function m(e, t, a) {
            var n, i;
            return n = e.length, i = [function (e, a, i) {
                return r(e, function (e) {
                    return r(a, function (a) {
                        return t(e, a, i, n)
                    })
                })
            }], arguments.length > 2 && i.push(a), b.apply(e, i)
        }

        function g(e, t, n) {
            var i = arguments.length > 2;
            return r(e, function (e) {
                return i && (e = n), t.resolve(e), e
            }, function (e) {
                return t.reject(e), a(e)
            }, t.progress)
        }

        function v(e, t) {
            for (var a, n = t.length; n > e;)
                if (a = t[--n], null != a && "function" != typeof a) throw new Error("callback is not a function")
        }

        function y() {}
        var w, b, k, _;
        return r.defer = i, r.reject = n, r.isPromise = o, r.all = l, r.some = c, r.any = h, r.map = p, r.reduce = d, r.chain = g, w = Object.freeze || function (e) {
            return e
        }, e.prototype = w({
            always: function (e, t) {
                return this.then(e, e, t)
            },
            otherwise: function (e) {
                return this.then(_, e)
            }
        }), k = [].slice, b = [].reduce || function (e) {
            var t, a, n, i, o;
            if (o = 0, t = Object(this), i = t.length >>> 0, a = arguments, a.length <= 1)
                for (;;) {
                    if (o in t) {
                        n = t[o++];
                        break
                    }
                    if (++o >= i) throw new TypeError
                } else n = a[1];
            for (; i > o; ++o) o in t && (n = e(n, t[o], o, t));
            return n
        }, r
    })
}("function" == typeof define ? define : function (e) {
    "undefined" != typeof module ? module.exports = e() : jQuery.mapster_when = e()
}),
function ($) {
    $.fn.mapster = function (e) {
        var t = $.mapster.impl;
        return $.isFunction(t[e]) ? t[e].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof e && e ? void $.error("Method " + e + " does not exist on jQuery.mapster") : t.bind.apply(this, arguments)
    }, $.mapster = {
        version: "1.2.14-beta1",
        render_defaults: {
            isSelectable: !0,
            isDeselectable: !0,
            fade: !1,
            fadeDuration: 150,
            fill: !0,
            fillColor: "000000",
            fillColorMask: "FFFFFF",
            fillOpacity: .7,
            highlight: !0,
            stroke: !1,
            strokeColor: "ff0000",
            strokeOpacity: 1,
            strokeWidth: 1,
            includeKeys: "",
            altImage: null,
            altImageId: null,
            altImages: {}
        },
        defaults: {
            clickNavigate: !1,
            wrapClass: null,
            wrapCss: null,
            onGetList: null,
            sortList: !1,
            listenToList: !1,
            mapKey: "",
            mapValue: "",
            singleSelect: !1,
            listKey: "value",
            listSelectedAttribute: "selected",
            listSelectedClass: null,
            onClick: null,
            onMouseover: null,
            onMouseout: null,
            mouseoutDelay: 0,
            onStateChange: null,
            boundList: null,
            onConfigured: null,
            configTimeout: 3e4,
            noHrefIsMask: !0,
            scaleMap: !0,
            safeLoad: !1,
            areas: []
        },
        shared_defaults: {
            render_highlight: {
                fade: !0
            },
            render_select: {
                fade: !1
            },
            staticState: null,
            selected: null
        },
        area_defaults: {
            includeKeys: "",
            isMask: !1
        },
        canvas_style: {
            position: "absolute",
            left: 0,
            top: 0,
            padding: 0,
            border: 0
        },
        hasCanvas: null,
        isTouch: null,
        map_cache: [],
        hooks: {},
        addHook: function (e, t) {
            this.hooks[e] = (this.hooks[e] || []).push(t)
        },
        callHooks: function (e, t) {
            $.each(this.hooks[e] || [], function (e, a) {
                a.apply(t)
            })
        },
        utils: {
            when: $.mapster_when,
            defer: $.mapster_when.defer,
            subclass: function (e, t) {
                var a = function () {
                    var a = this,
                        n = Array.prototype.slice.call(arguments, 0);
                    a.base = e.prototype, a.base.init = function () {
                        e.prototype.constructor.apply(a, n)
                    }, t.apply(a, n)
                };
                return a.prototype = new e, a.prototype.constructor = a, a
            },
            asArray: function (e) {
                return e.constructor === Array ? e : this.split(e)
            },
            split: function (e, t) {
                var a, n, i = e.split(",");
                for (a = 0; a < i.length; a++) n = $.trim(i[a]), "" === n ? i.splice(a, 1) : i[a] = t ? t(n) : n;
                return i
            },
            updateProps: function (e, t) {
                var a, n = e || {},
                    i = $.isEmptyObject(n) ? t : e;
                return a = [], $.each(i, function (e) {
                    a.push(e)
                }), $.each(Array.prototype.slice.call(arguments, 1), function (e, t) {
                    $.each(t || {}, function (e) {
                        if (!a || $.inArray(e, a) >= 0) {
                            var i = t[e];
                            $.isPlainObject(i) ? n[e] = $.extend(n[e] || {}, i) : i && i.constructor === Array ? n[e] = i.slice(0) : "undefined" != typeof i && (n[e] = t[e])
                        }
                    })
                }), n
            },
            isElement: function (e) {
                return "object" == typeof HTMLElement ? e instanceof HTMLElement : e && "object" == typeof e && 1 === e.nodeType && "string" == typeof e.nodeName
            },
            indexOf: function (e, t) {
                for (var a = 0; a < e.length; a++)
                    if (e[a] === t) return a;
                return -1
            },
            indexOfProp: function (e, t, a) {
                var n = e.constructor === Array ? -1 : null;
                return $.each(e, function (e, i) {
                    return i && (t ? i[t] : i) === a ? (n = e, !1) : void 0
                }), n
            },
            boolOrDefault: function (e, t) {
                return this.isBool(e) ? e : t || !1
            },
            isBool: function (e) {
                return "boolean" == typeof e
            },
            isUndef: function (e) {
                return "undefined" == typeof e
            },
            ifFunction: function (e, t, a) {
                $.isFunction(e) && e.call(t, a)
            },
            size: function (e, t) {
                var a = $.mapster.utils;
                return {
                    width: t ? e.width || e.naturalWidth : a.imgWidth(e, !0),
                    height: t ? e.height || e.naturalHeight : a.imgHeight(e, !0),
                    complete: function () {
                        return !!this.height && !!this.width
                    }
                }
            },
            setOpacity: function (e, t) {
                $.mapster.hasCanvas() ? e.style.opacity = t : $(e).each(function (e, a) {
                    "undefined" != typeof a.opacity ? a.opacity = t : $(a).css("opacity", t)
                })
            },
            fader: function () {
                var e = {},
                    t = 0,
                    a = function (n, i, o, r) {
                        var s, c, l = r / 15,
                            u = $.mapster.utils;
                        if ("number" == typeof n) {
                            if (c = e[n], !c) return
                        } else s = u.indexOfProp(e, null, n), s && delete e[s], e[++t] = c = n, n = t;
                        o = o || 1, i = i + o / l > o - .01 ? o : i + o / l, u.setOpacity(c, i), o > i && setTimeout(function () {
                            a(n, i, o, r)
                        }, 15)
                    };
                return a
            }()
        },
        getBoundList: function (e, t) {
            if (!e.boundList) return null;
            var a, n, i = $(),
                o = $.mapster.utils.split(t);
            return e.boundList.each(function (t, r) {
                for (a = 0; a < o.length; a++) n = o[a], $(r).is("[" + e.listKey + '="' + n + '"]') && (i = i.add(r))
            }), i
        },
        setBoundListProperties: function (e, t, a) {
            t.each(function (t, n) {
                e.listSelectedClass && (a ? $(n).addClass(e.listSelectedClass) : $(n).removeClass(e.listSelectedClass)), e.listSelectedAttribute && $(n).attr(e.listSelectedAttribute, a)
            })
        },
        getMapDataIndex: function (e) {
            var t, a;
            switch (e.tagName && e.tagName.toLowerCase()) {
            case "area":
                a = $(e).parent().attr("name"), t = $("img[usemap='#" + a + "']")[0];
                break;
            case "img":
                t = e
            }
            return t ? this.utils.indexOfProp(this.map_cache, "image", t) : -1
        },
        getMapData: function (e) {
            var t = this.getMapDataIndex(e.length ? e[0] : e);
            return t >= 0 ? t >= 0 ? this.map_cache[t] : null : void 0
        },
        queueCommand: function (e, t, a, n) {
            return e && (!e.complete || e.currentAction) ? (e.commands.push({
                that: t,
                command: a,
                args: n
            }), !0) : !1
        },
        unload: function () {
            this.impl.unload(), this.utils = null, this.impl = null, $.fn.mapster = null, $.mapster = null, $("*").unbind()
        }
    };
    var m = $.mapster,
        u = m.utils,
        ap = Array.prototype;
    $.each(["width", "height"], function (e, t) {
        var a = t.substr(0, 1).toUpperCase() + t.substr(1);
        u["img" + a] = function (e, n) {
            return (n ? $(e)[t]() : 0) || e[t] || e["natural" + a] || e["client" + a] || e["offset" + a]
        }
    }), m.Method = function (e, t, a, n) {
        var i = this;
        i.name = n.name, i.output = e, i.input = e, i.first = n.first || !1, i.args = n.args ? ap.slice.call(n.args, 0) : [], i.key = n.key, i.func_map = t, i.func_area = a, i.name = n.name, i.allowAsync = n.allowAsync || !1
    }, m.Method.prototype = {
        constructor: m.Method,
        go: function () {
            var e, t, a, n, i, o = this.input,
                r = [],
                s = this;
            for (n = o.length, e = 0; n > e; e++)
                if (t = $.mapster.getMapData(o[e])) {
                    if (!s.allowAsync && m.queueCommand(t, s.input, s.name, s.args)) {
                        this.first && (i = "");
                        continue
                    }
                    if (a = t.getData("AREA" === o[e].nodeName ? o[e] : this.key), a ? $.inArray(a, r) < 0 && r.push(a) : i = this.func_map.apply(t, s.args), this.first || "undefined" != typeof i) break
                }
            return $(r).each(function (e, t) {
                i = s.func_area.apply(t, s.args)
            }), "undefined" != typeof i ? i : this.output
        }
    }, $.mapster.impl = function () {
        function hasVml() {
            var e = $("<div />").appendTo("body");
            e.html('<v:shape id="vml_flag1" adj="1" />');
            var t = e[0].firstChild;
            t.style.behavior = "url(#default#VML)";
            var a = t ? "object" == typeof t.adj : !0;
            return e.remove(), a
        }

        function namespaces() {
            return "object" == typeof document.namespaces ? document.namespaces : null
        }

        function hasCanvas() {
            var e = namespaces();
            return e && e.g_vml_ ? !1 : $("<canvas />")[0].getContext ? !0 : !1
        }

        function merge_areas(e, t) {
            var a, n, i = e.options.areas;
            t && $.each(t, function (t, o) {
                o && o.key && (n = u.indexOfProp(i, "key", o.key), n >= 0 ? $.extend(i[n], o) : i.push(o), a = e.getDataForKey(o.key), a && $.extend(a.options, o))
            })
        }

        function merge_options(e, t) {
            var a = u.updateProps({}, t);
            delete a.areas, u.updateProps(e.options, a), merge_areas(e, t.areas), u.updateProps(e.area_options, e.options)
        }
        var me = {},
            addMap = function (e) {
                return m.map_cache.push(e) - 1
            },
            removeMap = function (e) {
                m.map_cache.splice(e.index, 1);
                for (var t = m.map_cache.length - 1; t >= this.index; t--) m.map_cache[t].index--
            };
        return me.get = function (e) {
            var t = m.getMapData(this);
            if (!t || !t.complete) throw "Can't access data until binding complete.";
            return new m.Method(this, function () {
                return this.getSelected()
            }, function () {
                return this.isSelected()
            }, {
                name: "get",
                args: arguments,
                key: e,
                first: !0,
                allowAsync: !0,
                defaultReturn: ""
            }).go()
        }, me.data = function (e) {
            return new m.Method(this, null, function () {
                return this
            }, {
                name: "data",
                args: arguments,
                key: e
            }).go()
        }, me.highlight = function (e) {
            return new m.Method(this, function () {
                if (e !== !1) {
                    var t = this.highlightId;
                    return t >= 0 ? this.data[t].key : null
                }
                this.ensureNoHighlight()
            }, function () {
                this.highlight()
            }, {
                name: "highlight",
                args: arguments,
                key: e,
                first: !0
            }).go()
        }, me.keys = function (e, t) {
            function a(e) {
                var a, i = [];
                t ? (a = e.areas(), $.each(a, function (e, t) {
                    i = i.concat(t.keys)
                })) : i.push(e.key), $.each(i, function (e, t) {
                    $.inArray(t, n) < 0 && n.push(t)
                })
            }
            var n = [],
                i = m.getMapData(this);
            if (!i || !i.complete) throw "Can't access data until binding complete.";
            return i && i.complete ? ("string" == typeof e ? t ? a(i.getDataForKey(e)) : n = [i.getKeysForGroup(e)] : (t = e, this.each(function (e, t) {
                "AREA" === t.nodeName && a(i.getDataForArea(t))
            })), n.join(",")) : ""
        }, me.select = function () {
            me.set.call(this, !0)
        }, me.deselect = function () {
            me.set.call(this, !1)
        }, me.set = function (e, t, a) {
            function n(t) {
                var a = e;
                if (t) {
                    switch (e) {
                    case !0:
                        t.select(h);
                        break;
                    case !1:
                        t.deselect(!0);
                        break;
                    default:
                        a = t.toggle(h)
                    }
                    return a
                }
            }

            function i(e) {
                e && $.inArray(e, l) < 0 && (l.push(e), c += ("" === c ? "" : ",") + e.key)
            }

            function o(t) {
                $.each(l, function (e, a) {
                    var i = n(a);
                    t.options.boundList && m.setBoundListProperties(t.options, m.getBoundList(t.options, c), i)
                }), e || t.removeSelectionFinish()
            }
            var r, s, c, l, h = a;
            return this.filter("img,area").each(function (a, n) {
                var p;
                s = m.getMapData(n), s !== r && (r && o(r), l = [], c = ""), s && (p = "", "IMG" === n.nodeName.toUpperCase() ? m.queueCommand(s, $(n), "set", [e, t, h]) || (t instanceof Array ? t.length && (p = t.join(",")) : p = t, p && $.each(u.split(p), function (e, t) {
                    i(s.getDataForKey(t.toString())), r = s
                })) : (h = t, m.queueCommand(s, $(n), "set", [e, h]) || (i(s.getDataForArea(n)), r = s)))
            }), s && o(s), this
        }, me.unbind = function (e) {
            return new m.Method(this, function () {
                this.clearEvents(), this.clearMapData(e), removeMap(this)
            }, null, {
                name: "unbind",
                args: arguments
            }).go()
        }, me.rebind = function (e) {
            return new m.Method(this, function () {
                var t = this;
                t.complete = !1, t.configureOptions(e), t.bindImages().then(function () {
                    t.buildDataset(!0), t.complete = !0
                })
            }, null, {
                name: "rebind",
                args: arguments
            }).go()
        }, me.get_options = function (e, t) {
            var a = u.isBool(e) ? e : t;
            return new m.Method(this, function () {
                var e = $.extend({}, this.options);
                return a && (e.render_select = u.updateProps({}, m.render_defaults, e, e.render_select), e.render_highlight = u.updateProps({}, m.render_defaults, e, e.render_highlight)), e
            }, function () {
                return a ? this.effectiveOptions() : this.options
            }, {
                name: "get_options",
                args: arguments,
                first: !0,
                allowAsync: !0,
                key: e
            }).go()
        }, me.set_options = function (e) {
            return new m.Method(this, function () {
                merge_options(this, e)
            }, null, {
                name: "set_options",
                args: arguments
            }).go()
        }, me.unload = function () {
            var e;
            for (e = m.map_cache.length - 1; e >= 0; e--) m.map_cache[e] && me.unbind.call($(m.map_cache[e].image));
            me.graphics = null
        }, me.snapshot = function () {
            return new m.Method(this, function () {
                $.each(this.data, function (e, t) {
                    t.selected = !1
                }), this.base_canvas = this.graphics.createVisibleCanvas(this), $(this.image).before(this.base_canvas)
            }, null, {
                name: "snapshot"
            }).go()
        }, me.state = function () {
            var e, t = null;
            return $(this).each(function (a, n) {
                return "IMG" === n.nodeName ? (e = m.getMapData(n), e && (t = e.state()), !1) : void 0
            }), t
        }, me.bind = function (e) {
            return this.each(function (t, a) {
                var n, i, o, r;
                if (n = $(a), r = m.getMapData(a)) {
                    if (me.unbind.apply(n), !r.complete) return n.bind(), !0;
                    r = null
                }
                return o = this.getAttribute("usemap"), i = o && $('map[name="' + o.substr(1) + '"]'), n.is("img") && o && i.size() > 0 ? (n.css("border", 0), void(r || (r = new m.MapData(this, e), r.index = addMap(r), r.map = i, r.bindImages().then(function () {
                    r.initialize()
                })))) : !0
            })
        }, me.init = function (e) {
            var t, a;
            m.hasCanvas = function () {
                return u.isBool(m.hasCanvas.value) || (m.hasCanvas.value = u.isBool(e) ? e : hasCanvas()), m.hasCanvas.value
            }, m.hasVml = function () {
                if (!u.isBool(m.hasVml.value)) {
                    var e = namespaces();
                    e && !e.v && (e.add("v", "urn:schemas-microsoft-com:vml"), t = document.createStyleSheet(), a = ["shape", "rect", "oval", "circ", "fill", "stroke", "imagedata", "group", "textbox"], $.each(a, function (e, a) {
                        t.addRule("v\\:" + a, "behavior: url(#default#VML); antialias:true")
                    })), m.hasVml.value = hasVml()
                }
                return m.hasVml.value
            }, m.isTouch = !!document.documentElement.ontouchstart, u.indexOf = Array.prototype.indexOf || u.indexOf, $.extend(m.defaults, m.render_defaults, m.shared_defaults), $.extend(m.area_defaults, m.render_defaults, m.shared_defaults)
        }, me.test = function (obj) {
            return eval(obj)
        }, me
    }(), $.mapster.impl.init()
}(jQuery),
function (e) {
    function t(t, a, n) {
        var i = t,
            o = i.map_data,
            r = n.isMask;
        e.each(a.areas(), function (e, t) {
            n.isMask = r || t.nohref && o.options.noHrefIsMask, i.addShape(t, n)
        }), n.isMask = r
    }

    function a(e) {
        return Math.max(0, Math.min(parseInt(e, 16), 255))
    }

    function n(e, t) {
        return "rgba(" + a(e.substr(0, 2)) + "," + a(e.substr(2, 2)) + "," + a(e.substr(4, 2)) + "," + t + ")"
    }

    function i() {}
    var o, r, s, c = e.mapster,
        l = c.utils;
    c.Graphics = function (e) {
        var t = this;
        t.active = !1, t.canvas = null, t.width = 0, t.height = 0, t.shapes = [], t.masks = [], t.map_data = e
    }, o = c.Graphics.prototype = {
        constructor: c.Graphics,
        begin: function (t, a) {
            var n = e(t);
            this.elementName = a, this.canvas = t, this.width = n.width(), this.height = n.height(), this.shapes = [], this.masks = [], this.active = !0
        },
        addShape: function (e, t) {
            var a = t.isMask ? this.masks : this.shapes;
            a.push({
                mapArea: e,
                options: t
            })
        },
        createVisibleCanvas: function (t) {
            return e(this.createCanvasFor(t)).addClass("mapster_el").css(c.canvas_style)[0]
        },
        addShapeGroup: function (a, n, i) {
            var o, r, s, u = this,
                h = this.map_data,
                p = a.effectiveRenderOptions(n);
            i && e.extend(p, i), "select" === n ? (r = "static_" + a.areaId.toString(), s = h.base_canvas) : s = h.overlay_canvas, u.begin(s, r), p.includeKeys && (o = l.split(p.includeKeys), e.each(o, function (e, a) {
                var i = h.getDataForKey(a.toString());
                t(u, i, i.effectiveRenderOptions(n))
            })), t(u, a, p), u.render(), p.fade && l.fader(c.hasCanvas() ? s : e(s).find("._fill").not(".mapster_mask"), 0, c.hasCanvas() ? 1 : p.fillOpacity, p.fadeDuration)
        }
    }, r = {
        renderShape: function (e, t, a) {
            var n, i = t.coords(null, a);
            switch (t.shape) {
            case "rect":
                e.rect(i[0], i[1], i[2] - i[0], i[3] - i[1]);
                break;
            case "poly":
                for (e.moveTo(i[0], i[1]), n = 2; n < t.length; n += 2) e.lineTo(i[n], i[n + 1]);
                e.lineTo(i[0], i[1]);
                break;
            case "circ":
            case "circle":
                e.arc(i[0], i[1], i[2], 0, 2 * Math.PI, !1)
            }
        },
        addAltImage: function (e, t, a, n) {
            e.beginPath(), this.renderShape(e, a), e.closePath(), e.clip(), e.globalAlpha = n.altImageOpacity || n.fillOpacity, e.drawImage(t, 0, 0, a.owner.scaleInfo.width, a.owner.scaleInfo.height)
        },
        render: function () {
            var t, a, i = this,
                o = i.map_data,
                r = i.masks.length,
                s = i.createCanvasFor(o),
                c = s.getContext("2d"),
                l = i.canvas.getContext("2d");
            return r && (t = i.createCanvasFor(o), a = t.getContext("2d"), a.clearRect(0, 0, t.width, t.height), e.each(i.masks, function (e, t) {
                a.save(), a.beginPath(), i.renderShape(a, t.mapArea), a.closePath(), a.clip(), a.lineWidth = 0, a.fillStyle = "#000", a.fill(), a.restore()
            })), e.each(i.shapes, function (e, t) {
                c.save(), t.options.fill && (t.options.altImageId ? i.addAltImage(c, o.images[t.options.altImageId], t.mapArea, t.options) : (c.beginPath(), i.renderShape(c, t.mapArea), c.closePath(), c.fillStyle = n(t.options.fillColor, t.options.fillOpacity), c.fill())), c.restore()
            }), e.each(i.shapes.concat(i.masks), function (e, t) {
                var a = 1 === t.options.strokeWidth ? .5 : 0;
                t.options.stroke && (c.save(), c.strokeStyle = n(t.options.strokeColor, t.options.strokeOpacity), c.lineWidth = t.options.strokeWidth, c.beginPath(), i.renderShape(c, t.mapArea, a), c.closePath(), c.stroke(), c.restore())
            }), r ? (a.globalCompositeOperation = "source-out", a.drawImage(s, 0, 0), l.drawImage(t, 0, 0)) : l.drawImage(s, 0, 0), i.active = !1, i.canvas
        },
        createCanvasFor: function (t) {
            return e('<canvas width="' + t.scaleInfo.width + '" height="' + t.scaleInfo.height + '"></canvas>')[0]
        },
        clearHighlight: function () {
            var e = this.map_data.overlay_canvas;
            e.getContext("2d").clearRect(0, 0, e.width, e.height)
        },
        refreshSelections: function () {
            var t, a = this.map_data;
            t = a.base_canvas, a.base_canvas = this.createVisibleCanvas(a), e(a.base_canvas).hide(), e(t).before(a.base_canvas), a.redrawSelections(), e(a.base_canvas).show(), e(t).remove()
        }
    }, s = {
        renderShape: function (t, a, n) {
            var i, o, r, s, c, l, u, h = this,
                p = t.coords();
            switch (c = h.elementName ? 'name="' + h.elementName + '" ' : "", l = n ? 'class="' + n + '" ' : "", s = '<v:fill color="#' + a.fillColor + '" class="_fill" opacity="' + (a.fill ? a.fillOpacity : 0) + '" /><v:stroke class="_fill" opacity="' + a.strokeOpacity + '"/>', o = a.stroke ? " strokeweight=" + a.strokeWidth + ' stroked="t" strokecolor="#' + a.strokeColor + '"' : ' stroked="f"', i = a.fill ? ' filled="t"' : ' filled="f"', t.shape) {
            case "rect":
                u = "<v:rect " + l + c + i + o + ' style="zoom:1;margin:0;padding:0;display:block;position:absolute;left:' + p[0] + "px;top:" + p[1] + "px;width:" + (p[2] - p[0]) + "px;height:" + (p[3] - p[1]) + 'px;">' + s + "</v:rect>";
                break;
            case "poly":
                u = "<v:shape " + l + c + i + o + ' coordorigin="0,0" coordsize="' + h.width + "," + h.height + '" path="m ' + p[0] + "," + p[1] + " l " + p.slice(2).join(",") + ' x e" style="zoom:1;margin:0;padding:0;display:block;position:absolute;top:0px;left:0px;width:' + h.width + "px;height:" + h.height + 'px;">' + s + "</v:shape>";
                break;
            case "circ":
            case "circle":
                u = "<v:oval " + l + c + i + o + ' style="zoom:1;margin:0;padding:0;display:block;position:absolute;left:' + (p[0] - p[2]) + "px;top:" + (p[1] - p[2]) + "px;width:" + 2 * p[2] + "px;height:" + 2 * p[2] + 'px;">' + s + "</v:oval>"
            }
            return r = e(u), e(h.canvas).append(r), r
        },
        render: function () {
            var t, a = this;
            return e.each(this.shapes, function (e, t) {
                a.renderShape(t.mapArea, t.options)
            }), this.masks.length && e.each(this.masks, function (e, n) {
                t = l.updateProps({}, n.options, {
                    fillOpacity: 1,
                    fillColor: n.options.fillColorMask
                }), a.renderShape(n.mapArea, t, "mapster_mask")
            }), this.active = !1, this.canvas
        },
        createCanvasFor: function (t) {
            var a = t.scaleInfo.width,
                n = t.scaleInfo.height;
            return e('<var width="' + a + '" height="' + n + '" style="zoom:1;overflow:hidden;display:block;width:' + a + "px;height:" + n + 'px;"></var>')[0]
        },
        clearHighlight: function () {
            e(this.map_data.overlay_canvas).children().remove()
        },
        removeSelections: function (t) {
            t >= 0 ? e(this.map_data.base_canvas).find('[name="static_' + t.toString() + '"]').remove() : e(this.map_data.base_canvas).children().remove()
        }
    }, e.each(["renderShape", "addAltImage", "render", "createCanvasFor", "clearHighlight", "removeSelections", "refreshSelections"], function (e, t) {
        o[t] = function (e) {
            return function () {
                return o[e] = (c.hasCanvas() ? r[e] : s[e]) || i, o[e].apply(this, arguments)
            }
        }(t)
    })
}(jQuery),
function (e) {
    var t = e.mapster,
        a = t.utils,
        n = [];
    t.MapImages = function (e) {
        this.owner = e, this.clear()
    }, t.MapImages.prototype = {
        constructor: t.MapImages,
        slice: function () {
            return n.slice.apply(this, arguments)
        },
        splice: function () {
            n.slice.apply(this.status, arguments);
            var e = n.slice.apply(this, arguments);
            return e
        },
        complete: function () {
            return e.inArray(!1, this.status) < 0
        },
        _add: function (e) {
            var t = n.push.call(this, e) - 1;
            return this.status[t] = !1, t
        },
        indexOf: function (e) {
            return a.indexOf(this, e)
        },
        clear: function () {
            var t = this;
            t.ids && t.ids.length > 0 && e.each(t.ids, function (e, a) {
                delete t[a]
            }), t.ids = [], t.length = 0, t.status = [], t.splice(0)
        },
        add: function (t, a) {
            var n, i, o = this;
            if (t) {
                if ("string" == typeof t) {
                    if (i = t, t = o[i], "object" == typeof t) return o.indexOf(t);
                    t = e("<img />").addClass("mapster_el").hide(), n = o._add(t[0]), t.bind("load", function (e) {
                        o.imageLoaded.call(o, e)
                    }).bind("error", function (e) {
                        o.imageLoadError.call(o, e)
                    }), t.attr("src", i)
                } else n = o._add(e(t)[0]);
                if (a) {
                    if (this[a]) throw a + " is already used or is not available as an altImage alias.";
                    o.ids.push(a), o[a] = o[n]
                }
                return n
            }
        },
        bind: function (e) {
            var t, n = this,
                i = n.owner.options.configTimeout / 200,
                o = function () {
                    var e;
                    for (e = n.length; e-- > 0 && n.isLoaded(e););
                    n.complete() ? n.resolve() : i-- > 0 ? n.imgTimeout = window.setTimeout(function () {
                        o.call(n, !0)
                    }, 50) : n.imageLoadError.call(n)
                };
            return t = n.deferred = a.defer(), o(), t
        },
        resolve: function () {
            var e = this,
                t = e.deferred;
            t && (e.deferred = null, t.resolve())
        },
        imageLoaded: function (t) {
            var a = this,
                n = a.indexOf(t.target);
            n >= 0 && (a.status[n] = !0, e.inArray(!1, a.status) < 0 && a.resolve())
        },
        imageLoadError: function (e) {
            clearTimeout(this.imgTimeout), this.triesLeft = 0;
            var t = e ? "The image " + e.target.src + " failed to load." : "The images never seemed to finish loading. You may just need to increase the configTimeout if images could take a long time to load.";
            throw t
        },
        isLoaded: function (e) {
            var t, n = this,
                i = n.status;
            return i[e] ? !0 : (t = n[e], "undefined" != typeof t.complete ? i[e] = t.complete : i[e] = !!a.imgWidth(t), i[e])
        }
    }
}(jQuery),
function (e) {
    function t(t) {
        e.extend(t, {
            complete: !1,
            map: null,
            base_canvas: null,
            overlay_canvas: null,
            commands: [],
            data: [],
            mapAreas: [],
            _xref: {},
            highlightId: -1,
            currentAreaId: -1,
            _tooltip_events: [],
            scaleInfo: null,
            index: -1,
            activeAreaEvent: null
        })
    }

    function a(e) {
        return [e, e.render_highlight, e.render_select]
    }

    function n(t) {
        var n = t.options,
            i = t.images;
        u.hasCanvas() && (e.each(n.altImages || {}, function (e, t) {
            i.add(t, e)
        }), e.each([n].concat(n.areas), function (t, n) {
            e.each(a(n), function (e, t) {
                t && t.altImage && (t.altImageId = i.add(t.altImage))
            })
        })), t.area_options = h.updateProps({}, u.area_defaults, n)
    }

    function i(e, t, a, n) {
        function o(t) {
            e.currentAreaId !== t && e.highlightId >= 0 && n.resolve()
        }
        return n = n || h.when.defer(), e.activeAreaEvent && (window.clearTimeout(e.activeAreaEvent), e.activeAreaEvent = 0), 0 > t ? n.reject() : a.owner.currentAction || t ? e.activeAreaEvent = window.setTimeout(function () {
            return function () {
                i(e, 0, a, n)
            }
        }(a), t || 100) : o(a.areaId), n
    }

    function o(e) {
        u.hasCanvas() || this.blur(), e.preventDefault()
    }

    function r(t, a) {
        var n = t.getAllDataForArea(this),
            i = n.length ? n[0] : null;
        !i || i.isNotRendered() || i.owner.currentAction || t.currentAreaId !== i.areaId && (t.highlightId !== i.areaId && (t.clearEffects(), i.highlight(), t.options.showToolTip && e.each(n, function (e, t) {
            t.effectiveOptions().toolTip && t.showToolTip()
        })), t.currentAreaId = i.areaId, e.isFunction(t.options.onMouseover) && t.options.onMouseover.call(this, {
            e: a,
            options: i.effectiveOptions(),
            key: i.key,
            selected: i.isSelected()
        }))
    }

    function s(t, a) {
        var n, o = t.getDataForArea(this),
            r = t.options;
        t.currentAreaId < 0 || !o || (n = t.getDataForArea(a.relatedTarget), n !== o && (t.currentAreaId = -1, o.area = null, i(t, r.mouseoutDelay, o).then(t.clearEffects), e.isFunction(r.onMouseout) && r.onMouseout.call(this, {
            e: a,
            options: r,
            key: o.key,
            selected: o.isSelected()
        })))
    }

    function c(t) {
        var a = t.options;
        t.ensureNoHighlight(), a.toolTipClose && e.inArray("area-mouseout", a.toolTipClose) >= 0 && t.activeToolTip && t.clearToolTip()
    }

    function l(t, a) {
        function n(o) {
            var d, g;
            if (l = o.isSelectable() && (o.isDeselectable() || !o.isSelected()), c = l ? !o.isSelected() : o.isSelected(), s = u.getBoundList(m, o.key), e.isFunction(m.onClick) && (p = m.onClick.call(f, {
                    e: a,
                    listTarget: s,
                    key: o.key,
                    selected: c
                }), h.isBool(p))) {
                if (!p) return !1;
                if (g = e(o.area).attr("href"), "#" !== g) return window.location.href = g, !1
            }
            l && (i = o.toggle()), m.boundList && m.boundList.length > 0 && u.setBoundListProperties(m, s, o.isSelected()), d = o.effectiveOptions(), d.includeKeys && (r = h.split(d.includeKeys), e.each(r, function (e, a) {
                var i = t.getDataForKey(a.toString());
                i.options.isMask || n(i)
            }))
        }
        var i, r, s, c, l, p, f = this,
            d = t.getDataForArea(this),
            m = t.options;
        return o.call(this, a), m.clickNavigate && d.href ? void(window.location.href = d.href) : void(d && !d.owner.currentAction && (m = t.options, n(d)))
    }
    var u = e.mapster,
        h = u.utils;
    u.MapData = function (e, a) {
        var n = this;
        n.image = e, n.images = new u.MapImages(n), n.graphics = new u.Graphics(n), n.imgCssText = e.style.cssText || null, t(n), n.configureOptions(a), n.mouseover = function (e) {
            r.call(this, n, e)
        }, n.mouseout = function (e) {
            s.call(this, n, e)
        }, n.click = function (e) {
            l.call(this, n, e)
        }, n.clearEffects = function (e) {
            c.call(this, n, e)
        }
    }, u.MapData.prototype = {
        constructor: u.MapData,
        configureOptions: function (e) {
            this.options = h.updateProps({}, u.defaults, e)
        },
        bindImages: function () {
            var e = this,
                t = e.images;
            return t.length > 2 ? t.splice(2) : 0 === t.length && (t.add(e.image), t.add(e.image.src)), n(e), e.images.bind()
        },
        isActive: function () {
            return !this.complete || this.currentAction
        },
        state: function () {
            return {
                complete: this.complete,
                resizing: "resizing" === this.currentAction,
                zoomed: this.zoomed,
                zoomedArea: this.zoomedArea,
                scaleInfo: this.scaleInfo
            }
        },
        wrapId: function () {
            return "mapster_wrap_" + this.index
        },
        _idFromKey: function (e) {
            return "string" == typeof e && this._xref.hasOwnProperty(e) ? this._xref[e] : -1
        },
        getSelected: function () {
            var t = "";
            return e.each(this.data, function (e, a) {
                a.isSelected() && (t += (t ? "," : "") + this.key)
            }), t
        },
        getAllDataForArea: function (t, a) {
            var n, i, o, r = this,
                s = e(t).filter("area").attr(r.options.mapKey);
            if (s)
                for (o = [], s = h.split(s), n = 0; n < (a || s.length); n++) i = r.data[r._idFromKey(s[n])], i.area = t.length ? t[0] : t, o.push(i);
            return o
        },
        getDataForArea: function (e) {
            var t = this.getAllDataForArea(e, 1);
            return t ? t[0] || null : null
        },
        getDataForKey: function (e) {
            return this.data[this._idFromKey(e)]
        },
        getKeysForGroup: function (e) {
            var t = this.getDataForKey(e);
            return t ? t.isPrimary ? t.key : this.getPrimaryKeysForMapAreas(t.areas()).join(",") : ""
        },
        getPrimaryKeysForMapAreas: function (t) {
            var a = [];
            return e.each(t, function (t, n) {
                e.inArray(n.keys[0], a) < 0 && a.push(n.keys[0])
            }), a
        },
        getData: function (e) {
            return "string" == typeof e ? this.getDataForKey(e) : e && e.mapster || h.isElement(e) ? this.getDataForArea(e) : null
        },
        ensureNoHighlight: function () {
            var e;
            this.highlightId >= 0 && (this.graphics.clearHighlight(), e = this.data[this.highlightId], e.changeState("highlight", !1), this.setHighlightId(-1))
        },
        setHighlightId: function (e) {
            this.highlightId = e
        },
        clearSelections: function () {
            e.each(this.data, function (e, t) {
                t.selected && t.deselect(!0)
            }), this.removeSelectionFinish()
        },
        setAreaOptions: function (e) {
            var t, a, n;
            for (e = e || [], t = e.length - 1; t >= 0; t--) a = e[t], a && (n = this.getDataForKey(a.key), n && (h.updateProps(n.options, a), h.isBool(a.selected) && (n.selected = a.selected)))
        },
        drawSelections: function (e) {
            var t, a = h.asArray(e);
            for (t = a.length - 1; t >= 0; t--) this.data[a[t]].drawSelection()
        },
        redrawSelections: function () {
            e.each(this.data, function (e, t) {
                t.isSelectedOrStatic() && t.drawSelection()
            })
        },
        initialize: function () {
            var t, a, n, i, o, r, s, c, l, p, f, d, m = this,
                g = m.options;
            if (!m.complete) {
                for (l = e(m.image), o = l.parent().attr("id"), o && o.length >= 12 && "mapster_wrap" === o.substring(0, 12) ? (i = l.parent(), i.attr("id", m.wrapId())) : (i = e('<div id="' + m.wrapId() + '"></div>'), g.wrapClass && (g.wrapClass === !0 ? i.addClass(l[0].className) : i.addClass(g.wrapClass))), m.wrapper = i, m.scaleInfo = d = h.scaleMap(m.images[0], m.images[1], g.scaleMap), m.base_canvas = a = m.graphics.createVisibleCanvas(m), m.overlay_canvas = n = m.graphics.createVisibleCanvas(m), t = e(m.images[1]).addClass("mapster_el " + m.images[0].className).attr({
                        id: null,
                        usemap: null
                    }), c = h.size(m.images[0]), c.complete && t.css({
                        width: c.width,
                        height: c.height
                    }), m.buildDataset(), r = {
                        display: "block",
                        position: "relative",
                        padding: 0,
                        width: d.width,
                        height: d.height
                    }, g.wrapCss && e.extend(r, g.wrapCss), l.parent()[0] !== m.wrapper[0] && l.before(m.wrapper), i.css(r), e(m.images.slice(2)).hide(), s = 1; s < m.images.length; s++) i.append(m.images[s]);
                i.append(a).append(n).append(l.css(u.canvas_style)), h.setOpacity(m.images[0], 0), e(m.images[1]).show(), h.setOpacity(m.images[1], 1), g.isSelectable && g.onGetList && (f = m.data.slice(0), g.sortList && (p = "desc" === g.sortList ? function (e, t) {
                    return e === t ? 0 : e > t ? -1 : 1
                } : function (e, t) {
                    return e === t ? 0 : t > e ? -1 : 1
                }, f.sort(function (e, t) {
                    return e = e.value, t = t.value, p(e, t)
                })), m.options.boundList = g.onGetList.call(m.image, f)), m.complete = !0, m.processCommandQueue(), g.onConfigured && "function" == typeof g.onConfigured && g.onConfigured.call(l, !0)
            }
        },
        buildDataset: function (t) {
            function a(e, t) {
                var a = new u.AreaData(w, e, t);
                return a.areaId = w._xref[e] = w.data.push(a) - 1, a.areaId
            }
            var n, i, o, r, s, c, l, h, p, f, d, m, g, v, y, w = this,
                b = w.options;
            for (w._xref = {}, w.data = [], t || (w.mapAreas = []), y = !b.mapKey, y && (b.mapKey = "data-mapster-key"), n = u.hasVml() ? "area" : y ? "area[coords]" : "area[" + b.mapKey + "]", i = e(w.map).find(n).unbind(".mapster"), d = 0; d < i.length; d++)
                if (r = 0, c = i[d], s = e(c), c.coords) {
                    for (y ? (l = String(d), s.attr("data-mapster-key", l)) : l = c.getAttribute(b.mapKey), t ? (h = w.mapAreas[s.data("mapster") - 1], h.configure(l)) : (h = new u.MapArea(w, c, l), w.mapAreas.push(h)), f = h.keys, o = f.length - 1; o >= 0; o--) p = f[o], b.mapValue && (m = s.attr(b.mapValue)), y ? (r = a(w.data.length, m), g = w.data[r], g.key = p = r.toString()) : (r = w._xref[p], r >= 0 ? (g = w.data[r], m && !w.data[r].value && (g.value = m)) : (r = a(p, m), g = w.data[r], g.isPrimary = 0 === o)), h.areaDataXref.push(r), g.areasXref.push(d);
                    v = s.attr("href"), v && "#" !== v && !g.href && (g.href = v), h.nohref || s.bind("click.mapster", w.click).bind("mouseover.mapster, touchstart.mapster", w.mouseover).bind("mouseout.mapster, touchend.mapster", w.mouseout).bind("mousedown.mapster", w.mousedown), s.data("mapster", d + 1)
                }
            w.setAreaOptions(b.areas), w.redrawSelections()
        },
        processCommandQueue: function () {
            for (var e, t = this; !t.currentAction && t.commands.length;) e = t.commands[0], t.commands.splice(0, 1), u.impl[e.command].apply(e.that, e.args)
        },
        clearEvents: function () {
            e(this.map).find("area").unbind(".mapster"), e(this.images).unbind(".mapster")
        },
        _clearCanvases: function (t) {
            t || e(this.base_canvas).remove(), e(this.overlay_canvas).remove()
        },
        clearMapData: function (t) {
            var a = this;
            this._clearCanvases(t), e.each(this.data, function (e, t) {
                t.reset()
            }), this.data = null, t || (this.image.style.cssText = this.imgCssText, e(this.wrapper).before(this.image).remove()), a.images.clear(), this.image = null, h.ifFunction(this.clearTooltip, this)
        },
        removeSelectionFinish: function () {
            var e = this.graphics;
            e.refreshSelections(), e.clearHighlight()
        }
    }
}(jQuery),
function (e) {
    function t(t) {
        var a = this,
            n = a.owner;
        n.options.singleSelect && n.clearSelections(), a.isSelected() || (t && (a.optsCache = e.extend(a.effectiveRenderOptions("select"), t, {
            altImageId: n.images.add(t.altImage)
        })), a.drawSelection(), a.selected = !0, a.changeState("select", !0)), n.options.singleSelect && n.graphics.refreshSelections()
    }

    function a(e) {
        var t = this;
        t.selected = !1, t.changeState("select", !1), t.optsCache = null, t.owner.graphics.removeSelections(t.areaId), e || t.owner.removeSelectionFinish()
    }

    function n(e) {
        var t = this;
        return t.isSelected() ? t.deselect() : t.select(e), t.isSelected()
    }
    var i = e.mapster,
        o = i.utils;
    i.AreaData = function (t, a, n) {
        e.extend(this, {
            owner: t,
            key: a || "",
            isPrimary: !0,
            areaId: -1,
            href: "",
            value: n || "",
            options: {},
            selected: null,
            areasXref: [],
            area: null,
            optsCache: null
        })
    }, i.AreaData.prototype = {
        constuctor: i.AreaData,
        select: t,
        deselect: a,
        toggle: n,
        areas: function () {
            var e, t = [];
            for (e = 0; e < this.areasXref.length; e++) t.push(this.owner.mapAreas[this.areasXref[e]]);
            return t
        },
        coords: function (t) {
            var a = [];
            return e.each(this.areas(), function (e, n) {
                a = a.concat(n.coords(t))
            }), a
        },
        reset: function () {
            e.each(this.areas(), function (e, t) {
                t.reset()
            }), this.areasXref = [], this.options = null
        },
        isSelectedOrStatic: function () {
            var e = this.effectiveOptions();
            return o.isBool(e.staticState) ? e.staticState : this.isSelected()
        },
        isSelected: function () {
            return o.isBool(this.selected) ? this.selected : o.isBool(this.owner.area_options.selected) ? this.owner.area_options.selected : !1
        },
        isSelectable: function () {
            return o.isBool(this.effectiveOptions().staticState) ? !1 : o.isBool(this.owner.options.staticState) ? !1 : o.boolOrDefault(this.effectiveOptions().isSelectable, !0)
        },
        isDeselectable: function () {
            return o.isBool(this.effectiveOptions().staticState) ? !1 : o.isBool(this.owner.options.staticState) ? !1 : o.boolOrDefault(this.effectiveOptions().isDeselectable, !0)
        },
        isNotRendered: function () {
            var t = e(this.area);
            return t.attr("nohref") || !t.attr("href") || this.effectiveOptions().isMask
        },
        effectiveOptions: function (e) {
            var t = o.updateProps({}, this.owner.area_options, this.options, e || {}, {
                id: this.areaId
            });
            return t.selected = this.isSelected(), t
        },
        effectiveRenderOptions: function (t, a) {
            var n, i = this.optsCache;
            return i && "highlight" !== t || (n = this.effectiveOptions(a), i = o.updateProps({}, n, n["render_" + t]), "highlight" !== t && (this.optsCache = i)), e.extend({}, i)
        },
        changeState: function (t, a) {
            e.isFunction(this.owner.options.onStateChange) && this.owner.options.onStateChange.call(this.owner.image, {
                key: this.key,
                state: t,
                selected: a
            })
        },
        highlight: function (e) {
            var t = this.owner;
            this.effectiveOptions().highlight && t.graphics.addShapeGroup(this, "highlight", e), t.setHighlightId(this.areaId), this.changeState("highlight", !0)
        },
        drawSelection: function () {
            this.owner.graphics.addShapeGroup(this, "select")
        }
    }, i.MapArea = function (t, a, n) {
        if (t) {
            var i = this;
            i.owner = t, i.area = a, i.areaDataXref = [], i.originalCoords = [], e.each(o.split(a.coords), function (e, t) {
                i.originalCoords.push(parseFloat(t))
            }), i.length = i.originalCoords.length, i.shape = a.shape.toLowerCase(), i.nohref = a.nohref || !a.href, i.configure(n)
        }
    }, i.MapArea.prototype = {
        constructor: i.MapArea,
        configure: function (e) {
            this.keys = o.split(e)
        },
        reset: function () {
            this.area = null
        },
        coords: function (t) {
            return e.map(this.originalCoords, function (e) {
                return t ? e : e + t
            })
        }
    }
}(jQuery),
function (e) {
    var t = e.mapster.utils;
    t.areaCorners = function (a, n, i, o, r) {
        var s, c, l, u, h, p, f, d, m, g, v, y, w, b, k, _, C, A, I, S, x = 0,
            T = 0,
            M = [];
        for (a = a.length ? a : [a], i = e(i ? i : document.body), s = i.offset(), k = s.left, _ = s.top, n && (s = e(n).offset(), x = s.left, T = s.top), b = 0; b < a.length; b++)
            if (S = a[b], "AREA" === S.nodeName) {
                switch (C = t.split(S.coords, parseInt), S.shape) {
                case "circle":
                    for (v = C[0], y = C[1], A = C[2], M = [], b = 0; 360 > b; b += 20) I = b * Math.PI / 180, M.push(v + A * Math.cos(I), y + A * Math.sin(I));
                    break;
                case "rect":
                    M.push(C[0], C[1], C[2], C[1], C[2], C[3], C[0], C[3]);
                    break;
                default:
                    M = M.concat(C)
                }
                for (b = 0; b < M.length; b += 2) M[b] = parseInt(M[b], 10) + x, M[b + 1] = parseInt(M[b + 1], 10) + T
            } else S = e(S), s = S.position(), M.push(s.left, s.top, s.left + S.width(), s.top, s.left + S.width(), s.top + S.height(), s.left, s.top + S.height());
        for (l = u = f = m = 999999, h = p = d = g = -1, b = M.length - 2; b >= 0; b -= 2) v = M[b], y = M[b + 1], l > v && (l = v, g = y), v > h && (h = v, m = y), u > y && (u = y, d = v), y > p && (p = y, f = v);
        return o && r && (c = !1, e.each([[d - o, u - r], [f, u - r], [l - o, g - r], [l - o, m], [h, g - r], [h, m], [d - o, p], [f, p]], function (e, t) {
            return !c && t[0] > k && t[1] > _ ? (w = t, c = !0, !1) : void 0
        }), c || (w = [h, p])), w
    }
}(jQuery),
function (e) {
    var t = e.mapster,
        a = t.utils,
        n = t.MapArea.prototype;
    t.utils.getScaleInfo = function (e, t) {
        var a;
        return t ? (a = e.width / t.width || e.height / t.height, a > .98 && 1.02 > a && (a = 1)) : (a = 1, t = e), {
            scale: 1 !== a,
            scalePct: a,
            realWidth: t.width,
            realHeight: t.height,
            width: e.width,
            height: e.height,
            ratio: e.width / e.height
        }
    }, t.utils.scaleMap = function (e, t, n) {
        var i = a.size(e),
            o = a.size(t, !0);
        if (!o.complete()) throw "Another script, such as an extension, appears to be interfering with image loading. Please let us know about this.";
        return i.complete() || (i = o), this.getScaleInfo(i, n ? o : null)
    }, t.MapData.prototype.resize = function (n, i, o, r) {
        function s(a, n, i) {
            t.hasCanvas() ? (a.width = n, a.height = i) : (e(a).width(n), e(a).height(i))
        }

        function c() {
            v.currentAction = "", e.isFunction(r) && r(), v.processCommandQueue()
        }

        function l() {
            if (s(v.overlay_canvas, n, i), m >= 0) {
                var e = v.data[m];
                e.tempOptions = {
                    fade: !1
                }, v.getDataForKey(e.key).highlight(), e.tempOptions = null
            }
            s(v.base_canvas, n, i), v.redrawSelections(), c()
        }

        function u() {
            e(v.image).css(f), v.scaleInfo = a.getScaleInfo({
                width: n,
                height: i
            }, {
                width: v.scaleInfo.realWidth,
                height: v.scaleInfo.realHeight
            }), e.each(v.data, function (t, a) {
                e.each(a.areas(), function (e, t) {
                    t.resize()
                })
            })
        }
        var h, p, f, d, m, g, v = this;
        r = r || o, (v.scaleInfo.width !== n || v.scaleInfo.height !== i) && (m = v.highlightId, n || (g = i / v.scaleInfo.realHeight, n = Math.round(v.scaleInfo.realWidth * g)), i || (g = n / v.scaleInfo.realWidth, i = Math.round(v.scaleInfo.realHeight * g)), f = {
            width: String(n) + "px",
            height: String(i) + "px"
        }, t.hasCanvas() || e(v.base_canvas).children().remove(), d = e(v.wrapper).find(".mapster_el").add(v.wrapper), o ? (p = [], v.currentAction = "resizing", d.each(function (t, n) {
            h = a.defer(), p.push(h), e(n).animate(f, {
                duration: o,
                complete: h.resolve,
                easing: "linear"
            })
        }), h = a.defer(), p.push(h), a.when.all(p).then(l), u(), h.resolve()) : (d.css(f), u(), l()))
    }, t.MapArea = a.subclass(t.MapArea, function () {
        this.base.init(), this.owner.scaleInfo.scale && this.resize()
    }), n.coords = function (e, t) {
        var a, n = [],
            i = e || this.owner.scaleInfo.scalePct,
            o = t || 0;
        if (1 === i && 0 === t) return this.originalCoords;
        for (a = 0; a < this.length; a++) n.push(Math.round(this.originalCoords[a] * i) + o);
        return n
    }, n.resize = function () {
        this.area.coords = this.coords().join(",")
    }, n.reset = function () {
        this.area.coords = this.coords(1).join(",")
    }, t.impl.resize = function (e, a, n, i) {
        if (!e && !a) return !1;
        var o = new t.Method(this, function () {
            this.resize(e, a, n, i)
        }, null, {
            name: "resize",
            args: arguments
        }).go();
        return o
    }
}(jQuery),
function (e) {
    function t(t, a, n) {
        var i;
        return a ? (i = "string" == typeof a ? e(a) : e(a).clone(), i.append(t)) : i = e(t), i.css(e.extend(n || {}, {
            display: "block",
            position: "absolute"
        })).hide(), e("body").append(i), i.attr("data-opacity", i.css("opacity")).css("opacity", 0), i.show()
    }

    function a(e, t) {
        var a = {
                left: t.left + "px",
                top: t.top + "px"
            },
            n = e.attr("data-opacity") || 0,
            i = e.css("z-index");
        (0 === parseInt(i, 10) || "auto" === i) && (a["z-index"] = 9999), e.css(a).addClass("mapster_tooltip"), t.fadeDuration && t.fadeDuration > 0 ? s.fader(e[0], 0, n, t.fadeDuration) : s.setOpacity(e[0], n)
    }

    function n(t, a, n, i, o, r) {
        var s = n + ".mapster-tooltip";
        return e.inArray(a, t) >= 0 ? (i.unbind(s).bind(s, function (e) {
            (!o || o.call(this, e)) && (i.unbind(".mapster-tooltip"), r && r.call(this))
        }), {
            object: i,
            event: s
        }) : void 0
    }

    function i(e, t, n, i, o) {
        var r, c = {};
        return o = o || {}, t ? (r = s.areaCorners(t, n, i, e.outerWidth(!0), e.outerHeight(!0)), c.left = r[0], c.top = r[1]) : (c.left = o.left, c.top = o.top), c.left += o.offsetx || 0, c.top += o.offsety || 0, c.css = o.css, c.fadeDuration = o.fadeDuration, a(e, c), e
    }

    function o(e) {
        return e ? "string" == typeof e || e.jquery ? e : e.content : null
    }
    var r = e.mapster,
        s = r.utils;
    e.extend(r.defaults, {
        toolTipContainer: '<div style="border: 2px solid black; background: #EEEEEE; width:160px; padding:4px; margin: 4px; -moz-box-shadow: 3px 3px 5px #535353; -webkit-box-shadow: 3px 3px 5px #535353; box-shadow: 3px 3px 5px #535353; -moz-border-radius: 6px 6px 6px 6px; -webkit-border-radius: 6px; border-radius: 6px 6px 6px 6px; opacity: 0.9;"></div>',
        showToolTip: !1,
        toolTipFade: !0,
        toolTipClose: ["area-mouseout", "image-mouseout"],
        onShowToolTip: null,
        onHideToolTip: null
    }), e.extend(r.area_defaults, {
        toolTip: null,
        toolTipClose: null
    }), r.MapData.prototype.clearToolTip = function () {
        this.activeToolTip && (this.activeToolTip.stop().remove(), this.activeToolTip = null, this.activeToolTipID = null, s.ifFunction(this.options.onHideToolTip, this))
    }, r.AreaData.prototype.showToolTip = function (a, o) {
        var r, c, l, u, h, p = {},
            f = this,
            d = f.owner,
            m = f.effectiveOptions();
        return o = o ? e.extend({}, o) : {}, a = a || m.toolTip, c = o.closeEvents || m.toolTipClose || d.options.toolTipClose || "tooltip-click", h = "undefined" != typeof o.template ? o.template : d.options.toolTipContainer, o.closeEvents = "string" == typeof c ? c = s.split(c) : c, o.fadeDuration = o.fadeDuration || (d.options.toolTipFade ? d.options.fadeDuration || m.fadeDuration : 0), l = f.area ? f.area : e.map(f.areas(), function (e) {
            return e.area
        }), d.activeToolTipID !== f.areaId ? (d.clearToolTip(), d.activeToolTip = r = t(a, h, o.css), d.activeToolTipID = f.areaId, u = function () {
            d.clearToolTip()
        }, n(c, "area-click", "click", e(d.map), null, u), n(c, "tooltip-click", "click", r, null, u), n(c, "image-mouseout", "mouseout", e(d.image), function (e) {
            return e.relatedTarget && "AREA" !== e.relatedTarget.nodeName && e.relatedTarget !== f.area
        }, u), i(r, l, d.image, o.container, h, o), s.ifFunction(d.options.onShowToolTip, f.area, {
            toolTip: r,
            options: p,
            areaOptions: m,
            key: f.key,
            selected: f.isSelected()
        }), r) : void 0
    }, r.impl.tooltip = function (a, s) {
        return new r.Method(this, function () {
            var r, c, l = this;
            if (a) {
                if (c = e(a), l.activeToolTipID === c[0]) return;
                l.clearToolTip(), l.activeToolTip = r = t(o(s), s.template || l.options.toolTipContainer, s.css), l.activeToolTipID = c[0], n(["tooltip-click"], "tooltip-click", "click", r, null, function () {
                    l.clearToolTip()
                }), l.activeToolTip = r = i(r, c, l.image, s.container, s)
            } else l.clearToolTip()
        }, function () {
            e.isPlainObject(a) && !s && (s = a), this.showToolTip(o(s), s)
        }, {
            name: "tooltip",
            args: arguments,
            key: a
        }).go()
    }
}(jQuery);;
/**
 * jQuery.browser.mobile (http://detectmobilebrowser.com/)
 *
 * jQuery.browser.mobile will be true if the browser is a mobile device
 *
 **/
(function (a) { (jQuery.browser = jQuery.browser || {}).mobile = /(android|ipad|playbook|silk |bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4)) })(navigator.userAgent || navigator.vendor || window.opera);

//check for iPhone
(function (a) {
    jQuery.browser.iPhone = /iphone/i.test(a);
})(navigator.userAgent || navigator.vendor || window.opera);

//check for Android
(function (a) {
    jQuery.browser.android = /android/i.test(a);
})(navigator.userAgent || navigator.vendor || window.opera);;
if(typeof Object.create!=="function"){Object.create=function(obj){function F(){}F.prototype=obj;return new F}}(function($,window,document,undefined){var Instagram={API_URL:"https://api.instagram.com/v1",initialize:function(options,elem){this.elem=elem;this.$elem=$(elem);this.accessData=$.fn.spectragram.accessData,this.accessToken=this.accessData.accessToken,this.clientID=this.accessData.clientID,this.userCredentials=this.clientID+"&access_token="+this.accessToken+"",this.options=$.extend({},$.fn.spectragram.options,options);this.messages={defaultImageAltText:"Instagram Photo related with "+this.options.query,notFound:"This user account is private or doesn't have any photos."}},getRecentMedia:function(userID){var self=this,getData="/users/"+userID+"/media/recent/?"+self.userCredentials;self.fetch(getData).done(function(results){self.display(results)})},getUserFeed:function(){var self=this,getData="/users/search?q="+self.options.query+"&count="+self.options.max+"&access_token="+self.accessToken+"",isUsernameValid=false;self.fetch(getData).done(function(results){if(results.data.length){for(var length=results.data.length,i=0;i<length;i++){if(results.data[i].username===self.options.query){self.getRecentMedia(results.data[i].id);isUsernameValid=true}}}if(isUsernameValid===false){$.error("Spectragram.js - Error: the username "+self.options.query+" does not exist.")}})},getPopular:function(){var self=this,getData="/media/popular?client_id="+self.userCredentials;self.fetch(getData).done(function(results){self.display(results)})},getRecentTagged:function(){var self=this,getData="/tags/"+self.options.query+"/media/recent?client_id="+self.userCredentials;self.fetch(getData).done(function(results){if(results.data.length){self.display(results)}else{$.error("Spectragram.js - Error: the tag "+self.options.query+" does not have results.")}})},fetch:function(getData){var getUrl=this.API_URL+getData;return $.ajax({type:"GET",dataType:"jsonp",cache:false,url:getUrl})},display:function(results){var $element,$image,isWrapperEmpty,imageGroup=[],imageCaption,imageHeight,imageWidth,max,setSize,size;isWrapperEmpty=$(this.options.wrapEachWith).length===0;if(results.data===undefined||results.meta.code!==200||results.data.length===0){if(isWrapperEmpty){this.$elem.append(this.messages.notFound)}else{this.$elem.append($(this.options.wrapEachWith).append(this.messages.notFound))}}else{max=this.options.max>=results.data.length?results.data.length:this.options.max;setSize=this.options.size;for(var i=0;i<max;i++){if(setSize==="small"){size=results.data[i].images.thumbnail.url;imageHeight=results.data[i].images.thumbnail.height;imageWidth=results.data[i].images.thumbnail.width}else if(setSize==="medium"){size=results.data[i].images.low_resolution.url;imageHeight=results.data[i].images.low_resolution.height;imageWidth=results.data[i].images.low_resolution.width}else{size=results.data[i].images.standard_resolution.url;imageHeight=results.data[i].images.standard_resolution.height;imageWidth=results.data[i].images.standard_resolution.width}imageCaption=results.data[i].caption!==null?$("<span>").text(results.data[i].caption.text).html():this.messages.defaultImageAltText;$image=$("<img>",{alt:imageCaption,attr:{height:imageHeight,width:imageWidth},src:size});$element=$("<a>",{href:results.data[i].link,target:"_blank",title:imageCaption}).append($image);if(isWrapperEmpty){imageGroup.push($element)}else{imageGroup.push($(this.options.wrapEachWith).append($element))}}this.$elem.append(imageGroup)}if(typeof this.options.complete==="function"){this.options.complete.call(this)}}};jQuery.fn.spectragram=function(method,options){if(jQuery.fn.spectragram.accessData.clientID){this.each(function(){var instagram=Object.create(Instagram);instagram.initialize(options,this);if(instagram[method]){return instagram[method](this)}else{$.error("Method "+method+" does not exist on jQuery.spectragram")}})}else{$.error("You must define an accessToken and a clientID on jQuery.spectragram")}};jQuery.fn.spectragram.options={complete:null,max:10,query:"instagram",size:"medium",wrapEachWith:"<li></li>"};jQuery.fn.spectragram.accessData={accessToken:null,clientID:null}})(jQuery,window,document);
;
/*!***************************************************
 * mark.js v8.6.0
 * https://github.com/julmot/mark.js
 * Copyright (c) 2014–2017, Julian Motz
 * Released under the MIT license https://git.io/vwTVl
 *****************************************************/

"use strict";

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

(function (factory, window, document) {
    if (typeof define === "function" && define.amd) {
        define(["jquery"], function (jQuery) {
            return factory(window, document, jQuery);
        });
    } else if ((typeof module === "undefined" ? "undefined" : _typeof(module)) === "object" && module.exports) {
        module.exports = factory(window, document, require("jquery"));
    } else {
        factory(window, document, jQuery);
    }
})(function (window, document, $) {
    var Mark = function () {
        function Mark(ctx) {
            _classCallCheck(this, Mark);

            this.ctx = ctx;

            this.ie = false;
            var ua = window.navigator.userAgent;
            if (ua.indexOf("MSIE") > -1 || ua.indexOf("Trident") > -1) {
                this.ie = true;
            }
        }

        _createClass(Mark, [{
            key: "log",
            value: function log(msg) {
                var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "debug";

                var log = this.opt.log;
                if (!this.opt.debug) {
                    return;
                }
                if ((typeof log === "undefined" ? "undefined" : _typeof(log)) === "object" && typeof log[level] === "function") {
                    log[level]("mark.js: " + msg);
                }
            }
        }, {
            key: "escapeStr",
            value: function escapeStr(str) {
                return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
            }
        }, {
            key: "createRegExp",
            value: function createRegExp(str) {
                str = this.escapeStr(str);
                if (Object.keys(this.opt.synonyms).length) {
                    str = this.createSynonymsRegExp(str);
                }
                if (this.opt.ignoreJoiners) {
                    str = this.setupIgnoreJoinersRegExp(str);
                }
                if (this.opt.diacritics) {
                    str = this.createDiacriticsRegExp(str);
                }
                str = this.createMergedBlanksRegExp(str);
                if (this.opt.ignoreJoiners) {
                    str = this.createIgnoreJoinersRegExp(str);
                }
                str = this.createAccuracyRegExp(str);
                return str;
            }
        }, {
            key: "createSynonymsRegExp",
            value: function createSynonymsRegExp(str) {
                var syn = this.opt.synonyms,
                    sens = this.opt.caseSensitive ? "" : "i";
                for (var index in syn) {
                    if (syn.hasOwnProperty(index)) {
                        var value = syn[index],
                            k1 = this.escapeStr(index),
                            k2 = this.escapeStr(value);
                        str = str.replace(new RegExp("(" + k1 + "|" + k2 + ")", "gm" + sens), "(" + k1 + "|" + k2 + ")");
                    }
                }
                return str;
            }
        }, {
            key: "setupIgnoreJoinersRegExp",
            value: function setupIgnoreJoinersRegExp(str) {
                return str.replace(/[^(|)\\]/g, function (val, indx, original) {
                    var nextChar = original.charAt(indx + 1);
                    if (/[(|)\\]/.test(nextChar) || nextChar === "") {
                        return val;
                    } else {
                        return val + "\0";
                    }
                });
            }
        }, {
            key: "createIgnoreJoinersRegExp",
            value: function createIgnoreJoinersRegExp(str) {
                return str.split("\0").join("[\\u00ad|\\u200b|\\u200c|\\u200d]?");
            }
        }, {
            key: "createDiacriticsRegExp",
            value: function createDiacriticsRegExp(str) {
                var sens = this.opt.caseSensitive ? "" : "i",
                    dct = this.opt.caseSensitive ? ["aàáâãäåāąă", "AÀÁÂÃÄÅĀĄĂ", "cçćč", "CÇĆČ", "dđď", "DĐĎ", "eèéêëěēę", "EÈÉÊËĚĒĘ", "iìíîïī", "IÌÍÎÏĪ", "lł", "LŁ", "nñňń", "NÑŇŃ", "oòóôõöøō", "OÒÓÔÕÖØŌ", "rř", "RŘ", "sšśș", "SŠŚȘ", "tťț", "TŤȚ", "uùúûüůū", "UÙÚÛÜŮŪ", "yÿý", "YŸÝ", "zžżź", "ZŽŻŹ"] : ["aÀÁÂÃÄÅàáâãäåĀāąĄăĂ", "cÇçćĆčČ", "dđĐďĎ", "eÈÉÊËèéêëěĚĒēęĘ", "iÌÍÎÏìíîïĪī", "lłŁ", "nÑñňŇńŃ", "oÒÓÔÕÖØòóôõöøŌō", "rřŘ", "sŠšśŚșȘ", "tťŤțȚ", "uÙÚÛÜùúûüůŮŪū", "yŸÿýÝ", "zŽžżŻźŹ"];
                var handled = [];
                str.split("").forEach(function (ch) {
                    dct.every(function (dct) {
                        if (dct.indexOf(ch) !== -1) {
                            if (handled.indexOf(dct) > -1) {
                                return false;
                            }

                            str = str.replace(new RegExp("[" + dct + "]", "gm" + sens), "[" + dct + "]");
                            handled.push(dct);
                        }
                        return true;
                    });
                });
                return str;
            }
        }, {
            key: "createMergedBlanksRegExp",
            value: function createMergedBlanksRegExp(str) {
                return str.replace(/[\s]+/gmi, "[\\s]+");
            }
        }, {
            key: "createAccuracyRegExp",
            value: function createAccuracyRegExp(str) {
                var _this = this;

                var acc = this.opt.accuracy,
                    val = typeof acc === "string" ? acc : acc.value,
                    ls = typeof acc === "string" ? [] : acc.limiters,
                    lsJoin = "";
                ls.forEach(function (limiter) {
                    lsJoin += "|" + _this.escapeStr(limiter);
                });
                switch (val) {
                    case "partially":
                    default:
                        return "()(" + str + ")";
                    case "complementary":
                        return "()([^\\s" + lsJoin + "]*" + str + "[^\\s" + lsJoin + "]*)";
                    case "exactly":
                        return "(^|\\s" + lsJoin + ")(" + str + ")(?=$|\\s" + lsJoin + ")";
                }
            }
        }, {
            key: "getSeparatedKeywords",
            value: function getSeparatedKeywords(sv) {
                var _this2 = this;

                var stack = [];
                sv.forEach(function (kw) {
                    if (!_this2.opt.separateWordSearch) {
                        if (kw.trim() && stack.indexOf(kw) === -1) {
                            stack.push(kw);
                        }
                    } else {
                        kw.split(" ").forEach(function (kwSplitted) {
                            if (kwSplitted.trim() && stack.indexOf(kwSplitted) === -1) {
                                stack.push(kwSplitted);
                            }
                        });
                    }
                });
                return {
                    "keywords": stack.sort(function (a, b) {
                        return b.length - a.length;
                    }),
                    "length": stack.length
                };
            }
        }, {
            key: "getTextNodes",
            value: function getTextNodes(cb) {
                var _this3 = this;

                var val = "",
                    nodes = [];
                this.iterator.forEachNode(NodeFilter.SHOW_TEXT, function (node) {
                    nodes.push({
                        start: val.length,
                        end: (val += node.textContent).length,
                        node: node
                    });
                }, function (node) {
                    if (_this3.matchesExclude(node.parentNode, true)) {
                        return NodeFilter.FILTER_REJECT;
                    } else {
                        return NodeFilter.FILTER_ACCEPT;
                    }
                }, function () {
                    cb({
                        value: val,
                        nodes: nodes
                    });
                });
            }
        }, {
            key: "matchesExclude",
            value: function matchesExclude(el, exclM) {
                var excl = this.opt.exclude.concat(["script", "style", "title", "head", "html"]);
                if (exclM) {
                    excl = excl.concat(["*[data-markjs='true']"]);
                }
                return DOMIterator.matches(el, excl);
            }
        }, {
            key: "wrapRangeInTextNode",
            value: function wrapRangeInTextNode(node, start, end) {
                var hEl = !this.opt.element ? "mark" : this.opt.element,
                    startNode = node.splitText(start),
                    ret = startNode.splitText(end - start);
                var repl = document.createElement(hEl);
                repl.setAttribute("data-markjs", "true");
                if (this.opt.className) {
                    repl.setAttribute("class", this.opt.className);
                }
                repl.textContent = startNode.textContent;
                startNode.parentNode.replaceChild(repl, startNode);
                return ret;
            }
        }, {
            key: "wrapRangeInMappedTextNode",
            value: function wrapRangeInMappedTextNode(dict, start, end, filterCb, eachCb) {
                var _this4 = this;

                dict.nodes.every(function (n, i) {
                    var sibl = dict.nodes[i + 1];
                    if (typeof sibl === "undefined" || sibl.start > start) {
                        var _ret = function () {
                            var s = start - n.start,
                                e = (end > n.end ? n.end : end) - n.start;
                            if (filterCb(n.node)) {
                                n.node = _this4.wrapRangeInTextNode(n.node, s, e);

                                var startStr = dict.value.substr(0, n.start),
                                    endStr = dict.value.substr(e + n.start);
                                dict.value = startStr + endStr;
                                dict.nodes.forEach(function (k, j) {
                                    if (j >= i) {
                                        if (dict.nodes[j].start > 0 && j !== i) {
                                            dict.nodes[j].start -= e;
                                        }
                                        dict.nodes[j].end -= e;
                                    }
                                });
                                end -= e;
                                eachCb(n.node.previousSibling, n.start);
                                if (end > n.end) {
                                    start = n.end;
                                } else {
                                    return {
                                        v: false
                                    };
                                }
                            }
                        }();

                        if ((typeof _ret === "undefined" ? "undefined" : _typeof(_ret)) === "object") return _ret.v;
                    }
                    return true;
                });
            }
        }, {
            key: "wrapMatches",
            value: function wrapMatches(regex, ignoreGroups, filterCb, eachCb, endCb) {
                var _this5 = this;

                var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1;
                this.getTextNodes(function (dict) {
                    dict.nodes.forEach(function (node) {
                        node = node.node;
                        var match = void 0;
                        while ((match = regex.exec(node.textContent)) !== null && match[matchIdx] !== "") {
                            if (!filterCb(match[matchIdx], node)) {
                                continue;
                            }
                            var pos = match.index;
                            if (matchIdx !== 0) {
                                for (var i = 1; i < matchIdx; i++) {
                                    pos += match[i].length;
                                }
                            }
                            node = _this5.wrapRangeInTextNode(node, pos, pos + match[matchIdx].length);
                            eachCb(node.previousSibling);

                            regex.lastIndex = 0;
                        }
                    });
                    endCb();
                });
            }
        }, {
            key: "wrapMatchesAcrossElements",
            value: function wrapMatchesAcrossElements(regex, ignoreGroups, filterCb, eachCb, endCb) {
                var _this6 = this;

                var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1;
                this.getTextNodes(function (dict) {
                    var match = void 0;
                    while ((match = regex.exec(dict.value)) !== null && match[matchIdx] !== "") {
                        var start = match.index;
                        if (matchIdx !== 0) {
                            for (var i = 1; i < matchIdx; i++) {
                                start += match[i].length;
                            }
                        }
                        var end = start + match[matchIdx].length;

                        _this6.wrapRangeInMappedTextNode(dict, start, end, function (node) {
                            return filterCb(match[matchIdx], node);
                        }, function (node, lastIndex) {
                            regex.lastIndex = lastIndex;
                            eachCb(node);
                        });
                    }
                    endCb();
                });
            }
        }, {
            key: "unwrapMatches",
            value: function unwrapMatches(node) {
                var parent = node.parentNode;
                var docFrag = document.createDocumentFragment();
                while (node.firstChild) {
                    docFrag.appendChild(node.removeChild(node.firstChild));
                }
                parent.replaceChild(docFrag, node);
                if (!this.ie) {
                    parent.normalize();
                } else {
                    this.normalizeTextNode(parent);
                }
            }
        }, {
            key: "normalizeTextNode",
            value: function normalizeTextNode(node) {
                if (!node) {
                    return;
                }
                if (node.nodeType === 3) {
                    while (node.nextSibling && node.nextSibling.nodeType === 3) {
                        node.nodeValue += node.nextSibling.nodeValue;
                        node.parentNode.removeChild(node.nextSibling);
                    }
                } else {
                    this.normalizeTextNode(node.firstChild);
                }
                this.normalizeTextNode(node.nextSibling);
            }
        }, {
            key: "markRegExp",
            value: function markRegExp(regexp, opt) {
                var _this7 = this;

                this.opt = opt;
                this.log("Searching with expression \"" + regexp + "\"");
                var totalMatches = 0,
                    fn = "wrapMatches";
                var eachCb = function eachCb(element) {
                    totalMatches++;
                    _this7.opt.each(element);
                };
                if (this.opt.acrossElements) {
                    fn = "wrapMatchesAcrossElements";
                }
                this[fn](regexp, this.opt.ignoreGroups, function (match, node) {
                    return _this7.opt.filter(node, match, totalMatches);
                }, eachCb, function () {
                    if (totalMatches === 0) {
                        _this7.opt.noMatch(regexp);
                    }
                    _this7.opt.done(totalMatches);
                });
            }
        }, {
            key: "mark",
            value: function mark(sv, opt) {
                var _this8 = this;

                this.opt = opt;
                var totalMatches = 0,
                    fn = "wrapMatches";

                var _getSeparatedKeywords = this.getSeparatedKeywords(typeof sv === "string" ? [sv] : sv),
                    kwArr = _getSeparatedKeywords.keywords,
                    kwArrLen = _getSeparatedKeywords.length,
                    sens = this.opt.caseSensitive ? "" : "i",
                    handler = function handler(kw) {
                    var regex = new RegExp(_this8.createRegExp(kw), "gm" + sens),
                        matches = 0;
                    _this8.log("Searching with expression \"" + regex + "\"");
                    _this8[fn](regex, 1, function (term, node) {
                        return _this8.opt.filter(node, kw, totalMatches, matches);
                    }, function (element) {
                        matches++;
                        totalMatches++;
                        _this8.opt.each(element);
                    }, function () {
                        if (matches === 0) {
                            _this8.opt.noMatch(kw);
                        }
                        if (kwArr[kwArrLen - 1] === kw) {
                            _this8.opt.done(totalMatches);
                        } else {
                            handler(kwArr[kwArr.indexOf(kw) + 1]);
                        }
                    });
                };

                if (this.opt.acrossElements) {
                    fn = "wrapMatchesAcrossElements";
                }
                if (kwArrLen === 0) {
                    this.opt.done(totalMatches);
                } else {
                    handler(kwArr[0]);
                }
            }
        }, {
            key: "unmark",
            value: function unmark(opt) {
                var _this9 = this;

                this.opt = opt;
                var sel = this.opt.element ? this.opt.element : "*";
                sel += "[data-markjs]";
                if (this.opt.className) {
                    sel += "." + this.opt.className;
                }
                this.log("Removal selector \"" + sel + "\"");
                this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT, function (node) {
                    _this9.unwrapMatches(node);
                }, function (node) {
                    var matchesSel = DOMIterator.matches(node, sel),
                        matchesExclude = _this9.matchesExclude(node, false);
                    if (!matchesSel || matchesExclude) {
                        return NodeFilter.FILTER_REJECT;
                    } else {
                        return NodeFilter.FILTER_ACCEPT;
                    }
                }, this.opt.done);
            }
        }, {
            key: "opt",
            set: function set(val) {
                this._opt = _extends({}, {
                    "element": "",
                    "className": "",
                    "exclude": [],
                    "iframes": false,
                    "separateWordSearch": true,
                    "diacritics": true,
                    "synonyms": {},
                    "accuracy": "partially",
                    "acrossElements": false,
                    "caseSensitive": false,
                    "ignoreJoiners": false,
                    "ignoreGroups": 0,
                    "each": function each() {},
                    "noMatch": function noMatch() {},
                    "filter": function filter() {
                        return true;
                    },
                    "done": function done() {},
                    "debug": false,
                    "log": window.console
                }, val);
            },
            get: function get() {
                return this._opt;
            }
        }, {
            key: "iterator",
            get: function get() {
                if (!this._iterator) {
                    this._iterator = new DOMIterator(this.ctx, this.opt.iframes, this.opt.exclude);
                }
                return this._iterator;
            }
        }]);

        return Mark;
    }();

    var DOMIterator = function () {
        function DOMIterator(ctx) {
            var iframes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
            var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];

            _classCallCheck(this, DOMIterator);

            this.ctx = ctx;

            this.iframes = iframes;

            this.exclude = exclude;
        }

        _createClass(DOMIterator, [{
            key: "getContexts",
            value: function getContexts() {
                var ctx = void 0,
                    filteredCtx = [];
                if (typeof this.ctx === "undefined" || !this.ctx) {
                    ctx = [];
                } else if (NodeList.prototype.isPrototypeOf(this.ctx)) {
                    ctx = Array.prototype.slice.call(this.ctx);
                } else if (Array.isArray(this.ctx)) {
                    ctx = this.ctx;
                } else if (typeof this.ctx === "string") {
                    ctx = Array.prototype.slice.call(document.querySelectorAll(this.ctx));
                } else {
                    ctx = [this.ctx];
                }

                ctx.forEach(function (ctx) {
                    var isDescendant = filteredCtx.filter(function (contexts) {
                        return contexts.contains(ctx);
                    }).length > 0;
                    if (filteredCtx.indexOf(ctx) === -1 && !isDescendant) {
                        filteredCtx.push(ctx);
                    }
                });
                return filteredCtx;
            }
        }, {
            key: "getIframeContents",
            value: function getIframeContents(ifr, successFn) {
                var errorFn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};

                var doc = void 0;
                try {
                    var ifrWin = ifr.contentWindow;
                    doc = ifrWin.document;
                    if (!ifrWin || !doc) {
                        throw new Error("iframe inaccessible");
                    }
                } catch (e) {
                    errorFn();
                }
                if (doc) {
                    successFn(doc);
                }
            }
        }, {
            key: "onIframeReady",
            value: function onIframeReady(ifr, successFn, errorFn) {
                var _this10 = this;

                try {
                    (function () {
                        var ifrWin = ifr.contentWindow,
                            bl = "about:blank",
                            compl = "complete",
                            isBlank = function isBlank() {
                            var src = ifr.getAttribute("src").trim(),
                                href = ifrWin.location.href;
                            return href === bl && src !== bl && src;
                        },
                            observeOnload = function observeOnload() {
                            var listener = function listener() {
                                try {
                                    if (!isBlank()) {
                                        ifr.removeEventListener("load", listener);
                                        _this10.getIframeContents(ifr, successFn, errorFn);
                                    }
                                } catch (e) {
                                    errorFn();
                                }
                            };
                            ifr.addEventListener("load", listener);
                        };
                        if (ifrWin.document.readyState === compl) {
                            if (isBlank()) {
                                observeOnload();
                            } else {
                                _this10.getIframeContents(ifr, successFn, errorFn);
                            }
                        } else {
                            observeOnload();
                        }
                    })();
                } catch (e) {
                    errorFn();
                }
            }
        }, {
            key: "waitForIframes",
            value: function waitForIframes(ctx, done) {
                var _this11 = this;

                var eachCalled = 0;
                this.forEachIframe(ctx, function () {
                    return true;
                }, function (ifr) {
                    eachCalled++;
                    _this11.waitForIframes(ifr.querySelector("html"), function () {
                        if (! --eachCalled) {
                            done();
                        }
                    });
                }, function (handled) {
                    if (!handled) {
                        done();
                    }
                });
            }
        }, {
            key: "forEachIframe",
            value: function forEachIframe(ctx, filter, each) {
                var _this12 = this;

                var end = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {};

                var ifr = ctx.querySelectorAll("iframe"),
                    open = ifr.length,
                    handled = 0;
                ifr = Array.prototype.slice.call(ifr);
                var checkEnd = function checkEnd() {
                    if (--open <= 0) {
                        end(handled);
                    }
                };
                if (!open) {
                    checkEnd();
                }
                ifr.forEach(function (ifr) {
                    if (DOMIterator.matches(ifr, _this12.exclude)) {
                        checkEnd();
                    } else {
                        _this12.onIframeReady(ifr, function (con) {
                            if (filter(ifr)) {
                                handled++;
                                each(con);
                            }
                            checkEnd();
                        }, checkEnd);
                    }
                });
            }
        }, {
            key: "createIterator",
            value: function createIterator(ctx, whatToShow, filter) {
                return document.createNodeIterator(ctx, whatToShow, filter, false);
            }
        }, {
            key: "createInstanceOnIframe",
            value: function createInstanceOnIframe(contents) {
                return new DOMIterator(contents.querySelector("html"), this.iframes);
            }
        }, {
            key: "compareNodeIframe",
            value: function compareNodeIframe(node, prevNode, ifr) {
                var compCurr = node.compareDocumentPosition(ifr),
                    prev = Node.DOCUMENT_POSITION_PRECEDING;
                if (compCurr & prev) {
                    if (prevNode !== null) {
                        var compPrev = prevNode.compareDocumentPosition(ifr),
                            after = Node.DOCUMENT_POSITION_FOLLOWING;
                        if (compPrev & after) {
                            return true;
                        }
                    } else {
                        return true;
                    }
                }
                return false;
            }
        }, {
            key: "getIteratorNode",
            value: function getIteratorNode(itr) {
                var prevNode = itr.previousNode();
                var node = void 0;
                if (prevNode === null) {
                    node = itr.nextNode();
                } else {
                    node = itr.nextNode() && itr.nextNode();
                }
                return {
                    prevNode: prevNode,
                    node: node
                };
            }
        }, {
            key: "checkIframeFilter",
            value: function checkIframeFilter(node, prevNode, currIfr, ifr) {
                var key = false,
                    handled = false;
                ifr.forEach(function (ifrDict, i) {
                    if (ifrDict.val === currIfr) {
                        key = i;
                        handled = ifrDict.handled;
                    }
                });
                if (this.compareNodeIframe(node, prevNode, currIfr)) {
                    if (key === false && !handled) {
                        ifr.push({
                            val: currIfr,
                            handled: true
                        });
                    } else if (key !== false && !handled) {
                        ifr[key].handled = true;
                    }
                    return true;
                }
                if (key === false) {
                    ifr.push({
                        val: currIfr,
                        handled: false
                    });
                }
                return false;
            }
        }, {
            key: "handleOpenIframes",
            value: function handleOpenIframes(ifr, whatToShow, eCb, fCb) {
                var _this13 = this;

                ifr.forEach(function (ifrDict) {
                    if (!ifrDict.handled) {
                        _this13.getIframeContents(ifrDict.val, function (con) {
                            _this13.createInstanceOnIframe(con).forEachNode(whatToShow, eCb, fCb);
                        });
                    }
                });
            }
        }, {
            key: "iterateThroughNodes",
            value: function iterateThroughNodes(whatToShow, ctx, eachCb, filterCb, doneCb) {
                var _this14 = this;

                var itr = this.createIterator(ctx, whatToShow, filterCb);
                var ifr = [],
                    elements = [],
                    node = void 0,
                    prevNode = void 0,
                    retrieveNodes = function retrieveNodes() {
                    var _getIteratorNode = _this14.getIteratorNode(itr);

                    prevNode = _getIteratorNode.prevNode;
                    node = _getIteratorNode.node;

                    return node;
                };
                while (retrieveNodes()) {
                    if (this.iframes) {
                        this.forEachIframe(ctx, function (currIfr) {
                            return _this14.checkIframeFilter(node, prevNode, currIfr, ifr);
                        }, function (con) {
                            _this14.createInstanceOnIframe(con).forEachNode(whatToShow, eachCb, filterCb);
                        });
                    }

                    elements.push(node);
                }
                elements.forEach(function (node) {
                    eachCb(node);
                });
                if (this.iframes) {
                    this.handleOpenIframes(ifr, whatToShow, eachCb, filterCb);
                }
                doneCb();
            }
        }, {
            key: "forEachNode",
            value: function forEachNode(whatToShow, each, filter) {
                var _this15 = this;

                var done = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {};

                var contexts = this.getContexts();
                var open = contexts.length;
                if (!open) {
                    done();
                }
                contexts.forEach(function (ctx) {
                    var ready = function ready() {
                        _this15.iterateThroughNodes(whatToShow, ctx, each, filter, function () {
                            if (--open <= 0) {
                                done();
                            }
                        });
                    };

                    if (_this15.iframes) {
                        _this15.waitForIframes(ctx, ready);
                    } else {
                        ready();
                    }
                });
            }
        }], [{
            key: "matches",
            value: function matches(element, selector) {
                var selectors = typeof selector === "string" ? [selector] : selector,
                    fn = element.matches || element.matchesSelector || element.msMatchesSelector || element.mozMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector;
                if (fn) {
                    var match = false;
                    selectors.every(function (sel) {
                        if (fn.call(element, sel)) {
                            match = true;
                            return false;
                        }
                        return true;
                    });
                    return match;
                } else {
                    return false;
                }
            }
        }]);

        return DOMIterator;
    }();

    $.fn.mark = function (sv, opt) {
        new Mark(this.get()).mark(sv, opt);
        return this;
    };
    $.fn.markRegExp = function (regexp, opt) {
        new Mark(this.get()).markRegExp(regexp, opt);
        return this;
    };
    $.fn.unmark = function (opt) {
        new Mark(this.get()).unmark(opt);
        return this;
    };
    return $;
}, window, document);
;
$(function () {

    if ($.isFunction($.fn.fancybox)) {
        if ($('.fancybox').length) {
            $('.fancybox').fancybox();
        }
    }

    $('#mobile-categories').change(function () {

        var value = $(this).val();

        if (value != "Please Select...") {
            window.location = $(this).val();
        }

    });

    if ($('#section-ireland-map').length > 0) {
        preloadImages([$("#bannerImage1").val(), $("#bannerImage2").val(), $("#bannerImage3").val(), $("#bannerImage4").val(), $("#bannerImage5").val()]);
    }

    $('.img-swap').attr('src', $("#bannerImage5").val());

    $('#a-search-desktop').click(function () {
        var value = (encodeURIComponent($('#myOutputText').val()));
        var hf = $("#hfSearch").val();
        window.location.href = hf + "?q=" + value;
        return false;
    });

    $("#txt-search-desktop").keyup(function (e) {
        if (e.which === 13) {
            var value = (encodeURIComponent($('#myOutputText').val()));
            var hf = $("#hfSearch").val();
            window.location.href = hf + "?q=" + value;
            return false;
        }
    });

    $('.search-interface').click(function (e) {
        e.preventDefault();
        $('.search-panel-bar').fadeToggle();
        $('.search-panel-bar input').focus();
    });

    $('.search-interface-go').click(function (e) {
        e.preventDefault();
        $('.search-panel-bar').fadeToggle();
        $('.search-panel-bar input').focus();
    });

    $('#btn-search-mobile').click(function () {
        var value = (encodeURIComponent($("#txt-search-mobile").val()));
        var hf = $("#hfSearch").val();
        window.location.href = hf + "?q=" + value;
        return false;
    });

    $('.date-href').click(function (e) {
        e.preventDefault();

        var item = $(this).data('datetime');
        var li = $(this).closest('li');

        $(li).addClass('active').siblings('.active').removeClass('active').find('.hidden').hide();
        $(li).find('.hidden').toggle();

        $('.sailing-item').hide();
        $('.' + item).toggle();

        $('ul.port-tabs').each(function () {
            var current = $(this).find('li:first-child');
            current.trigger('click');
        });
    });

    $('ul.port-tabs li').click(function (e) {
        e.preventDefault();

        var li = $(this);
        var item = $(this).find('div.port-label').data('tab');

        $(li).parent().find('div.port-label__active').removeClass('port-label__active');
        $(li).find("div.port-label").addClass('port-label__active');

        $('.port-name').hide();
        $('.tab-content-' + item).toggle();
    });

    $('.more__port-alert').click(function () {
        $(this).closest('.sailing-listing').next('.sailing-alert-box__with-side').slideDown();
        return false;
    });

    $('.sailing-alert-box__with-side h4').click(function () {
        $('.sailing-alert-box__with-side').slideUp();
        return false;
    });

    $('.sailing-alert-box__mobile h4').click(function () {
        $(this).next('.text-entry').slideToggle();
        $(this).toggleClass('revert-arrow');
    });

    disableFeedback();

    deferImages();

    deferYouTube();

    $("#txtHeaderSearch").autocomplete({
        // The source option can be an array of terms.  In this case, if
        // the typed characters appear in any position in a term, then the
        // term is included in the autocomplete list.
        // The source option can also be a function that performs the search,
        // and calls a response function with the matched entries.
        source: "/SiteSearch/SearchAutoComplete",
        minLength: 1
    });
    
});



function loadCarousel() {

    if ($.isFunction($.fn.slick)) {
        if ($('.banner-block__ship-banner').length) {
            $(".banner-block__ship-banner").slick({
                lazyLoad: 'ondemand',
                slidesToShow: 1,
                infinite: true,
                autoplay: true,
                dots: false,
                centerMode: true,
                variableWidth: true,
                responsive: [
                    {
                        breakpoint: 481,
                        centerMode: false,
                        variableWidth: false,
                        settings: {
                            slidesToShow: 1,
                            slidesToScroll: 1
                        }
                    }
                ]
            });
        }
    }
}

function loadInstagram() {

    var url = "/Engage/Handlers/Social.ashx";
    var parameters = new Array();
    parameters["mode"] = "Instagram";

    $.ajax({
        type: "GET",
        url: buildUrl(url, parameters),
        dataType: "html",
        success: function (data) {
            if (data !== "") {
                $("#instagram-feed").html(data);

                $(".banner-block__instagram").slick({
                    lazyLoad: 'ondemand',
                    slidesToShow: 7,
                    infinite: true,
                    autoplay: true,
                    dots: false,
                    responsive: [
                        {
                            breakpoint: 769,
                            centerMode: false,
                            variableWidth: false,
                            settings: {
                                slidesToShow: 5,
                                slidesToScroll: 1
                            }
                        },
                        {
                            breakpoint: 481,
                            centerMode: false,
                            variableWidth: false,
                            settings: {
                                slidesToShow: 3,
                                slidesToScroll: 1
                            }
                        }
                    ]
                });
            }
        }

    });

    return false;
}

function loadFacebook() {

    var url = "/Engage/Handlers/Social.ashx";
    var parameters = new Array();
    parameters["mode"] = "Facebook";

    $.ajax({
        type: "GET",
        url: buildUrl(url, parameters),
        dataType: "html",
        success: function (data) {
            if (data !== "") {
                $("#facebook-feed").html(data);

                deferImages();
            }
        }

    });

    return false;
}

function loadYouTube() {

    var url = "/Engage/Handlers/Social.ashx";
    var parameters = new Array();
    parameters["mode"] = "YouTube";

    $.ajax({
        type: "GET",
        url: buildUrl(url, parameters),
        dataType: "html",
        success: function (data) {
            if (data !== "") {
                $("#youtube-feed").html(data);

                deferYouTube();
            }
        }

    });

    return false;
}

function loadTwitter() {

    var url = "/Engage/Handlers/Social.ashx";
    var parameters = new Array();
    parameters["mode"] = "Twitter";

    $.ajax({
        type: "GET",
        url: buildUrl(url, parameters),
        dataType: "html",
        success: function (data) {
            if (data !== "") {
                $("#twitter-feed").html(data);

                deferImages();
            }
        }

    });

    return false;
}

function preloadImages(array) {
    if (!preloadImages.list) {
        preloadImages.list = [];
    }
    var list = preloadImages.list;
    for (var i = 0; i < array.length; i++) {

        if (typeof array[i] != 'undefined' || array[i] != null || array[i].length != 0) {

            var img = new Image();
            img.onload = function () {
                var index = list.indexOf(this);
                if (index !== -1) {
                    list.splice(index, 1);
                }
            }
            list.push(img);
            img.src = array[i];

        }
    }
}

function buildUrl(url, parameters) {
    var qs = "";
    for (var key in parameters) {
        var value = parameters[key];
        if (value.length > 0) {
            qs += key + "=" + value + "&";
        }
    }
    if (qs.length > 0) {
        qs = qs.substring(0, qs.length - 1); //chop off last "&"
        url = url + "?" + qs;
    }
    return url;
}

function deferImages() {

    var imgDefer = document.getElementsByTagName('img');
    for (var i = 0; i < imgDefer.length; i++) {
        if (imgDefer[i].getAttribute('data-src')) {
            imgDefer[i].setAttribute('src', imgDefer[i].getAttribute('data-src'));
        }
    }

}

function deferYouTube() {

    var imgDefer = document.getElementsByTagName('iframe');
    for (var i = 0; i < imgDefer.length; i++) {
        if (imgDefer[i].getAttribute('data-src')) {
            imgDefer[i].setAttribute('src', imgDefer[i].getAttribute('data-src'));
        }
    }

}

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires=" + d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires + ";path=/";
}

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) === " ") c = c.substring(1);
        if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
    }
    return "";
}

function disableFeedback() {
    var lang = $("#Language").val();

    if (lang != null && lang.length > 2) {
        lang = lang.substring(0, 2);
    }

    switch (lang) {
        case "EN":
            $("#website-feeback").hide();
            break;
        default:
            $("#website-feeback").hide();
    }
}

function initMap() {

    var coordinates = $(".de77eebd-99a0-40df-8d18-2cb8d09596fb");

    if ((coordinates !== undefined) && (coordinates !== null)) {

        for (var i = 0; i < coordinates.length; i++) {

            var loc = coordinates[i].id;

            var coords = coordinates[i].getAttribute("data-coordinates").split(",");

            var latLng = { lat: parseFloat(coords[0]), lng: parseFloat(coords[1]) };

            var options = {
                zoom: 12,
                center: latLng,
                scrollwheel: false,
                navigationControl: false,
                mapTypeControl: false,
                scaleControl: false,
                zoomControl: false,
                draggable: true,
                streetViewControl: false,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            }

            var map = new google.maps.Map(document.getElementById(loc), options);

            var geocoder = new google.maps.Geocoder();
            geocodeAddress(geocoder, map, coordinates[i]);

            google.maps.event.addDomListener(window, 'resize', initMap);
            google.maps.event.addDomListener(window, 'load', initMap);

        }
    }
}

function geocodeAddress(geocoder, resultsMap, data) {

    var coords = data.getAttribute("data-coordinates").split(",");

    var latLng = { lat: parseFloat(coords[0]), lng: parseFloat(coords[1]) };

    var contentString = '<span style="color: #00A25B; font-size: 11px;"><strong>Irish Ferries</strong></span> <br/>' + data.getAttribute("data-address") + '<span style="font-size: 10px;"><br/><a onclick=\"navigate(' + data.getAttribute("data-coordinates") + ');\" style="color: #253; text-decoration: underline;">Directions</a> </span>';

    var infowindow = new google.maps.InfoWindow({
        content: contentString
    });

    var marker = new google.maps.Marker({
        position: latLng,
        map: resultsMap
    });
    marker.addListener('click', function () {
        //navigate(parseFloat(coords[0]), parseFloat(coords[1]));
        infowindow.open(resultsMap, marker);
    });

}

function navigate(lat, lng) {

    if ((navigator.platform.indexOf("iPhone") !== -1) || (navigator.platform.indexOf("iPod") !== -1)) {
        function iOSversion() {
            if (/iP(hone|od|ad)/.test(navigator.platform)) {
                var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
                return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
            }
        }

        var ver = iOSversion() || [0];

        var protocol;

        if (ver[0] >= 6) {
            protocol = 'maps://';
        } else {
            protocol = 'http://';

        }
        window.location = protocol + 'maps.apple.com/maps?daddr=' + lat + ',' + lng + '&amp;ll=';
    }
    else {
        window.open('http://maps.google.com?daddr=' + lat + ',' + lng + '&amp;ll=');
    }
};
// Easy Responsive Tabs Plugin
(function ($) {
    $.fn.extend({
        easyResponsiveTabs: function (options) {
            //Set the default values, use comma to separate the settings, example:
            var defaults = {
                type: 'default', //default, vertical, accordion;
                width: 'auto',
                fit: true,
                closed: false,
                activate: function(){}
            }
            //Variables
            var options = $.extend(defaults, options);            
            var opt = options, jtype = opt.type, jfit = opt.fit, jwidth = opt.width, vtabs = 'vertical', accord = 'accordion';

            //Events
            $(this).bind('tabactivate', function(e, currentTab) {
                if(typeof options.activate === 'function') {
                    options.activate.call(currentTab, e)
                }
            });

            //Main function
            this.each(function () {
                var $respTabs = $(this);
                var $respTabsList = $respTabs.find('ul.resp-tabs-list');
                $respTabs.find('ul.resp-tabs-list li').addClass('resp-tab-item');
                $respTabs.css({
                    'display': 'block',
                    'width': jwidth
                });

                $respTabs.find('.resp-tabs-container > div').addClass('resp-tab-content');
                jtab_options();
                //Properties Function
                function jtab_options() {
                    if (jtype == vtabs) {
                        $respTabs.addClass('resp-vtabs');
                    }
                    if (jfit == true) {
                        $respTabs.css({ width: '100%', margin: '0px' });
                    }
                    if (jtype == accord) {
                        $respTabs.addClass('resp-easy-accordion');
                        $respTabs.find('.resp-tabs-list').css('display', 'none');
                    }
                }

                //Assigning the h2 markup to accordion title
                var $tabItemh2;
                $respTabs.find('.resp-tab-content').before("<h2 class='resp-accordion' role='tab'><span class='resp-arrow'></span></h2>");

                var itemCount = 0;
                $respTabs.find('.resp-accordion').each(function () {
                    $tabItemh2 = $(this);
                    var innertext = $respTabs.find('.resp-tab-item:eq(' + itemCount + ')').html();
                    $respTabs.find('.resp-accordion:eq(' + itemCount + ')').append(innertext);
                    $tabItemh2.attr('aria-controls', 'tab_item-' + (itemCount));
                    itemCount++;
                });

                //Assigning the 'aria-controls' to Tab items
                var count = 0,
                    $tabContent;
                $respTabs.find('.resp-tab-item').each(function () {
                    $tabItem = $(this);
                    $tabItem.attr('aria-controls', 'tab_item-' + (count));
                    $tabItem.attr('role', 'tab');

                    //First active tab, keep closed if option = 'closed' or option is 'accordion' and the element is in accordion mode 
                    if(options.closed !== true && !(options.closed === 'accordion' && !$respTabsList.is(':visible')) && !(options.closed === 'tabs' && $respTabsList.is(':visible'))) {                  
                        $respTabs.find('.resp-tab-item').first().addClass('resp-tab-active');
                        $respTabs.find('.resp-accordion').first().addClass('resp-tab-active');
                        $respTabs.find('.resp-tab-content').first().addClass('resp-tab-content-active').attr('style', 'display:block');
                    }

                    //Assigning the 'aria-labelledby' attr to tab-content
                    var tabcount = 0;
                    $respTabs.find('.resp-tab-content').each(function () {
                        $tabContent = $(this);
                        $tabContent.attr('aria-labelledby', 'tab_item-' + (tabcount));
                        tabcount++;
                    });
                    count++;
                });

                //Tab Click action function
                $respTabs.find("[role=tab]").each(function () {
                    var $currentTab = $(this);
                    $currentTab.click(function () {

                        var $tabAria = $currentTab.attr('aria-controls');

                        if ($currentTab.hasClass('resp-accordion') && $currentTab.hasClass('resp-tab-active')) {
                            $respTabs.find('.resp-tab-content-active').slideUp('', function () { $(this).addClass('resp-accordion-closed'); });
                            $currentTab.removeClass('resp-tab-active');
                            return false;
                        }
                        if (!$currentTab.hasClass('resp-tab-active') && $currentTab.hasClass('resp-accordion')) {
                            $respTabs.find('.resp-tab-active').removeClass('resp-tab-active');
                            $respTabs.find('.resp-tab-content-active').slideUp().removeClass('resp-tab-content-active resp-accordion-closed');
                            $respTabs.find("[aria-controls=" + $tabAria + "]").addClass('resp-tab-active');

                            $respTabs.find('.resp-tab-content[aria-labelledby = ' + $tabAria + ']').slideDown().addClass('resp-tab-content-active');
                        } else {
                            $respTabs.find('.resp-tab-active').removeClass('resp-tab-active');
                            $respTabs.find('.resp-tab-content-active').removeAttr('style').removeClass('resp-tab-content-active').removeClass('resp-accordion-closed');
                            $respTabs.find("[aria-controls=" + $tabAria + "]").addClass('resp-tab-active');
                            $respTabs.find('.resp-tab-content[aria-labelledby = ' + $tabAria + ']').addClass('resp-tab-content-active').attr('style', 'display:block');
                        }
                        //Trigger tab activation event
                        $currentTab.trigger('tabactivate', $currentTab);
                    });
                    //Window resize function                   
                    $(window).resize(function () {
                        $respTabs.find('.resp-accordion-closed').removeAttr('style');
                    });
                });
            });
        }
    });
})(jQuery);
;
function moveBanner() {
    var winWidth = jQuery(window).width(); //get width of the window
    var width = 1920 - winWidth; //get difference from 1900px
    var pos = (width / 2) + 'px'; // half it and change to pixels
    if (winWidth > 768) {
        jQuery('.home-caro').css({ // set css right attribute of banner image
            'right': pos
        });
    } else {
        jQuery('.home-caro').css({ // set css right attribute of banner image
            'right': ''
        });
    }
}


function prevnext() {
    var wwidth, rwidth, hwidth, sheight
    wwidth = jQuery(window).width();
    rwidth = wwidth - 980;
    hwidth = rwidth / 2;
    jQuery('.slick-next, .slick-prev').css("width", hwidth);
    if (wwidth < 1025) {
        jQuery('.slick-next, .slick-prev').css("padding", "0px 50px");
    }
    if (wwidth < 480) {
        jQuery('.slick-next, .slick-prev').css("padding", "0px 30px");
    }
}

function OpenShipGallery() {
    jQuery("div.ship-gallery-container>a").first().click();
}
jQuery(document).ready(function () {

    if (jQuery(".media-toggle").length > 0) {
        jQuery(".media-toggle").click(function () {
            jQuery(".media-toggle").toggleClass("show");
        });
    };

    jQuery(".gallery-container").slick({
        slidesToShow: 4,
        slidesToScroll: 1,
        infinite: true,
        autoplay: true,
        dots: false,
        responsive: [
            {
                breakpoint: 769,
                centerMode: false,
                variableWidth: false,
                settings: {
                    slidesToShow: 3,
                    slidesToScroll: 1
                }
            },
            {
                breakpoint: 481,
                centerMode: false,
                variableWidth: false,
                settings: {
                    slidesToShow: 2,
                    slidesToScroll: 1
                }
            }
        ]
    });

    jQuery(".autoplayvideo").click(function () {
        jQuery('.shipModalBg').show();
    });

    jQuery(".shipVideo").click(function () {
        jQuery('.shipModalBg').show();
    });

    jQuery(".autoplayvideo").trigger('click');

    jQuery('.popupCloseBtn').click(function () {
        jQuery('.shipModalBg').hide();
    });

    jQuery('.search-interface').click(function () {
        jQuery('.search-panel-bar input').focus();
    });
   

    jQuery(".ship-gallery-fancybox").fancybox({
        openEffect: 'none',
        closeEffect: 'none'
    });
	
		jQuery('.view-gallery-link').click(function (e) {
			var el, id = jQuery(this).data('open-id');
			if (id) {
					el = jQuery('.ship-gallery-fancybox[rel=' + id + ']:eq(0)');
					e.preventDefault();
					el.click();
        }
    });

    jQuery('.mobile-trigger li a').click(function (e) {
        e.preventDefault();
        jQuery('nav.mobile-nav').slideToggle('fast');
    });

    jQuery('.editorial-block table').addClass('if-table');

    // removes delay on ios
    //FastClick.attach(document.body);

    // mob main nav
    jQuery("#menu").mmenu({
        extensions: ["pageshadow"],
        "offCanvas": {
            "position": "right"
        }
    });

    //accordion

    jQuery('.accordion-header').click(function (e) {
        if (jQuery(this).hasClass('accordion-header__active')) {
            jQuery(this).next('.accordion-content').slideUp();
            jQuery(this).removeClass('accordion-header__active');
            return false;
        } else {
            e.preventDefault();
            jQuery(this).next('.accordion-content').slideToggle('fast');
            jQuery(this).addClass('accordion-header__active');
        }

        //scroll to tab
        jQuery('html, body').animate({
            scrollTop: jQuery(this).offset().top
        }, 1000);

    });


    $.fn.chunk = function (size) {
        var arr = [];
        for (var i = 0; i < this.length; i += size) {
            arr.push(this.slice(i, i + size));
        }
        return this.pushStack(arr, "chunk", size);
    }

    var screenWidth = jQuery(window).width();

    //if (screenWidth < 768) {
    //    jQuery('.subnav-block--green').parent().hide()
    //    jQuery('.faqlist').parent().css('width', '100%')
    //} else if (screenWidth >= 768) {
    //    jQuery('.subnav-block--green').parent().show()
    //    jQuery('.faqlist').parent().css('width', '75%')
    //}


    var teaserWidth = jQuery(window).width();

    if (teaserWidth > 680) {
        if (jQuery('.offer-block-row > .span-4').length > 0) {
            jQuery(".offer-block-row > .span-4").chunk(3).wrap('<div class="wrapper clearfix"></div>');
        }
    }
    if (teaserWidth < 681) {
        if (jQuery('.offer-block-row > .span-4').length > 0) {
            jQuery(".offer-block-row > .span-4").chunk(2).wrap('<div class="wrapper clearfix"></div>');
        }
    }
    if (teaserWidth < 481) {
        if (jQuery('.offer-block-row > .span-4').length > 0) {
            jQuery(".offer-block-row > .span-4").chunk(1).wrap('<div class="wrapper clearfix"></div>');
        }
    }

    jQuery(document).on("click", ".more", function (event) {
        jQuery(this).prev('.offer-content').slideToggle();
        jQuery(this).toggleClass('less');
    });

    //$.fn.toggleText = function (t1, t2) {
    //    if (this.text() == t1) this.text(t2);
    //    else this.text(t1);
    //    return this;
    //};

    //jQuery('.more').click(function () {
    //    jQuery(this).toggleText('Show less', 'Show more');
    //})

    jQuery(".tab-control__vertical .tabs").on("click", "li", function (event) {
        event.preventDefault(); //kill the natural click event
        var i = jQuery(this).index(); // find which item was clicked
        if (jQuery(this).hasClass('active')) { //Check if the clicked item is active
            jQuery(".tab-control__vertical .tab-content .pane").eq(i).show().siblings().hide(); //if so show the corresponding tab, hiding the others
        } else { //if not
            jQuery(this).addClass('active').siblings().removeClass('active'); //add class of active to the clicked one and remove active class from siblings
            jQuery(".tab-control__vertical .tab-content .pane").eq(i).show().siblings().hide(); // and show the corresponding tab hiding the others
        };
    });
    jQuery(".tab-control__horizontal .tabs").on("click", "li", function (event) {
        event.preventDefault(); //kill the natural click event
        var i = jQuery(this).index(); // find which item was clicked
        if (jQuery(this).hasClass('active')) { //Check if the clicked item is active
            jQuery(".tab-control__horizontal .tab-content .pane").eq(i).show().siblings().hide(); //if so show the corresponding tab, hiding the others
        } else { //if not
            jQuery(this).addClass('active').siblings().removeClass('active'); //add class of active to the clicked one and remove active class from siblings
            jQuery(".tab-control__horizontal .tab-content .pane").eq(i).show().siblings().hide(); // and show the corresponding tab hiding the others
        };
    });

    jQuery(".editorial-block .if-table").wrap("<div class='resp-table'></div>");

    jQuery('.banner-block__carousel-tabs').slick({
        slidesToShow: 4,
        infinite: false,
        autoplay: false,
        pauseOnHover: true,
        dots: false,
        responsive: [
            {
                breakpoint: 1600,
                centerMode: false,
                variableWidth: false,
                settings: {
                    slidesToShow: 4,
                    slidesToScroll: 4
                }
            },
            {
                breakpoint: 481,
                centerMode: true,
                variableWidth: true,
                settings: {
                    slidesToShow: 1,
                    slidesToScroll: 1
                }
            },
        ]
    });

    jQuery(".banner-block__instagram").slick({
        slidesToShow: 7,
        infinite: true,
        autoplay: true,
        dots: false,
        responsive: [
            {
                breakpoint: 769,
                centerMode: false,
                variableWidth: false,
                settings: {
                    slidesToShow: 5,
                    slidesToScroll: 1
                }
            },
            {
                breakpoint: 481,
                centerMode: false,
                variableWidth: false,
                settings: {
                    slidesToShow: 3,
                    slidesToScroll: 1
                }
            }
        ]
    });



    jQuery(document).ready(function () {


        



        jQuery("img.lazy").lazyload({
            effect: "fadeIn",
            load : function() {
			jQuery('.holiday-teaser').conformity({"mode": "height"});
			jQuery('.accom-teaser').conformity({"mode": "height"});
		}
        });

        jQuery("div, section").randomize("div, section", ".accom-item");

        var pwindow = jQuery(window).width();

        if (pwindow < 668) {
            //jQuery('.accom-item-data p').css('display', 'none');
            //jQuery('svg.holidays-ireland--map').attr({
            //    'width': '597'
            //    , 'height': '412'
            //});
            jQuery('.show-more-info').click(function () {
                jQuery(this).siblings('p.intro-para').toggleClass('show');
                jQuery(this).text(function (i, text) {
                    return text === "Show more info" ? "Show less info" : "Show more info";
                });
                return false;
            });
        }

        if (pwindow < 1025) {
            jQuery('.icon-row li').click(function () {
                jQuery('.icon-row li span').hide();
                jQuery(this).find('span').stop().show();
            });
        } else {
            jQuery('.icon-row li').mouseenter(function () {
                jQuery(this).find('span').stop().show();
            });

            jQuery('.icon-row li').mouseleave(function () {
                jQuery(this).find('span').stop().hide();
            });
        }

        jQuery('.banner-block__accommodation').slick({
            fade: true,
            lazyLoad: 'ondemand',
            slidesToShow: 1,
            slidesToScroll: 1,
            infinite: true,
            dots: true,
            autoplay: true,
            autoplaySpeed: 2000,
            responsive: [
                {
                    breakpoint: 650,
                    settings: {
                        dots: false
                    }
                }
            ]
        });

    });

    (function ($) {

        $.fn.randomize = function (tree, elem) {
            return this.each(function () {
                var $this = jQuery(this);
                if (tree) $this = jQuery(this).find(tree);
                var unsortedElems = $this.children(elem);
                var elems = unsortedElems.clone();

                elems.sort(function () {
                    return (Math.round(Math.random()) - 0.5);
                });

                for (var i = 0; i < elems.length; i++)
                    unsortedElems.eq(i).replaceWith(elems[i]);
            });
        };

    })(jQuery);


    moveBanner();
    prevnext();



    jQuery('.banner-block__home-banner, .banner-block__campaign').slick({
        fade: true,
        slidesToShow: 1,
        slidesToScroll: 1,
        infinite: true,
        dots: true,
        autoplay: true,
        arrows: false,
        autoplaySpeed: 2000
    });



    jQuery('.banner-block__ship-banner').slick({
        centerMode: true, //lazyLoad: 'ondemand',
        infinite: true,
        variableWidth: true,
        adaptiveHeight: false,
        slidesToShow: 1,
        slidesToScroll: 1,
        autoplay: true,
        autoplaySpeed: 2000,
        responsive: [
            {
                breakpoint: 1024,
                settings: {
                    //infinite: false,
                    variableWidth: false,
                    centerMode: false
                }
            }
        ]
    });


    jQuery('#holiday-map').mapster({
        fillColor: 'cadb2a',
        strokeColor: '68aee0',
        strokeWidth: 2,
        fillOpacity: 1,
        stroke: true,
        singleSelect: true, //scaleMap: true

    });


    var isInIFrame = (window.location != window.parent.location);
    if (isInIFrame == true) {
        jQuery(".ships-banner").addClass("height-for-epi");

    } else {
        // no iframe
    }

    var mapwindow = jQuery(window).width();

    if (mapwindow > 1025) {
        jQuery('svg.holidays-ireland--map').attr({
            'width': '400',
            'height': '400'
        });
    }




    if (mapwindow > 1025 || mapwindow <= 680) {
        jQuery(document).ready(function () {
            // Tooltip only Text
            jQuery('.region').hover(function () {
                // Hover over code
                var title = jQuery(this).attr('data');
                jQuery(this).data('tipText', title).removeAttr('data');
                jQuery('<p class="tooltip"></p>')
                    .text(title)
                    .appendTo('body')
                    .fadeIn('slow');
            }, function () {
                // Hover out code
                jQuery(this).attr('data', jQuery(this).data('tipText'));
                jQuery('.tooltip').remove();
            }).mousemove(function (e) {
                var mousex = e.pageX + 25; //Get X coordinates
                var mousey = e.pageY + 0; //Get Y coordinates
                jQuery('.tooltip')
                    .css({
                        top: mousey,
                        left: mousex
                    })
            });
        });


        //dublin location

        jQuery('.dublin-region').hover(function () {
            jQuery('.dublin-location').toggleClass("highlight-location");
            jQuery('.dublin-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage5").val());
        });

        jQuery('.dublin-location').hover(function () {
            jQuery('.map--locations').toggleClass("dublin-selected");
            jQuery('.dublin-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage5").val());
        });

        //east location

        jQuery('.east-region').hover(function () {
            jQuery('.east-location').toggleClass("highlight-location");
            jQuery('.east-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage3").val());
        });

        jQuery('.east-location').hover(function () {
            jQuery('.map--locations').toggleClass("east-selected");
            jQuery('.east-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage3").val());
        });

        //west location

        jQuery('.west-region').hover(function () {
            jQuery('.west-location').toggleClass("highlight-location");
            jQuery('.west-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage4").val());
        });

        jQuery('.west-location').hover(function () {
            jQuery('.map--locations').toggleClass("west-selected");
            jQuery('.west-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage4").val());
        });

        //kerry location

        jQuery('.kerry-region').hover(function () {
            jQuery('.kerry-location').toggleClass("highlight-location");
            jQuery('.kerry-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage2").val());
        });

        jQuery('.kerry-location').hover(function () {
            jQuery('.map--locations').toggleClass("kerry-selected");
            jQuery('.kerry-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage2").val());
        });

        //cork location

        jQuery('.cork-region').hover(function () {
            jQuery('.cork-location').toggleClass("highlight-location");
            jQuery('.cork-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage1").val());
        });

        jQuery('.cork-location').hover(function () {
            jQuery('.map--locations').toggleClass("cork-selected");
            jQuery('.cork-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage1").val());
        });

    } else {
        jQuery('.region').click(function () {
            jQuery('.holidays .holiday-overlay ul li').removeClass("highlight-location");
            return false;
        });

        jQuery('.location').click(function () {
            jQuery('.map--locations').removeClass('dublin-selected');
            jQuery('.map--locations').removeClass('kerry-selected');
            jQuery('.map--locations').removeClass('cork-selected');
            jQuery('.map--locations').removeClass('east-selected');
            jQuery('.map--locations').removeClass('west-selected');

            jQuery('.location').removeClass('highlight-location');

            jQuery('.description ').fadeOut();

            return false;
        });

        jQuery('.region').click(function () {
            jQuery(this).removeClass('dublin-selected');
            jQuery(this).removeClass('kerry-selected');
            jQuery(this).removeClass('cork-selected');
            jQuery(this).removeClass('east-selected');
            jQuery(this).removeClass('west-selected');

            jQuery('.map--locations').removeClass('dublin-selected');
            jQuery('.map--locations').removeClass('kerry-selected');
            jQuery('.map--locations').removeClass('cork-selected');
            jQuery('.map--locations').removeClass('east-selected');
            jQuery('.map--locations').removeClass('west-selected');

            jQuery('.description ').fadeOut();

            return false;
        });

        jQuery('.dublin-region').click(function () {
            jQuery('.dublin-location').toggleClass("highlight-location");
            jQuery('.dublin-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage5").val());
            return false;
        });

        jQuery('.dublin-region').click(function () {
            jQuery('.map--locations').toggleClass("dublin-selected");
            jQuery('.img-swap').attr('src', jQuery("#bannerImage5").val());
            return false;
        });

        jQuery('.dublin-location').click(function () {
            jQuery(this).toggleClass("highlight-location");
            jQuery('.img-swap').attr('src', jQuery("#bannerImage5").val());
            return false;
        });

        jQuery('.dublin-location').click(function () {
            jQuery('.map--locations').toggleClass("dublin-selected");
            jQuery('.dublin-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage5").val());
            return false;
        });

        //east location

        jQuery('.east-region').click(function () {
            jQuery('.east-location').toggleClass("highlight-location");
            jQuery('.east-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage3").val());
            return false;
        });

        jQuery('.east-region').click(function () {
            jQuery('.map--locations').toggleClass("east-selected");
            jQuery('.img-swap').attr('src', jQuery("#bannerImage3").val());
            return false;
        });

        jQuery('.east-location').click(function () {
            jQuery(this).toggleClass("highlight-location");
            jQuery('.img-swap').attr('src', jQuery("#bannerImage3").val());
            return false;
        });

        jQuery('.east-location').click(function () {
            jQuery('.map--locations').toggleClass("east-selected");
            jQuery('.east-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage3").val());
            return false;
        });

        //west location

        jQuery('.west-region').click(function () {
            jQuery('.west-location').toggleClass("highlight-location");
            jQuery('.west-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage4").val());
            return false;
        });

        jQuery('.west-region').click(function () {
            jQuery('.map--locations').toggleClass("west-selected");
            jQuery('.img-swap').attr('src', jQuery("#bannerImage4").val());
            return false;
        });

        jQuery('.west-location').click(function () {
            jQuery(this).toggleClass("highlight-location");
            jQuery('.img-swap').attr('src', jQuery("#bannerImage4").val());
            return false;
        });

        jQuery('.west-location').click(function () {
            jQuery('.map--locations').toggleClass("west-selected");
            jQuery('.west-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage4").val());
            return false;
        });

        //kerry location

        jQuery('.kerry-region').click(function () {
            jQuery('.kerry-location').toggleClass("highlight-location");
            jQuery('.kerry-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage2").val());
            return false;
        });

        jQuery('.kerry-location').click(function () {
            jQuery(this).toggleClass("highlight-location");
            jQuery('.img-swap').attr('src', jQuery("#bannerImage2").val());
            return false;
        });

        jQuery('.kerry-region').click(function () {
            jQuery('.map--locations').toggleClass("kerry-selected");
            jQuery('.img-swap').attr('src', jQuery("#bannerImage2").val());
            return false;
        });

        jQuery('.kerry-location').click(function () {
            jQuery('.map--locations').toggleClass("kerry-selected");
            jQuery('.kerry-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage2").val());
            return false;
        });

        //cork location

        jQuery('.cork-region').click(function () {
            jQuery('.cork-location').toggleClass("highlight-location");
            jQuery('.cork-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage1").val());
            return false;
        });

        jQuery('.cork-region').click(function () {
            jQuery('.map--locations').toggleClass("cork-selected");
            jQuery('.img-swap').attr('src', jQuery("#bannerImage1").val());
            return false;
        });

        jQuery('.cork-location').click(function () {
            jQuery(this).toggleClass("highlight-location");
            jQuery('.img-swap').attr('src', jQuery("#bannerImage1").val());
            return false;
        });

        jQuery('.cork-location').click(function () {
            jQuery('.map--locations').toggleClass("cork-selected");
            jQuery('.cork-desc').stop().fadeToggle();
            jQuery('.img-swap').attr('src', jQuery("#bannerImage1").val());
            return false;
        });
    }


    /// end POC ///


    // needs to reload on orientation
    var mapwinwidth = jQuery(window).width();

    jQuery(window).resize(function () {
        var mapwinwidth = jQuery(window).width();
        if (mapwinwidth >= 734) {

            var documentWidth = jQuery(document).width() / 2.1;
            jQuery('#holiday-map').mapster('resize', documentWidth, 0, 0);

        }
        if (mapwinwidth <= 736) {

            var documentWidthmob = jQuery('.base').width();
            jQuery('#holiday-map').mapster('resize', documentWidthmob, 0, 0);

        }

        if (mapwindow > 1025) {
            jQuery('svg.holidays-ireland--map').attr({
                'width': '400',
                'height': '400'
            });
        }

        var screenWidth = jQuery(window).width();

        //if (screenWidth < 768) {
        //    jQuery('.subnav-block--green').parent().hide()
        //    jQuery('.faqlist').parent().css('width', '100%')
        //} else if (screenWidth >= 768) {
        //    jQuery('.subnav-block--green').parent().show()
        //    jQuery('.faqlist').parent().css('width', '75%')
        //}


    });


    if (mapwinwidth <= 736) {
        jQuery('.southeast-dorset').click(function () {
            //jQuery('.act-map-reveal').addClass('stackit');
            jQuery('.southeast-dorset-map').addClass('stackit');
        });

        jQuery('.norfolk').click(function () {
            //jQuery('.act-map-reveal').addClass('stackit');
            jQuery('.norfolk-map').addClass('stackit');
        });

        jQuery('.devon').click(function () {
            //jQuery('.act-map-reveal').addClass('stackit');
            jQuery('.devon-map').addClass('stackit');
        });

        jQuery('.wales').click(function () {
            //jQuery('.act-map-reveal').addClass('stackit');
            jQuery('.wales-map').addClass('stackit');
        });

        jQuery('.blackpool').click(function () {
            //jQuery('.act-map-reveal').addClass('stackit');
            jQuery('.blackpool-map').addClass('stackit');
        });

        jQuery('.yorkshire').click(function () {
            //jQuery('.act-map-reveal').addClass('stackit');
            jQuery('.yorkshire-map').addClass('stackit');
        });

        jQuery('.scotland').click(function () {
            //jQuery('.act-map-reveal').addClass('stackit');
            jQuery('.scotland-map').addClass('stackit');
        });

        jQuery('.map-close').click(function () {
            jQuery('.act-map-reveal').removeClass('stackit');
            jQuery('.norfolk-map').removeClass('stackit');
            jQuery('.southeast-dorset-map').removeClass('stackit');
            jQuery('.devon-map').removeClass('stackit');
            jQuery('.wales-map').removeClass('stackit');
            jQuery('.blackpool-map').removeClass('stackit');
            jQuery('.yorkshire-map').removeClass('stackit');
            jQuery('.scotland-map').removeClass('stackit');
            jQuery('.deactive-sco, .deactive-yor, .deactive-bla, .deactive-wal, .deactive-dev, .deactive-sed, .deactive-nor').mapster('deselect');
        });
    }

    jQuery('.southeast-dorset').click(function () {
        jQuery('.southeast-dorset-map').toggleClass('showElement');
        jQuery('.norfolk-map, .devon-map, .wales-map, .blackpool-map, .yorkshire-map, .scotland-map').removeClass('showElement');
    });

    jQuery('.norfolk').click(function () {
        jQuery('.norfolk-map').toggleClass('showElement');
        jQuery('.southeast-dorset-map, .devon-map, .wales-map, .blackpool-map, .yorkshire-map, .scotland-map').removeClass('showElement');
    });

    jQuery('.devon').click(function () {
        jQuery('.devon-map').toggleClass('showElement');
        jQuery('.southeast-dorset-map, .norfolk-map, .wales-map, .blackpool-map, .yorkshire-map, .scotland-map').removeClass('showElement');
    });

    jQuery('.wales').click(function () {
        jQuery('.wales-map').toggleClass('showElement');
        jQuery('.southeast-dorset-map, .devon-map, .norfolk-map, .blackpool-map, .yorkshire-map, .scotland-map').removeClass('showElement');
    });

    jQuery('.blackpool').click(function () {
        jQuery('.blackpool-map').toggleClass('showElement');
        jQuery('.southeast-dorset-map, .devon-map, .wales-map, .norfolk-map, .yorkshire-map, .scotland-map').removeClass('showElement');
    });

    jQuery('.yorkshire').click(function () {
        jQuery('.yorkshire-map').toggleClass('showElement');
        jQuery('.southeast-dorset-map, .devon-map, .wales-map, .blackpool-map, .norfolk-map, .scotland-map').removeClass('showElement');
    });

    jQuery('.scotland').click(function () {
        jQuery('.scotland-map').toggleClass('showElement');
        jQuery('.southeast-dorset-map').removeClass('showElement');
        jQuery('.southeast-dorset-map, .devon-map, .wales-map, .blackpool-map, .yorkshire-map, .norfolk-map').removeClass('showElement');
    });


    jQuery(".accom-options").fancybox({
        openEffect: 'none',
        closeEffect: 'none'
    });

    jQuery(".video-player").fancybox({
        maxWidth: 800,
        maxHeight: 600,
        fitToView: false,
        width: '70%',
        height: '70%',
        autoSize: false,
        closeClick: false,
        openEffect: 'none',
        closeEffect: 'none'
    });

    jQuery(".launch-callback").fancybox({
        maxWidth: 400,
        maxHeight: 660,
        fitToView: false,
        width: '100%',
        height: '100%',
        autoSize: false,
        closeClick: false,
        openEffect: 'none',
        closeEffect: 'none'
    });

    //open password modal
    jQuery('.launch-form').click(function () {
        jQuery('body').addClass("lock-body");
        jQuery('.engage-modal').fadeIn("fast");
        return false;
    });

    //closing but not the actual box click
    //jQuery('.mod-container').on('click', function (e) {
    //      e.stopPropagation();
    //});

    //closing
    jQuery('.popup-close').click(function (e) {
        e.preventDefault();
        jQuery('body').removeClass("lock-body");
        jQuery('.engage-modal').fadeOut("fast");
    });

    // closing
    // jQuery('.engage-modal').click(function () {
    //     jQuery('body').removeClass("lock-body");
    //     jQuery('.engage-modal').fadeOut("fast");
    // });

});

var headermain = jQuery('header.main').height();
var bannermain = jQuery('.banner-main').height();

var stickyvalue = (headermain + bannermain);

var callbacksticky = jQuery(window).width();
if (callbacksticky > 1000) {
    jQuery(window).scroll(function () {
        if (jQuery(this).scrollTop() > stickyvalue) {
            jQuery('.stcol').addClass("strip--stuck");
        } else {
            jQuery('.stcol').removeClass("strip--stuck");
        }
    });
}

jQuery(window).resize(function () {

    var teaserWidth = jQuery(window).width();

    jQuery('.wrapper').contents().unwrap();

    if (teaserWidth < 481) {
        jQuery(".offer-block-row > .span-4").chunk(1).wrap('<div class="wrapper clearfix"></div>');
    }
    if (teaserWidth < 681) {
        jQuery(".offer-block-row > .span-4").chunk(2).wrap('<div class="wrapper clearfix"></div>');
    }
    if (teaserWidth > 680) {
        jQuery(".offer-block-row > .span-4").chunk(3).wrap('<div class="wrapper clearfix"></div>');
    }

    moveBanner();
    prevnext();


    var pwindow = jQuery(window).width();

    if (pwindow < 668) {
        //jQuery('.accom-item-data p').css('display', 'none');
        jQuery('.show-more-info').click(function () {
            jQuery(this).siblings('p.intro-para').toggleClass('show');
            jQuery(this).text(function (i, text) {
                return text === "Show more info" ? "Show less info" : "Show more info";
            });
            return false;
        });
    }

});




// Ships

jQuery(function () {

    var $carousel = jQuery('.cabin-details').slick({
        slidesToShow: 1,
        slidesToScroll: 1,
        infinite: true,
        autoplay: false,
        dots: false,
				
        nextArrow: "<div class=\"slick-prev\"><i class=\"fa fa-chevron-right\" aria-hidden=\"true\"></i></div>",
        prevArrow: "<div class=\"slick-next\"><i class=\"fa fa-chevron-left\" aria-hidden=\"true\"></i></div>",
        responsive: [
                {
                    breakpoint: 1160,
                    settings: {
                        arrows: true
                    }
                }
        ]
    });
    var select = jQuery("#select");
    jQuery("#select").change(function () {

        jQuery(".cabin-details").addClass( "visible" );

        var goTo = select.prop("selectedIndex");
        $carousel.slick("goTo", goTo-1);
    });
});

// Wait for the DOM to be ready
jQuery(function () {
    // Initialize form validation on the registration form.
    // It has the name attribute "registration"
    jQuery("form[name='searchForm']").validate({
        // Specify validation rules
        rules: {
            // The key name on the left side is the name attribute
            // of an input field. Validation rules are defined
            // on the right side
            q: "required"

        },
        // Specify validation error messages
        messages: {
            q: "Please enter a search query"

        },
        // Make sure the form is submitted to the destination defined
        // in the "action" attribute of the form when valid
        submitHandler: function (form) {
            form.submit();
        }
    });

    jQuery("form[name='searchFormMobile']").validate({
        // Specify validation rules
        rules: {
            // The key name on the left side is the name attribute
            // of an input field. Validation rules are defined
            // on the right side
            q: "required"

        },
        // Specify validation error messages
        messages: {
            q: "Please enter your query"

        },
        // Make sure the form is submitted to the destination defined
        // in the "action" attribute of the form when valid
        submitHandler: function (form) {
            form.submit();
        }
    });
});


jQuery(window).on('load resize', function () {
    moveBanner();
    prevnext();
    
    jQuery('.holiday-teaser').conformity({
        "mode": "height"
    });

    jQuery('.accom-teaser').conformity({
        "mode": "height"
    });  
});


/*
    Image for `.site-strip__ship-gallery`

    If `.tabsblocktype` precedes `.carouselblocktype`,
    then show the image
*/

jQuery(function() {
    var block = document.querySelector(".tabsblocktype");

    if (block) {
        block.nextSibling.classList.contains("carouselblocktype") ?
            block.classList.add("js-show-image") : "";
    }
});

;

$(document).ready(function () {

    $('.halfwidthcarouselblocktype .banner-block__half').slick({
        centerMode: false,
        infinite: true,
        variableWidth: false,
        adaptiveHeight: false,
        slidesToShow: 1,
        slidesToScroll: 1,
        autoplay: true,
        autoplaySpeed: 2000,
        dots: true,
        responsive: [
            {
                breakpoint: 1024,
                settings: {
                    //infinite: false,
                    variableWidth: false,
                    centerMode: false
                }
            }
        ]
    });


    $('.halfwidthcarouselblocktype .ship-info').conformity({
        "mode": "height"
    });

});;

/*
    HS-2955
    ----------
    Basic JS to make form elements into 2 columns.
    It wraps every label and following input into it's own
    unique div for layout purposes.
*/

$(function () {
    var twoCols = $(".form--two-columns");

    if (twoCols) {
        $('.FormAddressElement .Form__Element__Caption').each(function () {
            $(this).next().addBack().wrapAll('<div class="form__address"></div>');
        });
    }
});;
