Substituir acentos e espaços em um campo texto com JavaScript

Mais um código pra guardar para a posteridade. Quando precisar substituir acentos por letras não acentuadas ou espaços por hifén, tipo o campo permalink do wordpress:

Cenário:

2 campos de texto:

1º campo com nome txt_title, que será usado para a digitação do titulo

2º campo com nome txt_permalink, no qual será gerado a mesma frase sem acentos e com espaços substituidos por -(hífen)

no primeiro campo colocar a chamada da função: onkeyup=”add_permalink();”

o $(‘campo’) é porque uso o Prototype como framework Ajax

[javascript]
  function add_permalink(){
      //pega valor do campo e converte para letras minúsculas
      texto = $('txt_title').getValue().toLowerCase();
      //faz as substituições dos acentos
      texto = texto.replace(/[á|ã|â|à]/gi, "a");
      texto = texto.replace(/[é|ê|è]/gi, "e");
      texto = texto.replace(/[í|ì|î]/gi, "i");
      texto = texto.replace(/[õ|ò|ó|ô]/gi, "o");
      texto = texto.replace(/[ú|ù|û]/gi, "u");
      texto = texto.replace(/[ç]/gi, "c");
      texto = texto.replace(/[ñ]/gi, "n");
      texto = texto.replace(/[á|ã|â]/gi, "a");
      //faz a substituição dos espaços e outros caracteres por - (hífen)
      texto = texto.replace(/W/gi, "-");
      // remove - (hífen) duplicados
      texto = texto.replace(/(-)1+/gi, "-");
      $('txt_permalink').setValue(texto);
  }
  [/javascript]

Provavelmente exista outras soluções, mas fica a idéia que acredito também pode ser adaptada para o php para, por exemplo, renomear arquivos.

Espero que seja útil para mais alguém!