/** odeslání XMLHttp požadavku 
 *  @param function obsluha funkce zajišťující obsluhu při změně stavu požadavku, dostane parametr s XMLHttp objektem @param string method GET|POST|... 
 *  @param string url URL požadavku 
 *  @param string [content] tělo zprávy 
 *  @param array [headers] pole předaných hlaviček ve tvaru { 'hlavička': 'obsah' } 
 *  @return bool true v případě úspěchu, false jinak 
 */ 
   
  function send_xmlhttprequest(obsluha, method, url, content, headers) { 
    var xmlhttp = (window.XMLHttpRequest ? new XMLHttpRequest : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false));
    var rnd = new String(Math.random()); 
    var c_url = new String(url); 
        
    if (!xmlhttp) { return false; } 
    xmlhttp.open(method, url+(c_url.search(/\?/gi)==-1?'?':'&')+'rnd='+rnd.substr(2),true); 
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.onreadystatechange = function() { obsluha(xmlhttp); }; 
    if (headers) { 
      for (var key in headers) { 
        xmlhttp.setRequestHeader(key, headers[key]); 
      } 
    }  
    xmlhttp.send(content); 
    return true; 
  }
