// This script hereby is dedicated in the Public Domain
// as long as nobody else claims the copyright for it.
// origin: 2000-01-08 [email protected] http://tools.geht.net/rot13.html
// Use at own risk.
var last="";
var rot13map;

// The problem is that JavaScript 1.0
// does not provide a Char to Numeric value conversion
// Thus we define a map.
// Because there are 64K UniCode characters, this map does not cover all characters.
function rot13init()
{
 var map = new Array();
 var s   = "abcdefghijklmnopqrstuvwxyz";

 for (i=0; i<s.length; i++)
   map[s.charAt(i)]                    = s.charAt((i+13)%26);
 for (i=0; i<s.length; i++)
   map[s.charAt(i).toUpperCase()]      = s.charAt((i+13)%26).toUpperCase();
 return map;
}

function rot13(a)
{
 if (!rot13map)
   rot13map=rot13init();
 s = "";
 for (i=0; i<a.length; i++)
   {
     var b = a.charAt(i);

     s += (b>='A' && b<='Z' || b>='a' && b<='z' ? rot13map[b] : b);
   }
 return s;
}

function upd()
{
 if (document.forms[0].text.value==last)
   return;

 last = document.forms[0].text.value;
 document.forms[0].rot13.value = rot13(last);
}