function reShape(what, idZone, level){//cerco tutti gli elementi primi discendenti di what e li scrivo sotto l'elemento idZone
   iH = '';
   myUl = '';

   //modifico l'immagine se apro una discussione l'immagine deve contenere plus o minus nel nome
   if(level > 0 && $(what +'_img')){
      if($(what +'_img').src.search(/plus/) > -1){
         $(what +'_img').src = $(what +'_img').src.replace(/plus/g,'minus');
         $(what +'_img').title = 'Chiudi';
      }
      else {
         $(what +'_img').src = $(what +'_img').src.replace(/minus/g,'plus');
         $(what +'_img').title = 'Mostra risposte';

         //rimuovo i sotto thread
         if($(what +'_fsub'))$(idZone).removeChild($(what +'_fsub'));
         return;
      }
   }

   //cerco l'UL qui contenuto, se c'č
   uls = $(what).immediateDescendants();
   uls.each(function(item){
      if(item.tagName == 'UL') {
         //se sono arrivato qui vuol dire che il div era chiuso e che esiste un sottolivello da aprire
         drill(level, uls, item, what, idZone);
      }
      //non c'č nessun ulteriore UL, quindi non devo esplorare il contenuto; potrebbe esserci un <a> o altro, chiudo
   });
}//reShape



function drill(level, uls, myUl, what, idZone){//arrivati a questo punto vuol dire che c'č un UL, quindi lo sfoglio
   newLevel = parseInt(level + 1)
   //se c'č l'UL lo esploro
   if(uls.length>0){
      //cerco tutti i primi discendenti di questo UL
      argos = myUl.immediateDescendants();
      argos.each(function(item) {

         //scrivo il codice che inserirņ
         nestLevel = 0;
         childs = item.immediateDescendants()
         clickChild = '';

         childs.each(function(item){
            if(item.tagName == 'UL'){//questo per gli UL
               clickChild = '<img id="'+ item.parentNode.id +'_img" class="plus_minus" title="Mostra risposte" src="forum/supp/plus.gif" '+
               'onclick="reShape(\''+ item.parentNode.id +'\', this.parentNode.parentNode.id, '+ newLevel +')" />';
            }
         });

         myRisp = item.getElementsByTagName('LI').length;

         idForum = item.id.replace(/lnk_list_/g,'');
         iH+= '<div id="lnk_forum_thread_'+ idForum +'" class="lnk_forum lnk_forum_l_'+ level +'" ><a name="msg'+ idForum +'"></a>';
         iH+= '<p id="lnk_forum_title_'+ idForum  +'" class="lnk_forum_title">';

         var myChilds = item.childNodes;

         if(level == 0){
            iH+= '<span class="lnk_forum_last_reply">';
            if(myRisp)iH+= 'Ultimo intervento ';
            iH+= '<b>'+ myChilds[3].innerHTML +'</b></span>';
            var myDisp = ' style="display:none"';
         }
         iH+= '<span class="lnk_forum_data"'+ myDisp +'>';
         iH+= myChilds[2].innerHTML;
         iH+= '</span>';


         iH+= clickChild;
         if(level == 0){
            iH+= '<a class="lnk_forum_title_link" href="javascript:getMessage(\''+ idForum +'\')" title="Mostra/Nascondi il testo del messaggio">'+ myChilds[0].innerHTML +'</a>';
            iH+= '<span class="lnk_forum_author"> - '+ myChilds[1].innerHTML +'</span>';
         }
         else {
            iH+= '<a class="lnk_forum_title_link" href="javascript:getMessage(\''+ idForum +'\')" title="Mostra/Nascondi il testo del messaggio">'+ myChilds[1].innerHTML +'</a>';
            iH+= '<span class="lnk_forum_author init_text"> - '+ myChilds[0].innerHTML +'</span>';
         }

         if(myRisp){
            iH+= ' - <span class="lnk_forum_nReply">'+ myRisp +' risp.</span> - ';
            iH+= '<a id="lnk_forum_explode_'+ idForum +'" class="lnk_forum_explode" '+
            'onclick=\"cntRisp=0;\" href="javascript:openDisc(\''+ idForum +'\', \''+ myRisp +'\')" title=\"\">Espandi tutto</a>';
         }

         iH+= '</p>';
         iH+= '<div id="lnk_forum_detail_'+ idForum +'" class="lnk_forum_detail" style="display:none;"></div>'
         iH+= '</div>';
      });
   }

   //li vado a scrivere sotto idZone
   var a = document.createElement('DIV')
   id = what +'_fsub';
   a.setAttribute('id', id);
   $(idZone).appendChild(a);
   $(id).className = 'lnk_forum_fsub';
   a.innerHTML = iH;
}

function getMessage(idm){
   if(!$('lnk_forum_detail_'+ idm).style.display){
      $('lnk_forum_detail_'+ idm).style.display = 'none';
      $('lnk_forum_detail_'+ idm).className = $('lnk_forum_detail_'+ idm).className.replace(/ opened/g,'');
      $('lnk_forum_title_'+ idm).className = $('lnk_forum_title_'+ idm).className.replace(/ opened/g,'');
   }
   else jsrsExecute('forum/remote.html', evalBack, 'getMessage', idm, 0);
}

function insMessage(idarg, idm){
   if($('lnk_forum_insert_'+ idm)) $('lnk_forum_detail_'+ idm).removeChild($('lnk_forum_insert_'+ idm));
   jsrsExecute('forum/remote.html', evalBack, 'insMessageForm', Array(idarg, idm), 0);
}

function ctrlMessage(idarg, ira){
   var subject = $F('object_'+ ira);
   var text = document.getElementById('fckeditor_'+ ira +'___Frame').contentWindow.FCK.GetXHTML(true).replace(/"/g, '%22');
   var isOk = true;

   if(!subject){
      isOk = false;
      alert('Inserire un oggetto');
   }

   if(!text){
      isOk = false;
      alert('Inserire un testo');
   }
   if(isOk) jsrsExecute('forum/remote.html', evalBack, 'insMessageQuery', Array(idarg, ira, subject, text), 0);
}

function getParent(myNode){
   return myNode.parentNode;
}

var goToMsg = false;
function openMessage(idm){
   var arrToOpen = new Array();
   var myNode = $('lnk_list_'+ idm);
   if(!myNode) return;
   var myInts = new Array();

   while(myNode = getParent(myNode)){
      if(myNode.tagName == 'DIV')break;
      else if(myNode.tagName == 'LI'){
         arrToOpen.unshift(myNode.id);
      }
   }
   for(var i=0;i<arrToOpen.length;i++){
      if($(arrToOpen[i] +'_img')){
         $(arrToOpen[i] +'_img').onclick();
      }
      else i--;
   }

   goToMsg = true;
   getMessage(idm);
}

var cntRisp = 0;
var maxRisp = 20;
function openDisc(idf, nRisp){
   var parIdf;
   var myItem = $('lnk_forum_thread_'+ idf);

   if(nRisp > maxRisp){
      alert('La discussione contiene troppi messaggi.\nVerrano aperti solo i primi 20 interventi.');
   }

   if($('lnk_list_'+ idf +'_img').src.search(/plus/) > -1)$('lnk_list_'+ idf +'_img').onclick();
   myItem.descendants().each(function(item){
       parIdf = item.parentNode.id.substr(16);
       if(cntRisp == maxRisp) return;
       else if(item.tagName=='IMG' && item.className=='plus_minus'){
          if(parIdf != idf) openDisc(parIdf, 0);
       }
       else if(item.tagName=='A' && item.className=='lnk_forum_title_link'){
          if($('lnk_forum_detail_'+ parIdf).style.display)eval(item.href);
       }
   });
}

var myMode = 1;
var arrMsg;
function changeMode(){
   if(myMode == 1){
      myMode = 2;
      $('modeLink').innerHTML = 'Visualizza Struttura';
      $('disAjax').className = 'sequence';
   }
   else {
      myMode = 1;
      $('modeLink').innerHTML = 'Visualizza Sequenza';
      $('disAjax').className = '';
   }
}

function evalBack(ret){
   eval(ret);
}

function showHide(id){
   if($(id).style.display == 'none') $(id).style.display='';
   else $(id).style.display='none';
}
