//----------------------------------------------
//Funktion bringt Datum in das Format dd.mm.yyy
//---------------------------------------------

/**
 * This function tries to parse a date given in variable value and
 * to return it in format YYYYMMDD.
 * The implementation was supplied by TUI interactive in
 * Bugzilla feature 119528.
 */
function calendarFormatDateString(value){

    // special characters?
    parts = value.split('.');
    parts = (parts.length < 2) ? value.split('-') : parts;
    parts = (parts.length < 2) ? value.split(' ') : parts;
    parts = (parts.length < 2) ? value.split('/') : parts;


    if (parts.length > 1) {
        // there were special characters

        // if year < 100: prefix it with "20"
        parts[2] = (parts[2].length < 2) ? "0" + parts[2]: parts[2];
        parts[2] = (parts[2].length < 3) ? "20" + parts[2] : parts[2];

        // month
        parts[1] = (parts[1] < 10 && parts[1].length < 2) ? "0" + parts[1] : parts[1];

        // day
        parts[0] = (parts[0] < 10 && parts[0].length < 2) ? "0" + parts[0] : parts[0];
        return parts[2] + parts[1] + parts[0];
    } else {
        myDate = new Date();
        switch(value.length) {
            case(3):
                // assume 154 (for 15th of April)
                // or
                // use current date

                // days of months
                currentMonthLength = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
                currentMonthLength[1] = (myDate.getFullYear() % 4 == 0) ? 29 : 28;
                if (value.substr(0,2) < currentMonthLength[myDate.getMonth()]) {
                    myDay = value.substr(0,2);
                    myMonth = "0" + value.substr(2,1);
                    return myDate.getFullYear() + "" + myMonth + "" + myDay;
                }
                myMonth = ((myDate.getMonth() + 1) < 10) ? "0" + (myDate.getMonth() + 1) : myDate.getMonth() + 1;
                return myDate.getFullYear() + "" + myMonth + "" + myDate.getDate();
            case(4):
                myYear = (parseInt(value.substr(2,2)) < (myDate.getMonth() + 1) || (parseInt(value.substr(2,2)) == (myDate.getMonth() + 1) && parseInt(value.substr(0,2)) < myDate.getDate())) ? myDate.getFullYear()+1 : myDate.getFullYear();
                return myYear + "" + value.substr(2,2) + "" + value.substr(0,2);
            case(6):
                return "20" + value.substr(4,2) + "" + value.substr(2,2) + "" + value.substr(0,2);
            case(7):
                return "2" + value.substr(4,3) + "" + value.substr(2,2) + "" + value.substr(0,2);
            case(8):
                return value.substr(4,4) + "" + value.substr(2,2) + "" + value.substr(0,2);
            default:
                myMonth = ((myDate.getMonth() + 1) < 10) ? "0" + (myDate.getMonth() + 1) : myDate.getMonth() + 1;
                return myDate.getFullYear() + "" + myMonth + "" + myDate.getDate();
        }
    }
}

/*
 * Takes the value from an input field and tries to parse it as some
 * kind of date. Sets the value of the field to a suitable date pattern.
 */
function calendarFormatDateField(field) {
    string = calendarFormatDateString(field.value);
    field.value = string.substr(6,2) + "." + string.substr(4,2) + "." + string.substr(0,4)
}
