var request;
var queryString; // Zmienna bdzie przechowywaa dane wysane metod POST.

function sendData(){
   setQueryString();
   var url="http://parkerriver/s/sender";
   httpRequest("POST",url,true);
}

// Obsuga zdarze dla obiektu XMLHttpRequest.
function handleResponse(){
   if(request.readyState == 4){
      if(request.status == 200){
         var doc = request.responseXML;
         var info = getDocInfo(doc);
         stylizeDiv(info,document.getElementById(""docDisplay""));
      } else {
         alert(""Wystpi problem z komunikacj midzy obiektem 
         XMLHttpRequest, ""+
         ""a programem serwera."");
      }
   }// Koniec zewntrznej ptli if.
}

/* Inicjalizacja obiektu dania, ktry zosta ju skonstruowany */
function initReq(reqType,url,bool){
   /* Okrelamy funkcj, ktra bdzie obsugiwaa odpowied HTTP */
   request.onreadystatechange=handleResponse;
   request.open(reqType,url,bool);
   request.setRequestHeader(""Content-Type"",
      ""application/x-www-form-urlencoded; charset=iso-8859-2"");
   /* Funkcjonuje jedynie w przegldarkach na bazie Mozilli. */
   //request.overrideMimeType(""text/XML"");
   request.send(queryString);
}

/* Funkcja opakowujca do skonstruowania obiektu dania.
Parametry:
   reqType: typ dania HTTP, na przykad GET lub POST.
   url: adres URL programu serwerowego.
   asynch: czy danie bdzie wysane asynchronicznie, czy te nie. */
function httpRequest(reqType,url,asynch){
   // Skrcone... Zobacz [Sposb 01].
}
function setQueryString(){
   queryString="";
   var frm = document.forms[0];
   var numberElements = frm.elements.length;
   for(var i = 0; i < numberElements; i++) {
      if(i < numberElements-1) {
         queryString += frm.elements[i].name+"="+
            encodeURIComponent(frm.elements[i].value)+"&";
      } else {
         queryString += frm.elements[i].name+"="+
            encodeURIComponent(frm.elements[i].value);
      }
   }
}
/* Dynamiczne dostarczenie zawartoci elementw div. Jeeli chcemy wzbogaci
 elementy div, to do tej funkcji moemy doczy informacje o stylu. */
function stylizeDiv(bdyTxt,div){
   // Pozostaa zawarto elementu DIV.
   div.innerHTML="";
   div.style.backgroundColor="yellow";
   div.innerHTML=bdyTxt;
}

/* Pobranie informacji o dokumencie XML za pomoc obiektu DOM Document. */
function getDocInfo(doc){
   var root = doc.documentElement;
   var info = "<h3>Nazwa elementu nadrzdnego dokumentu: </h3>"+ root.nodeName;
   var nds;
   if(root.hasChildNodes()) {
      nds=root.childNodes;
      info+= "<h4>Nazwa/warto wza potomnego elementu nadrzdnego:</h4>";
      for (var i = 0; i < nds.length; i++){
         info+= nds[i].nodeName;
         if(nds[i].hasChildNodes()){
            info+= " : \""+nds[i].firstChild.nodeValue+"\"<br />";
         } else {
            info+= " : Pusty<br />";
         }
      }
   }
   return info;
}
