function Ajax(host)
{
	//___________PROPRIEDADES___________//
	
	this.host = document.getElementById(host);
	
	//___________METODOS___________//	
	
	this.addNode = function(tag,atb)
	{
		/* 	atb recebe valores como array bidimensional:
		[ ['id','glow'],	
		  ['src','../images/estrutura/glow.png'], 
		  ['style','position:absolute; top:50%; left:50%; margin-left:-390px; margin-top:-220px; -moz-opacity:0.5; filter:alpha(opacity=50); z-index:1; width:780px; height: 440px'] ];  */
		
		this.tag = tag;
		this.atributes = atb; 
		this.node = document.createElement(this.tag);
		
		//adiciona dinamicamente o novo nó
		
		this.host.appendChild(this.node);
		
		//o loop percorre a propriedade this.atributes, nela constam atributos html tais como id, style etc 
		for( i = 0; i<this.atributes.length;i++)
		{
			/*o tratamento javascript para a propriedade style é diferente em navegadores IE ou Moz.
			 O IE utiliza sintaxe de . (ponto). Ou seja deveremos informar document.quem.style.propriedade = valor,
			 essa instrução deverá ser repetida para cada propriedade de estilo definida. No caso do Moz basta 
			 apenas informar o estilo como na definição interna do HTML e aplicá-la via função setAtribute 
			*/
			if(navigator.appName != 'Microsoft Internet Explorer')
			{
				/*a funcao setAttribute() é entendida diferente para browsers Moz ou IE. 
				No caso do Moz a funcao processa todos os atributos de uma tag. Exemplo src, id, style. 
				No caso do IE, atributos simples como src, id etc são processados, porém atributos 
				compostos tal como style, não são processados*/
				this.node.setAttribute(this.atributes[i][0], this.atributes[i][1]); //adiciona os atributos
			}else{
				/*a declaração de estilo na CSS para alguns elementos é utilizado hifen como por 
				exemplo background-color, tal sintaxe não é aceita na declaração de ponto, devendo ser convertida
				para backgroundColor. Essa é a tarefa empreendida a seguir*/			
				if (this.atributes[i][0] != 'style')
				{
					//adiciona os atributos não compostos
					this.node.setAttribute(this.atributes[i][0], this.atributes[i][1]); 
				}else{
					//tratamento para atributo style
					var arrayStyle = this.atributes[i][1].split(';');
					for( j = 0 ; j<arrayStyle.length; j++)
					{
						//aqui dividimos a declaração de estilo onde constar (:)
						arrayStyleItens = arrayStyle[j].split(':');
						/*aqui pegamos valores de string que contenham - (hifen) mas que não sejam declarações do
						tipo -moz (Mozilla)*/
						if(arrayStyleItens[0].indexOf('-') != -1 && arrayStyleItens[0].indexOf('-moz') == -1)
						{
							hifenPos = arrayStyleItens[0].indexOf('-');
							minuscula = arrayStyleItens[0].slice(hifenPos,hifenPos+2);
							maiuscula = minuscula.toUpperCase();
							maiuscula = maiuscula.replace(/-/,'');
							definicao =  arrayStyleItens[0].replace(minuscula,maiuscula);
							propriedade = arrayStyleItens[1];
						}else{
							/*aqui pegamos valores de string isentas de - (hifen) mas que também não sejam
							declarações do tipo -moz */
							if(arrayStyleItens[0].indexOf('-moz') == -1)
							{
								definicao = arrayStyleItens[0];
								propriedade = arrayStyleItens[1];
							}
						}
						//aqui criamos uma string que na realidade é o comando de formatação do javascript para estilo
						ex ="this.host.childNodes[(this.host.childNodes.length-1)].style."+definicao+"= '"+propriedade+"'"; 
						//aqui a string anterior é transformada em comando javascript e executada
						eval(ex);			
					} //fecha for
				}//fecha if dentro do else
			}//fecha else
		}//fecha for
	}//fecha funcao
	
	
	this.addContent = function (content,el,flag) 
	{
		/* o flag indica se um arquivo sera aberto ou o conteudo esta 
		sendo inserido diretamente em formato texto. 
		Ex. valor 0 - conteudo será inserido diretamente, nesse caso o atributo content 
							recebe uma valor em formato texto.
			   valor 1 -  será aberto um arquivo, nesse caso content recebe o nome do arquivo a ser aberto.
		O argumento el representa o elemento de destino*/
		
//		var destino = ()
		if(flag) 
		{
			request = (window.XMLHttpRequest) ? new XMLHttpRequest()  :  
																				(window.ActiveXObject) ? new 
																				ActiveXObject("Microsoft.XMLHTTP") : false ; 
			request.open("GET", content,true);
			request.onreadystatechange=function()  
			{ 
				if (request.readyState==4)  
				{ 
					//alert(document.getElementById(el))
					//alert(request.responseText)
					document.getElementById(el).innerHTML = request.responseText; 
				} 
			} 
			request.send(null); 
		}else{
			document.getElementById(el).innerHTML = content;
		}//fecha if
	}//fecha funcao

	this.addContentTop = function (content,el,flag) 
	{
		if(flag) 
		{
			request = (window.XMLHttpRequest) ? new XMLHttpRequest()  :  
																				(window.ActiveXObject) ? new 
																				ActiveXObject("Microsoft.XMLHTTP") : false ; 
			request.open("GET", content,true);
			request.onreadystatechange=function()  
			{ 
				if (request.readyState==4)  
				{ 
					//alert(document.getElementById(el))
					//alert(request.responseText)
					top.document.getElementById(el).innerHTML = request.responseText; 
				} 
			} 
			request.send(null); 
		}else{
			top.document.getElementById(el).innerHTML = content;
		}//fecha if
	}//fecha funcao

	this.addContentIframe = function (content,el,flag,indice) 
	{
		if(flag) 
		{
			request = (window.XMLHttpRequest) ? new XMLHttpRequest()  :  
																				(window.ActiveXObject) ? new 
																				ActiveXObject("Microsoft.XMLHTTP") : false ; 
			request.open("GET", content,true);
			request.onreadystatechange=function()  
			{ 
				if (request.readyState==4)  
				{ 
					window.frames[0].document.getElementById(el).innerHTML= request.responseText; 
				} 
			} 
			request.send(null); 
		}else{
			window.frames[0].document.getElementById(el).innerHTML = content;
		}//fecha if
	}//fecha funcao

	
	this.sendPost = function (file,content,el)
	{
		request = (window.XMLHttpRequest) ? new XMLHttpRequest()  :  
																		(window.ActiveXObject) ? new 
																		ActiveXObject("Microsoft.XMLHTTP") : false ; 
		request.open("POST", file,true);
		request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		if(el != '')
		{
			request.onreadystatechange=function()  
			{ 
				if (request.readyState==4)  
				{ 
					document.getElementById(el).innerHTML = request.responseText; 
				} 
			} 
		}
		request.send(content); 		
	}
	
	//outro metodo
}

