/**
* Função para solicitar qualquer URL via Ajax
* @author Tiago Gouvêa
* @since 21/06/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,after,param){
	// 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
			// Fechar div de aguarde
			jQuery('#'+aguarde).fadeOut(300);
			// Preencher divResult
			if (divResult!=''){
				jQuery('#'+divResult).html(html);
				// Exibir de forma bunitinha
				jQuery('#'+divResult).fadeIn(500);
			}
			//Executa o callback
			if(html == "ok"){
				wrapper(after(param));	
			};
			
		}
	};
	
	// Chamar metodo
	jQuery.ajax(options);
} 

/**
 * Função para enviar qualquer formulário via Ajax
 * @author Tiago Gouvêa
 * @since 21/06/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, aguarde, after){
	// 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.');
	}

	// Montar array de opções
	var options = {
	     //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:'script', // 
	     //type: (metodo ? metodo : 'post'), // metodo de envio, post ou get
	     success: function(html) { // Quando obtiver um retorno
			// Preencher div com valor retornado
			jQuery('#'+divResult).html(html);
			// Sumir com aguarde
			jQuery('#'+aguarde).fadeOut(300);
			//Executa o callback
			if(html == "ok"){
				wrapper(after);
			};
		 },
	     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!');
			}
		}		
	};
	
	// Chamar ajaxSubmit
	jQuery('#'+nomeForm).ajaxSubmit(options);
	
	// 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, opcoes, aguarde, after){
	jQuery(this).jForm(nomeForm, divResult, action, opcoes, aguarde, after);
}

//Metodo de "atalho" para metodo interno
function jqLink(divResult,url,aguarde,after,param){
	jQuery(this).jLink(divResult,url,aguarde,after,param);
}

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);
	}
}