<!--
/*************************************************
           AJAX FUNCTIONS
**************************************************
 Funcoes desenvolvidas para facilitar o uso do 
 ajax em websites.
**************************************************
 Desenvolvido em: 31/01/2005
 Por: Luiz Pestana (luiz.pestana@gmail.com)
**************************************************
 Alterado em: 26/09/2008
 Por: Luiz Pestana (luiz.pestana@gmail.com)
*************************************************/

var ajax_xml_request = false;

function ajax_xml_initialize() {
	if (window.XMLHttpRequest) {
	    ajax_xml_request = new XMLHttpRequest();
	    if (ajax_xml_request.overrideMimeType) {
	        ajax_xml_request.overrideMimeType('text/xml');
	    }
	} else if (window.ActiveXObject) {
	    try {
	        ajax_xml_request = new ActiveXObject("Msxml2.XMLHTTP");
	    } catch (e) {
	        try {
	            ajax_xml_request = new ActiveXObject("Microsoft.XMLHTTP");
	        } catch (e) {}
	    }
	}
	
	if (!ajax_xml_request) return false;

	return true;
}

function rndId(length)
{
   chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
   pass = "";

   for(x=0;x<length;x++)
   {
      i = Math.floor(Math.random() * 62);
      pass += chars.charAt(i);
   }

   return pass;
}

function ajaxInitialize()
{
    var ajax_xml_request = false;
    
    try
    { 
        ajax_xml_request = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e2)
    { 
        try
        { 
            ajax_xml_request = new ActiveXObject("Microsoft.XMLHTTP"); 
        }
        catch(e1)
        { 
            ajax_xml_request = false; 
        } 
    } 

    if (!ajax_xml_request && typeof  XMLHttpRequest != "undefined")
    { 
        try
        {
            ajax_xml_request = new XMLHttpRequest(); 
        }
        catch(e)
        { 
            ajax_xml_request = false; 
        } 
    }
	
	if (!ajax_xml_request) return false;

	return ajax_xml_request;
}

function ajaxRequest(strMethod, strUrl, strData, handlerFunction)
{
	var argumentsFixed = arguments;
	strMethod = strMethod.toUpperCase();
	
	var ajax_xml_request = ajaxInitialize();
	ajax_xml_request.onreadystatechange = function()
	{
		if (ajax_xml_request.readyState == 4)
		{
			var args = new Array();
			if (ajax_xml_request.status == 200)
			{
				args[0] = ajax_xml_request.responseXML;
			}
			else
			{
				args[0] = null;	
			}
			for(var i = 4; i < argumentsFixed.length; i++)
			{
				args[i-3] = argumentsFixed[i];
			}
			handlerFunction.apply(this, args);
		}
	}
	if (strMethod == 'POST')
	{
		ajax_xml_request.open('POST', strUrl, true);
		ajax_xml_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
		ajax_xml_request.setRequestHeader('Content-length', strData.length );
		ajax_xml_request.send(strData);
	}
	else
	{
		if (strData.length > 0) strUrl += '?' + strData;
		ajax_xml_request.open('GET', strUrl);
		ajax_xml_request.send(null);
	}
}

function ajaxGET(strUrl, handlerFunction)
{
	var args = new Array('GET', strUrl, '', handlerFunction);
	for(var i = 2; i < arguments.length; i++)
	{
		args[i+2] = arguments[i];
	}
	ajaxRequest.apply(this, args);
}

function ajaxPOST(strUrl, strData, handlerFunction)
{
	var args = new Array('POST', strUrl, strData, handlerFunction);
	for(var i = 3; i < arguments.length; i++)
	{
		args[i+1] = arguments[i];
	}
	ajaxRequest.apply(this, args);
}
//-->
