function AJAX_B64_urlDecode(str){    str=str.replace(new RegExp('\\+','g'),' ');    return unescape(str);}function AJAX_B64_urlEncode(str){    str=escape(str);    str=str.replace(new RegExp('\\+','g'),'%2B');    return str.replace(new RegExp('%20','g'),'+');}var AJAX_B64_END_OF_INPUT = -1;var AJAX_B64_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 AJAX_B64_reverseBase64Chars = new Array();for (var i=0; i < AJAX_B64_base64Chars.length; i++){    AJAX_B64_reverseBase64Chars[AJAX_B64_base64Chars[i]] = i;}var AJAX_B64_base64Str;var AJAX_B64_base64Count;function AJAX_B64_setBase64Str(str){    AJAX_B64_base64Str = str;    AJAX_B64_base64Count = 0;}function AJAX_B64_readBase64(){        if (!AJAX_B64_base64Str) return AJAX_B64_END_OF_INPUT;    if (AJAX_B64_base64Count >= AJAX_B64_base64Str.length) return AJAX_B64_END_OF_INPUT;    var c = AJAX_B64_base64Str.charCodeAt(AJAX_B64_base64Count) & 0xff;    AJAX_B64_base64Count++;    return c;}function AJAX_B64_encodeBase64(str){    AJAX_B64_setBase64Str(str);    var AJAX_B64_result = '';    var AJAX_B64_inBuffer = new Array(3);    var AJAX_B64_lineCount = 0;    var AJAX_B64_done = false;    while (!AJAX_B64_done && (AJAX_B64_inBuffer[0] = AJAX_B64_readBase64()) != AJAX_B64_END_OF_INPUT){        AJAX_B64_inBuffer[1] = AJAX_B64_readBase64();        AJAX_B64_inBuffer[2] = AJAX_B64_readBase64();        AJAX_B64_result += (AJAX_B64_base64Chars[ AJAX_B64_inBuffer[0] >> 2 ]);        if (AJAX_B64_inBuffer[1] != AJAX_B64_END_OF_INPUT){            AJAX_B64_result += (AJAX_B64_base64Chars [(( AJAX_B64_inBuffer[0] << 4 ) & 0x30) | (AJAX_B64_inBuffer[1] >> 4) ]);            if (AJAX_B64_inBuffer[2] != AJAX_B64_END_OF_INPUT){                AJAX_B64_result += (AJAX_B64_base64Chars [((AJAX_B64_inBuffer[1] << 2) & 0x3c) | (AJAX_B64_inBuffer[2] >> 6) ]);                AJAX_B64_result += (AJAX_B64_base64Chars [AJAX_B64_inBuffer[2] & 0x3F]);            } else {                AJAX_B64_result += (AJAX_B64_base64Chars [((AJAX_B64_inBuffer[1] << 2) & 0x3c)]);                AJAX_B64_result += ('=');                AJAX_B64_done = true;            }        } else {            AJAX_B64_result += (AJAX_B64_base64Chars [(( AJAX_B64_inBuffer[0] << 4 ) & 0x30)]);            AJAX_B64_result += ('=');            AJAX_B64_result += ('=');            AJAX_B64_done = true;        }        AJAX_B64_lineCount += 4;        if (AJAX_B64_lineCount >= 76){            AJAX_B64_result += ('\n');            AJAX_B64_lineCount = 0;        }    }    return AJAX_B64_result;}function AJAX_B64_readReverseBase64(){       if (!AJAX_B64_base64Str) return AJAX_B64_END_OF_INPUT;    while (true){              if (AJAX_B64_base64Count >= AJAX_B64_base64Str.length) return AJAX_B64_END_OF_INPUT;        var AJAX_B64_nextCharacter = AJAX_B64_base64Str.charAt(AJAX_B64_base64Count);        AJAX_B64_base64Count++;        if (AJAX_B64_reverseBase64Chars[AJAX_B64_nextCharacter]){            return AJAX_B64_reverseBase64Chars[AJAX_B64_nextCharacter];        }        if (AJAX_B64_nextCharacter == 'A') return 0;    }    return AJAX_B64_END_OF_INPUT;}function AJAX_B64_ntos(n){    n=n.toString(16);    if (n.length == 1) n="0"+n;    n="%"+n;    return unescape(n);}function AJAX_B64_decodeBase64(str){    AJAX_B64_setBase64Str(str);    var AJAX_B64_result = "";    var AJAX_B64_inBuffer = new Array(4);    var AJAX_B64_done = false;    while (!AJAX_B64_done && (AJAX_B64_inBuffer[0] = AJAX_B64_readReverseBase64()) != AJAX_B64_END_OF_INPUT        && (AJAX_B64_inBuffer[1] = AJAX_B64_readReverseBase64()) != AJAX_B64_END_OF_INPUT){        AJAX_B64_inBuffer[2] = AJAX_B64_readReverseBase64();        AJAX_B64_inBuffer[3] = AJAX_B64_readReverseBase64();        AJAX_B64_result += AJAX_B64_ntos((((AJAX_B64_inBuffer[0] << 2) & 0xff)| AJAX_B64_inBuffer[1] >> 4));        if (AJAX_B64_inBuffer[2] != AJAX_B64_END_OF_INPUT){            AJAX_B64_result +=  AJAX_B64_ntos((((AJAX_B64_inBuffer[1] << 4) & 0xff)| AJAX_B64_inBuffer[2] >> 2));            if (AJAX_B64_inBuffer[3] != AJAX_B64_END_OF_INPUT){                AJAX_B64_result +=  AJAX_B64_ntos((((AJAX_B64_inBuffer[2] << 6)  & 0xff) | AJAX_B64_inBuffer[3]));            } else {                AJAX_B64_done = true;            }        } else {            AJAX_B64_done = true;        }    }    return AJAX_B64_result;}var AJAX_B64_digitArray = new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');function AJAX_B64_toHex(n){    var AJAX_B64_result = ''    var AJAX_B64_start = true;    for (var i=32; i>0;){        i-=4;        var AJAX_B64_digit = (n>>i) & 0xf;        if (!AJAX_B64_start || AJAX_B64_digit != 0){            AJAX_B64_start = false;            AJAX_B64_result += AJAX_B64_digitArray[AJAX_B64_digit];        }    }    return (AJAX_B64_result==''?'0':AJAX_B64_result);}function AJAX_B64_pad(str, len, pad){    var AJAX_B64_result = str;    for (var i=str.length; i<len; i++){        AJAX_B64_result = pad + AJAX_B64_result;    }    return AJAX_B64_result;}function AJAX_B64_encodeHex(str){    var AJAX_B64_result = "";    for (var i=0; i<str.length; i++){        AJAX_B64_result += pad(AJAX_B64_toHex(str.charCodeAt(i)&0xff),2,'0');    }    return AJAX_B64_result;}function AJAX_B64_decodeHex(str){    str = str.replace(new RegExp("s/[^0-9a-zA-Z]//g"));    var AJAX_B64_result = "";    var AJAX_B64_nextchar = "";    for (var i=0; i<str.length; i++){        AJAX_B64_nextchar += str.charAt(i);        if (AJAX_B64_nextchar.length == 2){            AJAX_B64_result += AJAX_B64_ntos(eval('0x'+AJAX_B64_nextchar));            AJAX_B64_nextchar = "";        }    }    return AJAX_B64_result;    }
