Usare gli array come stringhe purtroppo non è previsto dallo standard, credo che funzioni solo con Firefox. Puoi usare testo.charAt(i).

Ma i caratteri maiuscoli cominciano dal 65, i minuscoli dal 97. Perciò è molto più efficiente una cosa del genere:

var c = testo.charCodeAt(i);
c += (c < 97) ? 32 : -32;

(è solo un esempio per farti capire il concetto, pensa tu ad applicarlo al tuo codice...)