function obtenerXHR()
{
    req = false;
    if (window.XMLHttpRequest)
    {
       req = new XMLHttpRequest();
    }
    else
    {
    	if (window.ActiveXObject)
    	{
    	    // Definimos un vector con las distintas posibilidades
    	    var vectorVersiones =   [ 	"MSXML2.XMLHttp.5.0", 
    	    							"MSXML2.XMLHttp.4.0",
    	    							"MSXML2.XMLHttp.3.0",
    	    							"MSXML2.XMLHttp",
    	    							"Microsoft.XMLHTTP"
    	    						];
    	    // Lo recorremos e intentamos instancias cada uno
    	    for (var i=0; i<vectorVersiones.length; i++)
    	    {
    	    	try {
    	    		req = new ActiveXObject(vectorVersiones[i]);
    	    		return req;
    	    	} catch(e) {}
    	    }						
    	}
    }
    return req;
}

var peticion = obtenerXHR();

dojo.require("dojo.back");

dojo.back.setInitialState( {
  		back: function() {
		  alert("Vas a salir de este sitio");
		}
    });

var State = function(fuente, divID){
    this.changeUrl = fuente+"#"+divID;
    
    this.datos  = fuente;
    this.lugar = divID;
 }

dojo.extend(State, {
  back: function() {
  obtenDatos(this.datos, this.lugar, true);
},
forward: function(){
  obtenDatos(this.datos, this.lugar, true);
}
});
/* Cuando son historicos -->  no se guardan en la historia para back o forward button */
function obtenDatos(fuenteDatos, divID, historicos) 
{ 

	if(peticion) 
        {
        	var obj = document.getElementById(divID);
         	peticion.open('POST', fuenteDatos, true); 
		peticion.onreadystatechange =   
		   function()
		   {
			if (peticion.readyState==4 && peticion.status==200) 
      			{ 
            			obj.innerHTML = peticion.responseText ;
				if (!historicos) dojo.back.addToHistory(new State(fuenteDatos, divID));
      			}
			else
      			{	 
              			obj.innerHTML = "Recuperando datos ....."; 

			}
		   }	
           	peticion.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   		peticion.send(null);
  
	 
        }
	else
	{
		var obj = document.getElementById(divID);
        	obj.innerHTML = "No pudo crear objeto AJAX, intente en otro navegador"; 
	}
}
   