/**
 * articles_Home.js
 * written by Asif Chowdhury
 * 2007-08-08
 * used to be a standard set of functions for the home page
 */
var makesRay = new Array();
var makeObject;
var SLEEP = 0;
var intervalID = 0;
var intervalModels = 0;
var currentModelMake = '';
var topThirty;

/**
 * setupMakeDD - outputs nothing; used to set up the make dropdown
 */
function setupMakeDD() {
  var makeDD = document.getElementById('makeDropdown');

  // grab the makes and fill in the dropdowns
  makeDD.options.length = 0;
  makeDD.options[makeDD.options.length] = new Option("Select", "");
  var makeObject = makesRay.pop();
  var makeList = makeObject.getMakeList();
  for(var i = 0; i < makeList.length; i++) {
    makeDD.options[makeDD.options.length] = new Option(makeList[i], makeList[i].replace(/ /g, '_').toLowerCase());
  }
}

/**
 * setupUsedMakeDD - outputs nothing; used to set up the make dropdown
 */
function setupUsedMakeDD() {
  var uMakeDD = document.getElementById('usedMakeDropdown');

  // grab the makes and fill in the dropdowns
  uMakeDD.options.length = 0;
  uMakeDD.options[uMakeDD.options.length] = new Option("Select", "");
  var makeObject = makesRay.pop();
  var makeList = makeObject.getUsedMakeList();
  for(var i = 0; i < makeList.length; i++) {
    uMakeDD.options[uMakeDD.options.length] = new Option(makeList[i], makeList[i].replace(/ /g, '_').toLowerCase());
  }
}


/**
 * fillNewMods - outputs nothing; used to set the models once the makeObject for the selected make
 * @parameter (makeObject) - the make object for this selection
 */
function fillNewMods(makeObject) {
  var modelDD = document.getElementById('modelDropdown');
  // set the modelList
  models = makeObject.getNewModelList();
  modelDD.options.length = 0;
  modelDD.options[modelDD.options.length] = new Option('Select', '');

  for(var i = 0; i < models.length; i++) {
    modelDD.options[modelDD.options.length] = new Option(models[i], models[i].replace(/ /g, '_').toLowerCase());
  }

  if ((models !== undefined) && (models.length > 0)) {
    window.clearInterval(intervalModels);
  }
}

/**
 * fillNewModels - outputs a modified html object
 */
function fillNewModels() {
  var makeDD = document.getElementById('makeDropdown');
  var make = makeDD.value;
  var divName = make.replace(/ /g, '_').toLowerCase();
  // set up the makeObjects
  var makeObject = new MakeList();
  makeObject.setChosenMake(divName.replace(/ /g, '_').toLowerCase());
  makesRay.push(makeObject);
  makeObject.setupMake(INCDIR, divName);
  intervalModels = window.setInterval(function() { fillNewMods(makeObject) }, 10);
}

/**
 * fillUsedMods - outputs nothing; used to set the models once the makeObject for the selected make
 * @parameter (makeObject) - the make object for this selection
 */
function fillUsedMods(makeObject) {
  var modelDD = document.getElementById('usedModelDropdown');
  // set the modelList
  models = makeObject.getUsedModelList();
  modelDD.options.length = 0;
  modelDD.options[modelDD.options.length] = new Option('Select', '');

  for(var i = 0; i < models.length; i++) {
    modelDD.options[modelDD.options.length] = new Option(models[i], models[i].replace(/ /g, '_').toLowerCase());
  }

  if ((models !== undefined) && (models.length > 0)) {
    window.clearInterval(intervalModels);
  }
}

/**
 * fillUsedModels - outputs a modified html object
 */
function fillUsedModels() {
  var makeDD = document.getElementById('usedMakeDropdown');
  var make = makeDD.value;
  var divName = make.replace(/ /g, '_').toLowerCase();
  // set up the makeObjects
  var makeObject = new MakeList();
  makeObject.setChosenMake(divName.replace(/ /g, '_').toLowerCase());
  makesRay.push(makeObject);
  makeObject.setupMake(INCDIR, divName);
  intervalModels = window.setInterval(function() {fillUsedMods(makeObject)}, 10);
}

/**
 * getTopNumModels - outputs a modified HTML element; used to display the top 30 models searched for
 */ 
function getTopNumModels(htmlPiece, htmlLocation, numColumns, numReturned) {
  // find the number per column
  var numPerColumn = Math.ceil(numReturned / numColumns);
  var percentage = Math.floor(95 / numColumns);

  var inHTML = '<ol>\n  <div class="block" style="width: ' + percentage + '%; border-right: solid 1px #cccccc;">\n';
  // go through each of the thirty and add it as thirty lines to the piece passed in
  var j = 0;
  for (var i = 0; i < numReturned; i++) {
    var mdl = topThirty[i];
    inHTML += '    <li class="topThirty"><a href=\"' + htmlLocation + '/' + mdl.year + '/' + mdl.make.toLowerCase().replace(/ /g, '_') + '/' + mdl.model.toLowerCase().replace(/ /g, '_') + '">' + mdl.year + ' ' + mdl.make + ' ' + mdl.model + '</a></li>\n';
    j++;
    if (j == numPerColumn) {
      inHTML += '  </div>\n  <div class="block" style="width: ' + percentage + '; border-right: solid 1px #cccccc;">\n';
      j = 0;
    }
  }
  if (j == numPerColumn) {
    inHTML += '  <div class="endRow"></div>\n</ul>\n';
  }
  else {
    inHTML += '  </div>\n  <div class="endRow"></div>\n</ol>\n';
  }

  htmlPiece.innerHTML = inHTML;
}

/**
 * submitDQForm - outputs a redirected web page; used to submit a direct quote
 */
function submitDQForm() {
  // set up the submit location for the direct quote form
  var dqForm = document.getElementById('directQuoteForm');
  var uLocation = document.getElementById('dqLocationHdn').value;
  var make = document.getElementById('makeDropdown').value;
  var model = document.getElementById('modelDropdown').value;

  window.location = uLocation + '/' + make.replace(/ /g, '_').toLowerCase() + '/' + model.replace(/ /g, '_').toLowerCase();
}

/**
 * submitUsedSearch - outputs a redirected web page; used to submit a used search
 */
function submitUsedSearch() {
  // set up the submit location for the direct quote form
  var usedForm = document.getElementById('usedForm');
  var uLocation = document.getElementById('uSearchLocHdn').value;
  var make = document.getElementById('usedMakeDropdown').value;
  var model = document.getElementById('usedModelDropdown').value;
  var zip = document.getElementById('usedZip').value;
  if (! zip.match(/^\d{5}$/)) {    
    alert("Your zip code needs to be a 5-digit number");
    return;
  }

  window.location = uLocation + '/' + zip + '/' + make.replace(/ /g, '_').toLowerCase() + '/' + model.replace(/ /g, '_').toLowerCase() + '/0/999999/0/999999';
}

/**
 * loadWindow - outputs some executed Javascript; used to run the window initialization
 */
function loadWindow() {
  // setup the make Object
  //  setupMakeObject();
      
  // setup the make Dropdown
  //  setupMakeDD();

  // setup the make Object
  //  setupMakeObject();
      
  // setup the make Dropdown
  //  setupUsedMakeDD();

  // get the top ten
  // getTopNumModels(document.getElementById('topTenLines'), CARSDIR, 2, 10);
}

/**
 * loadArticleWindow - outputs some executed Javascript; used to run the window initialization
 */
function loadArticleWindow() {
  // setup the make Object
  //  setupMakeObject();
      
  // setup the make Dropdown
  //  setupUsedMakeDD();
}
