/** Odeslání XMLHttp požadavku
* @param Function funkce zajišťující obsluhu při změně stavu požadavku, dostane parametr s XMLHttp objektem
* @param string GET|POST|...
* @param string URL požadavku
* @param string tělo zprávy
* @param object předané hlavičky ve tvaru { 'hlavička': 'obsah' }
* @return boolean true v případě úspěchu, false jinak
* @copyright Jakub Vrána, http://php.vrana.cz/
*/

var myskaX=0;
var myskaY=0;

function myska(e)
{
if (!e) {var e=window.event}
if (e.pageX || e.pageY) {myskaX=e.pageX; myskaY=e.pageY}
else if (e.clientX || e.clientY) with (document.body)
{myskaX=e.clientX+scrollLeft; myskaY=e.clientY+scrollTop}
}
document.onmousemove=myska;


function show_infobox(text,ib_width,ib_height) {
  document.getElementById('info_box').innerHTML=text;
  if ((ib_width>0) && (ib_height>0)) {
    if ((myskaX+ib_width)<(document.body.clientWidth+document.body.scrollLeft)) okno_left = myskaX; else okno_left = document.body.clientWidth+document.body.scrollLeft-ib_width;
    if ((myskaY+ib_height)<(document.body.clientHeight+document.body.scrollTop)) okno_top = myskaY; else okno_top = document.body.clientHeight+document.body.scrollTop-ib_height;
    if (okno_left>5) okno_left+=-5;
    if (okno_top>5) okno_top+=-5;
    document.getElementById('info_box').style.left=okno_left;
    document.getElementById('info_box').style.top=okno_top;
    document.getElementById('info_box').style.width= ib_width;
    document.getElementById('info_box').style.height= ib_height;
  }
  document.getElementById('info_box').style.display = 'block';
}

function show_infobox_position(text,ib_width,ib_height,x,y) {
  document.getElementById('info_box').innerHTML=text;
  if (ib_width>0) {
    if ((x+ib_width)<(document.body.clientWidth+document.body.scrollLeft)) okno_left = x; else okno_left = document.body.clientWidth+document.body.scrollLeft-ib_width;
    document.getElementById('info_box').style.left=okno_left;
    document.getElementById('info_box').style.width= ib_width;
  } else {
    document.getElementById('info_box').style.top=x;
  }
  if (ib_height>0) {
    if ((y+ib_height)<(document.body.clientHeight+document.body.scrollTop)) okno_top = y; else okno_top = document.body.clientHeight+document.body.scrollTop-ib_height;
    document.getElementById('info_box').style.top=okno_top;
    document.getElementById('info_box').style.height= ib_height;
  } else {
    document.getElementById('info_box').style.top=y;
  }
  document.getElementById('info_box').style.display = 'block';
}

function show_box(boxname,text) {
  document.getElementById(boxname).innerHTML=text;
  document.getElementById(boxname).style.display = 'block';
}

function hide_infobox() {
  document.getElementById('info_box').style.display = 'none';
}

function hide_box(boxname) {
  document.getElementById(boxname).style.display = 'none';
}

function send_xmlhttprequest(state_change,method,url,content,headers,test) {
  if (url != 0) {
    if (test) alert(url);
    if (window.XMLHttpRequest) { // Mozilla, Safari, Opera, Konqueror...
            xmlhttp = new XMLHttpRequest();
            if (xmlhttp.overrideMimeType) {
                xmlhttp.overrideMimeType('text/xml');
                // Podívejte na poznámku o tomto řádku níže
            }
        } else if (window.ActiveXObject) { // Internet Explorer
            try {
                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }
    self.encFunc = encodeURIComponent ? encodeURIComponent : escape;
    if (!xmlhttp) {
        return false;
    }
    xmlhttp.open(method, url, true);
    xmlhttp.onreadystatechange = function () {state_change(xmlhttp);};
    headers = headers || {};
    headers['X-Requested-With'] = headers['X-Requested-With'] || 'XMLHttpRequest';
    for (var key in headers) {
      xmlhttp.setRequestHeader(key, headers[key]);
    }
    xmlhttp.send(content);
    return true;
  } else show_infobox("Chybné URL!",0,0);
}

function send_box_xmlhttprequest(boxname,state_change,method,url,content,headers,test) {
  if (url != 0) {
    if (test) alert(url);
    if (window.XMLHttpRequest) { // Mozilla, Safari, Opera, Konqueror...
            xmlhttp = new XMLHttpRequest();
            if (xmlhttp.overrideMimeType) {
                xmlhttp.overrideMimeType('text/xml');
                // Podívejte na poznámku o tomto řádku níže
            }
        } else if (window.ActiveXObject) { // Internet Explorer
            try {
                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }
    self.encFunc = encodeURIComponent ? encodeURIComponent : escape;
    if (!xmlhttp) {
        return false;
    }
    xmlhttp.open(method, url, true);
    xmlhttp.onreadystatechange = function () {state_change(xmlhttp,boxname);};
    headers = headers || {};
    headers['X-Requested-With'] = headers['X-Requested-With'] || 'XMLHttpRequest';
    for (var key in headers) {
      xmlhttp.setRequestHeader(key, headers[key]);
    }
    xmlhttp.send(content);
    return true;
  } else show_infobox("Chybné URL!",0,0);
}

function obsluha_infobox(xmlhttp) {
  try {
    if (xmlhttp.readyState == 4) {
      document.getElementById('info_box').innerHTML+="Data byla přijata.<br>";
      if (xmlhttp.status == 200) {
        document.getElementById('info_box').innerHTML+="Data OK.<br>";

        // aktualizace odpovědí na základě aktuálního stavu
        show_infobox(xmlhttp.responseText,0,0);

      } else {
        document.getElementById('info_box').innerHTML="Chyba pri nacitani stanky.<br>"+ xmlhttp.status +": "+ xmlhttp.statusText;
      }
    } else if (xmlhttp.readyState == 3) {
      document.getElementById('info_box').innerHTML+="Data se zpracovávají.<br>";
    } else if (xmlhttp.readyState == 2) {
      document.getElementById('info_box').innerHTML+="Data jsou nahrána.<br>";
    } else if (xmlhttp.readyState == 1) {
      document.getElementById('info_box').innerHTML+="Data se nahrávají.<br>";
    } else if (xmlhttp.readyState == 0) {
      document.getElementById('info_box').innerHTML+="Neinicializováno.<br>";
    }
  } catch( e ) {
    //alert('Zachycená výjimka: ' + e.description);
  }
}

function obsluha_box(xmlhttp,boxname) {
  try {
    if (xmlhttp.readyState == 4) {
      document.getElementById(boxname).innerHTML+="Data byla přijata.<br>";
      if (xmlhttp.status == 200) {
        document.getElementById(boxname).innerHTML+="Data OK.<br>";

        // aktualizace odpovědí na základě aktuálního stavu
        show_box(boxname,xmlhttp.responseText);

      } else {
        document.getElementById(boxname).innerHTML="Chyba pri nacitani stanky.<br>"+ xmlhttp.status +": "+ xmlhttp.statusText;
      }
    } else if (xmlhttp.readyState == 3) {
      document.getElementById(boxname).innerHTML+="Data se zpracovávají.<br>";
    } else if (xmlhttp.readyState == 2) {
      document.getElementById(boxname).innerHTML+="Data jsou nahrána.<br>";
    } else if (xmlhttp.readyState == 1) {
      document.getElementById(boxname).innerHTML+="Data se nahrávají.<br>";
    } else if (xmlhttp.readyState == 0) {
      document.getElementById(boxname).innerHTML+="Neinicializováno.<br>";
    }
  } catch( e ) {
    //alert('Zachycená výjimka: ' + e.description);
  }
}

