function calendar(date,Feldname,Anzeige) {
	if (Anzeige == null) {
		Anzeige = "kalender"
	}
    //Bei Uebergabe ohne Parameter das heutige Datum verwenden.
    if(date == null) {
        date = new Date();
    } else {
        date = new Date(date);
    }


    day = date.getDate();
    month = date.getMonth();
    year = date.getFullYear();

    heute = new Date();
    akt_day = heute.getDate();
    akt_month = heute.getMonth();
    akt_year = heute.getFullYear();

    // Monatsnamen fuer die Anzeige (months) und fuer die Uebergabe (months_link) definieren.
    months = new Array('Januar','Februar','Maerz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
    months_link = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');

    this_month = new Date(year, month, 1);
    next_month = new Date(year, month + 1, 1);

    if (month == 11) {
        next_month_link = months_link[0];
        next_year_link = year + 1;
    } else {
        next_month_link = months_link[this_month.getMonth()+1];
        next_year_link = year;
    }
         
    if (month == 0) {
        previous_month_link = months_link[11];
        previous_year_link = year - 1;
    } else {
      previous_month_link = months_link[this_month.getMonth()-1];
        previous_year_link = year;
    }
  
    //Ersten und Letzten Tag des Monats ermitteln.         
    first_week_day = this_month.getDay();
    days_in_this_month = Math.round((next_month.getTime() - this_month.getTime()) / (1000 * 60 * 60 * 24));


    //Kalenderkopf ausgeben.
    calendar_html = '<table style="background-color:#fff;" border="1" width="116px" cellspacing="0" cellpadding="0">';
    calendar_html += '  <tr>';
    calendar_html += '    <td colspan="7">';
    calendar_html += '        <select id="monthselect" style="font-size: 7pt; width: 58px;" onchange="calendaryearchange(' + unescape("%27") + Feldname + unescape("%27") + ',' + unescape("%27") + Anzeige + unescape("%27") + ')">';
    for (changemonth = 0; changemonth <= 11; changemonth++) {
    	calendar_html += '			<option value="' + changemonth + '"';
		if (changemonth == month) {
			calendar_html += ' selected';
		}
    	calendar_html += '>' + months[changemonth] + '</option>';
    }

	calendar_html += '</select> ';
    calendar_html += '        <select id="yearselect" style="font-size: 7pt;" onchange="calendaryearchange(' + unescape("%27") + Feldname + unescape("%27") + ',' + unescape("%27") + Anzeige + unescape("%27") + ')">';

    firstchangeyear = 2010;
    lastchangeyear = 2020;
    for (changeyear = firstchangeyear; changeyear < lastchangeyear; changeyear++) {
    	calendar_html += '			<option value="' + changeyear + '"';
		if (changeyear == year) {
			calendar_html += ' selected';
		}
    	calendar_html += '>' + changeyear + '</option>';
    }
    
    calendar_html += '</select></td>';
   // calendar_html += '    <td  class="calendar_months"><a style="color:#fff;" href="javascript: calendar(\'' + '1 ' + next_month_link + ' ' + next_year_link + '\',\'' + Feldname + '\',\'' + Anzeige + '\')">&gt;</a></td>';
    calendar_html += '  </tr>';
    calendar_html += '  <tr>';
    calendar_html += '    <td class="calendar_wochentage">So</td>';
    calendar_html += '    <td class="calendar_wochentage">Mo</td>';
    calendar_html += '    <td class="calendar_wochentage">Di</td>';
    calendar_html += '    <td class="calendar_wochentage">Mi</td>';
    calendar_html += '    <td class="calendar_wochentage">Do</td>';
    calendar_html += '    <td class="calendar_wochentage">Fr</td>';
    calendar_html += '    <td class="calendar_wochentage">Sa</td>';
    calendar_html += '  </tr>'
    calendar_html += '  <tr>';
                  
    //Fehlende Wochentage am Monatsanfang mit Leerzellen auffuellen.       
    for(week_day = 0; week_day < first_week_day; week_day++) {
      calendar_html += '<td class="calendar_tage" >&nbsp;</td>';   
    }

    week_day = first_week_day;
    for(day_counter = 1; day_counter <= days_in_this_month; day_counter++) {
        week_day %= 7;
        if(week_day == 0) {
            calendar_html += '</tr><tr>';
        }

        //Den heutigen Tag mit Rahmen anzeigen.
        if((heute.getDate() == day_counter) && (month == akt_month) && (year == akt_year)) {
            calendar_html += '<td class="calendar_tage" align="center" style="border: 1px solid #ff0000; cursor: pointer;" onclick="javascript: document.getElementById(' + unescape("%27") + Feldname + unescape("%27") + ').value=' + unescape("%27") + day_counter + '.' + (month + 1) + '.' + year + unescape("%27") + '; ">' + day_counter + '</td>';
        } else {
            calendar_html += '<td class="calendar_tage" align="center" style="border: 1px solid #e0e0e0; cursor: pointer;" onclick="javascript: document.getElementById(' + unescape("%27") + Feldname  + unescape("%27") + ').value=' + unescape("%27") + day_counter + '.' + (month + 1) + '.' + year + unescape("%27") + '; ">' + day_counter + '</td>';
        }

        week_day++;
    }

    calendar_html += '</tr>';
    calendar_html += '</table>';

    //Kalender anzeigen. 
    document.getElementById(Anzeige).innerHTML = calendar_html;                  
}

function calendaryearchange(Feldname,Anzeige) {
	newyear = document.getElementById("yearselect").value;
	newmonth = document.getElementById("monthselect").value;
    months_link = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
	newdatelink = '1 ' + months_link[newmonth] + ' ' + newyear;
	calendar(newdatelink,Feldname,Anzeige);
}



///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function calendar2(date,Feldname,Anzeige) {
	if (Anzeige == null) {
		Anzeige = "kalender2"
	}
    //Bei Uebergabe ohne Parameter das heutige Datum verwenden.
    if(date == null) {
        date = new Date();
    } else {
        date = new Date(date);
    }


    day = date.getDate();
    month = date.getMonth();
    year = date.getFullYear();

    heute = new Date();
    akt_day = heute.getDate();
    akt_month = heute.getMonth();
    akt_year = heute.getFullYear();

    // Monatsnamen fuer die Anzeige (months) und fuer die Uebergabe (months_link) definieren.
    months = new Array('Januar','Februar','Maerz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
    months_link = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');

    this_month = new Date(year, month, 1);
    next_month = new Date(year, month + 1, 1);

    if (month == 11) {
        next_month_link = months_link[0];
        next_year_link = year + 1;
    } else {
        next_month_link = months_link[this_month.getMonth()+1];
        next_year_link = year;
    }
         
    if (month == 0) {
        previous_month_link = months_link[11];
        previous_year_link = year - 1;
    } else {
      previous_month_link = months_link[this_month.getMonth()-1];
        previous_year_link = year;
    }
  
    //Ersten und Letzten Tag des Monats ermitteln.         
    first_week_day = this_month.getDay();
    days_in_this_month = Math.round((next_month.getTime() - this_month.getTime()) / (1000 * 60 * 60 * 24));


    //Kalenderkopf ausgeben.
    calendar_html = '<table style="background-color:#fff;" border="1" width="116px" cellspacing="0" cellpadding="0">';
    calendar_html += '  <tr>';
   // calendar_html += '    <td class="calendar_months"><a style="color:#fff;" href="javascript: calendar(\'' + '1 ' + previous_month_link + ' ' + previous_year_link + '\',\'' + Feldname +'\',\'' + Anzeige + '\')">&lt;</a></td>';
    calendar_html += '    <td colspan="7">';
    calendar_html += '        <select id="monthselect2" style="font-size: 7pt; width:58px;" onchange="calendaryearchange2(' + unescape("%27") + Feldname + unescape("%27") + ',' + unescape("%27") + Anzeige + unescape("%27") + ')">';
    for (changemonth = 0; changemonth <= 11; changemonth++) {
    	calendar_html += '			<option value="' + changemonth + '"';
		if (changemonth == month) {
			calendar_html += ' selected';
		}
    	calendar_html += '>' + months[changemonth] + '</option>';
    }

	calendar_html += '</select> ';
    calendar_html += '        <select id="yearselect2" style="font-size: 7pt;" onchange="calendaryearchange2(' + unescape("%27") + Feldname + unescape("%27") + ',' + unescape("%27") + Anzeige + unescape("%27") + ')">';

    firstchangeyear = 2010;
    lastchangeyear = 2020;
    for (changeyear = firstchangeyear; changeyear < lastchangeyear; changeyear++) {
    	calendar_html += '			<option value="' + changeyear + '"';
		if (changeyear == year) {
			calendar_html += ' selected';
		}
    	calendar_html += '>' + changeyear + '</option>';
    }
    
    calendar_html += '</select></td>';
   // calendar_html += '    <td  class="calendar_months"><a style="color:#fff;" href="javascript: calendar(\'' + '1 ' + next_month_link + ' ' + next_year_link + '\',\'' + Feldname + '\',\'' + Anzeige + '\')">&gt;</a></td>';
    calendar_html += '  </tr>';
    calendar_html += '  <tr>';
    calendar_html += '    <td class="calendar_wochentage">So</td>';
    calendar_html += '    <td class="calendar_wochentage">Mo</td>';
    calendar_html += '    <td class="calendar_wochentage">Di</td>';
    calendar_html += '    <td class="calendar_wochentage">Mi</td>';
    calendar_html += '    <td class="calendar_wochentage">Do</td>';
    calendar_html += '    <td class="calendar_wochentage">Fr</td>';
    calendar_html += '    <td class="calendar_wochentage">Sa</td>';
    calendar_html += '  </tr>'
    calendar_html += '  <tr>';
                  
    //Fehlende Wochentage am Monatsanfang mit Leerzellen auffuellen.       
    for(week_day = 0; week_day < first_week_day; week_day++) {
      calendar_html += '<td class="calendar_tage">&nbsp;</td>';   
    }

    week_day = first_week_day;
    for(day_counter = 1; day_counter <= days_in_this_month; day_counter++) {
        week_day %= 7;
        if(week_day == 0) {
            calendar_html += '</tr><tr>';
        }

        //Den heutigen Tag mit Rahmen anzeigen.
        if((heute.getDate() == day_counter) && (month == akt_month) && (year == akt_year)) {
            calendar_html += '<td class="calendar_tage"  align="center" style="bborder: 1px solid #ff0000; cursor: pointer;" onclick="javascript: document.getElementById(' + unescape("%27") + Feldname + unescape("%27") + ').value=' + unescape("%27") + day_counter + '.' + (month + 1) + '.' + year + unescape("%27") + '; ">' + day_counter + '</td>';
        } else {
            calendar_html += '<td class="calendar_tage"  align="center" style="border: 1px solid #e0e0e0; cursor: pointer;" onclick="javascript: document.getElementById(' + unescape("%27") + Feldname  + unescape("%27") + ').value=' + unescape("%27") + day_counter + '.' + (month + 1) + '.' + year + unescape("%27") + '; ">' + day_counter + '</td>';
        }

        week_day++;
    }

    calendar_html += '</tr>';
    calendar_html += '</table>';

    //Kalender anzeigen. 
    document.getElementById(Anzeige).innerHTML = calendar_html;                  
}

function calendaryearchange2(Feldname,Anzeige) {
	newyear = document.getElementById("yearselect2").value;
	newmonth = document.getElementById("monthselect2").value;
    months_link = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
	newdatelink = '1 ' + months_link[newmonth] + ' ' + newyear;
	calendar2(newdatelink,Feldname,Anzeige);
}








