Файл: css/5grid/init.js
Строк: 835
<?php
/*****************************************************************/
/* 5grid 0.4.3 by n33.co | MIT+GPLv2 license licensed            */
/* init.js: Init script                                          */
/*****************************************************************/
/*********************/
/* Settings          */
/*********************/
    var _5grid_settings = {
        breakpoint_1000px:                1200,
        breakpoint_mobile:                480,
        prefix:                            'style',
        use:                            'mobile,desktop',
        viewport_is1000px:                1040,
        viewport_is1200px:                1280,
        ////////////////////////////////////////////////////////
        mobileUI:                        0,
        mobileUI_hideAddressBar:        0,
        mobileUI_openerText:            '=',
        mobileUI_openerWidth:            60,
        mobileUI_slideSpeed:            200,
        mobileUI_theme:                    'modern',
        mobileUI_themeNavColor:            '#1f1f1f',
        mobileUI_themeTitleBarColor:    '#444444',
        mobileUI_titleBarFixed:            1,
        mobileUI_titleBarHeight:        44,
        mobileUI_titleBarOverlaid:        0,
        ////////////////////////////////////////////////////////
        mobileUI_navInnerPad:            0,
        mobileUI_force:                    0,
        mobileUI_tapDelay:                200,
        mobileUI_orientationDelay:        0,
        debug_noExtLoad:                0
    };
/*********************/
/* Helper plugins    */
/*********************/
    /* jQuery resize event - v1.1 - 3/14/2010 http://benalman.com/projects/jquery-resize-plugin/ | Copyright (c) 2010 "Cowboy" Ben Alman | Dual licensed under the MIT and GPL licenses. | http://benalman.com/about/license/ */
    (function(jQuery,h,c){var a=jQuery([]),e=jQuery.resize=jQuery.extend(jQuery.resize,{}),i,k="setTimeout",j="resize",d=j+"-special-event",b="delay",f="throttleWindow";e[b]=250;e[f]=true;jQuery.event.special[j]={setup:function(){if(!e[f]&&this[k]){return false}var l=jQuery(this);a=a.add(l);jQuery.data(this,d,{w:l.width(),h:l.height()});if(a.length===1){g()}},teardown:function(){if(!e[f]&&this[k]){return false}var l=jQuery(this);a=a.not(l);l.removeData(d);if(!a.length){clearTimeout(i)}},add:function(l){if(!e[f]&&this[k]){return false}var n;function m(s,o,p){var q=jQuery(this),r=jQuery.data(this,d);r.w=o!==c?o:q.width();r.h=p!==c?p:q.height();n.apply(this,arguments)}if(jQuery.isFunction(l)){n=l;return m}else{n=l.handler;l.handler=m}}};function g(){i=h[k](function(){a.each(function(){var n=jQuery(this),m=n.width(),l=n.height(),o=jQuery.data(this,d);if(m!==o.w||l!==o.h){n.trigger(j,[o.w=m,o.h=l])}});g()},e[b])}})(jQuery,this);
/*********************/
/* Object Setup      */
/*********************/
    var _5gridC = function()
    {
        this.events = new Array();
        this.readyWait = false;
        this.isReady = false;
        this.isMobile = false;
        this.isDesktop = false;
        this.isFluid = false;
        this.is1000px = false;
        this.is1200px = false;
    }
    _5gridC.prototype.bind = function(name, f)
    {
        if (!this.events[name])
            this.events[name] = new Array();
        
        this.events[name].push(f);
    }
    _5gridC.prototype.trigger = function(name)
    {
        if (!this.isReady || !this.events[name] || this.events[name].length < 1)
            return;
            
        for (i in this.events[name])
            (this.events[name][i])();
    }
    _5gridC.prototype.ready = function(f, wait) {
        if (wait)
            this.readyWait = true;
        this.bind('ready', f);
    }
    
    // Custom events
        _5gridC.prototype.orientationChange = function(f) { this.bind('orientationChange', f); }
        _5gridC.prototype.mobileUINavOpen = function(f) { this.bind('mobileUINavOpen', f); }
        _5gridC.prototype.mobileUINavClose = function(f) { this.bind('mobileUINavClose', f); }
    _5gridC.prototype.readyCheck = function()
    {
        var x = this;
        
        window.setTimeout(function() {
            if (x.isReady)
                x.trigger('ready');
            else
                x.readyCheck();
        }, 50);
    }
    var _5grid = new _5gridC;
(function() {
/*********************/
/* Initialize        */
/*********************/
    // Vars
        var    _settings    = _5grid_settings,
            _window        = jQuery(window),
            _head        = jQuery('head'),
            _document    = jQuery(document);
        var    baseURL,
            doFluid, do1000px, do1200px, doMobile, doDesktop, doMobileOnly,
            isLocked = false,
            isTapLocked = false, tapId,
            isTouch = !!('ontouchstart' in window),
            headQueue = new Array();
        var v, w, wk, wv, x, y;
    // Tap handling
        jQuery.fn.tap_5grid = function(f, suffix, noMove) {
            var target = jQuery(this);
            if (isTouch)
            {
                target
                    .bind('touchstart' + (suffix ? '.' + suffix : ''), function() {
                        if (!isTapLocked)
                        {
                            isTapLocked = true;
                            if (_settings.mobileUI_tapDelay > -1)
                                tapId = window.setTimeout(function() { window.clearTimeout(tapId); isTapLocked = false; }, _settings.mobileUI_tapDelay);
                        }
                    })
                    .bind('touchend' + (suffix ? '.' + suffix : ''), function(e) {
                        if (isTapLocked)
                        {
                            isTapLocked = false;
                            window.clearTimeout(tapId);
                            (f)(e);
                        }
                    });
                    
                if (noMove)
                    target
                        .bind('touchmove' + (suffix ? '.' + suffix : ''), function(e) {
                            isTapLocked = false;
                            window.clearTimeout(tapId);
                        });
                    
            }
            else
                target.bind('click' + (suffix ? '.' + suffix : ''), f);
            return target;
        };
        jQuery.fn.untap_5grid = function(suffix) {
            var target = jQuery(this);
            
            if (isTouch)
            {
                target
                    .unbind('touchstart' + (suffix ? '.' + suffix : ''))
                    .unbind('touchend' + (suffix ? '.' + suffix : ''))
                    .unbind('touchmove' + (suffix ? '.' + suffix : ''));
            }
            else
                target.unbind('click' + (suffix ? '.' + suffix : ''));
                
            return target;
        };
        
    // Shortcut methods
        headQueue.pushI_5grid = function(s) { headQueue.push({ type: 'i', value: s }); };
        headQueue.pushE_5grid = function(s) { headQueue.push({ type: 'e', value: s }); }; 
        headQueue.process_5grid = function() {
            var doE;
            if (document.createStyleSheet)
                doE = function(s) { document.createStyleSheet(s); };
            else
                doE = function(s) { _head.append('<link rel="stylesheet" href="' + s + '" />'); };
            for (x in headQueue)
            {
                if (headQueue[x].type == 'i')
                    _head.append('<style>' + headQueue[x].value + '</style>');
                else if (headQueue[x].type == 'e')
                    (doE)(headQueue[x].value);
            }
        };
        jQuery.fn.disableSelection_5grid = function() { return jQuery(this).css('user-select', 'none').css('-khtml-user-select', 'none').css('-moz-user-select', 'none').css('-o-user-select', 'none').css('-webkit-user-select', 'none'); }
        jQuery.fn.enableSelection_5grid = function() { return jQuery(this).css('user-select', 'auto').css('-khtml-user-select', 'auto').css('-moz-user-select', 'auto').css('-o-user-select', 'auto').css('-webkit-user-select', 'auto'); }
        jQuery.fn.accelerate_5grid = function() { return jQuery(this).css('-webkit-transform', 'translateZ(0)').css('-webkit-backface-visibility', 'hidden').css('-webkit-perspective', '500'); }
    // Determine settings
        // DOM fix
            document.getElementsByTagName('script');
        // Get base URL, query string
            x = jQuery('script').filter(function() { return this.src.match(/5grid/init.js/); }).first();
            y = x.attr('src').split('?');
            baseURL = y[0].replace(/5grid/init.js/, '');
        // Override settings
            if (y.length > 1)
            {
                x = y[1].split('&');
                for (v in x)
                {
                    w = x[v].split('=');
                    wk = w[0].replace(/./, '_');
                    wv = w[1];
                    
                    // Thanks, @cmsalvado! :)
                    if (!isNaN(parseFloat(wv)) && isFinite(wv))
                        wv = parseInt(wv);
                    
                    _settings[wk] = wv;
                }
            }
    
    // Debug settings
        if (_settings.debug_noExtLoad == 1)
            headQueue.pushE_5grid = function(s) { };
    
    // Determine viewing modes
        doDesktop = doMobile = doFluid = do1000px = do1200px = doMobileOnly = false;
        v = _settings.use.split(',');
        
        if (jQuery.inArray('fluid', v) > -1)
            doFluid = true;
        if (jQuery.inArray('desktop', v) > -1)
            doDesktop = true;
        if (jQuery.inArray('1000px', v) > -1)
            do1000px = true;
        if (jQuery.inArray('1200px', v) > -1)
            do1200px = true;
        if (jQuery.inArray('mobile', v) > -1)
            doMobile = true;
        if (doMobile && !doFluid && !do1000px && !do1200px && !doDesktop)
            doMobileOnly = true;
    // Apply workarounds for broken/old browsers
        // Android, Webkit <= 534
            if (navigator.userAgent.match(/Android.+AppleWebKit/534/))
            {
                _settings.mobileUI_titleBarFixed = 0;
                _settings.mobileUI_orientationDelay = 750;
            }
        // iOS <= 5
            if (navigator.userAgent.match(/([0-9]+)_([0-9._]+) like Mac OS X/))
            {
                var version = RegExp.$1;
                if (version <= 5)
                    _settings.mobileUI_titleBarFixed = 0;
            }
        // IE <= 8
            if (navigator.userAgent.match(/MSIE ([0-9]+)./))
            {
                var version = RegExp.$1;
                // HTML5 Shiv
                    if (version < 9)
                        _head.append('<script type="text/javascript" src="' + baseURL + '5grid/html5shiv.js" />');
                // Versions that don't support CSS3 pseudo classes
                    if (version < 8)
                    {
                        jQuery(function() {
                            jQuery('.5grid, .5grid-layout, .do-5grid').after('<div style="clear: both;"></div>');
                            jQuery('.5grid-layout').css('position', 'relative');
                            jQuery('.5grid, .do-5grid').css('position', 'relative');
                            jQuery('.5grid > .row > :first-child, .5grid-layout > .row > :first-child, .do-5grid > .row > :first-child').css('margin-left', '0');
                            jQuery('.5grid > .row:first-child, .5grid-layout > .row:first-child, .do-5grid > .row:first-child').css('margin-top', '0');
                            jQuery('.5grid > .row:last-child, .5grid-layout > .row:last-child, .do-5grid > .row:last-child').css('margin-bottom', '0');
                        });
                    }
            }
    // Insert stylesheets
        headQueue.pushE_5grid(baseURL + '5grid/core.css')
        headQueue.pushE_5grid(baseURL + _settings.prefix + '.css');
/*********************/
/* Responsive        */
/*********************/
    (function() {
        var    ww = _window.width(),
            sw = screen.width,
            orientation = window.orientation,
            devicePixelRatio = (window.devicePixelRatio ? window.devicePixelRatio : 1);
        // Adjustments
            // Scale breakpoints using device pixel ratio
                _settings.breakpoint_1000px = _settings.breakpoint_1000px * devicePixelRatio;
                _settings.breakpoint_mobile = _settings.breakpoint_mobile * devicePixelRatio;
            // Always use device's width regardless of orientation
                if (screen.width > screen.height
                &&    Math.abs(orientation) == 90)
                    sw = screen.height;
            // Get real screen width on iOS devices
                if (navigator.userAgent.match(/(iPod|iPhone|iPad)/))
                    sw = sw * devicePixelRatio;
        // Mobile (exclusive)
            if ((doMobile && (ww <= _settings.breakpoint_mobile || sw <= _settings.breakpoint_mobile)) || doMobileOnly)
            {
                _5grid.isMobile = true;
                _head.prepend('<meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0" />');
                headQueue.pushE_5grid(baseURL + '5grid/core-mobile.css');
                
                if (_settings.mobileUI == 1)
                {
                    _settings.mobileUI_force = 1;
                    if (_settings.mobileUI_theme != 'none')
                    {
                        headQueue.pushE_5grid(baseURL + '5grid/mobileUI-' + _settings.mobileUI_theme + '.css');
                        if (_settings.mobileUI_themeTitleBarColor)
                            headQueue.pushI_5grid('#mobileUI-site-titlebar { background-color: ' + _settings.mobileUI_themeTitleBarColor + '; }');
                        if (_settings.mobileUI_themeNavColor)
                            headQueue.pushI_5grid('#mobileUI-site-nav { background-color: ' + _settings.mobileUI_themeNavColor + '; }');
                    }
                }
                headQueue.pushE_5grid(baseURL + _settings.prefix + '-mobile.css');
            }
        // Other
            else
            {
                // Fluid (exclusive)
                    if (doFluid)
                    {
                        _5grid.isFluid = true;
                        _head.prepend('<meta name="viewport" content="width=' + _settings.viewport_is1200px + '" />');
                        headQueue.pushE_5grid(baseURL + '5grid/core-desktop.css');
                        headQueue.pushE_5grid(baseURL + '5grid/core-fluid.css');
                        headQueue.pushE_5grid(baseURL + _settings.prefix + '-fluid.css');
                    }
                // Desktop
                    else if (doDesktop)
                    {
                        _5grid.isDesktop = true;
                        headQueue.pushE_5grid(baseURL + '5grid/core-desktop.css');
                        headQueue.pushE_5grid(baseURL + _settings.prefix + '-desktop.css');
                    
                        // 1200px
                            if (ww >= _settings.breakpoint_1000px)
                            {
                                _5grid.is1200px = true;
                                _head.prepend('<meta name="viewport" content="width=' + _settings.viewport_is1200px + '" />');
                                headQueue.pushE_5grid(baseURL + '5grid/core-1200px.css');
                                
                                // Load 1200px stylesheet if 1200px was explicitly enabled
                                    if (do1200px)
                                        headQueue.pushE_5grid(baseURL + _settings.prefix + '-1200px.css');
                            }
                        // 1000px
                            else
                            {
                                _5grid.is1000px = true;
                                _head.prepend('<meta name="viewport" content="width=' + _settings.viewport_is1000px + '" />');
                                headQueue.pushE_5grid(baseURL + '5grid/core-1000px.css');
                                // Load 1000px stylesheet if 1000px was explicitly enabled
                                    if (do1000px)
                                        headQueue.pushE_5grid(baseURL + _settings.prefix + '-1000px.css');
                            }
                    }
                // Other
                    else
                    {
                        // 1000px (exclusive)
                            if (do1000px && (ww < _settings.breakpoint_1000px || !do1200px))
                            {
                                _5grid.isDesktop = true;
                                _5grid.is1000px = true;
                                _head.prepend('<meta name="viewport" content="width=' + _settings.viewport_is1000px + '" />');
                                headQueue.pushE_5grid(baseURL + '5grid/core-desktop.css');
                                headQueue.pushE_5grid(baseURL + '5grid/core-1000px.css');
                                headQueue.pushE_5grid(baseURL + _settings.prefix + '-1000px.css');
                            }
                        // 1200px (exclusive)
                            else if (do1200px && (ww >= _settings.breakpoint_1000px || !do1000px))
                            {
                                _5grid.isDesktop = true;
                                _5grid.is1200px = true;
                                _head.prepend('<meta name="viewport" content="width=' + _settings.viewport_is1200px + '" />');
                                headQueue.pushE_5grid(baseURL + '5grid/core-desktop.css');
                                headQueue.pushE_5grid(baseURL + '5grid/core-1200px.css');
                                headQueue.pushE_5grid(baseURL + _settings.prefix + '-1200px.css');
                            }
                    }
            }
        jQuery(function() {
            var _body = jQuery('body');
            if (_5grid.isFluid)
                _body.addClass('is-fluid');
            if (_5grid.isDesktop)
                _body.addClass('is-desktop');
            if (_5grid.is1000px)
                _body.addClass('is-1000px');
            if (_5grid.is1200px)
                _body.addClass('is-1200px');
            if (_5grid.isMobile)
                _body.addClass('is-mobile');
            
            jQuery('.5grid-layout').addClass('5grid'); 
        });
    })();
/*********************/
/* MobileUI          */
/*********************/
    if (_settings.mobileUI_force == 1)
        jQuery(function() {
            var    _body = jQuery('body'),
                _viewer,
                _wrapper,
                _nav,
                _nav_inner,
                _opener,
                _titlebar,
                _content;
            var    speed = _settings.mobileUI_slideSpeed,
                easing = 'swing',
                ww = _window.width(),
                wh = _window.height(),
                _nav_isActing = false,
                _nav_isOpen = false;
        
            _body.wrapInner('<div id="mobileUI-site-content" />');
            _body.wrapInner('<div id="mobileUI-site-wrapper" />');
            _body.wrapInner('<div id="mobileUI-site-viewer" />');
        
            // Move primary content
                var    _main_content = jQuery('.mobileUI-main-content'),
                    _main_content_target = jQuery('.mobileUI-main-content-target');
                
                if (_main_content.length > 0)
                    if (_main_content_target.length > 0)
                        _main_content.prependTo(_main_content_target);
                    else
                        _main_content.prependTo(_main_content.parent());
        
            // Get site name, nav options
                var    x = jQuery('.mobileUI-site-name'), site_name = (x.length > 0 ? x.html() : ''),
                    site_nav_options = new Array();
                
                jQuery('.mobileUI-site-nav a').each(function() {
                    var t = jQuery(this), indent;
                    indent = Math.max(0,t.parents('li').length - 1);
                    site_nav_options.push(
                        '<div class="mobileUI-site-nav-link mobileUI-site-nav-link-depth-' + indent + '" xhref="' + t.attr('href') + '"><span class="indent-' + indent + '"></span>' + t.text() + '</div>'
                    );
                });
            // Configure elements
                if (site_nav_options.length > 0)
                {
                    _nav_inner = jQuery('<div id="mobileUI-site-nav-inner"><nav>' + site_nav_options.join('') + '</nav></div>');
                    _nav = jQuery('<div id="mobileUI-site-nav"></div>');
                    _nav_inner.appendTo(_nav);
                    _opener = jQuery('<div id="mobileUI-site-nav-opener">' + _settings.mobileUI_openerText + '</div>');
                }
                else
                {
                    _nav_inner = jQuery();
                    _nav = jQuery();
                    _opener = jQuery();
                }
                _content = jQuery('#mobileUI-site-content');
                _titlebar = jQuery('<div id="mobileUI-site-titlebar"><div id="mobileUI-site-title">' + site_name + '</div></div>');
                _wrapper = jQuery('#mobileUI-site-wrapper');
                _viewer = jQuery('#mobileUI-site-viewer');
                var    _nav_width = ww - _settings.mobileUI_openerWidth,
                    _nav_inner_pos,
                    _content_width = ww,
                    _wrapper_width = _nav_width + _content_width;
                // Wrapper
                    _wrapper
                        .accelerate_5grid()
                        .css('position', 'absolute')
                        .width(_wrapper_width);
                // Nav
                    _nav
                        .accelerate_5grid()
                        .width(_nav_width)
                        .prependTo(_wrapper)
                        .css('position', 'absolute')
                        .css('left', (-1 * _nav_width))
                        .prepend('<div style="position: absolute; top: 0px; right: -1px; width: 1px; height: 1px;"></div>');
                    // Inner
                        _nav_inner
                            .css('overflow', (isTouch ? 'hidden' : 'auto'))
                            .bind('touchstart', function(e) {
                                _nav_inner_pos = _nav_inner.scrollTop() + e.originalEvent.touches[0].pageY;
                            })
                            .bind('touchmove', function(e) {
                                e.preventDefault();
                                e.stopPropagation();
                                _nav_inner.scrollTop(_nav_inner_pos - e.originalEvent.touches[0].pageY);
                            });
                    // Links
                        _nav.find('.mobileUI-site-nav-link')
                            .disableSelection_5grid()
                            .css('cursor', 'pointer')
                            .each(function() {
                                var t = jQuery(this);
                                t.tap_5grid(function(e) {
                                    e.preventDefault();
                                    e.stopPropagation();
                                
                                    if (_nav_isOpen)
                                    {
                                        var href = t.attr('xhref');
                                        if (href && href.length > 0)
                                            _body.trigger('5grid_closeNav', [href]);
                                    }
                                });
                            });
                // Opener
                    _opener
                        .accelerate_5grid()
                        .css('position', 'absolute')
                        .css('z-index', 10001)
                        .css('cursor', 'pointer')
                        .disableSelection_5grid()
                        .appendTo(_titlebar)
                        .tap_5grid(function(e) {
                            e.stopPropagation();
                            e.preventDefault();
                            _body.trigger('5grid_toggleNav');
                        }, '', true);
                // Titlebar
                    _titlebar
                        .accelerate_5grid()
                        .width(_content_width)
                        .height(_settings.mobileUI_titleBarHeight)
                        .css('z-index', 10000)
                        .prependTo(_viewer);
                        
                    if (_settings.mobileUI_titleBarFixed)
                    {
                        _titlebar
                            .bind('goActive_5grid', function() {
                                _titlebar
                                    .css('position', 'fixed')
                                    .css('top', 0)
                                    .css('left', 0);
                            })
                            .bind('goInactive_5grid', function() {
                                _titlebar
                                    .css('position', 'absolute')
                                    .css('top', _window.scrollTop())
                                    .css('left', _nav.width);
                            })
                            .trigger('goActive_5grid');
                    }
                    else
                    {
                        _titlebar
                            .css('position', 'absolute')
                            .css('top', _window.scrollTop())
                            .css('left', _nav.width);
                    }
                // Content
                    _content
                        .width(_content_width)
                        .css('position', 'relative');
                        
                    if (_settings.mobileUI_titleBarOverlaid)
                        _content
                            .bind('resize', function() { _viewer.height(_content.height()); });
                    else
                        _content
                            .css('padding-top', _settings.mobileUI_titleBarHeight)
                            .bind('resize', function() { _viewer.height(_content.height() + _settings.mobileUI_titleBarHeight); });
                // Viewer
                    _viewer
                        .css('position', 'absolute')
                        .css('overflow', 'hidden')
                        .width(_content_width)
                        .height(_content.height() + _settings.mobileUI_titleBarHeight);
                // Body
                    _body
                        .bind('5grid_toggleNav', function() {
                            if (_nav_isOpen)
                                _body.trigger('5grid_closeNav');
                            else
                                _body.trigger('5grid_openNav');
                        })
                        .bind('5grid_openNav', function() {
                            
                            // Check locking
                                if (isLocked)
                                    return true;
                                
                                isLocked = true;
                            // Mark nav as acting
                                _nav_isActing = true;
                            // Disable scrolling
                                _body
                                    .bind('touchstart.5grid_nav_block', function(e) {
                                        e.stopPropagation();
                                        e.preventDefault();
                                    });
                                    
                                _window
                                    .bind('scroll.5grid_nav_block', function(e) {
                                        e.preventDefault();
                                        e.stopPropagation();
                                        
                                        if (_nav_isOpen)
                                            _body.trigger('5grid_closeNav', [null, true]);
                                    });
                            // Reposition nav
                                _nav
                                    .css('top', _window.scrollTop());
                                _nav_inner
                                    .height(window.innerHeight - _settings.mobileUI_navInnerPad)
                                    .scrollTop(0);
                            // Deactivate titlebar
                                _titlebar
                                    .trigger('goInactive_5grid');
                            // Animate
                                _wrapper.add(_titlebar)
                                    .animate({ left: _nav_width }, speed, easing, function() {
                                        // Unlock
                                            isLocked = false;
                                        
                                        // Correct body position (in case it was still scrolling when the nav opened)
                                            var x = parseInt(_nav.css('top'));
                                            if (x > 0)
                                                _window.scrollTop(parseInt(_nav.css('top')));
                                        
                                        // Mark nav as open, unmark as acting
                                            window.setTimeout(function() {
                                                _nav_isOpen = true;
                                                _nav_isActing = false;
                                            }, 300);
                                        
                                        // Add close event to content
                                            _content
                                                .tap_5grid(function(e) {
                                                    e.preventDefault();
                                                    e.stopPropagation();
                                                    _body.trigger('5grid_closeNav');
                                                }, '5grid_nav_cclose');
                        
                                        // Trigger event
                                            _5grid.trigger('mobileUINavOpen');
                                    });
                        })
                        .bind('5grid_closeNav', function(e, url, fast) {
                            
                            // Check locking
                                if (isLocked)
                                    return true;
                                isLocked = true;
                            // Mark nav as acting
                                _nav_isActing = true;
                            // Remove close event from content
                                _content.untap_5grid('5grid_nav_cclose');
                            // Animate
                                _wrapper.add(_titlebar)
                                    .animate({ left: 0 }, (fast ? 0 : speed), easing, function() {
                                        
                                        // Reactivate titlebar
                                            _titlebar
                                                .trigger('goActive_5grid');
                                        // Trigger event
                                            _5grid.trigger('mobileUINavclose');
                                        // Unlock
                                            isLocked = false;
                                        
                                        // Re-enable scrolling
                                            _body.unbind('touchstart.5grid_nav_block');
                                            _window.unbind('touchmove.5grid_nav_block');
                                        // Mark nav as closed, unmark as acting
                                            _nav_isOpen = false;
                                            _nav_isActing = false;
                                        
                                        // If a URL was passed, go to it
                                            if (url)
                                                window.setTimeout(function() {
                                                    window.location.href = url;
                                                }, 150);
                                    });
                        });
                    // Window
                        _window
                            .bind('orientationchange', function(e) {
                                window.setTimeout(function() {
                                    ww = _window.width();
                                    
                                    // Recalculate widths
                                        _nav_width = ww - _settings.mobileUI_openerWidth;
                                        _content_width = ww;
                                        _wrapper_width = _nav_width + _content_width;
                                    // Resize
                                        _wrapper.width(_wrapper_width);
                                        _content.width(_content_width);
                                        _nav
                                            .css('left', (-1 * _nav_width))
                                            .width(_nav_width);
                                        _titlebar.width(ww);
                                        _viewer.width(ww);
                                    // Trigger event
                                        _5grid.trigger('orientationChange');
                                
                                }, _settings.mobileUI_orientationDelay);
                            });
            // Remove mobileUI-hide elements
                jQuery('.mobileUI-hide').remove();
                
            // Remove address bar
                if (_settings.mobileUI_hideAddressBar == 1)
                    _window.load(function() {
                        if (_window.scrollTop() == 0)
                            window.scrollTo(0, 1);
                    });
        });
/*********************/
/* Head Queue        */
/*********************/
    headQueue.process_5grid();
    _5grid.isReady = true;
    jQuery(function() {
        if (_5grid.readyWait)
            jQuery(window).load(function() { _5grid.readyCheck(); });
        else
            _5grid.readyCheck();
    });
})();
?>