// ---------------------------------------------------------------------------
// Konfiguration
// ---------------------------------------------------------------------------
// Einstellungen
    // URL
        /* Serverpfad - optional
            auch Servervariabeln verwendbar
            z.B. http://localhost/
                 %SRVPATH%
        */
        var urlServer = "";
        /* Pfad vor der Datumsangabe - erforderlich
           Nur relativ! Angaben wie http:// --> Serverpfad
           z.B. default.php4?date=
        */
        var urlPathBeforeDate = "default.asp?Sprache=D&Thema=100003&Rubrik=0&Gruppe=0&Seite=0&Datum="; // URL ohne ID, welche nach dem Klicken auf ein Datum aufgerufen wird
        /* Pfad nach der Datumsangabe - optional
            Anwendung für weitere Parameter
            z.B. &sessionID=39057345
        */
        var urlPathAfterDate = ""
    
    // Formatierung des Datums
        /*  Beispiele:
            .  --> 10.12.2005
            :  --> 10:12:2005
            /  --> 10/12/2005
        */ 
        var dateFormatChar = "." 
        // Jahreszahl 2- oder 4stellig
        /* Mögliche Parameter
            short - 2-stellig
            full  - 4-stellig
        */
        var dateYearFormat = "full"
	// Montag - Freitag bzw.
	// Sonntag bis Samstag
	// Mo - Fr --> 1
	// So - Sa --> 0
	var weekMode = 1;
   // Anzeige des aktuellen Monates
        // Jahreszahl 2- oder 4stellig
        /* Mögliche Parameter
        short - 2-stellig
        full  - 4-stellig
        */
        var showYearFormat = "short"
   // Grafisches
        // Schriftfarbe der Tage des vorherigen Monates
        var colorLastMonthDays = "#999999"
        // Schriftfarbe der Tage des nächsten Monates
        var colorFollowMonthDays = "#999999"
        // Schriftfarbe der Wochenende
        var colorSatSunDays = "#415F7D"
        // Schriftfarbe der Werktage
        var colorMoUpToFrDays = "#415F7D"
        // Schriftfarbe des Linkes "Gehe zu >Heute<"
        var colorLinkGotoToday = "#7d91a5"
        // CSS Formatierung der angezeigten Tag nur aus diesem Monat
        // z.B. font-weight:bold für FETT
        var styleMonthDays = "font-weight:normal"
				// Gehe zu "Heute" aktivieren
				var boolGotoToday = 0
        // Highlight Farbe für den aktuellen Tag (HEUTE)
        var colorHighlightToday = "#ffffff"
        // Rücksetzen des markierten Tages (Highlight des spez. Tages HEUTE)
        // Hinweis: Dies ist nicht die Textfarbe, sondern die Hintergrundfarbe
        var colorResetHighlightToday = "#e9e9e9"
        
        /*
        / Titel & Navigation des Kalenders &
        / seine Tabelle
        */
        // Rahmen aktivieren
        var boolTitleNavCalTable = 0
        
        /* Kalender & seine Tabellen
        /  Hintergrund, Rahmen
        */
        // Breite der Tabelle
        var widthCalendarTables = 161

        // Rahmen des gesamten Kalenders
        // 0 - nein / 1 - ja
        var boolCalendar = 1
        
        // Äusserer Ramen und Trennlinie zwischen den
        // Wochentagsbezeichnungen sowie der Kalendertage
        var colorTable1 = "#415F7D"
        
        // Hintergrundfarbe des gesamten Kalenders
        var colorCalendarBackground = "#e9e9e9"

        // CSS Formatierung ganzer Kalender
        // z.B. border-style: inset, outset, etc
        var styleCalendar = "border-width: 0.8"
        
        // Rahmen der Wochentagsbezeichnungen
        // 0 - nein / 1 - ja
        var boolLabelLines = 0
        
        // Innenrahmen der Wochentagsbezeichnungen
        var colorLabelLines = "#FFFF00"
        
        // Rahmen der Kalendertage
        // 0 - nein / 1 - ja
        var boolCalendarDays = 1
        
        // Linien zwischen den Zeilen der Kalendertage
        var colorCalendarLines = "#b7b7a9"
        
        /*
        / Bilder
        */
        // Bilderordner
        var imgDir = "pict/div/"
        
        // Bild "Veranstaltungen"
        var imgEvents = "veranstaltungen.gif"
        
        // Bild "Zurück"
        var imgNavBack = "zurueck.gif"
            // Bildbreite
            var widthImgNavBack = 40
            // Rahmen
            var borderImgNavBack = 0
            //CSS Formatierung
            var styleImgNavBack = ""
        
        // Bild "Vorwärts"
        var imgNavNext = "vor.gif"
            // Bildbreite
            var widthImgNavNext = 40
            // Rahmen
            var borderImgNavNext = 0
            // CSS Formatierung
            var styleImgNavNext = ""

// ---------------------------------------------------------------------------
// Übernahme der Einstellungen
// ---------------------------------------------------------------------------
    // Überprüfung der Minimalanforderungen
    if(urlPathBeforeDate=="") {
        alert("Konfiguration unvollständig - urlPathBeforeDate fehlt");
    }
// ---------------------------------------------------------------------------

// Globale Variabeln
var arrM = new Array("jan","fév","mars","avril","mai","juin","juil","août","sept","oct","nov","déc")

var arrD;
	if (weekMode == 1)  {
		arrD = new Array("lun","mar","mer","jeu","ven","sam","dim");
	}
	else {
		arrD = new Array("dim","lun","mar","mer","jeu","ven","sam");
	}

// Deklaration, Definitionen der Zeitvariabeln
var now = new Date
var dd = now.getDate()
var mm = now.getMonth()
var dow = now.getDay()
var yyyy = now.getFullYear()
var selMonth = mm;
var selYear = yyyy;
var posToday;

// ---------------------------------------------------------------------------
// Funktionen
// ---------------------------------------------------------------------------
/*
/ Überprüfung wie viele Tage ein Monat hat
/ inkl. der Schaltjahre
*/
function maxDays(mm, yyyy){
var mDay;
	if((mm == 3) || (mm == 5) || (mm == 8) || (mm == 10)){
		mDay = 30;
  	}
  	else{
  		mDay = 31
  		if(mm == 1){
   			if (yyyy/4 - parseInt(yyyy/4) != 0){
   				mDay = 28
   			}
		   	else{
   				mDay = 29
  			}
		}
  }
return mDay;
}

/*
/ Funktion Schreibe Kalender
*/
function writeCalendar(){
var tmpCalendarLabelWidth = widthCalendarTables - widthImgNavBack - widthImgNavNext

var arrY = new Array()
	for (ii=0;ii<=4;ii++){
		arrY[ii] = yyyy - 2 + ii
	}

var text = "" // Diese Codezeile wird benötigt!
// Beginn Formular namens calForm
text += "<form name=calForm>"
    // Beginn Tabelle 1/1
    text += "<table border='"+boolTitleNavCalTable+"' cellspacing='0' cellpadding='0'>"
            //
            // Titel "Veranstaltungen"
            //
            text += "<tr>"
                text += "<td colspan='7'>"
                    text += "<a href='" + urlPathBeforeDate + "'>"
                    text += "<img src='"+imgDir+imgEvents+"' alt='Agenda' border='0'>"
                    text += "</a>"
                    //text += "Kulturelle Veranstaltungen"
                text += "</td>"
            text += "</tr>"
            
            //
            // Anzeige des Monats und die Funktion Zurück und Vorwärts
            //
            text += "<tr>"
                
    	        text += "<td align='left' height='30' width='"+widthImgNavBack+"'><a href='javascript:showPreviousMonth()'><img src='"+imgDir+imgNavBack+"' alt='' border='"+borderImgNavBack+"' style='"+styleImgNavBack+"'></a></td>"
    	        text += "<td align='center' height='30' id='spmm' width='"+tmpCalendarLabelWidth+"'>Monat Jahr</td>"
    	        text += "<td align='right' height='30' width='"+widthImgNavNext+"'><a href='javascript:showNextMonth()'><img src='"+imgDir+imgNavNext+"' alt='' border='"+borderImgNavNext+"' style='"+styleImgNavNext+"' align='right'></a></td>"
    	        
    	        //text += "<td align='center' id='spmm'><a href='javascript:showPreviousMonth()'><img src='"+imgDir+imgNavBack+"' alt='' border='"+borderImgNavBack+"' style='"+styleImgNavBack+"' align='left'></a><a href='javascript:showNextMonth()'><img src='"+imgDir+imgNavNext+"' alt='' border='"+borderImgNavNext+"' style='"+styleImgNavNext+"' align='right'></a></td>"
            text += "</tr>"
        text += "</table>"
        
        // Beginn Kalender-Haupttabelle
        text += "<table border='"+boolCalendar+"' rules='groups' bgcolor='"+colorCalendarBackground+"' bordercolor='"+colorTable1+"' cellpadding='0' cellspacing='0' width='"+widthCalendarTables+"' style='"+styleCalendar+"'>"
            // Abschnitt Head der Haupt-Tabelle Kalender
    	    text += "<thead>"
                text += "<tr>"
    	            text += "<td>"
    	                // Beginn Sub-Tabelle Wochentage
    	                text += "<table border='"+boolLabelLines+"' bordercolor='"+colorLabelLines+"' cellpadding='0' cellspacing='0' rules='rows' width='"+widthCalendarTables+"'>"
        // 
        // Bezeichnungen der Wochentage
        //
        text += "<tr>"
	        for (ii=0;ii<=6;ii++){
		    text += "<td width='30'><span class='foot1'>" + arrD[ii] + "</span></td>"
	        }
        text += "</tr>"
                     // Ende Sub-Tabelle Wochentage
                     text += "</table>"
		        text += "</td>"
		    text += "</tr>"
	    text += "</thead>"
	    // Abschnitt Body der Haupt-Tabelle Kalender
	    text += "<tbody>"
		    text += "<tr>"
		        text += "<td>"
		            // Beginn Sub-Tabelle Kalendertage
		            text += "<table border='"+boolCalendarDays+"' bordercolor='"+colorCalendarLines+"' width='"+widthCalendarTables+"' cellpadding='0' cellspacing='0' rules='rows' frame='void'>"
         //
        // Felder des Kalender füllen und mit einer ID registrieren
        //
        text += "<tr>"
            forZahl0 = 0
        	for (forZahl1=0;forZahl1<=5;forZahl1++){
        		for (forZahl2=0;forZahl2<=6;forZahl2++){
        			text += "<td align='center'><span id=sp"+forZahl0+" onClick=''>[]</span></td>"
        			forZahl0 += 1
        		}
        		text += "</tr>"
        	}
            text += "</td>" // ==> Evtl. unnötig???
        text += "</tr>"
        
                        // Ende Sub-Tabelle Kalendertage
                        text += "</table>"
    		        text += "</td>"
    		    text += "</tr>"
    	    text += "</tbody>"
	    // Ende Haupt-Tabelle Kalender
        text += "</table>"

        //
        //
        //
        
        //text += "<a href='http://www.stadt.winterthur.ch/defaultAgenda.asp?Sprache=D&Gruppe=0&Thema=100003&Rubrik=0&Seite=0'>&raquo;&raquo;&nbsp;Weitere Veranstaltungen</a>"
        
        //
        // Möglichkeit auf "Heute" zurückzukehren
        //
				if (boolGotoToday == 1) {
	        text += "<span class='calendarSmallText'><a href='javascript:getCalToday()'><font color='"+colorLinkGotoToday+"'>Gehe zu &raquo;Heute&laquo;</font></a></span>"
				}
        
	        
// Ende Formular namens calForm
text += "</form>"

// Schreibe Tabelle
document.write(text)

// Aktualiesere den Kalender und fülle ihn mit Daten
changeCal()
}
/* ---------------------------------------------------------------------------
/ Funktion, um den Kalender mit Daten zu füllen/zu aktualisieren
/ -------------------------------------------------------------------------- */
function changeCal(){
    // Variabelndeklarationen, -definitionen
    var arrN = new Array(41)
    var aa
    var dCount = 0
    var tmpMonth
    var tmpDay
    var tmpYear
    var tmpShowYear

    // Neuer Kalender erstellen
        // Variablendeklaration, -definition    
        var curDate = new Date()
        curDate.setFullYear(selYear)
        curDate.setMonth(selMonth)
        curDate.setDate(1)
        var day1;
		if (weekMode == 1) {
			day1 = curDate.getDay() - 1;
		}
		else {
			day1 = curDate.getDay();
		}
		if (day1 < 0)
		{
			day1 = 7 - Math.abs(day1);
		}
        var prevM
        
        // Ermittle den letzten Monat (ALS EIGENE FUNKTION EXTRAHIEREN)
        if (selMonth!=0){
            prevM = selMonth - 1
        }
        else{
            prevM = 11
        }
    
    	/*if (day1 == 0){
    		day1 = 7
    	}*/
    
        // Ermittle Tage des vorherigen Monates, welche anzuzeigen sind
    	for (forZahl0=0;forZahl0<day1;forZahl0++){
    		arrN[forZahl0] = maxDays((prevM),selYear) - day1 + forZahl0 + 1
    	}
    	
    	// Ermittle alle Tage im aktuell anzuzeigenden Monat
    	forZahl0 = 1
    	for (forZahl1=day1;forZahl1<=day1+maxDays(selMonth,selYear)-1;forZahl1++){
    		arrN[forZahl1] = forZahl0
    		forZahl0 += 1
    	}
    	
    	// Ermittle die Tage im folgenden Monat, welche auch in diesem anzuzeigen sind
    	forZahl0 = 1
    	for (forZahl1=day1+maxDays(selMonth,selYear);forZahl1<=41;forZahl1++){
    		arrN[forZahl1] = forZahl0
    		forZahl0 += 1
    	}
    	
    	// Bei allen Kalendertagen eine Eigenschaft ändern
    	for (forZahl0=0;forZahl0<=41;forZahl0++){
    		//eval("sp"+ii).style.backgroundColor = "#FF0000"
    	}

    // Aktualisierung der Kalendertage mit Hilfe von innerHTML
    		//
            // Formatierung des Datums >Monat/Jahr
            // für den Hyperlink auf dem einzelnen Tag im Kalender
            //
            if (dateYearFormat == "short") {
                tmpYear =   selYear.toString().substr(2,2) 
            }
            else {
                tmpYear = selYear
            }
            
            if (showYearFormat == "short") {
                tmpShowYear = selYear.toString().substr(2,2)
            }
            else {
                tmpShowYear = selYear    
            }
            
            tmpMonth = selMonth
            tmpMonth++
            if(selMonth < 9) {
                tmpMonth = "0" + tmpMonth; // Monate 0-11
            }
            
	for (ii=0;ii<=41;ii++){
		if (((ii<7)&&(arrN[ii]>20))||((ii>27)&&(arrN[ii]<20))){
		   // Alle Tage, die nicht von diesem Monat sind
		   if (ii>7) {
		   	  eval("sp"+ii).innerHTML = "<a href='javascript:showNextMonth()'><span class='foot'><font color='"+colorLastMonthDays+"'>"+arrN[ii]+"</font></span></a>"
		   }
		   else {
		   	  eval("sp"+ii).innerHTML = "<a href='javascript:showPreviousMonth()'><span class='foot'><font color='"+colorFollowMonthDays+"'>"+arrN[ii]+"</font></span></a>"
		   }
		    
		}
		else{
		    //
            // Formatierung des Datums
            // für den Hyperlink auf dem einzelnen Tag im Kalender
            //
			if (ii>9) {
			   tmpDay = arrN[ii];
			}
			else {
			   tmpDay = "0"+arrN[ii];
			}
			
			// Aktueller Verlinkungspfad aufbereiten
			tmpHREF = urlServer+urlPathBeforeDate+tmpDay+dateFormatChar+tmpMonth+dateFormatChar+tmpYear
			
			//
			// Beschriftung/Verlinkung der Wochenenden
			//
			// alert("sp"+ii);
			if ((dCount==0)||(dCount==6)){
			   eval("sp"+ii).innerHTML = "<a href='"+tmpHREF+"'><span class='foot'><font color='"+colorSatSunDays+"' style='"+styleMonthDays+"'>"+arrN[ii]+"</font></span></a>"
			}
			else{
			   eval("sp"+ii).innerHTML = "<a href='"+tmpHREF+"'><span class='foot'><font color='"+colorMoUpToFrDays+"' style='"+styleMonthDays+"'>"+arrN[ii]+"</font></span></a>"
			}
			
			//
			// Beschriftung/Verlinkung - Spezieller Tag: HEUTE
			//
			if ((arrN[ii]==dd)&&(mm==selMonth)&&(yyyy==selYear)){
				eval("sp"+ii).style.backgroundColor=colorHighlightToday
				// Aktuelle Position speichern (Aktueller Tag in der 2D Matrix)
				posToday = ii;
			}
		}
		
	    dCount += 1
		if (dCount>6){
			dCount=0
		}
	}
	
	// Monatsbezeichnung aktualisieren
    eval("spmm").innerHTML = "<span class='Title2'>"+arrM[selMonth]+" "+tmpShowYear+"</span>"
    // alert(arrM[selMonth]+" "+tmpYear)
}

/*
/ Funktion, um den nächsten Monat zu ermitteln
*/
function nextMonth() {
		 if (selMonth == 11){
		 	selMonth = 0;
			selYear++;
		 }
		 else {
		 	selMonth++;
		 }
}

/*
/ Funktion, um den nächsten Monat anzuzeigen
*/
function showNextMonth() {
    nextMonth();
    changeCal();
    highlightToday();
}

/*
/ Funktion, um den vorherigen Monat zu ermitteln
*/
function previousMonth() {
		 if (selMonth == 0){
		 	selMonth = 11;
			selYear--;
		 }
		 else {
		 	selMonth--;
		 }
}

/*
/ Funktion, um den vorherigen Monat anzuzeigen
*/
function showPreviousMonth() {
    previousMonth();
    changeCal();
    highlightToday();
}

/*
/ Funktion, um den heutigen Tag im Kalender zu markieren
*/
function highlightToday() {
    // Überpfüung, ob der Monat und das Jahr angezeigt wird
    // in welchem auch das heutige Datum liegt
	if(mm == selMonth & yyyy == selYear) {
	    // Das heutige Datum kann markiert werden (Highlight)
		eval("sp"+posToday).style.backgroundColor=colorHighlightToday
	}
	else {
	    // Das heutige Datum kann nicht markiert werden
	    // und die vorherige Markierung wird rückgängig gemacht
		eval("sp"+posToday).style.backgroundColor=colorResetHighlightToday
	}
}

/*
/ Funktion, um zum heutigen Tag im Kalender zu wechseln
*/
function getCalToday() {
	selMonth = mm;
	selYear = yyyy;
	changeCal();
	highlightToday();
}