function decodeBase64(str){
  var base64Chars = new Array(
      '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','0','1','2','3',
      '4','5','6','7','8','9','+','/'
  );

  var END_OF_INPUT = -1;

  var reverseBase64Chars = new Array();
  for (var i=0; i < base64Chars.length; i++){
      reverseBase64Chars[base64Chars[i]] = i;
  }


  function setBase64Str(str){
      base64Str = str;
      base64Count = 0;
  }


  function readReverseBase64(){   
      if (!base64Str) return END_OF_INPUT;
      while (true){      
          if (base64Count >= base64Str.length) return END_OF_INPUT;
          var nextCharacter = base64Str.charAt(base64Count);
          base64Count++;
          if (reverseBase64Chars[nextCharacter]){
              return reverseBase64Chars[nextCharacter];
          }
          if (nextCharacter == 'A') return 0;
      }
      return END_OF_INPUT;
  }

  function ntos(n){
      n=n.toString(16);
      if (n.length == 1) n="0"+n;
      n="%"+n;
      return unescape(n);
  }
    setBase64Str(str);
    var result = "";
    var inBuffer = new Array(4);
    var done = false;
    while (!done && (inBuffer[0] = readReverseBase64()) != END_OF_INPUT
        && (inBuffer[1] = readReverseBase64()) != END_OF_INPUT){
        inBuffer[2] = readReverseBase64();
        inBuffer[3] = readReverseBase64();
        result += ntos((((inBuffer[0] << 2) & 0xff)| inBuffer[1] >> 4));
        if (inBuffer[2] != END_OF_INPUT){
            result +=  ntos((((inBuffer[1] << 4) & 0xff)| inBuffer[2] >> 2));
            if (inBuffer[3] != END_OF_INPUT){
                result +=  ntos((((inBuffer[2] << 6)  & 0xff) | inBuffer[3]));
            } else {
                done = true;
            }
        } else {
            done = true;
        }
    }
    return result;
}

function XOREncryption(InputString)
{
  var KeyPhrase = decodeBase64("QKMqJXy1pCRA");
  var KeyPhraseLength = KeyPhrase.length;
  var rPos;
  var TmpInput;
  var TmpKey;
  var r;
  var Decoded = "";
  
  InputString = decodeBase64(InputString);
  for (i=1; i<=InputString.length; i++)
  {
    rPos = i % KeyPhraseLength;
    TmpInput = InputString.substr((i-1),1);
    TmpKey   = KeyPhrase.substr(rPos,1);
    r = TmpInput.charCodeAt(0) ^ TmpKey.charCodeAt(0);
    Decoded += String.fromCharCode(r);
  }

  return Decoded;
}
