var charArray = new Array(
	'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';',
	'<', '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
	'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
	'X', 'Y', 'Z', '[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e',
	'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
	't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~');

function chr(n)
{
	if(n < 32 || n > 127) return " ";
	return charArray[n-48];
}

function ord(c)
{
	var i;
	for(i=0; i < charArray.length; i++) {
		if(c == charArray[i]) return i+48;
	}
	return 0;
}

function invertString(str) {
	if (str != null) {
		var newStr = "";
	
		for (var i=str.length; i >= 0; i--) {
			var newChar = str.substring(i, i+1);
			if (newChar.match("[0-9]")) {
				newStr += chr(9-(ord(newChar) - ord("0")) + ord("0"));
			}
			else if (newChar.match("[a-z]")) {
				newStr += chr((ord("z") - ord("a")) - (ord(newChar) - ord("a")) + ord("A"));
			}
			else if (newChar.match("[A-Z]")) {
				newStr += chr((ord("Z") - ord("A")) - (ord(newChar) - ord("A")) + ord("a"));
			}
		}
		
		return newStr;
	}
	return "";
}

function update() {
  document.invertForm.outputbox.value = invertString(document.invertForm.inputbox.value);
}