function createMSXMLHttp()
{
    var versoes =   ["MSXML2.XMLHttp.6.0"
		    ,"MSXML2.XMLHttp.5.0"
		    ,"MSXML2.XMLHttp.4.0"
		    ,"MSXML2.XMLHttp.3.0"
		    , "MSXML2.XMLHttp"
		    ,"Microsoft.XMLHttp"
		    ];

    for (var i = 0; i < versoes.length; i++) 
    {
	try 
	{
	    var objetoXMLHttp = new ActiveXObject(versoes[i]);
	    return objetoXMLHttp;
	} 
	catch (ex) 
	{
	    
	}
    }

    return null;
}

/** Cria um objeto XMLHttpRequest */
function createObjReq()
{
    var lObj;

    try
    {
	lObj = new XMLHttpRequest();
    }
    catch(e1)
    {
	lObj = createMSXMLHttp();
    }

    return lObj;

}//this.createObjReq

/** Carrega um arquivo */
function loadFile(pUrl,pOnLoading,pOnComplete)
{
    try
    {
	var lReq = createObjReq();
    }
    catch(e)
    {
	alert(e);
	return null;
    }
   
    lReq.open("GET", pUrl, true);

    lReq.setRequestHeader("Content-Type","text/html");     
        
    lReq.onreadystatechange = function() 
    {

	//0 = uninitialized
	//1 = loading
	//2 = loaded
	//3 = interactive
	//4 = complete
	
	switch (lReq.readyState)
	{
	    case 1:
	    {
		if ( pOnLoading != null)
		    pOnLoading(lReq);
	    }
	    break;
	
	    case 4:
	    {
		if ( pOnComplete != null)
		    pOnComplete(lReq);
	    }
	    break;

	}//Switch

    }//OnReadyStateChange
            
    lReq.send(null);

    return lReq;
  
}

/** Coloca o conteúdo em um controle, por sua ID */
function putIn(pId,pContent)
{
    var lObj = document.getElementById(pId);

    if (lObj == null)
	throw("Não existe um objeto com o id: " + pId);

    lObj.innerHTML = pContent;
}