var content_dep_city = '';
var content_dest_city = '';

var submitable = false;

var dest_city_default = 'Wie Abholort';

var checkSubmit = function() {

    /*
    if ($('#dest_city').val() == 'Wie Abholort') {

        $('#dest_city').val('');

        if ($('#dep_city').val() != '' && $('#dep_city_id').val() != '') {
            $('#dest_city').val($('#dep_city').val());
            $('#dest_city').removeClass('empty');
            $('#dest_city_id').val($('#dep_city_id').val());
        }

    }
    */

    if (!submitable && $('#dep_datetime_time').val() < $('#dest_datetime_time').val()) {

        // show hint
        showTimesHint();

        submitable = true;
        return false;

    } else {
        submitable = true;
        return true;
    }
}

var showTimesHint = function() {

    if ($('#dep_datetime_time').val() < $('#dest_datetime_time').val()) {

        // show hint
        var s = 'Sie möchten Ihren Mietwagen um ' + $('#dep_datetime_time').val() + ' Uhr abholen '
              + 'und um ' + $('#dest_datetime_time').val() + ' Uhr zurückgeben. Die Autovermieter '
              + 'berechnen pro angefangenen 24 Stunden Mietdauer einen ganzen Tag, d.h. Ihnen würde '
              + 'ein zusätzlicher Tag in Rechnung gestellt. Wenn Sie mit den von Ihnen gewählten '
              + 'Uhrzeiten trotzdem einen Mietwagen suchen möchten, klicken Sie bitte auf '
              + '<i><a href="javascript:void(0);" onclick="$(\'#submit_button\').click();">Vergleichen</a></i>. '
              + 'Ansonsten ändern Sie bitte die Uhrzeiten.';

        $('#hint_times').html(s);
        $('#hint_times').show();

        submitable = true;

    } else {
        $('#hint_times').hide();
        submitable = true;
    }

}

$(document).ready(function() {

    // suggester
    $("#dep_city,#dest_city").autocomplete("/autocompleter.php", {
        width: 260,
        selectFirst: true,
        //autoFill: false,
        delay: 50,
        minChars: 2,
        // max: 20,
        scroll: true,
        matchContains: false,
        scrollHeight: 220,
        matchSubset: false,
        formatItem: function(row, i, max) {

            if (row[1] == '') {
                return { type: "group", formatted: row[0] };
            }

            var result = '';

            if (row[3] == 'airport' || row[3] == 'island' || row[3] == 'station') {
                result += '<img src="images/icons/' + row[3] + '.png" width="16" height="16" align="absmiddle" /> ';
            }

            result = result + row[0];

            if (row[3] == 'country' || row[3] == 'region' || row[3] == 'island') {
                //result += '...';
            }

            return result;
        },
        formatResult: function(row, i, max) {
            return row[0]; // + (row[3] == 'city' ? ' (' + row[2] + ')' : '');
        },
        highlight: function(value, term) {
            return value;
        }
    }).result(function(event, data, formatted) {
        if (data) {
            $('#' + this.id + '_id').val(data[1]);
            if (this.id == 'dep_city' /*&& $('#dest_city').val() == ''*/) {
                //$('#dest_city').val($('#dep_city').val());
                //$('#dest_city').removeClass('empty');
                // $('#dest_city_id').val(data[1]);
                $(this).blur();  // quick hack for jQuery (blur events are not triggered here)
                $('#filter_availability_airport').focus();
            }

            if ($('#searchFormBox dl.dep ul.errors').size() > 0) {
                $('#searchFormBox dl.dep ul.errors').hide()
            }

            if ($('#searchFormBox dl.dest ul.errors').size() > 0) {
                $('#searchFormBox dl.dest ul.errors').hide()
            }
        }
    });

    $('#dep_city').bind('keyup', function(e) {
         if (e.which == 13) {
             content_dep_city = $(this).val();
         } else {
            if ($(this).val() != content_dep_city) {
                $('#dep_city_id').val('');
                content_dep_city = $(this).val();
                            }
         }
    });

    $('#dest_city').bind('keyup', function(e) {
         if (e.which == 13) {
             content_dest_city = $(this).val();
         } else {
            if ($(this).val() != content_dest_city) {
                $('#dest_city_id').val('');
                content_dest_city = $(this).val();
                            }
         }
    });

    $('#dest_city').bind('focus', function(e) {
        if ($('#dest_city').val() == '' || $('#dest_city').val() == dest_city_default) {
            $('#dest_city').val('');
            $('#dest_city').removeClass('empty');
        }
    });

    $('#dest_city').bind('blur', function(e) {
        if ($('#dest_city').val() == '' || $('#dest_city').val() == dest_city_default) {
            $('#dest_city').val(dest_city_default);
            $('#dest_city').addClass('empty');
        }
    });

    // datepicker
    $('#dep_datetime_date').datepicker({
        showOn: 'button',
        buttonImage: 'images/icons/calendar.png',
        buttonImageOnly: true,
        buttonText: 'Kalender',
        altField: '#dep_datetime_date_text',
        altFormat: 'DD, dd. MM yy',
        dateFormat: 'dd.mm.yy',
        dayNames: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
        dayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
        dayNamesShort: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
        duration: '',
        firstDay: 1,
        gotoCurrent: true,
        monthNames: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
        monthNamesShort: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
        numberOfMonths: 3,
        prevText: 'Zurück',
        nextText: 'Weiter',
        minDate: '+0d',
        maxDate: '+548d',
        onSelect: function(dateText, inst) {
            var d = $(this).datepicker('getDate');

            if ($('#dest_datetime_date').datepicker('getDate') <= d) {
                d.setDate(d.getDate() + 7);
                $('#dest_datetime_date').datepicker('setDate', d);
            }
        }
    });

    $('#dest_datetime_date').datepicker({
        showOn: 'button',
        buttonImage: 'images/icons/calendar.png',
        buttonImageOnly: true,
        buttonText: 'Kalender',
        altField: '#dest_datetime_date_text',
        altFormat: 'DD, d. MM yy',
        dateFormat: 'dd.mm.yy',
        dayNames: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
        dayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
        dayNamesShort: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
        duration: '',
        firstDay: 1,
        gotoCurrent: true,
        monthNames: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
        monthNamesShort: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
        numberOfMonths: 1,
        prevText: 'Zurück',
        nextText: 'Weiter',
        minDate: '+0d',
        maxDate: '+548d'
    });

    $('#dep_city').focus();


    $('#dep_datetime_time,#dest_datetime_time').bind('change', function() {
        showTimesHint();
    });

    if ($('#dest_city').val() == '' || $('#dest_city').val() == dest_city_default) {
        $('#dest_city').val(dest_city_default);
        $('#dest_city').addClass('empty');
    }

    $('#dep_city,#dest_city').bind('focus', function(e) {
        $(this).select();
    });

    $('#chosen_dep_city_id,#chosen_dest_city_id').bind('change', function(){

        var id = this.id;

        if ($('#hint_' + id)) {

            if ($('#' + id).val() == 0) {
                $('#hint_' + id).show();
            } else {
                $('#hint_' + id).hide();
            }

        }

    });

});
