{"version":3,"sources":["jquery.fancybox.js","_1900-620-intro-cards.js"],"names":["e","t","n","r","s","o","u","a","require","i","Error","f","exports","call","length","1","module","global","factory","document","w","window","this","noGlobal","isFunction","obj","nodeType","item","isWindow","arr","getProto","Object","getPrototypeOf","slice","flat","array","concat","apply","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","support","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","rhtmlSuffix","jQuery","selector","context","fn","init","isArrayLike","nodeName","elem","name","toLowerCase","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","arguments","first","eq","last","even","grep","_elem","odd","len","j","end","sort","splice","extend","options","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","textContent","nodeValue","makeArray","results","inArray","isXMLDoc","namespace","namespaceURI","docElem","ownerDocument","documentElement","test","second","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","_i","pop","whitespace","rtrimCSS","RegExp","rcssescape","contains","b","bup","compareDocumentPosition","fcssescape","ch","asCodePoint","charCodeAt","escapeSelector","sel","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","preferredDoc","pushNative","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","identifier","attributes","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","unloadHandler","setDocument","inDisabledFieldset","addCombinator","disabled","dir","next","childNodes","els","find","seed","m","nid","match","groups","newSelector","newContext","exec","getElementById","id","getElementsByTagName","getElementsByClassName","testContext","scope","tokenize","toSelector","join","querySelectorAll","qsaError","removeAttribute","select","keys","cache","key","cacheLength","shift","markFunction","assert","el","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","webkitMatchesSelector","msMatchesSelector","subWindow","defaultView","top","addEventListener","getById","getElementsByName","disconnectedMatch","cssHas","querySelector","filter","attrId","getAttributeNode","tag","className","input","innerHTML","compare","sortDetached","expr","elements","matchesSelector","attr","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","outerCache","nodeIndex","start","parent","useCache","diff","firstChild","lastChild","pseudo","args","setFilters","idx","matched","not","matcher","compile","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","err","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","nextSibling","header","button","_matchIndexes","lt","gt","nth","radio","checkbox","file","password","image","submit","reset","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","matcherOut","preMap","postMap","preexisting","contexts","matcherIn","matcherFromGroupMatchers","elementMatchers","setMatchers","superMatcher","outermost","matchedCount","setMatched","contextBackup","byElement","dirrunsUnique","bySet","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","token","compiled","filters","unique","getText","isXML","selectors","until","truncate","is","siblings","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","rparentsprev","ready","parseHTML","guaranteedUnique","children","contents","prev","sibling","cur","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","_","flag","fire","locked","once","fired","firing","queue","firingIndex","memory","list","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","handler","special","mightThrow","that","TypeError","notifyWith","resolveWith","process","exceptionHook","rejectWith","getErrorHook","getStackHook","setTimeout","stateString","when","singleValue","updateFunc","resolveContexts","resolveValues","remaining","primary","rerrorNames","readyList","asyncError","console","warn","message","stack","readyException","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","attrs","dequeue","startLength","hooks","_queueHooks","unshift","stop","setter","clearQueue","count","defer","tmp","isHiddenWithinTree","style","display","isAttached","css","pnum","source","rcssNum","cssExpand","composed","getRootNode","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","showHide","show","values","body","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","div","createDocumentFragment","checkClone","cloneNode","noCloneChecked","defaultValue","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","rhtml","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","on","types","one","origFn","event","off","handleObjIn","eventHandle","events","handlers","namespaces","origType","elemData","create","handle","triggered","dispatch","delegateType","bindType","handleObj"],"mappings":"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","file":"1900-620-intro-cards.min.js","sourcesContent":["var $ = require('jquery');\r\n// ==================================================\r\n// fancyBox v3.1.20\r\n//\r\n// Licensed GPLv3 for open source use\r\n// or fancyBox Commercial License for commercial use\r\n//\r\n// http://fancyapps.com/fancybox/\r\n// Copyright 2017 fancyApps\r\n//\r\n// ==================================================\r\n;(function (window, document, $, undefined) {\r\n    'use strict';\r\n\r\n    // If there's no jQuery, fancyBox can't work\r\n    // =========================================\r\n\r\n    if ( !$ ) {\r\n        return;\r\n    }\r\n\r\n    // Check if fancyBox is already initialized\r\n    // ========================================\r\n\r\n    if ( $.fn.fancybox ) {\r\n\r\n        $.error('fancyBox already initialized');\r\n\r\n        return;\r\n    }\r\n\r\n    // Private default settings\r\n    // ========================\r\n\r\n    var defaults = {\r\n\r\n        // Enable infinite gallery navigation\r\n        loop : false,\r\n\r\n        // Space around image, ignored if zoomed-in or viewport smaller than 800px\r\n        margin : [44, 0],\r\n\r\n        // Horizontal space between slides\r\n        gutter : 50,\r\n\r\n        // Enable keyboard navigation\r\n        keyboard : true,\r\n\r\n        // Should display navigation arrows at the screen edges\r\n        arrows : true,\r\n\r\n        // Should display infobar (counter and arrows at the top)\r\n        infobar : false,\r\n\r\n        // Should display toolbar (buttons at the top)\r\n        toolbar : true,\r\n\r\n        // What buttons should appear in the top right corner.\r\n        // Buttons will be created using templates from `btnTpl` option\r\n        // and they will be placed into toolbar (class=\"fancybox-toolbar\"` element)\r\n        buttons : [\r\n            'slideShow',\r\n            'fullScreen',\r\n            'thumbs',\r\n            'close'\r\n        ],\r\n\r\n        // Detect \"idle\" time in seconds\r\n        idleTime : 4,\r\n\r\n        // Should display buttons at top right corner of the content\r\n        // If 'auto' - they will be created for content having type 'html', 'inline' or 'ajax'\r\n        // Use template from `btnTpl.smallBtn` for customization\r\n        smallBtn : 'auto',\r\n\r\n        // Disable right-click and use simple image protection for images\r\n        protect : false,\r\n\r\n        // Shortcut to make content \"modal\" - disable keyboard navigtion, hide buttons, etc\r\n        modal : false,\r\n\r\n        image : {\r\n\r\n            // Wait for images to load before displaying\r\n            // Requires predefined image dimensions\r\n            // If 'auto' - will zoom in thumbnail if 'width' and 'height' attributes are found\r\n            preload : \"auto\",\r\n\r\n        },\r\n\r\n        ajax : {\r\n\r\n            // Object containing settings for ajax request\r\n            settings : {\r\n\r\n                // This helps to indicate that request comes from the modal\r\n                // Feel free to change naming\r\n                data : {\r\n                    fancybox : true\r\n                }\r\n            }\r\n\r\n        },\r\n\r\n        iframe : {\r\n\r\n            // Iframe template\r\n            tpl : '<iframe id=\"fancybox-frame{rnd}\" name=\"fancybox-frame{rnd}\" class=\"fancybox-iframe\" frameborder=\"0\" vspace=\"0\" hspace=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen allowtransparency=\"true\" src=\"\"></iframe>',\r\n\r\n            // Preload iframe before displaying it\r\n            // This allows to calculate iframe content width and height\r\n            // (note: Due to \"Same Origin Policy\", you can't get cross domain data).\r\n            preload : true,\r\n\r\n            // Custom CSS styling for iframe wrapping element\r\n            // You can use this to set custom iframe dimensions\r\n            css : {},\r\n\r\n            // Iframe tag attributes\r\n            attr : {\r\n                scrolling : 'auto'\r\n            }\r\n\r\n        },\r\n\r\n        // Open/close animation type\r\n        // Possible values:\r\n        //   false            - disable\r\n        //   \"zoom\"           - zoom images from/to thumbnail\r\n        //   \"fade\"\r\n        //   \"zoom-in-out\"\r\n        //\r\n        animationEffect : \"zoom\",\r\n\r\n        // Duration in ms for open/close animation\r\n        animationDuration : 366,\r\n\r\n        // Should image change opacity while zooming\r\n        // If opacity is 'auto', then opacity will be changed if image and thumbnail have different aspect ratios\r\n        zoomOpacity : 'auto',\r\n\r\n        // Transition effect between slides\r\n        //\r\n        // Possible values:\r\n        //   false            - disable\r\n        //   \"fade'\r\n        //   \"slide'\r\n        //   \"circular'\r\n        //   \"tube'\r\n        //   \"zoom-in-out'\r\n        //   \"rotate'\r\n        //\r\n        transitionEffect : \"fade\",\r\n\r\n        // Duration in ms for transition animation\r\n        transitionDuration : 366,\r\n\r\n        // Custom CSS class for slide element\r\n        slideClass : '',\r\n\r\n        // Custom CSS class for layout\r\n        baseClass : '',\r\n\r\n        // Base template for layout\r\n        baseTpl\t:\r\n            '<div class=\"fancybox-container\" role=\"dialog\" tabindex=\"-1\">' +\r\n                '<div class=\"fancybox-bg\"></div>' +\r\n                '<div class=\"fancybox-inner\">' +\r\n                    '<div class=\"fancybox-infobar\">' +\r\n                        '<button data-fancybox-prev title=\"{{PREV}}\" class=\"fancybox-button fancybox-button--left\"></button>' +\r\n                        '<div class=\"fancybox-infobar__body\">' +\r\n                            '<span data-fancybox-index></span>&nbsp;/&nbsp;<span data-fancybox-count></span>' +\r\n                        '</div>' +\r\n                        '<button data-fancybox-next title=\"{{NEXT}}\" class=\"fancybox-button fancybox-button--right\"></button>' +\r\n                    '</div>' +\r\n                    '<div class=\"fancybox-toolbar\">' +\r\n                        '{{BUTTONS}}' +\r\n                    '</div>' +\r\n                    '<div class=\"fancybox-navigation\">' +\r\n                        '<button data-fancybox-prev title=\"{{PREV}}\" class=\"fancybox-arrow fancybox-arrow--left\" />' +\r\n                        '<button data-fancybox-next title=\"{{NEXT}}\" class=\"fancybox-arrow fancybox-arrow--right\" />' +\r\n                    '</div>' +\r\n                    '<div class=\"fancybox-stage\"></div>' +\r\n                    '<div class=\"fancybox-caption-wrap\">' +\r\n                        '<div class=\"fancybox-caption\"></div>' +\r\n                    '</div>' +\r\n                '</div>' +\r\n            '</div>',\r\n\r\n        // Loading indicator template\r\n        spinnerTpl : '<div class=\"fancybox-loading\"></div>',\r\n\r\n        // Error message template\r\n        errorTpl : '<div class=\"fancybox-error\"><p>{{ERROR}}<p></div>',\r\n\r\n        btnTpl : {\r\n            slideShow  : '<button data-fancybox-play class=\"fancybox-button fancybox-button--play\" title=\"{{PLAY_START}}\"></button>',\r\n            fullScreen : '<button data-fancybox-fullscreen class=\"fancybox-button fancybox-button--fullscreen\" title=\"{{FULL_SCREEN}}\"></button>',\r\n            thumbs     : '<button data-fancybox-thumbs class=\"fancybox-button fancybox-button--thumbs\" title=\"{{THUMBS}}\"></button>',\r\n            close      : '<button data-fancybox-close class=\"fancybox-button fancybox-button--close\" title=\"{{CLOSE}}\"></button>',\r\n\r\n            // This small close button will be appended to your html/inline/ajax content by default,\r\n            // if \"smallBtn\" option is not set to false\r\n            smallBtn   : '<button data-fancybox-close class=\"fancybox-close-small\" title=\"{{CLOSE}}\"></button>'\r\n        },\r\n\r\n        // Container is injected into this element\r\n        parentEl : 'body',\r\n\r\n\r\n        // Focus handling\r\n        // ==============\r\n\r\n        // Try to focus on the first focusable element after opening\r\n        autoFocus : true,\r\n\r\n        // Put focus back to active element after closing\r\n        backFocus : true,\r\n\r\n        // Do not let user to focus on element outside modal content\r\n        trapFocus : true,\r\n\r\n\r\n        // Module specific options\r\n        // =======================\r\n\r\n        fullScreen : {\r\n            autoStart : false,\r\n        },\r\n\r\n        touch : {\r\n            vertical : true,  // Allow to drag content vertically\r\n            momentum : true   // Continue movement after releasing mouse/touch when panning\r\n        },\r\n\r\n        // Hash value when initializing manually,\r\n        // set `false` to disable hash change\r\n        hash : null,\r\n\r\n        // Customize or add new media types\r\n        // Example:\r\n        /*\r\n        media : {\r\n            youtube : {\r\n                params : {\r\n                    autoplay : 0\r\n                }\r\n            }\r\n        }\r\n        */\r\n        media : {},\r\n\r\n        slideShow : {\r\n            autoStart : false,\r\n            speed     : 4000\r\n        },\r\n\r\n        thumbs : {\r\n            autoStart   : false,   // Display thumbnails on opening\r\n            hideOnClose : true     // Hide thumbnail grid when closing animation starts\r\n        },\r\n\r\n        // Callbacks\r\n        //==========\r\n\r\n        // See Documentation/API/Events for more information\r\n        // Example:\r\n        /*\r\n            afterShow: function( instance, current ) {\r\n                 console.info( 'Clicked element:' );\r\n                 console.info( current.opts.$orig );\r\n            }\r\n        */\r\n\r\n        onInit       : $.noop,  // When instance has been initialized\r\n\r\n        beforeLoad   : $.noop,  // Before the content of a slide is being loaded\r\n        afterLoad    : $.noop,  // When the content of a slide is done loading\r\n\r\n        beforeShow   : $.noop,  // Before open animation starts\r\n        afterShow    : $.noop,  // When content is done loading and animating\r\n\r\n        beforeClose  : $.noop,  // Before the instance attempts to close. Return false to cancel the close.\r\n        afterClose   : $.noop,  // After instance has been closed\r\n\r\n        onActivate   : $.noop,  // When instance is brought to front\r\n        onDeactivate : $.noop,  // When other instance has been activated\r\n\r\n\r\n        // Interaction\r\n        // ===========\r\n\r\n        // Use options below to customize taken action when user clicks or double clicks on the fancyBox area,\r\n        // each option can be string or method that returns value.\r\n        //\r\n        // Possible values:\r\n        //   \"close\"           - close instance\r\n        //   \"next\"            - move to next gallery item\r\n        //   \"nextOrClose\"     - move to next gallery item or close if gallery has only one item\r\n        //   \"toggleControls\"  - show/hide controls\r\n        //   \"zoom\"            - zoom image (if loaded)\r\n        //   false             - do nothing\r\n\r\n        // Clicked on the content\r\n        clickContent : function( current, event ) {\r\n            return current.type === 'image' ? 'zoom' : false;\r\n        },\r\n\r\n        // Clicked on the slide\r\n        clickSlide : 'close',\r\n\r\n        // Clicked on the background (backdrop) element\r\n        clickOutside : 'close',\r\n\r\n        // Same as previous two, but for double click\r\n        dblclickContent : false,\r\n        dblclickSlide   : false,\r\n        dblclickOutside : false,\r\n\r\n\r\n        // Custom options when mobile device is detected\r\n        // =============================================\r\n\r\n        mobile : {\r\n            clickContent : function( current, event ) {\r\n                return current.type === 'image' ? 'toggleControls' : false;\r\n            },\r\n            clickSlide : function( current, event ) {\r\n                return current.type === 'image' ? 'toggleControls' : \"close\";\r\n            },\r\n            dblclickContent : function( current, event ) {\r\n                return current.type === 'image' ? 'zoom' : false;\r\n            },\r\n            dblclickSlide : function( current, event ) {\r\n                return current.type === 'image' ? 'zoom' : false;\r\n            }\r\n        },\r\n\r\n\r\n        // Internationalization\r\n        // ============\r\n\r\n        lang : 'en',\r\n        i18n : {\r\n            'en' : {\r\n                CLOSE       : 'Close',\r\n                NEXT        : 'Next',\r\n                PREV        : 'Previous',\r\n                ERROR       : 'The requested content cannot be loaded. <br/> Please try again later.',\r\n                PLAY_START  : 'Start slideshow',\r\n                PLAY_STOP   : 'Pause slideshow',\r\n                FULL_SCREEN : 'Full screen',\r\n                THUMBS      : 'Thumbnails'\r\n            },\r\n            'de' : {\r\n                CLOSE       : 'Schliessen',\r\n                NEXT        : 'Weiter',\r\n                PREV        : 'Zurück',\r\n                ERROR       : 'Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es später nochmal.',\r\n                PLAY_START  : 'Diaschau starten',\r\n                PLAY_STOP   : 'Diaschau beenden',\r\n                FULL_SCREEN : 'Vollbild',\r\n                THUMBS      : 'Vorschaubilder'\r\n            }\r\n        }\r\n\r\n    };\r\n\r\n    // Few useful variables and methods\r\n    // ================================\r\n\r\n    var $W = $(window);\r\n    var $D = $(document);\r\n\r\n    var called = 0;\r\n\r\n\r\n    // Check if an object is a jQuery object and not a native JavaScript object\r\n    // ========================================================================\r\n\r\n    var isQuery = function ( obj ) {\r\n        return obj && obj.hasOwnProperty && obj instanceof $;\r\n    };\r\n\r\n\r\n    // Handle multiple browsers for \"requestAnimationFrame\" and \"cancelAnimationFrame\"\r\n    // ===============================================================================\r\n\r\n    var requestAFrame = (function () {\r\n        return window.requestAnimationFrame ||\r\n                window.webkitRequestAnimationFrame ||\r\n                window.mozRequestAnimationFrame ||\r\n                window.oRequestAnimationFrame ||\r\n                // if all else fails, use setTimeout\r\n                function (callback) {\r\n                    return window.setTimeout(callback, 1000 / 60);\r\n                };\r\n    })();\r\n\r\n\r\n    // Detect the supported transition-end event property name\r\n    // =======================================================\r\n\r\n    var transitionEnd = (function () {\r\n        var t, el = document.createElement(\"fakeelement\");\r\n\r\n        var transitions = {\r\n            \"transition\"      : \"transitionend\",\r\n            \"OTransition\"     : \"oTransitionEnd\",\r\n            \"MozTransition\"   : \"transitionend\",\r\n            \"WebkitTransition\": \"webkitTransitionEnd\"\r\n        };\r\n\r\n        for (t in transitions) {\r\n            if (el.style[t] !== undefined){\r\n                return transitions[t];\r\n            }\r\n        }\r\n    })();\r\n\r\n\r\n    // Force redraw on an element.\r\n    // This helps in cases where the browser doesn't redraw an updated element properly.\r\n    // =================================================================================\r\n\r\n    var forceRedraw = function( $el ) {\r\n        return ( $el && $el.length && $el[0].offsetHeight );\r\n    };\r\n\r\n\r\n    // Class definition\r\n    // ================\r\n\r\n    var FancyBox = function( content, opts, index ) {\r\n        var self = this;\r\n\r\n        self.opts  = $.extend( true, { index : index }, defaults, opts || {} );\r\n\r\n        // Exclude buttons option from deep merging\r\n        if ( opts && $.isArray( opts.buttons ) ) {\r\n            self.opts.buttons = opts.buttons;\r\n        }\r\n\r\n        self.id    = self.opts.id || ++called;\r\n        self.group = [];\r\n\r\n        self.currIndex = parseInt( self.opts.index, 10 ) || 0;\r\n        self.prevIndex = null;\r\n\r\n        self.prevPos = null;\r\n        self.currPos = 0;\r\n\r\n        self.firstRun = null;\r\n\r\n        // Create group elements from original item collection\r\n        self.createGroup( content );\r\n\r\n        if ( !self.group.length ) {\r\n            return;\r\n        }\r\n\r\n        // Save last active element and current scroll position\r\n        self.$lastFocus = $(document.activeElement).blur();\r\n\r\n        // Collection of gallery objects\r\n        self.slides = {};\r\n\r\n        self.init( content );\r\n\r\n    };\r\n\r\n    $.extend(FancyBox.prototype, {\r\n\r\n        // Create DOM structure\r\n        // ====================\r\n\r\n        init : function() {\r\n            var self = this;\r\n\r\n            var testWidth, $container, buttonStr;\r\n\r\n            var firstItemOpts = self.group[ self.currIndex ].opts;\r\n\r\n            self.scrollTop  = $D.scrollTop();\r\n            self.scrollLeft = $D.scrollLeft();\r\n\r\n\r\n            // Hide scrollbars\r\n            // ===============\r\n\r\n            if ( !$.fancybox.getInstance() && !$.fancybox.isMobile && $( 'body' ).css('overflow') !== 'hidden' ) {\r\n                testWidth = $( 'body' ).width();\r\n\r\n                $( 'html' ).addClass( 'fancybox-enabled' );\r\n\r\n                // Compare body width after applying \"overflow: hidden\"\r\n                testWidth = $( 'body' ).width() - testWidth;\r\n\r\n                // If width has changed - compensate missing scrollbars by adding right margin\r\n                if ( testWidth > 1 ) {\r\n                    $( 'head' ).append( '<style id=\"fancybox-style-noscroll\" type=\"text/css\">.compensate-for-scrollbar, .fancybox-enabled body { margin-right: ' + testWidth + 'px; }</style>' );\r\n                }\r\n            }\r\n\r\n\r\n            // Build html markup and set references\r\n            // ====================================\r\n\r\n            // Build html code for buttons and insert into main template\r\n            buttonStr = '';\r\n\r\n            $.each( firstItemOpts.buttons, function( index, value ) {\r\n                buttonStr += ( firstItemOpts.btnTpl[ value ] || '' );\r\n            });\r\n\r\n            // Create markup from base template, it will be initially hidden to\r\n            // avoid unnecessary work like painting while initializing is not complete\r\n            $container = $( self.translate( self, firstItemOpts.baseTpl.replace( '\\{\\{BUTTONS\\}\\}', buttonStr ) ) )\r\n                .addClass( 'fancybox-is-hidden' )\r\n                .attr('id', 'fancybox-container-' + self.id)\r\n                .addClass( firstItemOpts.baseClass )\r\n                .data( 'FancyBox', self )\r\n                .prependTo( firstItemOpts.parentEl );\r\n\r\n            // Create object holding references to jQuery wrapped nodes\r\n            self.$refs = {\r\n                container : $container\r\n            };\r\n\r\n            [ 'bg', 'inner', 'infobar', 'toolbar', 'stage', 'caption' ].forEach(function(item) {\r\n                self.$refs[ item ] = $container.find( '.fancybox-' + item );\r\n            });\r\n\r\n            // Check for redundant elements\r\n            if ( !firstItemOpts.arrows || self.group.length < 2 ) {\r\n                $container.find('.fancybox-navigation').remove();\r\n            }\r\n\r\n            if ( !firstItemOpts.infobar ) {\r\n                self.$refs.infobar.remove();\r\n            }\r\n\r\n            if ( !firstItemOpts.toolbar ) {\r\n                self.$refs.toolbar.remove();\r\n            }\r\n\r\n            self.trigger( 'onInit' );\r\n\r\n            // Bring to front and enable events\r\n            self.activate();\r\n\r\n            // Build slides, load and reveal content\r\n            self.jumpTo( self.currIndex );\r\n        },\r\n\r\n\r\n        // Simple i18n support - replaces object keys found in template\r\n        // with corresponding values\r\n        // ============================================================\r\n\r\n        translate : function( obj, str ) {\r\n            var arr = obj.opts.i18n[ obj.opts.lang ];\r\n\r\n            return str.replace(/\\{\\{(\\w+)\\}\\}/g, function(match, n) {\r\n                var value = arr[n];\r\n\r\n                if ( value === undefined ) {\r\n                    return match;\r\n                }\r\n\r\n                return value;\r\n            });\r\n        },\r\n\r\n        // Create array of gally item objects\r\n        // Check if each object has valid type and content\r\n        // ===============================================\r\n\r\n        createGroup : function ( content ) {\r\n            var self  = this;\r\n            var items = $.makeArray( content );\r\n\r\n            $.each(items, function( i, item ) {\r\n                var obj  = {},\r\n                    opts = {},\r\n                    data = [],\r\n                    $item,\r\n                    type,\r\n                    src,\r\n                    srcParts;\r\n\r\n                // Step 1 - Make sure we have an object\r\n                // ====================================\r\n\r\n                if ( $.isPlainObject( item ) ) {\r\n\r\n                    // We probably have manual usage here, something like\r\n                    // $.fancybox.open( [ { src : \"image.jpg\", type : \"image\" } ] )\r\n\r\n                    obj  = item;\r\n                    opts = item.opts || item;\r\n\r\n                } else if ( $.type( item ) === 'object' && $( item ).length ) {\r\n\r\n                    // Here we propbably have jQuery collection returned by some selector\r\n\r\n                    $item = $( item );\r\n                    data  = $item.data();\r\n\r\n                    opts = 'options' in data ? data.options : {};\r\n                    opts = $.type( opts ) === 'object' ? opts : {};\r\n\r\n                    obj.src  = 'src' in data ? data.src : ( opts.src || $item.attr( 'href' ) );\r\n\r\n                    [ 'width', 'height', 'thumb', 'type', 'filter' ].forEach(function(item) {\r\n                        if ( item in data ) {\r\n                            opts[ item ] = data[ item ];\r\n                        }\r\n                    });\r\n\r\n                    if ( 'srcset' in data ) {\r\n                        opts.image = { srcset : data.srcset };\r\n                    }\r\n\r\n                    opts.$orig = $item;\r\n\r\n                    if ( !obj.type && !obj.src ) {\r\n                        obj.type = 'inline';\r\n                        obj.src  = item;\r\n                    }\r\n\r\n                } else {\r\n\r\n                    // Assume we have a simple html code, for example:\r\n                    // $.fancybox.open( '<div><h1>Hi!</h1></div>' );\r\n\r\n                    obj = {\r\n                        type : 'html',\r\n                        src  : item + ''\r\n                    };\r\n\r\n                }\r\n\r\n                // Each gallery object has full collection of options\r\n                obj.opts = $.extend( true, {}, self.opts, opts );\r\n\r\n                if ( $.fancybox.isMobile ) {\r\n                    obj.opts = $.extend( true, {}, obj.opts, obj.opts.mobile );\r\n                }\r\n\r\n\r\n                // Step 2 - Make sure we have content type, if not - try to guess\r\n                // ==============================================================\r\n\r\n                type = obj.type || obj.opts.type;\r\n                src  = obj.src || '';\r\n\r\n                if ( !type && src ) {\r\n                    if ( src.match(/(^data:image\\/[a-z0-9+\\/=]*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\\?|#).*)?$)/i) ) {\r\n                        type = 'image';\r\n\r\n                    } else if ( src.match(/\\.(pdf)((\\?|#).*)?$/i) ) {\r\n                        type = 'pdf';\r\n\r\n                    } else if ( src.charAt(0) === '#' ) {\r\n                        type = 'inline';\r\n                    }\r\n                }\r\n\r\n                obj.type = type;\r\n\r\n\r\n                // Step 3 - Some adjustments\r\n                // =========================\r\n\r\n                obj.index = self.group.length;\r\n\r\n                // Check if $orig and $thumb objects exist\r\n                if ( obj.opts.$orig && !obj.opts.$orig.length ) {\r\n                    delete obj.opts.$orig;\r\n                }\r\n\r\n                if ( !obj.opts.$thumb && obj.opts.$orig ) {\r\n                    obj.opts.$thumb = obj.opts.$orig.find( 'img:first' );\r\n                }\r\n\r\n                if ( obj.opts.$thumb && !obj.opts.$thumb.length ) {\r\n                    delete obj.opts.$thumb;\r\n                }\r\n\r\n                // Caption is a \"special\" option, it can be passed as a method\r\n                if ( $.type( obj.opts.caption ) === 'function' ) {\r\n                    obj.opts.caption = obj.opts.caption.apply( item, [ self, obj ] );\r\n\r\n                } else if ( 'caption' in data ) {\r\n                    obj.opts.caption = data.caption;\r\n                }\r\n\r\n                // Make sure we have caption as a string\r\n                obj.opts.caption = obj.opts.caption === undefined ? '' : obj.opts.caption + '';\r\n\r\n                // Check if url contains \"filter\" used to filter the content\r\n                // Example: \"ajax.html #something\"\r\n                if ( type === 'ajax' ) {\r\n                    srcParts = src.split(/\\s+/, 2);\r\n\r\n                    if ( srcParts.length > 1 ) {\r\n                        obj.src = srcParts.shift();\r\n\r\n                        obj.opts.filter = srcParts.shift();\r\n                    }\r\n                }\r\n\r\n                if ( obj.opts.smallBtn == 'auto' ) {\r\n\r\n                    if ( $.inArray( type, ['html', 'inline', 'ajax'] ) > -1 ) {\r\n                        obj.opts.toolbar  = false;\r\n                        obj.opts.smallBtn = true;\r\n\r\n                    } else {\r\n                        obj.opts.smallBtn = false;\r\n                    }\r\n\r\n                }\r\n\r\n                // If the type is \"pdf\", then simply load file into iframe\r\n                if ( type === 'pdf' ) {\r\n                    obj.type = 'iframe';\r\n\r\n                    obj.opts.iframe.preload = false;\r\n                }\r\n\r\n                // Hide all buttons and disable interactivity for modal items\r\n                if ( obj.opts.modal ) {\r\n\r\n                    obj.opts = $.extend(true, obj.opts, {\r\n                        // Remove buttons\r\n                        infobar : 0,\r\n                        toolbar : 0,\r\n\r\n                        smallBtn : 0,\r\n\r\n                        // Disable keyboard navigation\r\n                        keyboard : 0,\r\n\r\n                        // Disable some modules\r\n                        slideShow  : 0,\r\n                        fullScreen : 0,\r\n                        thumbs     : 0,\r\n                        touch      : 0,\r\n\r\n                        // Disable click event handlers\r\n                        clickContent    : false,\r\n                        clickSlide      : false,\r\n                        clickOutside    : false,\r\n                        dblclickContent : false,\r\n                        dblclickSlide   : false,\r\n                        dblclickOutside : false\r\n                    });\r\n\r\n                }\r\n\r\n                // Step 4 - Add processed object to group\r\n                // ======================================\r\n\r\n                self.group.push( obj );\r\n\r\n            });\r\n\r\n        },\r\n\r\n\r\n        // Attach an event handler functions for:\r\n        //   - navigation buttons\r\n        //   - browser scrolling, resizing;\r\n        //   - focusing\r\n        //   - keyboard\r\n        //   - detect idle\r\n        // ======================================\r\n\r\n        addEvents : function() {\r\n            var self = this;\r\n\r\n            self.removeEvents();\r\n\r\n            // Make navigation elements clickable\r\n            self.$refs.container.on('click.fb-close', '[data-fancybox-close]', function(e) {\r\n                e.stopPropagation();\r\n                e.preventDefault();\r\n\r\n                self.close( e );\r\n\r\n            }).on( 'click.fb-prev touchend.fb-prev', '[data-fancybox-prev]', function(e) {\r\n                e.stopPropagation();\r\n                e.preventDefault();\r\n\r\n                self.previous();\r\n\r\n            }).on( 'click.fb-next touchend.fb-next', '[data-fancybox-next]', function(e) {\r\n                e.stopPropagation();\r\n                e.preventDefault();\r\n\r\n                self.next();\r\n\r\n            });\r\n\r\n\r\n            // Handle page scrolling and browser resizing\r\n            $W.on('orientationchange.fb resize.fb', function(e) {\r\n\r\n                if ( e && e.originalEvent && e.originalEvent.type === \"resize\" ) {\r\n\r\n                    requestAFrame(function() {\r\n                        self.update();\r\n                    });\r\n\r\n                } else {\r\n\r\n                    self.$refs.stage.hide();\r\n\r\n                    setTimeout(function() {\r\n                        self.$refs.stage.show();\r\n\r\n                        self.update();\r\n                    }, 500);\r\n\r\n                }\r\n\r\n            });\r\n\r\n            // Trap keyboard focus inside of the modal, so the user does not accidentally tab outside of the modal\r\n            // (a.k.a. \"escaping the modal\")\r\n            $D.on('focusin.fb', function(e) {\r\n                var instance = $.fancybox ? $.fancybox.getInstance() : null;\r\n\r\n                if ( instance.isClosing || !instance.current || !instance.current.opts.trapFocus || $( e.target ).hasClass( 'fancybox-container' ) || $( e.target ).is( document ) ) {\r\n                    return;\r\n                }\r\n\r\n                if ( instance && $( e.target ).css( 'position' ) !== 'fixed' && !instance.$refs.container.has( e.target ).length ) {\r\n                    e.stopPropagation();\r\n\r\n                    instance.focus();\r\n\r\n                    // Sometimes page gets scrolled, set it back\r\n                    $W.scrollTop( self.scrollTop ).scrollLeft( self.scrollLeft );\r\n                }\r\n            });\r\n\r\n\r\n            // Enable keyboard navigation\r\n            $D.on('keydown.fb', function (e) {\r\n                var current = self.current,\r\n                    keycode = e.keyCode || e.which;\r\n\r\n                if ( !current || !current.opts.keyboard ) {\r\n                    return;\r\n                }\r\n\r\n                if ( $(e.target).is('input') || $(e.target).is('textarea') ) {\r\n                    return;\r\n                }\r\n\r\n                // Backspace and Esc keys\r\n                if ( keycode === 8 || keycode === 27 ) {\r\n                    e.preventDefault();\r\n\r\n                    self.close( e );\r\n\r\n                    return;\r\n                }\r\n\r\n                // Left arrow and Up arrow\r\n                if ( keycode === 37 || keycode === 38 ) {\r\n                    e.preventDefault();\r\n\r\n                    self.previous();\r\n\r\n                    return;\r\n                }\r\n\r\n                // Righ arrow and Down arrow\r\n                if ( keycode === 39 || keycode === 40 ) {\r\n                    e.preventDefault();\r\n\r\n                    self.next();\r\n\r\n                    return;\r\n                }\r\n\r\n                self.trigger('afterKeydown', e, keycode);\r\n            });\r\n\r\n\r\n            // Hide controls after some inactivity period\r\n            if ( self.group[ self.currIndex ].opts.idleTime ) {\r\n                self.idleSecondsCounter = 0;\r\n\r\n                $D.on('mousemove.fb-idle mouseenter.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle', function() {\r\n                    self.idleSecondsCounter = 0;\r\n\r\n                    if ( self.isIdle ) {\r\n                        self.showControls();\r\n                    }\r\n\r\n                    self.isIdle = false;\r\n                });\r\n\r\n                self.idleInterval = window.setInterval(function() {\r\n\r\n                    self.idleSecondsCounter++;\r\n\r\n                    if ( self.idleSecondsCounter >= self.group[ self.currIndex ].opts.idleTime ) {\r\n                        self.isIdle = true;\r\n                        self.idleSecondsCounter = 0;\r\n\r\n                        self.hideControls();\r\n                    }\r\n\r\n                }, 1000);\r\n            }\r\n\r\n        },\r\n\r\n\r\n        // Remove events added by the core\r\n        // ===============================\r\n\r\n        removeEvents : function () {\r\n            var self = this;\r\n\r\n            $W.off( 'orientationchange.fb resize.fb' );\r\n            $D.off( 'focusin.fb keydown.fb .fb-idle' );\r\n\r\n            this.$refs.container.off( '.fb-close .fb-prev .fb-next' );\r\n\r\n            if ( self.idleInterval ) {\r\n                window.clearInterval( self.idleInterval );\r\n\r\n                self.idleInterval = null;\r\n            }\r\n        },\r\n\r\n\r\n        // Change to previous gallery item\r\n        // ===============================\r\n\r\n        previous : function( duration ) {\r\n            return this.jumpTo( this.currPos - 1, duration );\r\n        },\r\n\r\n\r\n        // Change to next gallery item\r\n        // ===========================\r\n\r\n        next : function( duration ) {\r\n            return this.jumpTo( this.currPos + 1, duration );\r\n        },\r\n\r\n\r\n        // Switch to selected gallery item\r\n        // ===============================\r\n\r\n        jumpTo : function ( pos, duration, slide ) {\r\n            var self = this,\r\n                firstRun,\r\n                loop,\r\n                current,\r\n                previous,\r\n                canvasWidth,\r\n                currentPos,\r\n                transitionProps;\r\n\r\n            var groupLen = self.group.length;\r\n\r\n            if ( self.isSliding || self.isClosing || ( self.isAnimating && self.firstRun ) ) {\r\n                return;\r\n            }\r\n\r\n            pos  = parseInt( pos, 10 );\r\n            loop = self.current ? self.current.opts.loop : self.opts.loop;\r\n\r\n            if ( !loop && ( pos < 0 || pos >= groupLen ) ) {\r\n                return false;\r\n            }\r\n\r\n            firstRun = self.firstRun = ( self.firstRun === null );\r\n\r\n            if ( groupLen < 2 && !firstRun && !!self.isSliding ) {\r\n                return;\r\n            }\r\n\r\n            previous = self.current;\r\n\r\n            self.prevIndex = self.currIndex;\r\n            self.prevPos   = self.currPos;\r\n\r\n            // Create slides\r\n            current = self.createSlide( pos );\r\n\r\n            if ( groupLen > 1 ) {\r\n                if ( loop || current.index > 0 ) {\r\n                    self.createSlide( pos - 1 );\r\n                }\r\n\r\n                if ( loop || current.index < groupLen - 1 ) {\r\n                    self.createSlide( pos + 1 );\r\n                }\r\n            }\r\n\r\n            self.current   = current;\r\n            self.currIndex = current.index;\r\n            self.currPos   = current.pos;\r\n\r\n            self.trigger( 'beforeShow', firstRun );\r\n\r\n            self.updateControls();\r\n\r\n            currentPos = $.fancybox.getTranslate( current.$slide );\r\n\r\n            current.isMoved        = ( currentPos.left !== 0 || currentPos.top !== 0 ) && !current.$slide.hasClass( 'fancybox-animated' );\r\n            current.forcedDuration = undefined;\r\n\r\n            if ( $.isNumeric( duration ) ) {\r\n                current.forcedDuration = duration;\r\n            } else {\r\n                duration = current.opts[ firstRun ? 'animationDuration' : 'transitionDuration' ];\r\n            }\r\n\r\n            duration = parseInt( duration, 10 );\r\n\r\n            // Fresh start - reveal container, current slide and start loading content\r\n            if ( firstRun ) {\r\n\r\n                if ( current.opts.animationEffect && duration ) {\r\n                    self.$refs.container.css( 'transition-duration', duration + 'ms' );\r\n                }\r\n\r\n                self.$refs.container.removeClass( 'fancybox-is-hidden' );\r\n\r\n                forceRedraw( self.$refs.container );\r\n\r\n                self.$refs.container.addClass( 'fancybox-is-open' );\r\n\r\n                // Make first slide visible (to display loading icon, if needed)\r\n                current.$slide.addClass( 'fancybox-slide--current' );\r\n\r\n                self.loadSlide( current );\r\n\r\n                self.preload();\r\n\r\n                return;\r\n            }\r\n\r\n            // Clean up\r\n            $.each(self.slides, function( index, slide ) {\r\n                $.fancybox.stop( slide.$slide );\r\n            });\r\n\r\n            // Make current that slide is visible even if content is still loading\r\n            current.$slide.removeClass( 'fancybox-slide--next fancybox-slide--previous' ).addClass( 'fancybox-slide--current' );\r\n\r\n            // If slides have been dragged, animate them to correct position\r\n            if ( current.isMoved ) {\r\n                canvasWidth = Math.round( current.$slide.width() );\r\n\r\n                $.each(self.slides, function( index, slide ) {\r\n                    var pos = slide.pos - current.pos;\r\n\r\n                    $.fancybox.animate( slide.$slide, {\r\n                        top  : 0,\r\n                        left : ( pos * canvasWidth ) + ( pos * slide.opts.gutter )\r\n                    }, duration, function() {\r\n\r\n                        slide.$slide.removeAttr('style').removeClass( 'fancybox-slide--next fancybox-slide--previous' );\r\n\r\n                        if ( slide.pos === self.currPos ) {\r\n                            current.isMoved = false;\r\n\r\n                            self.complete();\r\n                        }\r\n                    });\r\n                });\r\n\r\n            } else {\r\n                self.$refs.stage.children().removeAttr( 'style' );\r\n            }\r\n\r\n            // Start transition that reveals current content\r\n            // or wait when it will be loaded\r\n\r\n            if ( current.isLoaded ) {\r\n                self.revealContent( current );\r\n\r\n            } else {\r\n                self.loadSlide( current );\r\n            }\r\n\r\n            self.preload();\r\n\r\n            if ( previous.pos === current.pos ) {\r\n                return;\r\n            }\r\n\r\n            // Handle previous slide\r\n            // =====================\r\n\r\n            transitionProps = 'fancybox-slide--' + ( previous.pos > current.pos ? 'next' : 'previous' );\r\n\r\n            previous.$slide.removeClass( 'fancybox-slide--complete fancybox-slide--current fancybox-slide--next fancybox-slide--previous' );\r\n\r\n            previous.isComplete = false;\r\n\r\n            if ( !duration || ( !current.isMoved && !current.opts.transitionEffect ) ) {\r\n                return;\r\n            }\r\n\r\n            if ( current.isMoved ) {\r\n                previous.$slide.addClass( transitionProps );\r\n\r\n            } else {\r\n\r\n                transitionProps = 'fancybox-animated ' + transitionProps + ' fancybox-fx-' + current.opts.transitionEffect;\r\n\r\n                $.fancybox.animate( previous.$slide, transitionProps, duration, function() {\r\n                    previous.$slide.removeClass( transitionProps ).removeAttr( 'style' );\r\n                });\r\n\r\n            }\r\n\r\n        },\r\n\r\n\r\n        // Create new \"slide\" element\r\n        // These are gallery items  that are actually added to DOM\r\n        // =======================================================\r\n\r\n        createSlide : function( pos ) {\r\n\r\n            var self = this;\r\n            var $slide;\r\n            var index;\r\n\r\n            index = pos % self.group.length;\r\n            index = index < 0 ? self.group.length + index : index;\r\n\r\n            if ( !self.slides[ pos ] && self.group[ index ] ) {\r\n                $slide = $('<div class=\"fancybox-slide\"></div>').appendTo( self.$refs.stage );\r\n\r\n                self.slides[ pos ] = $.extend( true, {}, self.group[ index ], {\r\n                    pos      : pos,\r\n                    $slide   : $slide,\r\n                    isLoaded : false,\r\n                });\r\n\r\n                self.updateSlide( self.slides[ pos ] );\r\n            }\r\n\r\n            return self.slides[ pos ];\r\n        },\r\n\r\n\r\n        // Scale image to the actual size of the image\r\n        // ===========================================\r\n\r\n        scaleToActual : function( x, y, duration ) {\r\n\r\n            var self = this;\r\n\r\n            var current = self.current;\r\n            var $what   = current.$content;\r\n\r\n            var imgPos, posX, posY, scaleX, scaleY;\r\n\r\n            var canvasWidth  = parseInt( current.$slide.width(), 10 );\r\n            var canvasHeight = parseInt( current.$slide.height(), 10 );\r\n\r\n            var newImgWidth  = current.width;\r\n            var newImgHeight = current.height;\r\n\r\n            if ( !( current.type == 'image' && !current.hasError) || !$what || self.isAnimating) {\r\n                return;\r\n            }\r\n\r\n            $.fancybox.stop( $what );\r\n\r\n            self.isAnimating = true;\r\n\r\n            x = x === undefined ? canvasWidth  * 0.5  : x;\r\n            y = y === undefined ? canvasHeight * 0.5  : y;\r\n\r\n            imgPos = $.fancybox.getTranslate( $what );\r\n\r\n            scaleX  = newImgWidth  / imgPos.width;\r\n            scaleY  = newImgHeight / imgPos.height;\r\n\r\n            // Get center position for original image\r\n            posX = ( canvasWidth * 0.5  - newImgWidth * 0.5 );\r\n            posY = ( canvasHeight * 0.5 - newImgHeight * 0.5 );\r\n\r\n            // Make sure image does not move away from edges\r\n            if ( newImgWidth > canvasWidth ) {\r\n                posX = imgPos.left * scaleX - ( ( x * scaleX ) - x );\r\n\r\n                if ( posX > 0 ) {\r\n                    posX = 0;\r\n                }\r\n\r\n                if ( posX <  canvasWidth - newImgWidth ) {\r\n                    posX = canvasWidth - newImgWidth;\r\n                }\r\n            }\r\n\r\n            if ( newImgHeight > canvasHeight) {\r\n                posY = imgPos.top  * scaleY - ( ( y * scaleY ) - y );\r\n\r\n                if ( posY > 0 ) {\r\n                    posY = 0;\r\n                }\r\n\r\n                if ( posY <  canvasHeight - newImgHeight ) {\r\n                    posY = canvasHeight - newImgHeight;\r\n                }\r\n            }\r\n\r\n            self.updateCursor( newImgWidth, newImgHeight );\r\n\r\n            $.fancybox.animate( $what, {\r\n                top    : posY,\r\n                left   : posX,\r\n                scaleX : scaleX,\r\n                scaleY : scaleY\r\n            }, duration || 330, function() {\r\n                self.isAnimating = false;\r\n            });\r\n\r\n            // Stop slideshow\r\n            if ( self.SlideShow && self.SlideShow.isActive ) {\r\n                self.SlideShow.stop();\r\n            }\r\n        },\r\n\r\n\r\n        // Scale image to fit inside parent element\r\n        // ========================================\r\n\r\n        scaleToFit : function( duration ) {\r\n\r\n            var self = this;\r\n\r\n            var current = self.current;\r\n            var $what   = current.$content;\r\n            var end;\r\n\r\n            if ( !( current.type == 'image' && !current.hasError) || !$what || self.isAnimating ) {\r\n                return;\r\n            }\r\n\r\n            $.fancybox.stop( $what );\r\n\r\n            self.isAnimating = true;\r\n\r\n            end = self.getFitPos( current );\r\n\r\n            self.updateCursor( end.width, end.height );\r\n\r\n            $.fancybox.animate( $what, {\r\n                top    : end.top,\r\n                left   : end.left,\r\n                scaleX : end.width  / $what.width(),\r\n                scaleY : end.height / $what.height()\r\n            }, duration || 330, function() {\r\n                self.isAnimating = false;\r\n            });\r\n\r\n        },\r\n\r\n        // Calculate image size to fit inside viewport\r\n        // ===========================================\r\n\r\n        getFitPos : function( slide ) {\r\n            var self  = this;\r\n            var $what = slide.$content;\r\n\r\n            var imgWidth  = slide.width;\r\n            var imgHeight = slide.height;\r\n\r\n            var margin = slide.opts.margin;\r\n\r\n            var canvasWidth, canvasHeight, minRatio, width, height;\r\n\r\n            if ( !$what || !$what.length || ( !imgWidth && !imgHeight) ) {\r\n                return false;\r\n            }\r\n\r\n            // Convert \"margin to CSS style: [ top, right, bottom, left ]\r\n            if ( $.type( margin ) === \"number\" ) {\r\n                margin = [ margin, margin ];\r\n            }\r\n\r\n            if ( margin.length == 2 ) {\r\n                margin = [ margin[0], margin[1], margin[0], margin[1] ];\r\n            }\r\n\r\n            if ( $W.width() < 800 ) {\r\n                margin = [ 0, 0, 0, 0 ];\r\n            }\r\n\r\n            // We can not use $slide width here, because it can have different diemensions while in transiton\r\n            canvasWidth  = parseInt( self.$refs.stage.width(), 10 )  - ( margin[ 1 ] + margin[ 3 ] );\r\n            canvasHeight = parseInt( self.$refs.stage.height(), 10 ) - ( margin[ 0 ] + margin[ 2 ] );\r\n\r\n            minRatio = Math.min(1, canvasWidth / imgWidth, canvasHeight / imgHeight );\r\n\r\n            width  = Math.floor( minRatio * imgWidth );\r\n            height = Math.floor( minRatio * imgHeight );\r\n\r\n            // Use floor rounding to make sure it really fits\r\n            return {\r\n                top    : Math.floor( ( canvasHeight - height ) * 0.5 ) + margin[ 0 ],\r\n                left   : Math.floor( ( canvasWidth  - width )  * 0.5 ) + margin[ 3 ],\r\n                width  : width,\r\n                height : height\r\n            };\r\n\r\n        },\r\n\r\n\r\n        // Update position and content of all slides\r\n        // =========================================\r\n\r\n        update : function() {\r\n\r\n            var self = this;\r\n\r\n            $.each( self.slides, function( key, slide ) {\r\n                self.updateSlide( slide );\r\n            });\r\n\r\n        },\r\n\r\n\r\n        // Update slide position and scale content to fit\r\n        // ==============================================\r\n\r\n        updateSlide : function( slide ) {\r\n\r\n            var self  = this;\r\n            var $what = slide.$content;\r\n\r\n            if ( $what && ( slide.width || slide.height ) ) {\r\n                $.fancybox.stop( $what );\r\n\r\n                $.fancybox.setTranslate( $what, self.getFitPos( slide ) );\r\n\r\n                if ( slide.pos === self.currPos ) {\r\n                    self.updateCursor();\r\n                }\r\n            }\r\n\r\n            slide.$slide.trigger( 'refresh' );\r\n\r\n            self.trigger( 'onUpdate', slide );\r\n\r\n        },\r\n\r\n        // Update cursor style depending if content can be zoomed\r\n        // ======================================================\r\n\r\n        updateCursor : function( nextWidth, nextHeight ) {\r\n\r\n            var self = this;\r\n            var isScaledDown;\r\n\r\n            var $container = self.$refs.container.removeClass('fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-drag fancybox-can-zoomOut');\r\n\r\n            if ( !self.current || self.isClosing ) {\r\n                return;\r\n            }\r\n\r\n            if ( self.isZoomable() ) {\r\n\r\n                $container.addClass( 'fancybox-is-zoomable' );\r\n\r\n                if ( nextWidth !== undefined && nextHeight !== undefined ) {\r\n                    isScaledDown = nextWidth < self.current.width && nextHeight < self.current.height;\r\n\r\n                } else {\r\n                    isScaledDown = self.isScaledDown();\r\n                }\r\n\r\n                if ( isScaledDown ) {\r\n\r\n                    // If image is scaled down, then, obviously, it can be zoomed to full size\r\n                    $container.addClass('fancybox-can-zoomIn');\r\n\r\n                } else {\r\n\r\n                    if ( self.current.opts.touch ) {\r\n\r\n                        // If image size ir largen than available available and touch module is not disable,\r\n                        // then user can do panning\r\n                        $container.addClass('fancybox-can-drag');\r\n\r\n                    } else {\r\n                        $container.addClass('fancybox-can-zoomOut');\r\n                    }\r\n\r\n                }\r\n\r\n            } else if ( self.current.opts.touch ) {\r\n                $container.addClass('fancybox-can-drag');\r\n            }\r\n\r\n        },\r\n\r\n\r\n        // Check if current slide is zoomable\r\n        // ==================================\r\n\r\n        isZoomable : function() {\r\n\r\n            var self = this;\r\n\r\n            var current = self.current;\r\n            var fitPos;\r\n\r\n            if ( !current || self.isClosing ) {\r\n                return;\r\n            }\r\n\r\n            // Assume that slide is zoomable if\r\n            //   - image is loaded successfuly\r\n            //   - click action is \"zoom\"\r\n            //   - actual size of the image is smaller than available area\r\n            if ( current.type === 'image' && current.isLoaded && !current.hasError &&\r\n                ( current.opts.clickContent === 'zoom' || ( $.isFunction( current.opts.clickContent ) && current.opts.clickContent( current ) ===  \"zoom\" ) )\r\n            ) {\r\n\r\n                fitPos = self.getFitPos( current );\r\n\r\n                if ( current.width > fitPos.width || current.height > fitPos.height ) {\r\n                    return true;\r\n                }\r\n\r\n            }\r\n\r\n            return false;\r\n\r\n        },\r\n\r\n\r\n        // Check if current image dimensions are smaller than actual\r\n        // =========================================================\r\n\r\n        isScaledDown : function() {\r\n\r\n            var self = this;\r\n\r\n            var current = self.current;\r\n            var $what   = current.$content;\r\n\r\n            var rez = false;\r\n\r\n            if ( $what ) {\r\n                rez = $.fancybox.getTranslate( $what );\r\n                rez = rez.width < current.width || rez.height < current.height;\r\n            }\r\n\r\n            return rez;\r\n\r\n        },\r\n\r\n\r\n        // Check if image dimensions exceed parent element\r\n        // ===============================================\r\n\r\n        canPan : function() {\r\n\r\n            var self = this;\r\n\r\n            var current = self.current;\r\n            var $what   = current.$content;\r\n\r\n            var rez = false;\r\n\r\n            if ( $what ) {\r\n                rez = self.getFitPos( current );\r\n                rez = Math.abs( $what.width() - rez.width ) > 1  || Math.abs( $what.height() - rez.height ) > 1;\r\n\r\n            }\r\n\r\n            return rez;\r\n\r\n        },\r\n\r\n\r\n        // Load content into the slide\r\n        // ===========================\r\n\r\n        loadSlide : function( slide ) {\r\n\r\n            var self = this, type, $slide;\r\n            var ajaxLoad;\r\n\r\n            if ( slide.isLoading ) {\r\n                return;\r\n            }\r\n\r\n            if ( slide.isLoaded ) {\r\n                return;\r\n            }\r\n\r\n            slide.isLoading = true;\r\n\r\n            self.trigger( 'beforeLoad', slide );\r\n\r\n            type   = slide.type;\r\n            $slide = slide.$slide;\r\n\r\n            $slide\r\n                .off( 'refresh' )\r\n                .trigger( 'onReset' )\r\n                .addClass( 'fancybox-slide--' + ( type || 'unknown' ) )\r\n                .addClass( slide.opts.slideClass );\r\n\r\n            // Create content depending on the type\r\n\r\n            switch ( type ) {\r\n\r\n                case 'image':\r\n\r\n                    self.setImage( slide );\r\n\r\n                break;\r\n\r\n                case 'iframe':\r\n\r\n                    self.setIframe( slide );\r\n\r\n                break;\r\n\r\n                case 'html':\r\n\r\n                    self.setContent( slide, slide.src || slide.content );\r\n\r\n                break;\r\n\r\n                case 'inline':\r\n\r\n                    if ( $( slide.src ).length ) {\r\n                        self.setContent( slide, $( slide.src ) );\r\n\r\n                    } else {\r\n                        self.setError( slide );\r\n                    }\r\n\r\n                break;\r\n\r\n                case 'ajax':\r\n\r\n                    self.showLoading( slide );\r\n\r\n                    ajaxLoad = $.ajax( $.extend( {}, slide.opts.ajax.settings, {\r\n                        url : slide.src,\r\n                        success : function ( data, textStatus ) {\r\n\r\n                            if ( textStatus === 'success' ) {\r\n                                self.setContent( slide, data );\r\n                            }\r\n\r\n                        },\r\n                        error : function ( jqXHR, textStatus ) {\r\n\r\n                            if ( jqXHR && textStatus !== 'abort' ) {\r\n                                self.setError( slide );\r\n                            }\r\n\r\n                        }\r\n                    }));\r\n\r\n                    $slide.one( 'onReset', function () {\r\n                        ajaxLoad.abort();\r\n                    });\r\n\r\n                break;\r\n\r\n                default:\r\n\r\n                    self.setError( slide );\r\n\r\n                break;\r\n\r\n            }\r\n\r\n            return true;\r\n\r\n        },\r\n\r\n\r\n        // Use thumbnail image, if possible\r\n        // ================================\r\n\r\n        setImage : function( slide ) {\r\n\r\n            var self   = this;\r\n            var srcset = slide.opts.image.srcset;\r\n\r\n            var found, temp, pxRatio, windowWidth;\r\n\r\n            // If we have \"srcset\", then we need to find matching \"src\" value.\r\n            // This is necessary, because when you set an src attribute, the browser will preload the image\r\n            // before any javascript or even CSS is applied.\r\n            if ( srcset ) {\r\n                pxRatio     = window.devicePixelRatio || 1;\r\n                windowWidth = window.innerWidth  * pxRatio;\r\n\r\n                temp = srcset.split(',').map(function ( el ) {\r\n            \t\tvar ret = {};\r\n\r\n            \t\tel.trim().split(/\\s+/).forEach(function ( el, i ) {\r\n                        var value = parseInt( el.substring(0, el.length - 1), 10 );\r\n\r\n            \t\t\tif ( i === 0 ) {\r\n            \t\t\t\treturn ( ret.url = el );\r\n            \t\t\t}\r\n\r\n                        if ( value ) {\r\n                            ret.value   = value;\r\n                            ret.postfix = el[ el.length - 1 ];\r\n                        }\r\n\r\n            \t\t});\r\n\r\n            \t\treturn ret;\r\n            \t});\r\n\r\n                // Sort by value\r\n                temp.sort(function (a, b) {\r\n                  return a.value - b.value;\r\n                });\r\n\r\n                // Ok, now we have an array of all srcset values\r\n                for ( var j = 0; j < temp.length; j++ ) {\r\n                    var el = temp[ j ];\r\n\r\n                    if ( ( el.postfix === 'w' && el.value >= windowWidth ) || ( el.postfix === 'x' && el.value >= pxRatio ) ) {\r\n                        found = el;\r\n                        break;\r\n                    }\r\n                }\r\n\r\n                // If not found, take the last one\r\n                if ( !found && temp.length ) {\r\n                    found = temp[ temp.length - 1 ];\r\n                }\r\n\r\n                if ( found ) {\r\n                    slide.src = found.url;\r\n\r\n                    // If we have default width/height values, we can calculate height for matching source\r\n                    if ( slide.width && slide.height && found.postfix == 'w' ) {\r\n                        slide.height = ( slide.width / slide.height ) * found.value;\r\n                        slide.width  = found.value;\r\n                    }\r\n                }\r\n            }\r\n\r\n            // This will be wrapper containing both ghost and actual image\r\n            slide.$content = $('<div class=\"fancybox-image-wrap\"></div>')\r\n                .addClass( 'fancybox-is-hidden' )\r\n                .appendTo( slide.$slide );\r\n\r\n\r\n            // If we have a thumbnail, we can display it while actual image is loading\r\n            // Users will not stare at black screen and actual image will appear gradually\r\n            if ( slide.opts.preload !== false && slide.opts.width && slide.opts.height && ( slide.opts.thumb || slide.opts.$thumb ) ) {\r\n\r\n                slide.width  = slide.opts.width;\r\n                slide.height = slide.opts.height;\r\n\r\n                slide.$ghost = $('<img />')\r\n                    .one('error', function() {\r\n\r\n                        $(this).remove();\r\n\r\n                        slide.$ghost = null;\r\n\r\n                        self.setBigImage( slide );\r\n\r\n                    })\r\n                    .one('load', function() {\r\n\r\n                        self.afterLoad( slide );\r\n\r\n                        self.setBigImage( slide );\r\n\r\n                    })\r\n                    .addClass( 'fancybox-image' )\r\n                    .appendTo( slide.$content )\r\n                    .attr( 'src', slide.opts.thumb || slide.opts.$thumb.attr( 'src' ) );\r\n\r\n            } else {\r\n\r\n                self.setBigImage( slide );\r\n\r\n            }\r\n\r\n        },\r\n\r\n\r\n        // Create full-size image\r\n        // ======================\r\n\r\n        setBigImage : function ( slide ) {\r\n            var self = this;\r\n            var $img = $('<img />');\r\n\r\n            slide.$image = $img\r\n                .one('error', function() {\r\n\r\n                    self.setError( slide );\r\n\r\n                })\r\n                .one('load', function() {\r\n\r\n                    // Clear timeout that checks if loading icon needs to be displayed\r\n                    clearTimeout( slide.timouts );\r\n\r\n                    slide.timouts = null;\r\n\r\n                    if ( self.isClosing ) {\r\n                        return;\r\n                    }\r\n\r\n                    slide.width  = this.naturalWidth;\r\n                    slide.height = this.naturalHeight;\r\n\r\n                    if ( slide.opts.image.srcset ) {\r\n                        $img.attr( 'sizes', '100vw' ).attr( 'srcset', slide.opts.image.srcset );\r\n                    }\r\n\r\n                    self.hideLoading( slide );\r\n\r\n                    if ( slide.$ghost ) {\r\n\r\n                        slide.timouts = setTimeout(function() {\r\n                            slide.timouts = null;\r\n\r\n                            slide.$ghost.hide();\r\n\r\n                        }, Math.min( 300, Math.max( 1000, slide.height / 1600 ) ) );\r\n\r\n                    } else {\r\n                        self.afterLoad( slide );\r\n                    }\r\n\r\n                })\r\n                .addClass( 'fancybox-image' )\r\n                .attr('src', slide.src)\r\n                .appendTo( slide.$content );\r\n\r\n            if ( $img[0].complete ) {\r\n                  $img.trigger( 'load' );\r\n\r\n            } else if( $img[0].error ) {\r\n                 $img.trigger( 'error' );\r\n\r\n            } else {\r\n\r\n                slide.timouts = setTimeout(function() {\r\n                    if ( !$img[0].complete && !slide.hasError ) {\r\n                        self.showLoading( slide );\r\n                    }\r\n\r\n                }, 100);\r\n\r\n            }\r\n\r\n        },\r\n\r\n\r\n        // Create iframe wrapper, iframe and bindings\r\n        // ==========================================\r\n\r\n        setIframe : function( slide ) {\r\n            var self\t= this,\r\n                opts    = slide.opts.iframe,\r\n                $slide\t= slide.$slide,\r\n                $iframe;\r\n\r\n            slide.$content = $('<div class=\"fancybox-content' + ( opts.preload ? ' fancybox-is-hidden' : '' ) + '\"></div>')\r\n                .css( opts.css )\r\n                .appendTo( $slide );\r\n\r\n            $iframe = $( opts.tpl.replace(/\\{rnd\\}/g, new Date().getTime()) )\r\n                .attr( opts.attr )\r\n                .appendTo( slide.$content );\r\n\r\n            if ( opts.preload ) {\r\n\r\n                self.showLoading( slide );\r\n\r\n                // Unfortunately, it is not always possible to determine if iframe is successfully loaded\r\n                // (due to browser security policy)\r\n\r\n                $iframe.on('load.fb error.fb', function(e) {\r\n                    this.isReady = 1;\r\n\r\n                    slide.$slide.trigger( 'refresh' );\r\n\r\n                    self.afterLoad( slide );\r\n                });\r\n\r\n                // Recalculate iframe content size\r\n                // ===============================\r\n\r\n                $slide.on('refresh.fb', function() {\r\n                    var $wrap = slide.$content,\r\n                        $contents,\r\n                        $body,\r\n                        scrollWidth,\r\n                        frameWidth,\r\n                        frameHeight;\r\n\r\n                    if ( $iframe[0].isReady !== 1 ) {\r\n                        return;\r\n                    }\r\n\r\n                    // Check if content is accessible,\r\n                    // it will fail if frame is not with the same origin\r\n\r\n                    try {\r\n                        $contents = $iframe.contents();\r\n                        $body     = $contents.find('body');\r\n\r\n                    } catch (ignore) {}\r\n\r\n                    // Calculate dimensions for the wrapper\r\n                    if ( $body && $body.length && !( opts.css.width !== undefined && opts.css.height !== undefined ) ) {\r\n\r\n                        scrollWidth = $iframe[0].contentWindow.document.documentElement.scrollWidth;\r\n\r\n                        frameWidth\t= Math.ceil( $body.outerWidth(true) + ( $wrap.width() - scrollWidth ) );\r\n                        frameHeight\t= Math.ceil( $body.outerHeight(true) );\r\n\r\n                        // Resize wrapper to fit iframe content\r\n                        $wrap.css({\r\n                            'width'  : opts.css.width  === undefined ? frameWidth  + ( $wrap.outerWidth()  - $wrap.innerWidth() )  : opts.css.width,\r\n                            'height' : opts.css.height === undefined ? frameHeight + ( $wrap.outerHeight() - $wrap.innerHeight() ) : opts.css.height\r\n                        });\r\n\r\n                    }\r\n\r\n                    $wrap.removeClass( 'fancybox-is-hidden' );\r\n\r\n                });\r\n\r\n            } else {\r\n\r\n                this.afterLoad( slide );\r\n\r\n            }\r\n\r\n            $iframe.attr( 'src', slide.src );\r\n\r\n            if ( slide.opts.smallBtn === true ) {\r\n                slide.$content.prepend( self.translate( slide, slide.opts.btnTpl.smallBtn ) );\r\n            }\r\n\r\n            // Remove iframe if closing or changing gallery item\r\n            $slide.one( 'onReset', function () {\r\n\r\n                // This helps IE not to throw errors when closing\r\n                try {\r\n\r\n                    $( this ).find( 'iframe' ).hide().attr( 'src', '//about:blank' );\r\n\r\n                } catch ( ignore ) {}\r\n\r\n                $( this ).empty();\r\n\r\n                slide.isLoaded = false;\r\n\r\n            });\r\n\r\n        },\r\n\r\n\r\n        // Wrap and append content to the slide\r\n        // ======================================\r\n\r\n        setContent : function ( slide, content ) {\r\n\r\n            var self = this;\r\n\r\n            if ( self.isClosing ) {\r\n                return;\r\n            }\r\n\r\n            self.hideLoading( slide );\r\n\r\n            slide.$slide.empty();\r\n\r\n            if ( isQuery( content ) && content.parent().length ) {\r\n\r\n                // If content is a jQuery object, then it will be moved to the slide.\r\n                // The placeholder is created so we will know where to put it back.\r\n                // If user is navigating gallery fast, then the content might be already inside fancyBox\r\n                // =====================================================================================\r\n\r\n                // Make sure content is not already moved to fancyBox\r\n                content.parent( '.fancybox-slide--inline' ).trigger( 'onReset' );\r\n\r\n                // Create temporary element marking original place of the content\r\n                slide.$placeholder = $( '<div></div>' ).hide().insertAfter( content );\r\n\r\n                // Make sure content is visible\r\n                content.css('display', 'inline-block');\r\n\r\n            } else if ( !slide.hasError ) {\r\n\r\n                // If content is just a plain text, try to convert it to html\r\n                if ( $.type( content ) === 'string' ) {\r\n                    content = $('<div>').append( $.trim( content ) ).contents();\r\n\r\n                    // If we have text node, then add wrapping element to make vertical alignment work\r\n                    if ( content[0].nodeType === 3 ) {\r\n                        content = $('<div>').html( content );\r\n                    }\r\n                }\r\n\r\n                // If \"filter\" option is provided, then filter content\r\n                if ( slide.opts.filter ) {\r\n                    content = $('<div>').html( content ).find( slide.opts.filter );\r\n                }\r\n\r\n            }\r\n\r\n            slide.$slide.one('onReset', function () {\r\n\r\n                // Put content back\r\n                if ( slide.$placeholder ) {\r\n                    slide.$placeholder.after( content.hide() ).remove();\r\n\r\n                    slide.$placeholder = null;\r\n                }\r\n\r\n                // Remove custom close button\r\n                if ( slide.$smallBtn ) {\r\n                    slide.$smallBtn.remove();\r\n\r\n                    slide.$smallBtn = null;\r\n                }\r\n\r\n                // Remove content and mark slide as not loaded\r\n                if ( !slide.hasError ) {\r\n                    $(this).empty();\r\n\r\n                    slide.isLoaded = false;\r\n                }\r\n\r\n            });\r\n\r\n            slide.$content = $( content ).appendTo( slide.$slide );\r\n\r\n            if ( slide.opts.smallBtn && !slide.$smallBtn ) {\r\n                slide.$smallBtn = $( self.translate( slide, slide.opts.btnTpl.smallBtn ) ).appendTo( slide.$content );\r\n            }\r\n\r\n            this.afterLoad( slide );\r\n        },\r\n\r\n        // Display error message\r\n        // =====================\r\n\r\n        setError : function ( slide ) {\r\n\r\n            slide.hasError = true;\r\n\r\n            slide.$slide.removeClass( 'fancybox-slide--' + slide.type );\r\n\r\n            this.setContent( slide, this.translate( slide, slide.opts.errorTpl ) );\r\n\r\n        },\r\n\r\n\r\n        // Show loading icon inside the slide\r\n        // ==================================\r\n\r\n        showLoading : function( slide ) {\r\n\r\n            var self = this;\r\n\r\n            slide = slide || self.current;\r\n\r\n            if ( slide && !slide.$spinner ) {\r\n                slide.$spinner = $( self.opts.spinnerTpl ).appendTo( slide.$slide );\r\n            }\r\n\r\n        },\r\n\r\n        // Remove loading icon from the slide\r\n        // ==================================\r\n\r\n        hideLoading : function( slide ) {\r\n\r\n            var self = this;\r\n\r\n            slide = slide || self.current;\r\n\r\n            if ( slide && slide.$spinner ) {\r\n                slide.$spinner.remove();\r\n\r\n                delete slide.$spinner;\r\n            }\r\n\r\n        },\r\n\r\n\r\n        // Adjustments after slide content has been loaded\r\n        // ===============================================\r\n\r\n        afterLoad : function( slide ) {\r\n\r\n            var self = this;\r\n\r\n            if ( self.isClosing ) {\r\n                return;\r\n            }\r\n\r\n            slide.isLoading = false;\r\n            slide.isLoaded  = true;\r\n\r\n            self.trigger( 'afterLoad', slide );\r\n\r\n            self.hideLoading( slide );\r\n\r\n            if ( slide.opts.protect && slide.$content && !slide.hasError ) {\r\n\r\n                // Disable right click\r\n                slide.$content.on( 'contextmenu.fb', function( e ) {\r\n                     if ( e.button == 2 ) {\r\n                         e.preventDefault();\r\n                     }\r\n\r\n                    return true;\r\n                });\r\n\r\n                // Add fake element on top of the image\r\n                // This makes a bit harder for user to select image\r\n                if ( slide.type === 'image' ) {\r\n                    $( '<div class=\"fancybox-spaceball\"></div>' ).appendTo( slide.$content );\r\n                }\r\n\r\n            }\r\n\r\n            self.revealContent( slide );\r\n\r\n        },\r\n\r\n\r\n        // Make content visible\r\n        // This method is called right after content has been loaded or\r\n        // user navigates gallery and transition should start\r\n        // ============================================================\r\n\r\n        revealContent : function( slide ) {\r\n\r\n            var self   = this;\r\n            var $slide = slide.$slide;\r\n\r\n            var effect, effectClassName, duration, opacity, end, start = false;\r\n\r\n            effect   = slide.opts[ self.firstRun ? 'animationEffect'   : 'transitionEffect' ];\r\n            duration = slide.opts[ self.firstRun ? 'animationDuration' : 'transitionDuration' ];\r\n\r\n            duration = parseInt( slide.forcedDuration === undefined ? duration : slide.forcedDuration, 10 );\r\n\r\n            if ( slide.isMoved || slide.pos !== self.currPos || !duration ) {\r\n                effect = false;\r\n            }\r\n\r\n            // Check if can zoom\r\n            if ( effect === 'zoom' && !( slide.pos === self.currPos && duration && slide.type === 'image' && !slide.hasError && ( start = self.getThumbPos( slide ) ) ) ) {\r\n                effect = 'fade';\r\n            }\r\n\r\n\r\n            // Zoom animation\r\n            // ==============\r\n\r\n            if ( effect === 'zoom' ) {\r\n                end = self.getFitPos( slide );\r\n\r\n                end.scaleX = Math.round( (end.width  / start.width)  * 100 ) / 100;\r\n                end.scaleY = Math.round( (end.height / start.height) * 100 ) / 100;\r\n\r\n                delete end.width;\r\n                delete end.height;\r\n\r\n                // Check if we need to animate opacity\r\n                opacity = slide.opts.zoomOpacity;\r\n\r\n                if ( opacity == 'auto' ) {\r\n                    opacity = Math.abs( slide.width / slide.height - start.width / start.height ) > 0.1;\r\n                }\r\n\r\n                if ( opacity ) {\r\n                    start.opacity = 0.1;\r\n                    end.opacity   = 1;\r\n                }\r\n\r\n                // Draw image at start position\r\n                $.fancybox.setTranslate( slide.$content.removeClass( 'fancybox-is-hidden' ), start );\r\n\r\n                forceRedraw( slide.$content );\r\n\r\n                // Start animation\r\n                $.fancybox.animate( slide.$content, end, duration, function() {\r\n                    self.complete();\r\n                });\r\n\r\n                return;\r\n            }\r\n\r\n\r\n            self.updateSlide( slide );\r\n\r\n\r\n            // Simply show content\r\n            // ===================\r\n\r\n            if ( !effect ) {\r\n                forceRedraw( $slide );\r\n\r\n                slide.$content.removeClass( 'fancybox-is-hidden' );\r\n\r\n                if ( slide.pos === self.currPos ) {\r\n                    self.complete();\r\n                }\r\n\r\n                return;\r\n            }\r\n\r\n            $.fancybox.stop( $slide );\r\n\r\n            effectClassName = 'fancybox-animated fancybox-slide--' + ( slide.pos > self.prevPos ? 'next' : 'previous' ) + ' fancybox-fx-' + effect;\r\n\r\n            $slide.removeAttr( 'style' ).removeClass( 'fancybox-slide--current fancybox-slide--next fancybox-slide--previous' ).addClass( effectClassName );\r\n\r\n            slide.$content.removeClass( 'fancybox-is-hidden' );\r\n\r\n            //Force reflow for CSS3 transitions\r\n            forceRedraw( $slide );\r\n\r\n            $.fancybox.animate( $slide, 'fancybox-slide--current', duration, function(e) {\r\n                $slide.removeClass( effectClassName ).removeAttr( 'style' );\r\n\r\n                if ( slide.pos === self.currPos ) {\r\n                    self.complete();\r\n                }\r\n\r\n            }, true);\r\n\r\n        },\r\n\r\n\r\n        // Check if we can and have to zoom from thumbnail\r\n        //================================================\r\n\r\n        getThumbPos : function( slide ) {\r\n\r\n            var self = this;\r\n            var rez  = false;\r\n\r\n            // Check if element is inside the viewport by at least 1 pixel\r\n            var isElementVisible = function( $el ) {\r\n                var element = $el[0];\r\n\r\n                var elementRect = element.getBoundingClientRect();\r\n                var parentRects = [];\r\n\r\n                var visibleInAllParents;\r\n\r\n                while ( element.parentElement !== null ) {\r\n                    if ( $(element.parentElement).css('overflow') === 'hidden'  || $(element.parentElement).css('overflow') === 'auto' ) {\r\n                        parentRects.push(element.parentElement.getBoundingClientRect());\r\n                    }\r\n\r\n                    element = element.parentElement;\r\n                }\r\n\r\n                visibleInAllParents = parentRects.every(function(parentRect){\r\n                    var visiblePixelX = Math.min(elementRect.right, parentRect.right) - Math.max(elementRect.left, parentRect.left);\r\n                    var visiblePixelY = Math.min(elementRect.bottom, parentRect.bottom) - Math.max(elementRect.top, parentRect.top);\r\n\r\n                    return visiblePixelX > 0 && visiblePixelY > 0;\r\n                });\r\n\r\n                return visibleInAllParents &&\r\n                    elementRect.bottom > 0 && elementRect.right > 0 &&\r\n                    elementRect.left < $(window).width() && elementRect.top < $(window).height();\r\n            };\r\n\r\n            var $thumb   = slide.opts.$thumb;\r\n            var thumbPos = $thumb ? $thumb.offset() : 0;\r\n            var slidePos;\r\n\r\n            if ( thumbPos && $thumb[0].ownerDocument === document && isElementVisible( $thumb ) ) {\r\n                slidePos = self.$refs.stage.offset();\r\n\r\n                rez = {\r\n                    top    : thumbPos.top  - slidePos.top  + parseFloat( $thumb.css( \"border-top-width\" ) || 0 ),\r\n                    left   : thumbPos.left - slidePos.left + parseFloat( $thumb.css( \"border-left-width\" ) || 0 ),\r\n                    width  : $thumb.width(),\r\n                    height : $thumb.height(),\r\n                    scaleX : 1,\r\n                    scaleY : 1\r\n                };\r\n            }\r\n\r\n            return rez;\r\n        },\r\n\r\n\r\n        // Final adjustments after current gallery item is moved to position\r\n        // and it`s content is loaded\r\n        // ==================================================================\r\n\r\n        complete : function() {\r\n\r\n            var self = this;\r\n\r\n            var current = self.current;\r\n            var slides  = {};\r\n\r\n            if ( current.isMoved || !current.isLoaded || current.isComplete ) {\r\n                return;\r\n            }\r\n\r\n            current.isComplete = true;\r\n\r\n            current.$slide.siblings().trigger( 'onReset' );\r\n\r\n            // Trigger any CSS3 transiton inside the slide\r\n            forceRedraw( current.$slide );\r\n\r\n            current.$slide.addClass( 'fancybox-slide--complete' );\r\n\r\n            // Remove unnecessary slides\r\n            $.each( self.slides, function( key, slide ) {\r\n                if ( slide.pos >= self.currPos - 1 && slide.pos <= self.currPos + 1 ) {\r\n                    slides[ slide.pos ] = slide;\r\n\r\n                } else if ( slide ) {\r\n\r\n                    $.fancybox.stop( slide.$slide );\r\n\r\n                    slide.$slide.unbind().remove();\r\n                }\r\n            });\r\n\r\n            self.slides = slides;\r\n\r\n            self.updateCursor();\r\n\r\n            self.trigger( 'afterShow' );\r\n\r\n            // Try to focus on the first focusable element\r\n            if ( $( document.activeElement ).is( '[disabled]' ) || ( current.opts.autoFocus && !( current.type == 'image' || current.type === 'iframe' ) ) ) {\r\n                self.focus();\r\n            }\r\n\r\n        },\r\n\r\n\r\n        // Preload next and previous slides\r\n        // ================================\r\n\r\n        preload : function() {\r\n            var self = this;\r\n            var next, prev;\r\n\r\n            if ( self.group.length < 2 ) {\r\n                return;\r\n            }\r\n\r\n            next  = self.slides[ self.currPos + 1 ];\r\n            prev  = self.slides[ self.currPos - 1 ];\r\n\r\n            if ( next && next.type === 'image' ) {\r\n                self.loadSlide( next );\r\n            }\r\n\r\n            if ( prev && prev.type === 'image' ) {\r\n                self.loadSlide( prev );\r\n            }\r\n\r\n        },\r\n\r\n\r\n        // Try to find and focus on the first focusable element\r\n        // ====================================================\r\n\r\n        focus : function() {\r\n            var current = this.current;\r\n            var $el;\r\n\r\n            if ( this.isClosing ) {\r\n                return;\r\n            }\r\n\r\n            // Skip for images and iframes\r\n            $el = current && current.isComplete ? current.$slide.find('button,:input,[tabindex],a').filter(':not([disabled]):visible:first') : null;\r\n            $el = $el && $el.length ? $el : this.$refs.container;\r\n\r\n            $el.focus();\r\n        },\r\n\r\n\r\n        // Activates current instance - brings container to the front and enables keyboard,\r\n        // notifies other instances about deactivating\r\n        // =================================================================================\r\n\r\n        activate : function () {\r\n            var self = this;\r\n\r\n            // Deactivate all instances\r\n            $( '.fancybox-container' ).each(function () {\r\n                var instance = $(this).data( 'FancyBox' );\r\n\r\n                // Skip self and closing instances\r\n                if (instance && instance.uid !== self.uid && !instance.isClosing) {\r\n                    instance.trigger( 'onDeactivate' );\r\n                }\r\n\r\n            });\r\n\r\n            if ( self.current ) {\r\n                if ( self.$refs.container.index() > 0 ) {\r\n                    self.$refs.container.prependTo( document.body );\r\n                }\r\n\r\n                self.updateControls();\r\n            }\r\n\r\n            self.trigger( 'onActivate' );\r\n\r\n            self.addEvents();\r\n\r\n        },\r\n\r\n\r\n        // Start closing procedure\r\n        // This will start \"zoom-out\" animation if needed and clean everything up afterwards\r\n        // =================================================================================\r\n\r\n        close : function( e, d ) {\r\n\r\n            var self    = this;\r\n            var current = self.current;\r\n\r\n            var effect, duration;\r\n            var $what, opacity, start, end;\r\n\r\n            var done = function() {\r\n                self.cleanUp( e );\r\n            };\r\n\r\n            if ( self.isClosing ) {\r\n                return false;\r\n            }\r\n\r\n            self.isClosing = true;\r\n\r\n            // If beforeClose callback prevents closing, make sure content is centered\r\n            if ( self.trigger( 'beforeClose', e ) === false ) {\r\n                self.isClosing = false;\r\n\r\n                requestAFrame(function() {\r\n                    self.update();\r\n                });\r\n\r\n                return false;\r\n            }\r\n\r\n            // Remove all events\r\n            // If there are multiple instances, they will be set again by \"activate\" method\r\n            self.removeEvents();\r\n\r\n            if ( current.timouts ) {\r\n                clearTimeout( current.timouts );\r\n            }\r\n\r\n            $what    = current.$content;\r\n            effect   = current.opts.animationEffect;\r\n            duration = $.isNumeric( d ) ? d : ( effect ? current.opts.animationDuration : 0 );\r\n\r\n            // Remove other slides\r\n            current.$slide.off( transitionEnd ).removeClass( 'fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated' );\r\n\r\n            current.$slide.siblings().trigger( 'onReset' ).remove();\r\n\r\n            // Trigger animations\r\n            if ( duration ) {\r\n                self.$refs.container.removeClass( 'fancybox-is-open' ).addClass( 'fancybox-is-closing' );\r\n            }\r\n\r\n            // Clean up\r\n            self.hideLoading( current );\r\n\r\n            self.hideControls();\r\n\r\n            self.updateCursor();\r\n\r\n            // Check if possible to zoom-out\r\n            if ( effect === 'zoom' && !( e !== true && $what && duration && current.type === 'image' && !current.hasError && ( end = self.getThumbPos( current ) ) ) ) {\r\n                effect = 'fade';\r\n            }\r\n\r\n            if ( effect === 'zoom' ) {\r\n                $.fancybox.stop( $what );\r\n\r\n                start = $.fancybox.getTranslate( $what );\r\n\r\n                start.width  = start.width  * start.scaleX;\r\n                start.height = start.height * start.scaleY;\r\n\r\n                // Check if we need to animate opacity\r\n                opacity = current.opts.zoomOpacity;\r\n\r\n                if ( opacity == 'auto' ) {\r\n                    opacity = Math.abs( current.width / current.height - end.width / end.height ) > 0.1;\r\n                }\r\n\r\n                if ( opacity ) {\r\n                    end.opacity = 0;\r\n                }\r\n\r\n                start.scaleX = start.width  / end.width;\r\n                start.scaleY = start.height / end.height;\r\n\r\n                start.width  = end.width;\r\n                start.height = end.height;\r\n\r\n                $.fancybox.setTranslate( current.$content, start );\r\n\r\n                $.fancybox.animate( current.$content, end, duration, done );\r\n\r\n                return true;\r\n            }\r\n\r\n            if ( effect && duration ) {\r\n\r\n                // If skip animation\r\n                if ( e === true ) {\r\n                    setTimeout( done, duration );\r\n\r\n                } else {\r\n                    $.fancybox.animate( current.$slide.removeClass( 'fancybox-slide--current' ), 'fancybox-animated fancybox-slide--previous fancybox-fx-' + effect, duration, done );\r\n                }\r\n\r\n            } else {\r\n                done();\r\n            }\r\n\r\n            return true;\r\n        },\r\n\r\n\r\n        // Final adjustments after removing the instance\r\n        // =============================================\r\n\r\n        cleanUp : function( e ) {\r\n            var self = this,\r\n                instance;\r\n\r\n            self.current.$slide.trigger( 'onReset' );\r\n\r\n            self.$refs.container.empty().remove();\r\n\r\n            self.trigger( 'afterClose', e );\r\n\r\n            // Place back focus\r\n            if ( self.$lastFocus && !!!self.current.focusBack ) {\r\n                self.$lastFocus.focus();\r\n            }\r\n\r\n            self.current = null;\r\n\r\n            // Check if there are other instances\r\n            instance = $.fancybox.getInstance();\r\n\r\n            if ( instance ) {\r\n                instance.activate();\r\n\r\n            } else {\r\n\r\n                $W.scrollTop( self.scrollTop ).scrollLeft( self.scrollLeft );\r\n\r\n                $( 'html' ).removeClass( 'fancybox-enabled' );\r\n\r\n                $( '#fancybox-style-noscroll' ).remove();\r\n            }\r\n\r\n        },\r\n\r\n\r\n        // Call callback and trigger an event\r\n        // ==================================\r\n\r\n        trigger : function( name, slide ) {\r\n            var args  = Array.prototype.slice.call(arguments, 1),\r\n                self  = this,\r\n                obj   = slide && slide.opts ? slide : self.current,\r\n                rez;\r\n\r\n            if ( obj ) {\r\n                args.unshift( obj );\r\n\r\n            } else {\r\n                obj = self;\r\n            }\r\n\r\n            args.unshift( self );\r\n\r\n            if ( $.isFunction( obj.opts[ name ] ) ) {\r\n                rez = obj.opts[ name ].apply( obj, args );\r\n            }\r\n\r\n            if ( rez === false ) {\r\n                return rez;\r\n            }\r\n\r\n            if ( name === 'afterClose' ) {\r\n                $D.trigger( name + '.fb', args );\r\n\r\n            } else {\r\n                self.$refs.container.trigger( name + '.fb', args );\r\n            }\r\n\r\n        },\r\n\r\n\r\n        // Update infobar values, navigation button states and reveal caption\r\n        // ==================================================================\r\n\r\n        updateControls : function ( force ) {\r\n\r\n            var self = this;\r\n\r\n            var current  = self.current;\r\n            var index    = current.index;\r\n            var opts     = current.opts;\r\n            var caption  = opts.caption;\r\n            var $caption = self.$refs.caption;\r\n\r\n            // Recalculate content dimensions\r\n            current.$slide.trigger( 'refresh' );\r\n\r\n            self.$caption = caption && caption.length ? $caption.html( caption ) : null;\r\n\r\n            if ( !self.isHiddenControls ) {\r\n                self.showControls();\r\n            }\r\n\r\n            // Update info and navigation elements\r\n            $('[data-fancybox-count]').html( self.group.length );\r\n            $('[data-fancybox-index]').html( index + 1 );\r\n\r\n            $('[data-fancybox-prev]').prop('disabled', ( !opts.loop && index <= 0 ) );\r\n            $('[data-fancybox-next]').prop('disabled', ( !opts.loop && index >= self.group.length - 1 ) );\r\n\r\n        },\r\n\r\n        // Hide toolbar and caption\r\n        // ========================\r\n\r\n        hideControls : function () {\r\n\r\n            this.isHiddenControls = true;\r\n\r\n            this.$refs.container.removeClass('fancybox-show-infobar fancybox-show-toolbar fancybox-show-caption fancybox-show-nav');\r\n\r\n        },\r\n\r\n        showControls : function() {\r\n\r\n            var self = this;\r\n            var opts = self.current ? self.current.opts : self.opts;\r\n            var $container = self.$refs.container;\r\n\r\n            self.isHiddenControls   = false;\r\n            self.idleSecondsCounter = 0;\r\n\r\n            $container\r\n                .toggleClass('fancybox-show-toolbar', !!( opts.toolbar && opts.buttons ) )\r\n                .toggleClass('fancybox-show-infobar', !!( opts.infobar && self.group.length > 1 ) )\r\n                .toggleClass('fancybox-show-nav',     !!( opts.arrows && self.group.length > 1 ) )\r\n                .toggleClass('fancybox-is-modal',     !!opts.modal );\r\n\r\n            if ( self.$caption ) {\r\n                $container.addClass( 'fancybox-show-caption ');\r\n\r\n            } else {\r\n               $container.removeClass( 'fancybox-show-caption' );\r\n           }\r\n\r\n       },\r\n\r\n\r\n       // Toggle toolbar and caption\r\n       // ==========================\r\n\r\n       toggleControls : function() {\r\n\r\n           if ( this.isHiddenControls ) {\r\n               this.showControls();\r\n\r\n           } else {\r\n               this.hideControls();\r\n           }\r\n\r\n       },\r\n\r\n\r\n    });\r\n\r\n\r\n    $.fancybox = {\r\n\r\n        version  : \"3.1.20\",\r\n        defaults : defaults,\r\n\r\n\r\n        // Get current instance and execute a command.\r\n        //\r\n        // Examples of usage:\r\n        //\r\n        //   $instance = $.fancybox.getInstance();\r\n        //   $.fancybox.getInstance().jumpTo( 1 );\r\n        //   $.fancybox.getInstance( 'jumpTo', 1 );\r\n        //   $.fancybox.getInstance( function() {\r\n        //       console.info( this.currIndex );\r\n        //   });\r\n        // ======================================================\r\n\r\n        getInstance : function ( command ) {\r\n            var instance = $('.fancybox-container:not(\".fancybox-is-closing\"):first').data( 'FancyBox' );\r\n            var args     = Array.prototype.slice.call(arguments, 1);\r\n\r\n            if ( instance instanceof FancyBox ) {\r\n\r\n                if ( $.type( command ) === 'string' ) {\r\n                    instance[ command ].apply( instance, args );\r\n\r\n                } else if ( $.type( command ) === 'function' ) {\r\n                    command.apply( instance, args );\r\n\r\n                }\r\n\r\n                return instance;\r\n            }\r\n\r\n            return false;\r\n\r\n        },\r\n\r\n\r\n        // Create new instance\r\n        // ===================\r\n\r\n        open : function ( items, opts, index ) {\r\n            return new FancyBox( items, opts, index );\r\n        },\r\n\r\n\r\n        // Close current or all instances\r\n        // ==============================\r\n\r\n        close : function ( all ) {\r\n            var instance = this.getInstance();\r\n\r\n            if ( instance ) {\r\n                instance.close();\r\n\r\n                // Try to find and close next instance\r\n\r\n                if ( all === true ) {\r\n                    this.close();\r\n                }\r\n            }\r\n\r\n        },\r\n\r\n        // Close instances and unbind all events\r\n        // ==============================\r\n\r\n        destroy : function() {\r\n\r\n            this.close( true );\r\n\r\n            $D.off( 'click.fb-start' );\r\n\r\n        },\r\n\r\n\r\n        // Try to detect mobile devices\r\n        // ============================\r\n\r\n        isMobile : document.createTouch !== undefined && /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent),\r\n\r\n\r\n        // Detect if 'translate3d' support is available\r\n        // ============================================\r\n\r\n        use3d : (function() {\r\n            var div = document.createElement('div');\r\n\r\n            return window.getComputedStyle && window.getComputedStyle( div ).getPropertyValue('transform') && !(document.documentMode && document.documentMode < 11);\r\n        }()),\r\n\r\n\r\n        // Helper function to get current visual state of an element\r\n        // returns array[ top, left, horizontal-scale, vertical-scale, opacity ]\r\n        // =====================================================================\r\n\r\n        getTranslate : function( $el ) {\r\n            var matrix;\r\n\r\n            if ( !$el || !$el.length ) {\r\n                return false;\r\n            }\r\n\r\n            matrix  = $el.eq( 0 ).css('transform');\r\n\r\n            if ( matrix && matrix.indexOf( 'matrix' ) !== -1 ) {\r\n                matrix = matrix.split('(')[1];\r\n                matrix = matrix.split(')')[0];\r\n                matrix = matrix.split(',');\r\n            } else {\r\n                matrix = [];\r\n            }\r\n\r\n            if ( matrix.length ) {\r\n\r\n                // If IE\r\n                if ( matrix.length > 10 ) {\r\n                    matrix = [ matrix[13], matrix[12], matrix[0], matrix[5] ];\r\n\r\n                } else {\r\n                    matrix = [ matrix[5], matrix[4], matrix[0], matrix[3]];\r\n                }\r\n\r\n                matrix = matrix.map(parseFloat);\r\n\r\n            } else {\r\n                matrix = [ 0, 0, 1, 1 ];\r\n\r\n                var transRegex = /\\.*translate\\((.*)px,(.*)px\\)/i;\r\n                var transRez = transRegex.exec( $el.eq( 0 ).attr('style') );\r\n\r\n                if ( transRez ) {\r\n                    matrix[ 0 ] = parseFloat( transRez[2] );\r\n                    matrix[ 1 ] = parseFloat( transRez[1] );\r\n                }\r\n            }\r\n\r\n            return {\r\n                top     : matrix[ 0 ],\r\n                left    : matrix[ 1 ],\r\n                scaleX  : matrix[ 2 ],\r\n                scaleY  : matrix[ 3 ],\r\n                opacity : parseFloat( $el.css('opacity') ),\r\n                width   : $el.width(),\r\n                height  : $el.height()\r\n            };\r\n\r\n        },\r\n\r\n\r\n        // Shortcut for setting \"translate3d\" properties for element\r\n        // Can set be used to set opacity, too\r\n        // ========================================================\r\n\r\n        setTranslate : function( $el, props ) {\r\n            var str  = '';\r\n            var css  = {};\r\n\r\n            if ( !$el || !props ) {\r\n                return;\r\n            }\r\n\r\n            if ( props.left !== undefined || props.top !== undefined ) {\r\n                str = ( props.left === undefined ? $el.position().left : props.left )  + 'px, ' + ( props.top === undefined ? $el.position().top : props.top ) + 'px';\r\n\r\n                if ( this.use3d ) {\r\n                    str = 'translate3d(' + str + ', 0px)';\r\n\r\n                } else {\r\n                    str = 'translate(' + str + ')';\r\n                }\r\n            }\r\n\r\n            if ( props.scaleX !== undefined && props.scaleY !== undefined ) {\r\n                str = (str.length ? str + ' ' : '') + 'scale(' + props.scaleX + ', ' + props.scaleY + ')';\r\n            }\r\n\r\n            if ( str.length ) {\r\n                css.transform = str;\r\n            }\r\n\r\n            if ( props.opacity !== undefined ) {\r\n                css.opacity = props.opacity;\r\n            }\r\n\r\n            if ( props.width !== undefined ) {\r\n                css.width = props.width;\r\n            }\r\n\r\n            if ( props.height !== undefined ) {\r\n                css.height = props.height;\r\n            }\r\n\r\n            return $el.css( css );\r\n        },\r\n\r\n\r\n        // Simple CSS transition handler\r\n        // =============================\r\n\r\n        animate : function ( $el, to, duration, callback, leaveAnimationName ) {\r\n            var event = transitionEnd || 'transitionend';\r\n\r\n            if ( $.isFunction( duration ) ) {\r\n                callback = duration;\r\n                duration = null;\r\n            }\r\n\r\n            if ( !$.isPlainObject( to ) ) {\r\n                $el.removeAttr('style');\r\n            }\r\n\r\n            $el.on( event, function(e) {\r\n\r\n                // Skip events from child elements and z-index change\r\n                if ( e && e.originalEvent && ( !$el.is( e.originalEvent.target ) || e.originalEvent.propertyName == 'z-index' ) ) {\r\n                    return;\r\n                }\r\n\r\n                $el.off( event );\r\n\r\n                if ( $.isPlainObject( to ) ) {\r\n\r\n                    if ( to.scaleX !== undefined && to.scaleY !== undefined ) {\r\n                        $el.css( 'transition-duration', '0ms' );\r\n\r\n                        to.width  = $el.width()  * to.scaleX;\r\n                        to.height = $el.height() * to.scaleY;\r\n\r\n                        to.scaleX = 1;\r\n                        to.scaleY = 1;\r\n\r\n                        $.fancybox.setTranslate( $el, to );\r\n                    }\r\n\r\n                } else if ( leaveAnimationName !== true ) {\r\n                    $el.removeClass( to );\r\n                }\r\n\r\n                if ( $.isFunction( callback ) ) {\r\n                    callback( e );\r\n                }\r\n\r\n            });\r\n\r\n            if ( $.isNumeric( duration ) ) {\r\n                $el.css( 'transition-duration', duration + 'ms' );\r\n            }\r\n\r\n            if ( $.isPlainObject( to ) ) {\r\n                $.fancybox.setTranslate( $el, to );\r\n\r\n            } else {\r\n                $el.addClass( to );\r\n            }\r\n\r\n            $el.data(\"timer\", setTimeout(function() {\r\n                $el.trigger( 'transitionend' );\r\n            }, duration + 16));\r\n\r\n        },\r\n\r\n        stop : function( $el ) {\r\n            clearTimeout( $el.data(\"timer\") );\r\n\r\n            $el.off( transitionEnd );\r\n        }\r\n\r\n    };\r\n\r\n\r\n    // Default click handler for \"fancyboxed\" links\r\n    // ============================================\r\n\r\n    function _run( e ) {\r\n        var target\t= e.currentTarget,\r\n            opts\t= e.data ? e.data.options : {},\r\n            items\t= e.data ? e.data.items : [],\r\n            value\t= $(target).attr( 'data-fancybox' ) || '',\r\n            index\t= 0;\r\n\r\n        e.preventDefault();\r\n        e.stopPropagation();\r\n\r\n        // Get all related items and find index for clicked one\r\n        if ( value ) {\r\n            items = items.length ? items.filter( '[data-fancybox=\"' + value + '\"]' ) : $( '[data-fancybox=\"' + value + '\"]' );\r\n            index = items.index( target );\r\n\r\n            // Sometimes current item can not be found\r\n            // (for example, when slider clones items)\r\n            if ( index < 0 ) {\r\n                index = 0;\r\n            }\r\n\r\n        } else {\r\n            items = [ target ];\r\n        }\r\n\r\n        $.fancybox.open( items, opts, index );\r\n    }\r\n\r\n\r\n    // Create a jQuery plugin\r\n    // ======================\r\n\r\n    $.fn.fancybox = function (options) {\r\n        var selector;\r\n\r\n        options  = options || {};\r\n        selector = options.selector || false;\r\n\r\n        if ( selector ) {\r\n\r\n            $( 'body' ).off( 'click.fb-start', selector ).on( 'click.fb-start', selector, {\r\n                items   : $( selector ),\r\n                options : options\r\n            }, _run );\r\n\r\n        } else {\r\n\r\n            this.off( 'click.fb-start' ).on( 'click.fb-start', {\r\n                items   : this,\r\n                options : options\r\n            }, _run);\r\n\r\n        }\r\n\r\n        return this;\r\n    };\r\n\r\n\r\n    // Self initializing plugin\r\n    // ========================\r\n\r\n    $D.on( 'click.fb-start', '[data-fancybox]', _run );\r\n\r\n}( window, document, $ ));\r\n\r\n// ==========================================================================\r\n//\r\n// Media\r\n// Adds additional media type support\r\n//\r\n// ==========================================================================\r\n;(function ($) {\r\n\r\n\t'use strict';\r\n\r\n\t// Formats matching url to final form\r\n\r\n\tvar format = function (url, rez, params) {\r\n\t\tif ( !url ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tparams = params || '';\r\n\r\n\t\tif ( $.type(params) === \"object\" ) {\r\n\t\t\tparams = $.param(params, true);\r\n\t\t}\r\n\r\n\t\t$.each(rez, function (key, value) {\r\n\t\t\turl = url.replace('$' + key, value || '');\r\n\t\t});\r\n\r\n\t\tif (params.length) {\r\n\t\t\turl += (url.indexOf('?') > 0 ? '&' : '?') + params;\r\n\t\t}\r\n\r\n\t\treturn url;\r\n\t};\r\n\r\n\t// Object containing properties for each media type\r\n\r\n\tvar defaults = {\r\n\t\tyoutube : {\r\n\t\t\tmatcher : /(youtube\\.com|youtu\\.be|youtube\\-nocookie\\.com)\\/(watch\\?(.*&)?v=|v\\/|u\\/|embed\\/?)?(videoseries\\?list=(.*)|[\\w-]{11}|\\?listType=(.*)&list=(.*))(.*)/i,\r\n\t\t\tparams  : {\r\n\t\t\t\tautoplay : 1,\r\n\t\t\t\tautohide : 1,\r\n\t\t\t\tfs  : 1,\r\n\t\t\t\trel : 0,\r\n\t\t\t\thd  : 1,\r\n\t\t\t\twmode : 'transparent',\r\n\t\t\t\tenablejsapi : 1,\r\n\t\t\t\thtml5 : 1\r\n\t\t\t},\r\n\t\t\tparamPlace : 8,\r\n\t\t\ttype  : 'iframe',\r\n\t\t\turl   : '//www.youtube.com/embed/$4',\r\n\t\t\tthumb : '//img.youtube.com/vi/$4/hqdefault.jpg'\r\n\t\t},\r\n\r\n\t\tvimeo : {\r\n\t\t\tmatcher : /^.+vimeo.com\\/(.*\\/)?([\\d]+)(.*)?/,\r\n\t\t\tparams  : {\r\n\t\t\t\tautoplay : 1,\r\n\t\t\t\thd : 1,\r\n\t\t\t\tshow_title    : 1,\r\n\t\t\t\tshow_byline   : 1,\r\n\t\t\t\tshow_portrait : 0,\r\n\t\t\t\tfullscreen    : 1,\r\n\t\t\t\tapi : 1\r\n\t\t\t},\r\n\t\t\tparamPlace : 3,\r\n\t\t\ttype : 'iframe',\r\n\t\t\turl : '//player.vimeo.com/video/$2'\r\n\t\t},\r\n\r\n\t\tmetacafe : {\r\n\t\t\tmatcher : /metacafe.com\\/watch\\/(\\d+)\\/(.*)?/,\r\n\t\t\ttype    : 'iframe',\r\n\t\t\turl     : '//www.metacafe.com/embed/$1/?ap=1'\r\n\t\t},\r\n\r\n\t\tdailymotion : {\r\n\t\t\tmatcher : /dailymotion.com\\/video\\/(.*)\\/?(.*)/,\r\n\t\t\tparams : {\r\n\t\t\t\tadditionalInfos : 0,\r\n\t\t\t\tautoStart : 1\r\n\t\t\t},\r\n\t\t\ttype : 'iframe',\r\n\t\t\turl  : '//www.dailymotion.com/embed/video/$1'\r\n\t\t},\r\n\r\n\t\tvine : {\r\n\t\t\tmatcher : /vine.co\\/v\\/([a-zA-Z0-9\\?\\=\\-]+)/,\r\n\t\t\ttype    : 'iframe',\r\n\t\t\turl     : '//vine.co/v/$1/embed/simple'\r\n\t\t},\r\n\r\n\t\tinstagram : {\r\n\t\t\tmatcher : /(instagr\\.am|instagram\\.com)\\/p\\/([a-zA-Z0-9_\\-]+)\\/?/i,\r\n\t\t\ttype    : 'image',\r\n\t\t\turl     : '//$1/p/$2/media/?size=l'\r\n\t\t},\r\n\r\n\t\t// Examples:\r\n\t\t// http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16\r\n\t\t// http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16\r\n\t\t// https://www.google.lv/maps/place/Googleplex/@37.4220041,-122.0833494,17z/data=!4m5!3m4!1s0x0:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840572\r\n\t\tgoogle_maps : {\r\n\t\t\tmatcher : /(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(((maps\\/(place\\/(.*)\\/)?\\@(.*),(\\d+.?\\d+?)z))|(\\?ll=))(.*)?/i,\r\n\t\t\ttype    : 'iframe',\r\n\t\t\turl     : function (rez) {\r\n\t\t\t\treturn '//maps.google.' + rez[2] + '/?ll=' + ( rez[9] ? rez[9] + '&z=' + Math.floor(  rez[10]  ) + ( rez[12] ? rez[12].replace(/^\\//, \"&\") : '' )  : rez[12] ) + '&output=' + ( rez[12] && rez[12].indexOf('layer=c') > 0 ? 'svembed' : 'embed' );\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t$(document).on('onInit.fb', function (e, instance) {\r\n\r\n\t\t$.each(instance.group, function( i, item ) {\r\n\r\n\t\t\tvar url\t = item.src || '',\r\n\t\t\t\ttype = false,\r\n\t\t\t\tmedia,\r\n\t\t\t\tthumb,\r\n\t\t\t\trez,\r\n\t\t\t\tparams,\r\n\t\t\t\turlParams,\r\n\t\t\t\to,\r\n\t\t\t\tprovider;\r\n\r\n\t\t\t// Skip items that already have content type\r\n\t\t\tif ( item.type ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tmedia = $.extend( true, {}, defaults, item.opts.media );\r\n\r\n\t\t\t// Look for any matching media type\r\n\t\t\t$.each(media, function ( n, el ) {\r\n\t\t\t\trez = url.match(el.matcher);\r\n\t\t\t\to   = {};\r\n\t\t\t\tprovider = n;\r\n\r\n\t\t\t\tif (!rez) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttype = el.type;\r\n\r\n\t\t\t\tif ( el.paramPlace && rez[ el.paramPlace ] ) {\r\n\t\t\t\t\turlParams = rez[ el.paramPlace ];\r\n\r\n\t\t\t\t\tif ( urlParams[ 0 ] == '?' ) {\r\n\t\t\t\t\t\turlParams = urlParams.substring(1);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\turlParams = urlParams.split('&');\r\n\r\n\t\t\t\t\tfor ( var m = 0; m < urlParams.length; ++m ) {\r\n\t\t\t\t\t\tvar p = urlParams[ m ].split('=', 2);\r\n\r\n\t\t\t\t\t\tif ( p.length == 2 ) {\r\n\t\t\t\t\t\t\to[ p[0] ] = decodeURIComponent( p[1].replace(/\\+/g, \" \") );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tparams = $.extend( true, {}, el.params, item.opts[ n ], o );\r\n\r\n\t\t\t\turl   = $.type(el.url) === \"function\" ? el.url.call(this, rez, params, item) : format(el.url, rez, params);\r\n\t\t\t\tthumb = $.type(el.thumb) === \"function\" ? el.thumb.call(this, rez, params, item) : format(el.thumb, rez);\r\n\r\n\t\t\t\tif ( provider === 'vimeo' ) {\r\n\t\t\t\t\turl = url.replace('&%23', '#');\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\r\n\t\t\t// If it is found, then change content type and update the url\r\n\r\n\t\t\tif ( type ) {\r\n\t\t\t\titem.src  = url;\r\n\t\t\t\titem.type = type;\r\n\r\n\t\t\t\tif ( !item.opts.thumb && !( item.opts.$thumb && item.opts.$thumb.length ) ) {\r\n\t\t\t\t\titem.opts.thumb = thumb;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( type === 'iframe' ) {\r\n\t\t\t\t\t$.extend(true, item.opts, {\r\n\t\t\t\t\t\tiframe : {\r\n\t\t\t\t\t\t\tpreload : false,\r\n\t\t\t\t\t\t\tattr : {\r\n\t\t\t\t\t\t\t\tscrolling : \"no\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\titem.contentProvider = provider;\r\n\r\n\t\t\t\t\titem.opts.slideClass += ' fancybox-slide--' + ( provider == 'google_maps' ? 'map' : 'video' );\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// If no content type is found, then set it to `image` as fallback\r\n\t\t\t\titem.type = 'image';\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t});\r\n\r\n}($));\r\n\r\n// ==========================================================================\r\n//\r\n// Guestures\r\n// Adds touch guestures, handles click and tap events\r\n//\r\n// ==========================================================================\r\n;(function (window, document, $) {\r\n\t'use strict';\r\n\r\n\tvar requestAFrame = (function () {\r\n        return window.requestAnimationFrame ||\r\n                window.webkitRequestAnimationFrame ||\r\n                window.mozRequestAnimationFrame ||\r\n                window.oRequestAnimationFrame ||\r\n                // if all else fails, use setTimeout\r\n                function (callback) {\r\n                    return window.setTimeout(callback, 1000 / 60);\r\n                };\r\n    })();\r\n\r\n\r\n    var cancelAFrame = (function () {\r\n        return window.cancelAnimationFrame ||\r\n                window.webkitCancelAnimationFrame ||\r\n                window.mozCancelAnimationFrame ||\r\n                window.oCancelAnimationFrame ||\r\n                function (id) {\r\n                    window.clearTimeout(id);\r\n                };\r\n    })();\r\n\r\n\r\n\tvar pointers = function( e ) {\r\n\t\tvar result = [];\r\n\r\n\t\te = e.originalEvent || e || window.e;\r\n\t\te = e.touches && e.touches.length ? e.touches : ( e.changedTouches && e.changedTouches.length ? e.changedTouches : [ e ] );\r\n\r\n\t\tfor ( var key in e ) {\r\n\r\n\t\t\tif ( e[ key ].pageX ) {\r\n\t\t\t\tresult.push( { x : e[ key ].pageX, y : e[ key ].pageY } );\r\n\r\n\t\t\t} else if ( e[ key ].clientX ) {\r\n\t\t\t\tresult.push( { x : e[ key ].clientX, y : e[ key ].clientY } );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\r\n\tvar distance = function( point2, point1, what ) {\r\n\t\tif ( !point1 || !point2 ) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tif ( what === 'x' ) {\r\n\t\t\treturn point2.x - point1.x;\r\n\r\n\t\t} else if ( what === 'y' ) {\r\n\t\t\treturn point2.y - point1.y;\r\n\t\t}\r\n\r\n\t\treturn Math.sqrt( Math.pow( point2.x - point1.x, 2 ) + Math.pow( point2.y - point1.y, 2 ) );\r\n\t};\r\n\r\n\tvar isClickable = function( $el ) {\r\n\t\tif ( $el.is('a,button,input,select,textarea') || $.isFunction( $el.get(0).onclick ) ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// Check for attributes like data-fancybox-next or data-fancybox-close\r\n\t\tfor ( var i = 0, atts = $el[0].attributes, n = atts.length; i < n; i++ ) {\r\n            if ( atts[i].nodeName.substr(0, 14) === 'data-fancybox-' ) {\r\n                return true;\r\n            }\r\n        }\r\n\r\n\t \treturn false;\r\n\t};\r\n\r\n\tvar hasScrollbars = function( el ) {\r\n\t\tvar overflowY = window.getComputedStyle( el )['overflow-y'];\r\n\t\tvar overflowX = window.getComputedStyle( el )['overflow-x'];\r\n\r\n\t\tvar vertical   = (overflowY === 'scroll' || overflowY === 'auto') && el.scrollHeight > el.clientHeight;\r\n\t\tvar horizontal = (overflowX === 'scroll' || overflowX === 'auto') && el.scrollWidth > el.clientWidth;\r\n\r\n\t\treturn vertical || horizontal;\r\n\t};\r\n\r\n\tvar isScrollable = function ( $el ) {\r\n\t\tvar rez = false;\r\n\r\n\t\twhile ( true ) {\r\n\t\t\trez\t= hasScrollbars( $el.get(0) );\r\n\r\n\t\t\tif ( rez ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t$el = $el.parent();\r\n\r\n\t\t\tif ( !$el.length || $el.hasClass( 'fancybox-stage' ) || $el.is( 'body' ) ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rez;\r\n\t};\r\n\r\n\r\n\tvar Guestures = function ( instance ) {\r\n\t\tvar self = this;\r\n\r\n\t\tself.instance = instance;\r\n\r\n\t\tself.$bg        = instance.$refs.bg;\r\n\t\tself.$stage     = instance.$refs.stage;\r\n\t\tself.$container = instance.$refs.container;\r\n\r\n\t\tself.destroy();\r\n\r\n\t\tself.$container.on( 'touchstart.fb.touch mousedown.fb.touch', $.proxy(self, 'ontouchstart') );\r\n\t};\r\n\r\n\tGuestures.prototype.destroy = function() {\r\n\t\tthis.$container.off( '.fb.touch' );\r\n\t};\r\n\r\n\tGuestures.prototype.ontouchstart = function( e ) {\r\n\t\tvar self = this;\r\n\r\n\t\tvar $target  = $( e.target );\r\n\t\tvar instance = self.instance;\r\n\t\tvar current  = instance.current;\r\n\t\tvar $content = current.$content;\r\n\r\n\t\tvar isTouchDevice = ( e.type == 'touchstart' );\r\n\r\n\t\t// Do not respond to both events\r\n\t\tif ( isTouchDevice ) {\r\n\t        self.$container.off( 'mousedown.fb.touch' );\r\n\t    }\r\n\r\n\t\t// Ignore clicks while zooming or closing\r\n\t\tif ( !current || self.instance.isAnimating || self.instance.isClosing ) {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Ignore right click\r\n\t\tif ( e.originalEvent && e.originalEvent.button == 2 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Ignore taping on links, buttons, input elements\r\n\t\tif ( !$target.length || isClickable( $target ) || isClickable( $target.parent() ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Ignore clicks on the scrollbar\r\n\t\tif ( e.originalEvent.clientX > $target[0].clientWidth + $target.offset().left ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tself.startPoints = pointers( e );\r\n\r\n\t\t// Prevent zooming if already swiping\r\n\t\tif ( !self.startPoints || ( self.startPoints.length > 1 && instance.isSliding ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tself.$target  = $target;\r\n\t\tself.$content = $content;\r\n\t\tself.canTap   = true;\r\n\r\n\t\t$(document).off( '.fb.touch' );\r\n\r\n\t\t$(document).on( isTouchDevice ? 'touchend.fb.touch touchcancel.fb.touch' : 'mouseup.fb.touch mouseleave.fb.touch',  $.proxy(self, \"ontouchend\"));\r\n\t\t$(document).on( isTouchDevice ? 'touchmove.fb.touch' : 'mousemove.fb.touch',  $.proxy(self, \"ontouchmove\"));\r\n\r\n\t\te.stopPropagation();\r\n\r\n\t\tif ( !(instance.current.opts.touch || instance.canPan() ) || !( $target.is( self.$stage ) || self.$stage.find( $target ).length ) ) {\r\n\r\n\t\t\t// Prevent ghosting\r\n\t\t\tif ( $target.is('img') ) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( !( $.fancybox.isMobile && ( isScrollable( self.$target ) || isScrollable( self.$target.parent() ) ) ) ) {\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\r\n\t\tself.canvasWidth  = Math.round( current.$slide[0].clientWidth );\r\n\t\tself.canvasHeight = Math.round( current.$slide[0].clientHeight );\r\n\r\n\t\tself.startTime = new Date().getTime();\r\n\t\tself.distanceX = self.distanceY = self.distance = 0;\r\n\r\n\t\tself.isPanning = false;\r\n\t\tself.isSwiping = false;\r\n\t\tself.isZooming = false;\r\n\r\n\t\tself.sliderStartPos  = self.sliderLastPos || { top: 0, left: 0 };\r\n\t\tself.contentStartPos = $.fancybox.getTranslate( self.$content );\r\n\t\tself.contentLastPos  = null;\r\n\r\n\t\tif ( self.startPoints.length === 1 && !self.isZooming ) {\r\n\t\t\tself.canTap = !instance.isSliding;\r\n\r\n\t\t\tif ( current.type === 'image' && ( self.contentStartPos.width > self.canvasWidth + 1 || self.contentStartPos.height > self.canvasHeight + 1 ) ) {\r\n\r\n\t\t\t\t$.fancybox.stop( self.$content );\r\n\r\n\t\t\t\tself.$content.css( 'transition-duration', '0ms' );\r\n\r\n\t\t\t\tself.isPanning = true;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tself.isSwiping = true;\r\n\t\t\t}\r\n\r\n\t\t\tself.$container.addClass('fancybox-controls--isGrabbing');\r\n\t\t}\r\n\r\n\t\tif ( self.startPoints.length === 2 && !instance.isAnimating && !current.hasError && current.type === 'image' && ( current.isLoaded || current.$ghost ) ) {\r\n\t\t\tself.isZooming = true;\r\n\r\n\t\t\tself.isSwiping = false;\r\n\t\t\tself.isPanning = false;\r\n\r\n\t\t\t$.fancybox.stop( self.$content );\r\n\r\n\t\t\tself.$content.css( 'transition-duration', '0ms' );\r\n\r\n\t\t\tself.centerPointStartX = ( ( self.startPoints[0].x + self.startPoints[1].x ) * 0.5 ) - $(window).scrollLeft();\r\n\t\t\tself.centerPointStartY = ( ( self.startPoints[0].y + self.startPoints[1].y ) * 0.5 ) - $(window).scrollTop();\r\n\r\n\t\t\tself.percentageOfImageAtPinchPointX = ( self.centerPointStartX - self.contentStartPos.left ) / self.contentStartPos.width;\r\n\t\t\tself.percentageOfImageAtPinchPointY = ( self.centerPointStartY - self.contentStartPos.top  ) / self.contentStartPos.height;\r\n\r\n\t\t\tself.startDistanceBetweenFingers = distance( self.startPoints[0], self.startPoints[1] );\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tGuestures.prototype.ontouchmove = function( e ) {\r\n\r\n\t\tvar self = this;\r\n\r\n\t\tself.newPoints = pointers( e );\r\n\r\n\t\tif ( $.fancybox.isMobile && ( isScrollable( self.$target ) || isScrollable( self.$target.parent() ) ) ) {\r\n\t\t\te.stopPropagation();\r\n\r\n\t\t\tself.canTap = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( !( self.instance.current.opts.touch || self.instance.canPan() ) || !self.newPoints || !self.newPoints.length ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tself.distanceX = distance( self.newPoints[0], self.startPoints[0], 'x' );\r\n\t\tself.distanceY = distance( self.newPoints[0], self.startPoints[0], 'y' );\r\n\r\n\t\tself.distance = distance( self.newPoints[0], self.startPoints[0] );\r\n\r\n\t\t// Skip false ontouchmove events (Chrome)\r\n\t\tif ( self.distance > 0 ) {\r\n\r\n\t\t\tif ( !( self.$target.is( self.$stage ) || self.$stage.find( self.$target ).length ) ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tif ( self.isSwiping ) {\r\n\t\t\t\tself.onSwipe();\r\n\r\n\t\t\t} else if ( self.isPanning ) {\r\n\t\t\t\tself.onPan();\r\n\r\n\t\t\t} else if ( self.isZooming ) {\r\n\t\t\t\tself.onZoom();\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tGuestures.prototype.onSwipe = function() {\r\n\r\n\t\tvar self = this;\r\n\r\n\t\tvar swiping = self.isSwiping;\r\n\t\tvar left    = self.sliderStartPos.left || 0;\r\n\t\tvar angle;\r\n\r\n\t\tif ( swiping === true ) {\r\n\r\n\t\t\tif ( Math.abs( self.distance ) > 10 )  {\r\n\r\n\t\t\t\tself.canTap = false;\r\n\r\n\t\t\t\tif ( self.instance.group.length < 2 && self.instance.opts.touch.vertical ) {\r\n\t\t\t\t\tself.isSwiping  = 'y';\r\n\r\n\t\t\t\t} else if ( self.instance.isSliding || self.instance.opts.touch.vertical === false || ( self.instance.opts.touch.vertical === 'auto' && $( window ).width() > 800 ) ) {\r\n\t\t\t\t\tself.isSwiping  = 'x';\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tangle = Math.abs( Math.atan2( self.distanceY, self.distanceX ) * 180 / Math.PI );\r\n\r\n\t\t\t\t\tself.isSwiping = ( angle > 45 && angle < 135 ) ? 'y' : 'x';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself.instance.isSliding = self.isSwiping;\r\n\r\n\t\t\t\t// Reset points to avoid jumping, because we dropped first swipes to calculate the angle\r\n\t\t\t\tself.startPoints = self.newPoints;\r\n\r\n\t\t\t\t$.each(self.instance.slides, function( index, slide ) {\r\n\t\t\t\t\t$.fancybox.stop( slide.$slide );\r\n\r\n\t\t\t\t\tslide.$slide.css( 'transition-duration', '0ms' );\r\n\r\n\t\t\t\t\tslide.inTransition = false;\r\n\r\n\t\t\t\t\tif ( slide.pos === self.instance.current.pos ) {\r\n\t\t\t\t\t\tself.sliderStartPos.left = $.fancybox.getTranslate( slide.$slide ).left;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//self.instance.current.isMoved = true;\r\n\r\n\t\t\t\t// Stop slideshow\r\n\t\t\t\tif ( self.instance.SlideShow && self.instance.SlideShow.isActive ) {\r\n\t\t\t\t\tself.instance.SlideShow.stop();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif ( swiping == 'x' ) {\r\n\r\n\t\t\t\t// Sticky edges\r\n\t\t\t\tif ( self.distanceX > 0 && ( self.instance.group.length < 2 || ( self.instance.current.index === 0 && !self.instance.current.opts.loop ) ) ) {\r\n\t\t\t\t\tleft = left + Math.pow( self.distanceX, 0.8 );\r\n\r\n\t\t\t\t} else if ( self.distanceX < 0 && ( self.instance.group.length < 2 || ( self.instance.current.index === self.instance.group.length - 1 && !self.instance.current.opts.loop ) ) ) {\r\n\t\t\t\t\tleft = left - Math.pow( -self.distanceX, 0.8 );\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tleft = left + self.distanceX;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tself.sliderLastPos = {\r\n\t\t\t\ttop  : swiping == 'x' ? 0 : self.sliderStartPos.top + self.distanceY,\r\n\t\t\t\tleft : left\r\n\t\t\t};\r\n\r\n\t\t\tif ( self.requestId ) {\r\n\t\t\t\tcancelAFrame( self.requestId );\r\n\r\n\t\t\t\tself.requestId = null;\r\n\t\t\t}\r\n\r\n\t\t\tself.requestId = requestAFrame(function() {\r\n\r\n\t\t\t\tif ( self.sliderLastPos ) {\r\n\t\t\t\t\t$.each(self.instance.slides, function( index, slide ) {\r\n\t\t\t\t\t\tvar pos = slide.pos - self.instance.currPos;\r\n\r\n\t\t\t\t\t\t$.fancybox.setTranslate( slide.$slide, {\r\n\t\t\t\t\t\t\ttop  : self.sliderLastPos.top,\r\n\t\t\t\t\t\t\tleft : self.sliderLastPos.left + ( pos * self.canvasWidth ) + ( pos * slide.opts.gutter )\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tself.$container.addClass( 'fancybox-is-sliding' );\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tGuestures.prototype.onPan = function() {\r\n\r\n\t\tvar self = this;\r\n\r\n\t\tvar newOffsetX, newOffsetY, newPos;\r\n\r\n\t\tself.canTap = false;\r\n\r\n\t\tif ( self.contentStartPos.width > self.canvasWidth ) {\r\n\t\t\tnewOffsetX = self.contentStartPos.left + self.distanceX;\r\n\r\n\t\t} else {\r\n\t\t\tnewOffsetX = self.contentStartPos.left;\r\n\t\t}\r\n\r\n\t\tnewOffsetY = self.contentStartPos.top + self.distanceY;\r\n\r\n\t\tnewPos = self.limitMovement( newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height );\r\n\r\n\t\tnewPos.scaleX = self.contentStartPos.scaleX;\r\n\t\tnewPos.scaleY = self.contentStartPos.scaleY;\r\n\r\n\t\tself.contentLastPos = newPos;\r\n\r\n\t\tif ( self.requestId ) {\r\n\t\t\tcancelAFrame( self.requestId );\r\n\r\n\t\t\tself.requestId = null;\r\n\t\t}\r\n\r\n\t\tself.requestId = requestAFrame(function() {\r\n\t\t\t$.fancybox.setTranslate( self.$content, self.contentLastPos );\r\n\t\t});\r\n\t};\r\n\r\n\t// Make panning sticky to the edges\r\n\tGuestures.prototype.limitMovement = function( newOffsetX, newOffsetY, newWidth, newHeight ) {\r\n\r\n\t\tvar self = this;\r\n\r\n\t\tvar minTranslateX, minTranslateY, maxTranslateX, maxTranslateY;\r\n\r\n\t\tvar canvasWidth  = self.canvasWidth;\r\n\t\tvar canvasHeight = self.canvasHeight;\r\n\r\n\t\tvar currentOffsetX = self.contentStartPos.left;\r\n\t\tvar currentOffsetY = self.contentStartPos.top;\r\n\r\n\t\tvar distanceX = self.distanceX;\r\n\t\tvar distanceY = self.distanceY;\r\n\r\n\t\t// Slow down proportionally to traveled distance\r\n\r\n\t\tminTranslateX = Math.max(0, canvasWidth  * 0.5 - newWidth  * 0.5 );\r\n\t\tminTranslateY = Math.max(0, canvasHeight * 0.5 - newHeight * 0.5 );\r\n\r\n\t\tmaxTranslateX = Math.min( canvasWidth  - newWidth,  canvasWidth  * 0.5 - newWidth  * 0.5 );\r\n\t\tmaxTranslateY = Math.min( canvasHeight - newHeight, canvasHeight * 0.5 - newHeight * 0.5 );\r\n\r\n\t\tif ( newWidth > canvasWidth ) {\r\n\r\n\t\t\t//   ->\r\n\t\t\tif ( distanceX > 0 && newOffsetX > minTranslateX ) {\r\n\t\t\t\tnewOffsetX = minTranslateX - 1 + Math.pow( -minTranslateX + currentOffsetX + distanceX, 0.8 ) || 0;\r\n\t\t\t}\r\n\r\n\t\t\t//    <-\r\n\t\t\tif ( distanceX  < 0 && newOffsetX < maxTranslateX ) {\r\n\t\t\t\tnewOffsetX = maxTranslateX + 1 - Math.pow( maxTranslateX - currentOffsetX - distanceX, 0.8 ) || 0;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( newHeight > canvasHeight ) {\r\n\r\n\t\t\t//   \\/\r\n\t\t\tif ( distanceY > 0 && newOffsetY > minTranslateY ) {\r\n\t\t\t\tnewOffsetY = minTranslateY - 1 + Math.pow(-minTranslateY + currentOffsetY + distanceY, 0.8 ) || 0;\r\n\t\t\t}\r\n\r\n\t\t\t//   /\\\r\n\t\t\tif ( distanceY < 0 && newOffsetY < maxTranslateY ) {\r\n\t\t\t\tnewOffsetY = maxTranslateY + 1 - Math.pow ( maxTranslateY - currentOffsetY - distanceY, 0.8 ) || 0;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop  : newOffsetY,\r\n\t\t\tleft : newOffsetX\r\n\t\t};\r\n\r\n\t};\r\n\r\n\r\n\tGuestures.prototype.limitPosition = function( newOffsetX, newOffsetY, newWidth, newHeight ) {\r\n\r\n\t\tvar self = this;\r\n\r\n\t\tvar canvasWidth  = self.canvasWidth;\r\n\t\tvar canvasHeight = self.canvasHeight;\r\n\r\n\t\tif ( newWidth > canvasWidth ) {\r\n\t\t\tnewOffsetX = newOffsetX > 0 ? 0 : newOffsetX;\r\n\t\t\tnewOffsetX = newOffsetX < canvasWidth - newWidth ? canvasWidth - newWidth : newOffsetX;\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// Center horizontally\r\n\t\t\tnewOffsetX = Math.max( 0, canvasWidth / 2 - newWidth / 2 );\r\n\r\n\t\t}\r\n\r\n\t\tif ( newHeight > canvasHeight ) {\r\n\t\t\tnewOffsetY = newOffsetY > 0 ? 0 : newOffsetY;\r\n\t\t\tnewOffsetY = newOffsetY < canvasHeight - newHeight ? canvasHeight - newHeight : newOffsetY;\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// Center vertically\r\n\t\t\tnewOffsetY = Math.max( 0, canvasHeight / 2 - newHeight / 2 );\r\n\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop  : newOffsetY,\r\n\t\t\tleft : newOffsetX\r\n\t\t};\r\n\r\n\t};\r\n\r\n\tGuestures.prototype.onZoom = function() {\r\n\r\n\t\tvar self = this;\r\n\r\n\t\t// Calculate current distance between points to get pinch ratio and new width and height\r\n\r\n\t\tvar currentWidth  = self.contentStartPos.width;\r\n\t\tvar currentHeight = self.contentStartPos.height;\r\n\r\n\t\tvar currentOffsetX = self.contentStartPos.left;\r\n\t\tvar currentOffsetY = self.contentStartPos.top;\r\n\r\n\t\tvar endDistanceBetweenFingers = distance( self.newPoints[0], self.newPoints[1] );\r\n\r\n\t\tvar pinchRatio = endDistanceBetweenFingers / self.startDistanceBetweenFingers;\r\n\r\n\t\tvar newWidth  = Math.floor( currentWidth  * pinchRatio );\r\n\t\tvar newHeight = Math.floor( currentHeight * pinchRatio );\r\n\r\n\t\t// This is the translation due to pinch-zooming\r\n\t\tvar translateFromZoomingX = (currentWidth  - newWidth)  * self.percentageOfImageAtPinchPointX;\r\n\t\tvar translateFromZoomingY = (currentHeight - newHeight) * self.percentageOfImageAtPinchPointY;\r\n\r\n\t\t//Point between the two touches\r\n\r\n\t\tvar centerPointEndX = ((self.newPoints[0].x + self.newPoints[1].x) / 2) - $(window).scrollLeft();\r\n\t\tvar centerPointEndY = ((self.newPoints[0].y + self.newPoints[1].y) / 2) - $(window).scrollTop();\r\n\r\n\t\t// And this is the translation due to translation of the centerpoint\r\n\t\t// between the two fingers\r\n\r\n\t\tvar translateFromTranslatingX = centerPointEndX - self.centerPointStartX;\r\n\t\tvar translateFromTranslatingY = centerPointEndY - self.centerPointStartY;\r\n\r\n\t\t// The new offset is the old/current one plus the total translation\r\n\r\n\t\tvar newOffsetX = currentOffsetX + ( translateFromZoomingX + translateFromTranslatingX );\r\n\t\tvar newOffsetY = currentOffsetY + ( translateFromZoomingY + translateFromTranslatingY );\r\n\r\n\t\tvar newPos = {\r\n\t\t\ttop    : newOffsetY,\r\n\t\t\tleft   : newOffsetX,\r\n\t\t\tscaleX : self.contentStartPos.scaleX * pinchRatio,\r\n\t\t\tscaleY : self.contentStartPos.scaleY * pinchRatio\r\n\t\t};\r\n\r\n\t\tself.canTap = false;\r\n\r\n\t\tself.newWidth  = newWidth;\r\n\t\tself.newHeight = newHeight;\r\n\r\n\t\tself.contentLastPos = newPos;\r\n\r\n\t\tif ( self.requestId ) {\r\n\t\t\tcancelAFrame( self.requestId );\r\n\r\n\t\t\tself.requestId = null;\r\n\t\t}\r\n\r\n\t\tself.requestId = requestAFrame(function() {\r\n\t\t\t$.fancybox.setTranslate( self.$content, self.contentLastPos );\r\n\t\t});\r\n\r\n\t};\r\n\r\n\tGuestures.prototype.ontouchend = function( e ) {\r\n\r\n\t\tvar self = this;\r\n\t\tvar dMs  = Math.max( (new Date().getTime() ) - self.startTime, 1);\r\n\r\n\t\tvar swiping = self.isSwiping;\r\n\t\tvar panning = self.isPanning;\r\n\t\tvar zooming = self.isZooming;\r\n\r\n\t\tself.endPoints = pointers( e );\r\n\r\n\t\tself.$container.removeClass( 'fancybox-controls--isGrabbing' );\r\n\r\n\t\t$(document).off( '.fb.touch' );\r\n\r\n\t\tif ( self.requestId ) {\r\n\t\t\tcancelAFrame( self.requestId );\r\n\r\n\t\t\tself.requestId = null;\r\n\t\t}\r\n\r\n\t\tself.isSwiping = false;\r\n\t\tself.isPanning = false;\r\n\t\tself.isZooming = false;\r\n\r\n\t\tif ( self.canTap )  {\r\n\t\t\treturn self.onTap( e );\r\n\t\t}\r\n\r\n\t\tself.speed = 366;\r\n\r\n\t\t// Speed in px/ms\r\n\t\tself.velocityX = self.distanceX / dMs * 0.5;\r\n\t\tself.velocityY = self.distanceY / dMs * 0.5;\r\n\r\n\t\tself.speedX = Math.max( self.speed * 0.5, Math.min( self.speed * 1.5, ( 1 / Math.abs( self.velocityX ) ) * self.speed ) );\r\n\r\n\t\tif ( panning ) {\r\n\t\t\tself.endPanning();\r\n\r\n\t\t} else if ( zooming ) {\r\n\t\t\tself.endZooming();\r\n\r\n\t\t} else {\r\n\t\t\tself.endSwiping( swiping );\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t};\r\n\r\n\tGuestures.prototype.endSwiping = function( swiping ) {\r\n\r\n\t\tvar self = this;\r\n\t\tvar ret = false;\r\n\r\n\t\tself.instance.isSliding = false;\r\n\t\tself.sliderLastPos      = null;\r\n\r\n\t\t// Close if swiped vertically / navigate if horizontally\r\n\t\tif ( swiping == 'y' && Math.abs( self.distanceY ) > 50 ) {\r\n\r\n\t\t\t// Continue vertical movement\r\n\t\t\t$.fancybox.animate( self.instance.current.$slide, {\r\n\t\t\t\ttop     : self.sliderStartPos.top + self.distanceY + ( self.velocityY * 150 ),\r\n\t\t\t\topacity : 0\r\n\t\t\t}, 150 );\r\n\r\n\t\t\tret = self.instance.close( true, 300 );\r\n\r\n\t\t} else if ( swiping == 'x' && self.distanceX > 50 && self.instance.group.length > 1 ) {\r\n\t\t\tret = self.instance.previous( self.speedX );\r\n\r\n\t\t} else if ( swiping == 'x' && self.distanceX < -50  && self.instance.group.length > 1 ) {\r\n\t\t\tret = self.instance.next( self.speedX );\r\n\t\t}\r\n\r\n\t\tif ( ret === false && ( swiping == 'x' || swiping == 'y' ) ) {\r\n\t\t\tself.instance.jumpTo( self.instance.current.index, 150 );\r\n\t\t}\r\n\r\n\t\tself.$container.removeClass( 'fancybox-is-sliding' );\r\n\r\n\t};\r\n\r\n\t// Limit panning from edges\r\n\t// ========================\r\n\r\n\tGuestures.prototype.endPanning = function() {\r\n\r\n\t\tvar self = this;\r\n\t\tvar newOffsetX, newOffsetY, newPos;\r\n\r\n\t\tif ( !self.contentLastPos ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( self.instance.current.opts.touch.momentum === false ) {\r\n\t\t\tnewOffsetX = self.contentLastPos.left;\r\n\t\t\tnewOffsetY = self.contentLastPos.top;\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// Continue movement\r\n\t\t\tnewOffsetX = self.contentLastPos.left + ( self.velocityX * self.speed );\r\n\t\t\tnewOffsetY = self.contentLastPos.top  + ( self.velocityY * self.speed );\r\n\t\t}\r\n\r\n\t\tnewPos = self.limitPosition( newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height );\r\n\r\n\t\t newPos.width  = self.contentStartPos.width;\r\n\t\t newPos.height = self.contentStartPos.height;\r\n\r\n\t\t$.fancybox.animate( self.$content, newPos, 330 );\r\n\t};\r\n\r\n\r\n\tGuestures.prototype.endZooming = function() {\r\n\r\n\t\tvar self = this;\r\n\r\n\t\tvar current = self.instance.current;\r\n\r\n\t\tvar newOffsetX, newOffsetY, newPos, reset;\r\n\r\n\t\tvar newWidth  = self.newWidth;\r\n\t\tvar newHeight = self.newHeight;\r\n\r\n\t\tif ( !self.contentLastPos ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tnewOffsetX = self.contentLastPos.left;\r\n\t\tnewOffsetY = self.contentLastPos.top;\r\n\r\n\t\treset = {\r\n\t\t   \ttop    : newOffsetY,\r\n\t\t   \tleft   : newOffsetX,\r\n\t\t   \twidth  : newWidth,\r\n\t\t   \theight : newHeight,\r\n\t\t\tscaleX : 1,\r\n\t\t\tscaleY : 1\r\n\t   };\r\n\r\n\t   // Reset scalex/scaleY values; this helps for perfomance and does not break animation\r\n\t   $.fancybox.setTranslate( self.$content, reset );\r\n\r\n\t\tif ( newWidth < self.canvasWidth && newHeight < self.canvasHeight ) {\r\n\t\t\tself.instance.scaleToFit( 150 );\r\n\r\n\t\t} else if ( newWidth > current.width || newHeight > current.height ) {\r\n\t\t\tself.instance.scaleToActual( self.centerPointStartX, self.centerPointStartY, 150 );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tnewPos = self.limitPosition( newOffsetX, newOffsetY, newWidth, newHeight );\r\n\r\n\t\t\t// Switch from scale() to width/height or animation will not work correctly\r\n\t\t\t$.fancybox.setTranslate( self.content, $.fancybox.getTranslate( self.$content ) );\r\n\r\n\t\t\t$.fancybox.animate( self.$content, newPos, 150 );\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tGuestures.prototype.onTap = function(e) {\r\n\t\tvar self    = this;\r\n\t\tvar $target = $( e.target );\r\n\r\n\t\tvar instance = self.instance;\r\n\t\tvar current  = instance.current;\r\n\r\n\t\tvar endPoints = ( e && pointers( e ) ) || self.startPoints;\r\n\r\n\t\tvar tapX = endPoints[0] ? endPoints[0].x - self.$stage.offset().left : 0;\r\n\t\tvar tapY = endPoints[0] ? endPoints[0].y - self.$stage.offset().top  : 0;\r\n\r\n\t\tvar where;\r\n\r\n\t\tvar process = function ( prefix ) {\r\n\r\n\t\t\tvar action = current.opts[ prefix ];\r\n\r\n\t\t\tif ( $.isFunction( action ) ) {\r\n\t\t\t\taction = action.apply( instance, [ current, e ] );\r\n\t\t\t}\r\n\r\n\t\t\tif ( !action) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tswitch ( action ) {\r\n\r\n\t\t\t\tcase \"close\" :\r\n\r\n\t\t\t\t\tinstance.close( self.startEvent );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"toggleControls\" :\r\n\r\n\t\t\t\t\tinstance.toggleControls( true );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"next\" :\r\n\r\n\t\t\t\t\tinstance.next();\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"nextOrClose\" :\r\n\r\n\t\t\t\t\tif ( instance.group.length > 1 ) {\r\n\t\t\t\t\t\tinstance.next();\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tinstance.close( self.startEvent );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"zoom\" :\r\n\r\n\t\t\t\t\tif ( current.type == 'image' && ( current.isLoaded || current.$ghost ) ) {\r\n\r\n\t\t\t\t\t\tif ( instance.canPan() ) {\r\n\t\t\t\t\t\t\tinstance.scaleToFit();\r\n\r\n\t\t\t\t\t\t} else if ( instance.isScaledDown() ) {\r\n\t\t\t\t\t\t\tinstance.scaleToActual( tapX, tapY );\r\n\r\n\t\t\t\t\t\t} else if ( instance.group.length < 2 ) {\r\n\t\t\t\t\t\t\tinstance.close( self.startEvent );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\t\t// Ignore right click\r\n\t\tif ( e.originalEvent && e.originalEvent.button == 2 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Skip if current slide is not in the center\r\n\t\tif ( instance.isSliding ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Skip if clicked on the scrollbar\r\n\t\tif ( tapX > $target[0].clientWidth + $target.offset().left ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Check where is clicked\r\n\t\tif ( $target.is( '.fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container' ) ) {\r\n\t\t\twhere = 'Outside';\r\n\r\n\t\t} else if ( $target.is( '.fancybox-slide' ) ) {\r\n\t\t\twhere = 'Slide';\r\n\r\n\t\t} else if  ( instance.current.$content && instance.current.$content.has( e.target ).length ) {\r\n\t\t \twhere = 'Content';\r\n\r\n\t\t} else {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Check if this is a double tap\r\n\t\tif ( self.tapped ) {\r\n\r\n\t\t\t// Stop previously created single tap\r\n\t\t\tclearTimeout( self.tapped );\r\n\t\t\tself.tapped = null;\r\n\r\n\t\t\t// Skip if distance between taps is too big\r\n\t\t\tif ( Math.abs( tapX - self.tapX ) > 50 || Math.abs( tapY - self.tapY ) > 50 || instance.isSliding ) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\r\n\t\t\t// OK, now we assume that this is a double-tap\r\n\t\t\tprocess( 'dblclick' + where );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// Single tap will be processed if user has not clicked second time within 300ms\r\n\t\t\t// or there is no need to wait for double-tap\r\n\t\t\tself.tapX = tapX;\r\n\t\t\tself.tapY = tapY;\r\n\r\n\t\t\tif ( current.opts[ 'dblclick' + where ] && current.opts[ 'dblclick' + where ] !== current.opts[ 'click' + where ] ) {\r\n\t\t\t\tself.tapped = setTimeout(function() {\r\n\t\t\t\t\tself.tapped = null;\r\n\r\n\t\t\t\t\tprocess( 'click' + where );\r\n\r\n\t\t\t\t}, 300);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tprocess( 'click' + where );\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t};\r\n\r\n\t$(document).on('onActivate.fb', function (e, instance) {\r\n\t\tif ( instance && !instance.Guestures ) {\r\n\t\t\tinstance.Guestures = new Guestures( instance );\r\n\t\t}\r\n\t});\r\n\r\n\t$(document).on('beforeClose.fb', function (e, instance) {\r\n\t\tif ( instance && instance.Guestures ) {\r\n\t\t\tinstance.Guestures.destroy();\r\n\t\t}\r\n\t});\r\n\r\n\r\n}(window, document, $));\r\n\r\n// ==========================================================================\r\n//\r\n// SlideShow\r\n// Enables slideshow functionality\r\n//\r\n// Example of usage:\r\n// $.fancybox.getInstance().SlideShow.start()\r\n//\r\n// ==========================================================================\r\n;(function (document, $) {\r\n\t'use strict';\r\n\r\n\tvar SlideShow = function( instance ) {\r\n\t\tthis.instance = instance;\r\n\t\tthis.init();\r\n\t};\r\n\r\n\t$.extend( SlideShow.prototype, {\r\n\t\ttimer    : null,\r\n\t\tisActive : false,\r\n\t\t$button  : null,\r\n\t\tspeed    : 3000,\r\n\r\n\t\tinit : function() {\r\n\t\t\tvar self = this;\r\n\r\n\t\t\tself.$button = self.instance.$refs.toolbar.find('[data-fancybox-play]').on('click', function() {\r\n\t\t\t\tself.toggle();\r\n\t\t\t});\r\n\r\n\t\t\tif ( self.instance.group.length < 2 || !self.instance.group[ self.instance.currIndex ].opts.slideShow ) {\r\n\t\t\t\tself.$button.hide();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tset : function() {\r\n\t\t\tvar self = this;\r\n\r\n\t\t\t// Check if reached last element\r\n\t\t\tif ( self.instance && self.instance.current && (self.instance.current.opts.loop || self.instance.currIndex < self.instance.group.length - 1 )) {\r\n\t\t\t\tself.timer = setTimeout(function() {\r\n\t\t\t\t\tself.instance.next();\r\n\r\n\t\t\t\t}, self.instance.current.opts.slideShow.speed || self.speed);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tself.stop();\r\n\t\t\t\tself.instance.idleSecondsCounter = 0;\r\n\t\t\t\tself.instance.showControls();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tclear : function() {\r\n\t\t\tvar self = this;\r\n\r\n\t\t\tclearTimeout( self.timer );\r\n\r\n\t\t\tself.timer = null;\r\n\t\t},\r\n\r\n\t\tstart : function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar current = self.instance.current;\r\n\r\n\t\t\tif ( self.instance && current && ( current.opts.loop || current.index < self.instance.group.length - 1 )) {\r\n\r\n\t\t\t\tself.isActive = true;\r\n\r\n\t\t\t\tself.$button\r\n\t\t\t\t\t.attr( 'title', current.opts.i18n[ current.opts.lang ].PLAY_STOP )\r\n\t\t\t\t\t.addClass( 'fancybox-button--pause' );\r\n\r\n\t\t\t\tif ( current.isComplete ) {\r\n\t\t\t\t\tself.set();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tstop : function() {\r\n\t\t\tvar self = this;\r\n\t\t\tvar current = self.instance.current;\r\n\r\n\t\t\tself.clear();\r\n\r\n\t\t\tself.$button\r\n\t\t\t\t.attr( 'title', current.opts.i18n[ current.opts.lang ].PLAY_START )\r\n\t\t\t\t.removeClass( 'fancybox-button--pause' );\r\n\r\n\t\t\tself.isActive = false;\r\n\t\t},\r\n\r\n\t\ttoggle : function() {\r\n\t\t\tvar self = this;\r\n\r\n\t\t\tif ( self.isActive ) {\r\n\t\t\t\tself.stop();\r\n\r\n\t\t\t} else {\r\n\t\t\t\tself.start();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t$(document).on({\r\n\t\t'onInit.fb' : function(e, instance) {\r\n\t\t\tif ( instance && !instance.SlideShow ) {\r\n\t\t\t\tinstance.SlideShow = new SlideShow( instance );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t'beforeShow.fb' : function(e, instance, current, firstRun) {\r\n\t\t\tvar SlideShow = instance && instance.SlideShow;\r\n\r\n\t\t\tif ( firstRun ) {\r\n\r\n\t\t\t\tif ( SlideShow && current.opts.slideShow.autoStart ) {\r\n\t\t\t\t\tSlideShow.start();\r\n\t\t\t\t}\r\n\r\n\t\t\t} else if ( SlideShow && SlideShow.isActive )  {\r\n\t\t\t\tSlideShow.clear();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t'afterShow.fb' : function(e, instance, current) {\r\n\t\t\tvar SlideShow = instance && instance.SlideShow;\r\n\r\n\t\t\tif ( SlideShow && SlideShow.isActive ) {\r\n\t\t\t\tSlideShow.set();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t'afterKeydown.fb' : function(e, instance, current, keypress, keycode) {\r\n\t\t\tvar SlideShow = instance && instance.SlideShow;\r\n\r\n\t\t\t// \"P\" or Spacebar\r\n\t\t\tif ( SlideShow && current.opts.slideShow && ( keycode === 80 || keycode === 32 ) && !$(document.activeElement).is( 'button,a,input' ) ) {\r\n\t\t\t\tkeypress.preventDefault();\r\n\r\n\t\t\t\tSlideShow.toggle();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t'beforeClose.fb onDeactivate.fb' : function(e, instance) {\r\n\t\t\tvar SlideShow = instance && instance.SlideShow;\r\n\r\n\t\t\tif ( SlideShow ) {\r\n\t\t\t\tSlideShow.stop();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t// Page Visibility API to pause slideshow when window is not active\r\n\t$(document).on(\"visibilitychange\", function() {\r\n\t\tvar instance  = $.fancybox.getInstance();\r\n\t\tvar SlideShow = instance && instance.SlideShow;\r\n\r\n\t\tif ( SlideShow && SlideShow.isActive ) {\r\n\t\t\tif ( document.hidden ) {\r\n\t\t\t\tSlideShow.clear();\r\n\r\n\t\t\t} else {\r\n\t\t\t\tSlideShow.set();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n}(document, $));\r\n\r\n// ==========================================================================\r\n//\r\n// FullScreen\r\n// Adds fullscreen functionality\r\n//\r\n// ==========================================================================\r\n;(function (document, $) {\r\n\t'use strict';\r\n\r\n\t// Collection of methods supported by user browser\r\n\tvar fn = (function () {\r\n\r\n\t\tvar fnMap = [\r\n\t\t\t[\r\n\t\t\t\t'requestFullscreen',\r\n\t\t\t\t'exitFullscreen',\r\n\t\t\t\t'fullscreenElement',\r\n\t\t\t\t'fullscreenEnabled',\r\n\t\t\t\t'fullscreenchange',\r\n\t\t\t\t'fullscreenerror'\r\n\t\t\t],\r\n\t\t\t// new WebKit\r\n\t\t\t[\r\n\t\t\t\t'webkitRequestFullscreen',\r\n\t\t\t\t'webkitExitFullscreen',\r\n\t\t\t\t'webkitFullscreenElement',\r\n\t\t\t\t'webkitFullscreenEnabled',\r\n\t\t\t\t'webkitfullscreenchange',\r\n\t\t\t\t'webkitfullscreenerror'\r\n\r\n\t\t\t],\r\n\t\t\t// old WebKit (Safari 5.1)\r\n\t\t\t[\r\n\t\t\t\t'webkitRequestFullScreen',\r\n\t\t\t\t'webkitCancelFullScreen',\r\n\t\t\t\t'webkitCurrentFullScreenElement',\r\n\t\t\t\t'webkitCancelFullScreen',\r\n\t\t\t\t'webkitfullscreenchange',\r\n\t\t\t\t'webkitfullscreenerror'\r\n\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'mozRequestFullScreen',\r\n\t\t\t\t'mozCancelFullScreen',\r\n\t\t\t\t'mozFullScreenElement',\r\n\t\t\t\t'mozFullScreenEnabled',\r\n\t\t\t\t'mozfullscreenchange',\r\n\t\t\t\t'mozfullscreenerror'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'msRequestFullscreen',\r\n\t\t\t\t'msExitFullscreen',\r\n\t\t\t\t'msFullscreenElement',\r\n\t\t\t\t'msFullscreenEnabled',\r\n\t\t\t\t'MSFullscreenChange',\r\n\t\t\t\t'MSFullscreenError'\r\n\t\t\t]\r\n\t\t];\r\n\r\n\t\tvar val;\r\n\t\tvar ret = {};\r\n\t\tvar i, j;\r\n\r\n\t\tfor ( i = 0; i < fnMap.length; i++ ) {\r\n\t\t\tval = fnMap[ i ];\r\n\r\n\t\t\tif ( val && val[ 1 ] in document ) {\r\n\t\t\t\tfor ( j = 0; j < val.length; j++ ) {\r\n\t\t\t\t\tret[ fnMap[ 0 ][ j ] ] = val[ j ];\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn ret;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t})();\r\n\r\n\t// If browser does not have Full Screen API, then simply unset default button template and stop\r\n\tif ( !fn ) {\r\n\t\t$.fancybox.defaults.btnTpl.fullScreen = false;\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar FullScreen = {\r\n\t\trequest : function ( elem ) {\r\n\r\n\t\t\telem = elem || document.documentElement;\r\n\r\n\t\t\telem[ fn.requestFullscreen ]( elem.ALLOW_KEYBOARD_INPUT );\r\n\r\n\t\t},\r\n\t\texit : function () {\r\n\r\n\t\t\tdocument[ fn.exitFullscreen ]();\r\n\r\n\t\t},\r\n\t\ttoggle : function ( elem ) {\r\n\r\n\t\t\telem = elem || document.documentElement;\r\n\r\n\t\t\tif ( this.isFullscreen() ) {\r\n\t\t\t\tthis.exit();\r\n\r\n\t\t\t} else {\r\n\t\t\t\tthis.request( elem );\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tisFullscreen : function()  {\r\n\r\n\t\t\treturn Boolean( document[ fn.fullscreenElement ] );\r\n\r\n\t\t},\r\n\t\tenabled : function()  {\r\n\r\n\t\t\treturn Boolean( document[ fn.fullscreenEnabled ] );\r\n\r\n\t\t}\r\n\t};\r\n\r\n\t$(document).on({\r\n\t\t'onInit.fb' : function(e, instance) {\r\n\t\t\tvar $container;\r\n\r\n\t\t\tvar $button = instance.$refs.toolbar.find('[data-fancybox-fullscreen]');\r\n\r\n\t\t\tif ( instance && !instance.FullScreen && instance.group[ instance.currIndex ].opts.fullScreen ) {\r\n\t\t\t\t$container = instance.$refs.container;\r\n\r\n\t\t\t\t$container.on('click.fb-fullscreen', '[data-fancybox-fullscreen]', function(e) {\r\n\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tFullScreen.toggle( $container[ 0 ] );\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif ( instance.opts.fullScreen && instance.opts.fullScreen.autoStart === true ) {\r\n\t\t\t\t\tFullScreen.request( $container[ 0 ] );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Expose API\r\n\t\t\t\tinstance.FullScreen = FullScreen;\r\n\r\n\t\t\t} else {\r\n\t\t\t\t$button.hide();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\t'afterKeydown.fb' : function(e, instance, current, keypress, keycode) {\r\n\r\n\t\t\t// \"P\" or Spacebar\r\n\t\t\tif ( instance && instance.FullScreen && keycode === 70 ) {\r\n\t\t\t\tkeypress.preventDefault();\r\n\r\n\t\t\t\tinstance.FullScreen.toggle( instance.$refs.container[ 0 ] );\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\t'beforeClose.fb' : function( instance ) {\r\n\t\t\tif ( instance && instance.FullScreen ) {\r\n\t\t\t\tFullScreen.exit();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t$(document).on(fn.fullscreenchange, function() {\r\n\t\tvar instance = $.fancybox.getInstance();\r\n\r\n\t\t// If image is zooming, then force to stop and reposition properly\r\n\t\tif ( instance.current && instance.current.type === 'image' && instance.isAnimating ) {\r\n\t\t\tinstance.current.$content.css( 'transition', 'none' );\r\n\r\n\t\t\tinstance.isAnimating = false;\r\n\r\n\t\t\tinstance.update( true, true, 0 );\r\n\t\t}\r\n\r\n\t});\r\n\r\n}(document, $));\r\n\r\n// ==========================================================================\r\n//\r\n// Thumbs\r\n// Displays thumbnails in a grid\r\n//\r\n// ==========================================================================\r\n;(function (document, $) {\r\n\t'use strict';\r\n\r\n\tvar FancyThumbs = function( instance ) {\r\n\t\tthis.instance = instance;\r\n\t\tthis.init();\r\n\t};\r\n\r\n\t$.extend( FancyThumbs.prototype, {\r\n\r\n\t\t$button\t\t: null,\r\n\t\t$grid\t\t: null,\r\n\t\t$list\t\t: null,\r\n\t\tisVisible\t: false,\r\n\r\n\t\tinit : function() {\r\n\t\t\tvar self = this;\r\n\r\n\t\t\tvar first  = self.instance.group[0],\r\n\t\t\t\tsecond = self.instance.group[1];\r\n\r\n\t\t\tself.$button = self.instance.$refs.toolbar.find( '[data-fancybox-thumbs]' );\r\n\r\n\t\t\tif ( self.instance.group.length > 1 && self.instance.group[ self.instance.currIndex ].opts.thumbs && (\r\n\t\t    \t\t( first.type == 'image'  || first.opts.thumb  || first.opts.$thumb ) &&\r\n\t\t    \t\t( second.type == 'image' || second.opts.thumb || second.opts.$thumb )\r\n\t\t\t)) {\r\n\r\n\t\t\t\tself.$button.on('click', function() {\r\n\t\t\t\t\tself.toggle();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tself.isActive = true;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tself.$button.hide();\r\n\r\n\t\t\t\tself.isActive = false;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tcreate : function() {\r\n\t\t\tvar instance = this.instance,\r\n\t\t\t\tlist,\r\n\t\t\t\tsrc;\r\n\r\n\t\t\tthis.$grid = $('<div class=\"fancybox-thumbs\"></div>').appendTo( instance.$refs.container );\r\n\r\n\t\t\tlist = '<ul>';\r\n\r\n\t\t\t$.each(instance.group, function( i, item ) {\r\n\r\n\t\t\t\tsrc = item.opts.thumb || ( item.opts.$thumb ? item.opts.$thumb.attr('src') : null );\r\n\r\n\t\t\t\tif ( !src && item.type === 'image' ) {\r\n\t\t\t\t\tsrc = item.src;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( src && src.length ) {\r\n\t\t\t\t\tlist += '<li data-index=\"' + i + '\"  tabindex=\"0\" class=\"fancybox-thumbs-loading\"><img data-src=\"' + src + '\" /></li>';\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\t\tlist += '</ul>';\r\n\r\n\t\t\tthis.$list = $( list ).appendTo( this.$grid ).on('click', 'li', function() {\r\n\t\t\t\tinstance.jumpTo( $(this).data('index') );\r\n\t\t\t});\r\n\r\n\t\t\tthis.$list.find('img').hide().one('load', function() {\r\n\r\n\t\t\t\tvar $parent\t\t= $(this).parent().removeClass('fancybox-thumbs-loading'),\r\n\t\t\t\t\tthumbWidth\t= $parent.outerWidth(),\r\n\t\t\t\t\tthumbHeight\t= $parent.outerHeight(),\r\n\t\t\t\t\twidth,\r\n\t\t\t\t\theight,\r\n\t\t\t\t\twidthRatio,\r\n\t\t\t\t\theightRatio;\r\n\r\n\t\t\t\twidth  = this.naturalWidth\t|| this.width;\r\n\t\t\t\theight = this.naturalHeight\t|| this.height;\r\n\r\n\t\t\t\t//Calculate thumbnail width/height and center it\r\n\r\n\t\t\t\twidthRatio  = width  / thumbWidth;\r\n\t\t\t\theightRatio = height / thumbHeight;\r\n\r\n\t\t\t\tif (widthRatio >= 1 && heightRatio >= 1) {\r\n\t\t\t\t\tif (widthRatio > heightRatio) {\r\n\t\t\t\t\t\twidth  = width / heightRatio;\r\n\t\t\t\t\t\theight = thumbHeight;\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\twidth  = thumbWidth;\r\n\t\t\t\t\t\theight = height / widthRatio;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$(this).css({\r\n\t\t\t\t\twidth         : Math.floor(width),\r\n\t\t\t\t\theight        : Math.floor(height),\r\n\t\t\t\t\t'margin-top'  : Math.min( 0, Math.floor(thumbHeight * 0.3 - height * 0.3 ) ),\r\n\t\t\t\t\t'margin-left' : Math.min( 0, Math.floor(thumbWidth  * 0.5 - width  * 0.5 ) )\r\n\t\t\t\t}).show();\r\n\r\n\t\t\t})\r\n\t\t\t.each(function() {\r\n\t\t\t\tthis.src = $( this ).data( 'src' );\r\n\t\t\t});\r\n\r\n\t\t},\r\n\r\n\t\tfocus : function() {\r\n\r\n\t\t\tif ( this.instance.current ) {\r\n\t\t\t\tthis.$list\r\n\t\t\t\t\t.children()\r\n\t\t\t\t\t.removeClass('fancybox-thumbs-active')\r\n\t\t\t\t\t.filter('[data-index=\"' + this.instance.current.index  + '\"]')\r\n\t\t\t\t\t.addClass('fancybox-thumbs-active')\r\n\t\t\t\t\t.focus();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tclose : function() {\r\n\t\t\tthis.$grid.hide();\r\n\t\t},\r\n\r\n\t\tupdate : function() {\r\n\r\n\t\t\tthis.instance.$refs.container.toggleClass( 'fancybox-show-thumbs', this.isVisible );\r\n\r\n\t\t\tif ( this.isVisible ) {\r\n\r\n\t\t\t\tif ( !this.$grid ) {\r\n\t\t\t\t\tthis.create();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.instance.trigger( 'onThumbsShow' );\r\n\r\n\t\t\t\tthis.focus();\r\n\r\n\t\t\t} else if ( this.$grid ) {\r\n\t\t\t\tthis.instance.trigger( 'onThumbsHide' );\r\n\t\t\t}\r\n\r\n\t\t\t// Update content position\r\n\t\t\tthis.instance.update();\r\n\r\n\t\t},\r\n\r\n\t\thide : function() {\r\n\t\t\tthis.isVisible = false;\r\n\t\t\tthis.update();\r\n\t\t},\r\n\r\n\t\tshow : function() {\r\n\t\t\tthis.isVisible = true;\r\n\t\t\tthis.update();\r\n\t\t},\r\n\r\n\t\ttoggle : function() {\r\n\t\t\tthis.isVisible = !this.isVisible;\r\n\t\t\tthis.update();\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t$(document).on({\r\n\r\n\t\t'onInit.fb' : function(e, instance) {\r\n\t\t\tif ( instance && !instance.Thumbs ) {\r\n\t\t\t\tinstance.Thumbs = new FancyThumbs( instance );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t'beforeShow.fb' : function(e, instance, item, firstRun) {\r\n\t\t\tvar Thumbs = instance && instance.Thumbs;\r\n\r\n\t\t\tif ( !Thumbs || !Thumbs.isActive ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( item.modal ) {\r\n\t\t\t\tThumbs.$button.hide();\r\n\r\n\t\t\t\tThumbs.hide();\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( firstRun && instance.opts.thumbs.autoStart === true ) {\r\n\t\t\t\tThumbs.show();\r\n\t\t\t}\r\n\r\n\t\t\tif ( Thumbs.isVisible ) {\r\n\t\t\t\tThumbs.focus();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t'afterKeydown.fb' : function(e, instance, current, keypress, keycode) {\r\n\t\t\tvar Thumbs = instance && instance.Thumbs;\r\n\r\n\t\t\t// \"G\"\r\n\t\t\tif ( Thumbs && Thumbs.isActive && keycode === 71 ) {\r\n\t\t\t\tkeypress.preventDefault();\r\n\r\n\t\t\t\tThumbs.toggle();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t'beforeClose.fb' : function( e, instance ) {\r\n\t\t\tvar Thumbs = instance && instance.Thumbs;\r\n\r\n\t\t\tif ( Thumbs && Thumbs.isVisible && instance.opts.thumbs.hideOnClose !== false ) {\r\n\t\t\t\tThumbs.close();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t});\r\n\r\n}(document, $));\r\n\r\n// ==========================================================================\r\n//\r\n// Hash\r\n// Enables linking to each modal\r\n//\r\n// ==========================================================================\r\n;(function (document, window, $) {\r\n\t'use strict';\r\n\r\n\t// Simple $.escapeSelector polyfill (for jQuery prior v3)\r\n\tif ( !$.escapeSelector ) {\r\n\t\t$.escapeSelector = function( sel ) {\r\n\t\t\tvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\r\n\t\t\tvar fcssescape = function( ch, asCodePoint ) {\r\n\t\t\t\tif ( asCodePoint ) {\r\n\t\t\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\r\n\t\t\t\t\tif ( ch === \"\\0\" ) {\r\n\t\t\t\t\t\treturn \"\\uFFFD\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\r\n\t\t\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Other potentially-special ASCII characters get backslash-escaped\r\n\t\t\t\treturn \"\\\\\" + ch;\r\n\t\t\t};\r\n\r\n\t\t\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\r\n\t\t};\r\n\t}\r\n\r\n\t// Variable containing last hash value set by fancyBox\r\n\t// It will be used to determine if fancyBox needs to close after hash change is detected\r\n    var currentHash = null;\r\n\r\n\t// Throtlling the history change\r\n\tvar timerID = null;\r\n\r\n\t// Get info about gallery name and current index from url\r\n    function parseUrl() {\r\n        var hash    = window.location.hash.substr( 1 );\r\n        var rez     = hash.split( '-' );\r\n        var index   = rez.length > 1 && /^\\+?\\d+$/.test( rez[ rez.length - 1 ] ) ? parseInt( rez.pop( -1 ), 10 ) || 1 : 1;\r\n        var gallery = rez.join( '-' );\r\n\r\n\t\t// Index is starting from 1\r\n\t\tif ( index < 1 ) {\r\n\t\t\tindex = 1;\r\n\t\t}\r\n\r\n        return {\r\n            hash    : hash,\r\n            index   : index,\r\n            gallery : gallery\r\n        };\r\n    }\r\n\r\n\t// Trigger click evnt on links to open new fancyBox instance\r\n\tfunction triggerFromUrl( url ) {\r\n\t\tvar $el;\r\n\r\n        if ( url.gallery !== '' ) {\r\n\r\n\t\t\t// If we can find element matching 'data-fancybox' atribute, then trigger click event for that ..\r\n\t\t\t$el = $( \"[data-fancybox='\" + $.escapeSelector( url.gallery ) + \"']\" ).eq( url.index - 1 );\r\n\r\n            if ( $el.length ) {\r\n\t\t\t\t$el.trigger( 'click' );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// .. if not, try finding element by ID\r\n\t\t\t\t$( \"#\" + $.escapeSelector( url.gallery ) + \"\" ).trigger( 'click' );\r\n\r\n\t\t\t}\r\n\r\n        }\r\n\t}\r\n\r\n\t// Get gallery name from current instance\r\n\tfunction getGallery( instance ) {\r\n\t\tvar opts;\r\n\r\n\t\tif ( !instance ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\topts = instance.current ? instance.current.opts : instance.opts;\r\n\r\n\t\treturn opts.$orig ? opts.$orig.data( 'fancybox' ) : ( opts.hash || '' );\r\n\t}\r\n\r\n\t// Star when DOM becomes ready\r\n    $(function() {\r\n\r\n\t\t// Small delay is used to allow other scripts to process \"dom ready\" event\r\n\t\tsetTimeout(function() {\r\n\r\n\t\t\t// Check if this module is not disabled\r\n\t\t\tif ( $.fancybox.defaults.hash === false ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Update hash when opening/closing fancyBox\r\n\t\t    $(document).on({\r\n\t\t\t\t'onInit.fb' : function( e, instance ) {\r\n\t\t\t\t\tvar url, gallery;\r\n\r\n\t\t\t\t\tif ( instance.group[ instance.currIndex ].opts.hash === false ) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\turl     = parseUrl();\r\n\t\t\t\t\tgallery = getGallery( instance );\r\n\r\n\t\t\t\t\t// Make sure gallery start index matches index from hash\r\n\t\t\t\t\tif ( gallery && url.gallery && gallery == url.gallery ) {\r\n\t\t\t\t\t\tinstance.currIndex = url.index - 1;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t},\r\n\r\n\t\t\t\t'beforeShow.fb' : function( e, instance, current, firstRun ) {\r\n\t\t\t\t\tvar gallery;\r\n\r\n\t\t\t\t\tif ( current.opts.hash === false ) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t            gallery = getGallery( instance );\r\n\r\n\t\t            // Update window hash\r\n\t\t            if ( gallery && gallery !== '' ) {\r\n\r\n\t\t\t\t\t\tif ( window.location.hash.indexOf( gallery ) < 0 ) {\r\n\t\t\t                instance.opts.origHash = window.location.hash;\r\n\t\t\t            }\r\n\r\n\t\t\t\t\t\tcurrentHash = gallery + ( instance.group.length > 1 ? '-' + ( current.index + 1 ) : '' );\r\n\r\n\t\t\t\t\t\tif ( 'replaceState' in window.history ) {\r\n\t\t\t\t\t\t\tif ( timerID ) {\r\n\t\t\t\t\t\t\t\tclearTimeout( timerID );\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttimerID = setTimeout(function() {\r\n\t\t\t\t\t\t\t\twindow.history[ firstRun ? 'pushState' : 'replaceState' ]( {} , document.title, window.location.pathname + window.location.search + '#' +  currentHash );\r\n\r\n\t\t\t\t\t\t\t\ttimerID = null;\r\n\r\n\t\t\t\t\t\t\t}, 300);\r\n\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\twindow.location.hash = currentHash;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t            }\r\n\r\n\t\t        },\r\n\r\n\t\t\t\t'beforeClose.fb' : function( e, instance, current ) {\r\n\t\t\t\t\tvar gallery, origHash;\r\n\r\n\t\t\t\t\tif ( timerID ) {\r\n\t\t\t\t\t\tclearTimeout( timerID );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( current.opts.hash === false ) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tgallery  = getGallery( instance );\r\n\t\t\t\t\torigHash = instance && instance.opts.origHash ? instance.opts.origHash : '';\r\n\r\n\t\t            // Remove hash from location bar\r\n\t\t            if ( gallery && gallery !== '' ) {\r\n\r\n\t\t                if ( 'replaceState' in history ) {\r\n\t\t\t\t\t\t\twindow.history.replaceState( {} , document.title, window.location.pathname + window.location.search + origHash );\r\n\r\n\t\t                } else {\r\n\t\t\t\t\t\t\twindow.location.hash = origHash;\r\n\r\n\t\t\t\t\t\t\t// Keep original scroll position\r\n\t\t\t\t\t\t\t$( window ).scrollTop( instance.scrollTop ).scrollLeft( instance.scrollLeft );\r\n\t\t                }\r\n\t\t            }\r\n\r\n\t\t\t\t\tcurrentHash = null;\r\n\t\t        }\r\n\t\t    });\r\n\r\n\t\t\t// Check if need to close after url has changed\r\n\t\t\t$(window).on('hashchange.fb', function() {\r\n\t\t\t\tvar url = parseUrl();\r\n\r\n\t\t\t\tif ( $.fancybox.getInstance() ) {\r\n\t\t\t\t\tif ( currentHash && currentHash !== url.gallery + '-' + url.index && !( url.index === 1 && currentHash == url.gallery ) ) {\r\n\t\t\t\t\t\tcurrentHash = null;\r\n\r\n\t\t\t\t\t\t$.fancybox.close();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else if ( url.gallery !== '' ) {\r\n\t\t\t\t\ttriggerFromUrl( url );\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If navigating away from current page\r\n\t\t\t$(window).one('unload.fb popstate.fb', function() {\r\n\t\t\t\t$.fancybox.getInstance( 'close', true, 0 );\r\n\t\t\t});\r\n\r\n\t\t\t// Check current hash and trigger click event on matching element to start fancyBox, if needed\r\n\t\t\ttriggerFromUrl( parseUrl() );\r\n\r\n\t\t}, 50);\r\n\r\n    });\r\n\r\n\r\n}(document, window, $));\r\n","var $ = require('jquery');\r\n\r\n$(function () {\r\n\r\n    function resetModalScrollHeight() {\r\n        var element = $('.extended-content_content-intro-cards__inner__card__modal--parent')[0];\r\n        if ($(window).width() < 992 && element) {\r\n            $(element)\r\n                .css({ height: ($(window).height() + 20) + 'px' });\r\n        } else {\r\n            $(element)\r\n                .css({ height: 'auto' });\r\n        }\r\n    }\r\n\r\n\r\n    $('.extended-content_content-intro-cards__inner__card__link a.isModal').each(function () {\r\n\r\n        var thisLink = $(this);\r\n        $(this).on('click', function () {\r\n            resetModalScrollHeight();\r\n\r\n            document.getElementsByTagName('html')[0].setAttribute('class', 'noScroll');\r\n\r\n            var modalWrapper = thisLink.closest('.extended-content_content-intro-cards__inner__card')\r\n                .find('.1900-620-modal-wrapper');\r\n\r\n            document.getElementsByTagName('html')[0].setAttribute('class', 'noScroll');\r\n            var modalContent = '<div class=\"modal-content container\"><div class=\"row\"><div class=\"col-md-10 col-sm-12 col-xs-12\"><button data-fancybox-close class=\"fancybox-close-small\"></button>' +\r\n                modalWrapper.html() +\r\n                '</div></div></div>';\r\n            $.fancybox.open({\r\n                content: modalContent,\r\n                autoSize: false,\r\n                fitToView: false,\r\n                close: false,\r\n                type: 'html',\r\n                beforeClose: function () {\r\n                    document.getElementsByTagName('html')[0].setAttribute('class', '');\r\n                }\r\n            });\r\n        });\r\n    });\r\n\r\n    $(window).on('resize orientationchange', function () {\r\n        resetModalScrollHeight();\r\n    });\r\n\r\n});"]}