:master: vediamo se riesco.

Ho un vettore:
var v = ["Stefano", "Carlo", "Nicola", "stefano", "carlo", "nicola"];

Se, per ordinarlo, uso:
v.sort();

questo sarà ordinato in "dictionary order", dove le maiuscole vengono prime delle minuscole.
Carlo, Nicola, Stefano, carlo, nicola, stefano

Se voglio ordinarlo in modo indipendente da maiuscole-minuscole, debbo utilizzare la versione:
v.sort(compareFunction);

dove compareFunction(a, b) è una funzione che confronta due elementi del vettore e restituisce:
0 se a == b
numero < 0 se a < b

numero > 0 se a > b

allora, userò sort pressapoco così:
v.sort(function(a,b){return (a.toLowerCase( ) < b.toLowerCase( ))?-1:1});

se il vettore contenesse numeri userei:
v.sort(function(a,b){return (a-b)});

Ritornando a noi, una qualunque stringa alfanumerica (solo cifre e lettere alfabeto) può essere vista come un numero a base 36.

un numero binaro ha due simboli: 0, 1

un numero ottale ha 8 simboli: 0,1,2,3,4,5,6,7

un numero decimale ha 10 simboli: 0,1,2,3,4,5,6,7,8,9

un numero esadecimale (base 16) ha 16 simboli: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

un numero a base 36 ha 36 simboli:
0123456709ABCDEFGHIJKLMNOPQRSTUVWXYZ


ed ecco che la funzione di ordinamento può essere:
v.sort(function(a,b){return (parseInt(a,36)-parseInt(b,36))});


il link che ti ho dato lo spiega meglio