/**
 * TikiCMS
 * Copyright (C) 2009, Tiki Web Inteligente Ltda.
 * @requires jQuery 1.3.2 or latter
 *
 * $Id: application.js 328 2011-05-05 16:54:47Z 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;
    });
    
    $('.nav li').hover(function(){
        $(this).addClass('top');
        $(this).find('ul').stop('true','true').slideDown(350, 'easeInOutCubic');
    }, function(){
        $(this).removeClass('top');
        $(this).find('ul').stop('true','true').slideUp(350, 'easeInOutCubic');
    });
    
    $('.nav_secundaria .sub').hover(function(){
        $(this).find('ul').stop('true','true').slideDown(350, 'easeInOutCubic');
    }, function(){
        $(this).find('ul').stop('true','true').slideUp(350, 'easeInOutCubic');
    });
    
    $('.portugues').click(function(){
        $('.selecionado').html('Português');
    });
    $('.english').click(function(){
        $('.selecionado').html('English');
    });
    $('.espanol').click(function(){
        $('.selecionado').html('Español');
    });
    
    // Select Custom
    
    // Select Custom
    $('div.select_custom > p').click(function() {
        var speed = 250;
        var easing = 'easeInOutCirc';
        var $combo = $(this).closest('div.select_custom');
        var $ul = $combo.children('ul'); 
        var realComboId = $combo.attr('id').replace(/custom_combo_/, '');
        var $realCombo = $('#'+realComboId);

        $('div.select_custom').removeClass('current');
        
        $realCombo.trigger('focus');
        
        $combo.toggleClass('current');
        
        // zera o z-index de outras combos abertas
        $('div.select_custom').not($combo).css('z-Index', 100);

        // esconde outras combos abertas
        $('div.select_custom ul').not($ul).slideUp(speed, easing);

        if ($ul.is(':visible')) {
            $ul.slideUp(speed, easing);
        } else {
            $combo.css('z-index', 1000);
            $ul.slideDown(speed, easing);
        }
    });

    if ($('div.select_custom').length > 0) {
        // ao clicar fora de combos abertas esconde-as
        $(document).bind('mouseup.custom_combo', function(e) {
            if ($(e.target).closest('div.select_custom').length == 1) return false;
            $('div.select_custom').removeClass('current');
            $('div.select_custom ul').slideUp(250, 'easeInOutCirc');
        });
    }

    $('div.select_custom li').live('click', function() {
        var $combo = $(this).closest('div.select_custom');
        var $ul = $combo.children('ul:first');
        var realComboId = $combo.attr('id').replace(/custom_combo_/, '');
        var $realCombo = $('#'+realComboId);
        var label = $(this).find('.text').text();
        var value = $(this).find('.value').text();

        $combo.removeClass('current');
        $ul.find('li').removeClass('current');
        $(this).addClass('current');

        $combo.find('p span').text(label);
        $ul.hide();

        $realCombo.val(value);
        $combo.trigger('change', [label, value]);
    });

    $('.fotos_portfolio li').hover(function(){
        $(this).find('.hover').stop('true','true').fadeIn(200);
    }, function() {
        $(this).find('.hover').stop('true','true').fadeOut(200);
    });
    
    $('.paginas_revista li').hover(function(){
        $(this).find('.hover').stop('true','true').fadeIn(200);
    }, function() {
        $(this).find('.hover').stop('true','true').fadeOut(200);
    });
    
    $('.lista_eventos li').hover(function(){
        $(this).find('.hover').stop('true','true').fadeIn(200);
    }, function() {
        $(this).find('.hover').stop('true','true').fadeOut(200);
    });
    
    // Flutuante Login
    
    $('.area_restrita a.intranet').click(function() {
        $(".login_area_restrita").lightbox_me({
            centered: true
        });
    });

    $('.area_restrita a.webmail').click(function() {
        $(".login_webmail").lightbox_me({
            centered: true
        });
    });
    
    // 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;
    });    

    
});

