$(document).ajaxError(function (request,settings,e) {
    alert('Error requesting URL: ' + e.url);
});

var Router = function (route,params) {
    //parametre
    if (typeof(params) == 'object') {
        var p = '';
        $.each(params,function (name,value) {
            if (p != '') {
                p += '&';
            }
            p += escape(name)+'='+escape(value);
        });
        return Router(route)+'?'+p;
    }
    else {
        return '/' + route;
    }
};
Router.route = function (route,params) {
    var url = Router(route,params);
    location.href = url;
}

/* Plugin na input hint */
jQuery.fn.inputHint = function () {
    this.each(function () {
        var self = $(this);
        if (self.is('input[type=text]')) {
            jQuery.inputHintShow(self);
            self.focus(function () {
                jQuery.inputHintHide(this);
            }).blur(function () {
                jQuery.inputHintShow(this);
            }).closest('form').submit(function () {
                jQuery.inputHintHide(self);
                return true;
            });
        }
    });
    return this;
};
jQuery.inputHintShow = function (inpt) {
    inpt = jQuery(inpt);
    if (inpt.val() == inpt.attr('title') || inpt.val() == '') {
        inpt.addClass('hint').val(inpt.attr('title'));
    }
}
jQuery.inputHintHide = function (inpt) {
    inpt = jQuery(inpt);
    inpt.removeClass('hint');
    if (inpt.val() == inpt.attr('title')) {
        inpt.val('');
    }
}

/* SlidingTabs */
jQuery.fn.topproductsCarousel = function () {
    this.each(function () {
        var $panel = $(this);
        var container = $panel.find('div.topproducts-carousel');
        var content = $panel.find('div.topproducts-carousel-content');
        var items = $panel.find('div.product-homepage');
        
        if (items.length) {
            var itemw = items.eq(0).outerWidth();
            var itemh = items.eq(0).outerHeight();
            items.each(function () {
                var h = $(this).outerHeight();
                if (h > itemh) {
                    itemh = h;
                }
            });
            items.height(itemh);
            
            var containerw = container.width();
            var contentw = items.length * itemw;
            //nastavime sirku kontaineru (kazdy item ma rovnaku sirku)
            container.height(itemh);
            content.width(contentw);
            
            //nastavime triggre
            $panel.find('.product-pager').click(function () {
                //var curleft = parseInt(content.css('left'));
                var curleft = 0;
                var pos = $panel.find('.dot-menu li').index($(this).closest('li'));
                
                content.animate({
                    left: Math.max(curleft - ((itemw * 3) * pos), containerw - contentw)
                }, {
                    duration: 500
                });
                
                $panel.find('.product-pager').removeClass('active');
                $panel.find('.product-pager').addClass('inactive');
                $(this).addClass('active');
                
                return false;
            });
        }
    });
    
    return this;
};

jQuery.fn.slidingMenu = function () {
    this.each(function () {
        var $panel = $(this);
        var container = $panel.find('div.main-menu-wrapper');
        var content = $panel.find('div.main-menu-wrapper ul');
        var items = $panel.find('div.main-menu-wrapper ul li');
        container.data('slider_index', 0);
        
        if (items.length) {
            var itemw = items.eq(0).outerWidth();
            var itemh = items.eq(0).outerHeight();
            items.each(function () {
                var h = $(this).outerHeight();
                if (h > itemh) {
                    itemh = h;
                }
            });
            
            var containerw = container.width();
            var contentw = items.length * itemw;
            //nastavime sirku kontaineru (kazdy item ma rovnaku sirku)
            container.height(itemh);
            content.width(contentw);
            
            //nastavime triggre
            $panel.find('a.pager-right').click(function () {
                var curleft = parseInt(content.css('left'));
                if (Math.abs(curleft) + containerw < contentw) {
                    content.animate({
                        left: Math.max(curleft - itemw * 3, -contentw + containerw)
                    },{
                        duration: 500
                    });
                }
                return false;
            });
            $panel.find('a.pager-left').click(function () {
                var curleft = parseInt(content.css('left'));
                if (curleft < 0) {
                    content.animate({
                        left: Math.min(curleft + itemw * 3, 0)
                    },{
                        duration: 500
                    });
                }
                return false;
            });
        }
    });
    
    return this;
};

$.fn.animationHomepage = function(){
    var animDuration = 500;
    var pictDuration = 7000;
    var container = $(this);
    
    $('#content-image-menu li').click(function (){
        $('#content-image a').stop(true, true);
        
        if (!$(this).hasClass('active')){
            clearTimeout(timeout);
            
            if (typeof resume !== 'undefined'){
                clearTimeout(resume);
            }
            
            var position = $(this).closest('li').index();
            
            animation(position);
            
            resume = setTimeout(function (){
                animateImage();
            }, pictDuration);
        }
        
        return false;
    });
    
    function animateImage(){
        timeout = setTimeout(function (){
            animation();
            
            animateImage();
        }, pictDuration);
    }
    
    function animation(position){
        var active_position = $('a.active', container).index();
        if (typeof(position) == 'undefined'){
            if (active_position == $('a', container).length - 1){
                position = 0;
            } else{
                position = active_position + 1;
            }
        }
        
        var active_link = $('#content-image-menu li:eq('+ active_position +')');
        var active_box = $('a:eq('+ active_position +')', container);
        
        active_link.removeClass('active');
        active_box.animate({
            // opacity: 0
            left: -720
        }, animDuration, function (){
            $(this).removeClass('active');
            $(this).hide();
        });
        
        var link = $('#content-image-menu li:eq('+ position +')');
        var box = $('a:eq('+ position +')', container);
        
        link.addClass('active');
        box.addClass('active');
        box.show();
        box.css('left', 720);
        box.css('opacity', 1);
        box.animate({
            left: 0
        }, animDuration);
    }
    
    animateImage();
}

$(function (){
    $('#content-image').animationHomepage();
    
    var pageWidth = $('body').width();
    var pageHeight = ($('body').height() > $(window).height()) ? $('body').height() : $(window).height();
	
    var reports = $('#reports');
    if(reports.length == 1){
        var reportsOverlay = $('<div id="reportsOverlay" />').css({
           position: 'absolute',
           width: pageWidth,
           height: pageHeight,
           left: 0,
           top: 0,
           background: '#000',
           zIndex: 100,
           opacity: 0.6
        }).click(function(){
            reports.hide();
            reportsOverlay.hide();
        });
        
        var width = 400;
        reports
        .append('<div class="reportPopupClose"><button class="button">ZAVRIEŤ</button></div>')
        .addClass('reportPopup')
        .css({
            position: 'absolute',
            top: $(window).scrollTop() + 150,
            left: (pageWidth - width) / 2,
            zIndex: 100,
            background: '#FFF',
            padding: 10,
            width: width,
            'border-radius': 10,
            '-moz-border-radius': 10
        })
        .show();
        
        $('#reports button')
        .click(function(){
            reports.hide();
            reportsOverlay.hide();
        });
        
        $('body').append(reportsOverlay);
        $('body').append(reports);
    }
    
    var topproducts = $('#topproducts-container');
    topproducts.topproductsCarousel();
    //automaticke prepinanie carouselu
    var carouselControl = topproducts.find('ul.dot-menu li');
    if (carouselControl.length > 1) {
        var carouselControlAutoTime = 10000;
        function carouselControlAuto() {
            var nextPageIndex = carouselControl.has('a.active').index() + 1;
            if (nextPageIndex && !carouselControl.eq(nextPageIndex).length) {
                nextPageIndex = 0;
            }
            carouselControl.eq(nextPageIndex).find('a').trigger('click');
            //rekurzia
            window.setTimeout(carouselControlAuto, carouselControlAutoTime);
        }
        window.setTimeout(carouselControlAuto, carouselControlAutoTime);
    }
    
    var mainmenu = $('#main-menu');
    mainmenu.slidingMenu();
    
    var cc = $('div.main-menu-wrapper ul');
    cc.draggable({
        axis: 'x',
        create: function (event, ui) {
            cc.data('containerw', cc.closest('div.main-menu-wrapper').width());
            var items = cc.find('li');
            if (items.length) {
                cc.data('contentw', items.length * items.eq(0).width());
            } else {
                cc.data('contentw', 0);
            }
            
            var activeItem = cc.find('li.active');
            if(activeItem.length == 1){
                var aiLeft = (cc.data('containerw') - activeItem.width()) / 2 - activeItem.position().left;
                if (activeItem.index() < 3) {
                    aiLeft = 0;
                } else {
                    if (activeItem.index() > items.length - 4) {
                        aiLeft = -(cc.data('contentw') - cc.data('containerw'));
                    }
                }
                
                cc.animate({
                    left:  aiLeft
                },{
                    duration: 300
                });
            }
        },
        start: function (event, ui) {
            cc.data('startleft', ui.position.left);
        },
        stop: function (event, ui) {
            //vratenie na kraj
            if (ui.position.left > 0) {
                cc.animate({
                    left: 0
                },{
                    duration: 300
                });
            } else {
                var containerw = cc.data('containerw');
                var contentw = cc.data('contentw');
                if (Math.abs(ui.position.left) > contentw - containerw) {
                    cc.animate({
                        left: -(contentw - containerw)
                    },{
                        duration: 300
                    });
                }
            }
        }
    });
    
    //hinty vo formularoch
    $('input.hint').inputHint();
    //vypnut autocomplete vo formularoch
    $('input.autocompleteoff').attr('autocomplete', 'off');
    
    //datepicker
    //$('input.datepicker').datepicker();
});

