var isie = false;
var inv = new Array();
var allinv = new Array();
var bRow = true;
var sf = 'p';
var sd = true;

function ac() {
  var i;
  var t = new Array();
  for (i=0; i<this.length; i++)
  {
    t[i] = this[i];
  }
  return t;
}
Array.prototype.copy = ac;

function il(c) {
  var s = '';
  if (bRow)
    rowStyle = 'invRowB';
  else
    rowStyle = 'invRow';
  bRow = !bRow;
  s = "<div class=\"" + rowStyle + "\" onclick=\"document.location.href='/cars/inventory/" + c[0] + "/'\">\n";
  s = s + "  <div class=\"thumb\"><img src=\"/cars/photos/77/" + c[0] + "/001\" alt=\"\" /></div>\n";
  s = s + "  <div class=\"desc\">\n";
  s = s + "    <h2><a href=\"/cars/inventory/" + c[0] + "/\">" + c[1] + " " + c[2] + " " + c[3] + " " + c[4] + "</a></h2>\n";
  s = s + "    " + c[5] + " with " + c[6] + " " + c[7] + "<br/>\n";
  s = s + "    " + c[8] + " miles &bull; " + c[9] + " Transmission\n";
  s = s + "  </div>\n";
  s = s + "  <div class=\"price\">$" + c[10] + "</div>\n";
  s = s + "  <br class=\"clearing\" />\n";
  s = s + "</div>\n";
  return s;
}
function gn(a) {
  a = a.replace(/,/g, '');
  return Number(a);
}
function sortup(a, b) {
  if (a>b)
    return 1;
  if (a<b)
    return -1;
  return 0;
}
function sortdn(a, b) {
  if (a>b)
    return -1;
  if (a<b)
    return 1;
  return 0;
}
function sortuuu(a, b, a2, b2, a3, b3) {
  if (a>b)
    return 1;
  if (a<b)
    return -1;
  if (a2>b2)
    return 1;
  if (a2<b2)
    return -1;
  if (a3>b3)
    return 1;
  if (a3<b3)
    return -1;
  return 0;
}
function sortduu(a, b, a2, b2, a3, b3) {
  if (a>b)
    return -1;
  if (a<b)
    return 1;
  if (a2>b2)
    return 1;
  if (a2<b2)
    return -1;
  if (a3>b3)
    return 1;
  if (a3<b3)
    return -1;
  return 0;
}
function sortudu(a, b, a2, b2, a3, b3) {
  if (a>b)
    return 1;
  if (a<b)
    return -1;
  if (a2>b2)
    return -1;
  if (a2<b2)
    return 1;
  if (a3>b3)
    return 1;
  if (a3<b3)
    return -1;
  return 0;
}
function sortddu(a, b, a2, b2, a3, b3) {
  if (a>b)
    return -1;
  if (a<b)
    return 1;
  if (a2>b2)
    return -1;
  if (a2<b2)
    return 1;
  if (a3>b3)
    return 1;
  if (a3<b3)
    return -1;
  return 0;
}
function sortByMileage(a, b) {
  if (sd)
    return sortdn(gn(a[8]),gn(b[8]));
  else
    return sortup(gn(a[8]),gn(b[8]));
}
function sortByPrice(a, b) {
  if (sd)
    return sortdn(gn(a[10]),gn(b[10]));
  else
    return sortup(gn(a[10]),gn(b[10]));
}
function sortByYear(a, b) {
  if (sd)
    return sortduu(gn(a[1]),gn(b[1]),a[2],b[2],a[3],b[3]);
  else
    return sortuuu(gn(a[1]),gn(b[1]),a[2],b[2],a[3],b[3]);
}
function sortByMake(a, b) {
  if (sd)
    return sortddu(a[2],b[2],gn(a[1]),gn(b[1]),a[3],b[3]);
  else
    return sortudu(a[2],b[2],gn(a[1]),gn(b[1]),a[3],b[3]);
}
function cs(a) {
  if (a==sf) {
    sd = !sd;
  } else {
    sf = a;
    if (sf=='p' || sf=='y')
      sd = true;
    else if (sf=='m' || sf=='k')
      sd = false;
  }
  uInv();
  return;
}
function uInv() {
  var s = '';
  var sinv;
  if (sf=='p')
    sinv = inv.sort(sortByPrice);
  else if (sf=='m')
    sinv = inv.sort(sortByMileage);
  else if (sf=='y')
    sinv = inv.sort(sortByYear);
  else if (sf=='k')
    sinv = inv.sort(sortByMake);
  else
    sinv = inv;
  bRow = true;
  for (i=0; i<sinv.length; i++) {
    s = s + il(sinv[i]);
  }
  document.getElementById("results").innerHTML = s;
  hovered();
  if (inv.length==1)
    s = inv.length + ' car match of ' + allinv.length + ' cars total';
  else
    s = inv.length + ' cars match of ' + allinv.length + ' cars total';
  document.getElementById("invNumResults").innerHTML = s;
}
function pCI(o) {
  o = o.replace(/\n/g, '');
  var x = new Array();
  var i = new Number(0);
  var re = /<car>[\s]*?<id>(.*?)<\/id>[\s]*?<year>(.*?)<\/year>[\s]*?<make>(.*?)<\/make>[\s]*?<model>(.*?)<\/model>[\s]*?<style>(.*?)<\/style>[\s]*?<extColor>(.*?)<\/extColor>[\s]*?<intColor>(.*?)<\/intColor>[\s]*?<intFabric>(.*?)<\/intFabric>[\s]*?<mileage>(.*?)<\/mileage>[\s]*?<transType>(.*?)<\/transType>[\s]*?<askingPrice>(.*?)<\/askingPrice>[\s]*?<makeID>(.*?)<\/makeID>[\s]*?<\/car>/g;
  var m  = re.exec(o);
  if (m) {
    do {
      x = new Array();
      x[0] = m[1]; //0-id
      x[1] = m[2]; //1-year
      x[2] = m[3]; //2-make
      x[3] = m[4]; //3-model
      x[4] = m[5]; //4-style
      x[5] = m[6]; //5-extColor
      x[6] = m[7]; //6-intColor
      x[7] = m[8]; //7-intFabric
      x[8] = m[9]; //8-mileage
      x[9] = m[10]; //9-transType
      x[10] = m[11]; //10-askingPrice
      x[11] = m[12]; //11-makeID
      inv[inv.length] = x;
    } while (( m = re.exec(o) ));
  } else {
    alert('error');
  }
  return;
}

var req = null;
function gr() {
  var success = false;
  if (typeof window.ActiveXObject != 'undefined' ) {
    var MSXML_XMLHTTP_PROGIDS = new Array('MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP');
    for (var i=0;i < MSXML_XMLHTTP_PROGIDS.length && !success; i++) {
        try {
            req = new ActiveXObject(MSXML_XMLHTTP_PROGIDS[i]);
            success = true;
        } catch (e) {}
    }
    if (req) {
      return 'ie';
    } else {
      alert('non-compatible browser');
      return false;
    }
  } else {
    req = new XMLHttpRequest();
    return 'nonie';
  }
  alert('non-compatible browser');
  return false;
}
function loader() {
  var ie = gr();
  if (ie=='ie') {
    isie = true;
    req.onreadystatechange = pInv;
  } else if (ie=='nonie') {
    req.onload = pInv;
  } else {
    return;
  }
  req.open("GET", "/cars/inventory_xml.php", true);
  req.send(null);
}
function pInv() {
  if (req.readyState!=4) return;
  pCI(req.responseText);
  allinv = inv.copy();
  uInv();
  gMake();
}
// --- search/filter sidebar ---
var k = new Array();
var l = new Array();
var sk = '';
function gMake() {
  var ie = gr();
  if (ie=='ie') {
    req.onreadystatechange = pMake;
  } else if (ie=='nonie') {
    req.onload = pMake;
  } else {
    return;
  }
  req.open("GET", "/cars/ajax/search_make.php", true);
  req.send(null);
}
function pMake() {
  if (req.readyState!=4) return;
  pK(req.responseText);
  uS();
  document.getElementById("selMake").onchange = chgMake;
  document.getElementById("selModel").onchange = chgModel;
}
function gModel(ik) {
  sk = ik;
  var p = "k=" + sk;
  var ie = gr();
  if (ie=='ie') {
    req.onreadystatechange = pModel;
  } else if (ie=='nonie') {
    req.onload = pModel;
  } else {
    return;
  }
  req.open("GET", "/cars/ajax/search_model.php?" + p, true);
  req.send(null);
}
function pModel() {
  if (req.readyState!=4) return;
  pL(req.responseText);
  uL();
}
function chgMake() {
  var a = document.getElementById("selMake");
  var b = a.options[a.selectedIndex].value;
  if (b=='*') {
    sk=b;
    l.length = 0;
    uL();
    inv = allinv.copy();
  } else {
    gModel(b);
    inv.length = 0;
    for (i=0; i<allinv.length; i++) {
      if (allinv[i][11]==b)
        inv[inv.length] = allinv[i];
    }
  }
  uInv();
}
function chgModel() {
  var a = document.getElementById("selMake");
  var b = a.options[a.selectedIndex].value;
  a = document.getElementById("selModel");
  var c = a.options[a.selectedIndex].value;
  if (b=='*') {
    inv = allinv.copy();
  } else if (c=='*') {
    inv.length = 0;
    for (i=0; i<allinv.length; i++) {
      if (allinv[i][11]==b)
        inv[inv.length] = allinv[i];
    }
  } else {
    inv.length = 0;
    for (i=0; i<allinv.length; i++) {
      if ((allinv[i][11]==b) && (allinv[i][3]==c))
        inv[inv.length] = allinv[i];
    }
  }
  uInv();
}
function pK(o) {
  o = o.replace(/\n/g, '');
  var re = /<make>[\s]*?<id>(.*?)<\/id>[\s]*?<name>(.*?)<\/name>[\s]*?<qty>(.*?)<\/qty>[\s]*?<\/make>/g;
  var m  = re.exec(o);
  k = new Array();
  if (m) {
    do {
      k[k.length] = new Array(m[1]);
      k[(k.length-1)][1] = m[2];
      k[(k.length-1)][2] = m[3];
    } while (( m = re.exec(o) ));
  } else {
    alert('error');
  }
  return;
}
function pL(o) {
  o = o.replace(/\n/g, '');
  var re = /<model>[\s]*?<name>(.*?)<\/name>[\s]*?<qty>(.*?)<\/qty>[\s]*?<\/model>/g;
  var m  = re.exec(o);
  l = new Array();
  if (m) {
    do {
      l[l.length] = new Array(m[1]);
      l[(l.length-1)][1] = m[2];
    } while (( m = re.exec(o) ));
  } else {
    alert('error');
  }
  return;
}
function uS() {
  var s = '';
  if (k.length>0) {
    s = s + '<select id="selMake" name="selMake">';
    s = s + '<option value="*">== All Makes ==</option>';
    for (i=0; i<k.length; i++) {
      s = s + '<option value="' + k[i][0];
      if (k[i][0]==sk)
        s = s + '" SELECTED>';
      else
        s = s + '">';
      s = s + k[i][1] + ' (' + k[i][2] + ')</option>';
    }
    s = s + '</select><br/>';
    s = s + '<select id="selModel" name="selModel" disabled>';
    s = s + '<option value="*">== All Models ==</option>';
    s = s + '</select>';
  } else {
    s = s + 'sorry an error has occurred';
  }
  document.getElementById("searchJS").innerHTML = s;
  sideShadowsIE();
}
function uL() {
  var hl = document.getElementById("selModel");
  var hlo = hl.options;
  hlo.length = 0;
  hlo[hlo.length] = new Option('== All Models ==', '*', true);
  for (i=0; i<l.length; i++) {
    hlo[hlo.length] = new Option(l[i][0] + ' (' + l[i][1] + ')', l[i][0]);
  }
  if (hlo.length>1)
    hl.disabled=false;
  else
    hl.disabled=true;
}
// --- results side panel ---
function rp(c,b) {
  var s = '    <li id="' + c[0] + '" ';
  if (b) s = s + 'class="selected" ';
  s = s + 'onmouseover="hoverProject(this.id)">\n';
  s = s + '      <a href="/cars/inventory/' + c[0] + '">\n';
  s = s + '        <span class="srName">' + c[1] + ' ' + c[2] + ' ' + c[3] + '</span><br/>\n';
  s = s + '        <span class="left">' + c[8] + ' miles</span><span class="right">$ ' + c[10] + '</span><br/>\n';
  s = s + '      </a>\n';
  s = s + '    </li>\n';
  return s;
}
function urp() {
  var s = '';
  for (i=0; i<inv.length && i<5; i++) {
    s = s + il(inv[i], (i==0));
  }
  document.getElementById("searchResults").innerHTML = s;
}
