/**
 * TikiCMS
 * Copyright (C) 2009, Tiki Web Inteligente Ltda.
 * @requires jQuery 1.3.2 or latter
 *
 * $Id: application.js 2 2010-07-05 20:00:00Z caio $
 */

// define o namespace da aplicação
Application = {
    Controller: {}
};

/**
 * Retorna uma URL completa dado um caminho relativo.
 *
 * É importante que esta função seja definida antes
 * da definição das biliotecas "thickbox" e "sIFR",
 * pois alterei o código-fonte delas para que caminhos
 * relativos sejam convertidos em caminhos absolutos utilizando
 * esta função.
 *
 * @param  string url Um pedaço de URL (caminho relativo dentro do servidor)
 * @return string     Uma URL completa
 */
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; 
}

jQuery(document).ready(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('');

    Application.Controller[camelizedController] &&
    Application.Controller[camelizedController]['init'] &&
    Application.Controller[camelizedController]['init'].call();
    
    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;
    });
    
    // Menu
    $('#nav > li:not(.faleConosco), #nav li li.has_sub').hover(function(){
        $(this).children('span').addClass('current');
        if($(this).is('.has_sub')) {
            var largura_menu_pai = $(this).closest('.wrap').width() -14;
            $(this).children('.sub').css({ 'left': largura_menu_pai });
        } else if ($(this).is('.empresa')) {
            $(this).children('.sub').css({ 'left': '1px' });
        } else {
            $(this).children('.sub').css({ 'left': 0 });
        }
    },function(){
        $(this).children('span').removeClass('current');
        $(this).children('.sub').css({ 'left': '-9999px' });
    });
    
    
    // Box intranet no topo do site
    $('.intranet .link').click(function(){
        $(this).toggleClass('active');
        $(this).next('div').toggle();
    });    
    //Fecha o box intranet quando clica fora dele
    $('body').mouseup(function(e){
        var $target = $(e.target);
        // se o target é filho do seletor
        if ($target.parents('#navbar .intranet').length == 1) return false;																			  
        $('#navbar .intranet .link').removeClass('active');
        $('#navbar .intranet .content').hide();
    });
    
    
    // Newsticker da home
    function newsticket_next() {
        // Anima
        $('.newsticker ul.lista li:first-child').fadeOut(200).detach().appendTo('.newsticker ul.lista');
        $('.newsticker ul.lista li:first-child').delay(200).fadeIn(200);
    }    
    $('.newsticker .previous').click(function(){
        // Limpa o intervalo e seta de novo
        clearInterval(newsticker_intervalo);
        newsticker_intervalo = setInterval(newsticket_next, 5000);
        // Anima
        $('.newsticker ul.lista li:first-child').fadeOut(200);
        $('.newsticker ul.lista li:last-child').delay(200).detach().prependTo('.newsticker ul.lista').fadeIn(200);
    });
    $('.newsticker .next').click(function(){
        // Limpa o intervalo e seta de novo
        clearInterval(newsticker_intervalo);
        newsticker_intervalo = setInterval(newsticket_next, 5000);
        // Anima
        newsticket_next();
    });
    // Seta o intervalo
    newsticker_intervalo = setInterval(newsticket_next, 5000);
    
    
    if ($.fn.imageslider) {
        $('.slider_editor').imageslider( { step: 2, speed: 550 });
    }
    
    // Mudança da linguagem do site
    $('ul.idiomas a').click(function() {

        var lang = $(this).attr('id').split('_').pop();
        var currLang = $('ul.idiomas .curr_lang').text();
        var url = window.location.href;
        var redirectTo = '';
        var regEx = new RegExp("/" + currLang + "/");
        if (url.match(regEx)) {
            redirectTo = url.replace(regEx, "/"+lang+"/");
        } else {
            redirectTo = url + "/" + lang;
        }
        window.location = redirectTo;
        return false;
    });

    // máscaras úteis
    if ($.fn.mask) {
        $('input.telefone').mask('(99) 9999-9999');        
        $('input.cnpj').mask('99.999.999/9999-99');
    }
});

