// DAVS GTR AJAX
// Random Generated Scripts
// 27/07/2007

var GTR_divAjax		= "";
var htmlAjaxLoader	= "<div id='ajax'><img src='../../lib/gtrajax/img/loader_anim.gif' align='absmiddle' alt='"+__GTR_TXT_CARREGANDO+"' />&nbsp;"+__GTR_TXT_CARREGANDO+"</div>";

// ESTA FUNÇÃO DEVERÁ SER EXECUTADA NO ONLOAD
function GTR_AjaxTransform(documento)  {
	
	// SUBSTITUIÇÃO EM LINKS
	
	var ases		= (navigator.appName.indexOf("Microsoft")>-1)?documento.document.getElementsByTagName("a"):document.getElementsByTagName("a");
	var tases		= ases.length;
	
	for ( i=0; i<tases; i++ )  {
		if ( ases[i].href && ases[i].rel == "ajax" )  {
			if ( ases[i].coords == "primário" || ases[i].coords == "undefined" || ases[i].coords == "" || ases[i].coords == null )
			{
				ases[i].onclick		= function ()   { GTR_AjaxClick(this.href, this.target); return false; };
			}
			else if( ases[i].coords == "secundário" )
			{
				ases[i].onclick		= function ()   { gtr_makeRequest(this.href, this.target); return false; };
			}
			ases[i].onfocus		= function ()   { this.blur(); };
			ases[i].onmouseover	= function ()   { window.status=this.title; return true; };
			ases[i].onmouseout	= function ()   { window.status=''; return true; };
		}
	}
	
	// SUBSTITUIÇÃO EM FORMULÁRIOS
	
	var formes		= (navigator.appName.indexOf("Microsoft")>-1)?documento.document.getElementsByTagName("form"):document.getElementsByTagName("form");
	var tformes		= formes.length;
	
	for ( i=0; i<tformes; i++ )  {
		if ( formes[i].id == "useajax" )  {
			
			els		= formes[i].elements;
			for ( a=0; a<els.length; a++ )  {
				if ( formes[i].elements[a].type == "submit" )  {
					act 				= formes[i].action;
					tar					= formes[i].target;
					nam					= formes[i].name;
					// MAGIC NUMBER: QUANDO PRECISAR DE ONSUBMIT, COLOCAR NO "LANG=''"
					sbm					= formes[i].lang;
					formes[i].elements[a].onclick = function () { 
						myurl				= "";
						eForm				= this.form;
						tForm				= this.form.elements.length;
						for ( t=0; t<tForm; t++ )  {
							if ( eForm.elements[t].type != "radio" || (eForm.elements[t].type == "radio" && eForm.elements[t].checked) )  {
								myurl			= myurl + "&" + eForm.elements[t].name + "=" + eForm.elements[t].value;
							}
						}
						myurl				= act + "?" + myurl.substring(1,myurl.length);
						
						// ENVIA FORMULÁRIO AJAX
						
						if (gtr_submit(nam, false))  {
							if (sbm!="")  {
								a = eval(sbm);
								if (a)  {
									gtr_makeRequest(myurl, tar);
								}
							}
							else  {
								gtr_makeRequest(myurl, tar);
							}
						}
						
						void(0);
					}
					formes[i].onsubmit	= function () { void(0); return false; }
				}
			}
			
		}
	}
}


function GTR_AjaxClick(p, d)  {
	// Trata URL para neutralizar o cache
	var rnde		= Math.random ( );
	p				+= (p.indexOf("?")>-1)?"&r=" + rnde:"?r=" + rnde;
	if (d=="undefined" || d=="")  {
		alert("Neste link não foi definido o nome do div que trará o conteúdo no atributo 'target'");
	}
	else  {
		// Seta DIV atual
		GTR_divAjax		= d;
		
		// Elemento DIV "Loading"
		var obj			= document.getElementById(d);
		obj.innerHTML	= htmlAjaxLoader;
		
		// Manda o iFrame para a página requisitada
		var frame		= document.getElementById("GTRAjax");
		frame.src	= p;
	}
}

function GTR_ajaxLoaded(c)  {
	var objIfr		= c.document.getElementsByTagName('body')[0]
	var c			= objIfr.innerHTML
	var obj			= document.getElementById(GTR_divAjax);
	if ( obj == null )  {
		// alert("Não foi possível carregar o conteúdo vindo por GTRAjax no div pois não consegui localizar um DIV chamado: '"+GTR_divAjax+"' nesta página.\n\nPor favor, verifique se o nome do seu DIV principal é realmente '"+GTR_divAjax+"'.");
	}
	else  {
		obj.innerHTML	= c;
		var objBody 	= document.getElementsByTagName("body").item(0);
		GTR_AjaxTransform(obj);
	}
}


// COLOCA UM "AGUARDE..." NO SUBMIT DO FORMULÁRIO
function GTR_AlteraBotao(f)  {
	for ( i=0; i<f.elements.length; i++ )  {
		if ( f.elements[i].type == "submit" )  {
			f.elements[i].disabled 	= true;
			f.elements[i].value		= "Aguarde...";
			//alert(f.elements[i].type);
		}
	}
}



/* AJAX CONVENCIONAL */
var gtr_http_request	= false;
var gtr_dive			= "";
function gtr_makeRequest(url, div) {
	gtr_dive	= div;
	document.getElementById(gtr_dive).innerHTML = htmlAjaxLoader;
	gtr_http_request = false;
	// document.getElementById('principal').innerHTML = "Carregando...";
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		gtr_http_request = new XMLHttpRequest();
		if (gtr_http_request.overrideMimeType) {
			gtr_http_request.overrideMimeType('text/xml');
			// See note below about this line
		}
	} else if (window.ActiveXObject) { // IE
		try {
			gtr_http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				gtr_http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!gtr_http_request) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
	
	var ran_number= Math.random(); 
	if ( url.indexOf("?") < 0 )  {
		url += "?rnd=" + ran_number;
	}
	else  {
		url += "&rnd=" + ran_number;
	}
	gtr_http_request.onreadystatechange = gtr_alertContents;
	gtr_http_request.open('GET', url, true);
	gtr_http_request.send(null);
}

function gtr_alertContents() {

	if (gtr_http_request.readyState == 4) {
		if (gtr_http_request.status == 200) {
			retorno = gtr_http_request.responseText;
			// VERIFICA SE HÁ ALGUMA FUNÇÃO JS PARA EXECUTAR DEPOIS DE CARREGADO:
			if (retorno.indexOf("[/gtr/exec:") > -1)  {
				executar	= retorno.substring(retorno.indexOf("[/gtr/exec:")+11);
				strEval		= "[/gtr/exec:" + executar;
			   	if (executar.indexOf("/gtr]") > -1)  {
					executar	= executar.substring(0,executar.indexOf("/gtr]"));
					eval(executar);
					// LIMPA O CÓDIGO:
					retorno		= retorno.replace(strEval,"");
				}
				else  {
					alert("Não foi possível executar a função:\n\nNão foi encontrada a string de fechamento '/gtr]'");
				}
			}
			document.getElementById(gtr_dive).innerHTML = retorno;
		} else {
			alert('Não foi possível utilizar o GTRAjax Convencional para trazer esta página.');
		}
	}

}




// Manter esta função: Antigamente ela era utilizada em alguns projetos por referência direta a ela.
// deprecated
function formulario_submit(dv)  {
	divLoaded			= dv;
	objDiv				= document.getElementById(divLoaded);
	objLoader			= document.getElementById("loader");
	objDiv.innerHTML	= objLoader.innerHTML;
}