
setCal()

function getTime()
{
// initialize time-related variables with current time settings
var now = new Date();
var hour = now.getHours();
var minute = now.getMinutes();

// add zero digit to a one digit minute
if (minute < 10)
minute = "0"+minute; // do not parse this number!

// return time string
return hour + ":" + minute + " Uhr";
}

function leapYear(year)
{
if (year % 4 == 0) // basic rule
return true // is leap year
/* else */ // else not needed when statement is "return"
return false // is not leap year
}

function getDays(month, year)
{
// create array to hold number of days in each month
var ar = new Array(12);
ar[0] = 31; // January
ar[1] = (leapYear(year)) ? 29 : 28 // February
ar[2] = 31; // March
ar[3] = 30; // April
ar[4] = 31; // May
ar[5] = 30; // June
ar[6] = 31; // July
ar[7] = 31; // August
ar[8] = 30; // September
ar[9] = 31; // October
ar[10] = 30; // November
ar[11] = 31; // December

// return number of days in the specified month (parameter)
return ar[month];
}

function getMonthName(month)
{
// create array to hold name of each month
var ar = new Array(12);
ar[0] = "Januar";
ar[1] = "Februar";
ar[2] = "März";
ar[3] = "April";
ar[4] = "Mai";
ar[5] = "Juni";
ar[6] = "Juli";
ar[7] = "August";
ar[8] = "September";
ar[9] = "Oktober";
ar[10] = "November";
ar[11] = "Dezember";

// return name of specified month (parameter)
return ar[month];
}

function setCal()
{
// standard time attributes
var now = new Date();
var year = now.getYear();
if (year < 1000)
year+=1900;
var month = now.getMonth();
var monthName = getMonthName(month);
var date = now.getDate();

// create instance of first day of month, and extract the day on which it occurs
var firstDayInstance = new Date(year, month, 1);
var firstDay = firstDayInstance.getDay();

// number of days in current month
var days = getDays(month, year);

// call function to draw calendar
drawCal(firstDay + 1, days, date, monthName, year,month);
}

function drawCal(firstDay, lastDate, date, monthName, year,monthnumber)
{
var brightcolor = "FCEB99";// Farbe für die Monat - Jahr Reihe (ganz oben)
var weekdays = "";// Farbe für die Wochentagsreihe (Montag, Dienstag.....)
var inactivecell = "FCEB99";// Nicht aktive Zelle (kein Tag)
var activecell = "FCEB99";// Aktive Zelle (Tag, aber nicht der aktuelle)
var currentdaycolor = "FDF2C1";// Aktueller Tag

// create basic table structure
var text = "";

text += '<table cellpadding="0" cellspacing="0" border="0"  width="60%" align="center" background="http://www.hexes-hexenhaus.de/forum/bbgrd7c.jpg"><tr><td>';
text += '<table cellpadding="4" cellspacing="1" border="0"  width="100%"  bgcolor="624522">';
text += '<tr><td style="background-color:#'+brightcolor+';" colspan="8" align="center"><font face="arial" size="2" color="#624522"><b>';
text += '' + ' ' + monthName + ' ' + year;
text += '</b></font></td></tr>';

// variables to hold constant settings
var closeCol = '</font></td>';

// create array of abbreviated day names
var weekDay = new Array(7);
weekDay[0] = "<b>Sonntag</b>";
weekDay[1] = "<b>Montag</b>";
weekDay[2] = "<b>Dienstag</b>";
weekDay[3] = "<b>Mittwoch</b>";
weekDay[4] = "<b>Donnerstag</b>";
weekDay[5] = "<b>Freitag</b>";
weekDay[6] = "<b>Samstag</b>";

// create first row of table to set column width and specify week day

text += '<tr align="center" valign="center" height="15">';
for (var dayNum = 0; dayNum < 7; ++dayNum)
{
text += '<td style="background-color:#'+weekdays+';" valign="top" width="14%"><font face="arial" size="1" color="#FCEB99">'+weekDay[dayNum]+closeCol;
}
text += '</tr>'

// declaration and initialization of two variables to help with tables
var digit = 1;
var curCell = 1;

function openWindow(addr, x, y)
{
var newvar = window.open(addr,"kalender","toolbar=no,scrollbars=no,resizable=no,width="+x+",height="+y);
}

var events = new Array();
for (g = 1; g <= 12; g++)
{
events[g] = new Array();
}

// Januar
events[1][9] = "<font face=\"verdana\" size=\"1\" color=\"624522\"></font>\n";
events[1][14] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>VOLLMOND</b><br></font>\n";
events[1][29] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>NEUMOND</b><br></font>\n";



// Februar
events[2][10] = "<font face=\"verdana\" size=\"1\" color=\"624522\"></font>\n";
events[2][13] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>VOLLMOND</b><br></font>\n";
events[2][28] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>NEUMOND</b><br></font>\n";

// März
events[3][14] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>VOLLMOND</b><br></font>\n";
events[3][20] = "<font face=\"arial\" size=\"1\" color=\"red\">Ostara<br>(Frühlingsanfang)<br></font>\n";
events[3][29] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>NEUMOND</b><br></font>\n";


// April
events[4][7] = "<font face=\"verdana\" size=\"1\" color=\"624522\"></font>\n";
events[4][13] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>VOLLMOND</b><br></font>\n";
events[4][27] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>NEUMOND</b><br></font>\n";

// Mai
events[5][2] = "<font face=\"verdana\" size=\"1\" color=\"624522\"></font>\n";
events[5][13] = "</font><font face=\"arial\" size=\"1\" color=\"red\">Beltane</font><br><font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>VOLLMOND</b><br></font>\n";
events[5][27] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>NEUMOND</b><br></font>\n";


// Juni
events[6][11] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>VOLLMOND</b><br></font>\n";
events[6][21] = "<font face=\"arial\" size=\"1\" color=\"red\">Litha<br>(Sommeranfang)<br></font>\n";
events[6][25] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>NEUMOND</b><br></font>\n";


// Juli
events[7][11] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>VOLLMOND</b><br></font>\n";
events[7][25] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>NEUMOND</b><br></font>\n";


// August
events[8][9] = "<font face=\"arial\" size=\"1\" color=\"red\">Lammas<br>Lughnasadh</font><br><font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>VOLLMOND</b><br></font>\n";
events[8][23] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>NEUMOND</b><br></font>\n";

// September
events[9][7] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>VOLLMOND</b><br></font>\n";
events[9][22] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>NEUMOND</b><br></font>\n";
events[9][23] = "<font face=\"arial\" size=\"1\" color=\"red\">Mabon<br>Herbstanfang</font>\n";

// Oktober
events[10][7] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>VOLLMOND</b><br></font>\n";
events[10][22] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>NEUMOND</b><br></font>\n";
events[10][31] = "<font face=\"arial\" size=\"1\" color=\"red\">Halloween</font>\n";


// November
events[11][5] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>VOLLMOND</b><br></font>\n";
events[11][20] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>NEUMOND</b><br></font>\n";

// Dezember
events[12][3] = "<font size=\"1\" color=\"red\">1. Advent<br></ font>\n";
events[12][5] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>VOLLMOND</b><br></font>\n";
events[12][10] ="<font size=\"1\" color=\"red\">2. Advent<br></ font>\n";
events[12][17] = "<font size=\"1\" color=\"red\">3. Advent<br></ font>\n";
events[12][20] = "<font face=\"verdana\" size=\"1\" color=\"8B5923\"><b>NEUMOND</b><br></font>\n";
events[12][21] = "<font face=\"arial\" size=\"1\" color=\"red\">Yule<br></font>\n";
events[12][24] = "<font size=\"1\" color=\"red\">4. Advent<br></ font>\n";





monthnumber = monthnumber+1;

for (var row = 1; row <= Math.ceil((lastDate + firstDay - 1) / 7); ++row)
{
text += '<tr>';
for (var col = 1; col <= 7; ++col)
{
if (digit > lastDate)
{
if (col <= 7)
{
text += '<td style="background-color:#'+inactivecell+';"></td>';
continue;
}
else
{
break;
}
}

if (curCell < firstDay)
{
text += '<td style="background-color:#'+inactivecell+';"></td>';
curCell++;
}
else
{
if (digit == date)
{ // current cell represent today's date
text += '<td style="background-color:#'+currentdaycolor+';" valign="top" height="50" width="14%" style="border:3px;border-style:outset;border-color:#800000">';
text += '<font face="arial" size="3" color="#800000"><b>';
text += digit;
text += '</b></font><br>';
text += '<font face="arial" size="1" color="#800000"><li>';
text += getTime();
text += "<br>";
if (events[monthnumber][digit] != null)
text += events[monthnumber][digit];
text += '</font>';
text += '</td>';
}
else
{
text += '<td style="background-color:#'+activecell+';" valign="top" height="50" width="14%"><font face="arial" size="1"  color="#624522">' + digit + "<br>";
if (events[monthnumber][digit] != null)
text += events[monthnumber][digit];
text += '</td>';
}
digit++;
}
}
text += '</tr>';
}

// close all basic table tags
text += '</table>';
text += '</table>';

// print accumulative HTML string
document.write(text);
}
