if(typeof(AUTO123) == "undefined") AUTO123 = new Object();

/*
CarFinder_WidgetTemplate = function() {
  return {
    selectorRetrieved: false,
    openWindow: function(language) {},
    closeWindow: function() {},
    fillSelector: function(language) {},
    selectorSuccess: function(data, o) {},
    selectItem: function(cbid) {},
    itemChange: function(o) {},
    updateSelection: function(elemid) {},
    createWidget: function() {}
  }
}();
*/

CarFinder_Widgets = function() {
    
  return {
    
    getBasicHTML: function(code, title, closetext, updatetext, onclick, closeWindow) {
      var t = "";
      t += '<div id="' + code + '-selector" class="x-window dim" style="display: none;">';
      t += '<div class="header zround-corner-tl zround-corner-tr zround-corners">';
      t += '<div>';
      t += '<div class="bold title">' + title + '</div>';
      t += '<div><a href="javascript:;" onclick="' + (closeWindow != null ? closeWindow : "") + '">' + closetext + '&nbsp;<span class="bold">X</span></a></div>';
      t += '</div>';
      t += '</div>';
      t += '<div class="x-content zround-corners" style="zmargin: 1px 1px; background: url(\'/site/img/xbgbody.gif\') 0 0 no-repeat;">';
      t += '<div style="overflow: auto; margin: 4px 0;" id="' + code + '-selector-content" class="x-content-clean trans" overflow="auto">';
      t += '<form id="carfinder-' + code + '-selector" name="carfinder-' + code + '-selector" method="get" action="." onsubmit="return false;" zstyle="visibility: hidden;">';
      t += '</form>';
      t += '</div>';
      t += '</div>';
      t += '<div class="footer zround-corner-bl zround-corner-br zround-corners" style="text-align: right;"><a href="javascript:;" onclick="' + (closeWindow != null ? closeWindow : "") + ';' + (onclick != null ? onclick : "") + '" style="color: white;">' + updatetext + '</a></div>';
      t += '</div>';
      return t;
    },
    
    getSelectedCheckboxes: function(cbroot) {
      var selected = {};
      var f = document.getElementById("carfinder-search-form");
      if(f != null) {
        var inp = f.getElementsByTagName("input");
        for(var i = 0; i < inp.length; i++) {
          var attr = inp[i].getAttribute("type");
          if(attr != null && attr.toLowerCase() == "hidden") {
            attr = inp[i].getAttribute("id");
            if(attr != null && attr.indexOf(cbroot) == 0) {
              selected[inp[i].value] = true;
            }
          }
        }
      }
      return selected;
    },
    
    getSelectedIds: function(cbroot) {
      var selected = [];
      var f = document.getElementById("carfinder-search-form");
      if(f != null) {
        var inp = f.getElementsByTagName("input");
        for(var i = 0; i < inp.length; i++) {
          var attr = inp[i].getAttribute("type");
          if(attr != null && attr.toLowerCase() == "hidden") {
            attr = inp[i].getAttribute("id");
            if(attr != null && attr.indexOf(cbroot) == 0) {
              selected[selected.length] = attr;
            }
          }
        }
      }
      return selected;
    },
    
    createCBIfRequired: function(cbname, mf, optioncb) {
      var cbid = cbname + '_id';
      var cb = document.getElementById(cbid);
      
      if(cb == null && optioncb.checked) {
        cb = document.createElement("input");
        cb.setAttribute("type", "hidden");
        cb.setAttribute("name", cbname);
        cb.setAttribute("id", cbid);//IG ?
        cb.setAttribute("value", "");
        mf.appendChild(cb);
      }
      return cb;
    },
    
    loadDefaults: function(language) {
      var selected = AUTO123.CarFinder.base_Widget.getSelectedIds("cf-");
      var hasValue = {};
      
      var g = AUTO123.CarFinder.globals;

      for(var i = 0; i < selected.length; i++) {
        if(typeof(hasValue.bodystyle) == "undefined" && selected[i].indexOf(g.ROOT_MASTERFORM + "-" + g.ROOT_BODYSTYLE + "-") == 0) {        
          hasValue.bodystyle = true;
          AUTO123.CarFinder.BodyStyles.fillSelector(language);
        }
        
        if(typeof(hasValue.price) == "undefined" && selected[i].indexOf(g.ROOT_MASTERFORM + "-" + g.ROOT_PRICE + "-") == 0) {
          hasValue.price = true;
          AUTO123.CarFinder.Prices.fillSelector(language);
        }
        
        if(typeof(hasValue.make) == "undefined" && selected[i].indexOf(g.ROOT_MASTERFORM + "-" + g.ROOT_MAKE + "-") == 0) {
          hasValue.make = true;
          AUTO123.CarFinder.Makes.fillSelector(language);
        }
        
        if(typeof(hasValue.drivingperformance) == "undefined" && selected[i].indexOf(g.ROOT_MASTERFORM + "-" + g.ROOT_DRIVINGPERFORMANCE + "-") == 0) {
          hasValue.drivingperformance = true;
          AUTO123.CarFinder.DrivingPerformance.fillSelector(language);
        }
        
        if(typeof(hasValue.fueleconomy) == "undefined" && selected[i].indexOf(g.ROOT_MASTERFORM + "-" + g.ROOT_FUELECONOMY + "-") == 0) {          
          hasValue.fueleconomy = true;
          AUTO123.CarFinder.FuelEconomy.fillSelector(language);
        }
        
        if(typeof(hasValue.equipment) == "undefined" && selected[i].indexOf(g.ROOT_MASTERFORM + "-" + g.ROOT_EQUIPMENT + "-") == 0) {
          hasValue.equipment = true;
          AUTO123.CarFinder.Equipment.fillSelector(language);
        }
        
        if(typeof(hasValue.powertrain) == "undefined" && selected[i].indexOf(g.ROOT_MASTERFORM + "-" + g.ROOT_POWERTRAIN + "-") == 0) {
          hasValue.powertrain = true;
          AUTO123.CarFinder.Powertrain.fillSelector(language);
        }
        
      }
    },
    
    /**
    Get the data and display it in the popup window form.
    */
    displayData: function(data, section, form_id, onclick_func, colcount) {
      var g = AUTO123.CarFinder.globals;
      var selected = AUTO123.CarFinder.base_Widget.getSelectedCheckboxes(g.ROOT_MASTERFORM + "-" + section + "-");
      var f = document.getElementById(form_id);
      if(f != null) {
        var text = '<table class="cleantable" style="width: 100% !important;" id="'+section+'-selector-table">';
        var cbid;
        var cbname;
        var isChecked;
        //var colcount=3;
        var per_col = parseInt(data.length/colcount) + (data.length%colcount ? 1 : 0);
        
        text += '<tr><td  class="check-box-block">';
        
        for(i = 0; i < data.length; i++) {
          cbname = section + "-" + i.toString();
          cbid = cbname + '_id';
          if (i != 0 && i%per_col == 0){            
            text += '</td><td class="check-box-block">';
          }
          
          isChecked = (typeof(selected[data[i][0]]) != "undefined" ? " checked" : "");
          
          text += '<input type="checkbox" value="' + data[i][0] + '" name="' + cbname + '" onclick="'+onclick_func+'" id="' + cbid + '" text="' + data[i][1] + '"' + isChecked + ' style="margin-bottom:5px;">';  
          text += '<label for="' + cbid + '">' + data[i][1] + '</label><br>';
        }
        text += '</td></tr></table>'
        
        f.innerHTML = text;
      }
      
      return true;
    },
    
    g_updateSelection: function(elemid, section, form_id) {
      
      var g = AUTO123.CarFinder.globals;
      var e = document.getElementById(elemid);
      var mf = document.getElementById("carfinder-search-form");
      var f = document.getElementById(form_id);
      
      if(e != null && f != null && mf != null) {
        var checkboxes = f.getElementsByTagName("input");
        var t = "";
        for(var i = 0; i < checkboxes.length; i++) {
          if(checkboxes[i].getAttribute("type") == "checkbox") {
            var cbname = g.ROOT_MASTERFORM + "-" + section + "-" + i.toString();
            var cbid = cbname + '_id';
            var cb = AUTO123.CarFinder.base_Widget.createCBIfRequired(cbname, mf, checkboxes[i]);

            if(checkboxes[i].checked) {
              var displayText = checkboxes[i].getAttribute("text");
              if(displayText != null) {
                //if(t != "") t += '<br/>';
                t += '<div class="param" onmouseover="this.className=\'param_on\';" onmouseout="this.className=\'param\';"><table class="cf-param"><tr><td>' + displayText + '</td><td class="remove_param"><span class="remove_param" onclick="cb=document.getElementById(\''+checkboxes[i].id+'\'); if(cb){cb.checked=false; AUTO123.CarFinder.base_Widget.g_updateSelection(\''+elemid+'\', \''+section+'\', \''+form_id+'\');}">[<span class="highlighted">x</span>]</span></td></tr></table></div>';
                cb.setAttribute("value", checkboxes[i].value);
              }
            }
            else if(cb != null) {
              try{
                mf.removeChild(cb);
              } catch(e){
                alert('cb.name: ' + cb.name + '\n' + 'cb.id: ' + cb.id + '\n' + 'cb.parentNode.name: ' + cb.parentNode.name + '\n' + 'cb.parentNode.id: ' + cb.parentNode.id + '\n');
                
                cb = document.getElementById(cb.name);
                alert('cb.name: ' + cb.name + '\n' + 'cb.id: ' + cb.id + '\n' + 'cb.parentNode.name: ' + cb.parentNode.name + '\n' + 'cb.parentNode.id: ' + cb.parentNode.id + '\n');
              }
            }
          }
        }
        
        if(typeof(AUTO123.Elements) != "undefined") {
          AUTO123.Elements.updateInnerHTML(e.id, t);
        }
        else {
          e.innerHTML = t;
        }
      }
    },
    
    curvePath: true
  }
}();

CarFinder_WidgetMake = function() {
  return {
    selectorRetrieved: false,
    
    openWindow: function(language) {
      this.fillSelector(language); 
      if(typeof(AUTO123.Windows) != "undefined") {
        onComplete = function() {
          if(YAHOO.env.ua.gecko > 0) {
            AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_MAKE, 1, 0.4);
          }
        };
        AUTO123.Windows.openWindowCentered('make-selector', 480, 300, AUTO123.CarFinder.base_Widget.curvePath, onComplete);
      }
    },
    
    closeWindow: function() {
      if(typeof(AUTO123.Windows) != "undefined") {
        if(YAHOO.env.ua.gecko > 0) {
          AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_MAKE, 0, 0.4);
        }
        AUTO123.Windows.hideWindow('make-selector');
      }
    },
    
    fillSelector: function(language) {
      if(!this.selectorRetrieved) {
        this.createWidget(language);
        AUTO123.NewCars.getMakes(true, this.selectorSuccess, null);
        this.selectorRetrieved = true;
      }
    },

    
    selectorSuccess: function(data, o) {
      var g = AUTO123.CarFinder.globals;
      AUTO123.CarFinder.base_Widget.displayData(data, g.ROOT_MAKE, AUTO123.CarFinder.globals.SELECTOR_MAKE, 'AUTO123.CarFinder.Makes.itemChange(this);', 3);
      
      AUTO123.CarFinder.Makes.updateSelection('carfinder-search-makes');
    },
    
    selectItem: function(cbid) {
      var cb = document.getElementById(cbid);
      if(cb != null) {
        cb.checked = (cb.checked) ? false : true;
        cb.blur();
        this.itemChange(cb);
      }
      return false;
    },

    itemChange: function(o) {
      var aname = "a-" + o.id;
      var e = document.getElementById(aname);
      if(e != null) {
        //YAHOO.util.Dom.setStyle(e, "opacity", o.checked ? 1 : 0.6);
      }
    },
    
    updateSelection: function(elemid) {
      var g = AUTO123.CarFinder.globals;
      var e = document.getElementById(elemid);
      var f = document.getElementById(AUTO123.CarFinder.globals.SELECTOR_MAKE);
      var mf = document.getElementById("carfinder-search-form");
      var section = g.ROOT_MAKE;
      var form_id = AUTO123.CarFinder.globals.SELECTOR_MAKE;
      if(e != null && f != null && mf != null) {
        var checkboxes = f.getElementsByTagName("input");
        var t = "";
        for(var i = 0; i < checkboxes.length; i++) {
          if(checkboxes[i].getAttribute("type") == "checkbox") {
            var cbname = g.ROOT_MASTERFORM + "-" + g.ROOT_MAKE + "-" + i.toString();
            var cbid = cbname + '_id';
            var cb = AUTO123.CarFinder.base_Widget.createCBIfRequired(cbname, mf, checkboxes[i]);
          
            if(checkboxes[i].checked) {
              var displayText = checkboxes[i].getAttribute("text");
              if(displayText != null) {
                //if(t != "") t += '<br/>';
                //t += displayText //checkboxes[i].value;
                t += '<div class="param" onmouseover="this.className=\'param_on\';" onmouseout="this.className=\'param\';"><table class="cf-param"><tr><td>' + displayText + '</td><td class="remove_param"><span class="remove_param" onclick="cb=document.getElementById(\''+checkboxes[i].id+'\'); if(cb){cb.checked=false; AUTO123.CarFinder.base_Widget.g_updateSelection(\''+elemid+'\', \''+section+'\', \''+form_id+'\');}">[<span class="highlighted">x</span>]</span></td></tr></table></div>';
                cb.setAttribute("value", checkboxes[i].value);
              }
            }
            else if(cb != null) {
              mf.removeChild(cb);
            }
          }
        }
        
        if(typeof(AUTO123.Elements) != "undefined") {          
          AUTO123.Elements.updateInnerHTML(e.id, t);
        }
        else {
          e.innerHTML = t;
        }
      }
    },
    
    createWidget: function(language) {
      var o = document.getElementById("make-selector");
      if(language == 'en'){
        var w_title = "Available Makes";
        var w_close = "Close";
        var w_update = "Update Makes";
      }else{
        var w_title = "Marques disponibles";
        var w_close = "Fermer";
        var w_update = "Modifier les marques";
      }
      if(o == null) {
        var d = document.createElement("div");
        d.setAttribute("class", "js-popup");
        d.innerHTML = AUTO123.CarFinder.base_Widget.getBasicHTML("make", w_title, w_close, w_update, "AUTO123.CarFinder.Makes.updateSelection('carfinder-search-makes')", "AUTO123.CarFinder.Makes.closeWindow()");
        document.body.appendChild(d);
        if(typeof(AUTO123.Elements) != "undefined" && YAHOO.env.ua.gecko > 0) {
          AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_MAKE, 0, 0);
        }
      }
    }
  }
}();

CarFinder_WidgetBodystyle = function() {
  return {
    selectorRetrieved: false,
    
    openWindow: function(language) {
      this.fillSelector(language);
      if(typeof(AUTO123.Windows) != "undefined") {
        onComplete = function() {
          if(YAHOO.env.ua.gecko > 0) {
            AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_BODYSTYLE, 1, 0.4);
          }
        };
        if(AUTO123.CarFinder.globals.BODYSTYLE_SIMPLE){
          var ww = 280;
          var wh = 150;
        }else{
          var ww = 480;
          var wh = 400;
        }
        AUTO123.Windows.openWindowCentered('bodystyle-selector', ww, wh, AUTO123.CarFinder.base_Widget.curvePath, onComplete)
      }
    },
    
    closeWindow: function() {
      if(typeof(AUTO123.Windows) != "undefined") {
        if(YAHOO.env.ua.gecko > 0) {
          AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_BODYSTYLE, 0, 0.4);
        }
        AUTO123.Windows.hideWindow('bodystyle-selector');
      }
    },
    
    fillSelector: function(language) {
      if(!this.selectorRetrieved) {
        this.createWidget(language);
        AUTO123.NewCars.getBodyStyles(this.selectorSuccess, null, language);
        this.selectorRetrieved = true;
      }
    },
    
    
    selectorSuccess: function(bodystyles, o) {
      if (AUTO123.CarFinder.globals.BODYSTYLE_SIMPLE){
        var g = AUTO123.CarFinder.globals;
        AUTO123.CarFinder.base_Widget.displayData(bodystyles, g.ROOT_BODYSTYLE, AUTO123.CarFinder.globals.SELECTOR_BODYSTYLE, 'AUTO123.CarFinder.BodyStyles.itemChange(this);', 2);
        
        //AUTO123.CarFinder.BodyStyles.updateSelection('carfinder-search-bodystyles');
        AUTO123.CarFinder.base_Widget.g_updateSelection('carfinder-search-bodystyles', g.ROOT_BODYSTYLE, AUTO123.CarFinder.globals.SELECTOR_BODYSTYLE);
      }else{
        var g = AUTO123.CarFinder.globals;
        var selected = AUTO123.CarFinder.base_Widget.getSelectedCheckboxes(g.ROOT_MASTERFORM + "-" + g.ROOT_BODYSTYLE + "-");
        var f = document.getElementById(AUTO123.CarFinder.globals.SELECTOR_BODYSTYLE);
        if(f != null) {
          var text = '<table class="cleantable selector" style="width: 100% !important;" id="bodystyle-selector-table">';
          var cols = 4;
          var cnt = 0;
          var isChecked;
          
          for(var classid in bodystyles) {
            cnt++;
            var classData = bodystyles[classid];
            var classText = classData[0];
            var bsList = classData[1];
            var cbname = g.ROOT_BODYSTYLE + "-" + classid;
            var cbid = cbname + '_id';
            var tdstyle = "";
            var value = classid;
            
            if(cnt > 1) {
              text += '<tr><td colspan="' + ((cols + 2) * 2).toString() + '">&nbsp;</td></tr>';
            }
            
            //isChecked = (typeof(selected[classText]) != "undefined" ? " checked" : "");
            isChecked = (typeof(selected[value]) != "undefined" ? " checked" : "");
            
            text += '<tr>';
            text += '<td class="master-check-box"><input type="checkbox" id="' + cbid + '" name="' + cbname + '" text="' + classText + '" value="' + value + '" onclick="AUTO123.CarFinder.BodyStyles.itemChange(this)" master="1"' + isChecked + '></td>';
            text += '<td class="master-text" colspan="' + ((cols + 1) * 2).toString() + '"><a href="javascript:;" id="a-' + cbid + '" colspan="' + ((cols + 1) * 2).toString() + '" onclick="AUTO123.CarFinder.BodyStyles.selectItem(\'' + cbid + '\'); return false;">' + classText + '</a></td>';
            text += '</tr>';
            
            var tb = [];
            for(var i = 0; i < bsList.length; i++) {
              if(i == 0 || i % cols == 0) tb[tb.length] = [];
              tb[tb.length - 1][tb[tb.length - 1].length] = bsList[i];
            }
            
            
            var per_col = parseInt(tb.length/cols) + (tb.length%cols ? 1 : 0);
            for(i = 0; i < tb.length; i++) {
              cnt++;
              text += '<tr>';
              for(var j = 0; j < tb[i].length; j++) {
                //tdstyle = (j == 0) ? 'padding-left: 18px;' : '';
                cbname = g.ROOT_BODYSTYLE + "-" + classid + ":" + tb[i][j][0];
                cbid = name + '_id';
                var bsText = tb[i][j][1];
                var optSubText = classText + ':' + bsText;
                //var value = classText + ':' + tb[i][j][1];
                var value = classid + ':' + tb[i][j][0];
                isChecked = (typeof(selected[value]) != "undefined" ? " checked" : "");
                text += '<td class="check-box" style="widthzzz: 1px;' + tdstyle + ';"><input type="checkbox" id="' + cbid + '" value="' + value + '" text="' + optSubText + '" name="' + cbname + '" onclick="AUTO123.CarFinder.BodyStyles.itemChange(this)"' + isChecked + '></td>';
                text += '<td class="text"><a href="javascript:;" id="a-' + cbid + '" onclick="AUTO123.CarFinder.BodyStyles.selectItem(\'' + cbid + '\'); return false;">' + bsText + '</a></td>';
              }
              text += '</tr>'
            }          
          }
          
          text += '</table>';
          f.innerHTML = text;
        }
        
        AUTO123.CarFinder.BodyStyles.updateSelection('carfinder-search-bodystyles');
      }
    },
    
    selectItem: function(cbid) {
      var o = document.getElementById(cbid);
      if(o != null) {
        o.checked = (o.checked) ? false : true;
        o.blur();
        this.itemChange(o);
      }
      return false;
    },

    
    itemChange: function(o) {
      if(AUTO123.CarFinder.globals.BODYSTYLE_SIMPLE){
        var aname = "a-" + o.id;
        var e = document.getElementById(aname);
        if(e != null) {
          //YAHOO.util.Dom.setStyle(e, "opacity", o.checked ? 1 : 0.6);
        }
      }else{
        var aname = "a-" + o.id;
        var e = document.getElementById(aname);
        if(e != null) {
          //YAHOO.util.Dom.setStyle(e, "opacity", o.checked ? 1 : 0.4);
        }
        
        var master = o.getAttribute("master");
        var f = document.getElementById(AUTO123.CarFinder.globals.SELECTOR_BODYSTYLE);
        if(f != null && master != null && master == "1") {
          var cbroot = o.getAttribute("id");
          if(cbroot != null) {
            var checkboxes = f.getElementsByTagName("input");
            var t = "";
            for(var i = 0; i < checkboxes.length; i++) {
              if(checkboxes[i].getAttribute("type") == "checkbox") {
                var cbid = checkboxes[i].getAttribute("id");
                if(cbid != null) {
                  if(cbid != cbroot && cbid.indexOf(cbroot) == 0) {
                    if(o.checked) {
                      checkboxes[i].disabled = true;
                    }
                    else {
                      checkboxes[i].disabled = false;
                    }
                    
                    if(YAHOO.env.ua.gecko > 0) {
                      YAHOO.util.Dom.setStyle(checkboxes[i], "opacity", !o.checked ? 1 : 0.4);
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    
    
    /**
    This function is only needed if AUTO123.CarFinder.globals.BODYSTYLE_SIMPLE is false
    */
    updateSelection: function(elemid) {
      var g = AUTO123.CarFinder.globals;
      var mf = document.getElementById("carfinder-search-form");
      var e = document.getElementById(elemid);
      var f = document.getElementById(AUTO123.CarFinder.globals.SELECTOR_BODYSTYLE);
      
      if(e != null && f != null && mf != null) {
        
        var checkboxes = f.getElementsByTagName("input");
        var t = "";
        for(var i = 0; i < checkboxes.length; i++) {
          if(checkboxes[i].getAttribute("type") == "checkbox") {
            var cbname = g.ROOT_MASTERFORM + "-" + g.ROOT_BODYSTYLE + "-" + i.toString();
            var cbid = cbname + '_id';
            var cb = AUTO123.CarFinder.base_Widget.createCBIfRequired(cbname, mf, checkboxes[i]);
       
            if(checkboxes[i].checked && !checkboxes[i].disabled) {
              var displayText = checkboxes[i].getAttribute("text"); //checkboxes[i].value;
              var cidx = displayText.indexOf(":");
              if(cidx >= 0) {
                var _dt1 = displayText.substring(0, cidx);
                var _dt2 = displayText.substring(cidx+1);
                displayText = _dt2 + ' (<span style="font-weight: bold;">' + _dt1 + '</span>)';
              }
              else {
                displayText = '<span style="font-weight: bold;">' + displayText + '</span>';
              }
            
              if(t != "") t += '<br/>';
              t += displayText;
              cb.setAttribute("value", checkboxes[i].value);
            }
            else if(cb != null) {
              mf.removeChild(cb);
            }
          }
        }
        
        if(typeof(AUTO123.Elements) != "undefined") {      
          AUTO123.Elements.updateInnerHTML(e.id, t);
        }
        else {
          e.innerHTML = t;
        }
      }
    },
    
    
    createWidget: function(language) {
      var g = AUTO123.CarFinder.globals;
      var o = document.getElementById("bodystyle-selector");
      if(language == 'en'){
        var w_title = "Available Body Styles";
        var w_close = "Close";
        var w_update = "Update Body Styles";
      }else{
        var w_title = "Catégories disponibles";
        var w_close = "Fermer";
        var w_update = "Modifier les catégories";
      }
      if(o == null) {
        var d = document.createElement("div");
        d.setAttribute("class", "js-popup");
        if (AUTO123.CarFinder.globals.BODYSTYLE_SIMPLE){
          d.innerHTML = AUTO123.CarFinder.base_Widget.getBasicHTML("bodystyle", w_title, w_close, w_update, "AUTO123.CarFinder.base_Widget.g_updateSelection('carfinder-search-bodystyles', '"+g.ROOT_BODYSTYLE+"', '"+AUTO123.CarFinder.globals.SELECTOR_BODYSTYLE+"')", "AUTO123.CarFinder.BodyStyles.closeWindow()");
        }else{
          d.innerHTML = AUTO123.CarFinder.base_Widget.getBasicHTML("bodystyle", w_title, w_close, w_update, "AUTO123.CarFinder.BodyStyles.updateSelection('carfinder-search-bodystyles')", "AUTO123.CarFinder.BodyStyles.closeWindow()");
        }
        
        document.body.appendChild(d);
        if(typeof(AUTO123.Elements) != "undefined") {
          if(YAHOO.env.ua.gecko > 0) {
            AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_BODYSTYLE, 0, 0);
          }
        }
      }
    }
  }
}();

CarFinder_WidgetPrice = function() {
  return {
    selectorRetrieved: false,

    openWindow: function(language) {
      this.fillSelector(language); 
      if(typeof(AUTO123.Windows) != "undefined") {
        onComplete = function() {
          if(YAHOO.env.ua.gecko > 0) {
            AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_PRICE, 1, 0.4)
          }
        };
        AUTO123.Windows.openWindowCentered('price-selector', 480, 210, AUTO123.CarFinder.base_Widget.curvePath, onComplete);
      }
    },
    
    closeWindow: function() {
      if(typeof(AUTO123.Windows) != "undefined") {
        if(YAHOO.env.ua.gecko > 0) {
          AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_PRICE, 0, 0.4);
        }
        AUTO123.Windows.hideWindow('price-selector');
      }
    },
    
    fillSelector: function(language) {
      if(!this.selectorRetrieved) {
        this.createWidget(language);
        AUTO123.NewCars.getPrices(this.selectorSuccess, null, language);
        this.selectorRetrieved = true;
      }
    },
    
    selectorSuccess: function(data, o) {
      var g = AUTO123.CarFinder.globals;
      AUTO123.CarFinder.base_Widget.displayData(data, g.ROOT_PRICE, AUTO123.CarFinder.globals.SELECTOR_PRICE, 'AUTO123.CarFinder.Prices.itemChange(this);', 2);
      
      AUTO123.CarFinder.base_Widget.g_updateSelection('carfinder-search-prices', g.ROOT_PRICE, AUTO123.CarFinder.globals.SELECTOR_PRICE);
      
    },
    
    selectItem: function(cbid) {      
      var o = document.getElementById(cbid);
      if(o != null) {
        o.checked = (o.checked) ? false : true;
        o.blur();
        this.itemChange(o);
      }
      return false;
    },
    
    itemChange: function(o) {
    },
    
    updateSelection: function(elemid) {
      
      var g = AUTO123.CarFinder.globals;
      var e = document.getElementById(elemid);
      var mf = document.getElementById("carfinder-search-form");
      var f = document.getElementById(AUTO123.CarFinder.globals.SELECTOR_PRICE);

      if(e != null && f != null && mf != null) {
        var checkboxes = f.getElementsByTagName("input");
        var t = "";
        for(var i = 0; i < checkboxes.length; i++) {
          if(checkboxes[i].getAttribute("type") == "checkbox") {
            var cbname = g.ROOT_MASTERFORM + "-" + g.ROOT_PRICE + "-" + i.toString();
            var cbid = cbname + '_id';
            var cb = AUTO123.CarFinder.base_Widget.createCBIfRequired(cbname, mf, checkboxes[i]);

            if(checkboxes[i].checked) {
              var displayText = checkboxes[i].getAttribute("text");
              if(displayText != null) {
                if(t != "") t += '<br/>';
                t += displayText;
                cb.setAttribute("value", checkboxes[i].value);
              }
            }
            else if(cb != null) {
              mf.removeChild(cb);
            }
          }
        }
        
        if(typeof(AUTO123.Elements) != "undefined") {
          AUTO123.Elements.updateInnerHTML(e.id, t);
        }
        else {
          e.innerHTML = t;
        }
      }
    },
    
    createWidget: function(language) {
      var g = AUTO123.CarFinder.globals;
      var o = document.getElementById("price-selector");
      if(language == 'en'){
        var w_title = "Available Price Ranges";
        var w_close = "Close";
        var w_update = "Update Price Ranges";
      }else{
        var w_title = "Prix disponibles";
        var w_close = "Fermer";
        var w_update = "Modifier les prix";
      }
      if(o == null) {
        var d = document.createElement("div");
        d.setAttribute("class", "js-popup");
        d.innerHTML = AUTO123.CarFinder.base_Widget.getBasicHTML("price", w_title, w_close, w_update, "AUTO123.CarFinder.base_Widget.g_updateSelection('carfinder-search-prices', '"+g.ROOT_PRICE+"', '"+AUTO123.CarFinder.globals.SELECTOR_PRICE+"')", "AUTO123.CarFinder.Prices.closeWindow()");
        document.body.appendChild(d);
        if(typeof(AUTO123.Elements) != "undefined") {
          if(YAHOO.env.ua.gecko > 0) {
            AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_PRICE, 0, 0);
          }
        }
      }
    }
  }
}();

CarFinder_WidgetPerformance = function() {
  return {
    selectorRetrieved: false,
    
    openWindow: function(language) {      
      this.fillSelector(language);
      if(typeof(AUTO123.Windows) != "undefined") {
        onComplete = function() {
          if(YAHOO.env.ua.gecko > 0) {
            AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_DRIVINGPERFORMANCE, 1, 0.4)
          }
        };
        AUTO123.Windows.openWindowCentered('performance-selector', 480, 210, AUTO123.CarFinder.base_Widget.curvePath, onComplete);
      }
    },
    
    closeWindow: function() {
      if(typeof(AUTO123.Windows) != "undefined") {
        if(YAHOO.env.ua.gecko > 0) {
          AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_DRIVINGPERFORMANCE, 0, 0.4);
        }
        AUTO123.Windows.hideWindow('performance-selector');
      }
    },
    
    fillSelector: function(language) {
      if(!this.selectorRetrieved) {
        this.createWidget(language);
        AUTO123.NewCars.getPerformanceOptions(this.selectorSuccess, null, language);        
        this.selectorRetrieved = true;
      }
    },
    
    selectorSuccess: function(data, o) {
      var g = AUTO123.CarFinder.globals;
      var selected = AUTO123.CarFinder.base_Widget.getSelectedCheckboxes(g.ROOT_MASTERFORM + "-" + g.ROOT_DRIVINGPERFORMANCE + "-");      
      var f = document.getElementById(AUTO123.CarFinder.globals.SELECTOR_DRIVINGPERFORMANCE);     
      if(f != null) {
        var text = '<table class="cleantable selector" style="width: 100% !important;" id="performanceoptions-selector-table">';
        var cbid;
        var isChecked;
        var cols = 3;
        var cnt = 0;
        //text += '<tr>';
        
        for(var cat in data) {
          cnt++;
          var optData = data[cat];
          var optText = optData[0];
          var optSubs = optData[1];
          var cbname = g.ROOT_DRIVINGPERFORMANCE + "-" + cat;
          var cbid = cbname + '_id';
          var value = cat;
          var tdstyle = "";
          var name = g.ROOT_DRIVINGPERFORMANCE + "-" + cat;
          
          if(cnt > 1) {
            text += '<tr><td colspan="' + ((cols + 2) * 2).toString() + '">&nbsp;</td></tr>';
          }
          
          isChecked = (typeof(selected[value]) != "undefined" ? " checked" : ""); //optText
          
          text += '<tr>';
          text += '<td class="master-text" colspan="' + ((cols + 1) * 2).toString() + '"><span style="color:#FFFFFF; font-weigth:bold;">' + optText + '</span> <span style="cursor:pointer; color:#538397;text-decoration: underline;" onclick="rr=document.getElementsByName(\''+name+'\');for(var i = 0; i < rr.length; i++){rr[i].checked=false;};">Clear</span></td>';
          text += '</tr>';
          
          var tb = [];
          for(var i = 0; i < optSubs.length; i++) {
            if(i == 0 || i % cols == 0) tb[tb.length] = [];
            tb[tb.length - 1][tb[tb.length - 1].length] = optSubs[i];
          }
          
          for(i = 0; i < tb.length; i++) {
            cnt++;
            text += '<tr>';
            for(var j = 0; j < tb[i].length; j++) {
              //tdstyle = (j == 0) ? 'padding-left: 18px;' : '';
              cbname = g.ROOT_DRIVINGPERFORMANCE + "-" + tb[i][j][0];
              cbid = cbname + '_id';
              var optSubText = optText + ':' + tb[i][j][1];
              var value = cat + ':' + tb[i][j][0];
              
              
              isChecked = (typeof(selected[value]) != "undefined" ? " checked" : "");
              text += '<td class="check-box"><input type="radio" id="' + cbid + '" value="' + value + '" text="'+optSubText+'" name="' + name + '" onclick=" AUTO123.CarFinder.DrivingPerformance.itemChange(this);"' + isChecked + '><label for="' + cbid + '" >' + tb[i][j][1] + '</label></td>';
            }
            text += '</tr>'
          }
        }
        text += '</table>';
        
        f.innerHTML = text;
      }
      AUTO123.CarFinder.DrivingPerformance.updateSelection('carfinder-search-performance');
    },
    
    selectItem: function(cbid)
    {      
      var o = document.getElementById(cbid);
      if(o != null) {
        o.checked = (o.checked) ? false : true;
        o.blur();
        this.itemChange(o);
      }
      return false;
    },
    
    itemChange: function(o) {
      var aname = "a-" + o.id;
      var e = document.getElementById(aname);
      if(e != null) {
        //YAHOO.util.Dom.setStyle(e, "opacity", o.checked ? 1 : 0.4);
      }
      
      var master = o.getAttribute("master");
      var f = document.getElementById(AUTO123.CarFinder.globals.SELECTOR_DRIVINGPERFORMANCE);
      if(f != null && master != null && master == "1") {
        var cbroot = o.getAttribute("id");
        if(cbroot != null) {
          var checkboxes = f.getElementsByTagName("input");
          var t = "";
          for(var i = 0; i < checkboxes.length; i++) {
            if(checkboxes[i].getAttribute("type") == "checkbox") {
              var cbid = checkboxes[i].getAttribute("id");
              if(cbid != null) {
                if(cbid != cbroot && cbid.indexOf(cbroot) == 0) {
                  if(o.checked) {
                    checkboxes[i].disabled = true;
                  }
                  else {
                    checkboxes[i].disabled = false;
                  }
                  
                  if(YAHOO.env.ua.gecko > 0) {
                    YAHOO.util.Dom.setStyle(checkboxes[i], "opacity", !o.checked ? 1 : 0.4);
                  }
                }
              }
            }
          }
        }
      }
    },
    
    updateSelection: function(elemid) {
      var g = AUTO123.CarFinder.globals;
      var mf = document.getElementById("carfinder-search-form");
      var e = document.getElementById(elemid);
      var f = document.getElementById(AUTO123.CarFinder.globals.SELECTOR_DRIVINGPERFORMANCE);
      
      if(e != null && f != null && mf != null) {
        
        var checkboxes = f.getElementsByTagName("input");
        var t = "";
        for(var i = 0; i < checkboxes.length; i++) {
          if(checkboxes[i].getAttribute("type") == "radio") {
            var cbname = g.ROOT_MASTERFORM + "-" + g.ROOT_DRIVINGPERFORMANCE + "-" + i.toString();
            var cbid = cbname + '_id';
            var cb = AUTO123.CarFinder.base_Widget.createCBIfRequired(cbname, mf, checkboxes[i]);
       
            if(checkboxes[i].checked && !checkboxes[i].disabled) {
              //var displayText = checkboxes[i].value;
              var displayText = checkboxes[i].getAttribute("text");
              var cidx = displayText.indexOf(":");
              if(cidx >= 0) {
                var _dt1 = displayText.substring(0, cidx);
                var _dt2 = displayText.substring(cidx+1);
                displayText = _dt2 + ' (<span style="font-weight: bold;">' + _dt1 + '</span>)';
              }
              else {
                displayText = '<span style="font-weight: bold;">' + displayText + '</span>';
              }
            
              if(t != "") t += '<br/>';
              t += displayText;
              cb.setAttribute("value", checkboxes[i].value);
            }
            else if(cb != null) {
              mf.removeChild(cb);
            }
          }
        }
        
        if(typeof(AUTO123.Elements) != "undefined") {      
          AUTO123.Elements.updateInnerHTML(e.id, t);
        }
        else {
          e.innerHTML = t;
        }
      }
    },
    
    createWidget: function(language) {
      var o = document.getElementById("performance-selector");
      if(language == 'en'){
        var w_title = "Available Driving &amp; Performance";
        var w_close = "Close";
        var w_update = "Update Driving &amp; Performance";
      }else{
        var w_title = "Conduite et Performance disponibles";
        var w_close = "Fermer";
        var w_update = "Modifier Conduite et Performance";
      }
      if(o == null) {
        var d = document.createElement("div");
        d.setAttribute("class", "js-popup");
        d.innerHTML = AUTO123.CarFinder.base_Widget.getBasicHTML("performance", w_title, w_close, w_update, "AUTO123.CarFinder.DrivingPerformance.updateSelection('carfinder-search-performance')", "AUTO123.CarFinder.DrivingPerformance.closeWindow()");
        document.body.appendChild(d);
        if(typeof(AUTO123.Elements) != "undefined") {
          if(YAHOO.env.ua.gecko > 0) {
            AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_DRIVINGPERFORMANCE, 0, 0);
          }
        }
      }
    }
  }
}();

CarFinder_WidgetPowertrain = function() {
  return {
    selectorRetrieved: false,
    
    openWindow: function(language) {      
      this.fillSelector(language);
      if(typeof(AUTO123.Windows) != "undefined") {
        onComplete = function() {
          if(YAHOO.env.ua.gecko > 0) {
            AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_POWERTRAIN, 1, 0.4)
          }
        };
        AUTO123.Windows.openWindowCentered('powertrain-selector', 400, 300, AUTO123.CarFinder.base_Widget.curvePath, onComplete);
      }
    },
    
    closeWindow: function() {
      if(typeof(AUTO123.Windows) != "undefined") {
        if(YAHOO.env.ua.gecko > 0) {
          AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_POWERTRAIN, 0, 0.4);
        }
        AUTO123.Windows.hideWindow('powertrain-selector');
      }
    },
    
    fillSelector: function(language) {
      if(!this.selectorRetrieved) {
        this.createWidget(language);
        AUTO123.NewCars.getPowertrainOptions(this.selectorSuccess, null, language);        
        this.selectorRetrieved = true;
      }
    },
    
    selectorSuccess: function(data, o) {
      var g = AUTO123.CarFinder.globals;
      var selected = AUTO123.CarFinder.base_Widget.getSelectedCheckboxes(g.ROOT_MASTERFORM + "-" + g.ROOT_POWERTRAIN + "-");      
      var f = document.getElementById(AUTO123.CarFinder.globals.SELECTOR_POWERTRAIN);     
      if(f != null) {
        var text = '<table class="cleantable selector" style="width: 100% !important;" id="powertrainoptions-selector-table">';
        var cbid;
        var isChecked;
        var cols = 3;
        var cnt = 0;
        //text += '<tr>';
        
        for(var cat in data) {
          cnt++;
          var optData = data[cat];
          var optText = optData[0];
          var optSubs = optData[1];
          var cbname = g.ROOT_POWERTRAIN + "-" + cat;
          var cbid = cbname + '_id';
          var value = cat;
          var tdstyle = "";
          var name = g.ROOT_POWERTRAIN + "-" + cat;
          
          if(cnt > 1) {
            text += '<tr><td colspan="' + ((cols + 2) * 2).toString() + '">&nbsp;</td></tr>';
          }
          
          isChecked = (typeof(selected[value]) != "undefined" ? " checked" : ""); //optText
          
          text += '<tr>';
          text += '<td class="master-text" colspan="' + ((cols + 1) * 2).toString() + '"><span style="color:#FFFFFF; font-weigth:bold;">' + optText + '</span><!-- <span style="cursor:pointer; color:#538397;text-decoration: underline;" onclick="rr=document.getElementsByName(\''+name+'\');for(var i = 0; i < rr.length; i++){rr[i].checked=false;};">Clear</span>--></td>';
          text += '</tr>';
          
          var tb = [];
          for(var i = 0; i < optSubs.length; i++) {
            if(i == 0 || i % cols == 0) tb[tb.length] = [];
            tb[tb.length - 1][tb[tb.length - 1].length] = optSubs[i];
          }
          
          for(i = 0; i < tb.length; i++) {
            cnt++;
            text += '<tr>';
            for(var j = 0; j < tb[i].length; j++) {
              //tdstyle = (j == 0) ? 'padding-left: 18px;' : '';
              cbname = g.ROOT_POWERTRAIN + "-" + tb[i][j][0];
              cbid = cbname + '_id';
              var optSubText = optText + ':' + tb[i][j][1];
              var value = cat + ':' + tb[i][j][0];
              
              
              isChecked = (typeof(selected[value]) != "undefined" ? " checked" : "");
              text += '<td class="check-box"><input type="checkbox" id="' + cbid + '" value="' + value + '" text="'+optSubText+'" name="' + name + '" onclick=" AUTO123.CarFinder.Powertrain.itemChange(this);"' + isChecked + '><label for="' + cbid + '" >' + tb[i][j][1] + '</label></td>';
            }
            text += '</tr>'
          }
        }
        text += '</table>';
        
        f.innerHTML = text;
      }
      AUTO123.CarFinder.Powertrain.updateSelection('carfinder-search-powertrain');
    },
    
    selectItem: function(cbid)
    {      
      var o = document.getElementById(cbid);
      if(o != null) {
        o.checked = (o.checked) ? false : true;
        o.blur();
        this.itemChange(o);
      }
      return false;
    },
    
    itemChange: function(o) {
      var aname = "a-" + o.id;
      var e = document.getElementById(aname);
      if(e != null) {
        //YAHOO.util.Dom.setStyle(e, "opacity", o.checked ? 1 : 0.4);
      }
      
      var master = o.getAttribute("master");
      var f = document.getElementById(AUTO123.CarFinder.globals.SELECTOR_POWERTRAIN);
      if(f != null && master != null && master == "1") {
        var cbroot = o.getAttribute("id");
        if(cbroot != null) {
          var checkboxes = f.getElementsByTagName("input");
          var t = "";
          for(var i = 0; i < checkboxes.length; i++) {
            if(checkboxes[i].getAttribute("type") == "checkbox") {
              var cbid = checkboxes[i].getAttribute("id");
              if(cbid != null) {
                if(cbid != cbroot && cbid.indexOf(cbroot) == 0) {
                  if(o.checked) {
                    checkboxes[i].disabled = true;
                  }
                  else {
                    checkboxes[i].disabled = false;
                  }
                  
                  if(YAHOO.env.ua.gecko > 0) {
                    YAHOO.util.Dom.setStyle(checkboxes[i], "opacity", !o.checked ? 1 : 0.4);
                  }
                }
              }
            }
          }
        }
      }
    },
    
    updateSelection: function(elemid) {
      var g = AUTO123.CarFinder.globals;
      var mf = document.getElementById("carfinder-search-form");
      var e = document.getElementById(elemid);
      var f = document.getElementById(AUTO123.CarFinder.globals.SELECTOR_POWERTRAIN);
      
      var section = g.ROOT_POWERTRAIN;
      var form_id = AUTO123.CarFinder.globals.SELECTOR_POWERTRAIN;
      
      if(e != null && f != null && mf != null) {
        
        var checkboxes = f.getElementsByTagName("input");
        var t = "";
        for(var i = 0; i < checkboxes.length; i++) {
          if(checkboxes[i].getAttribute("type") == "checkbox") {
            var cbname = g.ROOT_MASTERFORM + "-" + g.ROOT_POWERTRAIN + "-" + i.toString();
            var cbid = cbname + '_id';
            var cb = AUTO123.CarFinder.base_Widget.createCBIfRequired(cbname, mf, checkboxes[i]);
       
            if(checkboxes[i].checked && !checkboxes[i].disabled) {
              //var displayText = checkboxes[i].value;
              var displayText = checkboxes[i].getAttribute("text");
              var cidx = displayText.indexOf(":");
              if(cidx >= 0) {
                var _dt1 = displayText.substring(0, cidx);
                var _dt2 = displayText.substring(cidx+1);
                displayText = _dt2 + ' (<span style="font-weight: bold;">' + _dt1 + '</span>)';
              }
              else {
                displayText = '<span style="font-weight: bold;">' + displayText + '</span>';
              }
            
              //if(t != "") t += '<br/>';
              //t += displayText;
              
              t += '<div class="param" onmouseover="this.className=\'param_on\';" onmouseout="this.className=\'param\';"><table class="cf-param"><tr><td>' + displayText + '</td><td class="remove_param"><span class="remove_param" onclick="cb=document.getElementById(\''+checkboxes[i].id+'\'); if(cb){cb.checked=false; AUTO123.CarFinder.Powertrain.updateSelection(\''+elemid+'\');}">[<span class="highlighted">x</span>]</span></td></tr></table></div>';
              cb.setAttribute("value", checkboxes[i].value);
              cb.setAttribute("value", checkboxes[i].value);
            }
            else if(cb != null) {
              mf.removeChild(cb);
            }
          }
        }
        
        if(typeof(AUTO123.Elements) != "undefined") {      
          AUTO123.Elements.updateInnerHTML(e.id, t);
        }
        else {
          e.innerHTML = t;
        }
      }
    },
    
    createWidget: function(language) {
      var o = document.getElementById("powertrain-selector");
      if(language == 'en'){
        var w_title = "Available Driving &amp; Performance";
        var w_close = "Close";
        var w_update = "Update Driving &amp; Performance";
      }else{
        var w_title = "Conduite et Performance disponibles";
        var w_close = "Fermer";
        var w_update = "Modifier Conduite et Performance";
      }
      if(o == null) {
        var d = document.createElement("div");
        d.setAttribute("class", "js-popup");
        d.innerHTML = AUTO123.CarFinder.base_Widget.getBasicHTML("powertrain", w_title, w_close, w_update, "AUTO123.CarFinder.Powertrain.updateSelection('carfinder-search-powertrain')", "AUTO123.CarFinder.Powertrain.closeWindow()");
        document.body.appendChild(d);
        if(typeof(AUTO123.Elements) != "undefined") {
          if(YAHOO.env.ua.gecko > 0) {
            AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_POWERTRAIN, 0, 0);
          }
        }
      }
    }
  }
}();

CarFinder_WidgetFuel = function() {
  return {
    selectorRetrieved: false,

    openWindow: function(language) {
      this.fillSelector(language);
      if(typeof(AUTO123.Windows) != "undefined") {
        onComplete = function() {
          if(YAHOO.env.ua.gecko > 0) {
            AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_FUEL, 1, 0.4)
          }
        };
        AUTO123.Windows.openWindowCentered('fuel-selector', 480, 210, AUTO123.CarFinder.base_Widget.curvePath, onComplete);
      }
    },
    
    closeWindow: function() {
      if(typeof(AUTO123.Windows) != "undefined") {
        if(YAHOO.env.ua.gecko > 0) {
          AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_FUEL, 0, 0.4);
        }
        AUTO123.Windows.hideWindow('fuel-selector');
      }
    },

    fillSelector: function(language) {
      if(!this.selectorRetrieved) {
        this.createWidget(language);
        AUTO123.NewCars.getFuelEconomy(this.selectorSuccess, null, language);
        this.selectorRetrieved = true;
      }
    },

    selectorSuccess: function(data, o) {
      var g = AUTO123.CarFinder.globals;
      AUTO123.CarFinder.base_Widget.displayData(data, g.ROOT_FUELECONOMY, AUTO123.CarFinder.globals.SELECTOR_FUEL, 'AUTO123.CarFinder.FuelEconomy.itemChange(this);', 2);
      
      AUTO123.CarFinder.base_Widget.g_updateSelection('carfinder-search-fuel', g.ROOT_FUELECONOMY, AUTO123.CarFinder.globals.SELECTOR_FUEL);
    },

    selectItem: function(cbid) {
     var o = document.getElementById(cbid);
      if(o != null) {
        o.checked = (o.checked) ? false : true;
        o.blur();
        this.itemChange(o);
      }
      return false;
    },
      
    itemChange: function(o) {},
    
    createWidget: function(language) {
      var g = AUTO123.CarFinder.globals;
      var o = document.getElementById("fuel-selector");
      if(language == 'en'){
        var w_title = "Available Fuel Economy";
        var w_close = "Close";
        var w_update = "Update Fuel Economy";
      }else{
        var w_title = "Consommation d'essence disponible";
        var w_close = "Fermer";
        var w_update = "Modifier la consommation d'essence";
      }
      if(o == null) {
        var d = document.createElement("div");
        d.setAttribute("class", "js-popup");
        d.innerHTML = AUTO123.CarFinder.base_Widget.getBasicHTML("fuel", w_title, w_close, w_update, "AUTO123.CarFinder.base_Widget.g_updateSelection('carfinder-search-fuel', '"+g.ROOT_FUELECONOMY+"', '"+AUTO123.CarFinder.globals.SELECTOR_FUEL+"')", "AUTO123.CarFinder.FuelEconomy.closeWindow()");
        document.body.appendChild(d);
        if(typeof(AUTO123.Elements) != "undefined") {
          if(YAHOO.env.ua.gecko > 0) {
            AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_FUEL, 0, 0);
          }
        }
      }
    }
  }
}();

CarFinder_WidgetEquipment = function() {
  return {
    selectorRetrieved: false,
    
    openWindow: function(language) {
      this.fillSelector(language);
      if(typeof(AUTO123.Windows) != "undefined") {
        onComplete = function() {
          if(YAHOO.env.ua.gecko > 0) {
            AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_EQUIPMENT, 1, 0.4)
          }
        };
        AUTO123.Windows.openWindowCentered('equipment-selector', 600, 250, AUTO123.CarFinder.base_Widget.curvePath, onComplete);
      }
    },
    
    closeWindow: function() {
      if(typeof(AUTO123.Windows) != "undefined") {
        if(YAHOO.env.ua.gecko > 0) {
          AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_EQUIPMENT, 0, 0.4);
        }
        AUTO123.Windows.hideWindow('equipment-selector');
      }
    },

    fillSelector: function(language) {
      if(!this.selectorRetrieved) {
        this.createWidget(language);
        AUTO123.NewCars.getEquipment(this.selectorSuccess, null, language);
        this.selectorRetrieved = true;
      }
    },
    
    /** 
    The function should receive the data (equipment) as a list
    of pairs [[key, title],[...],]
    */
    selectorSuccess: function(data, o) {
      var g = AUTO123.CarFinder.globals;
      AUTO123.CarFinder.base_Widget.displayData(data, g.ROOT_EQUIPMENT, AUTO123.CarFinder.globals.SELECTOR_EQUIPMENT, 'AUTO123.CarFinder.Equipment.itemChange(this);', 2);
      
      AUTO123.CarFinder.base_Widget.g_updateSelection('carfinder-search-equipment', g.ROOT_EQUIPMENT, AUTO123.CarFinder.globals.SELECTOR_EQUIPMENT);
    },

    itemChange: function(o) {
      var aname = "a-" + o.id;
      var e = document.getElementById(aname);
      if(e != null) {
        //YAHOO.util.Dom.setStyle(e, "opacity", o.checked ? 1 : 0.4);
      }
      
      var master = o.getAttribute("master");
      var f = document.getElementById(AUTO123.CarFinder.globals.SELECTOR_EQUIPMENT);
      if(f != null && master != null && master == "1") {
        var cbroot = o.getAttribute("id");
        if(cbroot != null) {
          var checkboxes = f.getElementsByTagName("input");
          var t = "";
          for(var i = 0; i < checkboxes.length; i++) {
            if(checkboxes[i].getAttribute("type") == "checkbox") {
              var cbid = checkboxes[i].getAttribute("id");
              if(cbid != null) {
                if(cbid != cbroot && cbid.indexOf(cbroot) == 0) {
                  if(o.checked) {
                    checkboxes[i].disabled = true;
                  }
                  else {
                    checkboxes[i].disabled = false;
                  }
                  
                  if(YAHOO.env.ua.gecko > 0) {
                    YAHOO.util.Dom.setStyle(checkboxes[i], "opacity", !o.checked ? 1 : 0.4);
                  }
                }
              }
            }
          }
        }
      }
    },
    
    createWidget: function(language) {
      var g = AUTO123.CarFinder.globals;
      var o = document.getElementById("equipment-selector");
      if(language == 'en'){
        var w_title = "Available Equipment";
        var w_close = "Close";
        var w_update = "Update Equipment";
      }else{
        var w_title = "Équipements disponibles";
        var w_close = "Fermer";
        var w_update = "Modifier les Équipements";
      }
      if(o == null) {
        var d = document.createElement("div");
        d.setAttribute("class", "js-popup");
        d.innerHTML = AUTO123.CarFinder.base_Widget.getBasicHTML("equipment", w_title, w_close, w_update, "AUTO123.CarFinder.base_Widget.g_updateSelection('carfinder-search-equipment', '"+g.ROOT_EQUIPMENT+"', '"+AUTO123.CarFinder.globals.SELECTOR_EQUIPMENT+"')", "AUTO123.CarFinder.Equipment.closeWindow()");
        document.body.appendChild(d);
        if(typeof(AUTO123.Elements) != "undefined") {
          if(YAHOO.env.ua.gecko > 0) {
            AUTO123.Elements.setOpacity(AUTO123.CarFinder.globals.SELECTOR_EQUIPMENT, 0, 0);
          }
        }
      }
    }
  }
}();

AUTO123.CarFinder = function() {
  return {
    globals: function() {
      return {
        ROOT_MASTERFORM: "cf",
        ROOT_BODYSTYLE: "bodystyle-cb",
        ROOT_PRICE: "price-cb",
        ROOT_MAKE: "make-cb",
        ROOT_DRIVINGPERFORMANCE: "performance-cb",
        ROOT_FUELECONOMY: "fuel-cb",
        ROOT_EQUIPMENT: "equipment-cb",
        ROOT_POWERTRAIN: "powertrain-cb",
        SELECTOR_BODYSTYLE: "carfinder-bodystyle-selector",
        SELECTOR_PRICE: "carfinder-price-selector",
        SELECTOR_MAKE: "carfinder-make-selector",
        SELECTOR_FUEL: "carfinder-fuel-selector",
        SELECTOR_DRIVINGPERFORMANCE: "carfinder-performance-selector",
        SELECTOR_EQUIPMENT: "carfinder-equipment-selector",
        SELECTOR_POWERTRAIN: "carfinder-powertrain-selector",
        BODYSTYLE_SIMPLE:true
      }
    }(),
  
    base_Widget: CarFinder_Widgets,
    Makes: CarFinder_WidgetMake,
    Prices: CarFinder_WidgetPrice,
    BodyStyles: CarFinder_WidgetBodystyle,
    DrivingPerformance: CarFinder_WidgetPerformance,
    FuelEconomy: CarFinder_WidgetFuel,
    Equipment: CarFinder_WidgetEquipment,
    Powertrain: CarFinder_WidgetPowertrain
  }
}();

function car_finder_results_page(pg, order){

  var mf = document.getElementById("carfinder-search-form");
  
  if (pg){
    var in_id = 'cf-pg';
    var in_pg = mf[in_id];
    if (in_pg){
      in_pg.value = pg;
    }else{
      in_pg = document.createElement("input");
      in_pg.setAttribute("type", "hidden");
      in_pg.setAttribute("name", 'pg');
      in_pg.setAttribute("id", in_id);
      in_pg.setAttribute("value", pg);
      mf.appendChild(in_pg);
    }
  }
  
  if(order){
    var in_id = 'cf-order';
    var in_ord = mf[in_id];
    if (in_ord){
      in_ord.value = order;
    }else{
      in_ord = document.createElement("input");
      in_ord.setAttribute("type", "hidden");
      in_ord.setAttribute("name", 'order');
      in_ord.setAttribute("id", in_id);
      in_ord.setAttribute("value", order);
      mf.appendChild(in_ord);
    }
  }
  
  mf.submit();
}

function car_finder_add_param(param_name, val, submit){

  var mf = document.getElementById("carfinder-search-form");
  
  if (param_name){
    var in_id = 'cf-' + param_name;
    var in_obj = mf[in_id];
    if (in_obj){
      in_obj.value = val;
    }else{
      in_obj = document.createElement("input");
      in_obj.setAttribute("type", "hidden");
      in_obj.setAttribute("name", param_name);
      in_obj.setAttribute("id", in_id);
      in_obj.setAttribute("value", val);
      mf.appendChild(in_obj);
    }
  }
  if(submit){
    mf.submit();
  }
}



