var g_url = 'http://img.wiprecht-gymnasium.de';
var global_edit;
var global_bb = new Object();

function addLoadEvent(funk, param)
{
   var oldonload = window.onload;
   
   if(typeof window.onload != 'function')
   {
      window.onload = param ? funk.apply(null,param) : funk;
   }
   else
   {
      window.onload = function()
      {
         oldonload();
         if(typeof param != 'undefined')
         {
            funk.apply(null,param);
         }		
         else
         {
            funk();
         }	
		}  
   }
}

function position(element)
{
   var valueT = 0, valueL = 0;
   do
   {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      element = element.offsetParent;
   }
   while (element);
   return [valueL, valueT];
}

function getScreenCenter()
{
   var l = document.body.offsetWidth / 2,
   t = 0;
   
   if(typeof window.pageYOffset != 'undefined')
   {
      t = window.pageYOffset + window.innerHeight / 2;
      l = window.innerWidth / 2;
   }
   else if(typeof document.documentElement.scrollTop != 'undefined')
   {
      t = document.documentElement.scrollTop + document.documentElement.clientHeight / 2;
      l = document.documentElement.clientWidth / 2;
   }
   
   return [l, t];   
}

function $(id)
{
   return document.getElementById(id);
}

function getParent(ele,tiefe)
{
   for(var i = 0; i < tiefe; i++)
   {
      ele = ele.parentNode;
   }
   return ele;
}

function cr(ele)
{
   return document.createElement(ele);
}

function removeChilds(ele)
{
   while(ele.childNodes.length > 0)
   {
      ele.removeChild(ele.lastChild);  
   }
}

function isInt(num)
{
   return (num.toString().search(/^-?[0-9]+$/) == 0);
}

function request(skript)
{
   var post, fkt, para,
   header = new Array(),
   vars = new Array(),
   req = null,
   response = null,
   gut = false;
   
   header[0] = ['Content-Type','application/x-www-form-urlencoded'];
   header[1] = ['Method','post' + skript + ' HTTP/1.1'];
   header[2] = ['Charset','utf-8'];
   
   this.addVar = function(name,value)
   {
      vars[vars.length] = [encodeURIComponent(name), encodeURIComponent(value)];
   }

   this.addHeader = function(name,value)
   {
      header[header.length] = [name,value];
   }

   this.setFunktion = function(name,param)
   {
      fkt = name;
      para = param;
   }

   this.senden = function()
   {
      var i, daten = '';

      if(window.XMLHttpRequest)
      {
         req = new XMLHttpRequest();
      }
      else if(window.ActiveXObject)
      {
         try
         {
            req = new ActiveXObject('Msxml2.XMLHTTP');
         }
         catch(ex)
         {
            try
            {
               req = new ActiveXObject('Microsoft.XMLHTTP');
            }
            catch(ex)
            {
            }
         }
      }
      
      req.open('POST', '../ajax/' + skript);
      
      for(i = 0; i < header.length; i++)
      {
         req.setRequestHeader(header[i][0], header[i][1]);
      }
      
      if(vars.length > 0)
      {
         for(i = 0; i < vars.length; i++)
         {
            daten += vars[i][0] + '=' + vars[i][1] + ((i < vars.length-1) ? '&' : '');
         }
      }
      else
      {
         daten = null;
      }
      
      req.setRequestHeader('Content-Length',daten != null ? daten : 0);
      
      req.onreadystatechange = function()
      {
         if(req.readyState == 4 && req.status == 200)
         {
            response = eval('(' + req.responseText + ')');

            switch(response['s'])
            {
               case 1: gut = true; break;
               case 2: alert('Fehler: ' + response['c']); break;
               case 4: alert('Manipulationen am Skript sind verboten. Deine Aktion wurde gespeichert!'); return;
            }

            if(gut && typeof fkt != 'undefined')
            {
               if(typeof para != 'undefined')
               {
                  fkt.apply(null,para);
               }
               else
               {
                  fkt();
               }
            }
         }
      }
      
      req.send(daten);
   }

   this.res = function()
   {
      return decodeURIComponent(response['c']); 
   }
}

function wartefenster(bool)
{
   var warte;
	
   if(bool && $('wartefenster_out') == null)
   {
      var rahmen, bild;
      
      warte = cr('div');
      warte.id = 'wartefenster_out';
      document.body.appendChild(warte);
      
      rahmen = cr('div');
      rahmen.id = 'wartefenster';
      rahmen.style.top = document.body.clientHeight / 2 + 'px';
      rahmen.style.left = document.body.clientWidth / 2 - 75 + 'px';
 
      bild = cr('img');
      bild.src = g_url + '/layer/warten.gif';
      
      rahmen.appendChild(bild);
      rahmen.appendChild(cr('br'));
      rahmen.appendChild(document.createTextNode('Bitte warten ...'));
      $('wartefenster_out').appendChild(rahmen);
   }
   else if(!bool && $('wartefenster_out') != null)
   {
      warte = $('wartefenster_out');
      warte.parentNode.removeChild(warte);
   }
}

function blockfenster(bool)
{
   var block;
	
   if(bool)
   {
      block = cr('div');
      block.id = 'blockfenster';
      document.body.appendChild(block);
   }
   else if($('blockfenster') != null)
   {
      block = $('blockfenster');
      block.parentNode.removeChild(block);
   }
}

function tooltip(bezugobj,text,versatzx,versatzy,entfernen)
{
   var layer, objpos, inter, counter, ttb;
   ttb = $('tooltipbox');
	
   if(isNaN(bezugobj))
   {
      if(ttb == null)
      {
         ttb = cr('div');
         ttb.id = 'tooltipbox';
         document.body.appendChild(ttb);
      }

      layer = cr('div');
      layer.id = 'tooltip_layer';
      objpos = position(bezugobj);
      layer.style.top = objpos[1] + versatzy + 'px';
      layer.style.left = objpos[0] + versatzx + 'px';
      layer.innerHTML = text;
      $('tooltipbox').appendChild(layer);
   }
   else
   {
      layer = $('tooltip_layer');
      
      if(layer)
      {
         layer.removeAttribute('id');
         layer.style.position = 'absolute';
         layer.style.MozOpacity = '1';
         counter = 10;
         inter = setInterval(function()
         {
            layer.style.MozOpacity = counter / 10;
            counter--;
				
            if(counter == 0)
            {
               layer.parentNode.removeChild(layer);
               
               if(ttb.childNodes.length == 0)
               {
                  if(!ttb.parentNode)
                  {
                     ttb = $('tooltipbox');
                     ttb.parentNode.removeChild(ttb);
                  }                  
               }
               
               clearInterval(inter);
            }
         }, 7);
      }
   }
}

function hinweis(ele,typ)
{
   switch(typ)
   {
      case 1: tooltip(ele,'Layer schliessen',-84,-3); break;
      case 2: tooltip(ele,'Du bist eine aktueller Schüler, Ehemaliger,<br/>Lehrer oder Freund der Schule?<br/>Dann trage dich jetzt hier ein',0,16); break;
      case 3: tooltip(ele,'Hast du auch schon in deinem Spam-Ordner nachgesehen?<br/>Bedenke, du kannst die Bestätigungsmail nur 2 Mal erneut senden lassen',-60,-34); break;
      case 4: tooltip(ele,'Du hast bereits ein Profil<br/>und möchtest es bearbeiten?',0,16); break;
      case 5: tooltip(ele,'Wenn du diesen Wert auf nein setzt,<br/>kann niemand deine Mailadresse im Verzeichnis sehen',-7,-30); break;
      case 6: tooltip(ele,'Eintrag im Schülerverzeichnis erstellen',-56,-19); break;
      case 7: tooltip(ele,'Eintrag im Absolventenverzeichnis erstellen',-80,-19); break;
      case 8: tooltip(ele,'Eintrag im Lehrerzeichnis erstellen',-50,-19); break;
      case 9: tooltip(ele,'Eintrag im Freundesverzeichnis erstellen',-75,-19); break;
      case 10: tooltip(ele,'Sommerferien? Ab dem 1. August wählst du<br/>bitte die Klassenstufe, in die du kommst',-7,-30); break;
      case 11: tooltip(ele,'Du heißt heute auch noch so, wie damals?<br/>Dann lass dieses Feld bitte frei',-7,-30); break;
      case 12: tooltip(ele,'Einzelne Fächer bitte durch Komma trennen',-7,-15); break;
      case 13: tooltip(ele,'Das Passwort kann dir aus Sicherheitsgründen nur<br/>1x innerhalb von 24 Stunden gesendet werden',-80,-32); break;
      case 14: tooltip(ele,'Das Passwort hast du in der Email-Bestätigungsmail erhalten...',-7,-16); break;
      case 15: tooltip(ele,'Deine Email-Adresse, die du bei der Registrierung hier angegeben hast...',-7,-16); break;
      case 16: tooltip(ele,'Bild löschen',-67,-1); break;
      case 18: tooltip(ele,'Geben Sie hier den neuen Alternativtext ein',1,22); break;
      case 19: tooltip(ele,'Änderungen speichern',0,20); break;
      case 20: tooltip(ele,'Änderungen verwerfen',0,20); break;
      case 21: tooltip(ele,'Skalierwert ändern',0,22); break;
      case 22: tooltip(ele,'Kategoriename editieren',0,20); break;
      case 24: tooltip(ele,'Speichern',0,20); break;
      case 25: tooltip(ele,'Editieren abbrechen',0,20); break;
      case 26: tooltip(ele,'Geben Sie hier den neuen Text ein',0,20); break;
      case 27: tooltip(ele,'Klick öffnet Bild<br/>in voller Größe',0,-30); break;
      case 28: tooltip(ele,'Unterkategorie ist in<br/>deutsch verfügbar',-12,-37); break;
      case 29: tooltip(ele,'Unterkategorie ist in<br/>englisch verfügbar',-12,-37); break;
      case 30: tooltip(ele,'Unterkategorie ist in<br/>französisch verfügbar',-12,-37); break;
      case 31: tooltip(ele,'Unterkategorie in dieser<br/>Sprache löschen',-35,-35); break;
      case 32: tooltip(ele,'Unterkategorie in dieser<br/>Sprache erstellen',-35,-35); break;
      case 33: tooltip(ele,'Unterkategorie ist in<br/>englisch nicht verfügbar',-12,-37); break;
      case 34: tooltip(ele,'Unterkategorie ist in<br/>französisch nicht verfügbar',-12,-37); break;
      case 35: tooltip(ele,'Passwort (optional)',1,23); break;
      case 36: tooltip(ele,'Diese Seite ist passwortgeschützt',0,-23); break;
      case 37: tooltip(ele,'Unterkategorie ist in<br/>polnisch verfügbar',-12,-37); break;
      case 38: tooltip(ele,'Unterkategorie ist in<br/>polnisch nicht verfügbar',-12,-37); break;
      case 39: tooltip(ele,'... oder nutze die Pfeiltasten deiner Tastatur',-50, -20); break;
   }
}

function gbeintrag_senden()
{
   var req = new request('gbeintrag.php');
   req.addVar('Name',$('gb_name').value);
   req.addVar('Email',$('gb_email').value);
   req.addVar('Website',$('gb_website').value);
   req.addVar('Inhalt',$('gb_inhalt').value);
   req.addVar('Senden',$('gb_senden').value);
   req.setFunktion(function()
   {
      layer();
      alert(req.res());
   });
   req.senden();
}

function verzeichnis_neu(vid)
{
   var req = new request('verzeichnis.php');
   req.addVar('Typ',1);
   req.addVar('Verzeichnistyp',vid);
   req.setFunktion(function()
   {
      layer(req.res());
   });
   req.senden();
}

function verzeichnis_dataedit()
{
   var req = new request('verzeichnis.php');
   req.addVar('Typ',5);
   req.setFunktion(function()
   {
      layer(req.res());
   });
   req.senden();
}

function verzeichnis_passwortneu()
{
   if(document.getElementById('vz_mail').value.length > 8)
   {
      var req = new request('verzeichnis.php');
      req.addVar('Typ',4);
      req.addVar('Mail',document.getElementById('vz_mail').value);
      req.setFunktion(function()
      {
         alert(req.res());
      });
      req.senden();
   }
   else
   {
      alert('Du musst deine Emailadresse angeben, damit dir ein neues Passwort gesendet werden kann');
   }	
}

function verzeichnis_mailerneut(unique)
{
   var req = new request('verzeichnis.php');
   req.addVar('Typ',3);
   req.addVar('Unique',unique);
   req.setFunktion(function()
   {
      alert(req.res());
   });
   req.senden();
}

function verzeichnis_edit()
{
   var req = new request('verzeichnis.php');
   req.addVar('Typ',6);
   req.addVar('Mail',$('vz_mail').value);
   req.addVar('Passwort',$('vz_passwort').value);
   req.setFunktion(function()
   {
      layer(req.res());
   });
   req.senden();
}

function verzeichnis_senden(typ)
{
   var req = new request('verzeichnis.php');
   req.addVar('Typ',typ);
   req.addVar('Verzeichnistyp',$('vz_verzeichnistyp').value);
   req.addVar('Typ',typ);
   req.addVar('Vorname',$('vz_vorname').value);
   req.addVar('Nachname',$('vz_nachname').value);
   req.addVar('Email',$('vz_email').value);
   req.addVar('Email_Sichtbarkeit',$('vz_email_sichtbarkeit').value);
   req.addVar('Email_Rundmail',$('vz_email_rundmail').value);
   req.addVar('Wohnort',$('vz_wohnort').value);
   req.addVar('Website',$('vz_website').value);
   req.addVar('Anmerkungen',$('vz_anmerkungen').value);
   req.addVar('ICQ',$('vz_icq').value);
   req.addVar('MSN',$('vz_msn').value);
   req.addVar('Jabber',$('vz_jabber').value);

   if($('vz_klassenstufe'))
   {
      req.addVar('Klassenstufe',$('vz_klassenstufe').value);
   }
		
   if($('vz_tutor'))
   {
      req.addVar('Tutor',$('vz_tutor').value);
   }
		
   if($('vz_faecher'))
   {
      req.addVar('Faecher',$('vz_faecher').value);
   }
		
   if($('vz_schule'))
   {
      req.addVar('Schule',$('vz_schule').value);
   }
		
   if($('vz_nachname_schulabschluss'))
   {
      req.addVar('Nachname_Schulabschluss',$('vz_nachname_schulabschluss').value);
   }
		
   if($('vz_abiturjahrgang'))
   {
      req.addVar('Abiturjahrgang',$('vz_abiturjahrgang').value);
   }
		
   if($('vz_abschlussjahrgang'))
   {
      req.addVar('Abschlussjahrgang',$('vz_abschlussjahrgang').value);
   }
		
   if($('vz_passwort'))
   {
      req.addVar('Passwort',$('vz_passwort').value);
   }
		
   if($('vz_unique'))
   {
      req.addVar('Unique',$('vz_unique').value);
   }
		
   req.setFunktion(function()
   {
      if(typ == 2)
      {
         layer(req.res());
      }
      else
      {
         alert(req.res());
      }
	});
   
   req.senden();
}

function verzeichnis_loeschen(pw,uniq)
{
   var req = new request('verzeichnis.php');
   req.addVar('Typ',8);
   req.addVar('Passwort',pw);
   req.addVar('Unique',uniq);
   req.setFunktion(function()
   {
      alert(req.res());
   });
   req.senden();
}

function layer(inhalt)
{
   var dlayer;
   if(!$('layer') && typeof inhalt != 'undefined')
   {
      var div1, div2, div3, img1, img2, img3, img4, left, top, middle;
      
      blockfenster(1);
      
      dlayer = cr('div');
      dlayer.id = 'layer';
      
      div1 = cr('div');
      div1.className = 'content';
      div1.innerHTML = inhalt;
      
      img1 = cr('img');
      img1.src = g_url + '/layer/oben_rechts.png';
      img1.className = 'or';
      img1.alt = 'sor';
      
      img2 = cr('img');
      img2.src = g_url + '/layer/unten_rechts.png';
      img2.className = 'ur';
      img2.alt = 'sur';
      
      img3 = cr('img');
      img3.src = g_url + '/layer/unten_links.png';
      img3.className = 'ul';
      img3.alt = 'sul';
      
      img4 = cr('img');
      img4.src = g_url + '/layer/schliessen.png';
      img4.className = 'close';
      img4.alt = 'Layer schliessen';
      img4.onmouseover = function()
      {
         hinweis(this,1);
         this.src = g_url + '/layer/schliessen2.png';
      }
      img4.onclick = function(){layer();}
      img4.onmouseout = function()
      {
         tooltip(0);
         this.src = g_url + '/layer/schliessen.png';
      }
      
      div2 = cr('div');
      div2.className = 'footer';
      
      div2.appendChild(cr('div'));
      
      dlayer.appendChild(div1);
      dlayer.appendChild(img1);
      dlayer.appendChild(img2);
      dlayer.appendChild(img3);
      dlayer.appendChild(img4);
      dlayer.appendChild(div2);
      
      document.body.appendChild(dlayer);
      
      middle = getScreenCenter();
      left = middle[0] - dlayer.offsetWidth / 2;
      top = middle[1] - dlayer.offsetHeight / 2;

      dlayer.style.left = (left > 0 ? left : 0) + 'px';
      dlayer.style.top = (top > 45 ? top : 45) + 'px';
   }
   else if(typeof inhalt != 'undefined')
   {
      var left, top, middle;
      dlayer = $('layer');
      dlayer.getElementsByTagName('div')[0].innerHTML = inhalt;
      
      middle = getScreenCenter();
      left = middle[0] - dlayer.offsetWidth / 2;
      top = middle[1] - dlayer.offsetHeight / 2;
      
      dlayer.style.left = (left > 0 ? left : 0) + 'px';
      dlayer.style.top = (top > 45 ? top : 45) + 'px';
   }
   else
   {
      blockfenster(0);
      tooltip(0);
      dlayer = $('layer');
      dlayer.parentNode.removeChild(dlayer);
   }
}

function sprache(lid)
{
   var req = new request('sprachwahl.php');
   req.addVar('LangID',lid);
   req.setFunktion(function(){location.reload();});
   req.senden();
}

function setopacity(ele,val)
{
   ele.style.MozOpacity = val;
   ele.style.opacity = val;
   ele.style.filter = 'alpha(opacity=' + val * 100 + ')';
   return ele;
}

function unabvisible(ele,name,k)
{
   var foo, pix, opa, h,
   ul = ele.parentNode.nextSibling,
   steps = 10,
   c = 1;
   removeChilds(ele);
   
   ele.onclick = function(){return false;}
   if(typeof k == 'undefined')
   {
      k = 0;
   }
	
   if(ul.style.display == 'none')
   {
      ul.style.visibility = 'hidden';
      ul.style.display = 'block';
      ul.style.overflow = 'hidden';
      pix = (ul.offsetHeight - k) / steps;
      opa = 1 / steps;
      ul.style.height = '0';
      ul.style.visibility = 'visible';
      ele.appendChild(document.createTextNode('▲ ' + name));
      foo = setInterval(function()
      {
         if(c <= steps)
         {
            ul.style.height = pix * c + 'px';
            setopacity(ul,c * opa);
         }
         else
         {
            clearInterval(foo);
            ele.onclick = function(){unabvisible(ele,name,k);return false;}
         }
         
         c++;
      },20);
   }
   else
   {
      h = ul.offsetHeight - k;
      pix = h / steps;
      opa = 1 / steps;
      ele.appendChild(document.createTextNode('▼ ' + name));
      foo = setInterval(function()
      {
         if(c <= steps)
         {
            ul.style.height = h - pix * c + 'px';
            setopacity(ul,1 - c * opa);
         }
         else
         {
            clearInterval(foo);
            ul.style.height = h + 'px';
            ul.style.display = 'none';
            ele.onclick = function(){unabvisible(ele,name,k);return false;}
         }

         c++;
      }, 20);
   }
}

function gblayer()
{
   var req = new request('gbeintrag.php');
   req.setFunktion(function()
   {
      layer(req.res());
   });
   req.senden();
}

function gal_showimg(id)
{
   var req = new request('galeriebild.php');
   req.addVar('BildID',id);
   req.setFunktion(function()
   {
      layer(req.res());
      document.onkeyup = function(e)
      {
         if(e.keyCode == 37 && $('galBack') != null)
         {
            $('galBack').onclick();
         }
         else if(e.keyCode == 39 && $('galForward') != null)
         {
            $('galForward').onclick();
         }
      }
   });
   req.senden();
}

function scrollToPosition(posY, scrollStep, spacer, y)
{
   var move;
   
   if(typeof y == 'undefined')
   {
      if(window.pageYOffset)
      {
         y = window.pageYOffset;
      }
      else if(document.documentElement.scrollTop)
      {
         y = document.documentElement.scrollTop;
      }
      
      posY = posY - (typeof y != 'undefined' ? y : 0);
      posY -= spacer;
   }
   
   if(posY > 0)
   {
      move = posY - scrollStep < 0 ? Math.abs(posY) : scrollStep;
   }
   else if(posY < 0)
   {
      move = posY + scrollStep > 0 ? -Math.abs(posY) : -scrollStep;  
   }
   else
   {
      return;
   }
   
   window.scrollBy(0, move);
   setTimeout('scrollToPosition(' + (posY - move) + ',' + scrollStep + ', 0, 1)', 10);
}

function findPerson(ele)
{
   ele.style.background = '#ff0';
   ele.style.border = '1px #ffa500 solid';
   ele.style.padding = '1px';
   
   scrollToPosition(position(ele)[1], 10, 30);
   
   setTimeout(function()
   {
      ele.style.background = 'none';
      ele.style.border = '0';
      ele.style.padding = '2px';
   }, 3500);
   
}

function zeigePersonenEintrag(id)
{
   var req = new request('verzeichnis.php');
   req.addVar('Typ', 9);
   req.addVar('id', id);
   
   req.setFunktion(function()
   {
      layer(req.res());
   });
   
   req.senden();
}