function init()
  {	if ( window.name != 'preview' 
      && document.forms['suche'] 
      && document.forms['suche'].q ) 
      { document.forms['suche'].q.focus();
		document.forms['suche'].q.select();
	  }
    select_cssmedia();  
    handleResize();
  }
  
onload=init;    
onresize=handleResize;

function handleResize()
  { realHeight = (window.innerHeight)?window.innerHeight:document.documentElement.clientHeight;
    bodyHeight = document.body.offsetHeight;
    if ( realHeight >= bodyHeight )
      document.getElementById('menu').style.height = realHeight-177 + 'px';
    else
      document.getElementById('menu').style.height = '550px';
  }

// Anfrageobjekt
var monthreq;

function el( name, attrs )
  { var x = document.createElement(name);
    for ( eigenschaft in attrs )
      x.setAttribute(eigenschaft,attrs[eigenschaft]);
    return x;
  }  
   
function setCursor(mode) 
  { var docBody = document.getElementsByTagName("body")[0];
    docBody.style.cursor = mode;
  }

function tageImMonat( jahr, monat )
  { // Anzahl der Tage im Monat bestimmen
    var tageimmonat = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    // falls schaltjahr im Februar einen Tag dazu
    if ( ((jahr % 4 == 0) && (jahr % 100 != 0)) || (jahr % 400 == 0) ) tageimmonat[1] += 1;
    return tageimmonat[monat];
  } 

function request( req, url, handler )  
  { if ( window.XMLHttpRequest ) // erzeugen für Firefox
      req = new XMLHttpRequest();
    else if ( window.ActiveXObject ) // erzeugen für IE
      req = new ActiveXObject("Microsoft.XMLHTTP");
        
    if ( req )
      { // Event-Handler am Objekt registrieren
        req.onreadystatechange = handler;
        // Anfrage an den Server vorbereiten und abschicken
        req.open("GET", url, true);
        if ( window.XMLHttpRequest )
          req.send(null);
        else
          req.send();

        setCursor('wait');
      }  
    return req;  
 }        

function holemonat( jahr, monat )
  { var heute= new Date();
        
    // falls ein Request läuft, ihn abbrechen
    if (monthreq && (monthreq.readyState == 2 || monthreq.readyState == 3)) 
      monthreq.abort();  

    // Jahr bestimmen
    if ( isNaN(jahr) || jahr == 0 ) jahr = heute.getFullYear();
    if ( jahr <  70 ) jahr = 1*jahr + 2000;
    if ( jahr < 100 ) jahr = 1*jahr + 1900;

    // Monat bestimmen
    if ( isNaN(monat) ) monat = heute.getMonth()+1;
    if ( monat < 1 || monat > 12 ) monat = heute.getMonth()+1;
        
    monthreq = request(monthreq,"/lib/monatsuebersicht.php?jahr=" + jahr + "&monat=" +monat,monatistda);
    return false;
 }
      
function monatistda()
  { // falls Status "4" (complete) erreicht ist, geht's los
    if (monthreq && monthreq.readyState == 4) 
      { // Mauszeiger auf Normalzustand zuruecksetzen
        setCursor('auto');
        // aber nur, falls der Server den HTTP-Statuscode 200 gesendet hat
        if (monthreq.status == 200) 
          // Neuen Monat anzeigen
          showmonth();
        else 
          alert("Fehler bei der Kommunikation mit dem Server:\n" +
                monthreq.statusText);
      }
  }
        
function showmonth()
  { // Jahr bestimmen
    var antwort = monthreq.responseXML.getElementsByTagName("JAHR");
    var jahr = antwort[0].firstChild.data*1;

    // Monat bestimmen (Achtung Monate von 0-11)
    antwort = monthreq.responseXML.getElementsByTagName("MONAT");
    var monat = antwort[0].firstChild.data*1;

    // tage mit Termine
    var termintagetags = monthreq.responseXML.getElementsByTagName("TAG");
    var termintage = new Array();
    for ( i = 1; i < 32; i++ ) termintage[i] = 0;
    for ( i = 0; i < termintagetags.length; i++ )
      termintage[termintagetags[i].firstChild.data*1] = 1;

    var monatsnamen = new Array("Januar","Februar","März","April","Mai",
                                "Juni","Juli","August","September",
                                "Oktober","November","Dezember");
    var wochentage = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch",
                               "Donnerstag", "Freitag", "Samstag");

    // Anzahl der Tage im Monat bestimmen
    var tage = tageImMonat(jahr,monat-1);

    // Tabelle generieren
    var tab = el('table',{'cellspacing':0, 'cellpadding':0, 'border':0, 'class':'calendar'});

    // 1. Zeile mit Überschrift
    var tr = el('tr',{'class':'kopf'});
    tab.appendChild(tr);
    
    // Link Vormonat
    var cell = el('td',{'class':'le'});
    cell.innerHTML = '&nbsp;';    
    tr.appendChild(cell);
    
    cell = el('td',{'class':'left'});
    tr.appendChild(cell);

    var vorjahr  = jahr;
    var vormonat = monat - 1;
    if ( vormonat == 0 ) { vormonat = 12; vorjahr = jahr-1; }
    var baseuri = location.href.substr(0,location.href.length - location.search.length);

    var link = el('a',{'href': baseuri + '?monat=' + vormonat + '&jahr=' + vorjahr,
                       'onclick': 'return holemonat(' + vorjahr + ',' + vormonat +');'});
    cell.appendChild(link);

    link.appendChild(el('img',{'src':'img/zurueck.gif', 'width':5, 'height':9, 'alt':monatsnamen[vormonat-1] + ' ' + vorjahr}));
    
    cell = el('td',{'colspan':5, 'class':'center'});
    tr.appendChild(cell);
    
    link = el('a',{'href': '/wettbewerbe/index.php?monat=' + monat + '&jahr=' + jahr});
    cell.appendChild(link);

    link.appendChild(document.createTextNode(monatsnamen[monat-1] + " " + jahr));
    
    cell = document.createElement('td');
    tr.appendChild(cell);
    
    var folgejahr = jahr;
    var folgemonat = monat + 1;
    if ( folgemonat == 13 ) { folgemonat = 1; folgejahr = jahr+1; }

    link = el('a',{'href': baseuri + '?monat=' + folgemonat + '&jahr=' + folgejahr,
                   'onclick': 'return holemonat(' + folgejahr + ',' + folgemonat +');'});
    cell.appendChild(link);

    link.appendChild(el('img',{'src':'img/vor.gif', 'width':5, 'height':9, 'alt':monatsnamen[folgemonat-1] + ' ' + folgejahr}));

    cell = el('td',{'class':'le'});
    cell.innerHTML = '&nbsp;';    
    tr.appendChild(cell);

    var tr = document.createElement('tr');
    tab.appendChild(tr);

    cell = el('td',{'class':'le'});
    cell.innerHTML = '&nbsp;';    
    tr.appendChild(cell);
    
    for ( i = 1; i <= 7; i++ )
      { cell = document.createElement('th');
        tr.appendChild(cell);
        cell.appendChild(document.createTextNode(wochentage[i%7].substr(0,1)));
      }       

    cell = el('td',{'class':'le'});
    cell.innerHTML = '&nbsp;';    
    tr.appendChild(cell);
    
    // Zeilen für die Wochentage
    var tag       = 1;
    var date      = new Date(jahr,monat-1,tag);
    var wochentag = date.getDay();
    while ( tag <= tage )
      { tr = document.createElement('tr');
        tab.appendChild(tr);
    
        cell = el('td',{'class':'le'});
        cell.innerHTML = '&nbsp;';    
        tr.appendChild(cell);
        
        for ( wtag = 1; wtag <= 7; wtag++ )
           { cell = document.createElement('td');
             if ( tag  <= tage && (wtag % 7) == wochentag )
               { if ( termintage[tag] )
                   { link = el('a',{'href': '/wettbewerbe/index.php?monat=' + monat + '&tag=' + tag + '&jahr=' + jahr,
                                   'class': 'calendar'});
                     cell.appendChild(link);
                     link.appendChild(document.createTextNode(tag));
                   }
                 else
                   cell.appendChild(document.createTextNode(tag));
                 tag++;
                 wochentag = (wochentag + 1) % 7;
                }
              else 
                cell.innerHTML = '&nbsp;';    
              tr.appendChild(cell);  
           }

        cell = el('td',{'class':'le'});
        cell.innerHTML = '&nbsp;';    
        tr.appendChild(cell);
      }
    
    tr = el('tr',{'class':'fuss'});
    tab.appendChild(tr);

    cell = el('td',{'colspan':9});
    cell.innerHTML = '&nbsp;';    
    tr.appendChild(cell);
            
    var div = document.getElementById('calplace');
    if ( div )
      { div.replaceChild(tab,div.firstChild); 

        // nur für den IE
        if ( document.all ) div.innerHTML += ' ';
      }
  } 

function print_preview()
  { preview = window.open(document.URL, 'preview', 'location=no,status=no,scrollbars=yes,resizable=yes,menubar=yes');
	preview.focus();
  }

function print_it( button )
  { // Druckbutton verschwinden lassen
    //button.setAttribute('class','hide');
    
    /**
     * Button weg
     *
     * Kompatibel mit
     * IE 5.5
     * Netscape 6.0
     * Opera 7.0
     * FireFox 1.0
     * Konqueror 3.1
     * Safari 1.0
     **/
    button.parentNode.removeChild( button );
    /*
    if ( window.ActiveXObject  )
	  { // zweiter Versuch Druckbutton verschwinden zu lassen im IE
        button.parentNode.setAttribute('class','hide');
        button.parentNode.innerHTML += ' ';
      }
    */
    window.print();
    
    window.close();
  }
  
function select_cssmedia()
  { if ( window.name == 'preview') 
	  { // funktioniert für IE und Opera
        var printCssUrl = '';
        for (var i = 0; i < document.getElementsByTagName('link').length; i++)
 		  if (document.getElementsByTagName('link')[i].media == 'print')
			{ document.getElementsByTagName('link')[i].media = 'screen, print';
              printCssUrl = document.getElementsByTagName('link')[i].href;
              // wegen Opera 7.5
              document.getElementsByTagName('link')[i].href = printCssUrl;
            }

         // in Netscape muss noch das CSS für print als CSS für screen angelegt werden
         if ( navigator.appName == 'Netscape' ) 
           { var lnk = el('LINK',{'rel':'STYLESHEET', 'type':'text/css', 'media':'screen', 'href':printCssUrl});
             var heads = document.getElementsByTagName('head');
             heads[0].appendChild(lnk);
           }

         // Drucken Button einfügen
         var frm = el('FORM',{'id':'print_frm'});
         var btn = el('INPUT',{'type':'button', 'name':'print', 'value':'Drucken', 'onclick':'return print_it(this);'});
         frm.appendChild(btn);
         var gsmt = document.getElementById('gesamt');
         gsmt.insertBefore(frm,gsmt.firstChild);
         // nur für IE
         if ( document.all ) gsmt.innerHTML += ' ';     
	  }
  }	

function openpraxis( linkobj )
  { var w = window.open(linkobj.href,'praxis','width=565,height=385');
    w.focus();
    return false;
  }

	    var menu_zum_verstecken = ""; /* Platz wo ich mir das Menu merke was später ausgeblendet
		                                 werden soll */  
	    var auftragsnr = 0; /* Platz wo ich mir Ausblendaufträge merke */

		function over( menuname )
		  { // falls es einen Ausblendauftrag gibt
		    if ( auftragsnr != 0 )
		      { // dann lösche diesen Ausblendauftrag sofort
			    clearTimeout(auftragsnr);
			    // falls ich gerade ausgeblendet werden soll
				if ( menuname == menu_zum_verstecken )
			      { // dann alles beseitigen und weg, denn der Untermenupunkt ist 
				    // bereits offen
				    auftragsnr = 0;
					menu_zum_verstecken = "";
					return;
				  }  
				else // sonst
				  { // führe den Auftrag sofort aus
				    verstecke_spaeter();
				  }
			  }
		    var menu = document.getElementById(menuname);
		    if ( menu ) menu.style.display = 'block';
		  }

		function out( menuname )
		  { // merke welches Menu zu verstecken ist
		    menu_zum_verstecken = menuname;
			// gebe den Auftrag in 1500msec = 1.5sec die Funktion
			// verstecke_spaeter() aufzurufen
		    auftragsnr = setTimeout("verstecke_spaeter()",300);
		  }

		function verstecke_spaeter()
		  { var menu = document.getElementById(menu_zum_verstecken);
		    if ( menu ) menu.style.display = 'none';
			// alle Spuren des Auftrags vernichten  
		    auftragsnr = 0;
			menu_zum_verstecken = "";		  
		  }

