var DEF_BLOCK = '';

/**
 * call
 *
 * Faz a chamada via XMLHttp (usada para abstrair as funções do jquery)
 *
 * @author Henrique de Castro
 * @since  11/2008
 * @param  array   Parâmetros
 * @return boolean
 */
function call(params){
    //Seta o tipo padrão para POST
    params["type"] = params["type"] ? params["type"] : "POST";
    //O tipo de retorno será sempre JSON
    params["dataType"] = "json";
    //Adiciona o ajax_in_use a url
    params["url"] = params["url"] + (params["url"].substr(-1,1) == "/" ? "" : "/") + "ajax_in_use:true";
    //Busca o elemento a ser bloqueado
    params["elemBlock"] = (params["elemBlock"] ? params["elemBlock"] : DEF_BLOCK);
    //Verifica se existe o parâmetro success
    if (!params["success"]) {
        //Exibe o HTML de retorno no local definido
        params["success"] = function(retorno){
            //Verifica se existe HTML de retorno
            if(retorno.html)
                //Exibe o HTML de retorno
                $(params["ret"]).empty().html(retorno.html);
        }
    }
    //Executa a chamada
    $.ajax(params);
    //Verifica a necessidade de exibir um preload
    if (!params["noPreload"]) {
        //Bloqueia o elemento passado
        $(params["elemBlock"]).block({
            message: "processando...",
            css: {
                border: '1px solid #cfcfcf',
                width: '135px',
                height: '20px',
                color: '#FF9900'
            }
        });
        //Em caso de sucesso, remove o bloqueio
        $(params["elemBlock"]).ajaxSuccess(
            function() {
                //Desbloqueia e remove as propriedades 'ajax' do elemento
                $(this).unblock();
                $(this).unbind();
            }
        );
    }
    //Não permite o envio, pois este é feito pelo XMLHttp
    return false;
}

$(document).ready(function () {
							
	$("a[rel='_blank']").click(function() {
		window.open($(this).attr('href'));
		return false;
	});

	// Limpa ou seleciona o campo de busca
	$('#input_search').focus(function() {
		if ($(this).val() != 'Buscar...') {
			$(this).select();
		} else if ($(this).val() == 'Buscar...') {
			$(this).val('');
		}
	});

	// Insere o valor padrão para o campo de busca caso o usuário saia do campo
	$('#input_search').blur(function() {
		if ($(this).val() == '') {
			$(this).val('Buscar...');
		}
	});

	// Submete o formulário de busca
	$('#search_form').submit(function() {
		var value = $('#input_search').val();
		
		// Caso esteja vazio, volta o foco para o campo
		if (value == '' || value == 'Buscar...') {
			$('#input_search').focus();
			return false;
		}
	});
    
	// Submete o formulário de newsletter
    $('#form_news').submit(function(e) {
        e.preventDefault();
        var news_email = $('#newsletter_email').val();
		
		// Caso esteja vazio, volta o foco para o campo
		if (news_email == '') {
			$('#newsletter_email').focus();
			return false;
		}
		
        // Verifique se o e-mail informado tem o formato correto
		if ((/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(news_email))) {
			$('#newsletter_email').attr('disabled', 'disabled');
			$('#submit_news').css('width', '70px');
			$('#submit_news').attr('disabled', 'disabled');
			$('#submit_news').val('Aguarde...');
			
			var success = function(retorno) {
				
				alert(retorno.mensagem);

				$('#newsletter_email').removeAttr('disabled');
				$('#submit_news').css('width', '30px');
				$('#submit_news').removeAttr('disabled');
				$('#submit_news').val('OK');

				if (retorno.status == "email_success") {
					$('#newsletter_email').removeAttr('value');
					$('#newsletter_email').focus();
				} else {
					$('#newsletter_email').select();
				}
			}

			call({'url' : $(this).attr('action'), 'data' : {newsletter_email: news_email}, 'success' : success, 'noPreload' : true });
        } else {
			alert("Este parece não ser um endereço de e-mail válido. Verifique e tente novamente.");
			$('#newsletter_email').select();
		}
    });

	// Submete o formulário de newsletter
    $('#form_news').submit(function(e) {
	});
});
