var appVer  = navigator.appVersion.toLowerCase();
var appNum  = navigator.appVersion.substring(0,1);
var appName = navigator.appName;

//fuer den Mozilla 1.0, der sich wie ein IE verhaelt
if (navigator.userAgent.indexOf("rv:1.0") != -1)
 appName = "Microsoft Internet Explorer";


// berechnet, welcher wert gerade in der gegeben liste gewaehlt ist, wenn die
// liste nciht existiert, wird der leere string zurueckgeliefert. wenn in der liste
// nichts selektiert war, wird der erste wert zurueckgeliefert.
function list_value(list) {
  if (list) {
    var idx = list.selectedIndex;
    if (idx < 0)
      idx = 0;
    // alert(list+": returning value at "+idx);
    if (list.options[idx]) {
      return list.options[idx].value;
    } else {
      // FIXME: why can this happen?
      return "";
    }
  } else {
    return "";
  }
}

// in einer liste einen wert selektieren. selektiert den ersten wert, wenn
// value nicht vorkommt. macht nichts, wenn liste nicht definiert ist.
function list_select_value(list, value) {
  if (list) {
    for (i = 0; i < list.options.length; i++) {
      if (list.options[i].value == value) {
	list.selectedIndex = i;
	return;
      }
    }

    // der wert kommt nicht vor, wenn die liste nicht leer ist, koenn wir etwas anwaehlen
    if (list.options.length > 0)
      list.selectedIndex = 0;
  }
}


// wenn sich in einer der auswahlboxen etwas aendert, berechnet diese funktion die abhaengigkeiten
// und selektiert wieder die richtigen werte
function repaint_menu() {
  // die menulisten
  var catList   = document.driver_selection.category;
  var prodList  = document.driver_selection.product;
  var osList    = document.driver_selection.os;
  

  // auslesen der diversen momentan belegten listenelemente
  var preCat  = list_value(catList);
  var preProd = list_value(prodList);
  var preOs   = list_value(osList);
  
  list_select_value(catList, preCat);

  // das neu fuellen der listen wird nicht durchgefuehrt, wenn sie sich nicht geaendert haben
  fillProdList(preCat);
  list_select_value(prodList, preProd);

  fillOSList(list_value(prodList));
  list_select_value(osList, preOs);

  

}

// beim laden das ganze einmal ausloesen, deswegen muss diese js-datei am ende
// der html-datei geladen werden
repaint_menu();
