function AJAXLayer(url,layer,modo){
	var jx=new AJAX();
	jx.url=url;
	document.getElementById(layer).innerHTML='Carregando..'
	jx.modo = modo; //'T' - text   'X' - XML
	jx.processaresultado = function(r){document.getElementById(layer).innerHTML= r;}
	jx.conectar();
}

function AJAXField(url,field,modo){
	var jx=new AJAX();
	jx.url=url;
	field.value=''
	jx.modo = modo; //'T' - text   'X' - XML
	jx.processaresultado = function(r){field.value= r;}
	jx.conectar();
}


function AJAX(url, metodo, params, processa, modo)
{
    this.url                 = url;
    this.metodo             = (metodo) ? metodo : 'GET';
    this.params             = (metodo='GET') ? null : params;
    this.processaresultado     = processa;
    this.modo                = (modo) ? modo : 'T';
    
    
    /* T = Text , X = XML */
    if( this.modo != 'T' && this.modo != 'X' ){
        this.modo = 'T';
    }
    
    this.conectar();
}

AJAX.prototype = {
    
    /*
        Cria o método conecter()
        Responsavel pela criação do objeto Ajax ( httprequest )
    */
    conectar: function(){
        
                /* Verifica se URL é válda */
                if( this.url == undefined || this.url == ''){
                    return;
                }
                
                /* Cria o objeto httpRequest */
                this.httprequest = null;
                
                /* Mozilla, Safari, FireFox ... */
                if( window.XMLHttpRequest ){
                    this.httprequest = new XMLHttpRequest();
                    
                /* IE */
                } else if( window.ActiveXObject){
                    try{
                        this.httprequest = new ActiveXObject("Msxml2.XMLHTTP");
                    } catch (e){
                        try{
                            this.httprequest = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e) {}
                    }
                }
                if(this.httprequest != null && this.httprequest != undefined ){
                    var obj = this;
                    this.httprequest.onreadystatechange = function(){
                                                                obj.processaretorno.call(obj);
                                                            }
                    this.httprequest.open(this.metodo,this.url, true);
                    this.httprequest.send(this.params);

                }
                
            }, // fim conectar

    /*
        Cria o método processaretorno()
        recebe a resposta do responseText ou responseXML
    */            
    processaretorno: function(){
                        if( this.httprequest.readyState == 4 ){
                            if( this.httprequest.status == 200 ){
                                var resp = ( this.modo == 'T' ) ? this.httprequest.responseText : this.httprequest.responseXML;
                                
                                if( this.processaresultado != null ){
                                    //alert(resp);
                                    this.processaresultado(resp);
                                } else {
                                    alert("erro="+resp);
                            }
                            } else {
                                this.processaerro();
                            }
                        }
                    }, // fim processaretorno

    /*
        Cria o método processaerro()
        Retorna um alert de erro, caso houver
    */                    
    processaerro:     function(){
                        alert(this.httprequest.status + '-' + this.httprequest.statusText + ' :-> ' + this.url);
                    }            
}