function QuickSearch() {
    var self = this;
    var btnSrc = $('#submitQuickSearch').attr('src');

    this.checkFormEnable = function() {
        if ($('#depHomen').val() && $('#arrHomen').val()) {
            self.enableSubmit();
        } else {
            self.disableSubmit();
        }
    };

    this.getDepAreas = function() {
        this.resetDestArea();
        $.getJSON('quicksearch.php', self.setDepAreas);
    };

    this.setDepAreas = function(json) {
        $('#depHomen').html(self.parseAreasJSON(json)).change(self.selectDepArea);
    };

    this.selectDepArea = function() {
        if ($('#depHomen').val()) {
            self.getDestAreas();
        } else {
            self.resetDestArea();
        }
    };

    this.resetDestArea = function() {
        $('#arrHomen').html('<option value="">- 乗車地を選択 -</option>');
    }

    this.getDestAreas = function() {
        self.disableSubmit();
        var dep = $('#depHomen').val();
        if (!dep) { return; }
        $.getJSON('quicksearch.php', { dep: dep }, self.setDestAreas);
    };

    this.setDestAreas = function(json) {
        $('#arrHomen').html(self.parseAreasJSON(json)).change(self.selectDestArea);
    };

    this.selectDestArea = function() {
        var dep  = $('#depHomen').val();
        var dest = $('#arrHomen').val();
        $.getJSON('quicksearch.php', { dep: dep, dest: dest }, self.setRouteParams);
    };

    this.parseAreasJSON = function(json) {
        var options = '<option value="">- 選択 -</option>';
        for (var i=0; i < json.length; i++) {
            var node = json[i];
            options += '<option value="' + node.name + '">' + node.label + '</option>';
        }
        return options;
    };

    this.enableSubmit = function() {
        var src = btnSrc.replace(/\.png/, "_on.png");
        $('#submitQuickSearch').removeAttr('disabled').attr('src', src);
    };

    this.disableSubmit = function() {
        $('#submitQuickSearch').attr({ disabled: 'disabled', src: btnSrc });
    };

    this.getCurrentDate = function() {
        var date  = new Date();
        var year  = (date.getFullYear() + '').substr(2);
        var month = date.getMonth() + 1;
        var day   = date.getDate();
        return {
          year : year  + '',
          month: month + '',
          day  : day   + ''
        };
    };

    this.setDefaultDate = function() {
        var date = this.getCurrentDate();
        var el = $('#quickSearch');
        var year  = $('select[name="year"]' , el);
        var month = $('select[name="month"]', el);
        var day   = $('select[name="day"]'  , el);
        if (!year.val() && !month.val() && !day.val()) {
            year.val(date.year);
            $('select[name="month"]', el).val(date.month);
            $('select[name="day"]'  , el).val(date.day);
        }
    };

    this.setRouteParams = function(json) {
        var el = $('#quickSearch');
        $('input[name="GRPCD"]' , el).val(json.GRPCD);
        $('input[name="HANBAI"]', el).val(json.HANBAI);
        self.checkFormEnable();
    };
}

$(function() {
    var quick = new QuickSearch();
    quick.disableSubmit();
    quick.getDepAreas();
    quick.setDefaultDate();
});
