function calendarClass(month, year, daysInMonth, firstWeekday, onclickFunction, days, suffix) { this.__construct(month, year, daysInMonth, firstWeekday, onclickFunction, days, suffix); } /** * @var integer Die Anzahl der Tage im Monat. */ calendarClass.prototype.daysInMonth = 31; /** * @var integer Der erste Wochentag im Monat. */ calendarClass.prototype.firstWeekday = 1; /** * @var string Die Funktion, die beim Klick auf einen Tag aufgerufen wird. */ calendarClass.prototype.onclickFunction = 'void'; /** * @var array Array für Tage mit besonderer Klasse und / oder extra Parameter * beim Funktionsaufruf. */ calendarClass.prototype.days = Array(); /** * @var string Das Suffix für die Ids. */ calendarClass.prototype.suffix = ''; /** * Erstellt ein HTML Element für einen Tag und liefert es zurück. * * @param string text Der Text des Elementes. * @param string className Der Name der CSS Klasse. * @param string param Der optionale Parameter für die onclick Funktion. * * @return object Das HTML Element. */ calendarClass.prototype.createDay = function (text, className, param) { var textNode = document.createTextNode(text); var day = document.createElement('a'); day.appendChild(textNode); day.setAttribute('href', '#'); if (typeof className != 'undefined') { day.setAttribute('className', className); day.setAttribute('class', className); } if (this.onclickFunction != '' && text != '') { var attribute = 'javascript: ' + this.onclickFunction + '(document.getElementById(\'calendarYear' + this.suffix + '\').value, document.getElementById(\'calendarMonth' + this.suffix + '\').value, ' + text; if (typeof param != 'undefined') { attribute += ', \'' + param + '\''; } attribute += ')'; day.setAttribute('href', attribute); } return day; } /** * Erstellt den Kalender. * * @param integer year Das Jahr für den Kalender. * @param integer month Der Monat für den Kalender. * @param integer daysInMonth Die Anzahl der Tage im Monat. * @param integer firstWeekday Der erste Wochentag im Monat. * @param string onclickFunction Die Funktion, die beim Klick auf einen Tag * aufgerufen wird. * @param array days Die Tage mit extra Klasse/Parameter. * @param string suffix Das Suffix für die Ids. */ calendarClass.prototype.__construct = function (year, month, daysInMonth, firstWeekday, onclickFunction, days, suffix) { this.daysInMonth = daysInMonth; this.firstWeekday = firstWeekday; this.onclickFunction = onclickFunction; this.days = days; this.suffix = suffix; if (this.firstWeekday != 0) { for (var i = 1; i < this.firstWeekday; i++) { document.getElementById('calendarDays' + this.suffix).appendChild(this.createDay('', 'calendarEmpty')); } } var className = ''; var param = ''; for (i = 1; i <= this.daysInMonth; i++) { if ((i + this.firstWeekday - 1) % 7 == 0) { className = 'calendarWeekend'; } else { className = void(0); } param = void(0); if (typeof this.days[i] != 'undefined') { if (typeof this.days[i]['className'] != 'undefined') { className = this.days[i]['className']; } if (typeof this.days[i]['param'] != 'undefined') { param = this.days[i]['param']; } } document.getElementById('calendarDays' + this.suffix).appendChild(this.createDay(i, className, param)); } }