// globale Variablen, die die ID des selektierten Tages speichern
var foo;
var calDepartureActive;
var calReturnActive;


/**
*   Prüft, ob ein zweiter Kalender aktualisiert werden muss.
*/
function check_second_calendar(target1, target2, update_fkt, update_field, update_field2, direction) {
    target1ID = target1 + 'Status';
    target2ID = target2 + 'Status';
    value1 = document.getElementById(target1ID).innerHTML;
    value2 = document.getElementById(target2ID).innerHTML;
    // Text-Datum splitten und Vergleichswerte erstellen
    value1_check = value1.split("-");
    value1_check = Date.UTC(value1_check[0], value1_check[1], 1);
    value2_check = value2.split("-");
    value2_check = Date.UTC(value2_check[0], value2_check[1], 1);
    if (direction == "left_right") {
        if (value1_check > value2_check) {
            set_calendar(target2, value1, update_fkt, update_field, target1, update_field2, "backward");
        }
    } else if (direction == "right_left") {
        if (value1_check < value2_check) {
            set_calendar(target2, value1, update_fkt, update_field, target1, update_field2, "forward");
        }
    }
    return false;
}

/**
*   Gibt den durch date vorgegebenen Kalendermonat im angegebenen Container aus.
*   Der übergebene Tag des Monats wird gehilighted.
*
*   @param string target    ID des HTML-Elements, innerhalb dessen der Kalender angezeigt werden soll
*   @param string date      Datum, für das der Kalender angezeigt werden soll (yyyy-mm-dd)
*   @return bool    true, wenn Kalender Daten vorhanden sind, ansonsten false
*/
function set_calendar(target, date, update_fkt, update_field, target2, update_field2, check_move) {
    // falls date nicht gesetzt, heutigen Tag nehmen
    if (date == '') {
        var today = new Date;
        date = today.getFullYear() + '-' + today.getMonth() + '-' + today.getDay();
    }
    // Datum in Tag Monat und Jahr zerlegen
    var date_split = date.split("-");
    var year = Number(date_split[0]);
    var month = Number(date_split[1]);
    var day = Number(date_split[2]);
    var cal = new calendar(year, month);
    if (cal.data.length) {
        // wenn Kalender Daten vorhanden sind
        var html_out = calendar_render(target, cal.previous_date, cal.next_date, cal.data, date, update_fkt, update_field, target2, update_field2, check_move);
        document.getElementById(target).innerHTML = html_out;
        return true;
    }
    return false;
}

/**
*   Aktualisiert ein Input-Field mit dem gewählten Datum.
*/
function update_input_value(field_id, val) {
    val = val.split("-");
    if (val[1] < 10) {
        val[1] = '0' + val[1];
    }
    if (val[2] < 10) {
        val[2] = '0' + val[2];
    }
    val = val.reverse();
    val = val.join(".");
    document.getElementById(field_id).value = val;
}

/**
*   Aktualisiert ein Input-Field mit dem gewählten Datum.
*/
function update_input_value_split(field_id, val) {
    val = val.split("-");
    if (val[1] < 10) {
        val[1] = '0' + val[1];
    }
    if (val[2] < 10) {
        val[2] = '0' + val[2];
    }
    tmp_field_id = field_id + 'day';
    document.getElementById(tmp_field_id).value = val[2];
    tmp_field_id = field_id + 'month';
    document.getElementById(tmp_field_id).value = val[1];
    tmp_field_id = field_id + 'year';
    document.getElementById(tmp_field_id).value = val[0];
}

/**
*   Aktualisiert eine Datums Select-Box
*/
function update_select_value(field_id, val) {
}


/**
*   Deaktiviert den aktuell gehighlighteten Tag und highlighted den ausgewählten Tag.
*/
function day_highlight(target, day) {
    var flagName;
    var flagVal;
    // gehighliteten Tag zurück setzen
    flagName = target + 'Active';
    eval('flagVal = ' + flagName);
    flagName = target + '_' + flagVal;
    eval('document.getElementById(\'' + flagName + '\').className = "kal_on"');
    // selektierten Tag highlighten und merken
    flagVal = target + '_' + day;
    eval('document.getElementById(\'' + flagVal + '\').className = "kal_date"');
    flagName = target + 'Active';
    eval(flagName + ' = day');
}


/**
*   Gibt die Daten eines Kalender Monats aus.
*/
function calendar_render(target, previous_date, next_date, data, date, update_key, update_field, target2, update_field2, check_move) {
    // Variablen initialisieren
    var html_out = '';
    // Datum in Bestandteile zerlegen
    var date_split = date.split("-");
    var year  = Number(date_split[0]);
    var month = Number(date_split[1]);
    var day   = Number(date_split[2]);
    // Namen zu den Monaten definieren
    var opt_month = new Array("", "Januar", "Februar", "M&auml;rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
    // aktuellen Tag des Monats setzen, sofern aktueller Monat der angezeigte ist
    var today = new Date;
    if (((today.getFullYear()*100)+today.getMonth()) == ((year*100)+(month -1))) {
        today = today.getDate();
    } else {
        today = 0;
    }
    // Kalender Daten ausgeben
    var html_out = '';
    var html_out_tmp = '';
    html_out += '<div id="' + target + 'Status" style="display:none;">' + date + '</div>';
    html_out += '<table width="100%" border="0" cellspacing="0" cellpadding="0">';
    html_out += '<tr><td height="30">';
    //>>> Kalender Navi
    html_out += '<table border="0" cellpadding="0" cellspacing="0" width="250" class="bg_table_w">';
    html_out += '<tr>';
    if (previous_date) {
        html_out += '<td width="24"><a href="#" onClick="set_calendar(\'' + target + '\', \'' + previous_date + '\', \'' + update_key + '\', \'' + update_field + '\', \'' + target2 + '\', \'' + update_field2 + '\'';
        if (check_move == "backward") {
            html_out += ', \'backward\');check_second_calendar(\'' + target + '\', \'' + target2 + '\', \'' + update_key + '\', \'' + update_field2 + '\', \'' + update_field + '\', \'right_left\');';
        } else if (check_move == "forward") {
            html_out += ', \'forward\');';
        } else {
            html_out += ');'
        }
        html_out += 'return false;"><img src="/lturhotels/img/button_back.png" width="4" height="7" hspace="5" border="0"></a></td>';
    } else {
        html_out += '<td width="24">&nbsp;</td>';
    }
    html_out += '<td nowrap align="center" class="highlight">';
    html_out += opt_month[month] + ' ' + year;
    html_out += '</td>';
    if (next_date) {
        html_out += '<td width="24" align="right"><a href="#" onClick="set_calendar(\'' + target + '\', \'' + next_date + '\', \'' + update_key + '\', \'' + update_field + '\', \'' + target2 + '\', \'' + update_field2 + '\'';
        if (check_move == "forward") {
            html_out += ', \'forward\');check_second_calendar(\'' + target + '\', \'' + target2 + '\', \'' + update_key + '\', \'' + update_field2 + '\', \'' + update_field + '\', \'left_right\');';
        } else if (check_move == "backward") {
            html_out += ', \'backward\');';
        } else {
            html_out += ');'
        }
        html_out += 'return false;"><img src="/lturhotels/img/button_fw.png" width="4" height="7" hspace="5" border="0"></a></td>';
    } else {
        html_out += '<td width="24">&nbsp;</td>';
    }
    html_out += '</tr>';
    html_out += '</table>';
    //<<< Kalender Navi
    html_out += '</td></tr>';
    html_out += '<tr><td>';
    //>>> Kalender Content
    html_out += '<table width="250" border="0" cellspacing="1" cellpadding="0">';
    html_out += '<tr align="center">';
    html_out += '<td>Mo</td>';
    html_out += '<td>Di</td>';
    html_out += '<td>Mi</td>';
    html_out += '<td>Do</td>';
    html_out += '<td>Fr</td>';
    html_out += '<td>Sa</td>';
    html_out += '<td>So</td>';
    html_out += '</tr>';
    html_out += '<tr align="center">';
    var i_cnt = data.length;
    for (var i=0;i<i_cnt;i++) {
        // neue Zeile
        if ( (i > 0) && (i % 7) == 0) {
            html_out += '</tr><tr align="center">';
        }
        // Tag oder Leeres Feld ausgeben
        if (data[i] > 0) {
            var use_css = '';
            if (data[i] < today) {
                // Tage des Monats in der Vergangenheit
                use_css = 'class=kal_off';
            } else if (data[i] == day) {
                // aktueller Tag gehighlited
                use_css = 'class=kal_date';
                // gehighliteten Tag merken
                tmp = target + 'Active';
                eval(tmp + ' = day');
            } else {
                // alle anderen Tage
                use_css = 'class=kal_on';
            }
            var click;
            click = 'day_highlight(\'' + target + '\', '+ data[i] +');';
            if (update_key == "select") {
                click = 'onClick="' + click + 'update_select_value(update_field, year + '-' + month + '-' + data[i]);return false;"'
            } else if (update_key == "input_split") {
                click = 'onClick="' + click + 'update_input_value_split(\'' + update_field + '\', \'' + year + '-' + month + '-' + data[i] + '\');return false;"'
            } else {
                click = 'onClick="' + click + 'update_input_value(\'' + update_field + '\', \'' + year + '-' + month + '-' + data[i] + '\');return false;"'
            }
            html_out += '<td id="'+ target + '_' + data[i] + '" ' + use_css + '>';
            if (data[i] < today) {
                html_out += '' + data[i] + '';
            } else {
                html_out += '<a href="#" ' + click + '>' + data[i] + '</a>';
            }
            html_out += '</td>';
        } else {
            // Tage, die nicht zum aktuellen Monat gehören
            html_out += '<td>&nbsp;</td>';
        }
    }   // of for i
    html_out += '</tr>';
    html_out += '</table>';
    //<<< Kalender Content
    html_out += '</td></tr>';
    html_out += '</table>';

    if (!(update_key == "select" || update_key == "input_split")) {
        update_input_value(update_field, year + '-' + month + '-' + day );
    }

    return html_out;
}

