// constants
var noValue = '';

// globals
var curOption = new Array();
var isLoaded = new Array();

function body_onLoad(){
  // Inizializzo i SelectBox
  initList('lstMarca');
  emptyList('lstModello');
  jsrsExecute('/res/jsrsServer_AutoForm_public.asp', cbFillModello, 'ModelloList', document.FormAuto.idMarca.value); 

}

function lstMarca_onChange(){
  var val = this.options[this.selectedIndex].value;  
  if(val == "999999"){
		document.FormAuto.Modello.value = '';
		document.FormAuto.idMarca.value = val;
		
		emptyList('lstModello');
		//jsrsExecute('jsrsServer_AutoForm.asp', cbFillModello, 'ModelloListALTRE', document.FormAuto.idMarca.value); 

  } else {

		  if(val == noValue){
			selectOption(this.name, curOption[this.name])
			
			selectOption(this.name, 0)
			document.FormAuto.idMarca.value = '';
			document.FormAuto.Modello.value = '';
			emptyList('lstModello');
			//jsrsExecute('jsrsServer_AutoForm.asp', cbFillModello, 'ModelloListALL', val);
		  } else {
			curOption[this.name] = val;  
			document.FormAuto.Modello.value = '';
			document.FormAuto.idMarca.value = val;

			emptyList('lstModello');
			window.status = 'Caricamento Modelli...';
			jsrsExecute('/res/jsrsServer_AutoForm_public.asp', cbFillModello, 'ModelloList', val);
		  }  

  }  
  FormAuto.submit();


}

function lstModello_onChange(){
  var val = this.options[this.selectedIndex].value;
  if(val == noValue){
    selectOption(this.name, curOption[this.name])
	selectOption(this.name, 0)
	document.FormAuto.Modello.value = '';
  } else {
    curOption[this.name] = val;
	document.FormAuto.Modello.value = val;
    window.status = 'Caricamento Alimentazioni...';
  }  
  FormAuto.submit();
}



function cbFillMarca(strMarca){ 
  window.status = '';
  fillList('lstMarca', strMarca); 
  fillCombo('lstMarca', 'idMarca'); 
  val = document.FormAuto.idMarca.value;
	jsrsExecute('/res/jsrsServer_AutoForm_public.asp', cbFillModello, 'ModelloList', val);
}


function cbFillModello(strModello){ 
  // callback for dependent listbox
  window.status = '';
  fillList('lstModello', strModello); 
  fillCombo('lstModello', 'Modello'); 
  val = document.FormAuto.Modello.value;
  //jsrsExecute('jsrsServer_AutoForm.asp', cbFillAlimentazione, 'AlimentazioneList', val);
}
/*
function cbFillAlimentazione(strAlimentazione){ 
  // callback for dependent listbox
  window.status = '';
  fillList('lstAlimentazione', strAlimentazione); 
  fillCombo('lstAlimentazione', 'hidAlimentazione'); 
  val = document.FormAuto.hidAlimentazione.value;
	//Passo alla funzione dell'Allestimento sia il Modello che l'Alimentazione, separati da '~'
	val = document.FormAuto.lstModello.options[document.FormAuto.lstModello.selectedIndex].value + "~" + val;
	jsrsExecute('jsrsServer_AutoForm.asp', cbFillAllestimento, 'AllestimentoList', val);
}

function cbFillAllestimento(strAllestimento){ 
  // callback for dependent listbox
  window.status = '';
  fillList('lstAllestimento', strAllestimento);
  fillCombo('lstAllestimento', 'hidAllestimento'); 
}

function cbSetCarrozzeria(strCarrozzeria) {
	objCbCarrozzeria = document.FormAuto.Carrozzeria;
	for (x=0;x<objCbCarrozzeria.length;x++) {
		if (objCbCarrozzeria.options[x].value==strCarrozzeria) {
			objCbCarrozzeria.options[x].selected = true;
		}
	}
}

function cbSetCilindrata(strCilindrata) {
	document.FormAuto.Cilindrata.value = strCilindrata;
}
*/

function fillList(listName, strAllestimento){
  // fill any list with options
  emptyList(listName);
  
  // always insert selection prompt
  var lst = document.forms['FormAuto'][listName];
  lst.disabled = true;
  lst.options[0] = new Option('-- Seleziona --', noValue);
  
  // options in form "value~displaytext|value~displaytext|..."
  var aOptionPairs = strAllestimento.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]);
    }  
  }
  
  // init to no value
  selectOption(listName, noValue);
  lst.onchange = eval(listName + "_onChange");
  isLoaded[listName] = true;
  lst.disabled = false;
}

function fillCombo(listName, hidName){
  // set list selection to option based on value
	var lst = document.forms['FormAuto'][listName];
	var hid = document.forms['FormAuto'][hidName].value;
	for( var i = 0; i< lst.options.length; i++ ){
		if( lst.options[i].value == hid ){
			lst.selectedIndex = i;
			curOption[listName] = hid;
			return;
		}  
	}
}

function initList(listName){
  var lst = document.forms['FormAuto'][listName];
  lst.onchange = null;
  isLoaded[listName] = false;
  curOption[listName] = noValue;
  // init to no value
//  selectOption(listName, noValue);
  lst.onchange = eval(listName + "_onChange");
  isLoaded[listName] = true;
  lst.disabled = false;
}

function emptyList(listName){
  var lst = document.forms['FormAuto'][listName];
  lst.options.length = 0;
  lst.onchange = null;
  isLoaded[listName] = false;
  curOption[listName] = noValue;
}

function selectOption(listName, optionVal){
  // set list selection to option based on value
  var lst = document.forms['FormAuto'][listName];
  for(var i = 0; i< lst.options.length; i++){
    if(lst.options[i].value == optionVal){
      lst.selectedIndex = i;
      curOption[listName] = optionVal;
      return;
    }  
  }
}
