Yo creo que para no tener cada una de las funciones puedes hacer una generica que reciba que select va a llenar y todas tus opciones guardarlas en un arreglo a manera de matriz y recorres el arreglo cada que quieres llenar un select por ej.
Código Javascript
:
Ver original<html>
<head>
<script>
var aOpciones = new Array();
//esto se llenaria con PHP
// se me ocurre esta estructura [idOpcion, icPadre, opcionTexto] a fin de llenarlo a manera de un árbol con sus hijos
aOpciones[0]=[1,0,'primerSelect1'];
aOpciones[1]=[2,0,'primerSelect2'];
//las dependientes del hijo
aOpciones[2]=[3,1,'hijo1 primer select opcion 0'];
aOpciones[3]=[4,1,'hijo 2 primer select opcion 0'];
//dependientes del segundo hijo
aOpciones[4]=[4,2,'hijo1 primeer select opcion1'];
aOpciones[5]=[5,2,'hijo2 primer select opcin1'];
//...........
//...........N hijos
//primer parametro la forma, segundo el select a llenar
function f_llenaSlect(forma, slectPos){
//si es -1 es el ultimo select para llenar
if(slectPos==-1)
return;
else{//limpio select a llenar
(document.getElementById("slect"+slectPos).options.length=0;
for(var i=0;i<aOpciones.length:i++){//for para recorrer el arreglo
if(aOpciones[i][1]==document.getElementById("slect"+slectPos-1).options.selectedIndex){ // obtengo la opcion seleccionada del padre y comparo el arreglo
document.getElementById("slect"+slectPos).options.length++;
document.getElementById("slect"+slectPos).options[document.getElementById("slect"+slectPos).options.length-1].value=aOpciones[i][0];
document.getElementById("slect"+slectPos).options[document.getElementById("slect"+slectPos).options.length-1].text=aOpciones[i][2];
}
}
}
}
</script>
</head>
<body onload="f_llenaSlect(document.forms[0],1)">
<form action="#">
Foo:
<select name="slect1" onchange="firstFunction(this.form,2);">
<option value="">[Selecciona uno]</option>
</select><br />
Bar:
<select id="slct2" onchange="f_llenaSlect(this.form,3);">
<option value="">[Selecciona Foo]</option>
</select><br />
Candy:
<select id="slect3" onchange="f_llenaSlect(this.form,-1);">
<option value="">[Selecciona Foo]</option>
</select>
</form>
</body>
</html>
Y ya si necesitas que cada opcion o select tenga una función en especifico, la puedes agregar al arreglo y asignarla con js al select que necesites.
Saludos.