function formajax(){
	
	this.AjaxConn = function (){	
	
		try{
			this.xmlhttp = new XMLHttpRequest();
		}catch(ee){
			try{
				this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			}catch(e){
				try{
					this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				}catch(E){
					this.xmlhttp = false;
				}
			}
		}// end catch
		
		this.method = "POST";
		this.url 	= "";
		this.parameters = null;
		this.enctype = "text/html; charset=iso-8859-1";	
	
		this.ResetData = function() {
			this.method = "POST";
			this.url 	= "";
			this.parameters = null;
		}
		this.ResetFunctions = function() {
			this.Preload = function() {};
			this.Result = function() {};
			this.Erro = function() {};
		}
		this.reset = function() {
			this.ResetFunctions();
			this.ResetData();
		}
	
		this.Carregar = function(){
			this.Preload();
			this.xmlhttp.open(this.method, this.url,true);	
	
			this.xmlhttp.setRequestHeader("Expires", "26 Jul 1997 05:00:00 GMT");
			this.xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
			this.xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
			this.xmlhttp.setRequestHeader("Pragma", "no-cache");
			this.xmlhttp.setRequestHeader("Content-Type",this.enctype);
			
			if(this.parameters){
				this.xmlhttp.setRequestHeader('Content-length', this.parameters.length);
			}
			this.xmlhttp.setRequestHeader('Connection', 'close');
			this.xmlhttp.send(this.parameters);
			//Executada quando o navegador obtiver o código
			var self = this;
			//Executada quando o navegador obtiver o código
			this.xmlhttp.onreadystatechange=function() {
				
				if (self.xmlhttp.readyState==4){
					self.texto=self.xmlhttp.responseText; //Lê o texto
					self.texto=self.texto.replace(/\+/g," "); //Desfaz o urlencode
					self.texto=unescape(self.texto);	
					if(self.xmlhttp.status==200){
						self.Result();
					}else{
						self.Erro();
					}
				}
	
			}// end function
	
		}// end function	
	}//end function
	// END AJAX

	// ABRE OBJETO VIA AJAX
	this.AjaxOpen = function(display, url, preload, erro, display_preload, display_erro){
		if(!preload){preload="<span class='preload'>Carregando...</span>";}
		if(!erro){erro='Não Encontardo!';}
		var obj 		= document.getElementById(display);
		var obj_display = obj;
		var obj_erro 	= obj;
		if(display_preload){
			obj_display = document.getElementById(display_preload);
		}//end if
		if(display_erro){
			obj_erro = document.getElementById(display_erro);
		}//end if
		var conn= new this.AjaxConn();
		conn.element 	= obj;
		conn.method  	= "GET";
		conn.url 		= url;
		conn.Preload 	= function(){obj_display.innerHTML = preload;};
		conn.Result 	= function(){obj.innerHTML = this.texto;};
		conn.Erro 		= function(){obj_erro.innerHTML = erro; };
		conn.Carregar();
	}//end fucntion
	
	
	// FORMATA DE ACORDO COM A MASCARA
	this.Mascara = function(objeto, evt, mask) {
		var LetrasU = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
		var LetrasL = 'abcdefghijklmnopqrstuvwxyz';
		var Letras  = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
		var Numeros = '0123456789';
		var Fixos  = '().-:/ ';
		var Charset = " !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_/`abcdefghijklmnopqrstuvwxyz{|}~";
		
		evt = (evt) ? evt : (window.event) ? window.event : "";
		var value = objeto.value;
		if(evt){
			var ntecla = (evt.which) ? evt.which : evt.keyCode;
			tecla = Charset.substr(ntecla - 32, 1);
			if(ntecla < 32){return true;}
			
			var tamanho = value.length;
			if(tamanho >= mask.length){return false;}
			
			var pos = mask.substr(tamanho,1);
			
			if(tecla!=pos){
				while(Fixos.indexOf(pos)!= -1) {
					value += pos;
					tamanho = value.length;
					if (tamanho >= mask.length){return false;}
					pos = mask.substr(tamanho,1);
				}// end while
			
				switch (pos) {
					case '#' : if (Numeros.indexOf(tecla) == -1) {return false;} break;
					case 'A' : if (LetrasU.indexOf(tecla) == -1) {return false;} break;
					case 'a' : if (LetrasL.indexOf(tecla) == -1) {return false;} break;
					case 'Z' : if (Letras.indexOf(tecla) == -1) {return false;} break;
					case '*' : objeto.value = value; return true; break;
					default : return false; break;
				}// end switch
			}// end if
		}// end if
		objeto.value = value;
		return true;
	}// end function
			
}//end object
