// Definicia triedy pre reprezentaciu asociativneho pola
function cAssocElm(key, value) {
	this.key   = key;
	this.value = value;
}	

// AJAX wrapper: funkcia odosle asynchronny HTTP request pomocou AJAX enginu
// na adresu url a metodou POST posle parametre ulozene v asociativnom poli
// keysValues. Po uspesnom prebehnuti requestu a prijati vysledku zavola callback
// funkciu doneFunction (je vhodne ju zadefinovat ako "doneFunction(req)", aby sme
// mohli pracovat s prijatym vysledkom pomocou req.responseXML -- ako na to vid 
// P:\www\docs\ajax\usingAjaxExample.js).
function doPostFromKeyValuePairs(url, keysValues, doneFunction)
{
	var req = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest) 
    {
    	try 
    	{
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        };
    // branch for IE/Windows ActiveX version
    } 
    else if(window.ActiveXObject) 
    {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	};
		};
    }
    
	if(req) {
		
		req.onreadystatechange = function () {
    
        
    			if (req.readyState == 4) 
    			{
        			// only if "OK"
						        			
        			eval(doneFunction);
        			req = false;
    			}
		};
		
		try 
		{
			req.open("POST", url, true);
		}
		catch(e)
		{
			//alert("Error : " + e);
			window.status = "AJAX error" + e;
		};

		data = new Array();
		for (a = 0; a < keysValues.length; a++) {
			data.push(keysValues[a].key + "=" + keysValues[a].value);
		};
		
		send_data = data.join("&");
		req.send(send_data);
	}
}