var detail_infoMoving = false;

numberImages = [
  new Image(),new Image(),new Image(),new Image(),new Image(),
  new Image(),new Image(),new Image(),new Image(),new Image()
]

numberImages[0].src = "/site/img/used/numero_0.gif";
numberImages[1].src = "/site/img/used/numero_1.gif";
numberImages[2].src = "/site/img/used/numero_2.gif";
numberImages[3].src = "/site/img/used/numero_3.gif";
numberImages[4].src = "/site/img/used/numero_4.gif";
numberImages[5].src = "/site/img/used/numero_5.gif";
numberImages[6].src = "/site/img/used/numero_6.gif";
numberImages[7].src = "/site/img/used/numero_7.gif";
numberImages[8].src = "/site/img/used/numero_8.gif";
numberImages[9].src = "/site/img/used/numero_9.gif";
numberplusImage = new Image()
numberplusImage.src = "/site/img/used/numero_plus.gif";

imgsCarType = { 'on': new Image(), 'off': new Image() };
imgsMake = { 'on': new Image(), 'off': new Image() };
imgsCarType['on'].src = "/fr/site/img/used/used_search_box_bt_bycartype_on.gif";
imgsCarType['off'].src = "/fr/site/img/used/used_search_box_bt_bycartype_off.gif";
imgsMake['on'].src = "/fr/site/img/used/used_search_box_bt_bymake_on.gif";
imgsMake['off'].src = "/fr/site/img/used/used_search_box_bt_bymake_off.gif";

var UCCounterTransaction = null;

var marker = "------>";
getresponsetext = function(o) {
  var textIdx = o.responseText.indexOf(marker);      
  var res = null;
  if(textIdx != -1) {
    textIdx += marker.length;
    r = o.responseText.substring(textIdx);
    r = r.replace(/\s+$/,"");
    eval("res = "+r);   
  }
  return res;    
}

function carSelector_init(cookieName)
{
  var updateCookies = function(params) {
    if(params == null) {
      var selected_cars = XLib.getCheckBoxesWithPartialName("sel_", true);
      var cookie_value = [];
      for(var i = 0; i < selected_cars.length; i++) {
        cookie_value.push(selected_cars[i].value);
      }
      var expDate = new Date();  expDate.setTime(expDate.getTime() + (24 * 60 * 60 * 1000 * 7)); // valid for 7 days
      var cookie = cookieName + "=" + cookie_value + "; expires=" + expDate.toGMTString() + "; path=/";
      document.cookie = cookie;
    }
    else {
      if(params.add != null) {
        var objType = $e('_sel_' + params.add).getAttribute("objType");
        var _o = UsedCarSelector.findObject(objType, params.add);
        var ser = _o != null ? _o.serialize(true) : null;

        if(ser != null) {
          var ucars = getCookie('ucars') || "";
          if(ucars != null && ucars != "") {
            ucars += ",";
          }
          ucars += params.add + ":" + ser;

          var expDate = new Date();  expDate.setTime(expDate.getTime() + (24 * 60 * 60 * 1000 * 7)); // valid for 7 days
          var cookie = cookieName + "=" + ucars + "; expires=" + expDate.toGMTString() + "; path=/";
          document.cookie = cookie;
        }
      }
      if(params.remove != null) {
        var carids = getCookie('ucars').split(",");
        var ucars = [];
        for(var i = 0; i < carids.length; i++) {
          var cardata = carids[i].split(":");
          if(cardata.length > 0) {
            //if(carids[i] != params.remove)
            if(cardata[0] != params.remove)
              ucars.push(carids[i]);
          }
        }
        var expDate = new Date();  expDate.setTime(expDate.getTime() + (24 * 60 * 60 * 1000 * 7)); // valid for 7 days
        var cookie = cookieName + "=" + ucars + "; expires=" + expDate.toGMTString() + "; path=/";
        document.cookie = cookie;
      }
    }
  };

  var onSelect = function(id) {
    updateCookies({add:id});
    floater_updateTexts();
  };

  var onUnselect = function(id) {
    updateCookies({remove:id});
    floater_updateTexts();
  };

  params = {
    columns: 2,
    maxitems: 6,
    className: "myselector",
    onSelect: onSelect,
    onUnselect: onUnselect
  };

  UsedCarSelector = new XObjectManager('ucselector', params);

  // Process Cars from the cookie
  var _c = (getCookie(cookieName) || "").split(",");
  if(_c != null) {
    for(var i = 0; i < _c.length; i++) {
      var _c2 = _c[i].split(":");
      if(_c2.length == 2) {
        var ser = XLib._unserializeObject(XLib.decode64(_c2[1]));
        if(ser != null) {
          try {
            UsedCarSelector.processSelection({checked:true, value:_c2[0]}, eval(ser.objType), ser);
          }
          catch(err) {}
        }
      }
    }
  }
  // End Cookie processing

  var selectedCars = XLib.getCheckBoxesWithPartialName("sel_", true);
  var className;
  var objType;
  for(var i = 0; i < selectedCars.length; i++) {
    className = selectedCars[i].getAttribute("objtype");
    if(className != null) {
      switch(className) {
        case 'carObject':
          objType = eval(className);
          UsedCarSelector.processSelection(selectedCars[i], objType, {startXY:$e('photo_' + selectedCars[i].value), photo:$e('photo_' + selectedCars[i].value).src, url:$e('link_' + selectedCars[i].value).href, id:selectedCars[i].value, className:className});
          break;
        case 'textObject':
          objType = eval(className);
          UsedCarSelector.processSelection(selectedCars[i], objType, {startXY:$e('photo_' + selectedCars[i].value), url:$e('link_' + selectedCars[i].value).href, id:selectedCars[i].value, className:className, text:$e('_sel_' + selectedCars[i].value).getAttribute("text")});
          break;
      }
    }
  }
}

function refreshModels(makeNode, modelNode, onSuccess)
{  
  var transaction = YAHOO.util.Connect.asyncRequest("GET", "/en/site/support/json_getmodels.spy?make=" + escape(makeNode.options[makeNode.selectedIndex].value), {success:refreshModels_callback_success, failure:refreshModels_callback_failure, argument:[modelNode, onSuccess] }, null);
}

after_model_refresh = null;
function refreshModels_callback_success(o)
{
  try {
    var models = getresponsetext(o)
    var modelNode = o.argument[0];
    var onSuccess = o.argument.length > 1 ? o.argument[1] : null;

    if(modelNode != null) {
      while(modelNode.options.length > 1) modelNode.options[1] = null;
      modelNode.selectedIndex = 0;  
        
      for(var i = 0; i < models.length; i++) {
        modelNode.options[modelNode.options.length] = new Option(models[i][0], models[i][1]);
      }
      
      if(after_model_refresh != null) {
        after_model_refresh(modelNode);
        after_model_refresh = null;
      }
    }
    
    if(typeof(onSuccess) == "function") {
      onSuccess();
    }
  }
  catch(e) {}
}
function refreshModels_callback_failure(o) {
  try {
    var models = getresponsetext(o)
    //var models = eval(o.responseText);
    var modelNode = o.argument[0];

    if(modelNode != null) {
      while(modelNode.options.length > 1) modelNode.options[1] = null;
      modelNode.selectedIndex = 0;  
    }  
  }
  catch(e) {}          
}


updateCounter_OnComplete = null;
function updateCounter(f, updateContainerID, onComplete)
{
  if(typeof(f.range) != "undefined") {
    if(f.range.selectedIndex < 1) f.range.selectedIndex = 1;
  }
  
  if(UCCounterTransaction == null) {
    updateCounter_OnComplete = onComplete;
    YAHOO.util.Connect.setForm(f.id);
    UCCounterTransaction = YAHOO.util.Connect.asyncRequest("GET", "/site/support/json_getusedcount.spy", {success:updateCounter_callback_success, failure:updateCounter_callback_failure, argument:[updateContainerID]}, null);
    YAHOO.util.Connect.resetFormState()
  }
}

function updateCounter_callback_success(o)
{
  try {
    var count = parseInt(getresponsetext(o));
    
    /*var marker = "------>";
    var textIdx = o.responseText.indexOf(marker);
    var count = 0;

    if(textIdx != -1) {
      textIdx += marker.length;
      count = parseInt(eval(o.responseText.substring(textIdx)));
    }*/

    var updateContainerID = o.argument[0];
    
    var nums = [ XLib.getElement("number0"), XLib.getElement("number1"), XLib.getElement("number2"), XLib.getElement("number3") ]
    
    var sCount = count.toString();
    while(sCount.length < 4) sCount = "0" + sCount;
    if(count > 500) sCount = "+500";
    
    for(var i = 0; i < sCount.length; i++) {
      if(nums[i] != null) {
        var c = sCount.charAt(i);
        if(c != '+') {          
          nums[i].src = numberImages[parseInt(c)].src;          
        } else {
          nums[i].src = numberplusImage.src;
        }
      }  
    }
    
    if(updateContainerID != null) {
      var El = $e(updateContainerID);
      if(El != null) {
        if(count > 500) {
          El.innerHTML = "plus de 500";
        }
        else {
          El.innerHTML = count.toString();
        }
      }
    }
  }
  catch(e) {}
  UCCounterTransaction = null;
  
  if(updateCounter_OnComplete != null) {
    updateCounter_OnComplete();
    updateCounter_OnComplete = null;
  }
}

function updateCounter_callback_failure(o)
{
  UCCounterTransaction = null;
}

function setMatch(f, fieldname)
{
  if(f[fieldname[0]].selectedIndex != 0) {
    if(f[fieldname[1]].selectedIndex == 0) {
      f[fieldname[1]].style.color = '#cc0000';
    }
  }
  else if(f[fieldname[0]].selectedIndex == 0 && f[fieldname[1]].selectedIndex == 0) {
    f[fieldname[0]].style.color = '#000000';
    f[fieldname[1]].style.color = '#000000';
  }
  else {
    f[fieldname[0]].style.color = '#cc0000';
  }
}

function displayDetails(carid)
{
  var m = new YAHOO.util.Motion($e("details" + carid), { height:{ from:0, to:200 } }, 0.5, YAHOO.util.Easing.easeOut);
  var a = new YAHOO.util.Anim($e("details" + carid), { opacity:{ from:0, to:1 } }, 0.5, YAHOO.util.Easing.easeOut);
  a.animate();
  m.animate();
  return false;
}

function details_infoMoveComplete()
{
  detail_infoMoving = false;
}

function details_infoLeft()
{
  if(!detail_infoMoving) {
    detail_infoMoving = true;
    var id = "detailsinfoscroller";
    var e = XLib.getElement(id);
    var attributes = { points : { by: [238, 0] } };
    if(e != null) {
      var cur = e.getAttribute("cur");
      if(cur != null) cur = parseInt(cur);
      else cur = 0;
      if(cur > 0) {
        cur--;
        e.setAttribute("cur", cur.toString());
        var m = new YAHOO.util.Motion(e, attributes, 0.5, YAHOO.util.Easing.easeBoth);
        m.onComplete.subscribe(details_infoMoveComplete);
        m.animate();
      }
      else detail_infoMoving = false;
    }
    else detail_infoMoving = false;
  }
  return false;
}

function details_infoRight()
{
  if(!detail_infoMoving) {
    detail_infoMoving = true;
    var id = "detailsinfoscroller";
    var e = XLib.getElement(id);
    var attributes = { points : { by: [-238, 0] } };
    if(e != null) {
      var max = e.getAttribute("max");
      var cur = e.getAttribute("cur");
      if(max != null) max = parseInt(max);
      else max = 0
      if(cur != null) cur = parseInt(cur);
      else cur = 0;
      if(cur < max) {
        cur++;
        e.setAttribute("cur", cur.toString());
        var m = new YAHOO.util.Motion(e, attributes, 0.5, YAHOO.util.Easing.easeBoth);
        m.onComplete.subscribe(details_infoMoveComplete);
        m.animate();
      }
      else detail_infoMoving = false;
    }
    else detail_infoMoving = false;
  }
  return false;
}

function search3CarsOnToggle()
{
  var search3CarsOn = document.getElementById("search3carson");
  var search3CarsOff = document.getElementById("search3carsoff");
  var ev = document.getElementById("extravehicles");
  
  if(search3CarsOn != null && search3CarsOff != null && ev != null) {
    search3CarsOn.style.display = 'none';
    search3CarsOff.style.display = '';
    ev.style.display = '';
  }
  
  return false;
}

function search3CarsOffToggle()
{
  var search3CarsOn = document.getElementById("search3carson");
  var search3CarsOff = document.getElementById("search3carsoff");
  var ev = document.getElementById("extravehicles");
  
  if(search3CarsOn != null && search3CarsOff != null && ev != null) {
    search3CarsOff.style.display = 'none';
    ev.style.display = 'none';
    search3CarsOn.style.display = '';
  }
  
  return false;
}

function usedSearch_panelCarType()
{
  var e1 = document.getElementById("usedSearchPanelCarType");
  var e2 = document.getElementById("usedSearchPanelMakeModel");
  
  if(e1 != null && e2 != null) {
    e1.src = imgsCarType['on'].src;
    e2.src = imgsMake['off'].src;
    
    var trs = document.getElementsByTagName("div")
    for(var i = 0; i < trs.length; i++) {
      if(trs[i].className == 'trCarType') {
        trs[i].style.display = '';
      }
      else if(trs[i].className == 'trByMakeModel') {
        if(trs[i].id == 'extraVehicles') {
          trs[i].setAttribute("s", trs[i].style.display);
        }
        trs[i].style.display = 'none';
      }
    }
  }
  return false;
}

function usedSearch_panelMakeModel()
{
  var e1 = document.getElementById("usedSearchPanelCarType");
  var e2 = document.getElementById("usedSearchPanelMakeModel");
  
  if(e1 != null && e2 != null) {
    e1.src = imgsCarType['off'].src;
    e2.src = imgsMake['on'].src;
    
    var trs = document.getElementsByTagName("div")
    for(var i = 0; i < trs.length; i++) {
      if(trs[i].className == 'trCarType') {
        trs[i].style.display = 'none';
      }
      else if(trs[i].className == 'trByMakeModel') {
        var s = null;
        if(trs[i].id == 'extraVehicles') {
          var s = trs[i].getAttribute("s");
        }
        trs[i].style.display = (s != null) ? s : '';
      }
    }
  }
  return false;
}

function reSubmitUsedCarSearch(pc, f) {
  //pc failed callback
  f.postalcode.value = pc;  
  if (doSubmitUsedCarSearch(f))
     f.submit();  
}

function doSubmitUsedCarSearch(f) {
  var cls_convertible = f.clsconvertible.checked;
  var cls_coupe = f.clscoupe.checked;
  var cls_sedan = f.clssedan.checked;
  var cls_wagon = f.clswagon.checked;
  var cls_hatchback = f.clshatchback.checked;
  var cls_minivan = f.clsminivan.checked;
  var cls_suv = f.clssuv.checked;
  var cls_pickup = f.clspickup.checked;
  var postalcode = f.postalcode.value;
  
  if(isBlank(postalcode) || !validatePC(f.postalcode, true, true, false, true)) {
    //alert("The postalcode is either invalid or not specified.  You must specify a valid postalcode in order to proceed.");
    mainpcPopup(reSubmitUsedCarSearch, f, 600, 300);        
    return false;
  }  
  
  var categories = []
  if(cls_convertible || cls_coupe || cls_sedan || cls_wagon || cls_hatchback) {
    f.category.value = '1'
    var bodystyles = []
    if(cls_convertible) {
      bodystyles[bodystyles.length] = 3;
    }
    if(cls_coupe) {
      bodystyles[bodystyles.length] = 1;
    }
    if(cls_sedan) {
      bodystyles[bodystyles.length] = 2;
    }
    if(cls_wagon) {
      bodystyles[bodystyles.length] = 5;
    }
    if(cls_hatchback) {
      bodystyles[bodystyles.length] = 4;
    }
    
    var s = "";
    for(var i = 0; i < bodystyles.length; i++) {
      if(s != "") s += ":";
      s += bodystyles[i].toString();
    }
    f.bodystyle.value = s;    
  
  }
  if(cls_minivan) {    
    f.category1.value = '2'
  }
  if(cls_suv) {    
    f.category2.value = '3'
  }
  if(cls_pickup) {
    f.category3.value = '4'
  }
  
  return true;
}

function submitPaymentSearch(f)
{
  p = f.payment;
  
  if(p.selectedIndex < 1) {
    alert("Vous devez d'abord sélectionner le paiement mensuel !");
  }
  else {
    f.submit();
  }
  
  return false;
}

// ---------------------------------------------------------------------------------------------------------------------
// ---- obsolete ---- delete when certain ---- 2007.06.19 (within 5 days we'll know if we need it... safe to remove then
// ---------------------------------------------------------------------------------------------------------------------
/*
function submit_refine_search(f, maxOptions)
{
  var params = "";
  var _make = f.make;
  var _model = f.model;
  var _range = f.range;
  
  if(_make.selectedIndex > 0) {
    params += "&make=" + escape(_make.options[_make.selectedIndex].value).replace(" ","+");
    if(_model.selectedIndex > 0) {
      params += "&model=" + escape(_model.options[_model.selectedIndex].value).replace(" ","+");
    }
  }
  
  if(_range.selectedIndex > 0) {
    params += "&range=" + _range.options[_range.selectedIndex].value;
  }
  
  for(var i = 0; i < maxOptions; i++) {
    var o = "o_" + i.toString();
    var oo = document.getElementById(o + "_id");
    if(oo != null) {
      if(oo.checked) params += "&" + o + "=" + oo.value;
    }
  }
  
  var url = "/en/used/search/results.spy?" + refine_results_qs + params;
  document.location.href = url;
  return false;
}
*/
// ---------------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------------


function used_search_details_submitlead(f, url) {
  YAHOO.util.Connect.resetFormState();
  var callback = {
    success: used_search_details_submitlead_success,
    failure: used_search_details_submitlead_failure
  };
  
  YAHOO.util.Connect.setForm(f);
  var c = YAHOO.util.Connect.asyncRequest("GET", url, callback, null);
  
  var ee = document.getElementById("leadsubmitstatus");
  if(ee != null) ee.className = "wait-icon";
  
  var ee = document.getElementById("btn-submit");
  if(ee != null) ee.disabled = true;
  
  return false;  
}

function used_search_details_submitlead_success(o) {
  var ee = document.getElementById("leadsubmitstatus");
  if(ee != null) {
    ee.className = "";
    ee.innerHTML = "Merci, nous avons reçu votre demande and communiquerons avec vous sous peu."
  }  
  var ee = document.getElementById("btn-submit");
  if(ee != null) ee.disabled = false;  
}

function used_search_details_submitlead_failure(o) {
  var ee = document.getElementById("leadsubmitstatus");
  if(ee != null) {
    ee.className = "";
    ee.innerHTML = "Une erreur s'est produite lors de la réception de votre demande, veuillez réessayer."
  }  
  var ee = document.getElementById("btn-submit");
  if(ee != null) ee.disabled = false;
}

function isBlank(s)
{
  return (s == null || s == '');
}

function validateLeadForm(f)
{
  var i = 0;
  var s = '';

  if(isBlank(f.fullname.value))
    s = "Veuillez entrer votre nom"

  else if( (isBlank(f.dayarea.value)) || (isBlank(f.phone1.value)) || (isBlank(f.phone2.value)) )
    s = "Veuillez entrer votre numéro de téléphone (jour ou soir)";
 
  else if(isBlank(f.email.value))
    s = "Veuillez entrer votre courriel!"

  if(!isBlank(s))  {
    alert(s)
    return false
  }

  return true
}


function used_search_details_tabContent_failure(o) {
  var tab = o.argument[0];
  tab.innerHTML = "Data not available at the moment. Please try again later.";
}


function used_compare_start(f) {
  if(f.make.selectedIndex > 0 && f.model.selectedIndex > 0 && f.year.selectedIndex > 0) {
    appendToAction(f, f.make, f.model, f.year, "comparer");
    f.submit();
  } else {
    alert("Vous devez sélectionner une marque, un modèle et une année !");
  }  
  return false;
}

function updateSearchResultsTitle(f) {
  var h1s = document.getElementsByTagName("h1");
  if(h1s != null && h1s.length > 0) {
    var make = "";
    var model = "";
    
    if(typeof(f.make) != "undefined") {
      if(typeof(f.make.options) != "undefined") {
        if(f.make.selectedIndex >= 0) make = f.make.options[f.make.selectedIndex].value;
      }
      else if(typeof(f.make.value) != "undefined") {
        make = f.make.value;
      }      
    }
    
    if(typeof(f.model) != "undefined") {
      if(typeof(f.model.options) != "undefined") {
        if(f.model.selectedIndex >= 1) model = f.model.options[f.model.selectedIndex].text;
      }
      else if(typeof(f.model.value) != "undefined") {
        model = f.model.text;
      }
    }
    
    var title = "";
    if(make == "") {
      title = (js_auto123_language == 'en') ? ("Used Car Search Results") : ("Résultats de recherche d'autos d'occasion");
    }
    else {
      if(model == "") {
        title = (js_auto123_language == 'en') ? ("Used " + make) : (make + " d'occasion");
      }
      else {
        title = (js_auto123_language == 'en') ? ("Used " + make + " " + model) : (make + " " + model + " d'occasion");
      }
    }
    
    if(title != "") h1s[0].innerHTML = title;
  }
}
