/**
 * Javascript to support the newvehiclesFilter.ftl page.
 * showWindowSticker : Window sticker link is displayed if this variable is found and is true
 * Include this AFTER vehicleFilter.js.
 * TODO We should try to move it to OO js in order to remove the dependecy on including this after vehicleFilter.js
 *      That was all the state variables can be initialized at the time of instantiation.
 * @author Neil Thier (c) Versata 2006
 */

var arrModels = new Array();

// The set of vehicle fields to use in the filters
arrFilterFields = new Array(
  new FilterField("BodyDesc", false, propertyMatcher),
  new FilterField("DealerStockId", false, inputMatcher)
);

/**
 * Render a list of vehicles.
 * @param arrVehicles
 * @param intStartIndex
 * @param intEndIndex
 * @param objListDiv
 * @param objCountDiv
 */
function renderVehicleList(arrVehicleList, intStartIndex, intEndIndex, objListDiv, objCountDiv) {
  var strHTML = "";
  for (i = intStartIndex; i < arrVehicleList.length && i < intEndIndex; i++) {
    strHTML += "<div class=\"vehicleBlock\">";
    strHTML += "  <div class=\"vehicleImage\"><a class=\"text\" href=\"?_flowExecutionKey=" + flowExecutionId + "&_eventId_vehicledetails=true&vin=" + arrVehicleList[i].VIN + "&modelId=" + strModelInfoId + "\"><img border=\"0\" src=\"";
    if (arrVehicleList[i].ThumbnailImage != null) {
        strHTML += vfsBase + "/apps/vimg/exterior/133x55/" + arrVehicleList[i].ThumbnailImage;
    } else {
        strHTML += vfsBase + "/apps/img/vehicleimage.jpg";
    }
    strHTML += "\" width=\"133\" height=\"55\"/></a></div>";
    // NOTE new vehicles have the Year field as just like a "6"
    strHTML += "  <div class=\"vehicleBlockDescription\">";
    strHTML += "    <div class=\"heading-2\" style=\"float: left; width: 340px;\">" + arrVehicleList[i].Year + " " + arrVehicleList[i].ModelName + " " + arrVehicleList[i].BodyDesc + "&nbsp;&nbsp;<a style=\"font-weight: normal\" href=\"?_flowExecutionKey=" + flowExecutionId + "&_eventId_vehicledetails=true&vin=" + arrVehicleList[i].VIN + "&modelId=" + strModelInfoId + "\">"+arrStrings["apps.inventory.filter.details"]+"</a></div><br style=\"float: left; clear: both;\"/>";
    strHTML += "    <div class=\"vehicleColorSwatches\">";
    if (arrVehicleList[i].ExteriorColorHex != null) {
      strHTML += "<span class=\"vehicleColorSwatchExt\" style=\"background-color: #" + arrVehicleList[i].ExteriorColorHex + ";\"><img src=\"" + vfsBase + "/apps/img/null.gif\" width=\"30\" height=\"30\"/></span>";
    } else {
      strHTML += "<span class=\"vehicleColorSwatch\"><img src=\"" + vfsBase + "/apps/img/color-na.gif\" width=\"30\" height=\"30\"/></span>";
    }
    strHTML += "<br/>";
    if (arrVehicleList[i].InteriorColorHex != null) {
      strHTML += "<span class=\"vehicleColorSwatchInt\" style=\"background-color: #" + arrVehicleList[i].InteriorColorHex + ";\"><img src=\"" + vfsBase + "/apps/img/null.gif\" width=\"30\" height=\"30\"/></span>";
    } else {
      strHTML += "<span class=\"vehicleColorSwatch\"><img src=\"" + vfsBase + "/apps/img/color-na.gif\" width=\"30\" height=\"30\"/></span>";
    }
    strHTML += "</div>";
    strHTML += "    <div class=\"vehicleBlockDetails\"><p>" + arrStrings["apps.inventory.filter.stockid"] + ": " + arrVehicleList[i].DealerStockId + "<br>VIN: " + arrVehicleList[i].VIN + "</p>";
    strHTML += "      <p><b>" + arrStrings["apps.inventory.filter.ext"] + ":</b>  " + arrVehicleList[i].ExteriorColor + "</p>";
    strHTML += "      <p><b>" + arrStrings["apps.inventory.filter.int"] + ":</b>  " + arrVehicleList[i].InteriorColor + "</p>";
    strHTML += "      <p><b>" + arrStrings["apps.inventory.filter.eng"] + ":</b> " + arrVehicleList[i].EngineDesc + "</p>";
    strHTML += "      <p><b>" + arrStrings["apps.inventory.filter.tran"] + ":</b> " + arrVehicleList[i].Transmission + "</p>";
    if(showWindowSticker){
      strHTML += "      <div class=\"links\"><a href=\"javascript:callPopup('?_flowExecutionKey=" + flowExecutionId + "&_eventId_windowsticker=true&vin=" + arrVehicleList[i].VIN + "&modelId=" + strModelInfoId + "', 850, 600)\">" + arrStrings["apps.inventory.filter.viewwindowsticker"] + "</a></div>";
    }
    strHTML += "    </div>"; // vehicleBlockDetails
    strHTML += "  </div>"; // vehicleBlockDescription
    strHTML += "  <div class=\"vehicleBlockPriceSteps\">";
    strHTML += "    <div class=\"heading-2\" style=\"float:left;width:100%;text-align:left\">" + arrStrings["apps.inventory.filter.msrp"] + ": $" + currencyFormat(arrVehicleList[i].Price) + "</div><br>";
    strHTML += "    <div style=\"float:left\"><a href=\"javascript:openPaymentEstimatorForVehicle(" + i + ",'"+ financeURL +"')\">" + arrStrings["apps.inventory.filter.estimatepayment"] + "</a></div><br>";
    strHTML += "    <div  class=\"button-container\" style=\"margin-top:20px\"><div class=\"button-left\"></div><div class=\"button\"><a  href=\"?_flowExecutionKey=" + flowExecutionId + "&_eventId_requestquote=true&requestType=quote&vin=" + arrVehicleList[i].VIN + "&modelId=" + strModelInfoId + "\"><span class=\"button-label\">" + arrStrings["apps.inventory.filter.requestaquote"] + "</span></a></div><div class=\"button-right\"></div></div><br>  <div class=\"button-container\" style=\"margin-top:10px\"><div class=\"button-left\"></div><div class=\"button\"><a href=\"?_flowExecutionKey=" + flowExecutionId + "&_eventId_testdrive=true&requestType=testDrive&vin=" + arrVehicleList[i].VIN + "&modelId=" + strModelInfoId + "\"><span class=\"button-label\">" + arrStrings["apps.inventory.filter.testdrive"] + "</span>  </a></div><div class=\"button-right\"></div></div><br>   <div class=\"button-container incentives\" style=\"margin-top:10px\"><div class=\"button-left\"></div><div class=\"button\"><a class=\"text\" href=\"incentives?modelId=" + strModelInfoId + "\"><span class=\"button-label\">" + arrStrings["apps.inventory.filter.specialoffers"] + "</span> </a></div><div class=\"button-right\"></div></div>";
    strHTML += "  </div>"; // vehicleBlockPriceSteps
    strHTML += "</div>";
  }
  objListDiv.innerHTML = strHTML;

  // Update the matching vehicles count
  objCountDiv.innerHTML = "<span id='countNumberDiv'>" + arrVehicleList.length + "</span> " + arrStrings["apps.inventory.filter.matchingvehicles"];

  // Update the number of pages
  updatePageNumbers(document.getElementById("pageNumbers"), document.getElementById("pageNumbersBottom"));
}

function getVehicleList(strModelId) {
  showStatusMessage(arrStrings["apps.inventory.filter.gettingvehicles"]+"...");
  var request = YAHOO.util.Connect.asyncRequest('GET', "../../services/inventory/new?pacode=" + dealer.paCode + "&modelid=" + strModelId + "&lang=" + userLanguage, callback);
}

/**
 * Convenience function to get the current state of some select boxes and
 * call the server to get a new vehicle list
 */
function requestNewVehicleList() {
  var selectModel = document.forms['filtersForm'].elements['Model'];
  // The first element is not a real model, so check for that
  if (selectModel.selectedIndex == 0) {
    var listDiv = document.getElementById("vehicleListDiv");
    listDiv.innerHTML = "<p class=\"inventoryMessage\">Please select a model from the selections above.</p>";
    return;
  }
  strModelInfoId = selectModel.options[selectModel.selectedIndex].value;
  getVehicleList(strModelInfoId);
}

/**
 * Function to populate the page components sourced from the list
 * of models.
 */
function populateModelInfoData(arrModelInfoList) {
  var selectModel = document.forms['filtersForm'].elements['Model'];
  selectModel.options.length = 1;

  for (var m = 0; m < arrModelInfoList.length; m++) {
    if (arrModelInfoList[m].locateId != null && arrModelInfoList[m].locateId != "") { 
      selectModel.options[selectModel.options.length] = new Option(arrModelInfoList[m].year + " " + arrModelInfoList[m].name, arrModelInfoList[m].id);
      if (strModelInfoId == arrModelInfoList[m].id) {
        selectModel.selectedIndex = selectModel.options.length - 1;
      }
    }
  }
}
