/**
 * Função para solicitar qualquer URL via Ajax
 * @author Felipe Rooke
 * @since 15/10/2009
 * @param nomeForm: nome do formulário a ser enviado
 * @param divResult: a div que receberá o retorno
 * @param action: url para envio, se não for informado será obtido a do formulário
 * @param metodo: 'post' ou 'get'
 * @param aguarde: nome de uma Div para ser exibida durante o loading, ou string para substituição na divResult
 */
jQuery.fn.jLink= function(divResult, url, aguarde,c){
    // Validar parametros
    // Verifcar se a div existe
    if(divResult!='' && !document.getElementById(divResult)){
        alert('Ocorreu uma falha. \nPor favor contate o suporte. \nO container refresh '+divResult+' não foi encontrado.');
        return;
    }
    // Verificar se a URL foi informada
    if (url=='' || url==undefined){
        alert('Ocorreu uma falha. \nPor favor contate o suporte. \nO endereço da URL do link não foi definido.');
    }
   
    // Verificar se aguarde é um objeto
    if(document.getElementById(aguarde)){
        // É, exibir o tal objeto
          jQuery('#'+aguarde).fadeIn(300);
    } else if (aguarde!='' && aguarde!=undefined && divResult!=''){
        // Se foi definido algo que não é um objeto, consiedar com uma string e colocar na divResult
        jQuery('#'+divResult).html(aguarde);
    } else if (divResult!=''){
        // Sumir com a divResult
        jQuery('#'+divResult).hide();
    }

    // Montar array de parametros
    var options={
        url: url,
        type: "GET",
        dataType: "html",
        global:false,
        success: function (html){ // Quando retornado
            if (divResult!=''){
                jQuery('#'+divResult).html(html); // Preencher
            }
            jQuery('#'+aguarde).fadeOut(300);
            if (divResult!='')
                jQuery('#'+divResult).fadeIn(500); // Exibir de forma bunitinha
               
            if (divResult!='' && divResult=="DivModalUsuario"){
                // Exibir no formato modal
                $('#DivModalUsuario').dialog('open');
            }
            if (divResult!='' && divResult=="DivModalCategoria"){
                // Exibir no formato modal
                $('#DivModalCategoria').dialog('open');
                //jQuery.apply(c);
            }
        }
    };
   
    // Chamar metodo
    jQuery.ajax(options);
}


/**
 * Função para enviar qualquer formulário via Ajax
 * @author Felipe Rooke
 * @since 15/10/2009
 * @param nomeForm: nome do formulário a ser enviado
 * @param divResult: a div que receberá o retorno
 * @param action: url para envio, se não for informado será obtido a do formulário
 * @param metodo: 'post' ou 'get'
 * @param aguarde: nome de uma Div para ser exibida durante o loading, ou string para substituição na divResult
 */
jQuery.fn.jForm= function(nomeForm, divResult, action, metodo, opcao, aguarde){
    // Validar parametros
    // Verifcar se o form existe
    if(!document.getElementById(nomeForm)){
        alert('Ocorreu uma falha. \nPor favor contate o suporte. \nO formulário '+nomeForm+' não foi encontrado.');
        return;
    }
    // Verifcar se a div existe
    if(!document.getElementById(divResult)){
        alert('Ocorreu uma falha. \nPor favor contate o suporte. \nO container refresh '+divResult+' não foi encontrado.');
        return;
    }
    // Ajusta action
    if (action=='' || action==undefined){
        // Obter action do formulário
        action=document.getElementById(nomeForm).action;
    }
   
    // Verificar se o action foi setado
    if (action=='' || action==undefined){
        alert('Ocorreu uma falha. \nPor favor contate o suporte. \nO endereço do action do formulário '+nomeForm+' não foi definido.');
    }	
	
	// Verificar se opcao foi setado
    if (opcao==undefined){
		opcao = '';
	}	
	
    // Montar array de opções
    $.ajax({
         target: divResult, // destino: onde será exibida a resposta da página requisitada, no caso a div #resposta
         url:action, // a URL página que será requisitada
         dataType:'html', //
		 data: $('#'+nomeForm).serialize()+'&opcao='+opcao,//dados serializados
         type: metodo,//(metodo ? metodo : 'post'), // metodo de envio, post ou get
         success: function(html,resultado,c) { // Quando obtiver um retorno
            // Verificar se o processo obteve sucesso
            if (resultado=='success'){
                // Preencher div com valor retornado
                jQuery('#'+divResult).html(html);
                // Sumir com aguarde
                jQuery('#'+aguarde).fadeOut(300);
            } else {
                // Avisar que houve uma falha
                alert('Ocorreu uma falha. \nRetorno sem sucesso no formulário '+nomeForm+'.\nFalha:'+resultado);
            }
         },
         beforeSend: function(){ // Antes de enviar
            // Verificar se valor passado em aguarde é uma div
            if(document.getElementById(aguarde)){
                // É, exibir a tal div
                  jQuery('#'+aguarde).fadeIn(300);
                //jQuery(divResult).append('Guentai meu filho!');
            } else if (aguarde!='' && aguarde!=undefined){
                // Se foi definido algo que não é um objeto, consiedar com uma string e colocar na divResult
                jQuery('#'+divResult).html(aguarde);
            } else {
                // Sumir com o Form
                //jQuery('#'+nomeForm).hide();
                //jQuery(divResult).append('Guentai meu filho!');
            }
        }       
    });
   
    // Retornar false para que o formulário não envie os dados por "conta própria"
    return false;
}   

function jRequest(url, callback){
    jQuery.ajax({
        url: url,
        type: "post"
    });
}

// Metodo de "atalho" para metodo interno
function jqPost(nomeForm, divResult, action, opcao, aguarde){
    jQuery(this).jForm(nomeForm, divResult, action, 'post', opcao, aguarde);
}

//Metodo de "atalho" para metodo interno
function jqLink(divResult, url, aguarde){
    jQuery(this).jLink(divResult, url, aguarde);
}

function jGet(nomeForm, divResult, action, opcoes, aguarde){
    jQuery(this).jForm(nomeForm, divResult, action, 'get', opcoes, aguarde);
}

function mensagem(nomeForm, divRefresh, aguarde) {
     jQuery('#'+nomeForm).hide();
     jQuery(divRefresh).append(aguarde);
}

function vard(objvar, divRefresh){
    if(typeof objvar== 'object'){
        var obj=eval(objvar);
        var temp='';
        for(x in obj){
            temp+=x +' : '+obj[x]+'\n';
        }
        jQuery('#'+divRefresh).html(temp);
    }
    else{
        jQuery('#'+divRefresh).html(objvar);
    }
}
