//vlozeni smajliku do spravy po kliknuti na nej
function smajl(what)
{
document.form.text.value += what;
}


//umisteni XML objektu
var xmlHttp = createXmlHttpRequestObject();
//adresa serveru s PHP scriptem
var serverAddress = "/shout/heslo.php";
//nastavit zobrazovani erroru pro validaci
var showErrors = false;
//fronta pro pozadavky
var cache = new Array();
//vytvori XMLRegues Object
function createXmlHttpRequestObject() 
{
  //promena kde je objekt ulozen
  var xmlHttp;
  //optimalizace pro prohlizece mimo IE6
  try
  {
    //vytvoreni XMLobject
    xmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
    //optimalizace pro IE 6 a starsi
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                    "MSXML2.XMLHTTP.5.0",
                                    "MSXML2.XMLHTTP.4.0",
                                    "MSXML2.XMLHTTP.3.0",
                                    "MSXML2.XMLHTTP",
                                    "Microsoft.XMLHTTP");
    //zkousi vsechny moznosti, dokud nejaka nefunguje
    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 
    {
      try 
      { 
        // vytvoreni XMLobjec
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      } 
      catch (e) {} //moznou chybu ignoruje
    }
  }
  //vrati vytvoreny objekt nebo vrati chybu
  if (!xmlHttp)
    displayError("Error creating the XMLHttpRequest object.");
  else 
    return xmlHttp;
}

// funkce pro zobrazovani chyb
function displayError($message)
{
  // ignore errors if showErrors is false
  if (showErrors)
  {
    //vypne zobrazovani dasich chyb
    showErrors = false;
    //vypise chybovou zpravu
    alert("Chyba:: \n" + $message);
    // po 10ti sekundach zkusi script znovu
    setTimeout("hesla();", 10000);
  }
}

//fuknce pro zjisteni jmena
function hesla(jmeno)
{
  //pokracuje pouze pokud je vytvoren XML object
  if (xmlHttp)
  {
    //po prijeti nenull parametru vlozeni do fronty
    if (jmeno)
    {
      //zajodovani hodnot pro snadnejsi vlozeni do retezce
      jmeno = encodeURIComponent(jmeno);
      //vlozeni hodnoty do fronty
      cache.push("jmeno=" + jmeno);
    }
    // zkouska pripojeni k serveru
    try
    {
      //pokračuj pouze pokud je možné se připoji a fronta neni prazdna
      if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) 
         && cache.length > 0)
      {
        // promenna veci ve fronte
        var cacheEntry = cache.shift();
        //pozada serverk praci s daty
        xmlHttp.open("POST", serverAddress, true);
        xmlHttp.setRequestHeader("Content-Type", 
                                 "application/x-www-form-urlencoded");
        xmlHttp.onreadystatechange = handleRequestStateChange;
        xmlHttp.send(cacheEntry);
        
      }
    }
    catch (e)
    {
      // zobraz chybu o problemech se spojenim
      displayError(e.toString());
    }
  }
}

//funkce pro ziskani odpovedi
function handleRequestStateChange() 
{
  //pokracuj pouze je li odpoved cela
  if (xmlHttp.readyState == 4) 
  {
    //a HTTP je ok
    if (xmlHttp.status == 200) 
    {
      try
      {
        //precti odpoved
        readResponse();
      }
      catch(e)
 
      {
        //zobraz chybu o problemech
        displayError(e.toString());
      }
    }
    else
    {
      // chyba
      displayError(xmlHttp.statusText);
    }
  }
}

//precte odpoved ze servru
function readResponse()
{
  // ziska odpoved
  var response = xmlHttp.responseText;
  //chyba?
  if (response.indexOf("ERRNO") >= 0 
      || response.indexOf("error:") >= 0
      || response.length == 0)
    throw(response.length == 0 ? "Server error." : response);
  // ziksa XML odpoved
  responseXml = xmlHttp.responseXML;
  // ziskej info z dokumentu
  xmlDoc = responseXml.documentElement;
  jmeno = xmlDoc.getElementsByTagName("jmeno")[0].firstChild.data;
  // zobraz nebo skryj heslo
  if (jmeno == 0) 
  {
  elm=document.getElementById("heslo");
  elm.style.display="none";
  }
  else
  {
  elm=document.getElementById("heslo");
  elm.style.display="block";
  }
  //spust script znovu pokud je co kontrolovat
  setTimeout("hesla();", 500);
}

