/*
Diese Datei ist Teil einer Extension für:

>>>>>> CrazyStat <<<<<<
Ein komfortables, umfangreiches und kostenloses Statistik-Script mit oder ohne Counter.

Copyright (C) 2004-2007  Crazy Chrissi

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

E-Mail: christosoft4u AT yahoo DOT de
Web: http://www.christosoft.de
Version: 1.61

*** ajaxTree.js ***
Funktion:    JavaScript-Teil von ajaxTree
Aufrufbar:   nein
Eingebunden: von show_stat.php
*/

var noAjax=false;

function ajax()   // Erzeuge ein XMLHttpRequest-Objekt
 {
 var ajaxObj=null;
 try
  {
  ajaxObj=new ActiveXObject("Microsoft.XMLHTTP");
  }
 catch(Error)
  {
  try
   {
   ajaxObj=new ActiveXObject("MSXML2.XMLHTTP");
   }
  catch(Error)
   {
   try
    {
    ajaxObj=new XMLHttpRequest();
    }
   catch(Error)
    {
    noAjax=true;
    }
   }
  }
 return ajaxObj;
 }
 
function checkAjax()
 {
 var ajaxObj=ajax();    // XMLHttpRequest-Objekt
 if(noAjax==false) document.getElementById('ajaxInput').value='1';
 }
 
function prozent(teil, gesamt)  // Prozent-Funktion
 {
 return Math.round(teil/gesamt*100);
 }

var ajaxObj=ajax();    // XMLHttpRequest-Objekt
var parents=new Array; // Array, in dem Zustand der Elternzeilen steht (0/undefined=collapsed & nicht geladen, 1=collapsed & geladen, 2=expanded und geladen)
var id;                // ID (des Parents das geoeffnet/geschlossen werden soll).
var expand=false;      // soll der ganze Baum momentan expanded werden?

function menuclick(id) // Beim Klick auf ein Parent
 {
 var bild, i, pchilds; // bild: Welches plus/minus-gif wird verwendet? i: Zähler
 if(id==1 && host_anz==1 && parents[id]==2) bild=5;
 else if(id==1) bild=1;
 else if(id==host_anz && parents[id]==2) bild=3;
 else bild=2;
 pchilds=childs[id];

 if(parents[id]==2) // geladen und expanded => collapse
  {
  for(i=1; i<=pchilds; i++) if(document.getElementById('row'+id+'_'+i)) document.getElementById('row'+id+'_'+i).style.display='none';
  parents[id]=1;
  document.getElementById('pic'+id).src='extensions/ajaxTree/plus'+bild+'.gif';
  }
 else if(parents[id]==1) // geladen und collapse=> expand
  {
  if(expand)
   {
   expand=false;
   expandTree(id+1);
   }
  for(i=1; i<=pchilds; i++) document.getElementById('row'+id+'_'+i).style.display='';
  parents[id]=2;
  document.getElementById('pic'+id).src='extensions/ajaxTree/minus'+bild+'.gif';
  }
 else // nicht geladen => nachladen
  {
  nachladen(id);
  parents[id]=2;
  document.getElementById('pic'+id).src='extensions/ajaxTree/minus'+bild+'.gif';
  }
 }

function nachladen(pid)  // nachladen von Kindelementen
 {
 var pchilds=childs[pid];
 document.getElementById('waitbox').style.display='block';
 document.getElementById('body').style.cursor='wait';
 var zeit=new Date(); // Zeit wird angehängt um Browser-Caching zu verhinern
 ajaxObj.open('get','extensions/ajaxTree/refpages.php?id='+(pid-1)+'&stamp='+zeit.getTime(),true);
 id=pid; // uebergebe id und childs an addRows per globalen Variablen
 ajaxObj.onreadystatechange=addRows;
 ajaxObj.send(null);
 }

function addRows()  // nachgeladene Daten empfangen, erweitere Tabelle um Kind-Zeilen
 {
 if(ajaxObj.readyState==4)
  {
  var children=ajaxObj.responseText.split("\n"); // Splitte Kinder auf
  var pchilds=childs[id];

  for(var i=1; i<=pchilds; i++)
   {
   var child=children[i-1].split('@'); // Splitte Daten des Kindes
   
   // Erstelle neue Elemente
   var zeile=document.createElement("tr");
   var spalte1=document.createElement("td");
   var spalte2=document.createElement("td");
   var spalte3=document.createElement("td");
   var spalte4=document.createElement("td");
   var bild1=document.createElement("img");
   var link2=document.createElement("a");
   if(child[0].length>130) var gekuertzt=child[0].substring(0,130)+"[...]";
   else  var gekuertzt=child[0];
   var text2=document.createTextNode(gekuertzt);
   var text3=document.createTextNode(child[1]);
   var bild4a=document.createElement("img");
   var bild4b=document.createElement("img");
   var text4=document.createTextNode(prozent(child[1],gesamt));
   zeile.id='row'+id+'_'+i;
   if(((childs[id]-i+id)%2)==1) zeile.style.backgroundColor='#DFE2FF';
   // Generiere Spalten
   zeile.appendChild(spalte1);
   zeile.appendChild(spalte2);
   zeile.appendChild(spalte3);
   zeile.appendChild(spalte4);
   // Generiere Spalten-Inhalte
   if(i==1 && id==host_anz) bild1.src='extensions/ajaxTree/line2.gif';
   else bild1.src='extensions/ajaxTree/line.gif';
   link2.href=child[0];
   link2.target='_blank';
   link2.className='ajaxTreeLink';
   link2.appendChild(text2);
   bild4a.src='blue.gif';
   bild4b.src='grau.gif';
   var proz=prozent(child[1],gesamt);
   var proz2=Math.round(prozent(child[1],gesamt2)/100*laenge);
   bild4a.width=proz2;
   bild4a.height=10;
   bild4a.title=proz+'%';
   bild4b.width=laenge-proz2;
   bild4b.height=10;
   bild4b.title=proz+'%';
   // Fuege Inhalte in Spalten
   spalte1.appendChild(bild1);
   spalte2.appendChild(link2);
   spalte3.appendChild(text3);
   spalte4.appendChild(bild4a);
   spalte4.appendChild(bild4b);
   document.getElementById('tabelle').insertBefore(zeile,document.getElementById('row'+id).nextSibling);
   }
  document.getElementById('waitbox').style.display='none';
  document.getElementById('body').style.cursor='auto';
  if(expand)
   {
   expand=false;
   expandTree(id+1);
   }
  }
 }

function expandTree(id)
 {
 while(id<=host_anz && expand==false)
  {
  if(parents[id]!=2)
   {
   expand=true;
   menuclick(id);
   }
  id++;
  }
 }
 
function collapseTree()
 {
 var id=1;
 while(id<=host_anz)
  {
  if(parents[id]==2)
   {
   menuclick(id);
   }
  id++;
  }
 }
