function makeRequest(url, func) {
http_request = false;
 if (window.XMLHttpRequest) { // Mozilla, Safari,...
  http_request = new XMLHttpRequest();
  if (http_request.overrideMimeType) {
   http_request.overrideMimeType('text/xml');
  }
 } else 
 if (window.ActiveXObject) { // IE
  try {
   http_request = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
   try {
    http_request = new ActiveXObject("Microsoft.XMLHTTP");
   } catch (e) {}
  }
 }
 if (!http_request) {
  alert('Nie można stworzyć instancji obiektu XMLHTTP');
  return false;
 }

 //funkcja wywoływana na odpowiedź serwera
 http_request.onreadystatechange = function() { 
  if (http_request.readyState == 4) {
             if (http_request.status == 200) {
             eval(func(http_request.responseXML));
			 delete http_request.onreadystatechange;
			 http_request = null;
             } else { 
					if (showAlert){
				 	alert("Wystąpił problem z żądaniem: readyState="+http_request.readyState+", status="+http_request.status+".");
					}
            }
        }
  };
//true - oznacza wysyłanie asynchroniczne
 http_request.open('GET', url, true);
 //argumentem send są parametry podawane w przypadku metody POST.
 http_request.send(null);
}


function remoteContent(idElement, url) {
document.getElementById(idElement).innerHTML="<img src=/i/wait.gif>";
http_request = false;
 if (window.XMLHttpRequest) { // Mozilla, Safari,...
  http_request = new XMLHttpRequest();
  if (http_request.overrideMimeType) {
   http_request.overrideMimeType('text/xml');
  }
 } else 
 if (window.ActiveXObject) { // IE
  try {
   http_request = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
   try {
    http_request = new ActiveXObject("Microsoft.XMLHTTP");
   } catch (e) {}
  }
 }
 if (!http_request) {
  alert('Nie można stworzyć instancji obiektu XMLHTTP');
  return false;
 }

 //funkcja wywoływana na odpowiedź serwera
 http_request.onreadystatechange = function() { 
  if (http_request.readyState == 4) {
             if (http_request.status == 200) {
             eval(replaceContent(idElement, http_request.responseText));
			 delete http_request.onreadystatechange;
			 http_request = null;
             } else { 
					if (showAlert){
				 	alert("Wystąpił problem z żądaniem: readyState="+http_request.readyState+", status="+http_request.status+".");
					}
            }
        }
  };
//true - oznacza wysyłanie asynchroniczne
 http_request.open('GET', url, true);
 //argumentem send są parametry podawane w przypadku metody POST.
 http_request.send(null);
}

function replaceContent(idElement, txt) {
document.getElementById(idElement).innerHTML=txt;
}

/**
 * Funkcja zwraca wartosc textowa pierwszego napotkanego wezla o podanej nazwie.
 * Jesli wezel o takiej nazwie nie istnieje lub nie ma wartosci textowej to jest zwracany null.
 *
 * @param xml			Obiekt XML.
 * @param tagName		Nazwa wezla (taga).
 * @return				Wartosc textowa wezla lub null.
 */
function getXMLValue(xml,tagName) {
	var retVal=null;
	var elems=xml.getElementsByTagName(tagName);
	if (elems.length > 0) {
		var eCh=elems[0].childNodes;
		for (var i=0; i<eCh.length; i++) {
			if((eCh[i].nodeType==3) || (eCh[i].nodeType==4)) {
				retVal=eCh[i].nodeValue;
			}
		}
	}
	return retVal;
}