/***************************************
 *                                     *
 *  Kalenderanzeige (c) Lothar Scholl  *
 *                                     *
 ***************************************/
// Feiertagesarray einlesen
var FTage = new Array();
var OS = new Date();
var J = OS.getFullYear();
var index = 0;

FTage[index] = new Array();
 FTage[index]["D"]="1.1." + J;
 FTage[index]["N"]="Neujahrstag";

index++;
FTage[index] = new Array();
 FTage[index]["D"]="6.1." + J;
 FTage[index]["N"]="Heilige 3 Könige";
/*
index++;
OS = Feiertage(J,-52);
FTage[index] = new Array(); // OS-52
 FTage[index]["D"]=(OS.getDate())+"."+(OS.getMonth()+1)+"."+J;
 FTage[index]["N"]="Schmutziger Donnerstag";

index++;
OS = Feiertage(J,-48);
FTage[index] = new Array(); // OS-48
 FTage[index]["D"]=(OS.getDate())+"."+(OS.getMonth()+1)+"."+J;
 FTage[index]["N"]="Rosenmontag";
*/
index++;
OS = Feiertage(J,-46);
FTage[index] = new Array(); // OS-46
 FTage[index]["D"]=(OS.getDate())+"."+(OS.getMonth()+1)+"."+J;
 FTage[index]["N"]="Aschermittwoch";

index++;
OS = Feiertage(J,-2);
FTage[index] = new Array(); // OS-2
 FTage[index]["D"]=(OS.getDate())+"."+(OS.getMonth()+1)+"."+J;
 FTage[index]["N"]="Karfreitag";

index++;
OS = Feiertage(J,0);
FTage[index] = new Array(); //OS
 FTage[index]["D"]=OS.getDate()+"."+(OS.getMonth()+1)+"."+J;
 FTage[index]["N"]="Ostersonntag";

index++;
OS = Feiertage(J,+1);
FTage[index] = new Array();
 FTage[index]["D"]=OS.getDate()+"."+(OS.getMonth()+1)+"."+J;
 FTage[index]["N"]="Ostermontag";

index++;
FTage[index] = new Array();
 FTage[index]["D"]="1.5." + J;
 FTage[index]["N"]="Maifeiertag";

index++;
OS = Feiertage(J,+39); // OS+39
FTage[index] = new Array();
 FTage[index]["D"]=OS.getDate()+"."+(OS.getMonth()+1)+"."+J;
 FTage[index]["N"]="Christi Himmelfahrt";

index++;
OS = Feiertage(J,+49);  // OS+49
FTage[index] = new Array();
 FTage[index]["D"]=OS.getDate()+"."+(OS.getMonth()+1)+"."+J;
 FTage[index]["N"]="Pfingstsonntag";

index++;
OS = Feiertage(J,+50); // OS+50
FTage[index] = new Array();
 FTage[index]["D"]=OS.getDate()+"."+(OS.getMonth()+1)+"."+J;
 FTage[index]["N"]="Pfingstmontag";

index++;
OS = Feiertage(J,+60); // OS+60
FTage[index] = new Array();
 FTage[index]["D"]=OS.getDate()+"."+(OS.getMonth()+1)+"."+J;
 FTage[index]["N"]="Fronleichnam";

index++;
FTage[index] = new Array();
 FTage[index]["D"]="3.10." + J;
 FTage[index]["N"]="Tag der deutschen Einheit";

index++;
FTage[index] = new Array();
 FTage[index]["D"]="1.11." + J;
 FTage[index]["N"]="Allerheiligen";

index++;
FTage[index] = new Array();
 FTage[index]["D"]="25.12." + J;
 FTage[index]["N"]="1. Weihnachtstag";

index++;
FTage[index] = new Array();
 FTage[index]["D"]="26.12." + J;
 FTage[index]["N"]="2. Weihnachtstag";


/*********** Kalender zeichnen ***********/
//var ad = new Date();
//var am = ad.getMonth() + 1; // aktuellen Monat bestimmen
//var aj = ad.getFullYear();      // aktuelles jahr bestimmen
//if (aj < 999)              // Wenn das Jahr < 999 ist
//  aj += 1900;              // 1900 hinzuaddieren
//Aufruf: Kalender(dm, dj);

// Hauptfunktion
function Kalender (Monat, Jahr) {
  if(Monat > 12) return true;
  Monatsname = new Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli",
                         "August", "September", "Oktober", "November", "Dezember");
  Tag = new Array("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So");

  var KSchrFarbe = "darkred";     // Schriftfarbe Kalenderkopf
  var Hgrund = "ivory";    // Hintergrundfarbe
  var TSchrFarbe = "black";       // Schriftfarbe Tagesanzeige
  var SoFarbe = "red";            // Schriftfarbe f. Sonntage
  var TeFarbe = "blue";         // Schriftfarbe f. Termine
  var Ahgrund = "springgreen";      // Hintergrundfarbe f. heutigen Tag
  var ZFarbe;                     // Zwischenvariable für Schriftfarbe
  var HGrundZ;                    // Zwischenvariable für Hintergrundfarbe

  var heute = new Date();
  var DieserTag = heute.getDate();
  var DieserMonat = heute.getMonth();
  var heute = new Date(Jahr, Monat - 1, 1);
  var Start = heute.getDay();
  var txtKalender = "";
  var dlink = 0;
  var xi = 0;
  var txtFT;
  var zDat;

  if (Start > 0)
    Start--;
  else
    Start = 6;
  var Stop = 31;
  if (Monat == 4 || Monat == 6 || Monat == 9 || Monat == 11)
    --Stop;
  if (Monat == 2) {
    Stop = Stop - 3;
    if (Jahr % 4 == 0)
      Stop++;
    if (Jahr % 100 == 0)
      Stop--;
    if (Jahr % 400 == 0)
      Stop++;
    }
  txtKalender += "<table border='1 silver' cellpadding='1' cellspacing='0'>";
  var Monatskopf = Monatsname[Monat - 1] + " " + Jahr;
  txtKalender += SchreibeKopf(Monatskopf, Hgrund, KSchrFarbe);
  var Tageszahl = 1;
  for (var i = 0; i <= 5; i++) {
    txtKalender += "<tr>";
    for (var j = 0; j <= 6; j++) {
      ZFarbe=TSchrFarbe;   // Standardsschriftfarbe setzen
      HGrundZ=Hgrund;      // Standard Hintergrundfarbe setzen
      txtFT="";            // Feiertagsname auf Standard setzen
      dlink=0;             // Flag für Feiertagsanzeige löschen
      if (j == 6)          // Sonntagsschriftfarbe setzen
        ZFarbe =  SoFarbe;
      txtFT="";
      if ((i == 0) && (j < Start))
        txtKalender += SchreibeLeerZelle(HGrundZ);
      else {
        if (Tageszahl > Stop){
          txtKalender += SchreibeLeerZelle(HGrundZ);
          i=5; // Vorzeitiger Ausgabestop damit keine Leerzeile geschrieben wird
          }
        else {
          // Prüfe ob Tag=Feiertag
          for(xi=0; xi<FTage.length; xi++){ // Feiertagstabelle durchsuchen
            if ((Tageszahl+"."+Monat+"."+Jahr) == FTage[xi]["D"]){
              dlink = 1; // Flag für Feiertagsanzeige setzen
              ZFarbe = SoFarbe; // Feiertagsschriftfarbe setzen
              txtFT += FTage[xi]["N"] + "<br />"; // Feiertagsnamen für Anzeige eintragen
              }
            }

          // Prüfe ob Tag = Termin
          for(xi=0; xi<Termin.length; xi++){ // Feiertagstabelle durchsuchen
            if(Termin[xi]["O"]=="j"){
              if(txtFT.indexOf(Termin[xi]["N"])==-1){
                zDat=Termin[xi]["D"].getDate() + "." + (Termin[xi]["D"].getMonth()+1) + "." + Termin[xi]["D"].getFullYear();
                if ((Tageszahl+"."+Monat+"."+Jahr) == zDat){
                  if(Termin[xi]["N"]=="leer") break;
                  if(dlink!=1)
                    ZFarbe = TeFarbe; // Terminschriftfarbe setzen
                  dlink = 2; // Flag für Feiertagsanzeige setzen
                  txtFT += Termin[xi]["N"] + "<br />"; // Feiertagsnamen für Anzeige eintragen
                  }
                }
              }
            }

          // Prüfe ob Tag=aktueller Tag
          if ((Tageszahl == DieserTag && (Monat-1) == DieserMonat))
            HGrundZ=Ahgrund; // Hintergrundfarbe auf Aktuellen Tag setzen
          txtKalender += SchreibeZelle(Tageszahl, HGrundZ, ZFarbe, dlink, txtFT);
          Tageszahl++;
          }
        }
      }
    txtKalender += "</tr>";
    }
  txtKalender += "</table>";
  document.write(txtKalender);
  }

function SchreibeKopf (Monatstitel, HgFarbe, SchrFarbe) {
  var txtKopf = "";
  txtKopf += "<tr><td align='center' colspan='7' valign='middle' bgcolor='" + HgFarbe + "'>";
  txtKopf += "<font class='e' color='" + SchrFarbe + "'><b>";
  txtKopf += Monatstitel;
  txtKopf += "</b></font></td></tr><tr>";
  for (var i = 0; i <= 6; i++)
    txtKopf += SchreibeZelle(Tag[i], HgFarbe, SchrFarbe, 0, "");
  txtKopf += "</tr>";
  return txtKopf;
  }

function SchreibeZelle (Inhalt, HgFarbe, SchrFarbe, blink, FTagZ) {
  var txtZelle = "";
  txtZelle += "<td align='center' valign='middle' bgcolor='" + HgFarbe + "' onmouseover='ZeigeFeiertag(\" " + FTagZ + " \")' onmouseout='ZeigeFeiertag(\" \")'>";
  if (blink == 2)
    txtZelle += "<a href='Termine.html' target='main' onmouseover='status=\"\"; return true;' onclick='this.blur()'>";
  txtZelle += "<font class='e' color='" + SchrFarbe + "'><b>";
  if (blink == 1 || blink == 2)
    txtZelle += "<i><u>";
  txtZelle += Inhalt;
  if (blink == 1 || blink == 2)
    txtZelle += "</u></i>";
  txtZelle += "</b></font>";
  if (blink == 2)
    txtZelle += "</a>";
  txtZelle += "</td>";
  return txtZelle;
  }

function SchreibeLeerZelle (HgFarbe) {
  var txtZelle = "";
  txtZelle += "<td bgcolor='" + HgFarbe + "'><font class='e'>&nbsp;</font></td>";
  return txtZelle;
  }

function ZeigeFeiertag(txtFT1){
  document.all.FAnzeige.innerHTML="<font class='e' color='crimson'><b>" + txtFT1 +"</b></font>";
  }
