/*
 Version 1.11
 21.07.2003
 Tomasz Lewandowski
 webbe@webbe.de
 www.webbe.de
*/

var constNORLMALDAY = "normalday";  // normaler Tag
var constCURRENTDAY = "current";    // aktueller Tag
var constNODAY      = "noday";      // kein Tag
var constSATURDAY   = "saturday";   // Samstag
var constSUNDAY     = "sunday";     // Sonntag
var constHOLIDAY    = "holiday";    // Feiertag
var constBIRTHDAY   = "birthday";   // Geburtstag
var constVACATION   = "vacation";   // Urlaub
var constSPECIAL    = "special";    // besonderer Tag
var constKIRCHEN    = "kirchen";    // KirchenTag
var constSC         = "sc";         // SC Kocherstetten
var constPOSAUNEN   = "posaunen";   // Posaunenchor Stetten
// CSS-Klassen
var cssClassArray = new Array();
cssClassArray[constNORLMALDAY] = 'normalDay';
cssClassArray[constCURRENTDAY] = 'currentDay';
cssClassArray[constNODAY]      = 'noDay';
cssClassArray[constSATURDAY]   = 'saturday';
cssClassArray[constSUNDAY]     = 'sunday';
cssClassArray[constHOLIDAY]    = 'holiDay';
cssClassArray[constBIRTHDAY]   = 'birthDay';
cssClassArray[constVACATION]   = 'vacationDay';
cssClassArray[constSPECIAL]    = 'specialDay';
cssClassArray[constKIRCHEN]    = 'kirchenDay';
cssClassArray[constSC]         = 'scDay';
cssClassArray[constPOSAUNEN]   = 'posaunenDay';

// Monate
var monthName = new Array ("Januar","Februar","M&auml;rz","April","Mai","Juni","Juli",
                           "August","September","Oktober","November","Dezember");
// Wochentage
var dayName = new Array ("Mo","Di","Mi","Do","Fr","Sa","So");

var dayArray = new Array();
var dayArrayCounter = 0;

var calendarInnerHTML = false;
var calendarId = 'calendar';

function setInnerHTML (inner)
{
  calendarInnerHTML = inner;
}

function setCalendarId (id)
{
  calendarId = id;
}

function calendar (month, year)
{
  var out = '';

  // aktuelles Datum bestimmen
  var now = new Date();
  var currentMonth = now.getMonth() + 1;
  var currentYear  = now.getYear();
  if (currentYear < 999)
  {
    currentYear+=1900;
  }
  var currentDay = now.getDate();

  // Wurde nichts übergeben
  // dann versuche die Werte aus dem Request zu holen
  if (isNaN(month))
  {
    year = parseInt(parse_form_data("year"));
    month = parseInt(parse_form_data("month"));
  }

  var cssStyle = parseInt(parse_form_data("CSS"));

  // ist immer nocht nicht da
  // dann nimm den aktuellen Monat und Jahr
  if (month == null || year == null || month < 1 || month > 12 || isNaN(month))
  {
    year = currentYear;
    month = currentMonth;
  }

  // bestimme den 1 des Monats als Wochentag
  var pDate = new Date(year,month-1,1);
  var startDay = pDate.getDay();
  if (startDay > 0)
  {
    startDay--;
  }
  else
  {
    startDay = 6;
  }

  // Monatslänge
  var monthLength = 31;
  if (month==4 || month==6 || month==9 || month==11 ) --monthLength;
  if (month==2)
  {
    monthLength = monthLength - 3;
    if(year%4==0) monthLength++;
    if(year%100==0) monthLength--;
    if(year%400==0) monthLength++;
  }

  // Werte für den nächsten und letzten Monat holen
  var nextYear = year;
  var prevYear = year;
  var nextMonth = month + 1;
  if (nextMonth>12)
  {
    nextMonth = 1;
    nextYear++;
  }
  var prevMonth = month - 1;
  if (prevMonth < 1)
  {
    prevMonth = 12;
    prevYear--;
  }

  var prevLink = '';
  var nextLink = '';

  var prevTitle = monthName[prevMonth-1] + ' ' + prevYear;
  var nextTitle = monthName[nextMonth-1] + ' ' + nextYear;

  var prevImg = '<img src="calendar/pic/arrow_left.png" alt="'+prevTitle+'" border="0" />';
  var nextImg = '<img src="calendar/pic/arrow_right.png" alt="'+nextTitle+'" border="0" />';

  if (calendarInnerHTML == true)
  {
    prevLink = '<a class="calendar" title="'+prevTitle+'" href="#" onclick="calendar('+prevMonth+','+prevYear+');">'+prevImg+'</a>';
    nextLink = '<a class="calendar" title="'+nextTitle+'" href="#" onclick="calendar('+nextMonth+','+nextYear+');">'+nextImg+'</a>';
  }
  else
  {
    prevLink = '<a class="calendar" href="../html/calendar.html?month='+prevMonth+';year='+prevYear+'">'+prevImg+'</a>';
    nextLink = '<a class="calendar" href="../html/calendar.html?month='+nextMonth+';year='+nextYear+'">'+nextImg+'</a>';
  }

  // Feiertage, Geburtstage, ...
  buildDays(year);

  out = '<table class="calendarOut">\n'
      + '<tr>\n'
      + '<td colspan="8">\n'
      + '<table class="calendar">\n'
      + '<tr>\n'
      + '<td class="month">'+prevLink+'</td>\n'
      + '<td colspan="6" class="month" width="100%">'+monthName[month-1]+'&nbsp;'+year+'</td>\n'
      + '<td class="month">'+nextLink+'</td>\n'
      + '</tr>\n'
      + '</table>\n'
      + '</td>\n'
      + '</tr>\n';

  // Kalendarwoche und Überschriften der Wochentage
  out += '<tr>\n';
  out += '<td class="weekDay">KW</td>';
  for (var i=0; i<7; i++)
  {
    out += '<td class="weekDay">'+dayName[i]+'</td>';
  }
  out += '</tr>\n';

  // Wochenweise den Monat ausgeben
  var workDayCounter = 0;
  var monthDayCounter = 0;
  var cssClass;
  var result = null;

  for (var y=0; y<6; y++)
  {
    // aktuelle Woche ausgeben
    out += '<tr>\n';
    var weekNumber = 0;
    if (monthDayCounter < monthLength)
    {
      weekNumber = getWeekNumber(year, month, monthDayCounter+1);
      out += '<td class="weekNumber">'+weekNumber+'</td>';
    }
    else
    {
      out += '<td class="noDay">&nbsp;</td>';
    }
    for (var x=0; x<7; x++)
    {
      if (
          ((y == 0) && (x >= startDay)) ||
          ((y > 0) && (monthDayCounter < monthLength))
         )
      {
        // aktueller Tag
        monthDayCounter++;

        // Tag prüfen
        result = checkDay(monthDayCounter, month, year);
        cssClass = result.cssClass;

        // unter der Woche
        if (x < 5)
        {
          // falls kein Urlaub und kein Feiertag, dann einen Arbeitstag
          if (cssClass != cssClassArray[constVACATION] && result.type != constHOLIDAY)
          {
            workDayCounter++;
          }
        }

        out += '<td class="' + cssClass + '" title="'+result.description+'">'+monthDayCounter+'</td>\n';
      }
      else
      {
        out += '<td class="' + cssClassArray[constNODAY] + '">&nbsp;</td>\n';
      }
    }
    out += '</tr>\n';
  }

 // out +='<tr>\n'
 //     + '<td colspan="8" class="workDay">\n'
 //     + 'Arbeitstage: ' + workDayCounter + '\n'
 //     + '</td>\n'
 //     + '</tr>\n'

  out += '</table>\n';

  // Ausgabe
  if (calendarInnerHTML == true)
  {
    if (document.getElementById(calendarId))
    {
      document.getElementById(calendarId).innerHTML = out;
    }
  }
  else
  {
    document.open("text/html");
    document.write('<html>\n');
    document.write('<head>');
    document.write('</head>\n');
    document.write('<body>\n');
    document.write(out);
    document.write('</body>\n</html>\n');
    document.close();
  }
}

function checkDay (day, month, year)
{
  // aktuelles Datum bestimmen
  var now = new Date();
  var currentMonth = now.getMonth() + 1;
  var currentYear  = now.getYear();
  if (currentYear < 999)
  {
    currentYear+=1900;
  }
  var currentDay = now.getDate();

  var result = new dayStruct('', day, month, year, '', '');

  var setDate = new Date(year, month-1, day, 12, 0, 0);
  var dayOfWeek = setDate.getDay();
  if (dayOfWeek == 6) result.cssClass = cssClassArray[constSATURDAY];
  if (dayOfWeek == 0) result.cssClass = cssClassArray[constSUNDAY];

  // Feste Feiertage
  for (var i=0; i<dayArray.length; i++)
  {
    if (dayArray[i].day == day && dayArray[i].month == month && dayArray[i].type == constHOLIDAY)
    {
      result = dayArray[i];
    }
  }

  // aktueller Tag ?
  if ((day == currentDay) && (currentMonth == month) && (currentYear == year))
  {
    result.description = (result.description != "") ? "Heute:\n" + result.description : "Heute";
    result.cssClass = cssClassArray[constCURRENTDAY];
  }

  // Urlaub
  for (var i=0; i<dayArray.length; i++)
  {
    if (dayArray[i].day == day && dayArray[i].month == month && dayArray[i].year == year && dayArray[i].type == constVACATION)
    {
      if (result.description != "")
      {
        result.description = result.description +"\n" + dayArray[i].description;
      }
      else
      {
        result.cssClass = dayArray[i].cssClass;
        result.description = dayArray[i].description;
      }
    }
  }

  // Special
  for (var i=0; i<dayArray.length; i++)
  {
    if (dayArray[i].day == day && dayArray[i].month == month &&
        dayArray[i].year == 0 && dayArray[i].type == constSPECIAL)
    {
      if (result.description != "")
      {
        result.description = result.description +"\n" + dayArray[i].description;
      }
      else
      {
        result.cssClass = dayArray[i].cssClass;
        result.description = dayArray[i].description;
      }
    }
  }


 // Kirchen
  for (var i=0; i<dayArray.length; i++)
  {
    if (dayArray[i].day == day && dayArray[i].month == month &&
        dayArray[i].year == 0 && dayArray[i].type == constKIRCHEN)
    {
      if (result.description != "")
      {
        result.description = result.description +"\n" + dayArray[i].description;
      }
      else
      {
        result.cssClass = dayArray[i].cssClass;
        result.description = dayArray[i].description;
      }
    }
  }

// SC
  for (var i=0; i<dayArray.length; i++)
  {
    if (dayArray[i].day == day && dayArray[i].month == month &&
        dayArray[i].year == 0 && dayArray[i].type == constSC)
    {
      if (result.description != "")
      {
        result.description = result.description +"\n" + dayArray[i].description;
      }
      else
      {
        result.cssClass = dayArray[i].cssClass;
        result.description = dayArray[i].description;
      }
    }
  }


// posaunen Chor
  for (var i=0; i<dayArray.length; i++)
  {
    if (dayArray[i].day == day && dayArray[i].month == month &&
        dayArray[i].year == 0 && dayArray[i].type == constPOSAUNEN)
    {
      if (result.description != "")
      {
        result.description = result.description +"\n" + dayArray[i].description;
      }
      else
      {
        result.cssClass = dayArray[i].cssClass;
        result.description = dayArray[i].description;
      }
    }
  }




  return result;
}

function buildDays (year)
{
  var result = null;

  var holidayDate = new Date();
  var dateInMiliseconds = 0;
  var constDayInMiliseconds = 24 * 60 * 60 * 1000;
  var hDay;
  var hMonth;

 
  addDay('newyear', 1, 1, 0, 'Neujahr', constHOLIDAY);
  addDay('SC',7, 2, 0, 'Jahresfeier', constSC);
  addDay('pos1',14, 3, 0, 'Gottesdienst in Kirchberg', constPOSAUNEN);
  addDay('pos2',30, 4, 0, 'Maibaumstellen am Brückle', constPOSAUNEN);
  addDay('pos3',1, 5, 0, '1.Mai Wanderung am Brückle ab 9.30 Uhr', constPOSAUNEN);
  addDay('pos4',7, 11, 0, 'Kärwe in Kocherstetten', constPOSAUNEN);
  addDay('pos5',28, 11, 0, 'Gottesdienst zum 1.Advent', constPOSAUNEN); 
  addDay('pos6',24, 12, 0, 'Weihnachtsblasen am Brückle', constPOSAUNEN);

  addDay('kirchen',21, 3, 0, 'Konformation in Kocherstetten', constKIRCHEN);
  addDay('firstmay', 1, 5, 0, 'Maifeiertag: Tag der Arbeit', constHOLIDAY);
  addDay('german', 3, 10, 0, 'Tag der Deutschen Einheit', constHOLIDAY);
  addDay('allhallows', 1, 11, 0, 'Allerheiligen', constHOLIDAY);
  addDay('christmas1', 25, 12, 0, '1. Weihnachtstag', constHOLIDAY);
  addDay('christmas2', 26, 12, 0, '2. Weihnachtstag', constHOLIDAY);
  addDay('treekings', 6, 1, 0, 'Helige Drei Könige', constSPECIAL);
  addDay('valentis', 14, 2, 0, 'Valentinstag', constSPECIAL);
  addDay('women', 8, 3, 0, 'Internationale Frauentag', constSPECIAL);
  addDay('childreen', 1, 6, 0, 'Internationale Kindertag', constSPECIAL);
  addDay('maria', 22, 9, 0, 'Maria Himmelfahrt', constSPECIAL);
  addDay('halloween', 31, 10, 0, 'Halloween', constSPECIAL);
  addDay('nicolaus', 6, 12, 0, 'Nicolaus', constSPECIAL);
  addDay('mariaemp', 8, 12,  0,'Maria Empfängnis', constSPECIAL);
  addDay('silvester', 31, 12, 0, 'Silvester', constSPECIAL);

  // 4. Advent: Sonntag vor Weihnachten
  var adventDate = new Date(year, 11, 24, 12, 0, 0);
  dateInMiliseconds = adventDate.getTime() - constDayInMiliseconds * adventDate.getDay();
  adventDate.setTime(dateInMiliseconds);
  hDay   = adventDate.getDate();
  hMonth = adventDate.getMonth() + 1;
  addDay('4. Advent', hDay, hMonth, 0, '4. Advent', constSPECIAL);

  // 3. Advent
  adventDate.setTime(adventDate.getTime() - constDayInMiliseconds * 7);
  hDay   = adventDate.getDate();
  hMonth = adventDate.getMonth() + 1;
  addDay('3. Advent', hDay, hMonth, 0, '3. Advent', constSPECIAL);

  // 2. Advent
  adventDate.setTime(adventDate.getTime() - constDayInMiliseconds * 7);
  hDay   = adventDate.getDate();
  hMonth = adventDate.getMonth() + 1;
  addDay('2. Advent', hDay, hMonth, 0, '2. Advent', constSPECIAL);

  // 1. Advent
  adventDate.setTime(adventDate.getTime() - constDayInMiliseconds * 7);
  hDay   = adventDate.getDate();
  hMonth = adventDate.getMonth() + 1;
  addDay('1. Advent', hDay, hMonth, 0, '1. Advent', constSPECIAL);

  // Totensonntag: eine Woche vor dem 1. Advent
  adventDate.setTime(adventDate.getTime() - constDayInMiliseconds * 7);
  hDay   = adventDate.getDate();
  hMonth = adventDate.getMonth() + 1;
  addDay('Totensonntag', hDay, hMonth, 0, 'Totensonntag', constSPECIAL);

  // Volkstrauertag: zwei Wochen vor dem 1. Advent
  adventDate.setTime(adventDate.getTime() - constDayInMiliseconds * 7);
  hDay   = adventDate.getDate();
  hMonth = adventDate.getMonth() + 1;
  addDay('Volkstrauertag', hDay, hMonth, 0, 'Volkstrauertag', constSPECIAL);

  // Erntedankfest: erster Sonntag nach 29. September
  var harvestDate = new Date(year, 8, 30, 12, 0, 0);
  var dayOfWeek = harvestDate.getDay();
  dateInMiliseconds = harvestDate.getTime() + constDayInMiliseconds * (7-harvestDate.getDay());
  harvestDate.setTime(dateInMiliseconds);
  hDay   = harvestDate.getDate();
  hMonth = harvestDate.getMonth() + 1;
  addDay('Erntedankfest', hDay, hMonth, 0, 'Erntedankfest', constSPECIAL);

  // Muttertag: zweite Sonntag im Mai
  var motherDate = new Date(year, 4, 1, 12, 0, 0);
  var dayOfWeek = motherDate.getDay();
  var hDay = (dayOfWeek == 0) ? 8 : 7 - dayOfWeek + 8;
  addDay('Muttertag', hDay, 5, 0, 'Muttertag', constSPECIAL);

  // Vatertag: dritte Sonntag im Juni
  var fatherDate = new Date(year, 5, 1, 12, 0, 0);
  var dayOfWeek = fatherDate.getDay();
  var hDay = (dayOfWeek == 0) ? 15 : 7 - dayOfWeek + 15;
  addDay('Vatertag', hDay, 6, 0, 'Vatertag', constSPECIAL);

  // Bewegliche Feiertage (mit Ostern)
  var easter = checkOstern(year);
  var easterDay   = easter.getDate();
  var easterMonth = easter.getMonth() + 1;
  var easterTime = easter.getTime();

  // Aschermittwoch: 46 Tage vor Ostersonntag
  dateInMiliseconds = easterTime - constDayInMiliseconds * 46;
  holidayDate.setTime(dateInMiliseconds);
  hDay   = holidayDate.getDate();
  if (holidayDate.getDay() == 2)
  {
    holidayDate.setDate(hDay+1);
    hDay   = holidayDate.getDate();
  }
  hMonth = holidayDate.getMonth() + 1;
  addDay('Aschermittwoch', hDay, hMonth, 0, 'Aschermittwoch', constHOLIDAY);

  // Fastnacht: Tag vor Aschermittwoch
  addDay('Fastnacht', hDay-1, hMonth, 0, 'Fastnacht', constSPECIAL);

  // Rosenmontag: zwei Tage vor Aschermittwoch
  addDay('Rosenmontag', hDay-2, hMonth, 0, 'Rosenmontag', constSPECIAL);

  // Altweiber: Donnerstag vor Aschermittwoch
  dateInMiliseconds = holidayDate.getTime() - constDayInMiliseconds * 6;
  holidayDate.setTime(dateInMiliseconds);
  hDay   = holidayDate.getDate();
  hMonth = holidayDate.getMonth() + 1;
  addDay('Altweiber', hDay, hMonth, 0, 'Altweiber', constSPECIAL);

  // Karfreitag
  addDay('Karfreitag', easterDay - 2, easterMonth, 0, 'Karfreitag', constHOLIDAY);

  // Ostersonntag
  addDay('Ostersonntag', easterDay, easterMonth, 0, 'Ostersonntag', constHOLIDAY);

  // Ostermontag
  if (easterDay < 31)
  {
    addDay('Ostermontag', easterDay + 1, easterMonth, 0, 'Ostermontag', constHOLIDAY);
  }
  else
  {
    addDay('Ostermontag', 1, easterMonth + 1, 0, 'Ostermontag', constHOLIDAY);
  }

  // Weißer Sonntag ist 7 Tage nach Ostersonntag
  dateInMiliseconds = easterTime + constDayInMiliseconds * 7;
  holidayDate.setTime(dateInMiliseconds);
  hDay   = holidayDate.getDate();
  hMonth = holidayDate.getMonth() + 1;
  addDay('Weißer Sonntag', hDay, hMonth, 0, 'Weißer Sonntag', constSPECIAL);

  // Christi Himmelfahrt ist 39 Tage nach Ostersonntag
  // Wniebowziecie
  dateInMiliseconds = easterTime + constDayInMiliseconds * 39;
  holidayDate.setTime(dateInMiliseconds);
  hDay   = holidayDate.getDate();
  hMonth = holidayDate.getMonth() + 1;
  addDay('Christi Himmelfahrt', hDay, hMonth, 0, 'Christi Himmelfahrt', constHOLIDAY);

  // Pfingstsonntag 49 Tage nach Ostersonntag
  dateInMiliseconds = easterTime + constDayInMiliseconds * 49;
  holidayDate.setTime(dateInMiliseconds);
  hDay   = holidayDate.getDate();
  hMonth = holidayDate.getMonth() + 1;
   addDay('Pfingstsonntag', hDay, hMonth, 0, 'Pfingstsonntag', constHOLIDAY);

  // Pfingsmontag
  addDay('Pfingsmontag', hDay + 1, hMonth, 0, 'Pfingsmontag', constHOLIDAY);

  // Fronleichnam 60 Tage nach Ostersonntag
  // Boze Cialo
  dateInMiliseconds = easterTime + constDayInMiliseconds * 60;
  holidayDate.setTime(dateInMiliseconds);
  hDay   = holidayDate.getDate();
  hMonth = holidayDate.getMonth() + 1;
  addDay('Fronleichnam', hDay, hMonth, 0, 'Fronleichnam', constHOLIDAY);
}

function checkOstern (year)
{
  var g;      /* golden number - 1 */
  var c;      /* century: e.g. 20 for 1900-1999 */
  var h;      /* 23-Epact (modulo 30) */
  var i;      /* number of days from 21 March to the Paschal Full Moon */
  var j;      /* weekday of the Full Moon (0=Sunday,...) */
  var l;
  var EasterMonth, EasterDay;

  if (year>1582)
  {
    // Gregorianischer Kalender
    g = year % 19;
    c = Math.floor(year/100);

    h = (c - Math.floor(c/4)-Math.floor((8*c+13)/25)+ 19*g + 15) % 30;

    i = h - Math.floor(h/28)*(1 - Math.floor(h/28)*Math.floor(29/(h+1))*Math.floor((21 - g)/11));

    j = (year + Math.floor(year/4) + i + 2 - c + Math.floor(c/4));

    j = j % 7;
  }
  else
  {
    // Julianischer Kalender
    g = year % 19;
    i = (19*g + 15) % 30;
    j = (year + Math.floor(year/4) + i) % 7;
  }

  l = i - j;
  EasterMonth = 3 + Math.floor((l+40)/44);
  EasterDay = l + 28 - 31*Math.floor(EasterMonth/4);

  var easter = new Date(year, (EasterMonth - 1), EasterDay);
  return easter;
}

function checkWeekNumber (year, month, day)
{
  // 4. Januar als erste Woche erstellen
  var firstDate = new Date(year, 0, 4, 12, 0, 0);
  // Wochentag des 4. Januar ermitteln
  var dayOfWeek = Math.abs(((firstDate.getDay() + 6) % 7));
  // geh zu Wochenanfang (Montag) zurück
  var firstDateTime = firstDate.getTime() - (dayOfWeek * 1000 * 3600 * 24);

  // aktuelles Datum erstellen
  var currentDate = new Date(year, month - 1, day, 14, 0, 0);
  var currentDateTime = currentDate.getTime();

  // Differenz in Tagen berechnen
  var diffInDay = (currentDateTime - firstDateTime) / 1000 / 3600 / 24;
  // Anzahl der Wochen zwischen aktuellem Datum und 4. Januar berechnen
  var weekNumber = Math.floor(diffInDay / 7) + 1;

  return (weekNumber);
}

function getWeekNumber (year, month, day)
{
  var weekNumber = checkWeekNumber(year, month, day);
  // wenn Wochennummer gleich 0, dann ist das aktuelle Datum
  // in der Woche vor dem 4. Januar
  // also in der letzten Woche des letzten Jahres
  if (weekNumber == 0)
  {
    // Wochennummer des letzten Woche des letzten Jahres suchen
    weekNumber = checkWeekNumber(year - 1, 12, 31);

    // wenn die Wochennummer größer als 52 ist
    // dann prüfen ob diese Wochennummer korrekt ist oder
    // sie bereits die erste Woche des aktuellen Jahres ist
    if (weekNumber > 52)
    {
      weekNumber = checkWeekNumber(year, 1, 1);
      // wenn der 1. Januar des aktuellen Jahres in der Woche 0 liegt
      // dann ist es die Woche 53
      if (weekNumber == 0)
      {
        weekNumber = 53;
      }
    }
  }
  // wenn die Wochennummer größer als 52 ist
  // dann prüfen ob diese Wochennummer korrekt ist oder
  // sie bereits die erste Woche des nächsten Jahres ist
  else if (weekNumber > 52)
  {
    weekNumber = checkWeekNumber(year + 1, 1, 1);
    // wenn der 1. Januar des nächsten Jahres in der Woche 0 liegt
    // dann ist es die Woche 53
    if (weekNumber == 0)
    {
      weekNumber = 53;
    }
  }
  return (weekNumber);
}

function dayStruct (name, day, month, year, description, type)
{
  this.name = name;
  this.day = day;
  this.month = month;
  this.year = year;
  this.description = description;
  this.type = type;
  if (type != '')
  {
    this.cssClass = cssClassArray[type];
  }
  else
  {
    this.cssClass = cssClassArray[constNORLMALDAY];
  }
  return this;
}

function addDay (name, day, month, year, description, type)
{
  var dayFound = false;

  if (type == constVACATION && name == '')
  {
    name = year + "" + month + "" + day;
  }

  for (var i=0; i<dayArray.length; i++)
  {
    if (dayArray[i].name == name)
    {
      dayArray[i].day = day;
      dayArray[i].month = month;
      dayArray[i].year = year;
      dayFound = true;
    }
  }
  if (dayFound == false)
  {
    dayArray[dayArrayCounter] = new dayStruct(name, day, month, year, description, type);
    dayArrayCounter++;
  }
}

