


function enhanceDate(event) {
    var sValue = this.value;
    if (sValue == "")
        return;
    var tDate = $D.getDate(sValue);
    if (tDate !== null)
        this.value = getDateString(tDate);
}

function getDateString(tDate) {
    if (tDate === null)
        return "";
    var sDate = "";
    var sTmp = new String(tDate.getDate());
    sTmp = sTmp.length == 1 ? "0" + sTmp : sTmp;
    sDate += sTmp + ".";
    sTmp = new String(tDate.getMonth() + 1);
    sTmp = sTmp.length == 1 ? "0" + sTmp : sTmp;
    sDate += sTmp + ".";
    sTmp = tDate.getYear();
    sTmp = sTmp <= 1000 ? sTmp + 1900 : sTmp;
    sDate += sTmp;
    return sDate;
}

/**
* Patch fuer den Datepicker der Version 1.7.2. (damit der Calender ggf. nicht innerhalb des Screens neu platziert wird
* und das Input-Feld verdecken koennte)
**/
function patchDatepicker() {
    (function ($) {
        
        $.datepicker._checkOffset = function(inst, offset, isFixed) {
            var dpWidth = inst.dpDiv.outerWidth();
            var dpHeight = inst.dpDiv.outerHeight();
            var inputWidth = inst.input ? inst.input.outerWidth() : 0;
            var inputHeight = inst.input ? inst.input.outerHeight() : 0;
            var viewWidth = (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth) + $(document).scrollLeft();
            var viewHeight = (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight) + $(document).scrollTop();

            offset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0);
            offset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0;
            offset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;

            return offset;
        };

        
        $.datepicker._selectDay = function(id, month, year, td) {
            
            var target = $(document.getElementById(id.substr(1))); // Erst ab 1, weil bei 0 ein "#" ist, das wir nicht brauchen koennen
            if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {
                return;
            }
            var inst = this._getInst(target[0]);
            inst.selectedDay = inst.currentDay = $('a', td).html();
            inst.selectedMonth = inst.currentMonth = month;
            inst.selectedYear = inst.currentYear = year;
            if (inst.stayOpen) {
                inst.endDay = inst.endMonth = inst.endYear = null;
            }
            this._selectDate(id, this._formatDate(inst,
                inst.currentDay, inst.currentMonth, inst.currentYear));
            if (inst.stayOpen) {
                inst.rangeStart = this._daylightSavingAdjust(
                    new Date(inst.currentYear, inst.currentMonth, inst.currentDay));
                this._updateDatepicker(inst);
            }
        };
        $.datepicker._selectDate = function(id, dateStr) {
            var target = $(document.getElementById(id.substr(1))); // Erst ab 1, weil bei 0 ein "#" ist, das wir nicht brauchen koennen
            var inst = this._getInst(target[0]);
            dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
            if (inst.input)
                inst.input.val(dateStr);
            this._updateAlternate(inst);
            var onSelect = this._get(inst, 'onSelect');
            if (onSelect)
                onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);  // trigger custom callback
            else if (inst.input)
                inst.input.trigger('change'); // fire the change event
            if (inst.inline)
                this._updateDatepicker(inst);
            else if (!inst.stayOpen) {
                this._hideDatepicker(null, this._get(inst, 'duration'));
                this._lastInput = inst.input[0];
                if (typeof(inst.input[0]) != 'object')
                    inst.input[0].focus(); // restore focus
                this._lastInput = null;
          }
        };
        $.datepicker._adjustDate = function(id, offset, period) {
            var target = $(document.getElementById(id.substr(1))); // Erst ab 1, weil bei 0 ein "#" ist, das wir nicht brauchen koennen
            var inst = this._getInst(target[0]);
            if (this._isDisabledDatepicker(target[0])) {
                return;
            }
            this._adjustInstDate(inst, offset +
                (period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), // undo positioning
                period);
            this._updateDatepicker(inst);
        };
        $.datepicker._gotoToday = function(id) {
            var target = $(document.getElementById(id.substr(1))); // Erst ab 1, weil bei 0 ein "#" ist, das wir nicht brauchen koennen
            var inst = this._getInst(target[0]);
            if (this._get(inst, 'gotoCurrent') && inst.currentDay) {
                inst.selectedDay = inst.currentDay;
                inst.drawMonth = inst.selectedMonth = inst.currentMonth;
                inst.drawYear = inst.selectedYear = inst.currentYear;
            }
            else {
            var date = new Date();
            inst.selectedDay = date.getDate();
            inst.drawMonth = inst.selectedMonth = date.getMonth();
            inst.drawYear = inst.selectedYear = date.getFullYear();
            }
            this._notifyChange(inst);
            this._adjustDate(target);
        };
        $.datepicker._selectMonthYear = function(id, select, period) {
            var target = $(document.getElementById(id.substr(1))); // Erst ab 1, weil bei 0 ein "#" ist, das wir nicht brauchen koennen
            var inst = this._getInst(target[0]);
            inst._selectingMonthYear = false;
            inst['selected' + (period == 'M' ? 'Month' : 'Year')] =
            inst['draw' + (period == 'M' ? 'Month' : 'Year')] =
                parseInt(select.options[select.selectedIndex].value,10);
            this._notifyChange(inst);
            this._adjustDate(target);
        };
        $.datepicker._clickMonthYear = function(id) {
            var target = $(document.getElementById(id.substr(1))); // Erst ab 1, weil bei 0 ein "#" ist, das wir nicht brauchen koennen
            var inst = this._getInst(target[0]);
            if (inst.input && inst._selectingMonthYear && !$.browser.msie)
                inst.input[0].focus();
            inst._selectingMonthYear = !inst._selectingMonthYear;
        };
        $.datepicker._clearDate = function(id) {
            var target = $(document.getElementById(id.substr(1))); // Erst ab 1, weil bei 0 ein "#" ist, das wir nicht brauchen koennen
            var inst = this._getInst(target[0]);
            inst.stayOpen = false;
            inst.endDay = inst.endMonth = inst.endYear = inst.rangeStart = null;
            this._selectDate(target, '');
        };
    })(jQuery);
}