-Encoding = new Object();\r
-Encoding.UTF8 = "utf-8";\r
-Encoding.UTF16 = "utf-16";\r
-Encoding.ASCII = "ascii";\r
-\r
-/* protected */\r
-Encoding.guessEncoding = function (str) {\r
- if (str.charCodeAt(0) == 0xEF && str.charCodeAt(1) == 0xBB && str.charCodeAt(2) == 0xBF) {\r
- return Encoding.UTF8;\r
- } else if (str.charCodeAt(0) == 0xFF && str.charCodeAt(1) == 0xFE) {\r
- return Encoding.UTF16;\r
- } else {\r
- return Encoding.ASCII;\r
- }\r
-};\r
-/* public */\r
-Encoding.readUTF8 = function (str) {\r
- var encoding = this.guessEncoding(str);\r
- var startIdx = 0;\r
- if (encoding == Encoding.UTF8) {\r
- startIdx = 3;\r
- } else if (encoding == Encoding.UTF16) {\r
- startIdx = 2;\r
- }\r
- var arrs = new Array();\r
- for (var i = startIdx; i < str.length; i++) {\r
- var charCode = str.charCodeAt(i);\r
- if (charCode < 0x80) {\r
- arrs[arrs.length] = str.charAt(i);\r
- } else if (charCode > 0xc0 && charCode < 0xe0) {\r
- var c1 = charCode & 0x1f;\r
- i++;\r
- var c2 = str.charCodeAt(i) & 0x3f;\r
- var c = (c1 << 6) + c2;\r
- arrs[arrs.length] = String.fromCharCode(c);\r
- } else if (charCode >= 0xe0) {\r
- var c1 = charCode & 0x0f;\r
- i++;\r
- var c2 = str.charCodeAt(i) & 0x3f;\r
- i++;\r
- var c3 = str.charCodeAt(i) & 0x3f;\r
- var c = (c1 << 12) + (c2 << 6) + c3;\r
- arrs[arrs.length] = String.fromCharCode(c);\r
- }\r
- }\r
- return arrs.join ('');\r
-};\r
-/* public */\r
-Encoding.convert2UTF8 = function (str) {\r
- var encoding = this.guessEncoding(str);\r
- var startIdx = 0;\r
- if (encoding == Encoding.UTF8) {\r
- return str;\r
- } else if (encoding == Encoding.UTF16) {\r
- startIdx = 2;\r
- }\r
- \r
- var offset = 0;\r
- var arrs = new Array(offset + str.length - startIdx);\r
- /*\r
- arrs[0] = String.fromCharCode(0xEF).charAt(0);\r
- arrs[1] = String.fromCharCode(0xBB).charAt(0);\r
- arrs[2] = String.fromCharCode(0xBF).charAt(0);\r
- */\r
- for (var i = startIdx; i < str.length; i++) {\r
- var charCode = str.charCodeAt(i);\r
- if (charCode < 0x80) {\r
- arrs[offset + i - startIdx] = str.charAt(i);\r
- } else if (charCode <= 0x07ff) { //(charCode > 0xc0 && charCode < 0xe0) {\r
- var c1 = 0xc0 + ((charCode & 0x07c0) >> 6);\r
- var c2 = 0x80 + (charCode & 0x003f);\r
- arrs[offset + i - startIdx] = String.fromCharCode(c1) + String.fromCharCode(c2);\r
- } else {\r
- var c1 = 0xe0 + ((charCode & 0xf000) >> 12);\r
- var c2 = 0x80 + ((charCode & 0x0fc0) >> 6);\r
- var c3 = 0x80 + (charCode & 0x003f);\r
- arrs[offset + i - startIdx] = String.fromCharCode(c1) + String.fromCharCode(c2) + String.fromCharCode(c3);\r
- }\r
- }\r
- return arrs.join ('');\r
-};\r
-Encoding.base64Chars = new Array(\r
- 'A','B','C','D','E','F','G','H',\r
- 'I','J','K','L','M','N','O','P',\r
- 'Q','R','S','T','U','V','W','X',\r
- 'Y','Z','a','b','c','d','e','f',\r
- 'g','h','i','j','k','l','m','n',\r
- 'o','p','q','r','s','t','u','v',\r
- 'w','x','y','z','0','1','2','3',\r
- '4','5','6','7','8','9','+','/'\r
-);\r
-Encoding.encodeBase64 = function (str) {\r
- if (str == null || str.length == 0) return str;\r
- var b64 = Encoding.base64Chars;\r
- var length = str.length;\r
- var index = 0;\r
- var buf = [];\r
- var c0, c1, c2;\r
- while (index < length) {\r
- c0 = str.charCodeAt (index++);\r
- buf[buf.length] = b64[c0 >> 2];\r
- if (index < length) {\r
- c1 = str.charCodeAt (index++);\r
- buf[buf.length] = b64[((c0 << 4 ) & 0x30) | (c1 >> 4)];\r
- if (index < length){\r
- c2 = str.charCodeAt (index++);\r
- buf[buf.length] = b64[((c1 << 2) & 0x3c) | (c2 >> 6)];\r
- buf[buf.length] = b64[c2 & 0x3F];\r
- } else {\r
- buf[buf.length] = b64[((c1 << 2) & 0x3c)];\r
- buf[buf.length] = '=';\r
- }\r
- } else {\r
- buf[buf.length] = b64[(c0 << 4) & 0x30];\r
- buf[buf.length] = '=';\r
- buf[buf.length] = '=';\r
- }\r
- }\r
- return buf.join ('');\r
-};\r
-Encoding.decodeBase64 = function (str) {\r
- if (str == null || str.length == 0) return str;\r
- var b64 = Encoding.base64Chars;\r
- var xb64 = Encoding.xBase64Chars;\r
- if (Encoding.xBase64Chars == null) {\r
- xb64 = new Object();\r
- for (var i = 0; i < b64.length; i++){\r
- xb64[b64[i]] = i;\r
- }\r
- Encoding.xBase64Chars = xb64;\r
- }\r
- var length = str.length;\r
- var index = 0;\r
- var buf = [];\r
- var c0, c1, c2, c3;\r
- var c = 0;\r
- while (index < length && c++ < 60000) {\r
- c0 = xb64[str.charAt (index++)];\r
- c1 = xb64[str.charAt (index++)];\r
- c2 = xb64[str.charAt (index++)];\r
- c3 = xb64[str.charAt (index++)];\r
- buf[buf.length] = String.fromCharCode(((c0 << 2) & 0xff) | c1 >> 4);\r
- if (c2 != null) {\r
- buf[buf.length] = String.fromCharCode(((c1 << 4) & 0xff) | c2 >> 2);\r
- if (c3 != null) {\r
- buf[buf.length] = String.fromCharCode(((c2 << 6) & 0xff) | c3);\r
- }\r
- }\r
- }\r
- return buf.join ('');\r
-};\r
+Encoding = new Object();
+Encoding.UTF8 = "utf-8";
+Encoding.UTF16 = "utf-16";
+Encoding.ASCII = "ascii";
+
+/* protected */
+Encoding.guessEncoding = function (str) {
+ if (str.charCodeAt(0) == 0xEF && str.charCodeAt(1) == 0xBB && str.charCodeAt(2) == 0xBF) {
+ return Encoding.UTF8;
+ } else if (str.charCodeAt(0) == 0xFF && str.charCodeAt(1) == 0xFE) {
+ return Encoding.UTF16;
+ } else {
+ return Encoding.ASCII;
+ }
+};
+/* public */
+Encoding.readUTF8 = function (str) {
+ var encoding = this.guessEncoding(str);
+ var startIdx = 0;
+ if (encoding == Encoding.UTF8) {
+ startIdx = 3;
+ } else if (encoding == Encoding.UTF16) {
+ startIdx = 2;
+ }
+ var arrs = new Array();
+ for (var i = startIdx; i < str.length; i++) {
+ var charCode = str.charCodeAt(i);
+ if (charCode < 0x80) {
+ arrs[arrs.length] = str.charAt(i);
+ } else if (charCode > 0xc0 && charCode < 0xe0) {
+ var c1 = charCode & 0x1f;
+ i++;
+ var c2 = str.charCodeAt(i) & 0x3f;
+ var c = (c1 << 6) + c2;
+ arrs[arrs.length] = String.fromCharCode(c);
+ } else if (charCode >= 0xe0) {
+ var c1 = charCode & 0x0f;
+ i++;
+ var c2 = str.charCodeAt(i) & 0x3f;
+ i++;
+ var c3 = str.charCodeAt(i) & 0x3f;
+ var c = (c1 << 12) + (c2 << 6) + c3;
+ arrs[arrs.length] = String.fromCharCode(c);
+ }
+ }
+ return arrs.join ('');
+};
+/* public */
+Encoding.convert2UTF8 = function (str) {
+ var encoding = this.guessEncoding(str);
+ var startIdx = 0;
+ if (encoding == Encoding.UTF8) {
+ return str;
+ } else if (encoding == Encoding.UTF16) {
+ startIdx = 2;
+ }
+
+ var offset = 0;
+ var arrs = new Array(offset + str.length - startIdx);
+ /*
+ arrs[0] = String.fromCharCode(0xEF).charAt(0);
+ arrs[1] = String.fromCharCode(0xBB).charAt(0);
+ arrs[2] = String.fromCharCode(0xBF).charAt(0);
+ */
+ for (var i = startIdx; i < str.length; i++) {
+ var charCode = str.charCodeAt(i);
+ if (charCode < 0x80) {
+ arrs[offset + i - startIdx] = str.charAt(i);
+ } else if (charCode <= 0x07ff) { //(charCode > 0xc0 && charCode < 0xe0) {
+ var c1 = 0xc0 + ((charCode & 0x07c0) >> 6);
+ var c2 = 0x80 + (charCode & 0x003f);
+ arrs[offset + i - startIdx] = String.fromCharCode(c1) + String.fromCharCode(c2);
+ } else {
+ var c1 = 0xe0 + ((charCode & 0xf000) >> 12);
+ var c2 = 0x80 + ((charCode & 0x0fc0) >> 6);
+ var c3 = 0x80 + (charCode & 0x003f);
+ arrs[offset + i - startIdx] = String.fromCharCode(c1) + String.fromCharCode(c2) + String.fromCharCode(c3);
+ }
+ }
+ return arrs.join ('');
+};
+Encoding.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','+','/'
+);
+Encoding.encodeBase64 = function (str) {
+ if (str == null || str.length == 0) return str;
+ var b64 = Encoding.base64Chars;
+ var length = str.length;
+ var index = 0;
+ var buf = [];
+ var c0, c1, c2;
+ while (index < length) {
+ c0 = str.charCodeAt (index++);
+ buf[buf.length] = b64[c0 >> 2];
+ if (index < length) {
+ c1 = str.charCodeAt (index++);
+ buf[buf.length] = b64[((c0 << 4 ) & 0x30) | (c1 >> 4)];
+ if (index < length){
+ c2 = str.charCodeAt (index++);
+ buf[buf.length] = b64[((c1 << 2) & 0x3c) | (c2 >> 6)];
+ buf[buf.length] = b64[c2 & 0x3F];
+ } else {
+ buf[buf.length] = b64[((c1 << 2) & 0x3c)];
+ buf[buf.length] = '=';
+ }
+ } else {
+ buf[buf.length] = b64[(c0 << 4) & 0x30];
+ buf[buf.length] = '=';
+ buf[buf.length] = '=';
+ }
+ }
+ return buf.join ('');
+};
+Encoding.decodeBase64 = function (str) {
+ if (str == null || str.length == 0) return str;
+ var b64 = Encoding.base64Chars;
+ var xb64 = Encoding.xBase64Chars;
+ if (Encoding.xBase64Chars == null) {
+ xb64 = new Object();
+ for (var i = 0; i < b64.length; i++){
+ xb64[b64[i]] = i;
+ }
+ Encoding.xBase64Chars = xb64;
+ }
+ var length = str.length;
+ var index = 0;
+ var buf = [];
+ var c0, c1, c2, c3;
+ var c = 0;
+ while (index < length && c++ < 60000) {
+ c0 = xb64[str.charAt (index++)];
+ c1 = xb64[str.charAt (index++)];
+ c2 = xb64[str.charAt (index++)];
+ c3 = xb64[str.charAt (index++)];
+ buf[buf.length] = String.fromCharCode(((c0 << 2) & 0xff) | c1 >> 4);
+ if (c2 != null) {
+ buf[buf.length] = String.fromCharCode(((c1 << 4) & 0xff) | c2 >> 2);
+ if (c3 != null) {
+ buf[buf.length] = String.fromCharCode(((c2 << 6) & 0xff) | c3);
+ }
+ }
+ }
+ return buf.join ('');
+};