// KV arena UI features
$(document).ready(function() {

    /* -- CUF�N ---------------------------------------------------- */
    Cufon.replace('#content h1, #content h2, #content h3, #content h4, .shortcuts .btn a, #navigace > ul > li > a, #kalendar td a span, #kalendar_sm td a span, #udalost .udalost_datum span', { fontFamily: 'Dezen Pro Regular', cursor: 'text' });
    Cufon.now();

    
    /* -- NAVIGACE ------------------------------------------------- */
    var outTimers = [];
    var inTimers = [];
    $('#navigace .subnav li:odd').css({ 'background': '#b81f27' });
    $('#navigace .subnav li ul li:odd').css({ 'background': '#890e13' });
    $('#navigace > ul > li').each(function(i, el) {
        $(el).attr('class', i + 1);
    })
    $('#navigace > ul > li')
        .mouseenter(function() {
            var li = $(this);
            var nav = $('.subnav', this);
            $('a.subarrow', li).addClass('hover');
            nav.css({ 'top': '0', 'left': li.position().left + li.outerWidth() });
            if (outTimers[li.attr('class')]) {
                clearTimeout(outTimers[li.attr('class')]);
            }
            for (key in inTimers) {
                clearTimeout(inTimers[key]);
            }
            inTimers = [];
            inTimers[li.attr('class')] = setTimeout(function() {
                nav.show();
            }, 300);
        })
        .mouseleave(function() {
            var li = $(this);
            var nav = $('.subnav', li);
            $('a.subarrow', li).removeClass('hover');
            outTimers[li.attr('class')] = setTimeout(function() {
                outTimers[li.attr('class')] = null;
                nav.fadeOut(200);
            }, 300);
        });
    var footNavTimer;
    $('#copy_nav > li')
        .mouseenter(function() {
            $('.subnav', this).width($(this).width()).slideDown(100);
        })
        .mouseleave(function() {
            $('.subnav', this).fadeOut(200);
        });

        
    /* -- CAROUSEL ------------------------------------------------- */
    (function() {
        var //carouselId    = 'carousel',
            carouselId    = 'udalost',
            itemCls       = 'carousel-item',
            //navId         = 'carousel-nav',
            navId         = 'carousel',
            //navWrapperCls = 'carousel-nav-wrapper'
            navWrapperCls = 'carousel_items'
            //navItemCls    = 'carousel_item',
            navItemCls    = 'carousel_item',
            upBtnCls      = 'nav_up',
            downBtnCls    = 'nav_down',

            navPos        = 0,
            carPos        = 0,
            timer         = null,
        
        _items = function() { return '#' + carouselId + ' .' + itemCls; },
        _navItems = function() { return '#' + navId + ' .' + navItemCls; },
        _navUpBtn = function() { return '#' + navId + ' .' + upBtnCls; },
        _navDownBtn = function() { return '#' + navId + ' .' + downBtnCls; },
            
        indexNav = function() {
            $(_navItems() + ' img').each(function(i) {
                $(this).attr('class', i.toString());
            });
        },
        
        scrollY = function(obj, offset, revDir, duration, callback) {
            $(obj).animate({ top: ((revDir) ? '+' : '-') + '=' + offset.toString() }, duration, callback);
        },
        
        isInt = function(x) {
            var y = parseInt(x); 
            if (isNaN(y)) { return false; }
            return x == y && x.toString() == y.toString();
        },
        
        highlightNavItem = function(newPos) {
            if (timer) {
                if (newPos == navPos + 4) { // 4 = pocet radku navigace (v layoutu)
                    slideNav();
                } else if (carPos > 0 && newPos == 0) {
                    slideNav(true, $(_navItems()).length - 4); // 4 = pocet radku navigace (v layoutu)
                }
            }
            if (newPos != null) {
                $($(_navItems()).get(newPos)).addClass('active');
                $($(_navItems()).get(carPos)).removeClass('active');
                return;
            }
            $($(_navItems()).get(carPos)).addClass('active');
        },

        moveCarousel = function(pos) {
            var items = $(_items());
            if (pos == undefined) { pos = carPos + 1; }
            if (pos == carPos || pos < 0) { return; }

            // rewind
            if (pos >= items.length) {
                items.each(function(i) {
                    if (i == (items.length - 1)) { return; }
                    var offset = $(this).offset();
                    $(this).offset({ 'top': offset.top + items.length * 320, 'left': offset.left });
                });
                scrollY(items, 320, false, 250, function() {
                    var last = $(items.get(items.length - 1));
                    var offset = last.offset();
                    last.offset({ 'top': offset.top + items.length * 320, 'left': offset.left });
                });
                pos = 0;

            } else {
                var delta = pos - carPos;
                var offset = Math.abs(delta);
                scrollY(items, offset * 320, (delta < 0) ? true : false, offset * 250);
            }

            highlightNavItem(pos);
            carPos = pos;
        },

        slideNav = function(up, steps) {
            var down = !up;
            var items = $(_navItems());
            var steps = (isInt(steps)) ? steps : 1;
            if ((up && navPos == 0) || (down && (navPos + 4) >= items.length)) { return; }
            navPos += (down) ? steps : -steps;
            scrollY(items, 73 * steps, up, 150);
        },
        
        _foo = 56;
        
        
        // startup
        indexNav();
        highlightNavItem();
        timer = setInterval(function() {
            moveCarousel();
        }, 7000);
        
        // events binding
        $(_navUpBtn() + ', ' + _navDownBtn()).click(function() {
            clearInterval(timer);
            slideNav(($(this).hasClass(upBtnCls)) ? true : false);
            return false;
        });
        
        $(_navItems()).click(function() {
            clearInterval(timer);
            pos = $('img', this).attr('class');
            moveCarousel(pos);
        });
        
    }());

    
    /* -- KALENDAR ------------------------------------------------- */
    $('#kalendar .kal_img, #kalendar_sm .kal_img').mouseenter(function() {
        var tooltip = $('.tooltip', this);
        tooltip.show();
        $(this).mouseleave(function() {
            tooltip.hide();
        });
    });

    
    // (DEV) Grid tool
   /* $(window).keydown(function(event) {
        if (event.keyCode == '71') { // 'g' key
            event.preventDefault();
            if ($('#_grid').length === 0) { $('body').append('<div id="_grid" class="hidden" style="position: absolute; top: 0; left: 0; z-index: 987654321; width: ' + $('body').width() + 'px; height: ' + $('body').height() + 'px; background: transparent url(/scripts/images/_grid.png) 0 0 repeat-y;"><div>'); }
            $('#_grid').toggleClass('hidden');
        }
    });*/
});
