/******************************************************
 Code Simplicity Room Hex Binary Return
 Coded for CCN Chatting Networks
 Code system applied by Tha-Doctor ( M.D.Bakker )
 Tech-Arena Networks 
******************************************************/
function rstrmjnrcodex(strz) {
  rmnjnr.rhx.value = EncodeHexName(strz);
}
function charCode (c) {
  return c.charCodeAt(0);
}
var strHexDigits = "0123456789abcdef";
function IntToUTF8HexASCII (n) {
  var strOut = "";
  if (n <= 127) {
    if (n == 32){strOut += "5c62";} // ' '
    else if (n == 44){strOut += "5c63";} // ','
    else if (n == 92){strOut += "5c5c";} // '\'
    else if (n == 13){strOut += "5c72";} // cr
    else if (n == 10){strOut += "5c6e";} // lf
    else if (n == 9){strOut += "5c74";} // htab
    else {
      strOut += strHexDigits.charAt(15 & (n >> 4));
      strOut += strHexDigits.charAt(n & 15);      
    }
  }
  else if (n <= 0x7ff) {
    var c;
    c = (n >> 6) | 0xC0;
    strOut += strHexDigits.charAt((c >> 4) & 15);
    strOut += strHexDigits.charAt(c & 15);
    c = (n & 0x3f) | 0x80;
    strOut += strHexDigits.charAt((c >> 4) & 15);
    strOut += strHexDigits.charAt(c & 15);
  }
  else if (n <= 0xffff) {
    var c;
    c = (n >> 12) | 0xe0;
    strOut += strHexDigits.charAt((c >> 4) & 15);
    strOut += strHexDigits.charAt(c & 15);
    c = ((n >> 6) & 0x3f) | 0x80;
    strOut += strHexDigits.charAt((c >> 4) & 15);
    strOut += strHexDigits.charAt(c & 15);
    c = (n & 0x3f) | 0x80;
    strOut += strHexDigits.charAt((c >> 4) & 15);
    strOut += strHexDigits.charAt(c & 15);
  }
  else {
    // this should never happen!
    strOut = "3F"; // just return a '?'
  }
  return strOut;
}
function EncodeHexName (strName) {
  if (!strName)
  return strName;
  var strOut = "";
  for (var i = 0; i < strName.length; i++) {
    strOut += IntToUTF8HexASCII(charCode(strName.charAt(i)));
  }
  return strOut;
}
function DecodeHexName (strHexName)
{
  if (!strHexName)
    return strHexName;

  var bIsUTF8;
  var nCharCode, strEscapedString, nLen, i;
  
  bIsUTF8 = strHexName.charAt(0) == '2' && strHexName.charAt(1) == '5';
  nLen = strHexName.length;
  strEscapedString = "";
  
  if (bIsUTF8)
  {
    for (i = 0; i < nLen; i += 2)
    {
      nCharCode = parseInt (strHexName.substring (i, i + 2), 16);
      if (nCharCode == 0x5c) // '\'
      {
        nCharCode = parseInt (strHexName.substring (i + 2, i + 4), 16);
        if (nCharCode == 0x62) // 'b'
          nCharCode = 0x20; // ' '
        else if (nCharCode == 0x63) // 'c'
          nCharCode = 0x2c; // ','
        else if (nCharCode == 0x72) // 'r'
          nCharCode = 0x0d; // cr
        else if (nCharCode == 0x6e) // 'n'
          nCharCode = 0x0a; // lf
        else if (nCharCode == 0x74) // 't'
          nCharCode = 0x09; // htab
        else if (nCharCode == 0x5c) // '\'
          nCharCode = 0x5c;
        i += 2;
      }
      else if (nCharCode < 127)
      {
      }
      else if ((nCharCode & 0xe0) == 0xc0)
      {
        nCharCode = ((nCharCode & 0x1f) << 6) | 
                ((parseInt (strHexName.substring (i + 2, i + 4), 16)) & 0x3f);
        i += 2;
      }
      else
      {
        nCharCode = ((nCharCode & 0x0f) << 12) | 
                (((parseInt (strHexName.substring (i + 2, i + 4), 16)) & 0x3f) << 6) |
                ((parseInt (strHexName.substring (i + 4, i + 6), 16)) & 0x3f);
        i += 4;
      }
      
      strEscapedString += fromCharCode (nCharCode);
    }
    return strEscapedString;
  }
  else
  {
    for (i = 0; i < nLen; i += 2)
    {
      var strToken = strHexName.substring (i, i + 2);
      if (strToken == "5c")
      {
         var str2ndToken = strHexName.substring(i+2, i+4);
         if (str2ndToken == "62"){strToken = "20";}
         else if (str2ndToken == "63"){strToken = "2c";}
         else if (str2ndToken == "5c"){strToken = "5c";}
         else if (str2ndToken == "72"){strToken = "0d";}
         else if (str2ndToken == "6e"){strToken = "0a";}
         else if (str2ndToken == "74"){strToken = "09";}
      }
      strEscapedString += "%" + strToken;
    }
    return unescape (strEscapedString);
  }
}