if (!window.XMLHttpRequest)
{
  window.XMLHttpRequest = function()
  {
    var types = [
      'MSXML2.XMLHTTP.6.0',
      'MSXML2.XMLHTTP.3.0'
    ];
  
    for (var i = 0; i < types.length; i++)
    {
      try
      {
        return new ActiveXObject(types[i]);
      }
      
      catch(e) {}
    }
  
    return undefined;
  }
}

function ajax (url, div, callback)
{
	var obj = new XMLHttpRequest ();
	if (!obj)
	{
		return false;
	}
	
	url = (typeof path != 'undefined' ? path + '' + url : url);

	obj.onreadystatechange = function ()
	{
		if (obj.readyState == 4 && obj.status == 200)
		{
		var response = obj.responseText;
		if (div && div != '')
		  {
		    document.getElementById (div).innerHTML = response;
		  }
		  
		  if (callback)
		  {
        callback(response);
      }
		}
	}
	
	obj.open ('GET', (url.indexOf ('?') == -1 ? url + '?' : url + '&') + Math.random (), true);
	obj.send (null);
}


function loadXML (string)
{
  if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined') 
  {
    var doc = new ActiveXObject ('Microsoft.XMLDOM');
    doc.loadXML (string);
    
    return doc;
  }
  
  if (typeof DOMParser != 'undefined') 
  {
    return (new DOMParser ()).parseFromString (string, 'text/xml');
  }
  
  return createElement ('div', null);
}

