function getXMLHttpRequestObject()
  {
  	var xmlHttp;
	
	try
	{
		xmlHttp = new XMLHttpRequest();
	}
	catch(e)
	{
		var XmlHttpVersions = new Array('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<XmlHttpVersions.length && !xmlHttp; i++)
		{
			try
			{
				xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
			}
			catch (e) {}
		} 
	}
	if(!xmlHttp)
	 alert('Błąd podczas tworzenia obiektu XMLHttpRequest!');
	else
	 return xmlHttp; 
  }

function startGETRequest(url, div, onComplete, onEnd)
{
  var XMLHttpRequestObject = getXMLHttpRequestObject()
  if(XMLHttpRequestObject){
    XMLHttpRequestObject.open("GET", url);
    XMLHttpRequestObject.setRequestHeader(
      'Content-Type', 'text/html; charset=utf-8');
    XMLHttpRequestObject.onreadystatechange = function()
    {
		if ( (XMLHttpRequestObject.readyState == 1) || (XMLHttpRequestObject.readyState == 2) || (XMLHttpRequestObject.readyState == 3) )
	{
		document.getElementById(div).innerHTML = '<p align="center" style="margin-top:100px;margin-bottom:40px;"><img src="images/loading.gif" style="width:24px; height:24px;"></p>';
	}
      if (XMLHttpRequestObject.readyState == 4){
        if(XMLHttpRequestObject.status == 200){
          var responseXML = XMLHttpRequestObject.responseXML;
          var responseText = XMLHttpRequestObject.responseText;
          onComplete(responseText, responseXML);
        }
        delete XMLHttpRequestObject;
        onEnd();
      }
    }
    XMLHttpRequestObject.send(null);
  }
}

function startPOSTRequest(url, params, onComplete, onEnd)
{
  var XMLHttpRequestObject = getXMLHttpRequestObject();
  if(XMLHttpRequestObject){
    XMLHttpRequestObject.open("POST", url);
    XMLHttpRequestObject.setRequestHeader(
      'Content-Type', 'application/x-www-form-urlencoded');
    XMLHttpRequestObject.onreadystatechange = function()
    {
      if (XMLHttpRequestObject.readyState == 4){
        if(XMLHttpRequestObject.status == 200){
          var responseXML = XMLHttpRequestObject.responseXML;
          var responseText = XMLHttpRequestObject.responseText;
          onComplete(responseText, responseXML);
        }
        delete XMLHttpRequestObject;
        onEnd();
      }
    }
    XMLHttpRequestObject.send(params);
  }
}
