Hola furoya:
Me alegro de que te guste como va, y agracezco los aportes... aunque este alojada en mi dominio, ya sabes que es de todos.
Ahora no voy a estudiar tu código porque ya es algo tardillo, pero te voy a comentar un sistema que implementé hace unos años en Pascal (cuando se usaba Turbo Pascal) para una ordenación alfabética. Se trata de hacer una cadena ordenada con el alfabeto: "AaÁáBbCc... MmNnÑñOoÓó... Zz"... Luego recorrer la cadena hasta encontrar el primer carácter diferente y comparar la posición del elemento en el alfabeto que hemos creado... Ahora no estoy seguro si debe usarse charAt o indexOf
Bueno, si tengo tiempo mañana, trataré de hacer un ejemplillo.
Saludos