/**
 * @author Leandro Antonello
 */

// GLOBAL VARIABLES
var httpRequest = null;

$(document).ready( function()
{
    // Background trasparent
    $('#black-box').livequery(function(){
        $(this).css('opacity', 0.8);
    });

    $('a.thumbs').fancybox({
        'zoomSpeedIn': 300,
        'zoomSpeedOut': 300,
        'overlayShow': true,
        'hideOnContentClick': true
    });
	
    // Coloca o Flash
    $('#logos-bar').flash({
        swf: 'media/swf/kidsrun-rbar.swf',
        width: 160,
        height: 260,
        wmode: 'transparent',
        allowScriptAccess: 'sameDomain',
        quality: 'high',
        menu: false
    });
	
// Procura no menu pelo elemento [anchor] que possui a classe "active"
//var anchorID = $('#nav').find('a.active').attr('id');
	
//setBallPosition( '#ball', ('#' + anchorID) );
	
//alert( anchorID );
});

/**
 * Posiciona o círculo de acordo com a área atual.
 * @param String ballID      ID do elemento que contém o círculo.
 * @param String referenceID ID do elemento de referência para posicionamento do círculo.
 */
function setBallPosition( ballID, referenceID )
{
    var refPos = $(referenceID).position();
	
    alert( refPos.top +" x "+ refPos.left );
	
    $(ballID).css({
        'position':'absolute',
        'top': refPos.top + 2,
        'left': refPos.left - 16,
        'display':'block'
    });
}

/**
 * Responsável por carregar o conteúdo da página informada no elemento passado.
 * @param page     Página que deverá ser processada.
 * @param opt_data Dados opcionais que serão enviados.
 * @param target   ID do Elemento HTML que receberá o resultado da requisição.
 */
function loadContent( page, opt_data, target )
{
    // Inicia a requisição
    httpRequest = $.ajax({
        url: page,
        type: 'GET',
        data: opt_data,
        beforeSend: function(){
            addLoader(target);
        },
        error: function(request, error_str, exception_obj){
            // Substitui a animação de loading pelo texto do erro.
            delLoader(target, handleAjaxError(error_str, exception_obj));
        },
        success: function(response){
            // Remove animação de loading e exibe o conteúdo carregado.
            delLoader(target, response);
        }
    });
}

/** Retorna a mensagem correta do erro AJAX. */
function handleAjaxError( errorStr, exceptionObj )
{
    var _str = '';

    switch(errorStr)
    {
        case 'timeout':
            _str = '<p>Timeout! por favor, tente novamente.</p>';
            break;
        case 'parserror':
        case 'error':
            _str = '<p>Erro: ' + exceptionObj.toString() + '</p>';
            break;
        case 'notmodified':
            _str = '<p>Conteúdo atualizado!</p>';
            break;
    }

    return _str;
}

/** Aborta uma requisição Ajax. */
function abortAjax()
{
    httpRequest.abort();
    httpRequest = null;
}

/** Adiciona uma animação de loading no elemento informado. */
//function addLoader(where){ $(where).append('<p class="loader">&nbsp;</p>'); }
function addLoader(where){ 
    $(where).html('<p class="loader">&nbsp;</p>');
}

/**
 * Remove uma animação de loading do elemento informado.
 * @param where Elemento de onde a animação deverá ser retirada.
 * @param new_content Opcional. String com o conteúdo que deverá ser inserido no elemento.
 */
function delLoader(where, new_content)
{
    $(where).html('');
    
    $(where).html(new_content);
    //if( new_content ) $(where).append(new_content);
    alert( $(where).html() );
}

/** Obtém os dados do formulário informado e faz o POST. */
function postForm( form_id )
{
    var formID = '#' + form_id;
    var fdata  = $(formID).serialize();
    var postTo = $(formID).attr('action');

    var parent = $(formID).parent('div');

    httpRequest = $.ajax({
        url: postTo,
        data: fdata,
        type: 'POST',
        beforeSend: function(){
            addLoader(formID);
        },
        error: function(request, error_str, exception_obj){
            // Substitui a animação de loading pelo texto do erro.
            delLoader(parent, handleAjaxError(error_str, exception_obj));
        },
        success: function(response){
            delLoader(parent, response);
        }
    });
}

/** Define uma classe para o elemento informado. */
function setCss( where, css )
{
    $(where).removeClass();
    $(where).addClass(css);
}

/** Cria e exibe uma div com mensagem de alerta. */
function Alert( message, type )
{
    var sty;
    var css;
    var ico;

    switch( type )
    {
        case 'INFO':
            sty = "z-index:9999; border: 1px solid #fad42e; background: #fbec88; color: #363636;";
            css = "ui-state-highlight ui-corner-all";
            ico = '<span class="ui-icon ui-icon-info"></span>';
            break;
        case 'ERRO':
            sty = "z-index:9999; border: 1px solid #cd0a0a; background: #fef1ec; color: #cd0a0a;";
            css = "ui-state-error ui-corner-all";
            ico = '<span class="ui-icon ui-icon-alert"></span>';
            break;
    }
    var div = '<div id="message" class="'+ css +'" style="'+ sty +'"><p>'+ ico + message + '</p></div>';
    var obj = $(div);

    $(document.body).append(div);

    var screenWidth = document.body.offsetWidth;
    var divWidth    = 380;
    var divLeft     = (screenWidth / 2) - (divWidth / 2);
	
    $('#message').css({
        'width': '380px',
        'position':'absolute',
        'left':divLeft + 'px',
        'top':'60px',
        'padding':'10px',
        'opacity':0.9
    });

    $('#message').show('blind', null, 500);
    
    setTimeout(function(){
        $('#message').fadeOut(800, function(){ 
            $('#message').remove();
        });
    }, 4000);
}

