Se vedi la seconda funzione, ti accorgi che alla riga 10 si blocca perché l'oggetto arrCategoria[newDisplay] non è definito. Cambiala con questa e vedi l'alert che viene fuori:
codice:
	function handleChange1(newDisplay) {
		var StateSelect, CategoriaSelect, NumEntries, i;
		StateSelect = document.getElementById("categoria");
		CategoriaSelect = document.getElementById("articolo");
		
		for (i = CategoriaSelect.length; i > 1; i--) {
			CategoriaSelect.options[i-1] = null;
		}
		alert('Oggetto arrcategoria[newDisplay]: ' + arrcategoria[newDisplay] + '\nvariabile newDisplay: ' + newDisplay);
		if (newDisplay >= 0) {
			NumEntries = arrcategoria[newDisplay].length;
			for (i = 1; i <= NumEntries; i++) {
				var a = arrcategoria[newDisplay];
				var b = a[i-1];
				// CategoriaSelect.options[i] = new Option((arrcategoria[newDisplay])[i-1],(arrcategoria[newDisplay])[i-1]);
				CategoriaSelect.options[i] = new Option(b,b);
			}
		}
		CategoriaSelect.selectedIndex = 1;
	}
La variabile newDisplay è definita e c'è, ma non corrisponde con l'indice associativo dell'array: infatti per la voce PLAXANDGLASS restituisce proprio "PLEXANDGLASS" anziché "arrPLEXANDGLASS".

Sull'handler onChange la dicitura corretta sarebbe questa:
codice:
onChange="handleChange1(this.options[this.selectedIndex].value)"
ma sicuro che è quello che vuoi che ti restituisca?