/*****/
if (typeof XMLHttpRequest == "undefined" && window.ActiveXObject) {
     function XMLHttpRequest() {
          var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
          "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP",
          "Microsoft.XMLHTTP"];
          for (var i = 0; i < arrSignatures.length; i++) {
               try {
                    var oRequest = new ActiveXObject(arrSignatures[i]);
                    return oRequest;
               }
               catch (oError) {
                    //ignore
               }
          }
          throw new Error("MSXML is not installed on your system.");
     }
}
/*****/
function getObject(id){
     return(document.getElementById(id));
}
// regexpy
var RX_NUMBER = '=([0-9]+)';
var RX_LEVEL = 'in(.*?)$';
// id bloků
var ID_SCREAMEDITOR = 'screamEditor';
var ID_SCREAMLIST = 'screamList';
var ID_SCREAMNICK = 'screamNick';
var ID_SCREAMBODY = 'screamBody';
var ID_CANCELBTN = 'cancelBtn';
// názvy parametrů
var PARAM_ARTID = 'ano';
var PARAM_PARENTID = 'scid';
var CLASS_ADDCOM = 'anscom';
var AJAX = '/ajax.php?';
//
var MSG_CLOSE_EDITOR = 'Nejprve odeslat či stornovat rozepsaný!';
/**
* sestav z parametrů dotaz
*/
function buildURL(params){
     var a = Array();
     for(var key in params){
          a[a.length] = key+'='+params[key];
     }
     return(AJAX + a.join('&'));
}
/**
* načti kód editoru
*/
function loadScreamEditor(ano,scid){
     var oReq = new XMLHttpRequest();
     var aParams = {
          'controller' : 'ctrls',
          'type' : 'scream-editor',
          'ano' : ano,
          'scid' : scid
     }
     oReq.open('get',buildURL(aParams),false);
     oReq.send(null);
     return(oReq.responseText);
}
/**
* přidej komentář
* pokud
*/
function addComment(){
     //
     // editor nesmí být zapnutý
     //
     if(getObject(ID_SCREAMEDITOR) == null){
          //
          // IE 5.01 vyhazuje chybu, tak je to obaleno try catch blokem
          // při chybě nevrátí false a pokračuje normálně bez JS
          try {
               var oBlock = this.parentNode;
               // zjisti číslo článku
               var rx = new RegExp(PARAM_ARTID+RX_NUMBER);
               var rv = rx.exec(this.href);
               if(rv != null){
                    var ano = parseInt(rv[1]);
                    //
                    // zjisti číslo parent odkazu
                    //
                    rx = new RegExp(PARAM_PARENTID+RX_NUMBER);
                    var rv = rx.exec(this.href);
                    var scid = (rv != null) ? parseInt(rv[1]) : 0;
                    //                                                             
                    // natáhni editor
                    //
                    var editor = loadScreamEditor(ano,scid);
                    //
                    // najdi nadřízený node s třídou 'scream', to je obalovač
                    //
                    while ((oBlock != null) && (oBlock.className != "scream")){
                         oBlock = oBlock.parentNode;
                    }
                    if(oBlock != null){
                         //
                         // a hned nad ním je div s třídou úrovně zanoření
                         //
                         oBlock = oBlock.parentNode;
                         if(oBlock != null){
                              //
                              // level vypreparujem a zvýšíme o jedna
                              //
                              var rx = new RegExp(RX_LEVEL);
                              var rv = rx.exec(oBlock.className);
                              if(rv != null){
                                   var level = parseInt(rv[1]);
                                   //
                                   // vytvoř nový blok a umísti do něho nahraný editor
                                   //
                                   var oDiv = document.createElement('div');
                                   oDiv.className = 'in'+(level+1);
                                   oBlock.appendChild(oDiv);
                                   oDiv.innerHTML = editor;
                                   //
                                   // hoď focus do správného políčka
                                   // pokud je vyplněn nick, skoč do textu
                                   //
                                   var oInput = getObject(ID_SCREAMNICK);
                                   if((oInput != null) && (oInput.value == '')){
                                        oInput.focus();
                                   }
                                   else {
                                        var oInput = getObject(ID_SCREAMBODY);
                                        if(oInput != null){
                                             oInput.focus();
                                        }
                                   }
                                   //
                                   // nastav storno knoflík
                                   //
                                   var oInput = getObject(ID_CANCELBTN);
                                   if(oInput != null){
                                        oInput.style.display = 'inline';
                                        //
                                        // nadefinuj storno tlačítku delta funkci pro uzavření
                                        // editoru
                                        //
                                        oInput.onclick = function(){
                                             var oDiv = getObject(ID_SCREAMEDITOR);
                                             if(oDiv != null) {
                                                  oDiv.parentNode.removeChild(oDiv);
                                             }
                                        }
                                   }
                                   return(false);
                              }
                         }
                    }
               }
          }
          catch (oError) {
               // tichá vyjímka
          }
     }
     else {
          alert(MSG_CLOSE_EDITOR);
          return(false);
     }
}
function getAllCommentBtns(){
     var oSL = getObject(ID_SCREAMLIST);
     if(oSL != null){
          var l = oSL.getElementsByTagName('a');
          for(var i = 0;i<l.length;i++){
               var oBtn = l[i];
               if(oBtn.className == CLASS_ADDCOM){
                    oBtn.onclick = addComment;
               }
          }
     }
}
if((document.getElementById) && (document.getElementsByTagName)){
     window.onload = getAllCommentBtns;
}
