// 2006, Jiri Lenert

// P_WEBROOT

var spellcheck_vyber_select = new Array();
var reqSpell;


function spellcheck_status(o, text)
{
  o.innerHTML = text;
}


function spellcheck_check(info, pole, jazyk)
{
  document.getElementById(pole + '_').style.width = document.getElementById(pole).offsetWidth + 'px';
  document.getElementById(pole + '_').style.height = document.getElementById(pole).offsetHeight + 'px';
  document.getElementById(pole + '_').className = document.getElementById(pole).className;

  if (document.getElementById(pole + '_spellcheck_help')) document.getElementById(pole + '_spellcheck_help').style.display = 'none';

  if (reqSpell)
  {
    reqSpell = null;
    spellcheck_status(info, 'Kontrola pravopisu');

    document.getElementById(pole + '_').style.display = 'none';
    document.getElementById(pole).style.display = '';
    return ;
  }

  spellcheck_vyber_zrus(pole);
  if (document.getElementById(pole + '_').style.display == '')
  {
    spellcheck_status(info, 'Kontrola pravopisu');

    document.getElementById(pole + '_').style.display = 'none';
    document.getElementById(pole).style.display = '';
    return ;
  }

  spellcheck_status(info, 'Čekejte...');

  if (window.XMLHttpRequest)
  {
    reqSpell = new XMLHttpRequest();
  }
  else
  {
    reqSpell = new ActiveXObject("Msxml2.XMLHTTP");
  }

  reqSpell.open("POST", P_WEBROOT + '/spellcheck_ajax.php', true);

  var spellcheck_text = '';
  if (document.getElementById(pole).innerText)
  {
    spellcheck_text = document.getElementById(pole).innerText;
  }
  else
  {
    spellcheck_text = document.getElementById(pole).value;
  }

  reqSpell.send('jazyk=' + encodeURIComponent(jazyk) + '&pole=' + encodeURIComponent(pole) + '&text=' + encodeURIComponent(spellcheck_text) + '&tmp=' + new Date().getTime());

  reqSpell.onreadystatechange = function()
                           {
                             if (!reqSpell) return ;
                             if (reqSpell.readyState == 4)
                             {
                               document.getElementById(pole + '_').innerHTML = reqSpell.responseText;

                               document.getElementById(pole + '_').style.display = '';
                               document.getElementById(pole).style.display = 'none';

                               if (document.getElementById(pole + "_spellcheck_help"))
                               {
                                 if (reqSpell.responseText.indexOf("color:red") > 0)
                                 {
                                   document.getElementById(pole + "_spellcheck_help").innerHTML = 'Na červeně označena slova je možno kliknout a provést opravu.';
                                 }
                                 else
                                 {
                                   document.getElementById(pole + "_spellcheck_help").innerHTML = 'Kontrolovaný text je bez chyb.';
                                 }
                                 document.getElementById(pole + "_spellcheck_help").style.display = '';
                               }

                               spellcheck_status(info, 'Ukončit kontrolu pravopisu');
                               reqSpell = null;
                             }
                           }
}

function spellcheck_vyber_zrus(pole)
{
  var bodyRef = document.getElementById(pole + "_spellcheck_tlacitko").parentNode;
  if (spellcheck_vyber_select[pole] != null)
  {
    bodyRef.removeChild(spellcheck_vyber_select[pole]);
    spellcheck_vyber_select[pole] = null;
  }
}


function spellcheck_aktualizuj(pole)
{
  if (document.getElementById(pole + '_').innerText)
  {
    document.getElementById(pole).value = document.getElementById(pole + '_').innerText;
  }
  else
  {
    document.getElementById(pole).value = document.getElementById(pole + '_').textContent;
  }
}


function spellcheck_vyber(pole, zdroj, slovo, jazyk)
{
  if (document.getElementById(pole + "_spellcheck_help")) document.getElementById(pole + "_spellcheck_help").style.display = 'none';

  spellcheck_vyber_zrus(pole);
  var bodyRef = document.getElementById(pole + "_spellcheck_tlacitko").parentNode;
  var newSpan = document.createElement("span");


  if (window.XMLHttpRequest)
  {
    req = new XMLHttpRequest();
  }
  else
  {
    req = new ActiveXObject("Msxml2.XMLHTTP");
  }

  req.open("GET", P_WEBROOT + '/spellcheck_suggest_ajax.php?pole=' + encodeURIComponent(pole) + '&slovo=' + encodeURIComponent(slovo) + '&zdroj_id=' +  encodeURIComponent(zdroj.id) + '&tmp=' + new Date().getTime(), false);
  req.send(null);
  newSpan.innerHTML = req.responseText;

  bodyRef.appendChild(newSpan);
  spellcheck_vyber_select[pole] = newSpan;
}

