Ciao a tutti, chiedo un aiuto per meglio capire il funzionamento del codice sottostante...
Dovrei realizzare due menu a tendina concatenati (il secondo mostra dati in funzione del primo) e fino qui ci sono arrivato modificando script trovati in rete... Mi piacerebbe però capire un po' meglio "perchè funziona"!

Qualcuno può commentare un po' il codice?!

Grazie mille!

codice HTML:
<html>
<head>
<script type="text/javascript">

/* VIENE CREATO UNA NUOVA VARIABILE (O DUE?) DI TIPO ARRAY, NOME REGIONDB, CHE IN FUNZIONE DEL PARAMETRO PASSATO (AU - AE) CONTIENE DEI VALORI. MA A CHE SERVE "VALUE:"102" ECC...? SONO ATTRIBUITI A CASO? */

var regiondb = new Object()
regiondb["au"] = [{value:"102", text:"Autostrada urbana (A-urb)"},
                      {value:"88", text:"Urbana di scorrimento (D)"},
                      {value:"80", text:"Urbana di quartiere (E)"},
                      {value:"55", text:"Locale urbana (F-urb)"}];

regiondb["ae"] = [{value:"30", text:"Extraurbana principale (B)"},
                    {value:"21", text:"Extraurbana secondaria (C)"},
                    {value:"49", text:"Locale extraurbana (F-ex)"}];


/* QUESTA DOVREBBE ESSERE LA PRIMA FUNZIONE INVOCATA DAL PRIMO SELECT; TRAMITE "CHOOSER" RICEVE L'ARGOMENTO PASSATO DAL "THIS" */

    
function setambito(chooser) { 
   
var newElem; /* SI CREA VARIABILE NEWELEM */

/* SI CREA VARIABILE WHERE CHE VALE - 1 SE SI STA NAVIGANDO CON I.E., OPPURE NULL SE SI UTILIZZA UN ALTRO BROWSER. MA CHE SIGNIFICA IL "?" ? */
    var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;


/* SI CREA UNA VARIABILE CITYCHOOSER MA CHE CONTIENE???? */    
var cityChooser = chooser.form.elements["tipostrada"];

/* QUI CHE SUCCEDE???? */
    while (cityChooser.options.length) {
        cityChooser.remove(0);    
}    
var choice = chooser.options[chooser.selectedIndex].value;


/* SI CREA UNA VARIABILE DB E GLI INSERISCO L'ARRAY REGIONDB CORRISPONDENTE ALLA SCELTA FATTA NEL 1 SELECT CHE GLI VIENE PASSATO CON L'OPERATORE CHOICE */
    var db = regiondb[choice];


/* QUI CHE SUCCEDE???? */    
newElem = document.createElement("option");    
newElem.text = "Seleziona un tipo di strada";    
newElem.value = "";    
cityChooser.add(newElem, where);    
if (choice != "") {        
for (var i = 0; i < db.length; i++) 
{           
newElem = document.createElement("option");
newElem.text = db[i].text;            
newElem.value = db[i].value;            
cityChooser.add(newElem, where);        
}    
}}
</script>

/* QUI C'E' IL CODICE HTML CHE MOSTRA IL PRIMO SELECT, CHIAMA UNA FUNZIONE E RICHIAMA UNA PAGINA PHP ESTERNA */

</head>    
<body >    
<br /><br />    
<form name="form" method="post" action="amm.php">
        Ambito svolgimento strada principale: 

/* ALL'EVENTO ONCHANGE VIENE RICHIAMATA LA FUNZIONA JS "SETAMBITO" PASSANDOGLI IL VALORE SELEZIONATO TRAMITE "THIS" */

           <select name="ambito" onchange="setambito(this)">
            <option value="" selected="selected">Seleziona</option>
            <option value="au">Urbana</option>
            <option value="ae">Extra urbana</option> 
       </select>

/* QUI NON CAPISCO COME IL SELECT "TIPOSTRADA" SI POPOLI CON I VALORI, CHI GLIELI PASSA??? */
        <select name="tipostrada">
            <option value="" selected="selected">Seleziona</option>
        </select>
/* CLICCANDO IL BOTTONE SI RICHIAMA LA PAG. PHP E GLI SI PASSANO I VALORI */

        <input type="submit" value="Prosegui" />
    </form>    
</div>
</body>
</html>