var xmlHttp = false;
var sDate;
// ---------------------------------------------------------------------
function createCalendar()
{
   var sHTML;
   var i;

   // Tabellen-Code zusammenstellen
   sHTML = '<table class="cal" style="margin:0px auto;">';
   sHTML += '<tr><td id="calHead1">'
   sHTML += '<a href="" class="callink">&lt;</a></td>';
   sHTML += '<td id="calHead2" colspan="5"></td>';
   sHTML += '<td id="calHead3">'
   sHTML += '<a href="" class="callink">&gt;</a></td></tr>';
   
   sHTML += '<tr>';
   sHTML += '<td>Mo</td>'
   sHTML += '<td>Di</td>'
   sHTML += '<td>Mi</td>'
   sHTML += '<td>Do</td>'
   sHTML += '<td>Fr</td>'
   sHTML += '<td>Sa</td>'
   sHTML += '<td>So</td>'

   sHTML += '</tr>';
   
   sHTML += '<tr>';
   // Tabelle mit 6 Zeilen und 7 Spalten erstellen
   for(i = 1; i <= 42; i++) {

      sHTML += '<td class="caltr" id="calCell' + i + '">&nbsp;</td>';

      // Umbruch nach jeder 7. Zelle
      if(i==7 || i==14 || i==21 || i==28 || i==35) {
         sHTML += '</tr><tr>'; }
      }

      sHTML += '</tr></table>';

   // Kalender ausgeben
   document.write(sHTML);
}

// ---------------------------------------------------------------------
function getCalendar(iMonth, iYear, izeitsort, istylesort, idatumsort, iregionsort)
{ 
  var tempzeitsort = izeitsort;
  var tempstylesort = istylesort;
  var tempdatumsort = idatumsort;
  var tempregionsort = iregionsort;
   
   // aktuelles Datum in Variable speichern
   sDate = new Date(); 

   // wenn Parameter leer, dann aktuellen Monat verwenden
   if (iMonth == null) {
   iMonth = sDate.getMonth();
   iYear = sDate.getFullYear(); }
 	
   // Mozilla und Co.
   if (window.XMLHttpRequest) {
      xmlHttp = new XMLHttpRequest(); } 
   // IE
   else if (window.ActiveXObject) {
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } 
   else {
      // Falls nicht unterstützt
      xmlHttp = false; }

   // URL zusammenstellen und Inhalt über GET asynchron holen
   //var sXMLUrl = 'http://meinserver/contentcount.asp?m=' + (iMonth + 1) + '&y=' + iYear;
   //var sXMLUrl = './js/kalender.xml?dummy=" + new Date().getTime()"';
   var dummydatum = new Date().getTime();
   var sXMLUrl = "events_kalender_xml.php?dummy=" + dummydatum + "&zeitsort=" + tempzeitsort + "&stylesort=" + tempstylesort + "&regionsort=" + tempregionsort + "&m=" + (iMonth + 1) + "&y=" + iYear;
   xmlHttp.open("GET", sXMLUrl, true);
   xmlHttp.onreadystatechange = function() {

      // Objekt meldet "loaded"
      if (xmlHttp.readyState == 4) {
         // Objekt meldet "OK"
         if (xmlHttp.status == 200) {
            // Funktion zum Füllen der Tabelle ausführen
		   fillCalendar(iMonth, iYear, tempzeitsort, tempstylesort, tempdatumsort, tempregionsort); }
      }
   }

   xmlHttp.send(null); 
}

// ---------------------------------------------------------------------
function fillCalendar(iMonth, iYear, izeitsort, istylesort, idatumsort, iregionsort)
{
  var tempzeitsort = izeitsort;
  var tempstylesort = istylesort;
  var tempdatumsort = idatumsort;
  var tempregionsort = iregionsort;
   
  // Monats-Array bilden
   var aMonths = new Array(
      'Jan.', 'Febr.', 'Mär.', 'Apr.', 
      'Mai', 'Jun.', 'Jul.', 'Aug.', 
      'Sep.', 'Okt.', 'Nov.', 'Dez.');

   // Monate ermitteln
   var iThisMonth = new Date(iYear, iMonth, 1);
   var iPrevMonth = new Date(iYear, iMonth - 1, 1);
   var iNextMonth = new Date(iYear, iMonth + 1, 1);

   // Erster Wochentag und Anzahl Tage/Monat ermitteln
   var iFirstWeekday = iThisMonth.getDay();
   if (iFirstWeekday == 0) iFirstWeekday = 7;
   var iDaysInMonth = Math.floor((iNextMonth.getTime() 
      - iThisMonth.getTime()) / (1000 * 60 * 60 * 24));
   
   // Link zu vorherigem Monat
   var sPrev = '<a href="javascript: getCalendar(' 
      + iPrevMonth.getMonth() + ',' 
      + iPrevMonth.getFullYear() + ','+ tempzeitsort + ',\''
	  + tempstylesort + '\',\''
	  + tempdatumsort + '\',\''
	  + tempregionsort + '\')" class="callink">&lt;</a>';
   hItem = document.getElementById("calHead1")
   hItem.innerHTML = sPrev;

   // Überschrift aus Monats-Array
   hItem = document.getElementById("calHead2")
   hItem.innerHTML = aMonths[iMonth] + ' ' + iYear;

   // Link zu nächstem Monat
   var sNext = '<a href="javascript: getCalendar('
      + iNextMonth.getMonth() + ',' 
      + iNextMonth.getFullYear() + ','
	  + tempzeitsort + ',\'' + tempstylesort + '\',\''
	  + tempdatumsort + '\',\''
	  + tempregionsort + '\')" class="callink">&gt;</a>';
   hItem = document.getElementById("calHead3")
   hItem.innerHTML = sNext;
   
   // Leere Tage am Anfang auffüllen
   for(iCellId=1; iCellId < iFirstWeekday; iCellId++) { 
      hItem = document.getElementById("calCell" + iCellId);
      hItem.innerHTML = '&nbsp;'; }
   
   // XML-Objekt initialisieren
   var xmlDok = xmlHttp.responseXML;

   // Variable initialieren
   var iCellDay=1;

  // Schleife über alle Tage des Monats
  for(iCellId = iFirstWeekday; iCellDay <= iDaysInMonth; iCellId++) {

      // Anzahl Beiträge aus XML ermitteln
      iItemCount = xmlDok.getElementsByTagName("day")
         [iCellDay - 1].firstChild.nodeValue;

      // Zellinhalt bestimmen (Link auf Beiträge oder nicht)
      if (iItemCount == 0) {
         sDayHTML = iCellDay; }
      else {  
		 // Einstelliger Tag mit Vornull ergänzen
		 if (iCellDay<10){
			var sDayString = "0" + iCellDay + "-";
		 }
		 else {
		 	var sDayString = iCellDay + "-";
		 }
		 // Einstelliger Monat mit Vornull ergänzen
		 if ((iMonth + 1)<10){
			sDayString = sDayString + "0" + (iMonth + 1) + "-" + iYear;
		 }
		 else{
			sDayString = sDayString + (iMonth + 1) + "-" + iYear; 
		 }
		 
         sDayHTML = '<a href="#' + sDayString + '" class="callink">' + iCellDay + '</a>';
	  }
      // Zellinhalt zuweisen
      hItem = document.getElementById("calCell" + iCellId)
      hItem.innerHTML = sDayHTML; 

      iCellDay++;
   }

   // Leere Tage am Ende auffüllen
   for(iCellId; iCellId <= 42; iCellId++) {
   hItem = document.getElementById("calCell" + iCellId)
   hItem.innerHTML = '&nbsp;'; }
}
   
