Application = {
    Controller: {}
};

Application.build_url = function(url) {

    if (!Application.BASE_URL || !Application.BASE_URL.match(/^http/)) {
        Application.BASE_URL = $('meta[name=base_url]').attr('content');
    }

    return Application.BASE_URL + url; 
}

$(function($) {

    // invoca o controlador e o método solicitados
    var controller = $('meta[name=controller]').attr('content');
    var method = $('meta[name=method]').attr('content');
    var camelizedController = $.map(controller.split('_'), function(val) { return val.substr(0,1).toUpperCase() + val.substr(1) } ).join('').replace("-","_");

    Application.Controller[camelizedController] &&
    Application.Controller[camelizedController][method] &&
    Application.Controller[camelizedController][method].call();

    // Abre links com o rel external em novas janelas
    $("a[rel~='external']").click(function(){
        window.open($(this).attr('href'));
        return false;
    });
    
    // Efeitos para browsers mais atuais (isso exclui os IE's mais antigos que o 9)
    if( !($.browser.msie && $.browser.version < '9,0') ) {
        $('.bt_a').not('.current').hover(function(){            
            $(this).children().stop(true, true).fadeTo(300, 1);
        }, function(){
            $(this).children().stop(true, true).fadeTo(300, 0);
        });
        
        // Submenu
        $('#nav > li.has_sub').hover(function(){
            $(this).addClass('current hover');
            
            $('#nav li').not($(this)).find('.sub').fadeOut(300);
            
            $(this).find('.sub').stop(true, true).fadeIn(300);
            
        },function(){
            $(this).removeClass('hover');
            $this = $(this);
            
            setTimeout(function(){
                if($this.has('.hover')) {
                    $this.removeClass('current').find('.sub').stop(true, true).fadeOut(300);
                }
            },200);
        });
    } else {
        $('.bt_a').not('.current').hover(function(){
            $(this).children().css('display','block');
        }, function(){
            $(this).children().hide();
        });
        
        $('#nav > li.has_sub').hover(function(){
            $(this).addClass('current');
            
            $(this).find('.sub').show();
            
        },function(){
            $(this).removeClass('current').find('.sub').hide();
        });
    }
    
    
    // Esteiras de rolagem
    var larguraLi = $('.esteiraHorizontal ul.lista > li:not(:first-child)').outerWidth(true);
    var numeroLi = $('.esteiraHorizontal ul.lista > li').length;
    var marginLi = parseInt($('.esteiraHorizontal ul.lista > li:not(:first-child)').css('marginLeft'))
    
    $('.esteiraHorizontal ul.lista').css({'width': (larguraLi*numeroLi) -marginLi});
    
    // Corre 1 em 1
    $('.esteiraHorizontal_1 .previous').click(function(){
        $('.esteiraHorizontal_1 .crop').scrollTo({top:0, left:'-='+larguraLi}, 1000, {easing:'jswing'} );
    });
    $('.esteiraHorizontal_1 .next').click(function(){
        $('.esteiraHorizontal_1 .crop').scrollTo({top:0, left:'+='+larguraLi}, 1000, {easing:'jswing'} );
    });
    
    // Corre 3 em 3
    $('.esteiraHorizontal_3 .previous').click(function(){
        $('.esteiraHorizontal_3 .crop').scrollTo({top:0, left:'-='+larguraLi*3}, 1200, {easing:'jswing'} );
    });
    $('.esteiraHorizontal_3 .next').click(function(){
        $('.esteiraHorizontal_3 .crop').scrollTo({top:0, left:'+='+larguraLi*3}, 1200, {easing:'jswing'} );
    });
    
    
    // seta a variavel como parado
    var parceria_slider = 'parado';
    
    // Efeito das logos na home
    $('.parceria_slider .previous').click(function(){
        if(parceria_slider == 'parado') {
            // Limpa o intervalo e seta de novo
            clearInterval(parceria_slider_intervalo); 
            parceria_slider_intervalo = setInterval(parceria_slider_proximo, 7000);  
            
            parceria_slider = 'animando';
            
            $('.parceria_slider li:first').fadeOut(300, function(){
                $('.parceria_slider li:last').detach().prependTo('.parceria_slider .lista').fadeIn(500);
                 
                parceria_slider = 'parado';
            });
        };
    });
    
    $('.parceria_slider .next').click(function(){
        parceria_slider_proximo();
    });
    
    function parceria_slider_proximo() {
        if(parceria_slider == 'parado') {
            
            // Limpa o intervalo e seta de novo
            clearInterval(parceria_slider_intervalo); 
            parceria_slider_intervalo = setInterval(parceria_slider_proximo, 7000);                
            
            parceria_slider = 'animando';
            
            $('.parceria_slider li:first').fadeOut(300, function(){
                $(this).detach().appendTo('.parceria_slider .lista');
                $('.parceria_slider li:first').fadeIn(500);
                 
                parceria_slider = 'parado';
            });
        };
    };
    // Seta o intervalo de troca de banners
    parceria_slider_intervalo = setInterval(parceria_slider_proximo, 7000);
    
    
    // Efeito aside nav
    $('.aside_nav a').not('.current').hover(function(){
        $(this).stop(true, true).animate({ color: '#b1507b' }, 300);
    },function(){
        $(this).stop(true, true).animate({ color: '#7c7c7c' }, 300);
    });
    
    $("a[rel^='lightbox']").fancybox({
        'transitionIn'  :   'fade',
        'transitionOut' :   'fade',
        'speedIn'       :   600, 
        'speedOut'      :   200, 
        'overlayShow'   :   false
    });
    
    $("form#criar_cadastro").submit(function() {
        
        $form = $(this);
        
        // limpa erros anteriores
        $form.find('.details').remove();
        $form.find('.message').hide();
        $form.find('.error').removeClass('error');

        $.ajax({
            type: 'post',
            url: $(this).attr('action'),
            data: $(this).serialize(),
            beforeSend: function() {
                $form.find('p.message.loading').show();
                $form.find('[type=submit]').hide();
            },
            success: function() {
                $form.find('p.message.loading').hide();
                $form.find('[type=submit]').show();
                $form.clearForm();
                $('[name=nome]').val("Nome");
                $('[name=email]').val("E-Mail");
                $('[name=estado]').val(0);
                $form.find('p.message.success').show();
                $form.find('input[type=text]:first').focus();
           },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                $form.find('p.message.loading').hide();

                if (XMLHttpRequest.status == 403) {
                    var jsonErrors = eval('('+XMLHttpRequest.responseText+')');
                    for (field in jsonErrors) {
                        //$('[name='+field+']').parent().addClass('error');
                        $('form#criar_cadastro [name='+field+']').addClass('error');
                        $('form#criar_cadastro [name='+field+']').after('<div class="details">'+jsonErrors[field]+'</div>');
                    }
                    $form.find('input[type=text]:first').focus();
                    $form.find('p.message.errors').show();
                    $form.find('[type=submit]').show();
                }
                else {
                    alert('Um erro inesperado ocorreu no servidor. Seu contato não foi submetido.');
                }
            }
        });

        return false;
    });
    
    
    
})
