﻿/*============================================
  Methods
============================================*/
function getData(frm){
  // Get the Series & BodyTypes
  var uri = '/vehicles/getData.aspx?m=' + frm.man.value +
    (frm.series.value ? '&s=' + frm.series.value : '');
  ajax.setReadyStateChanged(getData_Callback);
  ajax.send('GET', uri, true, null);
}


/*============================================
  Event Handlers
============================================*/
function man_OnChange(sender){
  sender.form.series.selectedIndex = 0;
  getData(sender.form);
}

function reset_OnClick(frm){
  frm.man.selectedIndex = 0;
  getSeries(frm.man);
  setSelectValue(frm.limit, searchPeriod);
  frm.petrol.checked = true;
  frm.diesel.checked = true;
  frm.lpg.checked = true;
  frm.hybrid.checked = true;
  frm.manual.checked = true;
  frm.auto.checked = true;
  frm.other.checked = true;
  frm.maxMiles.value = 'Max Miles';
  frm.maxAge.value = 'Max Age';
  frm.minCC.value = 'Min CC';
  frm.maxCC.value = 'Max CC';  
}

function search_OnClick(frm){
  // Hide the popup
  popup.Close(true);

  // Create the Request Array
  var post = new Array();
  var temp = new Array();
  
  // Manufacturer
  if (isNumeric(frm.man.value) && frm.man.value > 0) post.push('man=' + frm.man.value);
  // Series
  if (isNumeric(frm.series.value) && frm.series.value > 0) post.push('series=' + frm.series.value);
  // Body Types
  temp.length = 0;
  for (var i = 0; i < frm.bodyType.options.length; i++){
    if (frm.bodyType.options[i].selected) temp.push(frm.bodyType.options[i].value);
  }
  if (temp.length) post.push('bodyType=' + temp.join(','));
  // Fuel Types
  if (frm.petrol.checked) post.push('petrol=on');
  if (frm.diesel.checked) post.push('diesel=on');
  if (frm.lpg.checked) post.push('lpg=on');
  if (frm.hybrid.checked) post.push('hybrid=on');
  // Transmission types
  if (frm.manual.checked) post.push('manual=on');
  if (frm.auto.checked) post.push('auto=on');
  if (frm.other.checkedf) post.push('other=on');
  // Miles
  if (isNumeric(frm.maxMiles.value)) post.push('maxMiles=' + frm.maxMiles.value);
   // Age
  if (isNumeric(frm.maxAge.value)) post.push('maxAge=' + frm.maxAge.value);
  // CC
  if (isNumeric(frm.minCC.value)) post.push('minCC=' + frm.minCC.value);
  if (isNumeric(frm.maxCC.value)) post.push('maxCC=' + frm.maxCC.value);
  
  // Send the request
  ajax.setReadyStateChanged(function (resp){
    if (! resp.responseText) return;
    // Get the Search Results
    vehicles = eval('(' + resp.responseText + ')');
    buildResults(vehicles.Vehicles);
  });
  ajax.send('POST', '/vehicles/getTickets.aspx?limit=' + (isNumeric(frm.limit.value) ? frm.limit.value : 7), 
    true, post.join('&'));
}

function series_OnChange(sender){
  getData(sender.form);
}

function txt_OnFocus(e){
  // Get the sender, and select it
  var sender = e.target ? e.target : e.srcElement;
  sender.select();
}

function txt_OnKeyDown(e){
  // Allow if the Key pressed is a digit, backspace or tab
  var key = window.event ? e.keyCode : e.which;
  return ((key > 47 && key < 58) || (key > 95 && key < 106) || key == 8 || key == 9);
}


/*============================================
  AJAX Callbacks
============================================*/
function getData_Callback(resp){
  // Don't do anything if nothing was returned
  if (! resp.responseText) return;
  
  //alert(resp.responseText);
  
  // Evaluate the data
  var data;
  try{
    data = eval('(' + resp.responseText + ')');
  }catch (ex){
    alert('Invalid Response received. Please retry');
    return;
  }
  
  // If Series data was returned
  if (data.Series){
    // Get a reference to the man select object
    var series = document.getElementById('searchVehicle').series;
    
    // Add all the series
    series.options.length = 0;
    series.options[0] = new Option('Any Series', 0);
    for (var i = 0; i < data.Series.length; i++){
      var s = data.Series[i];
      series.options[series.options.length] = new Option(s.fldSeriesName, s.fldSeriesID);
    }
  }
  
  // If BodyType data was returned
  if (data.BodyTypes){
    // Get a reference to the man select object
    var bodyType = document.getElementById('searchVehicle').bodyType;
    
    // Add all the serieseses
    bodyType.options.length = 0;
    if (data.BodyTypes.length){
      for (var i = 0; i < data.BodyTypes.length; i++){
        var b = data.BodyTypes[i];
        bodyType.options[bodyType.options.length] = new Option(b.fldBodyTypeDesc, b.fldBodyTypeID, true, true);
      }
    }else{
      bodyType.options[bodyType.options.length] = new Option(
        'None under 4 weeks', 0, true, true);
    }
  }
}
