
// Variáveis globais.
var ObjetosCarregados="";
var Raiz="http://" + window.location.hostname;
var SalvaAncora = "";
var PrimeiraChamada = 0;

function AjaxLoad(Url, Receptor, Parametros){

	// Se receber algo parecido com index.neo?link=pagina, desmesmbra e define o arquivo pagina.neo
	if(Url.indexOf("?link=")!=-1){
		UrlAuxiliar = Url.split("?link=");
		Url = UrlAuxiliar[1] + ".php";
	}
	
	var Requisicao = false;
	
	// Caso seja Mozilla, Safari, etc...
	if (window.XMLHttpRequest){ 
		Requisicao = new XMLHttpRequest();
	// Caso seja IE
	}else{
		if (window.ActiveXObject){ 
			try{
				Requisicao = new ActiveXObject("Msxml2.XMLHTTP");
			}catch(e){
				try{
					Requisicao = new ActiveXObject("Microsoft.XMLHTTP");
				}catch(e){}
			}
		}
		else {
			return false;
		}
	}
	
	// Caso receba parâmetros adicionais, o método é POST, caso contrário, é GET.
	if(Parametros == null){
		Requisicao.onreadystatechange=function(){
			Ajax(Requisicao, Receptor);
		}
		Cache =(Url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime();
		Requisicao.open('GET', Url + Cache, true);
		Requisicao.send(null);
	}else{
		Requisicao.onreadystatechange=function(){
			Ajax(Requisicao, Receptor);
		}
		Requisicao.open('POST', Url, true);
		Requisicao.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		Requisicao.setRequestHeader("Content-length", Parametros.length);
		Requisicao.setRequestHeader("Connection", "close");
		Requisicao.send(Parametros);
	}
}

/* Recebe a requisição e escreve no corpo da página */
function Ajax(Requisicao, Receptor){
	if (Requisicao.readyState == 4 && (Requisicao.status==200 || window.location.href.indexOf("http")==-1)){
		var Recebe = document.getElementById(Receptor);
		Recebe.innerHTML=Requisicao.responseText;
		var Conteudo = document.getElementById(Receptor);
		var NovoElemento = document.createElement("script");
		var Scripts = Conteudo.getElementsByTagName("script");
		for(i = 0; i < Scripts.length; i++){
			if(Scripts[i].src!=""){
				Capturador=document.createElement('script')
				Capturador.setAttribute("type","text/javascript");
				Capturador.setAttribute("id","Capturador" + i);
				Capturador.setAttribute("src", Scripts[i].src);
				var Corpo = document.getElementsByTagName("body")[0];
				Corpo.appendChild(Capturador);
			}else{
				NovoElemento.text += Scripts[i].innerHTML;
			}
		}
		Conteudo.appendChild(NovoElemento);
	}
}

/* Carrega objetos internos, como css ou javascript */
function CarregaObjeto(){
	if (!document.getElementById){
		return;
	}
	for (i=0; i<arguments.length; i++){
		var Arquivo=arguments[i];
		var Referencia="";
		// Verifica se o objeto já não foi adicionado a página.
		if (ObjetosCarregados.indexOf(Arquivo)==-1){
			// Caso o objeto for um arquivo javascript...
			if (Arquivo.indexOf(".php")!=-1){ 
				Referencia=document.createElement('script')
				Referencia.setAttribute("type","text/javascript");
				Referencia.setAttribute("src", Arquivo);
			}else if (Arquivo.indexOf(".css")!=-1){
				Referencia=document.createElement("link");
				Referencia.setAttribute("rel", "stylesheet");
				Referencia.setAttribute("type", "text/css");
				Referencia.setAttribute("href", Arquivo);
			}
		}
		if (Referencia!=""){
			document.getElementsByTagName("head").item(0).appendChild(Referencia);
			// Adiciona lembrete de lembrança, para saber se o objeto já foi adicionado a página.
			ObjetosCarregados+=Arquivo+" ";
		}
	}
}

/* Captura parâmetros de um formulário */
function Captura(Action,Receptor){
	var Retorno = "";
	var Parametros = document.getElementsByTagName('input');
	var Opcoes = document.getElementsByTagName('select');
	var Textos = document.getElementsByTagName('textarea');
	var Resposta = [];
	
	for(x=0; x<Parametros.length; x++){
		Resposta.push(Parametros[x]);
	}
	
	for(x=0; x<Opcoes.length; x++){
		Resposta.push(Opcoes[x]);
	}
	
	for(x=0; x<Textos.length; x++){
		Resposta.push(Textos[x]);
	}
	
	var y = Resposta.length;
	for(x=0; x<y; x++){
		if(x==0){
			prefixo = '';
		}else{
			prefixo = '&';
		}
		if(Resposta[x].type=="checkbox"){
			Retorno += prefixo + Resposta[x].name + '=' + Resposta[x].checked;
		}else{
			Retorno += prefixo + Resposta[x].name + '=' + Resposta[x].value;
		}
	}
	AjaxLoad(Action, Receptor, Retorno);
}

function VerificaAncora(){
	if(document.location.hash){
		SalvaAncora = document.location.hash;
		var Arquivo = SalvaAncora;
		if(Arquivo.indexOf("?")!=-1){
			Auxiliar = Arquivo.split("?");
			ArquivoFinal = Auxiliar[0].replace("#","") + ".php?" + Auxiliar[1];
		}else{
			ArquivoFinal = Arquivo.replace("#","") + ".php";
		}		
		AjaxLoad(ArquivoFinal,"Conteudo");
	}else{
		if(SalvaAncora!=""){
			var Pagina = document.location;
			PaginaAuxiliar = Pagina.toString();
			PaginaFinal = "principal.php";
			if(PaginaAuxiliar.indexOf("?link=")!=-1){
				Auxiliar = PaginaAuxiliar.split("?link=");
				PaginaFinal = Auxiliar[1] + ".php";
			}
			AjaxLoad(PaginaFinal,"Conteudo");
		}
	}
}

function TestaAncora(){
	if(SalvaAncora!=document.location.hash){
		VerificaAncora();
		SalvaAncora = document.location.hash;
	}
}

function Localizador(Ancorador){
	document.location = Ancorador;
}
