/*
*   Antispambot 2.0 - (c) NETservis, s.r.o. (Marek Demcak)
*   Tento javascript automaticky vyplní veškeré elementy captcha vytvořené pomocí antispambot.php verze 2.0
*/

var oldonload = window.onload;
window.onload = function() {
    if (typeof oldonload== 'function') {  // pokud byla nastavena nějaká předchozí akce onload, vykonej neprve ji
    oldonload();
    }
    var fy=document.getElementsByTagName('form');
    var inpy=Array();
    if(fy.length==0) return; // žádné formuláře na stránce - konec skriptu
    var post_data="fAct=get-captcha";
    for(var i=0;i<fy.length;i++) {
        if(fy[i].fANITISPMIMG) {  // nalezen formular, ve kterem se pouziva captcha
          if(fy[i].fANITISPMHID.value.length==32) {  // mame k dispozici hash captchy
            inpy[0+inpy.length]=fy[i].fANITISPMHID;
            post_data+="&hash[]="+fy[i].fANITISPMHID.value;
          }
        }
    }
    if(inpy.length==0) return; // nenalezeny žádné inputy s captchou - konec skriptu
    // vytvoreni xhr objektu
    var h=false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
      h=new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE
      try {
        h=new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
        try {
          h=new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {
          h=false;
        }
      }
    }
    if(!h) {
      return; // ajax nekompatibilni prohlizec - nutnost opsani kontrolniho kodu rucne (konec skriptu)
    }
    h.onreadystatechange = function() {
    if(h.readyState==4) {
      if(h.status == 200) {
          var captchas=h.responseXML.getElementsByTagName('codes')[0];
          while(captchas.firstChild && captchas.firstChild!=captchas) {
                // vytvoreni skrytych formularovych poli, ktera nahradi puvodni, a do kterych se ulozi potrebne hodnoty
                var nhid=document.createElement('input');
                var nimg=document.createElement('input');
                nhid.name='fANITISPMHID';
                nimg.name='fANITISPMIMG';
                nhid.type='hidden';
                nimg.type='hidden';
                nhid.value=captchas.firstChild.getAttribute('name'); // name obsahuje hash kódu
                if( captchas.firstChild.firstChild != null ) {
                	nimg.value=captchas.firstChild.firstChild.nodeValue; // zde je uložen nezahashovaný kód          
                	var f=document.getElementById('hid_'+captchas.firstChild.getAttribute('name'));
                	captchas.removeChild(captchas.firstChild); // odebrání kódu ze staženého xml - vše potřebné jsme již přečetli
                } else {
                	captchas.removeChild(captchas.firstChild); // odebrání kódu ze staženého xml - vše potřebné jsme již přečetli
                	continue;
                }
                if(nimg.value.length!=6 || !f) continue;  // obdrzen neplatny kontrolni kod - konec (nutnost vyplnit rucne) nebo jiná chyba
                f=f.form; // získání reference na formulář, kde je captcha, pro kterou jsme stáhli kód
                // hledame, zda je kontrolni kod pozadovan v ramci tabulky
                var tra=f.fANITISPMIMG;
                var tma=5; // max. 5 tagů obaluje input
                while(tma>0) {
                  if(tra && tra.nodeName && tra.nodeName.toLowerCase()!='tr') {
                    tra=tra.parentNode;
                  }
                  tma--;
                }
                if(tma>0) { // kontrolni kod je v ramci tabulky
                  tra.parentNode.removeChild(tra);  // odebirame cely radek tabulky
                } else if(document.getElementById('md_ops_'+nhid.value)) {  // kontrolni kod neni v tabulce, musime odebrat element, ktery obaluje prislusne formularove prvky
                  document.getElementById('md_ops_'+nhid.value).parentNode.removeChild(document.getElementById('md_ops_'+nhid.value));
                }
                f.appendChild(nhid);  // pridani elementu input do formulare
                f.appendChild(nimg);  // pridani elementu input do formulare
          }
      }
    }
    };
    h.open('POST', '/antispam.php', true); // odeslani pozadavku metodou POST
    h.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
    h.send(post_data); // post_data obsahují hashe všech kódů
  }
