
//-----------------------------------------------------------------------
// Copyright (C) Motorwebs Corporation. All rights reserved.
//-----------------------------------------------------------------------
// VehicleSearch Class

Type.registerNamespace('Motorwebs.UI');

Motorwebs.UI.VehicleSearch = function(element) {
  Motorwebs.UI.VehicleSearch.initializeBase(this, [element]);

  this._conditionNewElement = null;
  this._conditionUsedElement = null;
  this._priceRangesElement = null;
  this._yearsElement = null;
  this._makesElement = null;
  this._modelsElement = null;
  this._doSearchElement = null;
}

Motorwebs.UI.VehicleSearch.prototype = {

  initialize: function() {
    Motorwebs.UI.VehicleSearch.callBaseMethod(this, 'initialize');

    $addHandlers(this._conditionNewElement, { click: this._onConditionElementClick }, this);
    $addHandlers(this._conditionUsedElement, { click: this._onConditionElementClick }, this);
    $addHandlers(this._priceRangesElement, { change: this._onPriceRangesElementChange }, this);
    $addHandlers(this._yearsElement, { change: this._onYearsElementChange }, this);
    $addHandlers(this._makesElement, { change: this._onMakesElementChange }, this);
    $addHandlers(this._doSearchElement, { click: this._onDoSearchClick }, this);
  },

  dispose: function() {
    $clearHandlers(this._conditionNewElement);
    $clearHandlers(this._conditionUsedElement);
    $clearHandlers(this._priceRangesElement);
    $clearHandlers(this._yearsElement);
    $clearHandlers(this._makesElement);
    $clearHandlers(this._doSearchElement);

    Motorwebs.UI.VehicleSearch.callBaseMethod(this, 'dispose');
  },

  // public methods ////////////////////////////////////////////////////////////////
  onServiceSuccess: function(response) {
    switch (response.Name) {
      case "backButton":
        $common.fillSelectTwoColumn(this._priceRangesElement, response.PriceRanges, "Price Ranges", response.PriceRangeSelected);
        $common.fillSelectOneColumn(this._yearsElement, response.Years, "Years", response.YearSelected);
        $common.fillSelectOneColumn(this._makesElement, response.Makes, "Makes", response.MakeSelected);
        $common.fillSelectOneColumn(this._modelsElement, response.Models, "Models", response.ModelSelected);
        break;
      case 'condition':
        $common.fillSelectTwoColumn(this._priceRangesElement, response.PriceRanges, "Price Ranges");
        $common.fillSelectOneColumn(this._yearsElement, response.Years, "Years");
        $common.fillSelectOneColumn(this._makesElement, response.Makes, "Makes");
        $common.clearSelect(this._modelsElement, "Models");
        break;
      case 'priceRange':
        $common.fillSelectOneColumn(this._yearsElement, response.Years, "Years");
        $common.fillSelectOneColumn(this._makesElement, response.Makes, "Makes");
        $common.clearSelect(this._modelsElement, "Models");
        break;
      case "year":
        $common.fillSelectOneColumn(this._makesElement, response.Makes, "Makes");
        $common.clearSelect(this._modelsElement, "Models");
        break;
      case "make":
        $common.fillSelectOneColumn(this._modelsElement, response.Models, "Models");
        break;
      case "doSearch":
        window.location.href = response.Href;
        break;
    }
  },

  // event handlers ////////////////////////////////////////////////////////////////
  _onConditionElementClick: function(e) {
    var condition = e.target.value;
    var request = new Motorwebs.NET35.Default.VehicleSearchRequest();
    request.name = "condition";
    request.Condition = condition;
    Widgets.VehicleSearchEvents(request, onSuccess, onFailure, 'vehicleSearch');
  },

  _onPriceRangesElementChange: function(e) {
    //Sys.Debug.trace(e.target.value);
    var request = new Motorwebs.NET35.Default.VehicleSearchRequest();
    request.name = "priceRange";
    request.Condition = this._getCondition();
    request.PriceRange = e.target.value;
    Widgets.VehicleSearchEvents(request, onSuccess, onFailure, 'vehicleSearch');
  },

  _onYearsElementChange: function(e) {
    //Sys.Debug.trace(e.target.value);
    var request = new Motorwebs.NET35.Default.VehicleSearchRequest();
    request.name = "year";
    request.Condition = this._getCondition();
    request.PriceRange = this._priceRangesElement.value;
    request.Year = e.target.value;
    Widgets.VehicleSearchEvents(request, onSuccess, onFailure, 'vehicleSearch');
  },

  _onMakesElementChange: function(e) {
    //Sys.Debug.trace("condition: " + this._getCondition() + " year: " + this._yearsElement.value + " make: " + e.target.value);
    var request = new Motorwebs.NET35.Default.VehicleSearchRequest();
    request.name = "make";
    request.Condition = this._getCondition();
    request.PriceRange = this._priceRangesElement.value;
    request.Year = this._yearsElement.value;
    request.Make = e.target.value;
    Widgets.VehicleSearchEvents(request, onSuccess, onFailure, 'vehicleSearch');
  },

  _onDoSearchClick: function(e) {
    var request = new Motorwebs.NET35.Default.VehicleSearchRequest();
    request.name = "doSearch";
    request.Condition = this._getCondition();
    request.PriceRange = this._priceRangesElement.value;
    request.Year = this._yearsElement.value;
    request.Make = this._makesElement.value;
    request.Model = this._modelsElement.value;
    request.YearSelected = this._
    Sys.Application.addHistoryPoint({ cond: request.Condition, pricerange: request.PriceRange, year: request.Year, make: request.Make, model: request.Model });
    Widgets.VehicleSearchEvents(request, onSuccess, onFailure, 'vehicleSearch');
  },

  // private methods //////////////////////////////////////////////////////////////
  _getCondition: function() {
    var condition = document.forms[0].vehicleSearchCondition;
    for (var i = 0; i < condition.length; i++) {
      if (condition[i].checked) {
        return condition[i].value;
      }
    }
    return ""
  },

  // public properties //////////////////////////////////////////////////////////////
  get_conditionNewElement: function() {
    return this._conditionNewElement;
  },

  set_conditionNewElement: function(value) {
    this._conditionNewElement = value;
  },

  get_conditionUsedElement: function() {
    return this._conditionUsedElement;
  },

  set_conditionUsedElement: function(value) {
    this._conditionUsedElement = value;
  },

  get_priceRangesElement: function() {
    return this._priceRangesElement;
  },

  set_priceRangesElement: function(value) {
    this._priceRangesElement = value;
  },

  get_yearsElement: function() {
    return this._yearsElement;
  },

  set_yearsElement: function(value) {
    this._yearsElement = value;
  },

  get_makesElement: function() {
    return this._makesElement;
  },

  set_makesElement: function(value) {
    this._makesElement = value;
  },

  get_modelsElement: function() {
    return this._modelsElement;
  },

  set_modelsElement: function(value) {
    this._modelsElement = value;
  },

  get_doSearchElement: function() {
    return this._doSearchElement;
  },

  set_doSearchElement: function(value) {
    this._doSearchElement = value;
  }
}

Motorwebs.UI.VehicleSearch.registerClass('Motorwebs.UI.VehicleSearch', Sys.UI.Control);