var QuickNav = {
    threshold: null,
    globalNavDisplay: 'block',
    basketDisplay: 'block',
    eventName: 'threshold',
    init: function(threshold, eventName) {
        QuickNav.threshold = threshold;
        var display = $('nav.global-nav').css('display');
        if (display && display != 'none') {
            // not all themes use display: block
            QuickNav.globalNavDisplay = display;
        }
        var $basket = QuickNav.findBasket();
        var display = $basket.css('display');
        if (display && display != 'none') {
            // not all themes use display: block
            QuickNav.basketDisplay = display;
        }

        QuickNav.toggle();

        // eventName options: threshold or resize
        if (eventName) {
            QuickNav.eventName = eventName;
        }
        $(window).bind(QuickNav.eventName, QuickNav.toggle);
    },
    findBasket: function() {
        var $globalNav = $('nav.global-nav');
        var $basket = $globalNav.find('> .basket');
        if (!$basket.length) {
            $basket = $globalNav.parent().find('> .basket');
        }
        return $basket;
    },
    toggle: function() {
        var $globalNav = $('nav.global-nav');
        var $quickNav = $('.quick-nav');
        var $basket = QuickNav.findBasket();

        if ($(window).width() < QuickNav.threshold) {
            if ($quickNav.length == 0) {
                var options = [];

                var hasSelected = false;
                $globalNav.find('li a').each(function() {
                    var $this = $(this);
                    if ($this.parent().hasClass('selected')) {
                        hasSelected = true;
                        options.push('<option value="'+$this.attr('href')+
                            '" selected>'+$this.html()+'</option>');
                    } else {
                        options.push('<option value="'+$this.attr('href')+'">'+
                            $this.html()+'</option>');
                    }
                });

                if (options.length) {
                    $quickNav = $('<nav class="quick-nav"></nav>');

                    if ($basket.length) {
                        $quickNav.append($basket.clone());
                    }

                    var $select = $('<select></select>');
                    if (!hasSelected) {
                        $select.append(
                            '<option value="" selected>Navigate</option>');
                    }
                    $select.append(options.join(''));
                    $quickNav.prepend($select);
                    $('.quicknav-prepend').prepend($quickNav);
                    $('.quicknav-append').append($quickNav);
                    $select.change(function() {
                        if ($(this).val()) {
                            window.location = $(this).val();
                        }
                    });
                }
            }
            $globalNav.hide();
            $basket.hide();
            $quickNav.show();
        } else {
            $quickNav.hide();
            $globalNav.css('display', QuickNav.globalNavDisplay);
            $basket.css('display', QuickNav.basketDisplay)
        }
    }
};

