
$(function() {
    $().mainMenu();
    $().homeBanner();
    $('.servicos_solucoes_gestao_financeira').servicosSolucoesLayer('ul.footer_subfamilies_ul a[title="gestão financeira e cobranças"]');
    $('.servicos_solucoes_gestao_recursos').servicosSolucoesLayer('ul.footer_subfamilies_ul a[title="gestão de recursos humanos"]');
    $('.servicos_solucoes_gestao_facilities').servicosSolucoesLayer('ul.footer_subfamilies_ul a[title="gestão de facilities"]');
    $('.servicos_solucoes_gestao_documental').servicosSolucoesLayer('ul.footer_subfamilies_ul a[title="gestão documental"]');

    $('.servicos_solucoes_gestao_financeira').servicosSolucoesSlide();
    $('.servicos_solucoes_gestao_recursos').servicosSolucoesSlide();
    $('.servicos_solucoes_gestao_facilities').servicosSolucoesSlide();
    $('.servicos_solucoes_gestao_documental').servicosSolucoesSlide();

    //servicos_solucoes_gestao_financeira
    //servicos_solucoes_gestao_recursos
    //servicos_solucoes_gestao_facilities
});

$.fn.servicosSolucoesLayer = function(_controler) {
    var controler = $(_controler);
    var layer = $(this);
    var visibleTimer;
    var closeTimer;

    $(this).bind('clearTimers', clearTimers);

    function clearTimers(event) {
        clearTimeout(visibleTimer);
        clearTimeout(closeTimer);
        $(this).fadeOut(200);
    }

    controler.bind('mouseover', function(event) {
        visibleTimer = setTimeout(function(event) {
            $('.servicos_solucoes_layers_relative > div').trigger('clearTimers');
            layer.fadeIn(500);
        }, 300);
    });

    controler.bind('mouseout', function(event) {
        clearTimeout(visibleTimer);
        closeTimer = setTimeout(function(event) {
            layer.fadeOut(200);
        }, 1500);
    });

    layer.bind('mouseover', function(event) {
        clearTimeout(closeTimer);
    });

    layer.bind('mouseout', function(event) {
        closeTimer = setTimeout(function(event) {
            layer.fadeOut(200);
        }, 500);
    });
}

$.fn.servicosSolucoesSlide = function() {
    var container = $(this);
    var hoverNext = $('a.next_zone', this);
    var hoverPrev = $('a.prev_zone', this);
    var ci = 0;
    var visibleItems = 3;
    var scrollTimer;
    var nextItemTimer;
    var itemMargin = 5;
    var movableArea = $('ul', this);
    var itemsNumber = $('ul > li', this).length;
    var itemWidth = $('ul > li', this).eq(0).width();

    //Inicialização
    hoverPrev.hide();
    if (itemsNumber <= visibleItems)
        hoverNext.hide();

    hoverNext.bind('mouseover', function(event) {
        scrollTimer = setTimeout(nextItem, 300);
        nextItemTimer = setInterval(nextItem, 1000);
    });
    hoverNext.bind('mouseout', function(event) {
        clearTimeout(scrollTimer);
        clearInterval(nextItemTimer);
    });

    hoverPrev.bind('mouseover', function(event) {
        scrollTimer = setTimeout(prevItem, 300);
        nextItemTimer = setInterval(prevItem, 1000);
    });
    hoverPrev.bind('mouseout', function(event) {
        clearTimeout(scrollTimer);
        clearInterval(nextItemTimer);
    });

    function nextItem(event) {
        if (ci + visibleItems < itemsNumber) {
            movableArea.animate({ left: '-=' + (itemWidth + itemMargin) }, { duration: 400 });
            ci++;
            hoverPrev.show();
            if (ci + visibleItems >= itemsNumber)
                hoverNext.hide();
        }
    }

    function prevItem(event) {
        if (ci > 0) {
            movableArea.animate({ left: '+=' + (itemWidth + itemMargin) }, { duration: 400 });
            ci--;
            hoverNext.show();
            if (ci <= 0)
                hoverPrev.hide();
        }
    }
}

$.fn.mainMenu = function() {
    var controlers = $('#nav > li');
    var lnkControlers = $('#nav > li > a');

    lnkControlers.bind('click', function(event) { return false; });
    controlers.bind('mouseenter', openSubMenu);
    controlers.bind('mouseleave', closeSubMenu);

    function openSubMenu(event) {
        $('ul.sub_menu_ul', this).show();
    }

    function closeSubMenu(event) {
        $('ul.sub_menu_ul', this).hide();
    }
};

$.fn.homeBanner = function() {
    var banners = $('#home_banner img');
    var controlers = $('#home_banner a');
    var timer;
    var ci = 0;
    var timerDelay = 5000;
    var colorPalete = ['#E7B012', '#6E2585', '#BED600', '#C90062'];
    var footerControlers = $('li.servicos_solucoes li a');
    var originalColor = footerControlers.eq(0).css('color');
    var tempOriginalColor;

    $(footerControlers).hover(function() {
        $(this).addClass('hover');
    }, function() {
        $(this).removeClass('hover');
    });
    function activateBtn(btn) {
        btn.css('backgroundPosition', '' + btn.backgroundPositionX() + ' -17px');
    }
    function deactivateBtn(btn) {
        btn.css('backgroundPosition', '' + btn.backgroundPositionX() + ' 0');
    }
    function circularIndex() {
        ci++;
        if (ci >= controlers.length && ci >= banners.length)
            ci = 0;
    }
    function updateFooterLinks() {
        footerControlers.css('color', originalColor);
        if (ci > 0)
            footerControlers.eq(ci - 1).css('color', colorPalete[ci - 1]);
    }

    //Inicialização
    banners.css('opacity', 0);
    banners.eq(ci).css('opacity', 1);
    activateBtn(controlers.eq(ci));
    timer = setTimeout(nextBanner, timerDelay);
    $('#home_banner').show();
    $('#home_box').show();
    $('#footer_families_container').show();
    $('#footer').show();
    
    function nextBanner(event) {
        banners.eq(ci).animate({ opacity: 0 }, { duration: 500 });
        deactivateBtn(controlers.eq(ci));
        circularIndex();
        banners.eq(ci).animate({ opacity: 1 }, { duration: 1000 });
        activateBtn(controlers.eq(ci));
        updateFooterLinks();
        timer = setTimeout(nextBanner, timerDelay);
        return false;
    }

    controlers.bind('click', jumpToBanner);

    function jumpToBanner(event) {
        clearTimeout(timer);
        var clickedIndex = controlers.index(this);
        banners.eq(ci).animate({ opacity: 0 }, { duration: 500 });
        deactivateBtn(controlers.eq(ci));
        ci = clickedIndex;
        banners.eq(ci).animate({ opacity: 1 }, { duration: 1000 });
        activateBtn(controlers.eq(ci));
        updateFooterLinks();
        timer = setTimeout(nextBanner, timerDelay);
        return false;
    }
}

$.fn.backgroundPositionX = function() {
    var x = $(this).css('backgroundPosition');
    return (typeof (x) === 'undefined') ? $(this).css('background-position-x') : x.split(" ")[0];
}

$.fn.backgroundPositionY = function() {
    var y = $(this).css('backgroundPosition');
    return (typeof (y) === 'undefined') ? $(this).css('background-position-y') : y.split(" ")[1];
}
