/**
 * 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][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;
    });
    
    
    // Efeito do menu
    $('#nav li a').hide(); // Esconde os links por js
    
    $('#nav li').hover(function(){
        $(this).children('a').not('.current').fadeIn(300);
    },function(){
        $(this).children('a').not('.current').fadeOut(300);
    });    

    var $bannerStage = $('.banner_stage');
    var bannerItemHeight = $('.banner_content .lista li:first').height();

    totalVisibleItems = 6;
    totalBanners = $('.banner_content .lista li').length;
    $bannerListContainer = $('.banner_content .crop');

    // transição de banners
    bannersTransition();
    recreateTransition();

    $('.banner_content .lista li:first a').addClass('current');

    $('.banner_content .lista li a').click(function(e, restartTransition) {
    	
        // não está definida quando é o navegador quem gera o evento
    	if (restartTransition == undefined) {
            restartTransition = true;
        }
    	
    	$data = $('.banner_stage');
    	
        var urlBanner = $(this).attr('href');
 
        var rel = $(this).attr('rel');
    	var target  = $(this).closest('li').find('.target').text();

    	// recuperando a extensão do arquivo
    	var ext = urlBanner.split('.').pop().toLowerCase();

    	if (ext == 'jpg' || ext == 'png' || ext == 'gif'){

            var url_banner = '<a href="'+rel+'" target="'+target+'">';
            var img = '<img src="'+urlBanner+'" />';
            var url_banner_end = '</a>';

            if (!rel){
                var image = img;
            } else {
                var image = url_banner+img+url_banner_end;
            }
    		
            $bannerStage.html(image).find('img').hide().load(function() {
                $(this).fadeIn(800);
                restartTransition = true;
            });
            

    	} else if (ext == 'swf'){

            // a url que deve ser aberta pelo SWF, onClick
            //var url = $(this).attr('target').split('|').
            var params = { menu: false, wmode: 'transparent' };
            var flashvars = { 'target': target, 'url': rel }
            $bannerStage.html('');
            $('.banner_stage').prepend('<div id="banner_stage_swf"></div>');
            swfobject.embedSWF(urlBanner, "banner_stage_swf", "575", "293", "10.0.0", "", flashvars, params, {});
    	}
    	
        $(this).closest('ul').find('a').removeClass('current');
        $(this).addClass('current');

        if (restartTransition) {
            currBanner = $(this).parent().prevAll().length;
            clearInterval(transition);
            bannersTransition();            
            transition = setInterval(bannersTransition, transitionDuration);
        }

        return false;
    });

    $('.banner_content .btNav.up').click(function() {
        //console.log($bannerListContainer.offset());
        $bannerListContainer.scrollTo('-=' + (bannerItemHeight + 1), { duration: scrollDuration });
    });

    $('.banner_content .btNav.down').click(function(e, scrollMode) {

        if (scrollMode == 'auto') { // desce quantos forem necessários para exibir o atual
            step = $('.banner_content .lista li').eq(currBanner + 1 - totalVisibleItems);
        } else { // desce 1
            step = '+=' + (bannerItemHeight + 1);
        }

        $bannerListContainer.scrollTo(step, { duration: scrollDuration });
    });
});

// Banners
function recreateTransition() {
    clearInterval(transition);
    transition = setInterval(bannersTransition, transitionDuration);
}

var reachedTheBottom = false;
var currBanner = 0;
var totalBanners;
var totalVisibleItems;
var $bannerListContainer;
var transition; // setInterval
var transitionDuration = 8000;
var scrollDuration = 250;

function bannersTransition() {

    if (reachedTheBottom) {
        $bannerListContainer.scrollTo(0, { duration: scrollDuration });
    }

    currBanner = currBanner % totalBanners;

    $('.banner_content .lista li').eq(currBanner).find('a').trigger('click', [ false ]);

    if (currBanner > 0 && currBanner >= totalVisibleItems) {
        $('.banner_content .btNav.down').trigger('click', [ 'auto' ]);
    }

    currBanner++;

    reachedTheBottom = currBanner == totalBanners;
}

