var scrambleOffset = 7;

var asciicode = new Array();
asciicode[32] = " ";
asciicode[33] = "!";
asciicode[34] = "\"";
asciicode[35] = "#";
asciicode[36] = "$";
asciicode[37] = "%";
asciicode[38] = "&";
asciicode[39] = "'";
asciicode[40] = "(";
asciicode[41] = ")";
asciicode[42] = "*";
asciicode[43] = "+";
asciicode[44] = ",";
asciicode[45] = "-";
asciicode[46] = ".";
asciicode[47] = "/";
asciicode[48] = "0";
asciicode[49] = "1";
asciicode[50] = "2";
asciicode[51] = "3";
asciicode[52] = "4";
asciicode[53] = "5";
asciicode[54] = "6";
asciicode[55] = "7";
asciicode[56] = "8";
asciicode[57] = "9";
asciicode[58] = ":";
asciicode[59] = ";";
asciicode[60] = "<";
asciicode[61] = "=";
asciicode[62] = ">";
asciicode[63] = "?";
asciicode[64] = "@";
asciicode[65] = "A";
asciicode[66] = "B";
asciicode[67] = "C";
asciicode[68] = "D";
asciicode[69] = "E";
asciicode[70] = "F";
asciicode[71] = "G";
asciicode[72] = "H";
asciicode[73] = "I";
asciicode[74] = "J";
asciicode[75] = "K";
asciicode[76] = "L";
asciicode[77] = "M";
asciicode[78] = "N";
asciicode[79] = "O";
asciicode[80] = "P";
asciicode[81] = "Q";
asciicode[82] = "R";
asciicode[83] = "S";
asciicode[84] = "T";
asciicode[85] = "U";
asciicode[86] = "V";
asciicode[87] = "W";
asciicode[88] = "X";
asciicode[89] = "Y";
asciicode[90] = "Z";
asciicode[91] = "[";
asciicode[92] = "\\";
asciicode[93] = "]";
asciicode[94] = "^";
asciicode[95] = "_";
asciicode[96] = "`";
asciicode[97] = "a";
asciicode[98] = "b";
asciicode[99] = "c";
asciicode[100] = "d";
asciicode[101] = "e";
asciicode[102] = "f";
asciicode[103] = "g";
asciicode[104] = "h";
asciicode[105] = "i";
asciicode[106] = "j";
asciicode[107] = "k";
asciicode[108] = "l";
asciicode[109] = "m";
asciicode[110] = "n";
asciicode[111] = "o";
asciicode[112] = "p";
asciicode[113] = "q";
asciicode[114] = "r";
asciicode[115] = "s";
asciicode[116] = "t";
asciicode[117] = "u";
asciicode[118] = "v";
asciicode[119] = "w";
asciicode[120] = "x";
asciicode[121] = "y";
asciicode[122] = "z";
asciicode[123] = "{";
asciicode[124] = "|";
asciicode[125] = "}";
asciicode[126] = "~";

function getAsciiCode(theChar) {
  var i = 32;
  var ret = 0;
  var match = false;
  while (i < 127 && match != true) {
    if (asciicode[i] == theChar) { 
      ret = i;
    }
    i ++;
  }
  return ret;
}

function getCharacter(theCode) {
  var ret = "";
  if (theCode > 31 && theCode < 127) {
    ret = asciicode[theCode];
  }
  return ret;
}

function _scramble(inText,inverse) {
  var i = 0;
  var outText = "";
  var currentCode = 0;
  var newCode = 0;
  var newChar = '';
  var offset = scrambleOffset;
  if (inverse == true) {
    offset = offset * -1;
  }
  while (i < inText.length) {
    currentCode = getAsciiCode(inText.charAt(i));
    if (currentCode != 0) {
      newCode = currentCode + offset;
      if (newCode > 125) {
        newCode = (newCode - 125) + 31;
      }
      if (newCode < 32) {
        newCode = 126 - (32 - newCode);
      }
    } else {
      newCode = 0;
    }

    // sub tilde for backslash
    if (inverse == false && newCode == 92) {
      newCode = 126;
    } else if (inverse == true && currentCode == 126) {
      newCode = 92 + offset;
    }
    outText += getCharacter(newCode);
    i++;
  }
  return outText;
}

function descrambleText(inText) {
  var outText = _scramble(inText,true);
  return outText;
}

function mailTo(email) {
  document.open();
  document.write("<a href=\"mailto:" + descrambleText(email) + "\">" + descrambleText(email) + "</a>");
  document.close();
}

function mailTo2(email, text) {
  document.open();
  document.write("<a href=\"mailto:" + descrambleText(email) + "\">" + text + "</a>");
  document.close();
}