var Monat = new Array(
	"Januar", "Februar", "März", 
	"April", "Mai", "Juni",
    "Juli", "August", "September",
    "Oktober", "November", "Dezember");
var Wochentag = new Array("So", "Mo", "Di", "Mi",
                              "Do", "Fr", "Sa");
function toggleBackground(e) {
	// Feiertage per click einfaerben
    var td = evtGetTarget(e);
    var tr = td.parentNode ;
    var className = td.className ;
    if (className == "entry" || className == "") {
        if (tr.className != "feiertag") {
            tr.className = "feiertag" ;
        } else {
            tr.className = tr.firstChild.innerHTML.substr(0,2) ;
        }
    } else {
        var idx = 1 ;
        var sib = td.previousSibling;
        while (sib) {
            idx++;
            sib = sib.previousSibling;
        }
        if (idx == 7) {
            idx= 0;
        }
        if (td.className != "feiertag") {
            td.className = "feiertag" ;
        } else {
            td.className = Wochentag[idx];
        }
        
    }
}
// BEGINN TABELLENCODE
function appendCalTable (node,datum) {
    var table = document.createElement("table")	;
    //    table.cellSpacing = "0px" ; // setAttribute("cellspacing","0px");
    table.cellPadding = "6px" ;
    var thead = document.createElement("thead");
    var tr = document.createElement("tr");
    var tbody = document.createElement("tbody");
    var th = document.createElement("th");
    var month = datum.getMonth();
    var lastMonth = month ;
    var tiw = datum.getDay();
    // Ueberschrift
    th.colSpan = 7 ;
    
    th.appendChild(document.createTextNode(Monat[month]+ " "+datum.getFullYear()));
    tr.appendChild(th);
    thead.appendChild(tr);
    table.appendChild(thead);
    tr = document.createElement("tr");
    tr.className = "weekdays";
    for (var i = 1 ; i < 8; i++) {
        var td = document.createElement("td");
        var k = i ;
        if (i == 7) {
            k = 0 ;
        }
        td.appendChild(document.createTextNode(Wochentag[k]));
        td.className=Wochentag[k];
        tr.appendChild(td);
    }
    tbody.appendChild(tr);

    // leeren Zellen bis zum 1. Montatstag
    var tr2 = document.createElement("tr");
    // fix für Wochenbeginn Montag
    if (tiw == 0) {
        for (var i = 0 ; i < 6;i++) {
            var td = document.createElement("td");
            tr2.appendChild(td);
        }

    } else {
        for (var i = 0 ; i < tiw-1;i++) {
            var td = document.createElement("td");
            tr2.appendChild(td);
        }
    }
    // Tage eintragen
    var lasti = 0 ;
    for (var i = 1 ; i < 32; i++) {
    	lasti = i;
        datum.setDate(i);
        if (lastMonth !=  datum.getMonth()) {
            break ;
        }
        var day = datum.getDay();
        // neue Zeile für den Montag
        if (day == 1) {
            tbody.appendChild(tr2);
            tr2 = document.createElement("tr");
        }
        var td = document.createElement("td");
        td.className = Wochentag[day];
        td.appendChild(document.createTextNode(i));
        evtAdd(td,"click",toggleBackground);
        tr2.appendChild(td);
    }
    // abschließendes Füllen der Tabelle
    lasti--;
    for (var i = lasti ; i < 7;i++) {
        var td = document.createElement("td");
        tr2.appendChid(td);
    }
    tbody.appendChild(tr2);
    table.appendChild(tbody);
    node.appendChild(table);
}
// END TABELLENCODE

function kalender () {
    var div = document.getElementById("cal");
    // alte Einträge entfernen
    var child = div.firstChild ;
    while (child) {
        div.removeChild(child);
        child = div.firstChild;
    }
    var year = document.forms[0].jahr.value ;
    var month = document.forms[0].monat.value ;
    var rows = document.forms[0].rows.value ;
    var cols = document.forms[0].cols.value ;
    var mode = document.forms[0].modus.value ;
    var ptable = document.createElement("table");
    ptable.className = "outer" ;
    var tbody = document.createElement("tbody");
    for (var r = 0 ; r < rows ; r++) {
        var tr = document.createElement("tr");
        for (var c = 0 ; c < cols ; c++) {
            if (month == 12){
                month=0;
                year++ ;
            }
            var datum = new Date();
            datum.setDate(1);
            datum.setMonth(month);
            datum.setYear(year);
            var td = document.createElement("td");
            if (mode == 'Liste') {
                div.className = "liste";
                appendCalList(td,datum);
            } else {
                div.className = "tab";
                appendCalTable(td,datum);
                
            }
            month++;
            tr.appendChild(td);
        }
        tbody.appendChild(tr);
    }
    ptable.appendChild(tbody);
    div.appendChild(ptable);

}
function appendCalList(node,datum) {
    var h2 = document.createElement("h2");
    var month = datum.getMonth();
    h2.appendChild(document.createTextNode(Monat[month]+ " "+datum.getFullYear()));
    var table = document.createElement("table");
    var tbody = document.createElement("tbody");
    var lastMonth = month;
    for (var i = 1 ; i < 32; i++) {
        datum.setDate(i);
        if (lastMonth !=  datum.getMonth()) {
            break ;
        }
        var tr = document.createElement("tr");
        var tiw = datum.getDay();
        tr.className = Wochentag[tiw];
        evtAdd(tr,"click",toggleBackground);
        var td1 = document.createElement("td");
        var d = datum.getDate();
        if (d < 10) {
            d = "0"+d;
        }
        var monidx = datum.getMonth()
        var mon = Monat[monidx].substr(0,3);
        var text = ""+Wochentag[tiw] + " " + d + " " + mon;
        td1.appendChild(document.createTextNode(text));
        var td2 = document.createElement("td");
        td2.appendChild(document.createElement("span"));
        td2.className = "entry" ;
        tr.appendChild(td1);
        tr.appendChild(td2);
        tbody.appendChild(tr);
    }
    node.appendChild(h2);
    table.appendChild(tbody);
    node.appendChild(table);
}
addLoadEvent(kalender);


