/**************************************************************

Dropdown menu for Oscommerce.

Based on the jsrs code of Brent Ashley.

Author: Iván Prieto
Url: www.euskopc.com (in construction)

***************************************************************/

// constants
var noValue = '-99';
var fab_lleno='0';
var cat_lleno='0';
var fab_preselect='0';
var cat_preselect='0';
IDCategories = noValue;
IDSubcategories = noValue;
IDManufacturers = noValue;
var boolEnabled = true;
var curOption = new Array();
var isLoaded = new Array();

function initLists(){
  // initialize lists
  emptyList( 'manufacturers_id' );
  emptyList( 'categories_id' );
  emptyList( 'subcategories_id' );

  jsrsExecute( 'select_rs.php', cbFillOptions, 'manufacturersList');
  jsrsExecute( 'select_rs.php', cbFillMake, 'categoriesList',Array(''+IDManufacturers+'',''+languages_id+'') );
}

function preselect(idCategories,idSubcategories,idManufacturers,selectable){
  boolEnabled = selectable;
  if(idManufacturers=="-99"){
    IDManufacturers = '';
  }
  else{
    IDManufacturers = idManufacturers;
    fab_preselect=parseInt("1");
  }

  if(idCategories=="-99"){
    IDCategories = '';
  }
  else{
    IDCategories = idCategories;
    cat_preselect=parseInt("1");
  }
  if(idSubcategories=="-99"){
    IDSubcategories = '';
  }
  else{
    IDSubcategories = idSubcategories;
  }

  initLists();
}

function manufacturers_id_onChange(){
  var val = this.options[this.selectedIndex].value;
  IDManufacturers = val;
  IDCategories = noValue;
  IDSubcategories = noValue;
  if(val == noValue){
    initLists();
  }
  else {
    fab_lleno="1";
    curOption[this.name] = val;
    // init dependent lists
    emptyList( 'categories_id' );
    emptyList( 'subcategories_id' );
    window.status = 'cargando categorías...';
    jsrsExecute( 'select_rs.php', cbFillMake, 'categoriesList', Array(val,languages_id) );
  }
}

function categories_id_onChange(){
  var val = this.options[this.selectedIndex].value;
  var fabri=this.form.manufacturers_id.options[this.form.manufacturers_id.selectedIndex].value;

  if(val==""){
    document.forms['QForm']['categories_id'].options[0].text=DROPDOWNMENU_SEARCH_ALL_CATEGORIES;
    document.forms['QForm']['categories_id'].options[0].style.color='black';
    emptyList( 'subcategories_id' );
  }
  else{
    //init dependent lists
    cat_lleno="1";
    emptyList( 'subcategories_id' );
    window.status = 'cargando subcategorías...';
    jsrsExecute( 'select_rs.php', cbFillModel, 'subcategoriesList', Array(fabri,val,languages_id) );
  }
}

function subcategories_id_onChange(){
//be happy
}

function cbFillMake ( strCategories ){
  window.status = '';
  fillList( 'categories_id',  strCategories );
  if(IDCategories == noValue || IDCategories == ''){
  }
  else{
        jsrsExecute( 'select_rs.php', cbFillModel, 'subcategoriesList', Array(''+IDManufacturers+'',''+IDCategories+'',''+languages_id+'') );
    if(cat_preselect=='1'){
      cat_lleno=parseInt("1");
    }
  }
}

function cbFillModel ( strSubcategories ){
  // callback for dependent listbox
  window.status = '';
  fillList( 'subcategories_id',  strSubcategories );
}

function cbFillOptions( strManufacturers ){
  // callback for dependent listbox
  window.status = '';

  fillList( 'manufacturers_id', strManufacturers );
  if(IDManufacturers != ""){
    jsrsExecute( 'select_rs.php', cbFillMake, 'categoriesList', Array(''+IDManufacturers+'',''+languages_id+'') );
    if(fab_preselect=='1'){
      fab_lleno=parseInt("1");
    }
  }
}

function search_all_text(listName){
  if (listName=='manufacturers_id'){
    document.forms['QForm'][listName].options[0] = new Option(DROPDOWNMENU_SEARCH_ALL_MANUFACTURERS, '');
  }
  else if (listName=='categories_id'){
    document.forms['QForm'][listName].options[0] = new Option(DROPDOWNMENU_SEARCH_ALL_CATEGORIES, '');
  }
  else{
    document.forms['QForm'][listName].options[0] = new Option(DROPDOWNMENU_SEARCH_ALL_SUBCATEGORIES, '');
  }
}

function fillList( listName, strManufacturers ){
  // fill any list with options
  emptyList( listName );
  // always insert selection prompt
  var lst = document.forms['QForm'][listName];
  if(strManufacturers!=''){
  if(fab_lleno=="1"){
    if(curOption['manufacturers_id']==""){
      document.forms['QForm']['manufacturers_id'].options[0].text=DROPDOWNMENU_SEARCH_ALL_MANUFACTURERS;
      document.forms['QForm']['manufacturers_id'].options[0].style.color='black';
      search_all_text('categories_id');
      document.forms['QForm']['categories_id'].options[0].style.color='black';
    }
    else{
    document.forms['QForm']['manufacturers_id'].options[0].text = DROPDOWNMENU_CLEAN_DATA;
    document.forms['QForm']['manufacturers_id'].options[0].style.color='blue';
    lst.options[0] = new Option(DROPDOWNMENU_CONTAINS_DATA, '');
    lst.options[0].style.color='red';
    }
  fab_lleno="0";
  }
  else{
    if (cat_lleno=="1"){
      search_all_text(listName);
      document.forms['QForm']['categories_id'].options[0].text = DROPDOWNMENU_CLEAN_DATA;
      document.forms['QForm']['categories_id'].options[0].style.color='blue';
      lst.options[0].style.color='black';
      cat_lleno="0";
      cat_limpiar_activado="1";
    }
    else{
search_all_text(listName);
    }
  }

  // options in form "value~displaytext|value~displaytext|..."
  var aOptionPairs = strManufacturers.split('|');
  for( var i = 0; i < aOptionPairs.length; i++ ){
    if (aOptionPairs[i].indexOf('~') != -1) {
      var aOptions = aOptionPairs[i].split('~');
      lst.options[i + 1] = new Option(aOptions[1], aOptions[0]);
    }
  }
  switch(listName){
  	case 'categories_id':
		  ID = IDCategories;
		break;
  	case 'subcategories_id':
		  ID = IDSubcategories;
		break;
	case 'manufacturers_id':
		  ID = IDManufacturers;
		break;
  }
  // init to no value
  selectOption( listName, ID );
  isLoaded[listName] = true;
  lst.disabled = false;
  lst.onchange = eval( listName + "_onChange" );
  }
  else document.forms['QForm'][listName].options[0] = new Option(DROPDOWNMENU_NO_DATA, '');
}

function emptyList( listName ){
  var lst = document.forms['QForm'][listName];
  lst.options.length = 0;
  lst.onchange = null;
  lst.disabled = true;
  isLoaded[listName] = false;
  curOption[listName] = noValue;
  lst.style.width=145;
  lst.style.background='#ffffff';
}
function selectOption( listName, optionVal ){
  // set list selection to option based on value
  var lst = document.forms['QForm'][listName];
  for( var i = 0; i< lst.options.length; i++ ){
    if( lst.options[i].value == optionVal ){
      lst.selectedIndex = i;
      curOption[listName] = optionVal;
      return;
    }
  }
}

