/**
 * 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";

    //Busca o elemento de retorno
    params["ret"] = (params["ret"] ? params["ret"] : "#conteudo_principal");

    //Busca o elemento a ser bloqueado
    params["elemBlock"] = (params["elemBlock"] ? params["elemBlock"] : "#tudo");

    //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: "Carregando...",
            css: {
                border: '3px solid #000',
                width: '150px',
                height: '25px',
                color: '#000'
            }

        });

        //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;
}


/**
 *
 * @access public
 * @return void
 **/
function loga_cliente(objForm, base_url){

    //Monta a função de retorno
    var success = function(retorno) {
                    //Verifica se o retorno foi ok
                    if (retorno.ok)
                        document.location.href = base_url+retorno.pagina_cliente;
                    else
                        alert("Usuário ou senha inválidos.");
                };

    //Busca os campos do formulário
    params  = $(objForm).serialize();

    //Executa o call
    return call({'type' : objForm.method, 'url' : objForm.action, 'ret' : objForm.id, 'elemBlock' : objForm, 'data' : params, 'success' : success});
}

/**
 * valuePadrao
 *
 * Seta um valor padrão a um campo
 *
 * @author Henrique de Castro
 * @since  08/2010
 * @param  object
 * @param  string
 * @return void
 */
function valuePadrao(obj, value){

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

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

/**
 *
 * Eventos do jquery
 *
 */
$(document).ready(function(){

    //Seta os campos do formulário com valor padrão
    var campos = [
            "#login_topo", "#senha_topo"
        ];
    for(temp in campos)
        valuePadrao(campos[temp], $(campos[temp]).val());

});
