/*
 Fonctions de ComboBox de Recherche VoVn

 Auteur: UNG SP
 Date de création : 26/09/2007
*/

_objSelects = new Array(); // Table d'objet de type 'SELECT' dépendant

function _InitSelect ()
{
 if ($('Vo')) $('Vo').checked = false;
 if ($('Vn')) $('Vn').checked = false;

 if ($('Marque')) _objSelects.push($('Marque'));
 if ($('Modele')) _objSelects.push($('Modele'));
 if ($('Carrosserie')) _objSelects.push($('Carrosserie'));
 if ($('Energie')) _objSelects.push($('Energie'));
 if ($('Type')) _objSelects.push($('Type'));
 if ($('Budget')) _objSelects.push($('Budget'));

 // Remplir le premier SELECT pour accélérer l'affichage
 RemplirSelect($('Marque'), _objSelects); _RefreshSelect ('Marque')
 RemplirSelect($('Budget'), _objSelects);

 if ($('Marque')) $('Marque').onchange = function () {_RefreshSelect('Marque')};
 if ($('Modele')) $('Modele').onchange = function () {_RefreshSelect('Modele')};
 if ($('Carrosserie')) $('Carrosserie').onchange = function () {_RefreshSelect('Carrosserie')};
 if ($('Energie')) $('Energie').onchange = function () {_RefreshSelect('Energie')};
 if ($('Type')) $('Type').onchange = function () {_RefreshSelect('Type')};
}

function _SelectedSelect (id, value)
{
 var objSelect;
 for (var i=0,len=_objSelects.length;i<len;i++) {
   if (_objSelects[i].id == id) {objSelect = _objSelects[i];break;}
 }
 if (objSelect)
 {
  for (var i = 0; i < objSelect.length; i++)
  {
   if (objSelect.options[i].value == value) {objSelect.selectedIndex = i;_RefreshSelect(id);break;}
  }
 }
}

function isArray(obj) {
 try {
   if (obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else
      return true;
 }
 catch (e) {
  return false
 }
}

// -----------------------------------------------------------------
// Fonction: RemplirSelect
// Description: Remplir un objet SELECT dependant d'autre SELECT
// Entree: SELECT destination, Liste des SELECTs dépendants
// Sortie: SELECT destination est rempli
// -----------------------------------------------------------------
RemplirSelect = function RemplirSelect ()
{
 if (arguments.length == 0) return;

 // Vérifier 1er argument du type SELECT
 if (arguments[0] == null) return; // l'objet n'existe pas
 if (!arguments[0].match('select')) return; // l'objet est du type SELECT
 var objSelect = arguments[0];
 var query = 'fonction=' + escape(objSelect.id);

 // Vérifier 2ème argument est un tableau de SELECT
 if (isArray(arguments[1]))
 {
  var tSelect = arguments[1];
  for (var i=0,len=tSelect.length;i<len;i++) {
    var matched = tSelect[i];
    if (matched) {
      // Recuperer les objets de type 'SELECT'
	  if (matched.match('select')) {
        if (matched.value != undefined) {
          if (!matched.value.blank()) query += '&' + matched.id + '=' + matched.value.strip();
        } // end if
      } // end if
    } // end if
  } // end for
  // Recuperer les checkboxs Vo et Vn
  if ($('Vo').checked) query += '&' + 'Vo=' + $('Vo').value;
  if ($('Vn').checked) query += '&' + 'Vn=' + $('Vn').value;
 }

if (arguments[2] != undefined) query += '&' + 'initValue=' + arguments[2];
//$('DEBUG').value = query;
//alert(query); // DEBUG

 var url = 'ajax/RechVoVn.phtml';

 // Desactiver l'attribut onmouseover
 objSelect.onmouseover = null;

 var req = new Ajax.Request (
 url,
 {
  asynchronous: true,
  method: 'post',
  parameters: query,
  onSuccess: function ( data ) {      // define call back function
// alert(data.responseText);
     var xmlDoc = data.responseXML;
     var xselectId = xmlDoc.getElementsByTagName('selectId');
     var xOption = xmlDoc.getElementsByTagName('option');

    var xinitValue = xmlDoc.getElementsByTagName('initValue');
    if (xinitValue[0]) var initValue = xinitValue[0].childNodes[0].nodeValue;
//if (initValue) alert(initValue); // DEBUG

     var id = xselectId[0].childNodes[0].nodeValue;

     var objSelect;
     for (var i=0,len=tSelect.length;i<len;i++) {
       if (tSelect[i].id == id) {objSelect = tSelect[i];break;}
     }

     // Sauvegarder la valeur de l'option sélectionnée
     var val_old = objSelect.value;
     if (initValue) val_old = initValue;

     // Remplir les options du Select
     if (xOption.length > 0) {
      objSelect.options.length = 0;
      for (var i = 0; i < xOption.length; i++)
      {
       var xval = xOption[i].childNodes[0].firstChild;
       var xtext = xOption[i].childNodes[1].firstChild
       if (xval) var val  = xOption[i].childNodes[0].firstChild.nodeValue;
       else var val = '';
       if (xtext) var text = xOption[i].childNodes[1].firstChild.nodeValue;
       else var text = '';

       if (val == val_old) objSelect.options[objSelect.options.length] = new Option(text, val, true, true); // Restaurer l'option sélectionnée
       else objSelect.options[objSelect.options.length] = new Option(text, val);
      } // end for
     } // end if
    } // end function
 });

}

function _RefreshCheckBox (id)
{
 switch (id)
 {
  case 'Vo':
  case 'Vn':
//    RemplirSelect($('Marque'), _objSelects);
//    RemplirSelect($('Modele'), _objSelects);
//    RemplirSelect($('Carrosserie'), _objSelects);
//    RemplirSelect($('Energie'), _objSelects);
//    RemplirSelect($('Type'), _objSelects);
    RemplirSelect($('Marque'), _objSelects); _RefreshSelect ('Marque')
    break;
 }
}

function _RefreshSelect (id)
{
 switch (id)
 {
  case 'Marque':
    _RazSelect($('Modele'));
    _RazSelect($('Carrosserie'));
    _RazSelect($('Energie'));
    _RazSelect($('Type'));
    if ($('Modele')) $('Modele').onmouseover  = function () {RemplirSelect($('Modele'), _objSelects)};
    break;
  case 'Modele':
    _RazSelect($('Carrosserie'));
    _RazSelect($('Energie'));
    _RazSelect($('Type'));
    if ($('Carrosserie')) $('Carrosserie').onmouseover = function () {RemplirSelect($('Carrosserie'), _objSelects)};
    if ($('Energie')) $('Energie').onmouseover = function () {RemplirSelect($('Energie'), _objSelects)};
    if ($('Type')) $('Type').onmouseover = function () {RemplirSelect($('Type'), _objSelects)};
    break;
  case 'Carrosserie':
//    if ($('Carrosserie')) $('Carrosserie').onmouseover = function () {RemplirSelect($('Carrosserie'), _objSelects)};
    if ($('Energie')) $('Energie').onmouseover = function () {RemplirSelect($('Energie'), _objSelects)};
    if ($('Type')) $('Type').onmouseover = function () {RemplirSelect($('Type'), _objSelects)};
    break;
  case 'Energie':
    if ($('Carrosserie')) $('Carrosserie').onmouseover = function () {RemplirSelect($('Carrosserie'), _objSelects)};
//    if ($('Energie')) $('Energie').onmouseover = function () {RemplirSelect($('Energie'), _objSelects)};
    if ($('Type')) $('Type').onmouseover = function () {RemplirSelect($('Type'), _objSelects)};
    break;
  case 'Type':
    if ($('Carrosserie')) $('Carrosserie').onmouseover = function () {RemplirSelect($('Carrosserie'), _objSelects)};
    if ($('Energie')) $('Energie').onmouseover = function () {RemplirSelect($('Energie'), _objSelects)};
//    if ($('Type')) $('Type').onmouseover = function () {RemplirSelect($('Type'), _objSelects)};
    break;
 }
}

function _RazSelect (objSelect)
{
 if (!objSelect) return;
 var id = objSelect.id;
 var text = '';

// objSelect.onmouseover = null;
// objSelect.onchange = null;
 switch (id)
 {
  case 'Marque':
    text = 'Marque';
    break;
  case 'Modele':
    text = 'Modèle';
    break;
  case 'Carrosserie':
    text = 'Carrosserie';
    break;
  case 'Energie':
    text = 'Energie';
    break;
  case 'Type':
    text = 'Type';
    break;
  case 'Budget':
    text = 'Budget en euros';
    break;
 } // end switch
 if (text != '')
 {
  objSelect.options.length = 1;
  objSelect.options[0].value = '';
  objSelect.options[0].text  = text;
  objSelect.options.selectedIndex = 0;
 }
}

