From 898c6e4ac79665cb5c8b4963b2c2285739d85b3b Mon Sep 17 00:00:00 2001 From: Chiel92 Date: Wed, 10 Oct 2012 01:04:23 +0200 Subject: [PATCH] config files systemized --- ftplugin/css.vim | 8 + ftplugin/html.vim | 8 + ftplugin/javascript.vim | 8 + ftplugin/php.vim | 2 + plugin/autoformat.vim | 9 +- tests/- | 22 + tests/html.htm | 80 +- tests/html2.htm | 80 +- tests/js.js | 14830 ++++++++++++++++++++++++++------------ 9 files changed, 10253 insertions(+), 4794 deletions(-) create mode 100644 ftplugin/css.vim create mode 100644 ftplugin/html.vim create mode 100644 ftplugin/javascript.vim create mode 100644 ftplugin/php.vim create mode 100644 tests/- diff --git a/ftplugin/css.vim b/ftplugin/css.vim new file mode 100644 index 0000000..db437f1 --- /dev/null +++ b/ftplugin/css.vim @@ -0,0 +1,8 @@ +let &formatexpr="CSSBeautify()" +let s:bundleDir = fnamemodify(expand(""), ":h:h:h") +let g:cssbeautify_file = fnameescape(s:bundleDir."/js-beautify/beautify-css.js") + +let g:cssbeautify = {'indent_size': 4, 'indent_char': ' '} +set expandtab +set tabstop=4 +set shiftwidth=4 diff --git a/ftplugin/html.vim b/ftplugin/html.vim new file mode 100644 index 0000000..ab60bfd --- /dev/null +++ b/ftplugin/html.vim @@ -0,0 +1,8 @@ +let &formatexpr="HtmlBeautify()" +let s:bundleDir = fnamemodify(expand(""), ":h:h:h") +let g:htmlbeautify_file = fnameescape(s:bundleDir."/js-beautify/beautify-html.js") + +let g:htmlbeautify = {'indent_size': 2, 'indent_char': ' ', 'max_char': 78, 'brace_style': 'expand', 'unformatted': ['a', 'sub', 'sup', 'b', 'i', 'u']} +set expandtab +set tabstop=2 +set shiftwidth=2 diff --git a/ftplugin/javascript.vim b/ftplugin/javascript.vim new file mode 100644 index 0000000..d0b0105 --- /dev/null +++ b/ftplugin/javascript.vim @@ -0,0 +1,8 @@ +let &formatexpr="JsBeautify()" +let s:bundleDir = fnamemodify(expand(""), ":h:h:h") +let g:jsbeautify_file = fnameescape(s:bundleDir."/js-beautify/beautify.js") + +let g:jsbeautify = {'indent_size': 4, 'indent_char': ' '} +set expandtab +set tabstop=4 +set shiftwidth=4 diff --git a/ftplugin/php.vim b/ftplugin/php.vim new file mode 100644 index 0000000..39cdbdf --- /dev/null +++ b/ftplugin/php.vim @@ -0,0 +1,2 @@ +let &formatprg="phpCB --space-after-if --space-after-switch --space-after-while --space-before-start-angle-bracket --space-after-end-angle-bracket --one-true-brace-function-declaration --glue-amperscore --change-shell-comment-to-double-slashes-comment --force-large-php-code-tag --force-true-false-null-contant-lowercase --align-equal-statements --comment-rendering-style PEAR --equal-align-position 50 --padding-char-count 4" + diff --git a/plugin/autoformat.vim b/plugin/autoformat.vim index 60315d6..37792dd 100644 --- a/plugin/autoformat.vim +++ b/plugin/autoformat.vim @@ -1,11 +1,5 @@ -"Set the format programs for the right filetypes -au filetype javascript let &formatexpr="JsBeautify()" -au filetype html let &formatexpr="HtmlBeautify()" -au filetype css let &formatexpr="CSSBeautify()" -au filetype php let &formatprg="phpCB --space-after-if --space-after-switch --space-after-while --space-before-start-angle-bracket --space-after-end-angle-bracket --one-true-brace-function-declaration --glue-amperscore --change-shell-comment-to-double-slashes-comment --force-large-php-code-tag --force-true-false-null-contant-lowercase --align-equal-statements --comment-rendering-style PEAR --equal-align-position 50 --padding-char-count 4" - "Function for formatting the entire buffer -function g:VimAutoformat() +function! g:Autoformat() "Save window state let winview=winsaveview() "Autoformat code @@ -13,4 +7,3 @@ function g:VimAutoformat() "Recall window state call winrestview(winview) endfunction - diff --git a/tests/- b/tests/- new file mode 100644 index 0000000..204c53d --- /dev/null +++ b/tests/- @@ -0,0 +1,22 @@ +[?1049h[?1h=[?12;25h[?12l[?25h[?25l"html2.htm" 14L, 851C +Error detected while processing /home/chiel/.vim/bundle/vim-autoformat/ftplugin +/html.vim: +line 3: +E121: Undefined variable: s:bundle +E116: Invalid arguments for function fnameescape(s:bundle."/js-beautify/beautif +y-html.js") +E15: Invalid expression: fnameescape(s:bundle."/js-beautify/beautify-html.js")node.js:201 throw e; // process.nextTick error, or 'error' event on first tick ^ +Error: ENOENT, no such file or directory '/home/chiel/.vim/bundle/vim-autoformatt/config/.vim/bundle/js-beautify/beautify-html.js' + at Object.openSync (fs.js:230:18) + at Object.readFileSync (fs.js:120:15) + at /home/chiel/.vim/bundle/vim-jsbeautify/plugin/beautify.min.js:1:1058 + at /home/chiel/.vim/bundle/vim-jsbeautify/plugin/beautify.min.js:1:928 + at /home/chiel/.vim/bundle/vim-jsbeautify/plugin/beautify.min.js:1:1172 + at Object.<anonymous> (/home/chiel/.vim/bundle/vim-jsbeautify/plugin/beautiffy.min.js:1:1283) + at Object.<anonymous> (/home/chiel/.vim/bundle/vim-jsbeautify/plugin/beautiffy.min.js:1:1312) + at Module._compile (module.js:441:26) + at Object..js (module.js:459:10) + at Module.load (module.js:348:32) +~ ~ ~ ~ ~ ~ 1,1All]2;html2.htm (~/.vim/bundle/vim-autoformat/tests) - VIM]1;html2.htm[?12l[?25h[?25l2,9[?12l[?25h[?25l3,15[?12l[?25h[?25l4,1 [?12l[?25h[?25lType :quit to exit Vim4,1All[?12l[?25h[?1l>[?1049lVim: Caught deadly signal HUP +Vim: Finished. +]2;chiel@ENIAC: ~/.vim/bundle/vim-autoformat/tests]1;chiel@ENIAC: ~/.vim/bundle/vim-autoformat/tests \ No newline at end of file diff --git a/tests/html.htm b/tests/html.htm index d19c348..a943e1c 100644 --- a/tests/html.htm +++ b/tests/html.htm @@ -212,31 +212,28 @@ -
- 搜索设置| - 登录 - 注册 +

- +

-

- 新 闻  - 网 页  - 贴 吧  - 知 道  - MP3  - 图 片  - 视 频  - 地 图 +

新 闻  网 页  贴 吧  + 知 道  MP3  图 片  + 视 频  地 图 +

@@ -258,44 +255,44 @@
-

- 空间  - 百科  - hao123 - | - 更多>> - +

空间  百科  + hao123 + | 更多>> + +

-

- 把百度设为主页 - 把百度加入收藏夹 +

-

- 加入百度推广| - 搜索风云榜| - 关于百度| - About Baidu +

加入百度推广| 搜索风云榜| + 关于百度| About Baidu +

-

©2012 Baidu - 使用百度前必读 - 京ICP证030173号 +

©2012 Baidu 使用百度前必读 + 京ICP证030173号 +

@@ -415,4 +412,3 @@ - diff --git a/tests/html2.htm b/tests/html2.htm index fb39974..4dccbc3 100644 --- a/tests/html2.htm +++ b/tests/html2.htm @@ -1,66 +1,14 @@ -Google


鏂帮紒甯姪鎮淇濇姢涓婄綉瀹夊叏鍙婇殣绉鐨勮瘈绐


Google.com.hk 浣跨敤涓嬪垪璇█锛 涓枃锛堢箒楂旓級 English

\ No newline at end of file +node.js:201 + throw e; // process.nextTick error, or 'error' event on first tick + ^ +Error: ENOENT, no such file or directory '/home/chiel/.vim/bundle/vim-autoformat/config/.vim/bundle/js-beautify/beautify-html.js' + at Object.openSync (fs.js:230:18) + at Object.readFileSync (fs.js:120:15) + at /home/chiel/.vim/bundle/vim-jsbeautify/plugin/beautify.min.js:1:1058 + at /home/chiel/.vim/bundle/vim-jsbeautify/plugin/beautify.min.js:1:928 + at /home/chiel/.vim/bundle/vim-jsbeautify/plugin/beautify.min.js:1:1172 + at Object. (/home/chiel/.vim/bundle/vim-jsbeautify/plugin/beautify.min.js:1:1283) + at Object. (/home/chiel/.vim/bundle/vim-jsbeautify/plugin/beautify.min.js:1:1312) + at Module._compile (module.js:441:26) + at Object..js (module.js:459:10) + at Module.load (module.js:348:32) diff --git a/tests/js.js b/tests/js.js index ab84eb1..b8eeb96 100644 --- a/tests/js.js +++ b/tests/js.js @@ -1,4699 +1,10173 @@ -(function() { - var a, b = window.T, - c = "http"; - scheme = c + "://", host = "open.t.qq.com", a = { - name: "Tencent -weibo -SDK", - version: "1.0", - appkey: { - value: "{APPKEY}", - version: "{APPKEY_VERSION}", - verified: !1 - }, - debug: !0, - pingback: !0, - _domain: { - api: scheme + host + "{API_URI}", - auth: scheme + host + "{AUTH_URI}", - query: scheme + host + "{QUERY_TOKEN_URI}", - exchange: scheme + host + "{EXCHANGE_TOKEN_URI}", - flashproxy: scheme + host + "{FLASHPROXY_URI}", - serverproxy: scheme + host + "{SERVERPROXY_URI}", - clientproxy: "{CLIENTPROXY_URI}" - }, - _const: { - AUTH_WINDOW_NAME: "authClientProxy_ee5a0f93", - AUTH_WINDOW_WIDTH: 575, - AUTH_WINDOW_HEIGHT: 465 - }, - _cookie: { - names: { - accessToken: "QQWBToken", - refreshToken: "QQWBRefreshToken" - }, - path: "/", - domain: "" - }, - noConflict: function() { - return - b && (window.T = b), a - }, - copy: function(a, b, c, d) { - for (var e in b) if (c || typeof - a[e] == "undefined") a[e] = d ? d(b[e]) : b[e]; - return a - }, - create: function(a, b) { - var - c = this, - d = a ? a.split(".") : [], - e = d.length; - for (var f = 0; f < e; f++) { - var - g = d[f], - h = c[g]; - h || (h = b && f + 1 === e ? b : {}, c[g] = h), c = h - } - return - c - }, - extend: function(b, c, d) { - return a.copy(typeof - b == "string" ? a.create.call(this, b) : b, c, d) - }, - _alias: function(b, c) { - c = c || a; - if (typeof - b == "string") this[b] = c; - else if (Object.prototype.toString.call(b) === "[object -Array]") for (var - d = 0, e = b.length; d < e; d++) this[b[d]] = c - }, - alias: function(b, c) { - a._alias(b, a[c]) - }, - assign: function(a, b, c) { - var - d = this, - e = d, - f = a ? a.split(".") : [], - g = f.length; - for (var h = 0; h < g; h++) { - var - i = f[h], - j = d[i]; - if (!j) throw new Error("Tencent weibo SDK: [ERROR] no such name -" + i); - e = d, d = j - } - if (typeof d == "string") e[i] = d.replace(new - RegExp("\\{" + b + "\\}", "ig"), c); - else if (typeof d == "object") for (var k in d) d.hasOwnProperty(k) && typeof d[k] == "string" && (d[k] = d[k].replace(new - RegExp("\\{" + b + "\\}", "ig"), c)) - }, - uid: function() { - return - Math.random().toString(16).substr(2) - } - }, a.alias("provide", "create"), a._alias.call(window, ["QQWB", "T"], a), a.assign("_domain", "API_URI", "/api"), a.assign("_domain", "AUTH_URI", "/oauth2_html/login.php"), a.assign("_domain", "SERVERPROXY_URI", "/open-js/proxy.html"), a.assign("_domain", "FLASHPROXY_URI", "/open-js/proxy_v15.swf"), a.assign("_domain", "EXCHANGE_TOKEN_URI", "/cgi-bin/exchange_token"), a.assign("_domain", "QUERY_TOKEN_URI", "/cgi-bin/auto_token") -})(), QQWB.extend("String", { - _trimLeft: /^\s+/, - _trimRight: /\s+$/, - isString: function(a) { - return - typeof a == "string" - }, - ltrim: function(a) { - return - a == null ? "" : a.toString().replace(this._trimLeft, "") - }, - rtrim: function(a) { - return - a == null ? "" : a.toString().replace(this._trimRight, "") - }, - trim: String.prototype.trim ? - function(a) { - return - a == null ? "" : String.prototype.trim.call(a) - } : function(a) { - return - a == null ? "" : a.toString().replace(this._trimLeft, "").replace(this._trimRight, "") - }, - startsWith: String.prototype.startsWith ? - function(a, b) { - return - a == null ? !1 : String.prototype.startsWith.call(a, b) - } : function(a, b) { - return - a == null ? !1 : a.toString().indexOf(b) == 0 - }, - endsWith: String.prototype.endsWith ? - function(a, b) { - return - a == null ? !1 : String.prototype.endsWith.call(a, b) - } : function(a, b) { - return - a == null ? !1 : a.toString().lastIndexOf(b) >= 0 && a.toString().lastIndexOf(b) + b.length == a.length - } -}), QQWB.extend("_const", { - HTTP_METHOD_GET: "GET", - HTTP_METHOD_POST: "POST", - HTTP_METHOD_GET_OR_POST: "GET -| -POST", - API_CATEGORY_TIMELINE: "鏃堕棿绾", - API_CATEGORY_WEIBO: "寰崥鐩稿叧", - API_CATEGORY_ACCOUNT: "璐︽埛鐩稿叧", - API_CATEGORY_RELATION: "鍏崇郴閾剧浉鍏", - API_CATEGORY_SIXIN: "绉佷俊鐩稿叧", - API_CATEGORY_SEARCH: "鎼滅储鐩稿叧", - API_CATEGORY_TRENS: "鐑害瓒嬪娍", - API_CATEGORY_QUERY: "鏌ョ湅鏁版嵁", - API_CATEGORY_FAVORITE: "鏁版嵁鏀惰棌", - API_CATEGORY_TOPIC: "璇濋鐩稿叧", - API_CATEGORY_TAG: "鏍囩鐩稿叧", - API_CATEGORY_OTHER: "鍏朵粬", - API_NO_DESCRIPTION: "鏆傛椂娌℃湁鍏充簬姝ゅ弬鏁扮殑璇存槑", - API_NO_DEFAULT_VALUE: "", - COMMON_NULL: null, - COMMON_EMPTY_STRING: "" -}), QQWB.extend("_apiProvider", { - _apiRetError: { - 1: "鍙傛暟閿欒", - 2: "棰戠巼鍙楅檺", - 3: "閴存潈澶辫触", - 4: "鍐呴儴閿欒" - }, - _apiErrorCode: { - 4: "杩囧鑴忚瘽", - 5: "绂佹璁块棶", - 6: "璁板綍涓嶅瓨鍦", - 8: "鍐呭杩囬暱", - 9: "鍐呭鍖呭惈鍨冨溇淇℃伅", - 10: "鍙戣〃澶揩锛岄鐜囬檺鍒", - 11: "婧愭秷鎭笉瀛樺湪", - 12: "鏈煡閿欒", - 13: "閲嶅鍙戣〃" - }, - _apiParseRetCode: function(a) { - var - b = a.match(/\"ret\":(\d+)\}/) || a.match(/(\d+)<\/ret>/); - return - b ? parseInt(b[1], 10) : b - }, - _apiParseErrorCode: function(a) { - var - b = a.match(/\"errcode\":(-?\d+)/) || a.match(/(\d+)<\/errcode>/); - return - b ? parseInt(b[1], 10) : b - }, - _apiGetErrorMessage: function(a, b) { - var - c = [], - a = a + "", - b = b + "", - d = QQWB._apiProvider._apiRetError[a], - e = QQWB._apiProvider._apiErrorCode[b]; - return - d && c.push(d), e && c.push(e), c.length > 0 ? c.join(",") : "鏈煡閿欒" - }, - apis: { - "/statuses/home_timeline": { - category: QQWB._const.API_CATEGORY_TIMELINE, - description: "涓婚〉鏃堕棿绾", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - pagetime: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/statuses/home_timeline_vip": { - category: QQWB._const.API_CATEGORY_TIMELINE, - description: "vip鐢ㄦ埛鏃堕棿绾", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: "2", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagetime: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - lastid: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/statuses/public_timeline": { - category: QQWB._const.API_CATEGORY_TIMELINE, - description: "骞挎挱澶у巺鏃堕棿绾", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pos: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/statuses/user_timeline": { - category: QQWB._const.API_CATEGORY_TIMELINE, - description: "鍏朵粬鐢ㄦ埛鍙戣〃鏃堕棿绾", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagetime: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - lastid: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - name: { - defaultValue: "t", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/statuses/mentions_timeline": { - category: QQWB._const.API_CATEGORY_TIMELINE, - description: "@鎻愬埌鎴戠殑鏃堕棿绾", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagetime: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - lastid: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - type: { - defaultValue: "0x1", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/statuses/ht_timeline": { - category: QQWB._const.API_CATEGORY_TIMELINE, - description: "璇濋鏃堕棿绾", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - httext: { - defaultValue: "pBoard", - description: QQWB._const.API_NO_DESCRIPTION - }, - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - pageinfo: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/statuses/broadcast_timeline": { - category: QQWB._const.API_CATEGORY_TIMELINE, - description: "鎴戝彂琛ㄦ椂闂寸嚎", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagetime: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - lastid: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/statuses/special_timeline": { - category: QQWB._const.API_CATEGORY_TIMELINE, - description: "鐗瑰埆鏀跺惉鐨勪汉鍙戣〃鏃堕棿绾", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagetime: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/statuses/broadcast_timeline_ids": { - category: QQWB._const.API_CATEGORY_TIMELINE, - description: "鎴戝彂琛ㄦ椂闂寸嚎绱㈠紩", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagetime: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - lastid: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - type: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - contenttype: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - accesslevel: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/statuses/home_timeline_ids": { - category: QQWB._const.API_CATEGORY_TIMELINE, - description: "棣栭〉鏃堕棿绾跨储寮", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagetime: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - lastid: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - type: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - contenttype: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - accesslevel: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/statuses/mentions_timeline_ids": { - category: QQWB._const.API_CATEGORY_TIMELINE, - description: "鎻愬強鎴戠殑鏃堕棿绾跨储寮", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagetime: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - lastid: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - type: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - contenttype: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - accesslevel: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/statuses/user_timeline_ids": { - category: QQWB._const.API_CATEGORY_TIMELINE, - description: "鐢ㄦ埛鍙戣〃鏃堕棿绾跨储寮", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagetime: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - lastid: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - name: { - defaultValue: "t", - description: QQWB._const.API_NO_DESCRIPTION - }, - type: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - contenttype: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - accesslevel: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/statuses/users_timeline": { - category: QQWB._const.API_CATEGORY_TIMELINE, - description: "澶氱敤鎴峰彂琛ㄦ椂闂寸嚎", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagetime: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - lastid: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - names: { - defaultValue: "t,api_weibo", - description: QQWB._const.API_NO_DESCRIPTION - }, - type: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - contenttype: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - accesslevel: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/statuses/users_timeline_ids": { - category: QQWB._const.API_CATEGORY_TIMELINE, - description: "澶氱敤鎴峰彂琛ㄦ椂闂寸嚎绱㈠紩", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagetime: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - lastid: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - names: { - defaultValue: "t,api_weibo", - description: QQWB._const.API_NO_DESCRIPTION - }, - type: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - contenttype: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - accesslevel: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/statuses/area_timeline": { - category: QQWB._const.API_CATEGORY_TIMELINE, - description: "鍚屽煄鍙戣〃鏃堕棿绾", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pos: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - country: { - defaultValue: "1", - description: QQWB._const.API_NO_DESCRIPTION - }, - province: { - defaultValue: 11, - description: QQWB._const.API_NO_DESCRIPTION - }, - city: { - defaultValue: "1", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/statuses/ht_timeline_ext": { - category: QQWB._const.API_CATEGORY_TIMELINE, - description: "璇濋鏃堕棿绾(淇缈婚〉闂)", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - reqnum: { - defaultValue: 10, - description: QQWB._const.API_NO_DESCRIPTION - }, - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - flag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - accesslevel: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - type: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - contenttype: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - httext: { - defaultValue: "iweibo", - description: QQWB._const.API_NO_DESCRIPTION - }, - htid: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/show": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "鑾峰彇涓鏉″井鍗氭暟鎹", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - id: { - defaultValue: 51545056800467, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/add": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "鍙戣〃涓鏉″井鍗", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - content: { - defaultValue: "test", - description: QQWB._const.API_NO_DESCRIPTION - }, - clientip: { - defaultValue: "127.0.0.1", - description: QQWB._const.API_NO_DESCRIPTION - }, - jing: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - wei: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/del": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "鍒犻櫎涓鏉″井鍗", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - id: { - defaultValue: 94035056272295, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/re_add": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "杞挱涓鏉″井鍗", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - content: { - defaultValue: "test", - description: QQWB._const.API_NO_DESCRIPTION - }, - clientip: { - defaultValue: "127.0.0.1", - description: QQWB._const.API_NO_DESCRIPTION - }, - jing: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - wei: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - reid: { - defaultValue: 77048060858014, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/reply": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "鍥炲涓鏉″井鍗", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - content: { - defaultValue: "test", - description: QQWB._const.API_NO_DESCRIPTION - }, - clientip: { - defaultValue: "127.0.0.1", - description: QQWB._const.API_NO_DESCRIPTION - }, - jing: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - wei: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - reid: { - defaultValue: 77048060858014, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/add_pic": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "鍙戣〃涓鏉″浘鐗囧井鍗", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - content: { - defaultValue: "test", - description: QQWB._const.API_NO_DESCRIPTION - }, - clientip: { - defaultValue: "127.0.0.1", - description: QQWB._const.API_NO_DESCRIPTION - }, - jing: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - wei: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - pic: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/add_emotion": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "鍙戣〃涓鏉″績鎯呭井鍗", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - content: { - defaultValue: "test", - description: QQWB._const.API_NO_DESCRIPTION - }, - clientip: { - defaultValue: "127.0.0.1", - description: QQWB._const.API_NO_DESCRIPTION - }, - jing: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - wei: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - signtype: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/re_count": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "杞挱鏁版垨鐐硅瘎鏁", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - ids: { - defaultValue: 0xb04fd23c98500000, - description: QQWB._const.API_NO_DESCRIPTION - }, - flag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/re_list": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "鑾峰彇鍗曟潯寰崥鐨勮浆鍙戝拰鐐硅瘎鍒楄〃", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - flag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - rootid: { - defaultValue: 92035070199751, - description: QQWB._const.API_NO_DESCRIPTION - }, - pageflag: { - defaultValue: "1", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagetime: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: "2", - description: QQWB._const.API_NO_DESCRIPTION - }, - twitterid: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/comment": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "鐐硅瘎涓鏉″井鍗", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - content: { - defaultValue: "test", - description: QQWB._const.API_NO_DESCRIPTION - }, - clientip: { - defaultValue: "127.0.0.1", - description: QQWB._const.API_NO_DESCRIPTION - }, - jing: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - wei: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - reid: { - defaultValue: 28135069067568, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/add_music": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "鍙戣〃闊抽寰崥", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - content: { - defaultValue: "test", - description: QQWB._const.API_NO_DESCRIPTION - }, - clientip: { - defaultValue: "127.0.0.1", - description: QQWB._const.API_NO_DESCRIPTION - }, - jing: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - wei: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - url: { - defaultValue: "http://url.cn", - description: QQWB._const.API_NO_DESCRIPTION - }, - title: { - defaultValue: "姝屽悕", - description: QQWB._const.API_NO_DESCRIPTION - }, - author: { - defaultValue: "婕斿敱鑰", - description: QQWB._const.API_NO_DESCRIPTION - }, - reid: { - defaultValue: 12345678, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/add_video": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "鍙戣〃瑙嗛寰崥", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - content: { - defaultValue: "test", - description: QQWB._const.API_NO_DESCRIPTION - }, - clientip: { - defaultValue: "127.0.0.1", - description: QQWB._const.API_NO_DESCRIPTION - }, - jing: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - wei: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - url: { - defaultValue: "http://url.cn", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/add_video": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "鍙戣〃瑙嗛寰崥", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - content: { - defaultValue: "test", - description: QQWB._const.API_NO_DESCRIPTION - }, - clientip: { - defaultValue: "127.0.0.1", - description: QQWB._const.API_NO_DESCRIPTION - }, - jing: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - wei: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - url: { - defaultValue: "http://url.cn", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/getvideoinfo": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "鑾峰彇瑙嗛淇℃伅", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - url: { - defaultValue: "http://v.youku.com/v_show/id_XMjExODczODM2.html", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/list": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "鏍规嵁寰崥ID鎵归噺寰楀埌寰崥鏁版嵁", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - ids: { - defaultValue: "39110101242147,39578069128701", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/add_video_prev": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "棰勫彂琛ㄤ竴鏉¤棰戝井鍗", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - content: { - defaultValue: "test", - description: QQWB._const.API_NO_DESCRIPTION - }, - clientip: { - defaultValue: "127.0.0.1", - description: QQWB._const.API_NO_DESCRIPTION - }, - jing: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - wei: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - vid: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - title: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/t/sub_re_count": { - category: QQWB._const.API_CATEGORY_WEIBO, - description: "鑾峰彇杞挱鐨勫啀娆¤浆鎾暟", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - ids: { - defaultValue: "8171051658365,55054116813124", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/user/info": { - category: QQWB._const.API_CATEGORY_ACCOUNT, - description: "鑾峰彇鑷繁鐨勮缁嗚祫鏂", - supportMethod: QQWB._const.HTTP_METHOD_GET - }, - "/user/update": { - category: QQWB._const.API_CATEGORY_ACCOUNT, - description: "鏇存柊涓汉璧勬枡", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - nick: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - sex: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - year: { - defaultValue: 2e3, - description: QQWB._const.API_NO_DESCRIPTION - }, - month: { - defaultValue: "1", - description: QQWB._const.API_NO_DESCRIPTION - }, - day: { - defaultValue: "1", - description: QQWB._const.API_NO_DESCRIPTION - }, - countrycode: { - defaultValue: "1", - description: QQWB._const.API_NO_DESCRIPTION - }, - provincecode: { - defaultValue: 11, - description: QQWB._const.API_NO_DESCRIPTION - }, - citycode: { - defaultValue: "1", - description: QQWB._const.API_NO_DESCRIPTION - }, - introduction: { - defaultValue: "xxxx", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/user/update_edu": { - category: QQWB._const.API_CATEGORY_ACCOUNT, - description: "鏇存柊涓汉鏁欒偛淇℃伅", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - year: { - defaultValue: 1995, - description: QQWB._const.API_NO_DESCRIPTION - }, - level: { - defaultValue: "1", - description: QQWB._const.API_NO_DESCRIPTION - }, - schoolid: { - defaultValue: "1", - description: QQWB._const.API_NO_DESCRIPTION - }, - field: { - defaultValue: "1", - description: QQWB._const.API_NO_DESCRIPTION - }, - departmentid: { - defaultValue: "1", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/user/update_head": { - category: QQWB._const.API_CATEGORY_ACCOUNT, - description: "鏇存柊涓汉璧勬枡澶村儚", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - pic: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/user/other_info": { - category: QQWB._const.API_CATEGORY_ACCOUNT, - description: "鑾峰彇鍏朵粬浜鸿祫鏂", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - name: { - defaultValue: "t", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/user/infos": { - category: QQWB._const.API_CATEGORY_ACCOUNT, - description: "澶氱敤鎴蜂俊鎭", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - names: { - defaultValue: "t,api_weibo", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/user/verify": { - category: QQWB._const.API_CATEGORY_ACCOUNT, - description: "楠岃瘉璐︽埛鏄惁鍚堟硶锛堟槸鍚︽敞鍐屽井鍗氾級", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - name: { - defaultValue: "t", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/user/emotion": { - category: QQWB._const.API_CATEGORY_ACCOUNT, - description: "鑾峰彇蹇冩儏寰崥", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - name: { - defaultValue: "t", - description: QQWB._const.API_NO_DESCRIPTION - }, - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - id: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - timstamp: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - type: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - contenttype: { - defaultValue: "1", - description: QQWB._const.API_NO_DESCRIPTION - }, - accesslevel: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - emotiontype: { - defaultValue: "0xFFFFFFFF", - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: 10, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/fanslist": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "鎴戠殑鍚紬鍒楄〃", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - startindex: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/idollist": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "鎴戞敹鍚殑浜哄垪琛", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - startindex: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/blacklist": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "榛戝悕鍗曞垪琛", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - startindex: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/speciallist": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "鐗瑰埆鏀跺惉鍒楄〃", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - startindex: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/add": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "鏀跺惉鏌愪釜鐢ㄦ埛", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - name: { - defaultValue: "t", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/del": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "鍙栨秷鏀跺惉鏌愪釜鐢ㄦ埛", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - name: { - defaultValue: "t", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/addspecial": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "鐗瑰埆鏀跺惉鏌愪釜鐢ㄦ埛", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - name: { - defaultValue: "t", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/delspecial": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "鍙栨秷鐗瑰埆鏀跺惉鏌愪釜鐢ㄦ埛", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - name: { - defaultValue: "t", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/addblacklist": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "娣诲姞鏌愪釜鐢ㄦ埛鍒伴粦鍚嶅崟", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - name: { - defaultValue: "t", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/delblacklist": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "浠庨粦鍚嶅崟涓垹闄ゆ煇涓敤鎴", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - name: { - defaultValue: "t", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/check": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "妫鏌ユ槸鍚︽垜鐨勫惉浼楁垨鏀跺惉鐨勪汉", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - names: { - defaultValue: "t", - description: QQWB._const.API_NO_DESCRIPTION - }, - flag: { - defaultValue: "2", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/user_fanslist": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "鍏朵粬璐︽埛鍚紬鍒楄〃", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - reqnum: { - defaultValue: 30, - description: QQWB._const.API_NO_DESCRIPTION - }, - startindex: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - name: { - defaultValue: "t", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/user_idollist": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "鍏朵粬璐︽埛鏀跺惉鐨勪汉鍒楄〃", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - reqnum: { - defaultValue: 30, - description: QQWB._const.API_NO_DESCRIPTION - }, - startindex: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - name: { - defaultValue: "t", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/user_speciallist": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "鍏朵粬璐︽埛鐗瑰埆鏀跺惉鐨勪汉鍒楄〃", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - reqnum: { - defaultValue: 30, - description: QQWB._const.API_NO_DESCRIPTION - }, - startindex: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - name: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/fanslist_s": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "澶氬惉浼楀垪琛", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - reqnum: { - defaultValue: 100, - description: QQWB._const.API_NO_DESCRIPTION - }, - startindex: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/idollist_s": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "澶氭敹鍚汉鍒楄〃", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - reqnum: { - defaultValue: 100, - description: QQWB._const.API_NO_DESCRIPTION - }, - startindex: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/friends/mutual_list": { - category: QQWB._const.API_CATEGORY_RELATION, - description: "浜掑惉鍏崇郴閾惧垪琛", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - name: { - defaultValue: "t", - description: QQWB._const.API_NO_DESCRIPTION - }, - startindex: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: 30, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/private/add": { - category: QQWB._const.API_CATEGORY_SIXIN, - description: "鍙戠淇", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - content: { - defaultValue: "test", - description: QQWB._const.API_NO_DESCRIPTION - }, - clientip: { - defaultValue: "127.0.0.1", - description: QQWB._const.API_NO_DESCRIPTION - }, - jing: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - wei: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - name: { - defaultValue: "mmplayer", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/private/del": { - category: QQWB._const.API_CATEGORY_SIXIN, - description: "鍒犻櫎涓鏉$淇", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - id: { - defaultValue: 26154115313103, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/private/recv": { - category: QQWB._const.API_CATEGORY_SIXIN, - description: "鏀朵欢绠", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagetime: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - lastid: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/private/send": { - category: QQWB._const.API_CATEGORY_SIXIN, - description: "鍙戜欢绠", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagetime: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - lastid: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/search/user": { - category: QQWB._const.API_CATEGORY_SEARCH, - description: "鎼滅储鐢ㄦ埛", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - keyword: { - defaultValue: "test", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagesize: { - defaultValue: 10, - description: QQWB._const.API_NO_DESCRIPTION - }, - page: { - defaultValue: "1", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/search/t": { - category: QQWB._const.API_CATEGORY_SEARCH, - description: "鎼滅储寰崥", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - keyword: { - defaultValue: "test", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagesize: { - defaultValue: 10, - description: QQWB._const.API_NO_DESCRIPTION - }, - page: { - defaultValue: "1", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/search/userbytag": { - category: QQWB._const.API_CATEGORY_SEARCH, - description: "閫氳繃鏍囩鎼滅储鐢ㄦ埛", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - keyword: { - defaultValue: "test", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagesize: { - defaultValue: 10, - description: QQWB._const.API_NO_DESCRIPTION - }, - page: { - defaultValue: "1", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/trends/ht": { - category: QQWB._const.API_CATEGORY_TRENS, - description: "璇濋鐑", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - type: { - defaultValue: "3", - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - pos: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/trends/t": { - category: QQWB._const.API_CATEGORY_TRENS, - description: "鐑棬杞挱", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - pos: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/info/update": { - category: QQWB._const.API_CATEGORY_QUERY, - description: "鏇存柊鏉℃暟", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - op: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - type: { - defaultValue: "9", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/fav/addt": { - category: QQWB._const.API_CATEGORY_FAVORITE, - description: "鏀惰棌涓鏉″井鍗", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - id: { - defaultValue: 123456789, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/fav/delt": { - category: QQWB._const.API_CATEGORY_FAVORITE, - description: "鍙栨秷鏀惰棌涓鏉″井鍗", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - id: { - defaultValue: 123456789, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/fav/list_t": { - category: QQWB._const.API_CATEGORY_FAVORITE, - description: "鏀惰棌鐨勫井鍗氬垪琛", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - nexttime: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - prevtime: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - lastid: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/fav/addht": { - category: QQWB._const.API_CATEGORY_FAVORITE, - description: "璁㈤槄璇濋", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - id: { - defaultValue: 123456789, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/fav/delht": { - category: QQWB._const.API_CATEGORY_FAVORITE, - description: "鍙栨秷鏀惰棌璇濋", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - id: { - defaultValue: 123456789, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/fav/list_ht": { - category: QQWB._const.API_CATEGORY_FAVORITE, - description: "鑾峰彇宸茶闃呰瘽棰樺垪琛", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - reqnum: { - defaultValue: 20, - description: QQWB._const.API_NO_DESCRIPTION - }, - pageflag: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - pagetime: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - }, - lastid: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/ht/ids": { - category: QQWB._const.API_CATEGORY_TOPIC, - description: "鏍规嵁璇濋鍚嶇О鏌ヨ璇濋ID", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - httexts: { - defaultValue: "abc,efg", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/ht/info": { - category: QQWB._const.API_CATEGORY_TOPIC, - description: "鏍规嵁璇濋ID鑾峰彇璇濋鐩稿叧寰崥", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - ids: { - defaultValue: 0xb04fd23c98500000, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/tag/add": { - category: QQWB._const.API_CATEGORY_TAG, - description: "娣诲姞鏍囩", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - tag: { - defaultValue: "snow", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/tag/del": { - category: QQWB._const.API_CATEGORY_TAG, - description: "鍒犻櫎鏍囩", - supportMethod: QQWB._const.HTTP_METHOD_POST, - supportParams: { - tagid: { - defaultValue: 0x4735d427dffb9400, - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/other/kownperson": { - category: QQWB._const.API_CATEGORY_OTHER, - description: "鎴戝彲鑳借璇嗙殑浜", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - ip: { - defaultValue: "127.0.0.1", - description: QQWB._const.API_NO_DESCRIPTION - }, - country_code: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - province_code: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - }, - city_code: { - defaultValue: "", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/other/kownperson": { - category: QQWB._const.API_CATEGORY_OTHER, - description: "鍙兘璁よ瘑鐨勪汉", - supportMethod: QQWB._const.HTTP_METHOD_GET - }, - "/other/shorturl": { - category: QQWB._const.API_CATEGORY_OTHER, - description: "鐭璘RL杞暱URL", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - url: { - defaultValue: "3M6GSa", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/other/get_emotions": { - category: QQWB._const.API_CATEGORY_OTHER, - description: "鑾峰彇琛ㄦ儏鎺ュ彛", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - type: { - defaultValue: "0", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/other/kownperson": { - category: QQWB._const.API_CATEGORY_OTHER, - description: "鎴戝彲鑳借璇嗙殑浜", - supportMethod: QQWB._const.HTTP_METHOD_GET, - supportParams: { - ip: { - defaultValue: "127.0.0.1", - description: QQWB._const.API_NO_DESCRIPTION - } - } - }, - "/other/videokey": { - category: QQWB._const.API_CATEGORY_OTHER, - description: "鑾峰彇瑙嗛涓婁紶鐨刱ey", - supportMethod: QQWB._const.HTTP_METHOD_GET - }, - "/other/gettopreadd": { - category: QQWB._const.API_CATEGORY_OTHER, - description: "涓閿浆鎾儹闂ㄦ帓琛", - supportMethod: QQWB._const.HTTP_METHOD_GET - }, - "/other/url_converge": { - category: QQWB._const.API_CATEGORY_OTHER, - description: "鐭璾rl鑱氬悎", - supportMethod: QQWB._const.HTTP_METHOD_GET - } - }, - getDescriptor: function(a) { - return - this.apis[a] - }, - isProvide: function(a) { - return !!this.getDescriptor(a) - }, - describe: function(a) { - var b = this.getDescriptor(a); - return - b ? b.category + ">" + b.description : "" - }, - compat: function(a) { - return !QQWB.String.startsWith(a, "/") && (a = "/" + a), a.toLowerCase() - } -}); -var -JSON; -JSON || (JSON = {}), function() { - function f(a) { - return a < 10 ? "0" + a : a - } +(function() { var a, b = window.T, c = "http"; scheme = c + "://", host = + "open.t.qq.com", a = { name: "Tencent weibo SDK", version: "1.0", + appkey: { value: "{APPKEY}", version: "{APPKEY_VERSION}", + verified: !1 }, debug: !0, pingback: !0, _domain: { + api: scheme + host + "{API_URI}", auth: scheme + + host + "{AUTH_URI}", query: scheme + host + "{QUERY_TOKEN_URI}", +exchange: scheme + host + "{EXCHANGE_TOKEN_URI}", flashproxy: scheme + host + + "{FLASHPROXY_URI}", serverproxy: scheme + host + "{SERVERPROXY_URI}", +clientproxy: "{CLIENTPROXY_URI}" }, _const: { AUTH_WINDOW_NAME: + "authClientProxy_ee5a0f93", AUTH_WINDOW_WIDTH: 575, AUTH_WINDOW_HEIGHT: + 465 }, _cookie: { names: { accessToken: "QQWBToken", refreshToken: + "QQWBRefreshToken" }, path: "/", domain: "" }, noConflict: + function() { return b && (window.T = b), a }, copy: function(a, b, c, + d) { for (var e in b) if (c || typeof a[e] == "undefined") a[e] + = d ? d(b[e]) : b[e]; return a }, create: function(a, + b) { var c = this, d = a ? a.split(".") : [], e + = d.length; for (var f = 0; f < e; f++) +{ var g = d[f], h = c[g]; h || (h = b && f + 1 === e ? b : {}, c[g] = h), c = h +} return c }, extend: function(b, c, d) { return a.copy(typeof b == "string" ? + a.create.call(this, b) : b, c, d) }, _alias: function(b, c) { c = c || + a; if (typeof b == "string") this[b] = c; else if + (Object.prototype.toString.call(b) === "[object + Array]") for (var d = 0, e = b.length; d < e; d++) + this[b[d]] = c }, alias: function(b, c) { a._alias(b, + a[c]) }, assign: function(a, b, c) { + var d = this, e = d, f = a ? + a.split(".") : [], g = + f.length; for (var h = + 0; h < + g; + h++) { + var + i + = + f[h], + j + = + d[i]; + if + (!j) + throw + new + Error("Tencent + weibo + SDK: + [ERROR] + no + such + name + " + + + i); + e + = + d, + d + = + j + } if + (typeof d == "string") e[i] = + d.replace(new + RegExp("\\{" + + + b + + + "\\}", + "ig"), + c); + else if (typeof d == "object") + for (var k in d) + d.hasOwnProperty(k) + && + typeof + d[k] + == + "string" + && + (d[k] + = + d[k].replace(new + RegExp("\\{" + + + b + + + "\\}", + "ig"), + c)) + }, uid: function() { return + Math.random().toString(16).substr(2) + } }, a.alias("provide", "create"), + a._alias.call(window, ["QQWB", "T"], + a), + a.assign("_domain", "API_URI", + "/api"), + a.assign("_domain", "AUTH_URI", + "/oauth2_html/login.php"), + a.assign("_domain", "SERVERPROXY_URI", + "/open-js/proxy.html"), + a.assign("_domain", "FLASHPROXY_URI", + "/open-js/proxy_v15.swf"), + a.assign("_domain", + "EXCHANGE_TOKEN_URI", + "/cgi-bin/exchange_token"), + a.assign("_domain", "QUERY_TOKEN_URI", + "/cgi-bin/auto_token") + })(), QQWB.extend("String", { + _trimLeft: /^\s+/, _trimRight: + /\s+$/, isString: function(a) + { return typeof a == "string" }, + ltrim: function(a) { return a == null + ? "" : + a.toString().replace(this._trimLeft, + "") }, rtrim: + function(a) { return a == null + ? "" : + a.toString().replace(this._trimRight, + "") }, trim: + String.prototype.trim ? + function(a) { return a == null + ? "" : + String.prototype.trim.call(a) + } : function(a) { return a == + null ? "" : + a.toString().replace(this._trimLeft, + "").replace(this._trimRight, + "") }, + startsWith: + String.prototype.startsWith + ? function(a, + b) + { return a == + null ? + !1 + : + String.prototype.startsWith.call(a, + b) + } : + function(a, b) { return a == null ? !1 + : a.toString().indexOf(b) == 0 + }, endsWith: String.prototype.endsWith + ? function(a, b) { return a == null ? + !1 : + String.prototype.endsWith.call(a, + b) } : + function(a, b) { + return a == + null ? + !1 : + a.toString().lastIndexOf(b) + >= 0 + && + a.toString().lastIndexOf(b) + + + b.length + == + a.length + } }), + QQWB.extend("_const", + { + HTTP_METHOD_GET: + "GET", + HTTP_METHOD_POST: + "POST", + HTTP_METHOD_GET_OR_POST: + "GET | POST", + API_CATEGORY_TIMELINE: + "鏃堕棿绾", + API_CATEGORY_WEIBO: + "寰崥鐩稿叧", + API_CATEGORY_ACCOUNT: + "璐︽埛鐩稿叧", + API_CATEGORY_RELATION: + "鍏崇郴閾剧浉鍏", + API_CATEGORY_SIXIN: + "绉佷俊鐩稿叧", + API_CATEGORY_SEARCH: + "鎼滅储鐩稿叧", + API_CATEGORY_TRENS: + "鐑害瓒嬪娍", + API_CATEGORY_QUERY: + "鏌ョ湅鏁版嵁", + API_CATEGORY_FAVORITE: + "鏁版嵁鏀惰棌", + API_CATEGORY_TOPIC: + "璇濋鐩稿叧", + API_CATEGORY_TAG: + "鏍囩鐩稿叧", + API_CATEGORY_OTHER: + "鍏朵粬", + API_NO_DESCRIPTION: + "鏆傛椂娌℃湁鍏充簬姝ゅ弬鏁扮殑璇存槑", + API_NO_DEFAULT_VALUE: + "", + COMMON_NULL: null, + COMMON_EMPTY_STRING: + "" }), + QQWB.extend("_apiProvider", + { + _apiRetError: + { 1: + "鍙傛暟閿欒", + 2: "棰戠巼鍙楅檺", + 3: "閴存潈澶辫触", + 4: "鍐呴儴閿欒" + }, + _apiErrorCode: + { 4: + "杩囧鑴忚瘽", + 5: "绂佹璁块棶", + 6: + "璁板綍涓嶅瓨鍦", + 8: "鍐呭杩囬暱", + 9: + "鍐呭鍖呭惈鍨冨溇淇℃伅", + 10: + "鍙戣〃澶揩锛岄鐜囬檺鍒", + 11: + "婧愭秷鎭笉瀛樺湪", + 12: + "鏈煡閿欒", + 13: "閲嶅鍙戣〃" + }, + _apiParseRetCode: + function(a) + { var + b + = + a.match(/\"ret\":(\d+)\}/) + || + a.match(/(\d+)<\/ret>/); + return + b + ? + parseInt(b[1], + 10) + : + b + }, + _apiParseErrorCode: + function(a) + { var + b + = + a.match(/\"errcode\":(-?\d+)/) + || + a.match(/(\d+)<\/errcode>/); + return + b + ? + parseInt(b[1], + 10) + : + b + }, + _apiGetErrorMessage: + function(a, + b) + { var + c + = + [], + a + = + a + + + "", + b + = + b + + + "", + d + = + QQWB._apiProvider._apiRetError[a], + e + = + QQWB._apiProvider._apiErrorCode[b]; + return + d + && + c.push(d), + e + && + c.push(e), + c.length + > + 0 + ? + c.join(",") + : + "鏈煡閿欒" + }, + apis: { + "/statuses/home_timeline": + { + category: + QQWB._const.API_CATEGORY_TIMELINE, + description: + "涓婚〉鏃堕棿绾", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagetime: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/statuses/home_timeline_vip": + { + category: + QQWB._const.API_CATEGORY_TIMELINE, + description: + "vip鐢ㄦ埛鏃堕棿绾", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + "2", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagetime: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + lastid: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/statuses/public_timeline": + { + category: + QQWB._const.API_CATEGORY_TIMELINE, + description: + "骞挎挱澶у巺鏃堕棿绾", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pos: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/statuses/user_timeline": + { + category: + QQWB._const.API_CATEGORY_TIMELINE, + description: + "鍏朵粬鐢ㄦ埛鍙戣〃鏃堕棿绾", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagetime: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + lastid: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + name: + { + defaultValue: + "t", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/statuses/mentions_timeline": + { + category: + QQWB._const.API_CATEGORY_TIMELINE, + description: + "@鎻愬埌鎴戠殑鏃堕棿绾", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagetime: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + lastid: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + type: + { + defaultValue: + "0x1", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/statuses/ht_timeline": + { + category: + QQWB._const.API_CATEGORY_TIMELINE, + description: + "璇濋鏃堕棿绾", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + httext: + { + defaultValue: + "pBoard", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pageinfo: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/statuses/broadcast_timeline": + { + category: + QQWB._const.API_CATEGORY_TIMELINE, + description: + "鎴戝彂琛ㄦ椂闂寸嚎", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagetime: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + lastid: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/statuses/special_timeline": + { + category: + QQWB._const.API_CATEGORY_TIMELINE, + description: + "鐗瑰埆鏀跺惉鐨勪汉鍙戣〃鏃堕棿绾", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagetime: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/statuses/broadcast_timeline_ids": + { + category: + QQWB._const.API_CATEGORY_TIMELINE, + description: + "鎴戝彂琛ㄦ椂闂寸嚎绱㈠紩", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagetime: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + lastid: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + type: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + contenttype: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + accesslevel: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/statuses/home_timeline_ids": + { + category: + QQWB._const.API_CATEGORY_TIMELINE, + description: + "棣栭〉鏃堕棿绾跨储寮", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagetime: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + lastid: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + type: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + contenttype: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + accesslevel: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/statuses/mentions_timeline_ids": + { + category: + QQWB._const.API_CATEGORY_TIMELINE, + description: + "鎻愬強鎴戠殑鏃堕棿绾跨储寮", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagetime: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + lastid: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + type: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + contenttype: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + accesslevel: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/statuses/user_timeline_ids": + { + category: + QQWB._const.API_CATEGORY_TIMELINE, + description: + "鐢ㄦ埛鍙戣〃鏃堕棿绾跨储寮", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagetime: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + lastid: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + name: + { + defaultValue: + "t", + description: + QQWB._const.API_NO_DESCRIPTION + }, + type: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + contenttype: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + accesslevel: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/statuses/users_timeline": + { + category: + QQWB._const.API_CATEGORY_TIMELINE, + description: + "澶氱敤鎴峰彂琛ㄦ椂闂寸嚎", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagetime: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + lastid: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + names: + { + defaultValue: + "t,api_weibo", + description: + QQWB._const.API_NO_DESCRIPTION + }, + type: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + contenttype: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + accesslevel: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/statuses/users_timeline_ids": + { + category: + QQWB._const.API_CATEGORY_TIMELINE, + description: + "澶氱敤鎴峰彂琛ㄦ椂闂寸嚎绱㈠紩", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagetime: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + lastid: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + names: + { + defaultValue: + "t,api_weibo", + description: + QQWB._const.API_NO_DESCRIPTION + }, + type: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + contenttype: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + accesslevel: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/statuses/area_timeline": + { + category: + QQWB._const.API_CATEGORY_TIMELINE, + description: + "鍚屽煄鍙戣〃鏃堕棿绾", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pos: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + country: + { + defaultValue: + "1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + province: + { + defaultValue: + 11, + description: + QQWB._const.API_NO_DESCRIPTION + }, + city: + { + defaultValue: + "1", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/statuses/ht_timeline_ext": + { + category: + QQWB._const.API_CATEGORY_TIMELINE, + description: + "璇濋鏃堕棿绾(淇缈婚〉闂)", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + reqnum: + { + defaultValue: + 10, + description: + QQWB._const.API_NO_DESCRIPTION + }, + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + flag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + accesslevel: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + type: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + contenttype: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + httext: + { + defaultValue: + "iweibo", + description: + QQWB._const.API_NO_DESCRIPTION + }, + htid: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/show": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "鑾峰彇涓鏉″井鍗氭暟鎹", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + id: + { + defaultValue: + 51545056800467, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/add": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "鍙戣〃涓鏉″井鍗", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + content: + { + defaultValue: + "test", + description: + QQWB._const.API_NO_DESCRIPTION + }, + clientip: + { + defaultValue: + "127.0.0.1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + jing: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + wei: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/del": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "鍒犻櫎涓鏉″井鍗", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + id: + { + defaultValue: + 94035056272295, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/re_add": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "杞挱涓鏉″井鍗", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + content: + { + defaultValue: + "test", + description: + QQWB._const.API_NO_DESCRIPTION + }, + clientip: + { + defaultValue: + "127.0.0.1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + jing: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + wei: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reid: + { + defaultValue: + 77048060858014, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/reply": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "鍥炲涓鏉″井鍗", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + content: + { + defaultValue: + "test", + description: + QQWB._const.API_NO_DESCRIPTION + }, + clientip: + { + defaultValue: + "127.0.0.1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + jing: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + wei: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reid: + { + defaultValue: + 77048060858014, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/add_pic": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "鍙戣〃涓鏉″浘鐗囧井鍗", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + content: + { + defaultValue: + "test", + description: + QQWB._const.API_NO_DESCRIPTION + }, + clientip: + { + defaultValue: + "127.0.0.1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + jing: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + wei: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pic: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/add_emotion": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "鍙戣〃涓鏉″績鎯呭井鍗", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + content: + { + defaultValue: + "test", + description: + QQWB._const.API_NO_DESCRIPTION + }, + clientip: + { + defaultValue: + "127.0.0.1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + jing: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + wei: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + signtype: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/re_count": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "杞挱鏁版垨鐐硅瘎鏁", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + ids: + { + defaultValue: + 0xb04fd23c98500000, + description: + QQWB._const.API_NO_DESCRIPTION + }, + flag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/re_list": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "鑾峰彇鍗曟潯寰崥鐨勮浆鍙戝拰鐐硅瘎鍒楄〃", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + flag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + rootid: + { + defaultValue: + 92035070199751, + description: + QQWB._const.API_NO_DESCRIPTION + }, + pageflag: + { + defaultValue: + "1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagetime: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + "2", + description: + QQWB._const.API_NO_DESCRIPTION + }, + twitterid: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/comment": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "鐐硅瘎涓鏉″井鍗", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + content: + { + defaultValue: + "test", + description: + QQWB._const.API_NO_DESCRIPTION + }, + clientip: + { + defaultValue: + "127.0.0.1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + jing: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + wei: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reid: + { + defaultValue: + 28135069067568, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/add_music": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "鍙戣〃闊抽寰崥", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + content: + { + defaultValue: + "test", + description: + QQWB._const.API_NO_DESCRIPTION + }, + clientip: + { + defaultValue: + "127.0.0.1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + jing: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + wei: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + url: + { + defaultValue: + "http://url.cn", + description: + QQWB._const.API_NO_DESCRIPTION + }, + title: + { + defaultValue: + "姝屽悕", + description: + QQWB._const.API_NO_DESCRIPTION + }, + author: + { + defaultValue: + "婕斿敱鑰", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reid: + { + defaultValue: + 12345678, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/add_video": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "鍙戣〃瑙嗛寰崥", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + content: + { + defaultValue: + "test", + description: + QQWB._const.API_NO_DESCRIPTION + }, + clientip: + { + defaultValue: + "127.0.0.1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + jing: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + wei: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + url: + { + defaultValue: + "http://url.cn", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/add_video": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "鍙戣〃瑙嗛寰崥", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + content: + { + defaultValue: + "test", + description: + QQWB._const.API_NO_DESCRIPTION + }, + clientip: + { + defaultValue: + "127.0.0.1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + jing: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + wei: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + url: + { + defaultValue: + "http://url.cn", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/getvideoinfo": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "鑾峰彇瑙嗛淇℃伅", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + url: + { + defaultValue: + "http://v.youku.com/v_show/id_XMjExODczODM2.html", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/list": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "鏍规嵁寰崥ID鎵归噺寰楀埌寰崥鏁版嵁", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + ids: + { + defaultValue: + "39110101242147,39578069128701", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/add_video_prev": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "棰勫彂琛ㄤ竴鏉¤棰戝井鍗", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + content: + { + defaultValue: + "test", + description: + QQWB._const.API_NO_DESCRIPTION + }, + clientip: + { + defaultValue: + "127.0.0.1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + jing: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + wei: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + vid: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + title: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/t/sub_re_count": + { + category: + QQWB._const.API_CATEGORY_WEIBO, + description: + "鑾峰彇杞挱鐨勫啀娆¤浆鎾暟", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + ids: + { + defaultValue: + "8171051658365,55054116813124", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/user/info": + { + category: + QQWB._const.API_CATEGORY_ACCOUNT, + description: + "鑾峰彇鑷繁鐨勮缁嗚祫鏂", + supportMethod: + QQWB._const.HTTP_METHOD_GET + }, + "/user/update": + { + category: + QQWB._const.API_CATEGORY_ACCOUNT, + description: + "鏇存柊涓汉璧勬枡", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + nick: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + sex: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + year: + { + defaultValue: + 2e3, + description: + QQWB._const.API_NO_DESCRIPTION + }, + month: + { + defaultValue: + "1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + day: + { + defaultValue: + "1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + countrycode: + { + defaultValue: + "1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + provincecode: + { + defaultValue: + 11, + description: + QQWB._const.API_NO_DESCRIPTION + }, + citycode: + { + defaultValue: + "1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + introduction: + { + defaultValue: + "xxxx", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/user/update_edu": + { + category: + QQWB._const.API_CATEGORY_ACCOUNT, + description: + "鏇存柊涓汉鏁欒偛淇℃伅", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + year: + { + defaultValue: + 1995, + description: + QQWB._const.API_NO_DESCRIPTION + }, + level: + { + defaultValue: + "1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + schoolid: + { + defaultValue: + "1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + field: + { + defaultValue: + "1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + departmentid: + { + defaultValue: + "1", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/user/update_head": + { + category: + QQWB._const.API_CATEGORY_ACCOUNT, + description: + "鏇存柊涓汉璧勬枡澶村儚", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + pic: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/user/other_info": + { + category: + QQWB._const.API_CATEGORY_ACCOUNT, + description: + "鑾峰彇鍏朵粬浜鸿祫鏂", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + name: + { + defaultValue: + "t", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/user/infos": + { + category: + QQWB._const.API_CATEGORY_ACCOUNT, + description: + "澶氱敤鎴蜂俊鎭", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + names: + { + defaultValue: + "t,api_weibo", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/user/verify": + { + category: + QQWB._const.API_CATEGORY_ACCOUNT, + description: + "楠岃瘉璐︽埛鏄惁鍚堟硶锛堟槸鍚︽敞鍐屽井鍗氾級", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + name: + { + defaultValue: + "t", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/user/emotion": + { + category: + QQWB._const.API_CATEGORY_ACCOUNT, + description: + "鑾峰彇蹇冩儏寰崥", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + name: + { + defaultValue: + "t", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + id: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + timstamp: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + type: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + contenttype: + { + defaultValue: + "1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + accesslevel: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + emotiontype: + { + defaultValue: + "0xFFFFFFFF", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + 10, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/fanslist": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "鎴戠殑鍚紬鍒楄〃", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + startindex: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/idollist": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "鎴戞敹鍚殑浜哄垪琛", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + startindex: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/blacklist": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "榛戝悕鍗曞垪琛", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + startindex: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/speciallist": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "鐗瑰埆鏀跺惉鍒楄〃", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + startindex: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/add": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "鏀跺惉鏌愪釜鐢ㄦ埛", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + name: + { + defaultValue: + "t", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/del": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "鍙栨秷鏀跺惉鏌愪釜鐢ㄦ埛", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + name: + { + defaultValue: + "t", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/addspecial": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "鐗瑰埆鏀跺惉鏌愪釜鐢ㄦ埛", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + name: + { + defaultValue: + "t", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/delspecial": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "鍙栨秷鐗瑰埆鏀跺惉鏌愪釜鐢ㄦ埛", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + name: + { + defaultValue: + "t", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/addblacklist": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "娣诲姞鏌愪釜鐢ㄦ埛鍒伴粦鍚嶅崟", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + name: + { + defaultValue: + "t", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/delblacklist": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "浠庨粦鍚嶅崟涓垹闄ゆ煇涓敤鎴", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + name: + { + defaultValue: + "t", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/check": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "妫鏌ユ槸鍚︽垜鐨勫惉浼楁垨鏀跺惉鐨勪汉", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + names: + { + defaultValue: + "t", + description: + QQWB._const.API_NO_DESCRIPTION + }, + flag: + { + defaultValue: + "2", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/user_fanslist": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "鍏朵粬璐︽埛鍚紬鍒楄〃", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + reqnum: + { + defaultValue: + 30, + description: + QQWB._const.API_NO_DESCRIPTION + }, + startindex: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + name: + { + defaultValue: + "t", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/user_idollist": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "鍏朵粬璐︽埛鏀跺惉鐨勪汉鍒楄〃", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + reqnum: + { + defaultValue: + 30, + description: + QQWB._const.API_NO_DESCRIPTION + }, + startindex: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + name: + { + defaultValue: + "t", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/user_speciallist": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "鍏朵粬璐︽埛鐗瑰埆鏀跺惉鐨勪汉鍒楄〃", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + reqnum: + { + defaultValue: + 30, + description: + QQWB._const.API_NO_DESCRIPTION + }, + startindex: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + name: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/fanslist_s": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "澶氬惉浼楀垪琛", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + reqnum: + { + defaultValue: + 100, + description: + QQWB._const.API_NO_DESCRIPTION + }, + startindex: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/idollist_s": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "澶氭敹鍚汉鍒楄〃", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + reqnum: + { + defaultValue: + 100, + description: + QQWB._const.API_NO_DESCRIPTION + }, + startindex: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/friends/mutual_list": + { + category: + QQWB._const.API_CATEGORY_RELATION, + description: + "浜掑惉鍏崇郴閾惧垪琛", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + name: + { + defaultValue: + "t", + description: + QQWB._const.API_NO_DESCRIPTION + }, + startindex: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + 30, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/private/add": + { + category: + QQWB._const.API_CATEGORY_SIXIN, + description: + "鍙戠淇", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + content: + { + defaultValue: + "test", + description: + QQWB._const.API_NO_DESCRIPTION + }, + clientip: + { + defaultValue: + "127.0.0.1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + jing: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + wei: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + name: + { + defaultValue: + "mmplayer", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/private/del": + { + category: + QQWB._const.API_CATEGORY_SIXIN, + description: + "鍒犻櫎涓鏉$淇", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + id: + { + defaultValue: + 26154115313103, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/private/recv": + { + category: + QQWB._const.API_CATEGORY_SIXIN, + description: + "鏀朵欢绠", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagetime: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + lastid: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/private/send": + { + category: + QQWB._const.API_CATEGORY_SIXIN, + description: + "鍙戜欢绠", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagetime: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + lastid: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/search/user": + { + category: + QQWB._const.API_CATEGORY_SEARCH, + description: + "鎼滅储鐢ㄦ埛", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + keyword: + { + defaultValue: + "test", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagesize: + { + defaultValue: + 10, + description: + QQWB._const.API_NO_DESCRIPTION + }, + page: + { + defaultValue: + "1", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/search/t": + { + category: + QQWB._const.API_CATEGORY_SEARCH, + description: + "鎼滅储寰崥", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + keyword: + { + defaultValue: + "test", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagesize: + { + defaultValue: + 10, + description: + QQWB._const.API_NO_DESCRIPTION + }, + page: + { + defaultValue: + "1", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/search/userbytag": + { + category: + QQWB._const.API_CATEGORY_SEARCH, + description: + "閫氳繃鏍囩鎼滅储鐢ㄦ埛", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + keyword: + { + defaultValue: + "test", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagesize: + { + defaultValue: + 10, + description: + QQWB._const.API_NO_DESCRIPTION + }, + page: + { + defaultValue: + "1", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/trends/ht": + { + category: + QQWB._const.API_CATEGORY_TRENS, + description: + "璇濋鐑", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + type: + { + defaultValue: + "3", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + pos: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/trends/t": + { + category: + QQWB._const.API_CATEGORY_TRENS, + description: + "鐑棬杞挱", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + pos: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/info/update": + { + category: + QQWB._const.API_CATEGORY_QUERY, + description: + "鏇存柊鏉℃暟", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + op: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + type: + { + defaultValue: + "9", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/fav/addt": + { + category: + QQWB._const.API_CATEGORY_FAVORITE, + description: + "鏀惰棌涓鏉″井鍗", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + id: + { + defaultValue: + 123456789, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/fav/delt": + { + category: + QQWB._const.API_CATEGORY_FAVORITE, + description: + "鍙栨秷鏀惰棌涓鏉″井鍗", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + id: + { + defaultValue: + 123456789, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/fav/list_t": + { + category: + QQWB._const.API_CATEGORY_FAVORITE, + description: + "鏀惰棌鐨勫井鍗氬垪琛", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + nexttime: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + prevtime: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + lastid: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/fav/addht": + { + category: + QQWB._const.API_CATEGORY_FAVORITE, + description: + "璁㈤槄璇濋", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + id: + { + defaultValue: + 123456789, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/fav/delht": + { + category: + QQWB._const.API_CATEGORY_FAVORITE, + description: + "鍙栨秷鏀惰棌璇濋", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + id: + { + defaultValue: + 123456789, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/fav/list_ht": + { + category: + QQWB._const.API_CATEGORY_FAVORITE, + description: + "鑾峰彇宸茶闃呰瘽棰樺垪琛", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + reqnum: + { + defaultValue: + 20, + description: + QQWB._const.API_NO_DESCRIPTION + }, + pageflag: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + pagetime: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + }, + lastid: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/ht/ids": + { + category: + QQWB._const.API_CATEGORY_TOPIC, + description: + "鏍规嵁璇濋鍚嶇О鏌ヨ璇濋ID", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + httexts: + { + defaultValue: + "abc,efg", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/ht/info": + { + category: + QQWB._const.API_CATEGORY_TOPIC, + description: + "鏍规嵁璇濋ID鑾峰彇璇濋鐩稿叧寰崥", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + ids: + { + defaultValue: + 0xb04fd23c98500000, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/tag/add": + { + category: + QQWB._const.API_CATEGORY_TAG, + description: + "娣诲姞鏍囩", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + tag: + { + defaultValue: + "snow", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/tag/del": + { + category: + QQWB._const.API_CATEGORY_TAG, + description: + "鍒犻櫎鏍囩", + supportMethod: + QQWB._const.HTTP_METHOD_POST, + supportParams: + { + tagid: + { + defaultValue: + 0x4735d427dffb9400, + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/other/kownperson": + { + category: + QQWB._const.API_CATEGORY_OTHER, + description: + "鎴戝彲鑳借璇嗙殑浜", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + ip: + { + defaultValue: + "127.0.0.1", + description: + QQWB._const.API_NO_DESCRIPTION + }, + country_code: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + province_code: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + }, + city_code: + { + defaultValue: + "", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/other/kownperson": + { + category: + QQWB._const.API_CATEGORY_OTHER, + description: + "鍙兘璁よ瘑鐨勪汉", + supportMethod: + QQWB._const.HTTP_METHOD_GET + }, + "/other/shorturl": + { + category: + QQWB._const.API_CATEGORY_OTHER, + description: + "鐭璘RL杞暱URL", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + url: + { + defaultValue: + "3M6GSa", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/other/get_emotions": + { + category: + QQWB._const.API_CATEGORY_OTHER, + description: + "鑾峰彇琛ㄦ儏鎺ュ彛", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + type: + { + defaultValue: + "0", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/other/kownperson": + { + category: + QQWB._const.API_CATEGORY_OTHER, + description: + "鎴戝彲鑳借璇嗙殑浜", + supportMethod: + QQWB._const.HTTP_METHOD_GET, + supportParams: + { + ip: + { + defaultValue: + "127.0.0.1", + description: + QQWB._const.API_NO_DESCRIPTION + } + } + }, + "/other/videokey": + { + category: + QQWB._const.API_CATEGORY_OTHER, + description: + "鑾峰彇瑙嗛涓婁紶鐨刱ey", + supportMethod: + QQWB._const.HTTP_METHOD_GET + }, + "/other/gettopreadd": + { + category: + QQWB._const.API_CATEGORY_OTHER, + description: + "涓閿浆鎾儹闂ㄦ帓琛", + supportMethod: + QQWB._const.HTTP_METHOD_GET + }, + "/other/url_converge": + { + category: + QQWB._const.API_CATEGORY_OTHER, + description: + "鐭璾rl鑱氬悎", + supportMethod: + QQWB._const.HTTP_METHOD_GET + } }, + getDescriptor: + function(a) + { + return + this.apis[a] + }, + isProvide: + function(a) + { + return + !!this.getDescriptor(a) + }, + describe: + function(a) + { var + b + = + this.getDescriptor(a); + return + b + ? + b.category + + + ">" + + + b.description + : + "" + }, + compat: + function(a) + { + return + !QQWB.String.startsWith(a, + "/") + && + (a + = + "/" + + + a), + a.toLowerCase() + } }); +var JSON; JSON || (JSON = {}), function() { function f(a) { return a < 10 ? "0" + + a : a } - function - quote(a) { - return - escapable.lastIndex = 0, escapable.test(a) ? '"' + a.replace(escapable, function(a) { - var - b = meta[a]; - return typeof - b == "string" ? b : "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4) - }) + '"' : '"' + a + '"' - } + function quote(a) { return escapable.lastIndex = 0, escapable.test(a) ? '"' + + a.replace(escapable, function(a) { var b = meta[a]; return typeof + b == "string" ? b : "\\u" + ("0000" + + a.charCodeAt(0).toString(16)).slice(-4) }) + '"' : + '"' + a + '"' } - function - str(a, b) { - var c, d, e, f, g = gap, - h, i = b[a]; - i && typeof i == "object" && typeof - i.toJSON == "function" && (i = i.toJSON(a)), typeof - rep == "function" && (i = rep.call(b, a, i)); - switch (typeof i) { - case "string": - return - quote(i); - case "number": - return - isFinite(i) ? String(i) : "null"; - case "boolean": - case "null": - return - String(i); - case "object": - if (!i) return "null"; - gap += indent, h = []; - if (Object.prototype.toString.apply(i) === "[object -Array]") { - f = i.length; - for (c = 0; c < f; c += 1) h[c] = str(c, i) || "null"; - return - e = h.length === 0 ? "[]" : gap ? "[\n" + gap + h.join(",\n" + gap) + "\n" + g + "]" : "[" + h.join(",") + "]", gap = g, e - } - if (rep && typeof - rep == "object") { - f = rep.length; - for (c = 0; c < f; c += 1) typeof - rep[c] == "string" && (d = rep[c], e = str(d, i), e && h.push(quote(d) + (gap ? ": -" : ":") + e)) - } else for (d in i) Object.prototype.hasOwnProperty.call(i, d) && (e = str(d, i), e && h.push(quote(d) + (gap ? ": -" : ":") + e)); - return - e = h.length === 0 ? "{}" : gap ? "{\n" + gap + h.join(",\n" + gap) + "\n" + g + "}" : "{" + h.join(",") + "}", gap = g, e - } - } - "use -strict", typeof - Date.prototype.toJSON != "function" && (Date.prototype.toJSON = function(a) { - return - isFinite(this.valueOf()) ? this.getUTCFullYear() + "-" + f(this.getUTCMonth() + 1) + "-" + f(this.getUTCDate()) + "T" + f(this.getUTCHours()) + ":" + f(this.getUTCMinutes()) + ":" + f(this.getUTCSeconds()) + "Z" : null - }, String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function(a) { - return - this.valueOf() - }); - var - cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, indent, meta = { - "\b": "\\b", - "\t": "\\t", - "\n": "\\n", - "\f": "\\f", - "\r": "\\r", - '"': '\\"', - "\\": "\\\\" - }, - rep; - typeof - JSON.stringify != "function" && (JSON.stringify = function(a, b, c) { - var - d; - gap = "", indent = ""; - if (typeof c == "number") for (d = 0; d < c; d += 1) indent += " "; - else typeof c == "string" && (indent = c); - rep = b; - if (!b || typeof b == "function" || typeof - b == "object" && typeof b.length == "number") return str("", { - "": a - }); - throw new - Error("JSON.stringify") - }), typeof - JSON.parse != "function" && (JSON.parse = function(text, reviver) { - function - walk(a, b) { - var c, d, e = a[b]; - if (e && typeof e == "object") for (c in e) Object.prototype.hasOwnProperty.call(e, c) && (d = walk(e, c), d !== undefined ? e[c] = d : delete - e[c]); - return reviver.call(a, b, e) - } - var - j; - text = String(text), cx.lastIndex = 0, cx.test(text) && (text = text.replace(cx, function(a) { - return "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4) - })); - if (/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) return - j = eval("(" + text + ")"), typeof reviver == "function" ? walk({ - "": j - }, "") : j; - throw new - SyntaxError("JSON.parse") - }) -}(), QQWB.extend("JSON", { - fromString: function(a) { - if (!a || !QQWB.String.isString(a)) return {}; - a = a.replace(/^\s+/, "").replace(/\s+$/, ""); - if (window.JSON && window.JSON.parse) a = window.JSON.parse(a); - else if (/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) a = (new - Function("return " + data))(); - else throw new SyntaxError("Invalid JSON: - " + a); - return a - }, - stringify: function(a) { - return - a == null ? "" : window.JSON.stringify(a) - }, - toString: function(a) { - return - QQWB.JSON.stringify(a) - }, - parse: function(a) { - return - a == null ? {} : window.JSON.parse(a) - } -}, !0), QQWB.provide("man", function(a) { - return - a = this._apiProvider.compat(a), this._apiProvider.getDescriptor(a) ? QQWB.JSON.stringify(this._apiProvider.getDescriptor(a)) : "no - such api" -}), QQWB.extend("Array", { - isArray: function(a) { - return - Object.prototype.toString.call(a) === "[object - Array]" - }, - inArray: function(a, b) { - for (var - c = 0, d = a.length; c < d; c++) if (b === a[c]) return !0; - return !1 - }, - fromString: function(a, b, c) { - return - QQWB.String.isString(a) ? (b = b || "", c ? a.split(b, c) : a.split(b)) : [] - }, - fromArguments: function(a, b) { - return - typeof - a != "object" ? [] : b ? Array.prototype.slice.call(a, b) : Array.prototype.slice.call(a) - }, - toArray: function(a) { - return - typeof a == "string" ? a.split("") : typeof - a == "object" ? Array.prototype.slice.call(a, 0) : this.toArray(a.toString()) - }, - each: function(a, b) { - for (var - c = 0, d = a.length; c < d; c++) if (!1 === b(c, a[c])) break - }, - get: function(a, b) { - var - c = a.length; - if (Math.abs(b) < c) return - b >= 0 ? a[b] : a[c + b] - } -}), QQWB.extend("dom", { - create: function(a, b) { - var - c = document.createElement(a + ""); - if (b && c) for (attr in b) b.hasOwnProperty(attr) && (QQWB.String.startsWith(attr, "data-") ? c.setAttribute(attr, b[attr]) : c[attr] = b[attr]); - return - c - }, - createHidden: function(a, b, c) { - a = a || "div"; - var d = this.create(a, b); - return - c ? (d.width = d.height = 0, d.style.width = d.style.height = 0, d.style.position = "absolute", d.style.top = "-9999px") : d.style.display = "none", d - }, - append: function(a, b) { - return - b = b || document.body, a && a.nodeType && b.appendChild(a), this - }, - html: function(a, b) { - return - a && a.nodeType && b && (a.innerHTML = b), this - }, - appendHidden: function(a, b, c) { - var - d = this.createHidden(null, b, c); - return - this.html(d, a), this.append(d) - }, - remove: function(a) { - return - a && a.nodeType && a.parentNode && a.parentNode.removeChild(a), this - }, - hasClass: function(a, b) { - return (" - " + a.className + " ").indexOf(" " + b + " ") >= 0 - }, - addClass: function(a, b) { - return - b = QQWB.String.trim(b), QQWB.Array.isArray(a) ? (QQWB.Array.each(a, function(a, c) { - QQWB.dom.addClass(c, b) - }), this) : (QQWB.dom.hasClass(a, b) || (a.className = a.className + " - " + b), this) - }, - removeClass: function(a, b) { - return - b = QQWB.String.trim(b), QQWB.Array.isArray(a) ? (QQWB.Array.each(a, function(a, c) { - QQWB.dom.removeClass(c, b) - }), this) : (QQWB.dom.hasClass(a, b) && (a.className = a.className.replace(b, ""), QQWB.dom.removeClass(a, b)), this) - } -}), QQWB.extend("queryString", { - encode: function(a, b, c, d) { - var - e = /%20/g, - f = b || "&", - g = c || encodeURIComponent, - h = [], - i = [], - j, k; - for (j in a) if (a.hasOwnProperty(j)) { - k = a[j]; - if (k !== null && typeof - k != "undefined") { - j = g(j).replace(e, "+"), k = g(k).replace(e, "+"); - if (!d) h.push(j + "=" + k); - else for (var l = 0, m = d.length; l < m; l++) d[l] === j && (h[l] = j + "=" + k) - } - } - for (var - n = 0, o = h.length; n < o; n++) typeof h[n] != "undefined" && i.push(h[n]); - return - h = i, i = null, h.join(f) - }, - decode: function(a, b, c) { - var - d = c || decodeURIComponent, - e = b || "&", - f = a.split(e), - g = {}, - h; - for (var - i = 0, j = f.length; i < j; i++) h = f[i].split("=", 2), h && h[0] && (g[d(h[0])] = d(h[1])); - return - g - } -}), function() { - function q(a, b, c, d, e, f) { - for (var g = 0, h = d.length; g < h; g++) { - var - i = d[g]; - if (i) { - var - j = !1; - i = i[a]; - while (i) { - if (i.sizcache === c) { - j = d[i.sizset]; - break - } - i.nodeType === 1 && !f && (i.sizcache = c, i.sizset = g); - if (i.nodeName.toLowerCase() === b) { - j = i; - break - } - i = i[a] - } - d[g] = j - } - } - } + function str(a, b) { var c, d, e, f, g = gap, h, i = b[a]; i && typeof i == + "object" && typeof i.toJSON == "function" && (i = i.toJSON(a)), + typeof rep == "function" && (i = rep.call(b, a, i)); switch (typeof + i) { case "string": return quote(i); case "number": + return isFinite(i) ? String(i) : "null"; + case "boolean": case "null": return + String(i); + case "object": if (!i) return "null"; gap + += indent, h = []; + if + (Object.prototype.toString.apply(i) + === "[object + Array]") { f = + i.length; + for (c = 0; c < f; c += 1) + h[c] = str(c, i) || + "null"; + return e = h.length === 0 ? + "[]" : gap ? "[\n" + + gap + h.join(",\n" + + gap) + + "\n" + g + "]" : + "[" + h.join(",") + + "]", gap = g, e } if + (rep && typeof rep + == "object") { f = + rep.length; + for (c = 0; + c + < + f; + c + += + 1) + typeof + rep[c] + == + "string" + && + (d + = + rep[c], + e + = + str(d, + i), + e + && + h.push(quote(d) + + + (gap + ? + ": + " + : + ":") + + + e)) + } else for (d in i) + Object.prototype.hasOwnProperty.call(i, + d) + && + (e + = + str(d, + i), + e + && + h.push(quote(d) + + + (gap + ? + ": + " + : + ":") + + + e)); + return e = h.length + === 0 ? + "{}" : gap + ? "{\n" + + gap + + h.join(",\n" + + + gap) + + "\n" + g + + "}" : "{" + + + h.join(",") + + "}", gap + = g, e } } + "use strict", typeof Date.prototype.toJSON != "function" && + (Date.prototype.toJSON = function(a) { return + isFinite(this.valueOf()) ? this.getUTCFullYear() + "-" + + f(this.getUTCMonth() + 1) + "-" + f(this.getUTCDate()) + + "T" + f(this.getUTCHours()) + ":" + f(this.getUTCMinutes()) + + ":" + f(this.getUTCSeconds()) + "Z" : null }, + String.prototype.toJSON = Number.prototype.toJSON = + Boolean.prototype.toJSON = function(a) { return + this.valueOf() }); var cx = + /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = + /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, indent, meta = { "\b": "\\b", "\t": "\\t", "\n": "\\n", "\f": + "\\f", "\r": "\\r", '"': '\\"', "\\": "\\\\" }, rep; typeof + JSON.stringify != "function" && (JSON.stringify = + function(a, b, c) { var d; gap = "", indent + = ""; if (typeof c == "number") for + (d = 0; d < c; d += 1) indent += " "; else typeof c + == "string" && (indent = c); rep = b; if (!b || + typeof b == "function" || typeof b == + "object" && typeof b.length == "number") + return str("", { "": a }); throw new + Error("JSON.stringify") }), typeof JSON.parse != + "function" && (JSON.parse = function(text, reviver) { + function walk(a, b) { var c, d, e = a[b]; if (e && + typeof e == "object") for (c in e) + Object.prototype.hasOwnProperty.call(e, c) + && (d = walk(e, c), d !== undefined ? e[c] = d : + delete e[c]); return reviver.call(a, b, e) + } var j; text = String(text), cx.lastIndex = 0, + cx.test(text) && (text = text.replace(cx, function(a) { + return "\\u" + ("0000" + + a.charCodeAt(0).toString(16)).slice(-4) + })); if + (/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + "]").replace(/(?:^|:|,)(?:\s*\[)+/g, + ""))) + return j = eval("(" + text + ")"), typeof reviver + == "function" ? walk({ "": j }, "") : j; throw new + SyntaxError("JSON.parse") }) }(), + QQWB.extend("JSON", { fromString: function(a) { if (!a || + !QQWB.String.isString(a)) return + {}; a = a.replace(/^\s+/, "").replace(/\s+$/, ""); if + (window.JSON && window.JSON.parse) a = + window.JSON.parse(a); else if + (/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + "]").replace(/(?:^|:|,)(?:\s*\[)+/g, + ""))) + a = (new Function("return " + data))(); else throw + new SyntaxError("Invalid JSON: " + a); return a }, + stringify: function(a) { return a == null ? "" : + window.JSON.stringify(a) }, toString: function(a) { + return QQWB.JSON.stringify(a) }, parse: + function(a) { return a == null ? {} : + window.JSON.parse(a) } }, !0), + QQWB.provide("man", function(a) { return a = + this._apiProvider.compat(a), + this._apiProvider.getDescriptor(a) ? + QQWB.JSON.stringify(this._apiProvider.getDescriptor(a)) + : "no such api" }), QQWB.extend("Array", { isArray: + function(a) { return + Object.prototype.toString.call(a) + === "[object Array]" }, inArray: + function(a, b) { for (var c = 0, d = + a.length; c < d; c++) if (b === + a[c]) return !0; return !1 + }, fromString: function(a, b, c) { return + QQWB.String.isString(a) ? (b = b || + "", c ? a.split(b, c) : + a.split(b)) : [] }, + fromArguments: function(a, + b) { return typeof + a != + "object" ? [] : b ? + Array.prototype.slice.call(a, b) : + Array.prototype.slice.call(a) }, toArray: + function(a) { return typeof a == "string" ? + a.split("") : typeof a == "object" + ? Array.prototype.slice.call(a, 0) : + this.toArray(a.toString()) }, each: + function(a, b) { for (var c = 0, d = + a.length; c < d; c++) if + (!1 === b(c, a[c])) break }, get: + function(a, b) { var c = a.length; + if (Math.abs(b) < c) return + b >= 0 ? a[b] : a[c + + b] } }), + QQWB.extend("dom", + { + create: + function(a, + b) + { + var + c = + document.createElement(a + + + ""); + if (b && c) + for + (attr + in + b) + b.hasOwnProperty(attr) + && + (QQWB.String.startsWith(attr, + "data-") + ? + c.setAttribute(attr, + b[attr]) + : + c[attr] + = + b[attr]); + return c }, + createHidden: + function(a, + b, + c) + { a + = + a + || + "div"; + var + d + = + this.create(a, + b); + return + c + ? + (d.width + = + d.height + = + 0, + d.style.width + = + d.style.height + = + 0, + d.style.position + = + "absolute", + d.style.top + = + "-9999px") + : + d.style.display + = + "none", + d + }, + append: + function(a, + b) + { + return + b + = + b + || + document.body, + a + && + a.nodeType + && + b.appendChild(a), + this + }, + html: + function(a, + b) + { + return + a + && + a.nodeType + && + b + && + (a.innerHTML + = + b), + this + }, + appendHidden: + function(a, + b, + c) + { + var + d + = + this.createHidden(null, + b, + c); + return + this.html(d, + a), + this.append(d) + }, + remove: + function(a) + { + return + a + && + a.nodeType + && + a.parentNode + && + a.parentNode.removeChild(a), + this + }, + hasClass: + function(a, + b) + { + return + (" + " + + + a.className + + + " + ").indexOf(" + " + + + b + + + " + ") + >= + 0 + }, + addClass: + function(a, + b) + { + return + b + = + QQWB.String.trim(b), + QQWB.Array.isArray(a) + ? + (QQWB.Array.each(a, + function(a, + c) + { + QQWB.dom.addClass(c, + b) + }), + this) + : + (QQWB.dom.hasClass(a, + b) + || + (a.className + = + a.className + + + " + " + + + b), + this) + }, + removeClass: + function(a, + b) + { + return + b + = + QQWB.String.trim(b), + QQWB.Array.isArray(a) + ? + (QQWB.Array.each(a, + function(a, + c) + { + QQWB.dom.removeClass(c, + b) + }), + this) + : + (QQWB.dom.hasClass(a, + b) + && + (a.className + = + a.className.replace(b, + ""), + QQWB.dom.removeClass(a, + b)), + this) + } + }), + QQWB.extend("queryString", + { + encode: + function(a, + b, + c, + d) + { + var + e + = + /%20/g, + f + = + b + || + "&", + g + = + c + || + encodeURIComponent, + h + = + [], + i + = + [], + j, + k; + for + (j + in + a) + if + (a.hasOwnProperty(j)) + { + k + = + a[j]; + if + (k + !== + null + && + typeof + k + != + "undefined") + { + j + = + g(j).replace(e, + "+"), + k + = + g(k).replace(e, + "+"); + if + (!d) + h.push(j + + + "=" + + + k); + else + for + (var + l + = + 0, + m + = + d.length; + l + < + m; + l++) + d[l] + === + j + && + (h[l] + = + j + + + "=" + + + k) + } + } + for + (var + n + = + 0, + o + = + h.length; + n + < + o; + n++) + typeof + h[n] + != + "undefined" + && + i.push(h[n]); + return + h + = + i, + i + = + null, + h.join(f) + }, + decode: + function(a, + b, + c) + { + var + d + = + c + || + decodeURIComponent, + e + = + b + || + "&", + f + = + a.split(e), + g + = + {}, + h; + for + (var + i + = + 0, + j + = + f.length; + i + < + j; + i++) + h + = + f[i].split("=", + 2), + h + && + h[0] + && + (g[d(h[0])] + = + d(h[1])); + return + g + } + }), + function() +{ function q(a, b, c, d, e, f) { for (var g = 0, h = d.length; g < h; g++) { + var i = d[g]; if (i) { var j = !1; i = i[a]; while (i) { if (i.sizcache + === c) { j = d[i.sizset]; break } i.nodeType === 1 && + !f && (i.sizcache = c, i.sizset = g); if + (i.nodeName.toLowerCase() === b) { j = i; break } i = i[a] } + d[g] = j } } } - function - r(a, b, c, d, e, f) { - for (var g = 0, i = d.length; g < i; g++) { - var j = d[g]; - if (j) { - var - k = !1; - j = j[a]; - while (j) { - if (j.sizcache === c) { - k = d[j.sizset]; - break - } - if (j.nodeType === 1) { - f || (j.sizcache = c, j.sizset = g); - if (typeof - b != "string") { - if (j === b) { - k = !0; - break - } - } else if (h.filter(b, [j]).length > 0) { - k = j; - break - } - } - j = j[a] - } - d[g] = k - } - } - } - var - a = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ - >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - b = 0, - c = Object.prototype.toString, - d = !1, - e = !0, - f = /\\/g, - g = /\W/; - [0, 0].sort(function() { - return - e = !1, 0 - }); - var h = function(b, d, e, f) { - e = e || [], d = d || document; - var - g = d; - if (d.nodeType !== 1 && d.nodeType !== 9) return []; - if (!b || typeof - b != "string") return e; - var - k, l, n, o, p, q, r, t, u = !0, - v = h.isXML(d), - w = [], - x = b; - do { - a.exec(""), k = a.exec(x); - if (k) { - x = k[3], w.push(k[1]); - if (k[2]) { - o = k[3]; - break - } - } - } while (k); - if (w.length > 1 && j.exec(b)) if (w.length === 2 && i.relative[w[0]]) l = s(w[0] + w[1], d); - else { - l = i.relative[w[0]] ? [d] : h(w.shift(), d); - while (w.length) b = w.shift(), i.relative[b] && (b += w.shift()), l = s(b, l) - } else { - !f && w.length > 1 && d.nodeType === 9 && !v && i.match.ID.test(w[0]) && !i.match.ID.test(w[w.length - 1]) && (p = h.find(w.shift(), d, v), d = p.expr ? h.filter(p.expr, p.set)[0] : p.set[0]); - if (d) { - p = f ? { - expr: w.pop(), - set: m(f) - } : h.find(w.pop(), w.length === 1 && (w[0] === "~" || w[0] === "+") && d.parentNode ? d.parentNode : d, v), l = p.expr ? h.filter(p.expr, p.set) : p.set, w.length > 0 ? n = m(l) : u = !1; - while (w.length) q = w.pop(), r = q, i.relative[q] ? r = w.pop() : q = "", r == null && (r = d), i.relative[q](n, r, v) - } else n = w = [] - } - n || (n = l), n || h.error(q || b); - if (c.call(n) === "[object - Array]") if (!u) e.push.apply(e, n); - else if (d && d.nodeType === 1) for (t = 0; n[t] != null; t++) n[t] && (n[t] === !0 || n[t].nodeType === 1 && h.contains(d, n[t])) && e.push(l[t]); - else for (t = 0; n[t] != null; t++) n[t] && n[t].nodeType === 1 && e.push(l[t]); - else m(n, e); - return - o && (h(o, g, e, f), h.uniqueSort(e)), e - }; - h.uniqueSort = function(a) { - if (o) { - d = e, a.sort(o); - if (d) for (var - b = 1; b < a.length; b++) a[b] === a[b - 1] && a.splice(b--, 1) - } - return - a - }, h.matches = function(a, b) { - return - h(a, null, null, b) - }, h.matchesSelector = function(a, b) { - return - h(b, null, null, [a]).length > 0 - }, h.find = function(a, b, c) { - var - d; - if (!a) return []; - for (var e = 0, g = i.order.length; e < g; e++) { - var - h, j = i.order[e]; - if (h = i.leftMatch[j].exec(a)) { - var - k = h[1]; - h.splice(1, 1); - if (k.substr(k.length - 1) !== "\\") { - h[1] = (h[1] || "").replace(f, ""), d = i.find[j](h, b, c); - if (d != null) { - a = a.replace(i.match[j], ""); - break - } - } - } - } - return - d || (d = typeof - b.getElementsByTagName != "undefined" ? b.getElementsByTagName("*") : []), { - set: d, - expr: a - } - }, h.filter = function(a, b, c, d) { - var - e, f, g = a, - j = [], - k = b, - l = b && b[0] && h.isXML(b[0]); - while (a && b.length) { - for (var - m in i.filter) if ((e = i.leftMatch[m].exec(a)) != null && e[2]) { - var - n, o, p = i.filter[m], - q = e[1]; - f = !1, e.splice(1, 1); - if (q.substr(q.length - 1) === "\\") continue; - k === j && (j = []); - if (i.preFilter[m]) { - e = i.preFilter[m](e, k, c, j, d, l); - if (!e) f = n = !0; - else if (e === !0) continue - } - if (e) for (var - r = 0; - (o = k[r]) != null; r++) if (o) { - n = p(o, e, r, k); - var - s = d ^ !! n; - c && n != null ? s ? f = !0 : k[r] = !1 : s && (j.push(o), f = !0) - } - if (n !== undefined) { - c || (k = j), a = a.replace(i.match[m], ""); - if (!f) return []; - break - } - } - if (a === g) if (f == null) h.error(a); - else break; - g = a - } - return k - }, h.error = function(a) { - throw "Syntax error, - unrecognized expression: " + a - }; - var - i = h.selectors = { - order: ["ID", "NAME", "TAG"], - match: { - ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ - }, - leftMatch: {}, - attrMap: { - "class": "className", - "for": "htmlFor" - }, - attrHandle: { - href: function(a) { - return - a.getAttribute("href") - }, - type: function(a) { - return - a.getAttribute("type") - } - }, - relative: { - "+": function(a, b) { - var c = typeof - b == "string", - d = c && !g.test(b), - e = c && !d; - d && (b = b.toLowerCase()); - for (var - f = 0, i = a.length, j; f < i; f++) if (j = a[f]) { - while ((j = j.previousSibling) && j.nodeType !== 1); - a[f] = e || j && j.nodeName.toLowerCase() === b ? j || !1 : j === b - } - e && h.filter(b, a, !0) - }, - ">": function(a, b) { - var - c, d = typeof - b == "string", - e = 0, - f = a.length; - if (d && !g.test(b)) { - b = b.toLowerCase(); - for (; e < f; e++) { - c = a[e]; - if (c) { - var - i = c.parentNode; - a[e] = i.nodeName.toLowerCase() === b ? i : !1 - } - } - } else { - for (; e < f; e++) c = a[e], c && (a[e] = d ? c.parentNode : c.parentNode === b); - d && h.filter(b, a, !0) - } - }, - "": function(a, c, d) { - var - e, f = b++, - h = r; - typeof - c == "string" && !g.test(c) && (c = c.toLowerCase(), e = c, h = q), h("parentNode", c, f, a, e, d) - }, - "~": function(a, c, d) { - var - e, f = b++, - h = r; - typeof - c == "string" && !g.test(c) && (c = c.toLowerCase(), e = c, h = q), h("previousSibling", c, f, a, e, d) - } - }, - find: { - ID: function(a, b, c) { - if (typeof - b.getElementById != "undefined" && !c) { - var - d = b.getElementById(a[1]); - return - d && d.parentNode ? [d] : [] - } - }, - NAME: function(a, b) { - if (typeof - b.getElementsByName != "undefined") { - var - c = [], - d = b.getElementsByName(a[1]); - for (var - e = 0, f = d.length; e < f; e++) d[e].getAttribute("name") === a[1] && c.push(d[e]); - return - c.length === 0 ? null : c - } - }, - TAG: function(a, b) { - if (typeof - b.getElementsByTagName != "undefined") return - b.getElementsByTagName(a[1]) - } - }, - preFilter: { - CLASS: function(a, b, c, d, e, g) { - a = " - " + a[1].replace(f, "") + " "; - if (g) return a; - for (var - h = 0, i; - (i = b[h]) != null; h++) i && (e ^ (i.className && (" " + i.className + " - ").replace(/[\t\n\r]/g, " - ").indexOf(a) >= 0) ? c || d.push(i) : c && (b[h] = !1)); - return !1 - }, - ID: function(a) { - return - a[1].replace(f, "") - }, - TAG: function(a, b) { - return - a[1].replace(f, "").toLowerCase() - }, - CHILD: function(a) { - if (a[1] === "nth") { - a[2] || h.error(a[0]), a[2] = a[2].replace(/^\+|\s*/g, ""); - var - c = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2] === "even" && "2n" || a[2] === "odd" && "2n+1" || !/\D/.test(a[2]) && "0n+" + a[2] || a[2]); - a[2] = c[1] + (c[2] || 1) - 0, a[3] = c[3] - 0 - } else a[2] && h.error(a[0]); - return - a[0] = b++, a - }, - ATTR: function(a, b, c, d, e, g) { - var - h = a[1] = a[1].replace(f, ""); - return !g && i.attrMap[h] && (a[1] = i.attrMap[h]), a[4] = (a[4] || a[5] || "").replace(f, ""), a[2] === "~=" && (a[4] = " - " + a[4] + " - "), a - }, - PSEUDO: function(b, c, d, e, f) { - if (b[1] === "not") if ((a.exec(b[3]) || "").length > 1 || /^\w/.test(b[3])) b[3] = h(b[3], null, null, c); - else { - var - g = h.filter(b[3], c, d, !0 ^ f); - return d || e.push.apply(e, g), !1 - } else if (i.match.POS.test(b[0]) || i.match.CHILD.test(b[0])) return !0; - return - b - }, - POS: function(a) { - return - a.unshift(!0), a - } - }, - filters: { - enabled: function(a) { - return - a.disabled === !1 && a.type !== "hidden" - }, - disabled: function(a) { - return - a.disabled === !0 - }, - checked: function(a) { - return - a.checked === !0 - }, - selected: function(a) { - return - a.parentNode && a.parentNode.selectedIndex, a.selected === !0 - }, - parent: function(a) { - return !!a.firstChild - }, - empty: function(a) { - return !a.firstChild - }, - has: function(a, b, c) { - return !!h(c[3], a).length - }, - header: function(a) { - return /h\d/i.test(a.nodeName) - }, - text: function(a) { - var - b = a.getAttribute("type"), - c = a.type; - return - a.nodeName.toLowerCase() === "input" && "text" === c && (b === c || b === null) - }, - radio: function(a) { - return - a.nodeName.toLowerCase() === "input" && "radio" === a.type - }, - checkbox: function(a) { - return - a.nodeName.toLowerCase() === "input" && "checkbox" === a.type - }, - file: function(a) { - return - a.nodeName.toLowerCase() === "input" && "file" === a.type - }, - password: function(a) { - return - a.nodeName.toLowerCase() === "input" && "password" === a.type - }, - submit: function(a) { - var - b = a.nodeName.toLowerCase(); - return (b === "input" || b === "button") && "submit" === a.type - }, - image: function(a) { - return - a.nodeName.toLowerCase() === "input" && "image" === a.type - }, - reset: function(a) { - var - b = a.nodeName.toLowerCase(); - return (b === "input" || b === "button") && "reset" === a.type - }, - button: function(a) { - var - b = a.nodeName.toLowerCase(); - return - b === "input" && "button" === a.type || b === "button" - }, - input: function(a) { - return /input|select|textarea|button/i.test(a.nodeName) - }, - focus: function(a) { - return - a === a.ownerDocument.activeElement - } - }, - setFilters: { - first: function(a, b) { - return - b === 0 - }, - last: function(a, b, c, d) { - return - b === d.length - 1 - }, - even: function(a, b) { - return - b % 2 === 0 - }, - odd: function(a, b) { - return - b % 2 === 1 - }, - lt: function(a, b, c) { - return - b < c[3] - 0 - }, - gt: function(a, b, c) { - return - b > c[3] - 0 - }, - nth: function(a, b, c) { - return - c[3] - 0 === b - }, - eq: function(a, b, c) { - return - c[3] - 0 === b - } - }, - filter: { - PSEUDO: function(a, b, c, d) { - var - e = b[1], - f = i.filters[e]; - if (f) return - f(a, c, b, d); - if (e === "contains") return (a.textContent || a.innerText || h.getText([a]) || "").indexOf(b[3]) >= 0; - if (e === "not") { - var - g = b[3]; - for (var - j = 0, k = g.length; j < k; j++) if (g[j] === a) return !1; - return !0 - } - h.error(e) - }, - CHILD: function(a, b) { - var - c = b[1], - d = a; - switch (c) { - case "only": - case "first": - while (d = d.previousSibling) if (d.nodeType === 1) return !1; - if (c === "first") return !0; - d = a; - case "last": - while (d = d.nextSibling) if (d.nodeType === 1) return !1; - return !0; - case "nth": - var - e = b[2], - f = b[3]; - if (e === 1 && f === 0) return !0; - var - g = b[0], - h = a.parentNode; - if (h && (h.sizcache !== g || !a.nodeIndex)) { - var - i = 0; - for (d = h.firstChild; d; d = d.nextSibling) d.nodeType === 1 && (d.nodeIndex = ++i); - h.sizcache = g - } - var - j = a.nodeIndex - f; - return - e === 0 ? j === 0 : j % e === 0 && j / e >= 0 - } - }, - ID: function(a, b) { - return - a.nodeType === 1 && a.getAttribute("id") === b - }, - TAG: function(a, b) { - return - b === "*" && a.nodeType === 1 || a.nodeName.toLowerCase() === b - }, - CLASS: function(a, b) { - return (" - " + (a.className || a.getAttribute("class")) + " - ").indexOf(b) > -1 - }, - ATTR: function(a, b) { - var - c = b[1], - d = i.attrHandle[c] ? i.attrHandle[c](a) : a[c] != null ? a[c] : a.getAttribute(c), - e = d + "", - f = b[2], - g = b[4]; - return - d == null ? f === "!=" : f === "=" ? e === g : f === "*=" ? e.indexOf(g) >= 0 : f === "~=" ? (" - " + e + " - ").indexOf(g) >= 0 : g ? f === "!=" ? e !== g : f === "^=" ? e.indexOf(g) === 0 : f === "$=" ? e.substr(e.length - g.length) === g : f === "|=" ? e === g || e.substr(0, g.length + 1) === g + "-" : !1 : e && d !== !1 - }, - POS: function(a, b, c, d) { - var - e = b[2], - f = i.setFilters[e]; - if (f) return - f(a, c, b, d) - } - } - }, - j = i.match.POS, - k = function(a, b) { - return "\\" + (b - 0 + 1) - }; - for (var - l in i.match) i.match[l] = new - RegExp(i.match[l].source + /(?![^\[]*\])(?![^\(]*\))/.source), i.leftMatch[l] = new - RegExp(/(^(?:.|\r|\n)*?)/.source + i.match[l].source.replace(/\\(\d+)/g, k)); - var - m = function(a, b) { - return - a = Array.prototype.slice.call(a, 0), b ? (b.push.apply(b, a), b) : a - }; - try { - Array.prototype.slice.call(document.documentElement.childNodes, 0)[0].nodeType - } catch (n) { - m = function(a, b) { - var - d = 0, - e = b || []; - if (c.call(a) === "[object - Array]") Array.prototype.push.apply(e, a); - else if (typeof - a.length == "number") for (var f = a.length; d < f; d++) e.push(a[d]); - else for (; a[d]; d++) e.push(a[d]); - return e - } - } - var - o, p; - document.documentElement.compareDocumentPosition ? o = function(a, b) { - return - a === b ? (d = !0, 0) : !a.compareDocumentPosition || !b.compareDocumentPosition ? a.compareDocumentPosition ? -1 : 1 : a.compareDocumentPosition(b) & 4 ? -1 : 1 - } : (o = function(a, b) { - if (a === b) return - d = !0, 0; - if (a.sourceIndex && b.sourceIndex) return - a.sourceIndex - b.sourceIndex; - var - c, e, f = [], - g = [], - h = a.parentNode, - i = b.parentNode, - j = h; - if (h === i) return - p(a, b); - if (!h) return -1; - if (!i) return - 1; - while (j) f.unshift(j), j = j.parentNode; - j = i; - while (j) g.unshift(j), j = j.parentNode; - c = f.length, e = g.length; - for (var - k = 0; k < c && k < e; k++) if (f[k] !== g[k]) return p(f[k], g[k]); - return - k === c ? p(a, g[k], -1) : p(f[k], b, 1) - }, p = function(a, b, c) { - if (a === b) return - c; - var - d = a.nextSibling; - while (d) { - if (d === b) return -1; - d = d.nextSibling - } - return - 1 - }), h.getText = function(a) { - var b = "", - c; - for (var - d = 0; a[d]; d++) c = a[d], c.nodeType === 3 || c.nodeType === 4 ? b += c.nodeValue : c.nodeType !== 8 && (b += h.getText(c.childNodes)); - return - b - }, function() { - var - a = document.createElement("div"), - b = "script" + (new - Date).getTime(), - c = document.documentElement; - a.innerHTML = "", c.insertBefore(a, c.firstChild), document.getElementById(b) && (i.find.ID = function(a, b, c) { - if (typeof - b.getElementById != "undefined" && !c) { - var - d = b.getElementById(a[1]); - return d ? d.id === a[1] || typeof - d.getAttributeNode != "undefined" && d.getAttributeNode("id").nodeValue === a[1] ? [d] : undefined : [] - } - }, i.filter.ID = function(a, b) { - var - c = typeof - a.getAttributeNode != "undefined" && a.getAttributeNode("id"); - return - a.nodeType === 1 && c && c.nodeValue === b - }), c.removeChild(a), c = a = null - }(), function() { - var - a = document.createElement("div"); - a.appendChild(document.createComment("")), a.getElementsByTagName("*").length > 0 && (i.find.TAG = function(a, b) { - var - c = b.getElementsByTagName(a[1]); - if (a[1] === "*") { - var d = []; - for (var - e = 0; c[e]; e++) c[e].nodeType === 1 && d.push(c[e]); - c = d - } - return - c - }), a.innerHTML = "", a.firstChild && typeof - a.firstChild.getAttribute != "undefined" && a.firstChild.getAttribute("href") !== "#" && (i.attrHandle.href = function(a) { - return - a.getAttribute("href", 2) - }), a = null - }(), document.querySelectorAll && - function() { - var - a = h, - b = document.createElement("div"), - c = "__sizzle__"; - b.innerHTML = "

"; - if (b.querySelectorAll && b.querySelectorAll(".TEST").length === 0) return; - h = function(b, d, e, f) { - d = d || document; - if (!f && !h.isXML(d)) { - var - g = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b); - if (g && (d.nodeType === 1 || d.nodeType === 9)) { - if (g[1]) return - m(d.getElementsByTagName(b), e); - if (g[2] && i.find.CLASS && d.getElementsByClassName) return - m(d.getElementsByClassName(g[2]), e) - } - if (d.nodeType === 9) { - if (b === "body" && d.body) return - m([d.body], e); - if (g && g[3]) { - var - j = d.getElementById(g[3]); - if (!j || !j.parentNode) return - m([], e); - if (j.id === g[3]) return m([j], e) - } - try { - return - m(d.querySelectorAll(b), e) - } catch (k) {} - } else if (d.nodeType === 1 && d.nodeName.toLowerCase() !== "object") { - var - l = d, - n = d.getAttribute("id"), - o = n || c, - p = d.parentNode, - q = /^\s*[+~]/.test(b); - n ? o = o.replace(/'/g, "\\$&") : d.setAttribute("id", o), q && p && (d = d.parentNode); - try { - if (!q || p) return - m(d.querySelectorAll("[id='" + o + "'] - " + b), e) - } catch (r) {} finally { - n || l.removeAttribute("id") - } - } - } - return - a(b, d, e, f) - }; - for (var d in a) h[d] = a[d]; - b = null - }(), function() { - var - a = document.documentElement, - b = a.matchesSelector || a.mozMatchesSelector || a.webkitMatchesSelector || a.msMatchesSelector; - if (b) { - var - c = !b.call(document.createElement("div"), "div"), - d = !1; - try { - b.call(document.documentElement, "[test!='']:sizzle") - } catch (e) { - d = !0 - } - h.matchesSelector = function(a, e) { - e = e.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); - if (!h.isXML(a)) try { - if (d || !i.match.PSEUDO.test(e) && !/!=/.test(e)) { - var - f = b.call(a, e); - if (f || !c || a.document && a.document.nodeType !== 11) return - f - } - } catch (g) {} - return - h(e, null, null, [a]).length > 0 - } - } - }(), function() { - var - a = document.createElement("div"); - a.innerHTML = "
"; - if (!a.getElementsByClassName || a.getElementsByClassName("e").length === 0) return; - a.lastChild.className = "e"; - if (a.getElementsByClassName("e").length === 1) return; - i.order.splice(1, 0, "CLASS"), i.find.CLASS = function(a, b, c) { - if (typeof - b.getElementsByClassName != "undefined" && !c) return - b.getElementsByClassName(a[1]) - }, a = null - }(), document.documentElement.contains ? h.contains = function(a, b) { - return - a !== b && (a.contains ? a.contains(b) : !0) - } : document.documentElement.compareDocumentPosition ? h.contains = function(a, b) { - return !!(a.compareDocumentPosition(b) & 16) - } : h.contains = function() { - return !1 - }, h.isXML = function(a) { - var - b = (a ? a.ownerDocument || a : 0).documentElement; - return - b ? b.nodeName !== "HTML" : !1 - }; - var s = function(a, b) { - var - c, d = [], - e = "", - f = b.nodeType ? [b] : b; - while (c = i.match.PSEUDO.exec(a)) e += c[0], a = a.replace(i.match.PSEUDO, ""); - a = i.relative[a] ? a + "*" : a; - for (var - g = 0, j = f.length; g < j; g++) h(a, f[g], d); - return - h.filter(e, d) - }, - t = window.Sizzle; - h.noConflict = function() { - window.Sizzle = t - }, window.Sizzle = h -}(), function() { - function - b(b) { - var c; - if (!QQWB.Array.isArray(this)) return - this; - c = []; - for (var - d = 0, e = this.length; d < e; d++) c = c.concat(a(b, this[d])); - return - c - } + function r(a, b, c, d, e, f) { for (var g = 0, i = d.length; g < i; g++) { + var j = d[g]; if (j) { var k = !1; j = j[a]; while (j) { if + (j.sizcache === c) { k = d[j.sizset]; break } if + (j.nodeType === 1) { f || (j.sizcache = c, j.sizset + = g); if (typeof b != "string") { + if (j === b) { k = !0; + break } } else if + (h.filter(b, + [j]).length + > 0) { k = + j; + break + } } j = + j[a] } d[g] = k } } } var a = + /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ + >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + b = 0, c = + Object.prototype.toString, d = !1, + e = !0, f = /\\/g, g = /\W/; [0, + 0].sort(function() { return e = !1, + 0 }); var h = function(b, + d, e, f) { e = e || + [], d = d + || document; var g = d; if (d.nodeType !== + 1 && d.nodeType !== 9) return []; + if (!b || typeof b != "string") return e; var k, l, + n, o, p, q, r, t, u = !0, v = h.isXML(d), w = [], x + = b; do { a.exec(""), k = a.exec(x); if (k) + { x = k[3], w.push(k[1]); if (k[2]) + { o = k[3]; break } } } + while (k); if (w.length > 1 && j.exec(b)) if + (w.length === 2 && i.relative[w[0]]) l = + s(w[0] + w[1], d); else { l = + i.relative[w[0]] ? [d] : + h(w.shift(), d); while (w.length) b = + w.shift(), i.relative[b] && (b += + w.shift()), l = s(b, l) } + else { !f && w.length > 1 && d.nodeType === 9 && !v + && i.match.ID.test(w[0]) && + !i.match.ID.test(w[w.length - 1]) + && (p = h.find(w.shift(), d, v), d + = p.expr ? + h.filter(p.expr, + p.set)[0] : + p.set[0]); if (d) { + p = f ? { + expr: + w.pop(), + set: + m(f) + } : + h.find(w.pop(), + w.length + === + 1 + && + (w[0] + === + "~" + || + w[0] + === + "+") + && + d.parentNode + ? + d.parentNode + : + d, + v), + l = + p.expr + ? + h.filter(p.expr, + p.set) + : + p.set, + w.length + > + 0 + ? + n + = + m(l) + : + u + = + !1; + while + (w.length) + q + = + w.pop(), + r + = + q, + i.relative[q] + ? + r + = + w.pop() + : + q + = + "", + r + == + null + && + (r + = + d), + i.relative[q](n, + r, + v) + } else n = w = [] } + n || (n = l), n || h.error(q || b); if (c.call(n) + === "[object Array]") if (!u) + e.push.apply(e, n); else if (d && + d.nodeType === 1) for (t = + 0; n[t] != null; + t++) n[t] && (n[t] + === !0 || + n[t].nodeType + === 1 && + h.contains(d, + n[t])) + && + e.push(l[t]); + else for (t = 0; + n[t] + != + null; + t++) + n[t] && + n[t].nodeType + === + 1 + && + e.push(l[t]); + else m(n, e); + return o && (h(o, + g, + e, + f), + h.uniqueSort(e)), + e }; + h.uniqueSort = function(a) { if (o) { d = e, a.sort(o); if + (d) for (var b = 1; b < a.length; b++) a[b] === a[b + - 1] && a.splice(b--, 1) } return a }, + h.matches = function(a, b) { return h(a, null, + null, b) }, h.matchesSelector = + function(a, b) { return h(b, null, null, + [a]).length > 0 }, h.find = + function(a, b, c) { var d; if (!a) return + []; for (var e = 0, g = + i.order.length; e < + g; e++) { var h, j + = + i.order[e]; + if (h = + i.leftMatch[j].exec(a)) + { var k = + h[1]; + h.splice(1, + 1); + if + (k.substr(k.length + - + 1) + !== + "\\") + { + h[1] + = + (h[1] + || + "").replace(f, + ""), + d + = + i.find[j](h, + b, + c); + if + (d + != + null) + { + a + = + a.replace(i.match[j], + ""); + break + } + } + } } return + d || (d = typeof + b.getElementsByTagName + != "undefined" ? + b.getElementsByTagName("*") + : []), { set: d, + expr: a } + }, h.filter = function(a, b, c, d) { var e, + f, g = a, j = [], k = b, l = b && + b[0] && h.isXML(b[0]); + while (a && b.length) { for (var m + in i.filter) if ((e + = + i.leftMatch[m].exec(a)) + != null && + e[2]) { var + n, + o, + p = + i.filter[m], + q = + e[1]; + f = + !1, + e.splice(1, + 1); + if + (q.substr(q.length + - + 1) + === + "\\") + continue; + k + === + j + && + (j + = + []); + if + (i.preFilter[m]) + { + e + = + i.preFilter[m](e, + k, + c, + j, + d, + l); + if + (!e) + f + = + n + = + !0; + else + if + (e + === + !0) + continue + } + if + (e) + for + (var + r + = + 0; + (o + = + k[r]) + != + null; + r++) + if + (o) + { + n + = + p(o, + e, + r, + k); + var + s + = + d + ^ + !! + n; + c + && + n + != + null + ? + s + ? + f + = + !0 + : + k[r] + = + !1 + : + s + && + (j.push(o), + f + = + !0) + } + if + (n + !== + undefined) + { + c + || + (k + = + j), + a + = + a.replace(i.match[m], + ""); + if + (!f) + return + []; + break + } + } if (a === + g) + if + (f + == + null) + h.error(a); + else + break; + g = a } + return k }, h.error = function(a) { + throw "Syntax error, + unrecognized + expression: " + + a }; var i + = h.selectors + = { order: + ["ID", + "NAME", + "TAG"], + match: + { ID: + /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: + /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: + /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: + /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: + /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: + /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: + /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: + /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + leftMatch: + {}, + attrMap: + { + "class": + "className", + "for": + "htmlFor" + }, + attrHandle: + { + href: + function(a) + { + return + a.getAttribute("href") + }, + type: + function(a) + { + return + a.getAttribute("type") + } + }, + relative: + { + "+": + function(a, + b) + { + var + c + = + typeof + b + == + "string", + d + = + c + && + !g.test(b), + e + = + c + && + !d; + d + && + (b + = + b.toLowerCase()); + for + (var + f + = + 0, + i + = + a.length, + j; + f + < + i; + f++) + if + (j + = + a[f]) + { + while + ((j + = + j.previousSibling) + && + j.nodeType + !== + 1); + a[f] + = + e + || + j + && + j.nodeName.toLowerCase() + === + b + ? + j + || + !1 + : + j + === + b + } + e + && + h.filter(b, + a, + !0) + }, + ">": + function(a, + b) + { + var + c, + d + = + typeof + b + == + "string", + e + = + 0, + f + = + a.length; + if + (d + && + !g.test(b)) + { + b + = + b.toLowerCase(); + for + (; + e + < + f; + e++) + { + c + = + a[e]; + if + (c) + { + var + i + = + c.parentNode; + a[e] + = + i.nodeName.toLowerCase() + === + b + ? + i + : + !1 + } + } + } + else + { + for + (; + e + < + f; + e++) + c + = + a[e], + c + && + (a[e] + = + d + ? + c.parentNode + : + c.parentNode + === + b); + d + && + h.filter(b, + a, + !0) + } + }, + "": + function(a, + c, + d) + { + var + e, + f + = + b++, + h + = + r; + typeof + c + == + "string" + && + !g.test(c) + && + (c + = + c.toLowerCase(), + e + = + c, + h + = + q), + h("parentNode", + c, + f, + a, + e, + d) + }, + "~": + function(a, + c, + d) + { + var + e, + f + = + b++, + h + = + r; + typeof + c + == + "string" + && + !g.test(c) + && + (c + = + c.toLowerCase(), + e + = + c, + h + = + q), + h("previousSibling", + c, + f, + a, + e, + d) + } + }, + find: + { ID: + function(a, + b, + c) + { + if + (typeof + b.getElementById + != + "undefined" + && + !c) + { + var + d + = + b.getElementById(a[1]); + return + d + && + d.parentNode + ? + [d] + : + [] + } + }, + NAME: + function(a, + b) + { + if + (typeof + b.getElementsByName + != + "undefined") + { + var + c + = + [], + d + = + b.getElementsByName(a[1]); + for + (var + e + = + 0, + f + = + d.length; + e + < + f; + e++) + d[e].getAttribute("name") + === + a[1] + && + c.push(d[e]); + return + c.length + === + 0 + ? + null + : + c + } + }, + TAG: + function(a, + b) + { + if + (typeof + b.getElementsByTagName + != + "undefined") + return + b.getElementsByTagName(a[1]) + } + }, + preFilter: + { + CLASS: + function(a, + b, + c, + d, + e, + g) + { + a + = + " + " + + + a[1].replace(f, + "") + + + " + "; + if + (g) + return + a; + for + (var + h + = + 0, + i; + (i + = + b[h]) + != + null; + h++) + i + && + (e + ^ + (i.className + && + (" + " + + + i.className + + + " + ").replace(/[\t\n\r]/g, + " + ").indexOf(a) + >= + 0) + ? + c + || + d.push(i) + : + c + && + (b[h] + = + !1)); + return + !1 + }, + ID: + function(a) + { + return + a[1].replace(f, + "") + }, + TAG: + function(a, + b) + { + return + a[1].replace(f, + "").toLowerCase() + }, + CHILD: + function(a) + { + if + (a[1] + === + "nth") + { + a[2] + || + h.error(a[0]), + a[2] + = + a[2].replace(/^\+|\s*/g, + ""); + var + c + = + /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2] + === + "even" + && + "2n" + || + a[2] + === + "odd" + && + "2n+1" + || + !/\D/.test(a[2]) + && + "0n+" + + + a[2] + || + a[2]); + a[2] + = + c[1] + + + (c[2] + || + 1) + - + 0, + a[3] + = + c[3] + - + 0 + } + else + a[2] + && + h.error(a[0]); + return + a[0] + = + b++, + a + }, + ATTR: + function(a, + b, + c, + d, + e, + g) + { + var + h + = + a[1] + = + a[1].replace(f, + ""); + return + !g + && + i.attrMap[h] + && + (a[1] + = + i.attrMap[h]), + a[4] + = + (a[4] + || + a[5] + || + "").replace(f, + ""), + a[2] + === + "~=" + && + (a[4] + = + " + " + + + a[4] + + + " + "), + a + }, + PSEUDO: + function(b, + c, + d, + e, + f) + { + if + (b[1] + === + "not") + if + ((a.exec(b[3]) + || + "").length + > + 1 + || + /^\w/.test(b[3])) + b[3] + = + h(b[3], + null, + null, + c); + else + { + var + g + = + h.filter(b[3], + c, + d, + !0 + ^ + f); + return + d + || + e.push.apply(e, + g), + !1 + } + else + if + (i.match.POS.test(b[0]) + || + i.match.CHILD.test(b[0])) + return + !0; + return + b + }, + POS: + function(a) + { + return + a.unshift(!0), + a + } + }, + filters: + { + enabled: + function(a) + { + return + a.disabled + === + !1 + && + a.type + !== + "hidden" + }, + disabled: + function(a) + { + return + a.disabled + === + !0 + }, + checked: + function(a) + { + return + a.checked + === + !0 + }, + selected: + function(a) + { + return + a.parentNode + && + a.parentNode.selectedIndex, + a.selected + === + !0 + }, + parent: + function(a) + { + return + !!a.firstChild + }, + empty: + function(a) + { + return + !a.firstChild + }, + has: + function(a, + b, + c) + { + return + !!h(c[3], + a).length + }, + header: + function(a) + { + return + /h\d/i.test(a.nodeName) + }, + text: + function(a) + { + var + b + = + a.getAttribute("type"), + c + = + a.type; + return + a.nodeName.toLowerCase() + === + "input" + && + "text" + === + c + && + (b + === + c + || + b + === + null) + }, + radio: + function(a) + { + return + a.nodeName.toLowerCase() + === + "input" + && + "radio" + === + a.type + }, + checkbox: + function(a) + { + return + a.nodeName.toLowerCase() + === + "input" + && + "checkbox" + === + a.type + }, + file: + function(a) + { + return + a.nodeName.toLowerCase() + === + "input" + && + "file" + === + a.type + }, + password: + function(a) + { + return + a.nodeName.toLowerCase() + === + "input" + && + "password" + === + a.type + }, + submit: + function(a) + { + var + b + = + a.nodeName.toLowerCase(); + return + (b + === + "input" + || + b + === + "button") + && + "submit" + === + a.type + }, + image: + function(a) + { + return + a.nodeName.toLowerCase() + === + "input" + && + "image" + === + a.type + }, + reset: + function(a) + { + var + b + = + a.nodeName.toLowerCase(); + return + (b + === + "input" + || + b + === + "button") + && + "reset" + === + a.type + }, + button: + function(a) + { + var + b + = + a.nodeName.toLowerCase(); + return + b + === + "input" + && + "button" + === + a.type + || + b + === + "button" + }, + input: + function(a) + { + return + /input|select|textarea|button/i.test(a.nodeName) + }, + focus: + function(a) + { + return + a + === + a.ownerDocument.activeElement + } + }, + setFilters: + { + first: + function(a, + b) + { + return + b + === + 0 + }, + last: + function(a, + b, + c, + d) + { + return + b + === + d.length + - + 1 + }, + even: + function(a, + b) + { + return + b + % + 2 + === + 0 + }, + odd: + function(a, + b) + { + return + b + % + 2 + === + 1 + }, + lt: + function(a, + b, + c) + { + return + b + < + c[3] + - + 0 + }, + gt: + function(a, + b, + c) + { + return + b + > + c[3] + - + 0 + }, + nth: + function(a, + b, + c) + { + return + c[3] + - + 0 + === + b + }, + eq: + function(a, + b, + c) + { + return + c[3] + - + 0 + === + b + } + }, + filter: + { + PSEUDO: + function(a, + b, + c, + d) + { + var + e + = + b[1], + f + = + i.filters[e]; + if + (f) + return + f(a, + c, + b, + d); + if + (e + === + "contains") + return + (a.textContent + || + a.innerText + || + h.getText([a]) + || + "").indexOf(b[3]) + >= + 0; + if + (e + === + "not") + { + var + g + = + b[3]; + for + (var + j + = + 0, + k + = + g.length; + j + < + k; + j++) + if + (g[j] + === + a) + return + !1; + return + !0 + } + h.error(e) + }, + CHILD: + function(a, + b) + { + var + c + = + b[1], + d + = + a; + switch + (c) + { + case + "only": + case + "first": + while + (d + = + d.previousSibling) + if + (d.nodeType + === + 1) + return + !1; + if + (c + === + "first") + return + !0; + d + = + a; + case + "last": + while + (d + = + d.nextSibling) + if + (d.nodeType + === + 1) + return + !1; + return + !0; + case + "nth": + var + e + = + b[2], + f + = + b[3]; + if + (e + === + 1 + && + f + === + 0) + return + !0; + var + g + = + b[0], + h + = + a.parentNode; + if + (h + && + (h.sizcache + !== + g + || + !a.nodeIndex)) + { + var + i + = + 0; + for + (d + = + h.firstChild; + d; + d + = + d.nextSibling) + d.nodeType + === + 1 + && + (d.nodeIndex + = + ++i); + h.sizcache + = + g + } + var + j + = + a.nodeIndex + - + f; + return + e + === + 0 + ? + j + === + 0 + : + j + % + e + === + 0 + && + j + / + e + >= + 0 + } + }, + ID: + function(a, + b) + { + return + a.nodeType + === + 1 + && + a.getAttribute("id") + === + b + }, + TAG: + function(a, + b) + { + return + b + === + "*" + && + a.nodeType + === + 1 + || + a.nodeName.toLowerCase() + === + b + }, + CLASS: + function(a, + b) + { + return + (" + " + + + (a.className + || + a.getAttribute("class")) + + + " + ").indexOf(b) + > + -1 + }, + ATTR: + function(a, + b) + { + var + c + = + b[1], + d + = + i.attrHandle[c] + ? + i.attrHandle[c](a) + : + a[c] + != + null + ? + a[c] + : + a.getAttribute(c), + e + = + d + + + "", + f + = + b[2], + g + = + b[4]; + return + d + == + null + ? + f + === + "!=" + : + f + === + "=" + ? + e + === + g + : + f + === + "*=" + ? + e.indexOf(g) + >= + 0 + : + f + === + "~=" + ? + (" + " + + + e + + + " + ").indexOf(g) + >= + 0 + : + g + ? + f + === + "!=" + ? + e + !== + g + : + f + === + "^=" + ? + e.indexOf(g) + === + 0 + : + f + === + "$=" + ? + e.substr(e.length + - + g.length) + === + g + : + f + === + "|=" + ? + e + === + g + || + e.substr(0, + g.length + + + 1) + === + g + + + "-" + : + !1 + : + e + && + d + !== + !1 + }, + POS: + function(a, + b, + c, + d) + { + var + e + = + b[2], + f + = + i.setFilters[e]; + if + (f) + return + f(a, + c, + b, + d) + } + } }, + j = i.match.POS, k = + function(a, + b) + { return "\\" + + (b + - + 0 + + + 1) + }; for (var l + in + i.match) + i.match[l] = + new + RegExp(i.match[l].source + + + /(?![^\[]*\])(?![^\(]*\))/.source), + i.leftMatch[l] + = + new + RegExp(/(^(?:.|\r|\n)*?)/.source + + + i.match[l].source.replace(/\\(\d+)/g, + k)); + var m + = + function(a, + b) + { + return + a + = + Array.prototype.slice.call(a, + 0), + b + ? + (b.push.apply(b, + a), + b) + : + a + }; + try { + Array.prototype.slice.call(document.documentElement.childNodes, + 0)[0].nodeType + } + catch + (n) + { + m + = + function(a, + b) + { + var + d + = + 0, + e + = + b + || + []; + if + (c.call(a) + === + "[object + Array]") + Array.prototype.push.apply(e, + a); + else + if + (typeof + a.length + == + "number") + for + (var + f + = + a.length; + d + < + f; + d++) + e.push(a[d]); + else + for + (; + a[d]; + d++) + e.push(a[d]); + return + e + } + } + var + o, + p; + document.documentElement.compareDocumentPosition + ? + o + = + function(a, + b) + { + return + a + === + b + ? + (d + = + !0, + 0) + : + !a.compareDocumentPosition + || + !b.compareDocumentPosition + ? + a.compareDocumentPosition + ? + -1 + : + 1 + : + a.compareDocumentPosition(b) + & + 4 + ? + -1 + : + 1 + } + : (o + = + function(a, + b) + { + if + (a + === + b) + return + d + = + !0, + 0; if + (a.sourceIndex + && + b.sourceIndex) + return + a.sourceIndex + - + b.sourceIndex; + var + c, + e, + f + = + [], + g + = + [], + h + = + a.parentNode, + i + = + b.parentNode, + j + = + h; + if (h + === + i) + return + p(a, + b); + if + (!h) + return + -1; + if + (!i) + return + 1; + while + (j) + f.unshift(j), + j + = + j.parentNode; + j = + i; + while + (j) + g.unshift(j), + j + = + j.parentNode; + c = + f.length, + e + = + g.length; + for + (var + k + = + 0; + k + < + c + && + k + < + e; + k++) + if + (f[k] + !== + g[k]) + return + p(f[k], + g[k]); + return + k + === + c + ? + p(a, + g[k], + -1) + : + p(f[k], + b, + 1) + }, + p + = + function(a, + b, + c) + { + if + (a + === + b) + return + c; + var + d + = + a.nextSibling; + while + (d) + { + if + (d + === + b) + return + -1; + d + = + d.nextSibling + } + return + 1 + }), + h.getText + = + function(a) + { + var + b + = + "", + c; + for + (var + d + = + 0; + a[d]; + d++) + c + = + a[d], + c.nodeType + === + 3 + || + c.nodeType + === + 4 + ? + b + += + c.nodeValue + : + c.nodeType + !== + 8 + && + (b + += + h.getText(c.childNodes)); + return + b + }, + function() + { + var + a + = + document.createElement("div"), + b + = + "script" + + + (new + Date).getTime(), + c + = + document.documentElement; + a.innerHTML + = + "", + c.insertBefore(a, + c.firstChild), + document.getElementById(b) + && + (i.find.ID + = + function(a, + b, + c) + { + if + (typeof + b.getElementById + != + "undefined" + && + !c) + { + var + d + = + b.getElementById(a[1]); + return + d + ? + d.id + === + a[1] + || + typeof + d.getAttributeNode + != + "undefined" + && + d.getAttributeNode("id").nodeValue + === + a[1] + ? + [d] + : + undefined + : + [] + } + }, + i.filter.ID + = + function(a, + b) + { + var + c + = + typeof + a.getAttributeNode + != + "undefined" + && + a.getAttributeNode("id"); + return + a.nodeType + === + 1 + && + c + && + c.nodeValue + === + b + }), + c.removeChild(a), + c + = + a + = + null + }(), + function() + { + var + a + = + document.createElement("div"); + a.appendChild(document.createComment("")), + a.getElementsByTagName("*").length + > + 0 + && + (i.find.TAG + = + function(a, + b) + { + var + c + = + b.getElementsByTagName(a[1]); + if + (a[1] + === + "*") + { + var + d + = + []; + for + (var + e + = + 0; + c[e]; + e++) + c[e].nodeType + === + 1 + && + d.push(c[e]); + c + = + d + } + return + c + }), + a.innerHTML + = + "", + a.firstChild + && + typeof + a.firstChild.getAttribute + != + "undefined" + && + a.firstChild.getAttribute("href") + !== + "#" + && + (i.attrHandle.href + = + function(a) + { + return + a.getAttribute("href", + 2) + }), + a + = + null + }(), + document.querySelectorAll + && + function() + { + var + a + = + h, + b + = + document.createElement("div"), + c + = + "__sizzle__"; + b.innerHTML + = + "

"; + if + (b.querySelectorAll + && + b.querySelectorAll(".TEST").length + === + 0) + return; + h + = + function(b, + d, + e, + f) + { + d + = + d + || + document; + if + (!f + && + !h.isXML(d)) + { + var + g + = + /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b); + if + (g + && + (d.nodeType + === + 1 + || + d.nodeType + === + 9)) + { + if + (g[1]) + return + m(d.getElementsByTagName(b), + e); + if + (g[2] + && + i.find.CLASS + && + d.getElementsByClassName) + return + m(d.getElementsByClassName(g[2]), + e) + } + if + (d.nodeType + === + 9) + { + if + (b + === + "body" + && + d.body) + return + m([d.body], + e); + if + (g + && + g[3]) + { + var + j + = + d.getElementById(g[3]); + if + (!j + || + !j.parentNode) + return + m([], + e); + if + (j.id + === + g[3]) + return + m([j], + e) + } + try + { + return + m(d.querySelectorAll(b), + e) + } + catch + (k) + {} + } + else + if + (d.nodeType + === + 1 + && + d.nodeName.toLowerCase() + !== + "object") + { + var + l + = + d, + n + = + d.getAttribute("id"), + o + = + n + || + c, + p + = + d.parentNode, + q + = + /^\s*[+~]/.test(b); + n + ? + o + = + o.replace(/'/g, + "\\$&") + : + d.setAttribute("id", + o), + q + && + p + && + (d + = + d.parentNode); + try + { + if + (!q + || + p) + return + m(d.querySelectorAll("[id='" + + + o + + + "'] + " + + + b), + e) + } + catch + (r) + {} + finally + { + n + || + l.removeAttribute("id") + } + } + } + return + a(b, + d, + e, + f) + }; + for + (var + d + in + a) + h[d] + = + a[d]; + b + = + null + }(), + function() + { + var + a + = + document.documentElement, + b + = + a.matchesSelector + || + a.mozMatchesSelector + || + a.webkitMatchesSelector + || + a.msMatchesSelector; + if + (b) + { + var + c + = + !b.call(document.createElement("div"), + "div"), + d + = + !1; + try + { + b.call(document.documentElement, + "[test!='']:sizzle") + } + catch + (e) + { + d + = + !0 + } + h.matchesSelector + = + function(a, + e) + { + e + = + e.replace(/\=\s*([^'"\]]*)\s*\]/g, + "='$1']"); + if + (!h.isXML(a)) + try + { + if + (d + || + !i.match.PSEUDO.test(e) + && + !/!=/.test(e)) + { + var + f + = + b.call(a, + e); + if + (f + || + !c + || + a.document + && + a.document.nodeType + !== + 11) + return + f + } + } + catch + (g) + {} + return + h(e, + null, + null, + [a]).length + > + 0 + } + } + }(), + function() + { + var + a + = + document.createElement("div"); + a.innerHTML + = + "
"; + if + (!a.getElementsByClassName + || + a.getElementsByClassName("e").length + === + 0) + return; + a.lastChild.className + = + "e"; + if + (a.getElementsByClassName("e").length + === + 1) + return; + i.order.splice(1, + 0, + "CLASS"), + i.find.CLASS + = + function(a, + b, + c) + { + if + (typeof + b.getElementsByClassName + != + "undefined" + && + !c) + return + b.getElementsByClassName(a[1]) + }, + a + = + null + }(), + document.documentElement.contains + ? + h.contains + = + function(a, + b) + { + return + a + !== + b + && + (a.contains + ? + a.contains(b) + : + !0) + } + : + document.documentElement.compareDocumentPosition + ? + h.contains + = + function(a, + b) + { + return + !!(a.compareDocumentPosition(b) + & + 16) + } + : + h.contains + = + function() + { + return + !1 + }, + h.isXML + = + function(a) + { + var + b + = + (a + ? + a.ownerDocument + || + a + : + 0).documentElement; + return + b + ? + b.nodeName + !== + "HTML" + : + !1 + }; + var s + = + function(a, + b) + { + var + c, + d + = + [], + e + = + "", + f + = + b.nodeType + ? + [b] + : + b; + while + (c + = + i.match.PSEUDO.exec(a)) + e + += + c[0], + a + = + a.replace(i.match.PSEUDO, + ""); + a + = + i.relative[a] + ? + a + + + "*" + : + a; + for + (var + g + = + 0, + j + = + f.length; + g + < + j; + g++) + h(a, + f[g], + d); + return + h.filter(e, + d) + }, + t + = + window.Sizzle; + h.noConflict + = + function() + { + window.Sizzle + = + t + }, + window.Sizzle + = + h +}(), function() { function b(b) { var c; if (!QQWB.Array.isArray(this)) return + this; c = []; for (var d = 0, e = this.length; d < e; d++) c = + c.concat(a(b, this[d])); return c } - function c(b) { - return typeof - b != "string" ? this : b.length <= 0 ? this : a.matches(":contains(" + b + ")", this) - } + function c(b) { return typeof b != "string" ? this : b.length <= 0 ? this : + a.matches(":contains(" + b + ")", this) } - function - d(b) { - return a.matches(b, this) - } + function d(b) { return a.matches(b, this) } - function e(b) { - return - a.matches(":not(" + b + ")", this) - } + function e(b) { return a.matches(":not(" + b + ")", this) } - function f(a) { - return - QQWB.Array.get(this, a) - } + function f(a) { return QQWB.Array.get(this, a) } - function - g(a) { - if (!QQWB.Array.isArray(this) || !a) return this; - for (var - b = 0, c = this.length; b < c; b++) if (a(this[b]) === !1) break; - return - this - } + function g(a) { if (!QQWB.Array.isArray(this) || !a) return this; for (var + b = 0, c = this.length; b < c; b++) if (a(this[b]) === !1) + break; return this } - function h(a) { - return !a.find && (a.find = function(c) { - return - h(b.call(a, c)) - }), !a.contains && (a.contains = function(b) { - return - h(c.call(a, b)) - }), !a.keep && (a.keep = function(b) { - return - h(d.call(a, b)) - }), !a.tear && (a.tear = function(b) { - return - h(e.call(a, b)) - }), !a.get && (a.get = function(b) { - return - f.call(a, b) - }), !a.each && (a.each = function(b) { - return - g.call(a, b) - }), a - } - var - a = window.Sizzle; - a.noConflict(), QQWB.provide("dom.find", function(b, c) { - return - h(a(b, c)) - }), QQWB._alias("find", QQWB.dom.find) -}(), function() { - var - a = function() { - function b(a) { - return - Object.prototype.toString.call(a).slice(8, -1).toLowerCase() - } + function h(a) { return !a.find && (a.find = function(c) { return + h(b.call(a, c)) }), !a.contains && (a.contains = function(b) { + return h(c.call(a, b)) }), !a.keep && (a.keep = function(b) + { return h(d.call(a, b)) }), !a.tear && (a.tear = + function(b) { return h(e.call(a, b)) }), !a.get && (a.get = + function(b) { return f.call(a, b) }), !a.each && (a.each = + function(b) { return g.call(a, b) }), a } var a = + window.Sizzle; a.noConflict(), QQWB.provide("dom.find", + function(b, c) { return h(a(b, c)) }), + QQWB._alias("find", QQWB.dom.find) }(), function() { var a = + function() { function b(a) { return + Object.prototype.toString.call(a).slice(8, + -1).toLowerCase() } - function - c(a, b) { - for (var c = []; b > 0; c[--b] = a); - return c.join("") - } - var - d = function() { - return - d.cache.hasOwnProperty(arguments[0]) || (d.cache[arguments[0]] = d.parse(arguments[0])), d.format.call(null, d.cache[arguments[0]], arguments) - }; - return - d.format = function(d, e) { - var - f = 1, - g = d.length, - h = "", - i, j = [], - k, l, m, n, o, p; - for (k = 0; k < g; k++) { - h = b(d[k]); - if (h === "string") j.push(d[k]); - else if (h === "array") { - m = d[k]; - if (m[2]) { - i = e[f]; - for (l = 0; l < m[2].length; l++) { - if (!i.hasOwnProperty(m[2][l])) throw - a('[sprintf] property "%s" does not - exist', m[2][l]); - i = i[m[2][l]] - } - } else m[1] ? i = e[m[1]] : i = e[f++]; - if (/[^s]/.test(m[8]) && b(i) != "number") throw - a("[sprintf] expecting number but found - %s", b(i)); - switch (m[8]) { - case "b": - i = i.toString(2); - break; - case "c": - i = String.fromCharCode(i); - break; - case "d": - i = parseInt(i, 10); - break; - case "e": - i = m[7] ? i.toExponential(m[7]) : i.toExponential(); - break; - case "f": - i = m[7] ? parseFloat(i).toFixed(m[7]) : parseFloat(i); - break; - case "o": - i = i.toString(8); - break; - case "s": - i = (i = i ? String(i) : "") && m[7] ? i.substring(0, m[7]) : i; - break; - case "u": - i = Math.abs(i); - break; - case "x": - i = i.toString(16); - break; - case "X": - i = i.toString(16).toUpperCase() - } - i = /[def]/.test(m[8]) && m[3] && i >= 0 ? "+" + i : i, o = m[4] ? m[4] == "0" ? "0" : m[4].charAt(1) : " - ", p = m[6] - String(i).length, n = m[6] ? c(o, p) : "", j.push(m[5] ? i + n : n + i) - } - } - return - j.join("") - }, d.cache = {}, d.parse = function(a) { - var - b = a, - c = [], - d = [], - e = 0; - while (b) { - if ((c = /^[^\x25]+/.exec(b)) !== null) d.push(c[0]); - else if ((c = /^\x25{2}/.exec(b)) !== null) d.push("%"); - else { - if ((c = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(b)) === null) throw "[sprintf] - huh?"; - if (c[2]) { - e |= 1; - var - f = [], - g = c[2], - h = []; - if ((h = /^([a-z_][a-z_\d]*)/i.exec(g)) === null) throw "[sprintf] - huh?"; - f.push(h[1]); - while ((g = g.substring(h[0].length)) !== "") if ((h = /^\.([a-z_][a-z_\d]*)/i.exec(g)) !== null) f.push(h[1]); - else if ((h = /^\[(\d+)\]/.exec(g)) !== null) f.push(h[1]); - else throw "[sprintf] huh?"; - c[2] = f - } else e |= 2; - if (e === 3) throw "[sprintf] mixing positional and - named placeholders is not (yet) - supported"; - d.push(c) - } - b = b.substring(c[0].length) - } - return - d - }, d - }(), - b = function(b, c) { - return - c.unshift(b), a.apply(null, c) - }; - QQWB.extend("String.format", { - sprintf: a, - vsprintf: b - }), QQWB._alias("format", QQWB.String.format) -}(), QQWB.extend("time", { - now: function() { - return +this.dateNow() - }, - secondsNow: function() { - return - Math.round(this.now() / 1e3) - }, - dateNow: function() { - return - new Date - }, - shortTime: function(a, b) { - return a instanceof - Date || (b = a, a = this.dateNow()), b = b || "%(year)s/%(month)s/%(day)s - %(hour)02d:%(minute)02d:%(second)02d", QQWB.format.sprintf(b, { - year: a.getFullYear(), - month: a.getMonth(), - day: a.getDate(), - hour: a.getHours(), - minute: a.getMinutes(), - second: a.getSeconds() - }) - } -}), QQWB.extend("log", { - CRITICAL: 50, - ERROR: 40, - WARNING: 30, - INFO: 20, - DEBUG: 10, - NOTSET: 0, - _level: 0, - _format: "%(source)s%(popup)s%(frame)s%(name)s: - [%(levelname)s] %(time)s - %(message)s", - setLevel: function(a) { - return - this._level = a, this - }, - setFormat: function(a) { - return - this._format = a, this - }, - debug: function(a) { - return - this.DEBUG >= this._level && this._out("DEBUG", a), this - }, - info: function(a) { - return - this.INFO >= this._level && this._out("INFO", a), this - }, - warning: function(a) { - return - this.WARNING >= this._level && this._out("WARNING", a), this - }, - error: function(a) { - return - this.ERROR >= this._level && this._out("ERROR", a), this - }, - critical: function(a) { - return - this.CRITICAL >= this._level && this._out("CRITICAL", a), this - }, - _out: function(a, b) { - var - c = this._format; - c = QQWB.format.sprintf(c, { - name: QQWB.name, - levelname: a, - time: QQWB.time.shortTime(), - message: b, - frame: window != window.parent ? "*" : "", - source: window.name ? window.name : "", - popup: window.opener || window.name === QQWB._const.AUTH_WINDOW_NAME ? "#" : "" - }), this._capture && typeof - this._captureLevel == "number" && this[a] > this._captureLevel && this._capturedMessages && (this._capturedMessages.length >= this._captureMaxSize && this._capturedMessages.shift(), this._capturedMessages.push(c)), QQWB.debug && window.console && window.console.log(c) - }, - startCapture: function(a, b) { - return - this._captureLevel = a || this.NOTSET, this._captureMaxSize = b || 50, this._capturedMessages = [], this._capture = !0, this - }, - stopCapture: function() { - return - this._capture && (this._capture = !1), this - }, - lastCaptured: function(a) { - return - a = a || "\n", this._capturedMessages ? this._capturedMessages.join(a) : "" - } -}), QQWB.extend("cookie", { - set: function(a, b, c, d, e, f) { - f = f || escape; - if (typeof - c == "undefined" || c === null) c = -1; - var - g = e ? "domain=" + e : "", - h = d ? "path=" + d : "", - i = ""; - return - c === 0 ? i = "expires=" + (new - Date(1970, 1, 1)).toUTCString() : c > 0 && (i = "expires=" + (new - Date(+(new - Date) + c * 1e3)).toUTCString()), document.cookie = [a + "=" + f(b), i, h, g].join("; - "), this - }, - get: function(a, b, c) { - b = b || unescape; - var - d = a + "="; - cookies = (document.cookie || "").split(/\s*;\s*/); - for (var - e = 0, f = cookies.length; e < f; e++) { - var - g = cookies[e]; - if (g.indexOf(d) === 0) return - b(g.substr(d.length)) - } - return - c - }, - del: function(a, b, c) { - return - this.set(a, "", 0, b, c), document.cookie.indexOf(a + "=") >= 0 && QQWB.log.warning("Cookie - may not be deleted as you - expected"), this - } -}), QQWB.extend("XML", { - isXML: function(a) {}, - toString: function(a) { - return - this.stringify(a) - }, - stringify: function(a) { - var b; - return - window.ActiveXObject ? b = a.xml : b = (new - XMLSerializer).serializeToString(a), b - }, - fromString: function(a) { - var - b; - if (window.ActiveXObject) b = new - ActiveXObject("Microsoft.XMLDOM"), b.async = "false", b.loadXML(a); - else { - var - c = new - DOMParser; - b = c.parseFromString(a, "text/xml") - } - return - b - } -}, !0), QQWB.extend("Function", { - isFunction: function(a) { - return - typeof - a == "function" - } -}), QQWB.extend("deferred", { - _promiseMethods: "done - fail isResolved isRejected promise then always success - error complete whatever".split(" - "), - _deferred: function() { - var - a = [], - b, c, d, e = { - done: function() { - if (!d) { - var - c = arguments, - f, g; - b && (g = b, b = 0); - for (var - h = 0, i = c.length; h < i; h++) f = c[h], QQWB.Array.isArray(f) ? e.done.apply(e, f) : QQWB.Function.isFunction(f) && a.push(f); - g && e.resolveWith(g[0], g[1]) - } - return - this - }, - resolveWith: function(e, f) { - if (!d && !b && !c) { - f = f || [], c = 1; - try { - while (a[0]) a.shift().apply(e, f) - } finally { - b = [e, f], c = 0 - } - } - return - this - }, - resolve: function() { - return - e.resolveWith(this, arguments), this - }, - isResolved: function() { - return !!c || !! b - }, - cancel: function() { - return - d = 1, a = [], this - } - }; - return e - }, - deferred: function(a) { - var - b, c = QQWB.deferred._deferred(), - d = QQWB.deferred._deferred(); - return - QQWB.extend(c, { - fail: d.done, - then: function(a, b) { - return - c.done(a).fail(b), this - }, - always: function() { - return - c.done.apply(c, arguments).fail.apply(this, arguments) - }, - rejectWith: d.resolveWith, - reject: d.resolve, - isRejected: d.isResolved, - promise: function(a) { - if (a == null) { - if (b) return - b; - b = a = {} - } - var - d = QQWB.deferred._promiseMethods.length; - while (d--) a[QQWB.deferred._promiseMethods[d]] = c[QQWB.deferred._promiseMethods[d]]; - return - a - } - }), c.success = c.done, c.error = c.fail, c.complete = c.whatever = c.always, c.done(d.cancel).fail(c.cancel), delete - c.cancel, a && a.call(c, c), c - }, - when: function(a) { - function - f(a) { - return + function c(a, b) { for (var c = []; b > 0; c[--b] = a); return + c.join("") } var d = function() { return + d.cache.hasOwnProperty(arguments[0]) || + (d.cache[arguments[0]] = + d.parse(arguments[0])), + d.format.call(null, d.cache[arguments[0]], + arguments) }; return d.format = + function(d, e) { var f = 1, g = d.length, h + = "", i, j = [], k, l, m, n, o, p; + for (k = 0; k < g; k++) { h = + b(d[k]); if (h === + "string") + j.push(d[k]); else + if (h === "array") + { m = d[k]; if + (m[2]) { i + = + e[f]; + for + (l + = + 0; + l + < + m[2].length; + l++) + { + if + (!i.hasOwnProperty(m[2][l])) + throw + a('[sprintf] + property + "%s" + does + not + exist', + m[2][l]); + i + = + i[m[2][l]] + } + } else m[1] + ? i + = + e[m[1]] + : + i + = + e[f++]; + if + (/[^s]/.test(m[8]) + && + b(i) + != + "number") + throw + a("[sprintf] + expecting + number + but + found + %s", + b(i)); + switch + (m[8]) + { + case + "b": + i + = + i.toString(2); + break; + case + "c": + i + = + String.fromCharCode(i); + break; + case + "d": + i + = + parseInt(i, + 10); + break; + case + "e": + i + = + m[7] + ? + i.toExponential(m[7]) + : + i.toExponential(); + break; + case + "f": + i + = + m[7] + ? + parseFloat(i).toFixed(m[7]) + : + parseFloat(i); + break; + case + "o": + i + = + i.toString(8); + break; + case + "s": + i + = + (i + = + i + ? + String(i) + : + "") + && + m[7] + ? + i.substring(0, + m[7]) + : + i; + break; + case + "u": + i + = + Math.abs(i); + break; + case + "x": + i + = + i.toString(16); + break; + case + "X": + i + = + i.toString(16).toUpperCase() + } i + = + /[def]/.test(m[8]) + && + m[3] + && + i + >= + 0 ? + "+" + + i + : + i, + o = + m[4] + ? + m[4] + == + "0" + ? + "0" + : + m[4].charAt(1) + : + " + ", + p = + m[6] + - + String(i).length, + n = + m[6] + ? + c(o, + p) + : + "", + j.push(m[5] + ? + i + + + n + : + n + + + i) + } } return + j.join("") }, d.cache = {}, d.parse + = function(a) { var b = a, + c = [], d = [], e = + 0; while + (b) { if + ((c + = + /^[^\x25]+/.exec(b)) + !== + null) + d.push(c[0]); + else + if + ((c + = + /^\x25{2}/.exec(b)) + !== + null) + d.push("%"); + else + { + if + ((c + = + /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(b)) + === + null) + throw + "[sprintf] + huh?"; + if + (c[2]) + { + e + |= + 1; + var + f + = + [], + g + = + c[2], + h + = + []; + if + ((h + = + /^([a-z_][a-z_\d]*)/i.exec(g)) + === + null) + throw + "[sprintf] + huh?"; + f.push(h[1]); + while + ((g + = + g.substring(h[0].length)) + !== + "") + if + ((h + = + /^\.([a-z_][a-z_\d]*)/i.exec(g)) + !== + null) + f.push(h[1]); + else + if + ((h + = + /^\[(\d+)\]/.exec(g)) + !== + null) + f.push(h[1]); + else + throw + "[sprintf] + huh?"; + c[2] + = + f + } + else + e + |= + 2; + if + (e + === + 3) + throw + "[sprintf] + mixing + positional + and + named + placeholders + is + not + (yet) + supported"; + d.push(c) + } + b = + b.substring(c[0].length) + } return d + }, d }(), b = function(b, + c) { return + c.unshift(b), + a.apply(null, + c) + }; + QQWB.extend("String.format", { sprintf: a, vsprintf: b }), + QQWB._alias("format", QQWB.String.format) }(), + QQWB.extend("time", { now: function() { return + +this.dateNow() }, secondsNow: function() { + return Math.round(this.now() / 1e3) + }, dateNow: function() { return new Date }, + shortTime: function(a, b) { return a instanceof + Date || (b = a, a = this.dateNow()), b = b + || "%(year)s/%(month)s/%(day)s + %(hour)02d:%(minute)02d:%(second)02d", + QQWB.format.sprintf(b, { year: a.getFullYear(), + month: a.getMonth(), day: a.getDate(), + hour: a.getHours(), minute: a.getMinutes(), second: + a.getSeconds() }) } }), QQWB.extend("log", + { CRITICAL: 50, ERROR: 40, WARNING: 30, INFO: 20, + DEBUG: 10, NOTSET: 0, _level: 0, _format: + "%(source)s%(popup)s%(frame)s%(name)s: + [%(levelname)s] %(time)s + %(message)s", setLevel: function(a) + { return this._level = a, this }, + setFormat: function(a) { return + this._format = a, this }, debug: + function(a) { return this.DEBUG >= + this._level && + this._out("DEBUG", a), this }, + info: function(a) { return this.INFO >= + this._level && this._out("INFO", + a), this }, warning: + function(a) { return this.WARNING + >= this._level && + this._out("WARNING", a), this }, + error: function(a) { return this.ERROR >= + this._level && this._out("ERROR", + a), this }, critical: + function(a) { return this.CRITICAL + >= this._level && + this._out("CRITICAL", + a), + this }, _out: function(a, + b) { var c + = + this._format; + c = + QQWB.format.sprintf(c, + { + name: + QQWB.name, + levelname: + a, + time: + QQWB.time.shortTime(), + message: + b, + frame: + window + != + window.parent + ? + "*" + : + "", + source: + window.name + ? + window.name + : + "", + popup: + window.opener + || + window.name + === + QQWB._const.AUTH_WINDOW_NAME + ? + "#" + : + "" + }), + this._capture + && + typeof + this._captureLevel + == + "number" + && + this[a] + > + this._captureLevel + && + this._capturedMessages + && + (this._capturedMessages.length + >= + this._captureMaxSize + && + this._capturedMessages.shift(), + this._capturedMessages.push(c)), + QQWB.debug + && + window.console + && + window.console.log(c) + }, + startCapture: + function(a, + b) + { + return + this._captureLevel + = + a + || + this.NOTSET, + this._captureMaxSize + = + b + || + 50, + this._capturedMessages + = + [], + this._capture + = + !0, + this + }, + stopCapture: + function() + { + return + this._capture + && + (this._capture + = + !1), + this + }, + lastCaptured: + function(a) + { + return + a + = + a + || + "\n", + this._capturedMessages + ? + this._capturedMessages.join(a) + : + "" + } + }), QQWB.extend("cookie", { set: function(a, b, c, + d, e, f) { f = f || escape; if + (typeof c == "undefined" || + c === null) c = -1; var g + = e ? "domain=" + e + : "", h = d ? "path=" + d : "", i = ""; + return c === 0 ? i = "expires=" + (new Date(1970, + 1, 1)).toUTCString() : c > 0 && (i + = "expires=" + (new Date(+(new + Date) + c * + 1e3)).toUTCString()), + document.cookie = [a + "=" + f(b), + i, h, g].join("; "), this }, get: function(a, b, c) + { b = b || unescape; var d = a + "="; cookies = + (document.cookie || "").split(/\s*;\s*/); + for (var e = 0, f = cookies.length; e < f; + e++) { var g = cookies[e]; if + (g.indexOf(d) === 0) return + b(g.substr(d.length)) } return c }, del: + function(a, b, c) { return this.set(a, "", + 0, b, c), document.cookie.indexOf(a + + "=") >= 0 && + QQWB.log.warning("Cookie + may not be + deleted as + you + expected"), + this } }), QQWB.extend("XML", { + isXML: function(a) {}, + toString: function(a) { return + this.stringify(a) }, + stringify: function(a) { var b; + return window.ActiveXObject + ? b = a.xml : b = (new + XMLSerializer).serializeToString(a), + b }, fromString: function(a) { var + b; if + (window.ActiveXObject) b = + new + ActiveXObject("Microsoft.XMLDOM"), + b.async = "false", b.loadXML(a); + else { var c = new DOMParser; b = + c.parseFromString(a, + "text/xml") } + return b } }, !0), + QQWB.extend("Function", { + isFunction: function(a) { + return typeof a == + "function" } }), + QQWB.extend("deferred", { + _promiseMethods: "done fail + isResolved isRejected + promise then always success + error complete + whatever".split(" "), + _deferred: function() { var a = [], + b, c, d, e = { done: + function() { if + (!d) { var + c = + arguments, f, g; b && (g = + b, b = 0); for (var + h = 0, i = + c.length; h + < i; h++) f + = c[h], + QQWB.Array.isArray(f) ? + e.done.apply(e, f) : + QQWB.Function.isFunction(f) + && a.push(f); g && + e.resolveWith(g[0], g[1]) } + return this + }, resolveWith: + function(e, f) { if + (!d && !b + && !c) { f + = + f + || + [], + c + = + 1; + try + { + while + (a[0]) + a.shift().apply(e, + f) + } + finally + { + b + = + [e, + f], + c + = + 0 + } + } return + this }, + resolve: + function() + { + return + e.resolveWith(this, + arguments), + this + }, + isResolved: + function() + { + return + !!c + || + !! + b + }, + cancel: + function() + { + return + d + = + 1, + a + = + [], + this + } + }; return e }, deferred: + function(a) { var b, c = + QQWB.deferred._deferred(), + d = + QQWB.deferred._deferred(); + return QQWB.extend(c, { + fail: d.done, then: + function(a, b) { + return + c.done(a).fail(b), + this }, always: + function() { return + c.done.apply(c, + arguments).fail.apply(this, + arguments) + }, rejectWith: + d.resolveWith, reject: + d.resolve, + isRejected: + d.isResolved, + promise: function(a) + { if (a == null) { if (b) + return + b; b = a = {} } var + d = + QQWB.deferred._promiseMethods.length; + while + (d--) + a[QQWB.deferred._promiseMethods[d]] + = + c[QQWB.deferred._promiseMethods[d]]; + return + a + } }), c.success = c.done, + c.error = c.fail, + c.complete = + c.whatever = + c.always, + c.done(d.cancel).fail(c.cancel), + delete c.cancel, a + && a.call(c, + c), + c }, when: + function(a) + { function + f(a) + { + return - function(c) { - b[a] = arguments.length > 1 ? QQWB.Array.fromArguments(arguments) : c, --d || e.resolveWith(e, QQWB.Array.fromArguments(b)) - } - } - var - b = arguments, - c = b.length, - d = c, - e = c <= 1 && a && QQWB.Function.isFunction(a.promise) ? a : QQWB.deferred.deferred(); - if (c > 1) for (var - g = 0; g < c; g++) b[g] && QQWB.Function.isFunction(b[g].promise) ? b[g].promise().then(f(g), e.reject) : --d, d || e.resolveWith(e, b); - else e !== a && e.resolveWith(e, c ? [a] : []); - return - e.promise() - } -}), QQWB._alias(["task", "when"], QQWB.deferred.when), QQWB.extend("io", { - _globalIOTimeout: 3e4, - _IOScript: function(a) { - var - b, c, d = document.head || document.getElementsByTagName("head")[0] || document.documentElement; - return { - send: function(e) { - var - f = QQWB.time.now(); - b = document.createElement("script"), b.async = "async", a.charset && (b.charset = a.charset), b.src = a.url, c = setTimeout(function() { - QQWB.log.warning("script - loading timeout"), e(599, "network connect - timeout", QQWB.time.now() - f) - }, QQWB.io._globalIOTimeout), b.onload = b.onreadystatechange = function(a, g) { - if (g || !b.readyState || /loaded|complete/.test(b.readyState)) clearTimeout(c), b.onload = b.onreadystatechange = null, d && b.parentNode && d.removeChild(b), b = null, !g && e && e.apply(QQWB, [200, "success", QQWB.time.now() - f]), g && e && e.apply(QQWB, [-1, "aborted", QQWB.time.now() - f]) - }, b.onerror = function(a) { - clearTimeout(c), e && e.apply(QQWB, [404, a, QQWB.time.now() - f]) - }, d.insertBefore(b, d.firstChild) - }, - abort: function() { - b && b.onload(0, 1) - } - } - }, - _IOAjax: function(a) { - var - b, c, a = a || {}, - d = window.XMLHttpRequest ? new - window.XMLHttpRequest : new - window.ActiveXObject("Microsoft.XMLHTTP"); - return - a.async || (a.async = "async"), { - send: function(e) { - var - f = QQWB.time.now(); - a.username ? d.open(a.type, a.url, a.async, a.username, a.password) : d.open(a.type, a.url, a.async); - try { - a.type == "POST" && d.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), d.setRequestHeader("X-Requested-With", "XMLHttpRequest"), d.setRequestHeader("X-Requested-From", "openjs") - } catch (g) {} - d.send(a.data || null), c = setTimeout(function() { - QQWB.log.warning("request - timeout"), e(599, "network connect - timeout", QQWB.time.now() - f) - }, QQWB.io._globalIOTimeout), b = function(g, h) { - var - i, j, k, l, m, n; - try { - if (b && (h || d.readyState === 4)) { - b = null; - if (h) d.readyState !== 4 && d.abort(); - else { - i = d.status, k = d.getAllResponseHeaders(), l = {}, n = d.responseXML, n && n.documentElement && (l.xml = n), l.text = d.responseText; - try { - j = d.statusText - } catch (o) { - j = "" - } - i === 1223 && (i = 204), a.dataType.toLowerCase() == "json" ? m = QQWB.JSON.fromString(l.text) : a.dataType.toLowerCase() == "xml" ? m = l.xml : m = l.text - } - clearTimeout(c), e(i, j, QQWB.time.now() - f, m, l.text, k, a.dataType) - } - } catch (p) { - var - q = p; - i = -2, j = "", j += "Exception - [Type:", j += q && q.type ? q.type : "unknown exception - type", j += ", - Message:", j += q && q.message ? q.message : q, j += "]", QQWB.log.warning("caught - " + j + " exception - QQWB.io._IOAjax"), h || (clearTimeout(c), e(i, j, QQWB.time.now() - f)) - } - }, !a.async || d.readyState === 4 ? b() : d.onreadystatechange = b - }, - abort: function() { - b && b(0, 1) - } - } - }, - _IOFlash: function(a) { - var - b, c, d, a = a || {}; - return { - send: function(e) { - var - f = QQWB.time.now(); - d = 1, c = setTimeout(function() { - QQWB.log.warning("request - timeout"), e(599, "network connect - timeout", QQWB.time.now() - f) - }, QQWB.io._globalIOTimeout), b = function(d, g) { - var - h, i, j, k, l, m, n = 4; - clearTimeout(c); - try { - b && (g || n == 4) && (b = null, g ? e(-1, "request - has - aborted", QQWB.time.now() - f) : (h = this.httpStatus, i = this.httpStatus == 200 ? "ok" : "", j = "", k = {}, k.text = this.httpResponseText, a.dataType.toLowerCase() == "json" ? l = QQWB.JSON.fromString(k.text) : a.dataType.toLowerCase() == "xml" ? l = QQWB.XML.fromString(k.text) : l = k.text), e(h, i, QQWB.time.now() - f, l, k.text, j, a.dataType)) - } catch (o) { - var - p = o; - h = -2, i = "", i += "Exception - [Type:", i += p && p.type ? p.type : "unknown exception - type", i += ", - Message:", i += p && p.message ? p.message : p, i += "]", QQWB.log.warning("caught - " + i + " exception - QQWB.io._IOFlash"), g || e(h, i, QQWB.time.now() - f) - } - }, window.onFlashRequestComplete_8df046 || (window.onFlashRequestComplete_8df046 = function(a) { - if (!a.ticket) { - QQWB.log.error("ticket - doesn't exists in response, - " + QQWB.JSON.stringify(a)); - return - } - var - b = window.onFlashRequestComplete_8df046.callbacks.getByTicket(a.ticket), - c = a.srcEvent; - b.readyState || (b.readyState = 0), /httpStatus/i.test(c.type) ? (b.httpStatus = c.status, b.readyState++) : /error/i.test(c.type) ? (b.httpError = c.type, b.readyState++) : /complete/i.test(c.type) && (b.httpResponseText = c.target.data, b.readyState++), b.readyState == 2 && (b.call(b), window.onFlashRequestComplete_8df046.callbacks.unregister(a.ticket)) - }, window.onFlashRequestComplete_8df046.callbacks = { - _callbackPool: {}, - _ticketPrefix: "openjstkt", - _ticketStartIndex: 0, - register: function(a) { - var - b; - return - this._ticketStartIndex++, b = this._ticketPrefix + this._ticketStartIndex, this._callbackPool[b] = a, b - }, - getByTicket: function(a) { - return - this._callbackPool[a] || QQWB.log.error("get callback - failed, callback doesn't exist at ticket - " + a), this._callbackPool[a] - }, - unregister: function(a) { - return - this._callbackPool[a] ? (delete - this._callbackPool[a], !0) : (QQWB.log.error("unregister - callback failed, callback doesn't exist at ticket - " + a), !1) - } - }), QQWBFlashTransport && QQWBFlashTransport.httpRequest ? QQWBFlashTransport.httpRequest(a.url, a.data, a.type, window.onFlashRequestComplete_8df046.callbacks.register(b)) : QQWB.log.critical("flash - transportation object - error" + QQWBFlashTransportName) - }, - abort: function() { - b && b(0, 1) - } - } - }, - _apiAjax: function(a, b, c, d) { - var - e = { - type: d.toUpperCase(), - url: QQWB._domain.api + a, - data: QQWB.queryString.encode(b), - dataType: c - }; - return - e.type == "GET" && (e.url += e.data ? "?" + e.data : "", delete - e.data), QQWB.io.ajax(e) - }, - _apiFlashAjax: function(a, b, c, d) { - var - e = { - type: d.toUpperCase(), - url: QQWB._domain.api + a, - data: QQWB.queryString.encode(b), - dataType: c - }; - return - e.type == "GET" && (e.url += e.data ? "?" + e.data : "", delete - e.data), QQWB.io.flashAjax(e) - }, - _apiResponder: function(a) { - return + function(c) { b[a] = arguments.length > 1 ? + QQWB.Array.fromArguments(arguments) : c, --d || + e.resolveWith(e, + QQWB.Array.fromArguments(b)) + } } var b = arguments, c = b.length, d = c, e = c <= 1 && a && + QQWB.Function.isFunction(a.promise) + ? + a + : + QQWB.deferred.deferred(); + if + (c + > + 1) + for + (var + g + = + 0; + g + < + c; + g++) + b[g] + && + QQWB.Function.isFunction(b[g].promise) + ? + b[g].promise().then(f(g), + e.reject) + : + --d, + d + || + e.resolveWith(e, + b); + else + e + !== + a + && + e.resolveWith(e, + c + ? + [a] + : + []); + return + e.promise() + } }), + QQWB._alias(["task", + "when"], + QQWB.deferred.when), + QQWB.extend("io", + { + _globalIOTimeout: + 3e4, + _IOScript: + function(a) + { var b, c, + d = + document.head + || + document.getElementsByTagName("head")[0] + || + document.documentElement; + return { + send: + function(e) + { var f = + QQWB.time.now(); + b = + document.createElement("script"), + b.async = + "async", + a.charset && + (b.charset + = + a.charset), + b.src = + a.url, + c = + setTimeout(function() + { + QQWB.log.warning("script + loading + timeout"), + e(599, + "network + connect + timeout", + QQWB.time.now() + - + f) + }, + QQWB.io._globalIOTimeout), + b.onload = + b.onreadystatechange + = + function(a, + g) + { if + (g + || + !b.readyState + || + /loaded|complete/.test(b.readyState)) + clearTimeout(c), + b.onload + = + b.onreadystatechange + = + null, + d + && + b.parentNode + && + d.removeChild(b), + b + = + null, + !g + && + e + && + e.apply(QQWB, + [200, + "success", + QQWB.time.now() + - + f]), + g + && + e + && + e.apply(QQWB, + [-1, + "aborted", + QQWB.time.now() + - + f]) + }, + b.onerror = + function(a) + { + clearTimeout(c), + e + && + e.apply(QQWB, + [404, + a, + QQWB.time.now() + - + f]) + }, + d.insertBefore(b, + d.firstChild) + }, abort: + function() { + b && + b.onload(0, + 1) + } } }, + _IOAjax: + function(a) + { + var + b, + c, + a + = + a + || + {}, + d + = + window.XMLHttpRequest + ? + new + window.XMLHttpRequest + : + new + window.ActiveXObject("Microsoft.XMLHTTP"); + return + a.async + || + (a.async + = + "async"), + { + send: + function(e) + { + var + f + = + QQWB.time.now(); + a.username + ? + d.open(a.type, + a.url, + a.async, + a.username, + a.password) + : + d.open(a.type, + a.url, + a.async); + try + { + a.type + == + "POST" + && + d.setRequestHeader("Content-Type", + "application/x-www-form-urlencoded"), + d.setRequestHeader("X-Requested-With", + "XMLHttpRequest"), + d.setRequestHeader("X-Requested-From", + "openjs") + } + catch + (g) + {} + d.send(a.data + || + null), + c + = + setTimeout(function() + { + QQWB.log.warning("request + timeout"), + e(599, + "network + connect + timeout", + QQWB.time.now() + - + f) + }, + QQWB.io._globalIOTimeout), + b + = + function(g, + h) + { + var + i, + j, + k, + l, + m, + n; + try + { + if + (b + && + (h + || + d.readyState + === + 4)) + { + b + = + null; + if + (h) + d.readyState + !== + 4 + && + d.abort(); + else + { + i + = + d.status, + k + = + d.getAllResponseHeaders(), + l + = + {}, + n + = + d.responseXML, + n + && + n.documentElement + && + (l.xml + = + n), + l.text + = + d.responseText; + try + { + j + = + d.statusText + } + catch + (o) + { + j + = + "" + } + i + === + 1223 + && + (i + = + 204), + a.dataType.toLowerCase() + == + "json" + ? + m + = + QQWB.JSON.fromString(l.text) + : + a.dataType.toLowerCase() + == + "xml" + ? + m + = + l.xml + : + m + = + l.text + } + clearTimeout(c), + e(i, + j, + QQWB.time.now() + - + f, + m, + l.text, + k, + a.dataType) + } + } + catch + (p) + { + var + q + = + p; + i + = + -2, + j + = + "", + j + += + "Exception + [Type:", + j + += + q + && + q.type + ? + q.type + : + "unknown + exception + type", + j + += + ", + Message:", + j + += + q + && + q.message + ? + q.message + : + q, + j + += + "]", + QQWB.log.warning("caught + " + + + j + + + " + exception + QQWB.io._IOAjax"), + h + || + (clearTimeout(c), + e(i, + j, + QQWB.time.now() + - + f)) + } + }, + !a.async + || + d.readyState + === + 4 + ? + b() + : + d.onreadystatechange + = + b + }, + abort: + function() + { + b + && + b(0, + 1) + } + } + }, + _IOFlash: + function(a) + { + var + b, + c, + d, + a + = + a + || + {}; + return + { + send: + function(e) + { + var + f + = + QQWB.time.now(); + d + = + 1, + c + = + setTimeout(function() + { + QQWB.log.warning("request + timeout"), + e(599, + "network + connect + timeout", + QQWB.time.now() + - + f) + }, + QQWB.io._globalIOTimeout), + b + = + function(d, + g) + { + var + h, + i, + j, + k, + l, + m, + n + = + 4; + clearTimeout(c); + try + { + b + && + (g + || + n + == + 4) + && + (b + = + null, + g + ? + e(-1, + "request + has + aborted", + QQWB.time.now() + - + f) + : + (h + = + this.httpStatus, + i + = + this.httpStatus + == + 200 + ? + "ok" + : + "", + j + = + "", + k + = + {}, + k.text + = + this.httpResponseText, + a.dataType.toLowerCase() + == + "json" + ? + l + = + QQWB.JSON.fromString(k.text) + : + a.dataType.toLowerCase() + == + "xml" + ? + l + = + QQWB.XML.fromString(k.text) + : + l + = + k.text), + e(h, + i, + QQWB.time.now() + - + f, + l, + k.text, + j, + a.dataType)) + } + catch + (o) + { + var + p + = + o; + h + = + -2, + i + = + "", + i + += + "Exception + [Type:", + i + += + p + && + p.type + ? + p.type + : + "unknown + exception + type", + i + += + ", + Message:", + i + += + p + && + p.message + ? + p.message + : + p, + i + += + "]", + QQWB.log.warning("caught + " + + + i + + + " + exception + QQWB.io._IOFlash"), + g + || + e(h, + i, + QQWB.time.now() + - + f) + } + }, + window.onFlashRequestComplete_8df046 + || + (window.onFlashRequestComplete_8df046 + = + function(a) + { + if + (!a.ticket) + { + QQWB.log.error("ticket + doesn't + exists + in + response, + " + + + QQWB.JSON.stringify(a)); + return + } + var + b + = + window.onFlashRequestComplete_8df046.callbacks.getByTicket(a.ticket), + c + = + a.srcEvent; + b.readyState + || + (b.readyState + = + 0), + /httpStatus/i.test(c.type) + ? + (b.httpStatus + = + c.status, + b.readyState++) + : + /error/i.test(c.type) + ? + (b.httpError + = + c.type, + b.readyState++) + : + /complete/i.test(c.type) + && + (b.httpResponseText + = + c.target.data, + b.readyState++), + b.readyState + == + 2 + && + (b.call(b), + window.onFlashRequestComplete_8df046.callbacks.unregister(a.ticket)) + }, + window.onFlashRequestComplete_8df046.callbacks + = + { + _callbackPool: + {}, + _ticketPrefix: + "openjstkt", + _ticketStartIndex: + 0, + register: + function(a) + { + var + b; + return + this._ticketStartIndex++, + b + = + this._ticketPrefix + + + this._ticketStartIndex, + this._callbackPool[b] + = + a, + b + }, + getByTicket: + function(a) + { + return + this._callbackPool[a] + || + QQWB.log.error("get + callback + failed, + callback + doesn't + exist + at + ticket + " + + + a), + this._callbackPool[a] + }, + unregister: + function(a) + { + return + this._callbackPool[a] + ? + (delete + this._callbackPool[a], + !0) + : + (QQWB.log.error("unregister + callback + failed, + callback + doesn't + exist + at + ticket + " + + + a), + !1) + } + }), + QQWBFlashTransport + && + QQWBFlashTransport.httpRequest + ? + QQWBFlashTransport.httpRequest(a.url, + a.data, + a.type, + window.onFlashRequestComplete_8df046.callbacks.register(b)) + : + QQWB.log.critical("flash + transportation + object + error" + + + QQWBFlashTransportName) + }, + abort: + function() + { + b + && + b(0, + 1) + } + } + }, + _apiAjax: + function(a, + b, + c, + d) + { + var + e + = + { + type: + d.toUpperCase(), + url: + QQWB._domain.api + + + a, + data: + QQWB.queryString.encode(b), + dataType: + c + }; + return + e.type + == + "GET" + && + (e.url + += + e.data + ? + "?" + + + e.data + : + "", + delete + e.data), + QQWB.io.ajax(e) + }, + _apiFlashAjax: + function(a, + b, + c, + d) + { + var + e + = + { + type: + d.toUpperCase(), + url: + QQWB._domain.api + + + a, + data: + QQWB.queryString.encode(b), + dataType: + c + }; + return + e.type + == + "GET" + && + (e.url + += + e.data + ? + "?" + + + e.data + : + "", + delete + e.data), + QQWB.io.flashAjax(e) + }, + _apiResponder: + function(a) + { + return - function(b, c, d, e, f, g, h) { - var - i, j; - b !== 200 ? (b = 2e6 + Math.abs(b ? b : 0), a.reject(b, c, d, "")) : typeof(i = QQWB._apiProvider._apiParseRetCode(f)) == "number" && 0 !== i ? (j = QQWB._apiProvider._apiParseErrorCode(f), b = 1e6 + i * 1e3 + 500 + (j ? j : 0), a.reject(b, QQWB._apiProvider._apiGetErrorMessage(i, j), d, f)) : a.resolve(b, c, d, e, g, h) - } - }, - _ajaxResponder: function(a) { - return + function(b, c, d, e, f, g, h) { var i, j; b !== 200 ? (b = 2e6 + + Math.abs(b ? b : 0), a.reject(b, c, d, "")) : typeof(i + = QQWB._apiProvider._apiParseRetCode(f)) == "number" && + 0 !== i ? (j = + QQWB._apiProvider._apiParseErrorCode(f), + b = 1e6 + i * 1e3 + 500 + (j ? + j : 0), a.reject(b, + QQWB._apiProvider._apiGetErrorMessage(i, + j), d, + f)) : + a.resolve(b, c, d, e, g, h) } }, + _ajaxResponder: + function(a) + { + return - function(b, c, d, e, f, g, h) { - b !== 200 ? a.reject(b, c, d, "") : a.resolve(e, d, f) - } - }, - flashAjax: function(a) { - var - b = QQWB.deferred.deferred(), - c = { - type: "get", - dataType: "json" - }; - return - QQWB.extend(c, a, !0), QQWB.io._IOFlash(c).send(QQWB.io._apiResponder(b)), b.promise() - }, - ajax: function(a) { - var - b = QQWB.deferred.deferred(), - c = { - type: "get", - dataType: "json" - }; - return - QQWB.extend(c, a, !0), QQWB.io._IOAjax(c).send(QQWB.io._apiResponder(b)), b.promise() - }, - ajax2: function(a) { - var - b = QQWB.deferred.deferred(), - c = { - type: "get", - dataType: "json" - }; - return - QQWB.extend(c, a, !0), QQWB.io._IOAjax(c).send(QQWB._ajaxResponder(b)), b.promise() - }, - script: function(a, b) { - var - b = b || "utf-8", - c = QQWB.deferred.deferred(); - return - QQWB.io._IOScript({ - charset: b, - url: a - }).send(function(a, b, d) { - a !== 200 ? c.reject(a, b, d) : c.resolve(a, b, d) - }), c.promise() - }, - jsonp: function(a) { - var - b = QQWB.deferred.deferred(), - c = "callback", - d = "jsonp_", - e = d + QQWB.uid(), - f = window.callbackName, - g, h = { - dataType: "text", - charset: "utf-8", - url: "" - }; - return - QQWB.extend(h, a, !0), h.data && (h.url += "?" + h.data + "&" + c + "=" + e), window[e] = function(a) { - var - c = a; - h.dataType.toLowerCase() === "json" ? c = QQWB.JSON.fromString(a) : h.dataType.toLowerCase() === "xml" && (c = QQWB.XML.fromString(a)), b.resolve(c, g), window[e] = f - }, QQWB.io._IOScript(h).send(function(a, c, d) { - a !== 200 && b.reject(a, c, d), g = d - }), b.promise() - } -}), QQWB._alias("ajax", QQWB.io.ajax2), QQWB._alias("jsonp", QQWB.io.jsonp), QQWB._alias("script", QQWB.io.script), QQWB.extend("_token", { - setAccessToken: function(a, b, c, d) { - var - e = this.getTokenUser(!0); - return - QQWB.cookie.set(QQWB._cookie.names.accessToken, [a, QQWB.time.now() + b * 1e3, c || e && e.name || "", d || e && e.nick || ""].join("|"), 31536e3, QQWB._cookie.path, QQWB._cookie.domain), QQWB - }, - getAccessToken: function(a) { - var - b = QQWB.cookie.get(QQWB._cookie.names.accessToken); - if (b) { - b = b.split("|", 2); - if (a || parseInt(b[1], 10) > QQWB.time.now()) return - b[0] - } - }, - getTokenUser: function(a) { - var - b = QQWB.cookie.get(QQWB._cookie.names.accessToken); - if (b) { - b = b.split("|", 4); - if (a || parseInt(b[1], 10) > QQWB.time.now()) return { - name: b[2], - nick: b[3] - } - } - }, - clearAccessToken: function() { - return - QQWB.cookie.del(QQWB._cookie.names.accessToken, QQWB._cookie.path, QQWB._cookie.domain), QQWB - }, - setRefreshToken: function(a) { - return - QQWB.cookie.set(QQWB._cookie.names.refreshToken, a, 31536e3, QQWB._cookie.path, QQWB._cookie.domain), QQWB - }, - getRefreshToken: function() { - return - QQWB.cookie.get(QQWB._cookie.names.refreshToken) - }, - clearRefreshToken: function() { - return - QQWB.cookie.del(QQWB._cookie.names.refreshToken, QQWB._cookie.path, QQWB._cookie.domain), QQWB - }, - exchangeForToken: function(a) { - return - QQWB.io.jsonp({ - url: QQWB._domain.exchange, - data: QQWB.queryString.encode({ - response_type: "token", - client_id: QQWB.appkey.value, - scope: "all", - state: "1", - refresh_token: this.getRefreshToken(), - access_token: this.getAccessToken(!0) - }) - }).success(function(a) { - var - b = a; - QQWB.String.isString(a) && (a = QQWB.queryString.decode(a)), a.access_token ? (!a.expires_in && QQWB.log.error("token - expires_in not - retrieved"), !a.wb_name && QQWB.log.warning("weibo - username not retrieved, will not update - username"), !a.wb_nick && QQWB.log.warning("weibo usernick - not retrieved, will not update - usernick"), QQWB._token.setAccessToken(a.access_token, parseInt(a.expires_in, 10), a.wb_name, a.wb_nick), a.refresh_token ? QQWB._token.setRefreshToken(a.refresh_token) : QQWB.log.error("refresh - token not retrieved"), QQWB.log.info("exchange token - succeed")) : a.error ? QQWB.log.error("exchange token error - " + a.error) : QQWB.log.error("unexpected result returned - from server " + b + " while exchanging for new access - token") - }).error(function(a, b) { - a === 404 ? QQWB.log.error("exchange - token has failed, script not - found") : QQWB.log.error("exchange token has failed, - " + b) - }).complete(function(b, c, d) { - a && a.apply(QQWB, [b, c, d]) - }), QQWB - }, - getNewAccessToken: function(a) { - return - QQWB.io.jsonp({ - url: QQWB._domain.query, - data: QQWB.queryString.encode({ - response_type: "token", - client_id: QQWB.appkey.value, - scope: "all", - state: "1" - }) - }).success(function(a) { - var - b = a; - QQWB.String.isString(a) && (a = QQWB.queryString.decode(a)), a.access_token ? (!a.expires_in && QQWB.log.error("token - expires_in not - retrieved"), !a.wb_name && QQWB.log.warning("weibo - username not - retrieved"), !a.wb_nick && QQWB.log.warning("weibo - usernick not - retrieved"), QQWB._token.setAccessToken(a.access_token, parseInt(a.expires_in, 10), a.wb_name, a.wb_nick), a.refresh_token ? QQWB._token.setRefreshToken(a.refresh_token) : QQWB.log.error("refresh - token not retrieved"), QQWB.log.info("retrieve new - access token - succeed")) : a.error ? QQWB.log.error("retrieve new access - token error " + a.error) : QQWB.log.error("unexpected - result returned from server " + b + " while retrieving new - access - token") - }).error(function(a, b) { - a === 404 ? QQWB.log.error("get - token has failed, script not - found") : QQWB.log.error("get token failed, - " + b) - }).complete(function(b, c, d) { - a && a.apply(QQWB, [b, c, d]) - }), QQWB - }, - resolveResponse: function(a, b) { - var - c, d = (b || window).QQWB, - e = QQWB.String.isString(a) ? d.queryString.decode(a) : a; - e.access_token ? (d._token.setAccessToken(e.access_token, parseInt(e.expires_in, 10), e.wb_name, e.wb_nick), e.refresh_token ? d._token.setRefreshToken(e.refresh_token) : d.log.error("refresh - token not - retrieved"), c = d.loginStatus(), d.log.info("user - " + c.name + " logged - in"), d.trigger(d.events.USER_LOGGEDIN_EVENT, c)) : e.error ? (d.log.error("login - error occurred - " + e.error), e.message = e.error, d.trigger(d.events.USER_LOGIN_FAILED_EVENT, e)) : (d.log.error("unexpected - result returned from server - " + a), e.message = e.error = "server - error", d.trigger(d.events.USER_LOGIN_FAILED_EVENT, e)) - } -}), QQWB.extend("_eventProvider", { - _getEventsMap: function() { - return - this._eventsMap || (this._eventsMap = {}), this._eventsMap - }, - bind: function(a, b) { - var - c = this._getEventsMap(); - c[a] ? QQWB.Array.inArray(c[a], b) || c[a].push(b) : c[a] = [b] - }, - unbind: function(a, b) { - var - c = this._getEventsMap()[a]; - if (c) if (b) for (var - d = 0, e = c.length; d < e; d++) b === c[d] && (c[d] = null); - else delete - this._getEventsMap()[a] - }, - trigger: function(a, b) { - var - c = this._getEventsMap()[a]; - if (c) for (var - d = 0, e = c.length; d < e; d++) { - var - f = c[d]; - f && f.call(QQWB, b) - } - } -}), QQWB.extend("", { - bind: function(a, b) { - return - a = a.toLowerCase(), this._eventProvider.bind(a, b), this - }, - once: function(a, b) { - a = a.toLowerCase(); - var - c = function() { - var - d = QQWB.Array.fromArguments(arguments); - b.apply(QQWB, d), this._eventProvider.unbind(a, c), c = null - }; - return - this._eventProvider.bind(a, c), this - }, - unbind: function(a, b) { - return - a = a.toLowerCase(), this._eventProvider.unbind(a, b), this - }, - trigger: function(a, b) { - return - a = a.toLowerCase(), this._eventProvider.trigger(a, b), this - } -}), QQWB.extend("events", { - USER_LOGGEDIN_EVENT: "UserLoggedIn", - USER_LOGIN_FAILED_EVENT: "UserLoginFailed", - USER_LOGGEDOUT_EVENT: "UserLoggedOut", - TOKEN_READY_EVENT: "tokenReady", - DOCUMENT_READY_EVENT: "documentReady", - EVERYTHING_READY_EVENT: "everythingReady" -}), function() { - function - j(a) { - a = a.toLowerCase(); - var - b = e.exec(a) || d.exec(a) || c.exec(a) || a.indexOf("compatible") < 0 && f.exec(a) || []; - return { - browser: b[1] || "unknown", - version: b[2] || "0" - } - } + function(b, c, d, e, f, g, h) { b !== 200 ? a.reject(b, c, d, "") : + a.resolve(e, d, f) } }, flashAjax: function(a) { var b = + QQWB.deferred.deferred(), c = { type: "get", dataType: + "json" }; return QQWB.extend(c, a, !0), + QQWB.io._IOFlash(c).send(QQWB.io._apiResponder(b)), + b.promise() }, ajax: function(a) { var b = + QQWB.deferred.deferred(), c = { type: "get", + dataType: "json" }; return + QQWB.extend(c, a, !0), + QQWB.io._IOAjax(c).send(QQWB.io._apiResponder(b)), + b.promise() }, ajax2: function(a) { var + b = QQWB.deferred.deferred(), c + = { type: "get", + dataType: + "json" + }; return + QQWB.extend(c, a, !0), + QQWB.io._IOAjax(c).send(QQWB._ajaxResponder(b)), + b.promise() }, script: + function(a, b) + { var b = b || + "utf-8", + c = + QQWB.deferred.deferred(); + return + QQWB.io._IOScript({ + charset: + b, + url: + a + }).send(function(a, + b, + d) + { + a + !== + 200 + ? + c.reject(a, + b, + d) + : + c.resolve(a, + b, + d) + }), + c.promise() + }, jsonp: + function(a) { var b = + QQWB.deferred.deferred(), + c = "callback", d = + "jsonp_", e = d + + QQWB.uid(), f + = + window.callbackName, + g, h = { dataType: + "text", + charset: + "utf-8", + url: "" }; + return QQWB.extend(h, + a, !0), + h.data && (h.url + += + "?" + + + h.data + + + "&" + + + c + + + "=" + + + e), + window[e] = + function(a) + { var c + = + a; + h.dataType.toLowerCase() + === + "json" + ? + c + = + QQWB.JSON.fromString(a) + : + h.dataType.toLowerCase() + === + "xml" + && + (c + = + QQWB.XML.fromString(a)), + b.resolve(c, + g), + window[e] + = + f + }, + QQWB.io._IOScript(h).send(function(a, + c, + d) + { + a + !== 200 + && + b.reject(a, + c, + d), + g = d }), + b.promise() } + }), + QQWB._alias("ajax", + QQWB.io.ajax2), + QQWB._alias("jsonp", + QQWB.io.jsonp), + QQWB._alias("script", + QQWB.io.script), + QQWB.extend("_token", + { + setAccessToken: + function(a, + b, + c, + d) + { + var + e + = + this.getTokenUser(!0); + return + QQWB.cookie.set(QQWB._cookie.names.accessToken, + [a, + QQWB.time.now() + + + b + * + 1e3, + c + || + e + && + e.name + || + "", + d + || + e + && + e.nick + || + ""].join("|"), + 31536e3, + QQWB._cookie.path, + QQWB._cookie.domain), + QQWB + }, + getAccessToken: + function(a) + { + var + b + = + QQWB.cookie.get(QQWB._cookie.names.accessToken); + if + (b) + { + b + = + b.split("|", + 2); + if + (a + || + parseInt(b[1], + 10) + > + QQWB.time.now()) + return + b[0] + } + }, + getTokenUser: + function(a) + { + var + b + = + QQWB.cookie.get(QQWB._cookie.names.accessToken); + if + (b) + { + b + = + b.split("|", + 4); + if + (a + || + parseInt(b[1], + 10) + > + QQWB.time.now()) + return + { + name: + b[2], + nick: + b[3] + } + } + }, + clearAccessToken: + function() + { + return + QQWB.cookie.del(QQWB._cookie.names.accessToken, + QQWB._cookie.path, + QQWB._cookie.domain), + QQWB + }, + setRefreshToken: + function(a) + { + return + QQWB.cookie.set(QQWB._cookie.names.refreshToken, + a, + 31536e3, + QQWB._cookie.path, + QQWB._cookie.domain), + QQWB + }, + getRefreshToken: + function() + { + return + QQWB.cookie.get(QQWB._cookie.names.refreshToken) + }, + clearRefreshToken: + function() + { + return + QQWB.cookie.del(QQWB._cookie.names.refreshToken, + QQWB._cookie.path, + QQWB._cookie.domain), + QQWB + }, + exchangeForToken: + function(a) + { + return + QQWB.io.jsonp({ + url: + QQWB._domain.exchange, + data: + QQWB.queryString.encode({ + response_type: + "token", + client_id: + QQWB.appkey.value, + scope: + "all", + state: + "1", + refresh_token: + this.getRefreshToken(), + access_token: + this.getAccessToken(!0) + }) + }).success(function(a) + { + var + b + = + a; + QQWB.String.isString(a) + && + (a + = + QQWB.queryString.decode(a)), + a.access_token + ? + (!a.expires_in + && + QQWB.log.error("token + expires_in + not + retrieved"), + !a.wb_name + && + QQWB.log.warning("weibo + username + not + retrieved, + will + not + update + username"), + !a.wb_nick + && + QQWB.log.warning("weibo + usernick + not + retrieved, + will + not + update + usernick"), + QQWB._token.setAccessToken(a.access_token, + parseInt(a.expires_in, + 10), + a.wb_name, + a.wb_nick), + a.refresh_token + ? + QQWB._token.setRefreshToken(a.refresh_token) + : + QQWB.log.error("refresh + token + not + retrieved"), + QQWB.log.info("exchange + token + succeed")) + : + a.error + ? + QQWB.log.error("exchange + token + error + " + + + a.error) + : + QQWB.log.error("unexpected + result + returned + from + server + " + + + b + + + " + while + exchanging + for + new + access + token") + }).error(function(a, + b) + { + a + === + 404 + ? + QQWB.log.error("exchange + token + has + failed, + script + not + found") + : + QQWB.log.error("exchange + token + has + failed, + " + + + b) + }).complete(function(b, + c, + d) + { + a + && + a.apply(QQWB, + [b, + c, + d]) + }), + QQWB + }, + getNewAccessToken: + function(a) + { + return + QQWB.io.jsonp({ + url: + QQWB._domain.query, + data: + QQWB.queryString.encode({ + response_type: + "token", + client_id: + QQWB.appkey.value, + scope: + "all", + state: + "1" + }) + }).success(function(a) + { + var + b + = + a; + QQWB.String.isString(a) + && + (a + = + QQWB.queryString.decode(a)), + a.access_token + ? + (!a.expires_in + && + QQWB.log.error("token + expires_in + not + retrieved"), + !a.wb_name + && + QQWB.log.warning("weibo + username + not + retrieved"), + !a.wb_nick + && + QQWB.log.warning("weibo + usernick + not + retrieved"), + QQWB._token.setAccessToken(a.access_token, + parseInt(a.expires_in, + 10), + a.wb_name, + a.wb_nick), + a.refresh_token + ? + QQWB._token.setRefreshToken(a.refresh_token) + : + QQWB.log.error("refresh + token + not + retrieved"), + QQWB.log.info("retrieve + new + access + token + succeed")) + : + a.error + ? + QQWB.log.error("retrieve + new + access + token + error + " + + + a.error) + : + QQWB.log.error("unexpected + result + returned + from + server + " + + + b + + + " + while + retrieving + new + access + token") + }).error(function(a, + b) + { + a + === + 404 + ? + QQWB.log.error("get + token + has + failed, + script + not + found") + : + QQWB.log.error("get + token + failed, + " + + + b) + }).complete(function(b, + c, + d) + { + a + && + a.apply(QQWB, + [b, + c, + d]) + }), + QQWB + }, + resolveResponse: + function(a, + b) + { + var + c, + d + = + (b + || + window).QQWB, + e + = + QQWB.String.isString(a) + ? + d.queryString.decode(a) + : + a; + e.access_token + ? + (d._token.setAccessToken(e.access_token, + parseInt(e.expires_in, + 10), + e.wb_name, + e.wb_nick), + e.refresh_token + ? + d._token.setRefreshToken(e.refresh_token) + : + d.log.error("refresh + token + not + retrieved"), + c + = + d.loginStatus(), + d.log.info("user + " + + + c.name + + + " + logged + in"), + d.trigger(d.events.USER_LOGGEDIN_EVENT, + c)) + : + e.error + ? + (d.log.error("login + error + occurred + " + + + e.error), + e.message + = + e.error, + d.trigger(d.events.USER_LOGIN_FAILED_EVENT, + e)) + : + (d.log.error("unexpected + result + returned + from + server + " + + + a), + e.message + = + e.error + = + "server + error", + d.trigger(d.events.USER_LOGIN_FAILED_EVENT, + e)) + } + }), + QQWB.extend("_eventProvider", + { + _getEventsMap: + function() + { + return + this._eventsMap + || + (this._eventsMap + = + {}), + this._eventsMap + }, + bind: + function(a, + b) + { + var + c + = + this._getEventsMap(); + c[a] + ? + QQWB.Array.inArray(c[a], + b) + || + c[a].push(b) + : + c[a] + = + [b] + }, + unbind: + function(a, + b) + { + var + c + = + this._getEventsMap()[a]; + if + (c) + if + (b) + for + (var + d + = + 0, + e + = + c.length; + d + < + e; + d++) + b + === + c[d] + && + (c[d] + = + null); + else + delete + this._getEventsMap()[a] + }, + trigger: + function(a, + b) + { + var + c + = + this._getEventsMap()[a]; + if + (c) + for + (var + d + = + 0, + e + = + c.length; + d + < + e; + d++) + { + var + f + = + c[d]; + f + && + f.call(QQWB, + b) + } + } + }), + QQWB.extend("", + { + bind: + function(a, + b) + { + return + a + = + a.toLowerCase(), + this._eventProvider.bind(a, + b), + this + }, + once: + function(a, + b) + { + a + = + a.toLowerCase(); + var + c + = + function() + { + var + d + = + QQWB.Array.fromArguments(arguments); + b.apply(QQWB, + d), + this._eventProvider.unbind(a, + c), + c + = + null + }; + return + this._eventProvider.bind(a, + c), + this + }, + unbind: + function(a, + b) + { + return + a + = + a.toLowerCase(), + this._eventProvider.unbind(a, + b), + this + }, + trigger: + function(a, + b) + { + return + a + = + a.toLowerCase(), + this._eventProvider.trigger(a, + b), + this + } + }), + QQWB.extend("events", + { + USER_LOGGEDIN_EVENT: + "UserLoggedIn", + USER_LOGIN_FAILED_EVENT: + "UserLoginFailed", + USER_LOGGEDOUT_EVENT: + "UserLoggedOut", + TOKEN_READY_EVENT: + "tokenReady", + DOCUMENT_READY_EVENT: + "documentReady", + EVERYTHING_READY_EVENT: + "everythingReady" + }), + function() +{ function j(a) { a = a.toLowerCase(); var b = e.exec(a) || d.exec(a) || + c.exec(a) || a.indexOf("compatible") < 0 && f.exec(a) || []; return { + browser: b[1] || "unknown", version: b[2] || "0" } } - function - k() { - for (var a in i) i.hasOwnProperty(a) && i[a]() && (g[a] = !0) - } + function k() { for (var a in i) i.hasOwnProperty(a) && i[a]() && (g[a] = + !0) } - function - l() { - var - a = navigator.userAgent || navigator.vendor || window.opera; - return /android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge - |maemo|midp|mmp|opera m(ob|in)i|palm( - os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows - (ce|phone)|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a - wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r - |s - )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 - u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( - i|ip)|hs\-c|ht(c(\-| - |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( - |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( - |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( - g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| - |o|v)|zz)|mt(50|p1|v - )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v - )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| - )|webc|whit|wi(g - |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4)) ? { - mobile: !0 - } : { - pc: !0 - } - } + function l() { var a = navigator.userAgent || navigator.vendor || + window.opera; return + /android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge + |maemo|midp|mmp|opera m(ob|in)i|palm( + os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows + (ce|phone)|xda|xiino/i.test(a) || + /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a + wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r + |s)|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 + u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( + i|ip)|hs\-c|ht(c(\-| + |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( + |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( + |\/)|klon|kpt + |kwc\-|kyo(c|k)|le(no|xi)|lg( + g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| + |o|v)|zz)|mt(50|p1|v)|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v)|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|)|webc|whit|wi(g + |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a.substr(0, + 4)) + ? { + mobile: + !0 + } : + { pc: !0 } } - function - m() { - var a = navigator.appVersion, - b = {}, - c = "unknown"; - return - a.indexOf("Win") != -1 && (c = "windows"), a.indexOf("Mac") != -1 && (c = "mac"), a.indexOf("X11") != -1 && (c = "unix"), a.indexOf("Linux") != -1 && (c = "linux"), b[c] = !0, b - } - var - a, b = navigator.userAgent, - c = /(msie) - ([\w.]+)/, - d = /(opera)(?:.*version)?[ - \/]([\w.]+)/, - e = /(webkit)[ - \/]([\w.]+)/, - f = /(mozilla)(?:.*? - rv:([\w.]+))?/, - g = {}, - h = ["Webkit", "Moz", "O", "ms", "khtml"], - i = { - cookie: function() { - var - a = navigator.cookieEnabled; - if (a && QQWB.browser.webkit) { - var - b = "COOKIE_TEST_" + QQWB.uid(); - document.cookie = b + "=" + 1 + "; - domain=; - path=;", document.cookie.indexOf(b) < 0 ? a = !1 : document.cookie = b + "=" + "; - expires=" + (new Date(1970, 1, 1)).toUTCString() + "; - domain=; path=;" - } - return !a && QQWB.log.critical("Your - browser doesn't support cookie or cookie isn't - enabled"), a - }, - flash: function() { - if (typeof - navigator.plugins != "undefined" && typeof - navigator.plugins["Shockwave Flash"] == "object") { - var - a = navigator.plugins["Shockwave - Flash"].description, - b = typeof - navigator.mimeTypes != "undefined" && navigator.mimeTypes["application/x-shockwave-flash"] && navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin; - return - a && b - } - if (typeof - window.ActiveXObject != "undefined") try { - var c = new - ActiveXObject("ShockwaveFlash.ShockwaveFlash"); - if (c) return - c.getVariable("$version") - } catch (d) {} - }, - userdata: function() { - return - QQWB.browser.msie - }, - postmessage: function() { - return !!window.postMessage && (QQWB.browser.msie && parseInt(QQWB.browser.version, 10) < 8 ? !1 : !0) - }, - canvas: function() { - var - a = document.createElement("canvas"); - return !!a.getContext && !! a.getContext("2d") - }, - webgl: function() { - return !!window.WebGLRenderingContext - }, - geolocation: function() { - return !!navigator.geolocation - }, - websqldatabase: function() { - return !!window.openDatabase - }, - indexeddb: function() { - for (var - a = 0, b = h.length; a < b; a++) if (window[h[a].toLowerCase() + "IndexedDB"]) return !0; - return !!window.indexedDB - }, - websocket: function() { - for (var - a = 0, b = h.length; a < b; a++) if (window[h[a].toLowerCase() + "WebSocket"]) return !0; - return !!window.WebSocket - }, - localstorage: function() { - return - window.localStorage && localStorage.getItem - }, - sessionstorage: function() { - return - window.sessionStorage && sessionStorage.getItem - }, - webworker: function() { - return !!window.Worker - }, - applicationcache: function() { - return !!window.applicationCache - } - }; - a = j(b), QQWB.extend("browser", { - version: a.version - }), QQWB.browser[a.browser] = !0, k(), QQWB.extend("browser.feature", g), QQWB.extend("browser.platform", l()), QQWB.extend("browser.os", m()) -}(), QQWB.extend("flash", { - NO_CACHE: 1, - load: function(a, b, c) { - this.loadedSwfs || (this.loadedSwfs = []); - if (QQWB.Array.inArray(this.loadedSwfs, a)) { - QQWB.log.warning(a + "is - already - loaded"); - return - } - c === this.NO_CACHE && (a += "?" + QQWB.uid()); - var - d = "movieContainer_" + QQWB.uid(), - e = "movie_" + QQWB.uid(), - f = "onFlashReady_a1f5b4ce", - g = window[f]; - return - window[f] = function() { - b && b(e), window[f] = g, g = null, b && (b = null), e = null - }, QQWB.dom.appendHidden(["', '', '', ""].join(" - "), { - id: d - }, !0), document.getElementById(d) - }, - getSWFObjectByName: function(a) { - return - QQWB.browser.msie ? window[a] : document[a].length ? document[a][1] : document[a] - } -}), QQWB.extend("_solution", { - HTML5_SOLUTION: "html5", - FLASH_SOLUTION: "flash", - SILVER_LIGHT_SOLUTION: "silverlight", - initSolution: function(a) { - var - b, c = QQWB.deferred.deferred(); - !this[a] && QQWB.Array.inArray([this.HTML5_SOLUTION, this.FLASH_SOLUTION, this.SILVER_LIGHT_SOLUTION], a) && (this[a] = {}, this[a].name = a, this[a].readyState = 0, this[a].id = "solution_" + QQWB.uid(), this[a].deferred = QQWB.deferred.deferred(), this[a].promise = this[a].deferred.promise()); - if (this[a] && this[a].readyState !== 0) this[a].deferred.success(function() { - c.resolve(QQWB.Array.fromArguments(arguments)) - }).fail(function() { - c.reject(QQWB.Array.fromArguments(arguments)) - }); - else switch (a) { - case - this.HTML5_SOLUTION: - if (QQWB.browser.feature.postmessage) { - b = this[this.HTML5_SOLUTION]; - var - d = function(a) { - QQWB._domain.serverproxy.indexOf(a.origin) !== 0 ? QQWB.log.warning("unexpected - message arrived from " + a.origin + " with data - " + a.data) : (a.data === "success" ? (QQWB.log.info("html5 - solution was successfully - initialized"), b.readyState = 1, b.deferred.resolve()) : QQWB.log.info("unexpected - solution signal - " + a.data), window.addEventListener ? window.removeEventListener("message", d, !1) : window.attachEvent && window.detachEvent("onmessage", d), d = null) - }; - window.addEventListener ? window.addEventListener("message", d, !1) : window.attachEvent && window.attachEvent("onmessage", d), QQWB.everythingReady(function() { - QQWB.log.info("init - html5 - solution..."), serverframe = QQWB.dom.createHidden("iframe", { - id: b.id, - src: QQWB._domain.serverproxy - }), QQWB.dom.append(serverframe), serverframe.onload = function(a) { - setTimeout(function() { - b.readyState !== 1 && (QQWB.log.error("html5 - solution initialition has failed, server proxy frame - encountered - error"), b.readyState = 2, b.deferred.reject(-1, "server - proxy frame not working")) - }, 1e3) - } - }) - } else QQWB.log.error("can't init solution - \"" + a) + "\",browser doesn't support - postmessage", c.reject("browser not - supported"); - break; - case - this.FLASH_SOLUTION: - QQWB.browser.feature.flash ? (b = this[this.FLASH_SOLUTION], QQWB.everythingReady(function() { - QQWB.log.info("init - flash solution..."); - var - a, c = 1e4, - d = QQWB.flash.load(QQWB._domain.flashproxy, function(c) { - QQWB.log.info("flash - solution initlized - successfully"), b.readyState = 1, window.QQWBFlashTransport = QQWB.flash.getSWFObjectByName(c), a && clearTimeout(a), b.deferred.resolve() - }, QQWB.flash.NO_CACHE); - a = setTimeout(function() { - b.deferred.isResolved() || (b.readyState = 2, b.deferred.reject(-1, "encounter - error while loading proxy swf, need newer flash - player"), QQWB.dom.remove(d)) - }, c) - })) : (QQWB.log.error("can't - init solution \"" + a) + "\",browser doesn't support - flash or flash is disabled", c.reject("browser not - supported")); - break; - case - this.SILVER_LIGHT_SOLUTION: - QQWB.browser.feature.silverlight ? (-2, QQWB.log.error("sorry, - silverlight solution is not - implemented")) : (QQWB.log.error("can't init solution - \"" + a) + "\",browser doesn't support silverlight or - silverlight is disabled", c.reject("browser not - supported")); - break; - default: - QQWB.log.error("can't init - solution \"" + a) + '",not supported', c.reject("solution - " + a + " not supported") - } - return - c.promise() - } -}), QQWB.extend("ping", { - _pingbackURL: "http://btrace.qq.com/collect", - _stupidPingParamsOrder: ["ftime", "sIp", "iQQ", "sBiz", "sOp", "iSta", "iTy", "iFlow"], - _paramSeprator: ";", - _getBasePingParams: function() { - var - a = QQWB.cookie.get("uin", null, "0").match(/\d+/)[0], - b = ""; - return { - sIp: "", - iQQ: a, - sBiz: "open-js", - sOp: "", - iSta: "", - iTy: 1183, - iFlow: b, - iFrom: "", - iPubFrom: "", - sUrl: "", - iUrlType: "", - iPos: "", - sText: "", - iBak1: "", - iBak2: "", - sBak1: "", - sBak2: QQWB.uid() - } - }, - pingWith: function(a, b) { - a = QQWB.extend(QQWB.ping._getBasePingParams(), a, !0), QQWBPingTransport_18035d19 = new - Image(1, 1), QQWBPingTransport_18035d19.src = QQWB.ping._pingbackURL + "?" + QQWB.queryString.encode(a, null, null, b) - }, - pingInit: function() { - function - a() { - var a = 1e6; - return - feature = 0, QQWB.browser.msie ? a += 100 : QQWB.browser.opera ? a += 200 : QQWB.browser.webkit ? a += 300 : QQWB.browser.mozilla ? a += 400 : a += 500, QQWB.browser.feature.postmessage && (feature += 1), QQWB.browser.feature.flash && (feature += 2), QQWB.browser.feature.cookie && (feature += 4), a += feature, a - } + function m() { var a = navigator.appVersion, b = {}, c = "unknown"; return + a.indexOf("Win") != -1 && (c = "windows"), a.indexOf("Mac") != -1 + && (c = "mac"), a.indexOf("X11") != -1 && (c = "unix"), + a.indexOf("Linux") != -1 && (c = "linux"), b[c] = !0, b } var a, b + = navigator.userAgent, c = /(msie) ([\w.]+)/, d = + /(opera)(?:.*version)?[ \/]([\w.]+)/, e = /(webkit)[ + \/]([\w.]+)/, f = /(mozilla)(?:.*? rv:([\w.]+))?/, g = {}, + h = ["Webkit", "Moz", "O", "ms", "khtml"], i = { cookie: function() + { var a = navigator.cookieEnabled; if (a && + QQWB.browser.webkit) { var b = + "COOKIE_TEST_" + QQWB.uid(); + document.cookie = b + "=" + 1 + "; + domain=; path=;", + document.cookie.indexOf(b) + < 0 ? a = !1 : + document.cookie = b + + "=" + "; + expires=" + (new Date(1970, 1, + 1)).toUTCString() + "; + domain=; path=;" } return !a && + QQWB.log.critical("Your + browser + doesn't + support + cookie or + cookie + isn't + enabled"), + a }, flash: function() { if + (typeof + navigator.plugins + != "undefined" && + typeof + navigator.plugins["Shockwave + Flash"] == + "object") { var a + = + navigator.plugins["Shockwave + Flash"].description, + b = typeof + navigator.mimeTypes + != + "undefined" + && + navigator.mimeTypes["application/x-shockwave-flash"] + && + navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin; + return a + && + b + } if (typeof + window.ActiveXObject + != + "undefined") + try { var c = new + ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + if (c) + return + c.getVariable("$version") + } catch (d) {} }, + userdata: function() { + return + QQWB.browser.msie + }, postmessage: function() + { return !!window.postMessage && + (QQWB.browser.msie && + parseInt(QQWB.browser.version, + 10) < 8 ? !1 : !0) + }, canvas: function() { var a = + document.createElement("canvas"); + return !!a.getContext && !! + a.getContext("2d") + }, webgl: function() { return + !!window.WebGLRenderingContext + }, geolocation: function() { return + !!navigator.geolocation }, + websqldatabase: function() + { return + !!window.openDatabase + }, indexeddb: function() { + for (var a = 0, b = + h.length; + a < + b; + a++) + if + (window[h[a].toLowerCase() + + + "IndexedDB"]) + return + !0; + return + !!window.indexedDB + }, websocket: function() { + for (var a = 0, b = + h.length; + a < + b; + a++) + if + (window[h[a].toLowerCase() + + + "WebSocket"]) + return + !0; + return + !!window.WebSocket + }, localstorage: function() + { return + window.localStorage + && + localStorage.getItem + }, sessionstorage: + function() { return + window.sessionStorage + && + sessionStorage.getItem + }, webworker: function() { + return + !!window.Worker + }, applicationcache: + function() { return + !!window.applicationCache + } }; a = j(b), + QQWB.extend("browser", { version: a.version }), + QQWB.browser[a.browser] = !0, k(), QQWB.extend("browser.feature", + g), QQWB.extend("browser.platform", l()), + QQWB.extend("browser.os", m()) }(), QQWB.extend("flash", { + NO_CACHE: 1, load: function(a, b, c) { this.loadedSwfs || + (this.loadedSwfs = []); if + (QQWB.Array.inArray(this.loadedSwfs, a)) { + QQWB.log.warning(a + "is already loaded"); return } + c === this.NO_CACHE && (a += "?" + QQWB.uid()); var d = + "movieContainer_" + QQWB.uid(), e = "movie_" + QQWB.uid(), + f = "onFlashReady_a1f5b4ce", g = window[f]; return window[f] = + function() { b && b(e), window[f] = g, g = null, b && (b = + null), e = null }, + QQWB.dom.appendHidden(["', '', '', + ""].join(" "), { id: d }, !0), + document.getElementById(d) }, getSWFObjectByName: function(a) { + return QQWB.browser.msie ? window[a] : document[a].length ? + document[a][1] : document[a] } }), + QQWB.extend("_solution", { HTML5_SOLUTION: "html5", + FLASH_SOLUTION: "flash", + SILVER_LIGHT_SOLUTION: "silverlight", initSolution: + function(a) { var b, c = + QQWB.deferred.deferred(); !this[a] + && QQWB.Array.inArray([this.HTML5_SOLUTION, + this.FLASH_SOLUTION, + this.SILVER_LIGHT_SOLUTION], a) && + (this[a] = {}, this[a].name = a, + this[a].readyState = 0, this[a].id = + "solution_" + QQWB.uid(), this[a].deferred + = QQWB.deferred.deferred(), + this[a].promise = + this[a].deferred.promise()); if (this[a] + && this[a].readyState !== 0) + this[a].deferred.success(function() { + c.resolve(QQWB.Array.fromArguments(arguments)) + }).fail(function() { + c.reject(QQWB.Array.fromArguments(arguments)) + }); else switch (a) { case + this.HTML5_SOLUTION: if + (QQWB.browser.feature.postmessage) + { b = + this[this.HTML5_SOLUTION]; + var d = + function(a) + { + QQWB._domain.serverproxy.indexOf(a.origin) + !== + 0 + ? + QQWB.log.warning("unexpected + message + arrived + from + " + + + a.origin + + + " + with + data + " + + + a.data) + : + (a.data + === + "success" + ? + (QQWB.log.info("html5 + solution + was + successfully + initialized"), + b.readyState + = + 1, + b.deferred.resolve()) + : + QQWB.log.info("unexpected + solution + signal + " + + + a.data), + window.addEventListener + ? + window.removeEventListener("message", + d, + !1) + : + window.attachEvent + && + window.detachEvent("onmessage", + d), + d + = + null) + }; + window.addEventListener + ? + window.addEventListener("message", + d, + !1) + : + window.attachEvent + && + window.attachEvent("onmessage", + d), + QQWB.everythingReady(function() + { + QQWB.log.info("init + html5 + solution..."), + serverframe + = + QQWB.dom.createHidden("iframe", + { + id: + b.id, + src: + QQWB._domain.serverproxy + }), + QQWB.dom.append(serverframe), + serverframe.onload + = + function(a) + { + setTimeout(function() + { + b.readyState + !== + 1 + && + (QQWB.log.error("html5 + solution + initialition + has + failed, + server + proxy + frame + encountered + error"), + b.readyState + = + 2, + b.deferred.reject(-1, + "server + proxy + frame + not + working")) + }, + 1e3) } }) + } else + QQWB.log.error("can't + init + solution + \"" + + + a) + + + "\",browser + doesn't + support + postmessage", + c.reject("browser + not + supported"); + break; case + this.FLASH_SOLUTION: + QQWB.browser.feature.flash + ? (b = + this[this.FLASH_SOLUTION], + QQWB.everythingReady(function() + { + QQWB.log.info("init + flash + solution..."); + var + a, + c + = + 1e4, + d + = + QQWB.flash.load(QQWB._domain.flashproxy, + function(c) + { + QQWB.log.info("flash + solution + initlized + successfully"), + b.readyState + = + 1, + window.QQWBFlashTransport + = + QQWB.flash.getSWFObjectByName(c), + a + && + clearTimeout(a), + b.deferred.resolve() + }, + QQWB.flash.NO_CACHE); + a + = + setTimeout(function() + { + b.deferred.isResolved() + || + (b.readyState + = + 2, + b.deferred.reject(-1, + "encounter + error + while + loading + proxy + swf, + need + newer + flash + player"), + QQWB.dom.remove(d)) + }, + c) + })) + : (QQWB.log.error("can't + init + solution + \"" + + + a) + + + "\",browser + doesn't + support + flash or + flash is + disabled", + c.reject("browser + not + supported")); + break; case + this.SILVER_LIGHT_SOLUTION: + QQWB.browser.feature.silverlight + ? (-2, + QQWB.log.error("sorry, + silverlight + solution + is + not + implemented")) + : + (QQWB.log.error("can't + init + solution + \"" + + + a) + + "\",browser + doesn't support + silverlight or + silverlight is + disabled", + c.reject("browser + not + supported")); + break; default: + QQWB.log.error("can't + init + solution + \"" + + + a) + + '",not + supported', + c.reject("solution + " + + + a + + + " + not + supported") + } return c.promise() } }), + QQWB.extend("ping", { _pingbackURL: + "http://btrace.qq.com/collect", + _stupidPingParamsOrder: ["ftime", "sIp", + "iQQ", "sBiz", "sOp", "iSta", "iTy", + "iFlow"], _paramSeprator: ";", + _getBasePingParams: function() { var a = + QQWB.cookie.get("uin", null, + "0").match(/\d+/)[0], b = + ""; return { sIp: "", iQQ: + a, sBiz: + "open-js", sOp: "", iSta: "", iTy: + 1183, iFlow: b, iFrom: "", + iPubFrom: "", sUrl: "", iUrlType: "", + iPos: "", sText: "", iBak1: "", iBak2: "", + sBak1: "", sBak2: QQWB.uid() } }, + pingWith: function(a, b) { a = + QQWB.extend(QQWB.ping._getBasePingParams(), + a, !0), + QQWBPingTransport_18035d19 = new + Image(1, 1), + QQWBPingTransport_18035d19.src = + QQWB.ping._pingbackURL + "?" + + QQWB.queryString.encode(a, null, + null, b) }, + pingInit: function() { function a() { var + a = 1e6; return feature = 0, + QQWB.browser.msie ? a += 100 : + QQWB.browser.opera ? a += + 200 : QQWB.browser.webkit + ? a += 300 : + QQWB.browser.mozilla ? a + += 400 : a += 500, + QQWB.browser.feature.postmessage + && (feature += 1), + QQWB.browser.feature.flash && + (feature += 2), + QQWB.browser.feature.cookie && + (feature += 4), a += + feature, a } - function - b() { - var a = 1e6; - return - QQWB.browser.platform.mobile ? a += 100 : a += 200, QQWB.browser.os.windows ? a += 10 : QQWB.browser.os.windows ? a += 20 : QQWB.browser.os.mac ? a += 30 : QQWB.browser.os.unix ? a += 40 : QQWB.browser.os.linux ? a += 50 : a += 60, a += parseInt(QQWB.appkey.version, 10), a - } - return - QQWB.ping.pingWith({ - sOp: "init", - iFrom: QQWB.version.replace(/\./g, ""), - iPubFrom: b(), - sUrl: [document.title, document.location.href].join(QQWB.ping._paramSeprator), - sText: QQWB.appkey.value, - iBak1: a() - }, QQWB.ping._stupidPingParamsOrder.concat("iFrom", "iPubFrom", "sUrl", "iUrlType", "iPos", "sText", "iBak1", "iBak2", "sBak1", "sBak2")) - }, - _pingAuthorize: function(a) { - return - QQWB.ping.pingWith({ - sOp: "login", - iSta: a ? 1 : 0, - iFrom: QQWB.version.replace(/\./g, ""), - sUrl: document.location.href, - sText: QQWB.appkey.value - }, QQWB.ping._stupidPingParamsOrder.concat("iFrom", "iPubFrom", "sUrl", "iUrlType", "iPos", "sText", "iBak1", "iBak2", "sBak1", "sBak2")) - }, - pingLoggedIn: function() { - return - QQWB.ping._pingAuthorize(!0) - }, - pingLoggedInFailed: function() { - return - QQWB.ping._pingAuthorize(!1) - }, - pingAPI: function(a, b, c, d, e, f, g, h) { - var - i = 1e6; - a = a || "", b = b || "", c = c || "", d = d || "", e = e || "-2", f = f || "", g = g || "-1", h = h || ""; - switch (h) { - case - QQWB._solution.HTML5_SOLUTION: - case "postmessage": - i += 100; - break; - case - QQWB._solution.FLASH_SOLUTION: - i += 200; - break; - case - QQWB._solution.SILVER_LIGHT_SOLUTION: - i += 400 - } - d = d.toUpperCase(); - switch (d) { - case "GET": - i += 10; - break; - case "POST": - i += 20 - } - return - QQWB.ping.pingWith({ - sOp: "api", - iSta: e, - iFrom: QQWB.version.replace(/\./g, ""), - iPubFrom: i, - sUrl: document.location.href, - sText: QQWB.appkey.value, - iBak1: g, - sBak1: [a, b].join(QQWB.ping._paramSeprator) - }, QQWB.ping._stupidPingParamsOrder.concat("iFrom", "iPubFrom", "sUrl", "iUrlType", "iPos", "sText", "iBak1", "iBak2", "sBak1", "sBak2")) - } -}), QQWB.extend("door", { - doors: 0, - door: function(a, b) { - var - c = 0; - return this.doors++, { - lock: function() { - return - c++, a && a.call(QQWB), this - }, - unlock: function() { - return - c--, c = Math.max(0, c), b && b.call(QQWB), this - }, - isOpen: function() { - return - c === 0 - } - } - }, - count: function() { - return - this.doors - } -}), QQWB.extend("", { - init: function(a) { - if (this._inited === !0) return - this.log.warning("already - initialized"), this; - this.log.info("init signal has - arrived"), a = QQWB.extend({ - callbackurl: document.location.href.replace(location.search, "").replace(location.hash, ""), - pingback: !0, - synclogin: !0 - }, a, !0), QQWB.pingback = a.pingback; - var - b = this._token.getAccessToken(), - c = this._token.getAccessToken(!0), - d = this._token.getRefreshToken(), - e = d && !b && c, - f = !d && !b && a.synclogin; - return - a.appkey && (this.log.info("client id is - " + a.appkey), this.assign("appkey.value", "APPKEY", a.appkey)), this.log.info("client - proxy uri is - " + a.callbackurl), this.assign("_domain", "CLIENTPROXY_URI", a.callbackurl), (e || f) && QQWB._tokenReadyDoor.lock(), e ? (this.log.info("exchanging - refresh token to access - token..."), QQWB._token.exchangeForToken(function(b) { - a.synclogin && b.error && (QQWB.log.warning("exchange - token has failed, trying to retrieve a new - access_token..."), this._tokenReadyDoor.lock(), QQWB._token.getNewAccessToken(function() { - this._tokenReadyDoor.unlock() - })), this._tokenReadyDoor.unlock() - })) : f && (this.log.info("retrieving - new access - token..."), QQWB._token.getNewAccessToken(function() { - QQWB._tokenReadyDoor.unlock() - })), /^[a-z\d][a-z\d]{30}[a-z\d]$/i.test(QQWB.appkey.value) ? this.assign("appkey", "APPKEY_VERSION", 1) : /^[1-9][0-9]{7}[0-9]$/.test(QQWB.appkey.value) ? this.assign("appkey", "APPKEY_VERSION", 2) : this.assign("appkey", "APPKEY_VERSION", 3), this._inited = !0, QQWB._tokenReadyDoor.unlock(), this.pingback && this.ping && this.ping.pingInit(), this.pingback && this.ping && QQWB.bind(QQWB.events.USER_LOGGEDIN_EVENT, this.ping.pingLoggedIn), this.pingback && this.ping && QQWB.bind(QQWB.events.USER_LOGIN_FAILED_EVENT, this.ping.pingLoggedInFailed), this - }, - _tokenReadyDoor: QQWB.door.door(function() { - this.log.info("tokenReady - is locked") - }, function() { - this.log.info("tokenReady is - unlocked"), this._tokenReadyDoor.isOpen() && this.log.info("token - is - ready") && this.trigger(this.events.TOKEN_READY_EVENT) - }), - tokenReady: function(a) { - return - this._tokenReadyDoor.isOpen() ? a && a() : this.bind(this.events.TOKEN_READY_EVENT, a), this - }, - _isDocumentReady: !1, - _tryToTriggerDocumentReadyEvents: function() { - if (this._isDocumentReady) return; - try { - var - a = document.getElementsByTagName("body")[0].appendChild(document.createElement("span")); - a.parentNode.removeChild(a) - } catch (b) { - return - } - this._isDocumentReady = !0, this.log.info("document - is - ready"), this._everythingReadyDoor.unlock(), this.trigger(this.events.DOCUMENT_READY_EVENT) - }, - documentReady: function(a) { - return - this._isDocumentReady ? a && a() : (this.bind(this.events.DOCUMENT_READY_EVENT, a), this._tryToTriggerDocumentReadyEvents()), this - }, - _everythingReadyDoor: QQWB.door.door(function() { - this.log.info("everythingReady - is - locked") - }, function() { - this.log.info("everythingReady - is - unlocked"), this._everythingReadyDoor.isOpen() && this.log.info("everything - is - ready") && this.trigger(this.events.EVERYTHING_READY_EVENT) - }), - everythingReady: function(a) { - return - this._everythingReadyDoor.isOpen() ? a && a() : this.bind(this.events.EVERYTHING_READY_EVENT, a), this - } -}), T.alias("ready", "everythingReady"), function() { - function - c() { - QQWB.browser.feature.postmessage ? QQWB._solution.initSolution(QQWB._solution.HTML5_SOLUTION) : QQWB.browser.feature.flash ? QQWB._solution.initSolution(QQWB._solution.FLASH_SOLUTION) : QQWB.log.error("init - solution is called, but no solution for the - browser") - } - var - a = window != window.parent, - b = QQWB._domain.serverproxy === window.location.href; - QQWB._tokenReadyDoor.lock(), QQWB._everythingReadyDoor.lock(), QQWB._everythingReadyDoor.lock(), QQWB.bind(QQWB.events.TOKEN_READY_EVENT, function() { - QQWB._everythingReadyDoor.unlock() - }); - if (a && b && QQWB.browser.feature.postmessage) { - QQWB.log.info("library - booting at server proxy mode"); - var - d = "*", - e = window.parent; - e.postMessage("success", d); - var - f = function(a) { - var - b = QQWB.JSON.fromString(a.data), - c = b.id, - f = b.data, - g = f[0]; - f[2].toLowerCase() == "xml" && (f[2] = "xmltext"), g ? QQWB.io._apiAjax.apply(this, f).complete(function() { - e.postMessage(QQWB.JSON.stringify({ - id: c, - data: QQWB.Array.fromArguments(arguments) - }), d) - }) : (e.postMessage(QQWB.JSON.stringify({ - id: c, - data: [-1, "interface - can not be empty"] - }), d), QQWB.log.error("interface is - empty")) - }; - window.addEventListener ? window.addEventListener("message", f, !1) : window.attachEvent && window.attachEvent("onmessage", f); - return - } - QQWB.log.info("library - booting at normal - mode"), c() -}(), QQWB._isDocumentReady || (window.addEventListener && document.addEventListener("DOMContentLoaded", function() { - QQWB._tryToTriggerDocumentReadyEvents() -}, !1), window.attachEvent && (document.attachEvent("onreadystatechange", function() { - /complete/.test(document.readyState) && (document.detachEvent("onreadystatechange", arguments.callee), QQWB._tryToTriggerDocumentReadyEvents()) -}), window === window.top && -function() { - if (QQWB._isDocumentReady) return; - try { - document.documentElement.doScroll("left") - } catch (a) { - setTimeout(arguments.callee, 0); - return - } - QQWB._tryToTriggerDocumentReadyEvents() -}()), QQWB.browser.webkit && -function() { - if (QQWB._isDocumentReady) return; - if (!/load|complete/.test(document.readyState)) { - setTimeout(arguments.callee, 0); - return - } - QQWB._tryToTriggerDocumentReadyEvents() -}()), function() { - function - b() { - var - c = !! QQWB._token.getAccessToken(), - d; - a && QQWB.log.info("cancel - the **OLD** maintain token - schedule"), a && clearTimeout(a), c ? (d = parseInt(QQWB.cookie.get(QQWB._cookie.names.accessToken).split("|")[1], 10) - QQWB.time.now() - 15e3, QQWB.log.info("scheduled - to exchange token after - " + d + "ms"), a = setTimeout(function() { - QQWB._token.exchangeForToken(function() { - b() - }) - }, d)) : (a && QQWB.log.info("cancel - the exchange token schedule"), a && clearTimeout(a)) - } - var - a; - QQWB.bind(QQWB.events.TOKEN_READY_EVENT, b), QQWB.bind(QQWB.events.USER_LOGGEDIN_EVENT, b), QQWB.bind(QQWB.events.USER_LOGIN_FAILED_EVENT, b), QQWB.bind(QQWB.events.USER_LOGGEDOUT_EVENT, b) -}(); -if (QQWB.browser.feature.localstorage) QQWB.extend("localStorage", { - set: function(a, b, c) { - a = "k" + a; - var - d = QQWB.time.secondsNow() + (c || 7) * 24 * 3600, - e = { - value: b, - expire: d - }; - return - localStorage[a] = JSON.stringify(e), localStorage[a] - }, - get: function(a, b) { - a = "k" + a; - var - c = localStorage[a]; - return - c && (c = JSON.parse(c)) && c.value && QQWB.time.secondsNow() < c.expire ? c.value : b - }, - del: function(a) { - return - a = "k" + a, localStorage.removeItem(a), !localStorage[a] - } -}); -else if (QQWB.browser.feature.userdata) { - var - userData, storeName = "QQWBLocalStore"; - QQWB.documentReady(function() { - userData = document.createElement("input"), userData.type = "hidden", userData.style.display = "none", userData.addBehavior("#default#userData"), userData.expires = (new - Date(QQWB.time.now() + 31536e7)).toUTCString(), document.body.appendChild(userData) - }), QQWB.extend("localStorage", { - set: function(a, b, c) { - a = "k" + a; - var - d = QQWB.time.secondsNow() + (c || 7) * 24 * 3600, - e = { - value: b, - expire: d - }; - return !userData && QQWB.log.error("store - can't set value for key " + a + ", userData is - unavaiable, please try - later"), userData && userData.load(storeName), userData && userData.setAttribute(a, JSON.stringify(e)), userData && userData.save(storeName), userData.getAttribute(a) - }, - get: function(a, b) { - a = "k" + a, !userData && QQWB.log.error("store - can't get value for key " + a + ", userData is - unavaiable, please try - later"), userData && userData.load(storeName); - var - c = userData && userData.getAttribute(a); - return - c && (c = JSON.parse(c)) && c.value && QQWB.time.secondsNow() < c.expire ? c.value : b - }, - del: function(a) { - return - a = "k" + a, !userData && QQWB.log.error("store can't - delete value for key " + a + ", userData is unavaiable, - please try - later"), userData && userData.load(storeName), userData && userData.removeAttribute(a), userData && userData.save(storeName), !userData.getAttribute(a) - } - }) -} else QQWB.log.warning("T.localStorage object isn't - initialized, do check before - use"); -QQWB.localStorage && (QQWB._alias.call(QQWB.localStorage, "save", QQWB.localStorage.set), QQWB._alias.call(QQWB.localStorage, "remove", QQWB.localStorage.del)), QQWB.extend("auth.authWindow", { - _width: QQWB._const.AUTH_WINDOW_WIDTH, - _height: QQWB._const.AUTH_WINDOW_HEIGHT, - _name: QQWB._const.AUTH_WINDOW_NAME, - _url: QQWB._domain.auth, - _attribs: "toolbar=no,menubar=no,scrollbars=yes,resizable=yes,location=yes,status=no", - _authorizing: !1, - _window: null, - show: function() { - var - a, b, c, d; - return - this._authorizing ? this.focus() : (a = (window.screenX || window.screenLeft) + ((window.outerWidth || document.documentElement.clientWidth) - this._width) / 2, b = (window.screenY || window.screenTop) + ((window.outerHeight || document.documentElement.clientHeight) - this._height) / 2, c = QQWB.queryString.encode({ - response_type: "token", - client_id: QQWB.appkey.value, - redirect_uri: QQWB._domain.clientproxy, - scope: "all", - status: 0 - }), d = ["width=" + this._width, "height=" + this._height, "left=" + a, "top=" + b], this._window = window.open(this._url + "?" + c, this._name, d + "," + this._attribs), this._authorizing = !0, function() { - var - a = QQWB.auth.authWindow, - b; - if (a._window.closed) { - QQWB._token.resolveResponse("error=access_denied"), a.close(); - return - } - try { - b = a._window.location.hash - } catch (c) { - b = null - } - if (b) { - b = QQWB.queryString.decode(b.split("#").pop()), parseInt(b.status, 10) == 200 && QQWB._token.resolveResponse(b), a.close(); - return - } - setTimeout(arguments.callee, 0) - }()), this - }, - close: function() { - return - this._authorizing = !1, this._window ? this._window.closed ? this : (this._window.close(), this) : this - }, - focus: function() { - return - this._window && this._window.focus(), this - } -}), QQWB.extend("auth", { - login: function(a, b) { - QQWB._inited || QQWB.log.critical("Library - not initialized, call T.init() to initialize"); - var - c = QQWB.loginStatus(), - d; - if (c && a) { - a(c); - return - } - if (a || b) d = function(c) { - c.access_token && a ? a(c) : c.error && b ? b(c) : QQWB.log.warning("confused - result of - T.login"), QQWB.unbind(QQWB.events.USER_LOGGEDIN_EVENT, d), QQWB.unbind(QQWB.events.USER_LOGIN_FAILED_EVENT, d), d = null - }, QQWB.bind(QQWB.events.USER_LOGGEDIN_EVENT, d), QQWB.bind(QQWB.events.USER_LOGIN_FAILED_EVENT, d); - return - QQWB.auth.authWindow.show().focus(), QQWB - }, - logout: function(a) { - var - b = QQWB.loginStatus(); - return QQWB.log.info("logging - out - user..."), b ? (QQWB._token.clearAccessToken(), QQWB._token.clearRefreshToken(), QQWB.log.info(b.name + " - has logged out - successfully")) : QQWB.log.warning("oops, user not - logged - in"), a && a.call(QQWB), QQWB.trigger(QQWB.events.USER_LOGGEDOUT_EVENT), QQWB - }, - loginStatus: function(a) { - var - b, c = QQWB._token.getAccessToken(), - d = QQWB._token.getTokenUser(); - return - c && (b = { - access_token: c, - name: d.name, - nick: d.nick - }), a && a.call(QQWB, b), b - } -}), QQWB._alias("login", QQWB.auth.login), QQWB._alias("logout", QQWB.auth.logout), QQWB._alias("loginStatus", QQWB.auth.loginStatus), QQWB.provide("api", function(a, b, c, d, e) { - a = this._apiProvider.compat(a), b = b || {}, c = (c || "json").toLowerCase(), d = d || "GET"; - var - f, g, h = c, - i = { - json: !0, - xml: !0 - }, - j = QQWB.deferred.deferred(); - h in i || (h = "json"), b.oauth_consumer_key = QQWB.appkey.value, b.oauth_token = QQWB._token.getAccessToken(), b.oauth_version = "2.0", b.format = h, f = j.promise(), e && QQWB.Array.inArray([QQWB._solution.HTML5_SOLUTION, QQWB._solution.FLASH_SOLUTION, QQWB._solution.SILVER_LIGHT_SOLUTION], e) ? (QQWB.log.warning("forced - to use solution - " + e), QQWB._solution[e] || (QQWB.log.warning("forced - to use solution " + e + ", this solution is not inited, - initialzing..."), QQWB._solution.initSolution[e]), g = QQWB._solution[e]) : g = QQWB.browser.feature.postmessage && QQWB._solution[QQWB._solution.HTML5_SOLUTION] || QQWB.browser.feature.flash && QQWB._solution[QQWB._solution.FLASH_SOLUTION] || QQWB.browser.feature.silverlight && QQWB._solution[QQWB._solution.SILVER_LIGHT_SOLUTION]; - if (!g || g.readyState === 2) return - QQWB.log.critical("solution - error"), j.reject(-1, "solution - error", 0), f; - if (g.readyState === 0) return - QQWB.log.warning("solution is not ready, your api - call request has been cached, will invoke - immediately when solution is - ready"), g.promise.done(function() { - QQWB.log.info('invoking - cached api call "QQWB.api( ' + [a, b, c, d].join(",") + ' - )"...'), QQWB.api(a, b, c, d).success(function() { - j.resolveWith(j, QQWB.Array.fromArguments(arguments)) - }).error(function() { - j.rejectWith(j, QQWB.Array.fromArguments(arguments)) - }) - }).fail(function() { - QQWB.log.error("can't - invoking cached api call \"QQWB.api( - " + [a, b, c, d].join(",") + ' - )"'), j.rejectWith(j, QQWB.Array.fromArguments(arguments)) - }), f; - QQWB.api.id || QQWB.extend(QQWB.api, { - id: 0, - total: function() { - return - QQWB.api.id - } - }), QQWB.api.id++, QQWB.log.info("[" + QQWB.api.id + '] - requesting data "' + QQWB._apiProvider.describe(a) + '" - from - server...'); - if (g === QQWB._solution[QQWB._solution.HTML5_SOLUTION]) { - var - k = document.getElementById(g.id); - if (!k) QQWB.log.critical("server - proxy not found"), j.reject(-1, "server proxy not - found", 0); - else if (k.src !== QQWB._domain.serverproxy) QQWB.log.critical("server - proxy is not valid, src attribute has unexpected - value"), j.reject(-1, "server proxy not - valid", 0); - else { - QQWB.api._deferredCollection || QQWB.extend(QQWB.api, { - _deferredCollection: {}, - deferredAt: function(a) { - if (this._deferredCollection[a]) return - this._deferredCollection[a]; - QQWB.log.warning("get - deferred object has failed, that object does not - exist at index - " + a) - }, - uncollect: function(a) { - this._deferredCollection[a] ? delete - this._deferredCollection[a] : QQWB.log.warning("uncollect - deferred object has failed, that object does not - exist at index - " + a) - }, - collect: function(a) { - if (a.promise) return - this._deferredCollection[this.id] = a, this.id; - QQWB.log.warning("collect - a non-deferred object is - illegal") - } - }), QQWB.api.messageHandler || (QQWB.provide("api.messageHandler", function(a) { - if (QQWB._domain.serverproxy.indexOf(a.origin) !== 0) QQWB.log.warning("unexpected - message arrived from " + a.origin + " with data - " + a.data); - else { - var - b = QQWB.JSON.fromString(a.data), - c = b.id, - d = QQWB.api.deferredAt(c), - e = b.data; - d ? (e[0] !== 200 ? d.reject.apply(d, e) : (e[5] == "xmltext" && (e[3] = QQWB.XML.fromString(e[3])), d.resolve(e[3], e[2], e[4])), QQWB.api.uncollect(c)) : QQWB.log.warning("related - deferred object not found, it shouldn't - happen") - } - }), window.addEventListener ? window.addEventListener("message", QQWB.api.messageHandler, !1) : window.attachEvent && window.attachEvent("onmessage", QQWB.api.messageHandler)); - try { - var - l = QQWB.api.collect(j); - setTimeout(function() { - k.contentWindow.postMessage(QQWB.JSON.stringify({ - id: l, - data: [a, b, c, d] - }), QQWB._domain.serverproxy) - }, 0) - } catch (m) { - QQWB.log.critical("post - message to server proxy has failed, - " + m), j.reject(-1, m, 0) - } - } - } else g === QQWB._solution[QQWB._solution.FLASH_SOLUTION] && QQWB.io._apiFlashAjax(a, b, c, d).complete(function() { - var - a = QQWB.Array.fromArguments(arguments); - a[0] !== 200 ? j.reject.apply(j, a) : j.resolve(a[3], a[2], a[4]) - }); - return + function b() { var a = 1e6; return QQWB.browser.platform.mobile ? a += + 100 : a += 200, QQWB.browser.os.windows ? a += 10 : + QQWB.browser.os.windows ? a += 20 : QQWB.browser.os.mac + ? a += 30 : QQWB.browser.os.unix ? a += 40 : + QQWB.browser.os.linux ? a += 50 : a += 60, a += + parseInt(QQWB.appkey.version, 10), a } return + QQWB.ping.pingWith({ sOp: "init", iFrom: + QQWB.version.replace(/\./g, ""), iPubFrom: b(), + sUrl: [document.title, + document.location.href].join(QQWB.ping._paramSeprator), + sText: QQWB.appkey.value, iBak1: a() }, + QQWB.ping._stupidPingParamsOrder.concat("iFrom", + "iPubFrom", "sUrl", "iUrlType", "iPos", + "sText", "iBak1", "iBak2", "sBak1", "sBak2")) + }, _pingAuthorize: function(a) { return + QQWB.ping.pingWith({ sOp: "login", + iSta: a ? 1 : 0, iFrom: + QQWB.version.replace(/\./g, + ""), sUrl: + document.location.href, + sText: QQWB.appkey.value }, + QQWB.ping._stupidPingParamsOrder.concat("iFrom", + "iPubFrom", "sUrl", + "iUrlType", "iPos", + "sText", "iBak1", "iBak2", + "sBak1", "sBak2")) }, + pingLoggedIn: function() { + return + QQWB.ping._pingAuthorize(!0) + }, pingLoggedInFailed: + function() { return + QQWB.ping._pingAuthorize(!1) + }, pingAPI: function(a, b, c, d, + e, f, g, h) { var + i = 1e6; a + = + a + || + "", + b = b || + "", + c = c || + "", + d = d || + "", + e = e || + "-2", + f = f || + "", + g = g || + "-1", + h = h || + ""; + switch (h) + { case + QQWB._solution.HTML5_SOLUTION: + case + "postmessage": + i + += + 100; + break; + case + QQWB._solution.FLASH_SOLUTION: + i + += + 200; + break; + case + QQWB._solution.SILVER_LIGHT_SOLUTION: + i + += + 400 + } d = + d.toUpperCase(); + switch (d) + { case + "GET": + i + += + 10; + break; + case + "POST": + i + += + 20 + } return + QQWB.ping.pingWith({ + sOp: + "api", + iSta: + e, + iFrom: + QQWB.version.replace(/\./g, + ""), + iPubFrom: + i, + sUrl: + document.location.href, + sText: + QQWB.appkey.value, + iBak1: + g, + sBak1: + [a, + b].join(QQWB.ping._paramSeprator) + }, + QQWB.ping._stupidPingParamsOrder.concat("iFrom", + "iPubFrom", + "sUrl", + "iUrlType", + "iPos", + "sText", + "iBak1", + "iBak2", + "sBak1", + "sBak2")) + } }), + QQWB.extend("door", + { + doors: + 0, door: + function(a, + b) + { var c = + 0; + return + this.doors++, + { lock: function() + { return + c++, + a && a.call(QQWB), + this }, unlock: + function() + { return c--, c = + Math.max(0, + c), + b && + b.call(QQWB), + this }, + isOpen: function() + { return c === 0 } + } }, count: + function() { + return + this.doors + } }), + QQWB.extend("", { + init: + function(a) + { if (this._inited + === !0) + return + this.log.warning("already + initialized"), + this; + this.log.info("init + signal has + arrived"), + a = + QQWB.extend({ + callbackurl: + document.location.href.replace(location.search, + "").replace(location.hash, + ""), + pingback: + !0, + synclogin: + !0 + }, a, !0), + QQWB.pingback = + a.pingback; + var b = + this._token.getAccessToken(), + c = + this._token.getAccessToken(!0), + d = + this._token.getRefreshToken(), + e = d && + !b + && + c, + f = !d && + !b + && + a.synclogin; + return a.appkey && + (this.log.info("client + id + is + " + + + a.appkey), + this.assign("appkey.value", + "APPKEY", + a.appkey)), + this.log.info("client + proxy + uri + is + " + + + a.callbackurl), + this.assign("_domain", + "CLIENTPROXY_URI", + a.callbackurl), + (e || f) + && + QQWB._tokenReadyDoor.lock(), + e ? + (this.log.info("exchanging + refresh + token + to + access + token..."), + QQWB._token.exchangeForToken(function(b) + { + a.synclogin + && + b.error + && + (QQWB.log.warning("exchange + token + has + failed, + trying + to + retrieve + a + new + access_token..."), + this._tokenReadyDoor.lock(), + QQWB._token.getNewAccessToken(function() + { + this._tokenReadyDoor.unlock() + })), + this._tokenReadyDoor.unlock() + })) + : f && + (this.log.info("retrieving + new + access + token..."), + QQWB._token.getNewAccessToken(function() + { + QQWB._tokenReadyDoor.unlock() + })), + /^[a-z\d][a-z\d]{30}[a-z\d]$/i.test(QQWB.appkey.value) + ? + this.assign("appkey", + "APPKEY_VERSION", + 1) + : + /^[1-9][0-9]{7}[0-9]$/.test(QQWB.appkey.value) + ? + this.assign("appkey", + "APPKEY_VERSION", + 2) + : + this.assign("appkey", + "APPKEY_VERSION", + 3), + this._inited + = + !0, + QQWB._tokenReadyDoor.unlock(), + this.pingback + && + this.ping + && + this.ping.pingInit(), + this.pingback + && + this.ping + && + QQWB.bind(QQWB.events.USER_LOGGEDIN_EVENT, + this.ping.pingLoggedIn), + this.pingback + && + this.ping + && + QQWB.bind(QQWB.events.USER_LOGIN_FAILED_EVENT, + this.ping.pingLoggedInFailed), + this }, + _tokenReadyDoor: + QQWB.door.door(function() + { + this.log.info("tokenReady + is + locked") + }, + function() + { + this.log.info("tokenReady + is + unlocked"), + this._tokenReadyDoor.isOpen() + && + this.log.info("token + is + ready") + && + this.trigger(this.events.TOKEN_READY_EVENT) + }), + tokenReady: + function(a) + { return + this._tokenReadyDoor.isOpen() + ? + a + && + a() + : + this.bind(this.events.TOKEN_READY_EVENT, + a), + this + }, + _isDocumentReady: + !1, + _tryToTriggerDocumentReadyEvents: + function() + { if + (this._isDocumentReady) + return; + try + { + var + a + = + document.getElementsByTagName("body")[0].appendChild(document.createElement("span")); + a.parentNode.removeChild(a) + } + catch + (b) + { + return + } + this._isDocumentReady + = + !0, + this.log.info("document + is + ready"), + this._everythingReadyDoor.unlock(), + this.trigger(this.events.DOCUMENT_READY_EVENT) + }, + documentReady: + function(a) + { return + this._isDocumentReady + ? + a + && + a() + : + (this.bind(this.events.DOCUMENT_READY_EVENT, + a), + this._tryToTriggerDocumentReadyEvents()), + this + }, + _everythingReadyDoor: + QQWB.door.door(function() + { + this.log.info("everythingReady + is + locked") + }, + function() + { + this.log.info("everythingReady + is + unlocked"), + this._everythingReadyDoor.isOpen() + && + this.log.info("everything + is + ready") + && + this.trigger(this.events.EVERYTHING_READY_EVENT) + }), + everythingReady: + function(a) + { return + this._everythingReadyDoor.isOpen() + ? + a + && + a() + : + this.bind(this.events.EVERYTHING_READY_EVENT, + a), + this + } }), + T.alias("ready", + "everythingReady"), + function() +{ function c() { QQWB.browser.feature.postmessage ? + QQWB._solution.initSolution(QQWB._solution.HTML5_SOLUTION) : + QQWB.browser.feature.flash ? + QQWB._solution.initSolution(QQWB._solution.FLASH_SOLUTION) + : QQWB.log.error("init solution is called, but no + solution for the browser") } var a = + window != window.parent, b = QQWB._domain.serverproxy + === window.location.href; QQWB._tokenReadyDoor.lock(), + QQWB._everythingReadyDoor.lock(), + QQWB._everythingReadyDoor.lock(), + QQWB.bind(QQWB.events.TOKEN_READY_EVENT, function() { + QQWB._everythingReadyDoor.unlock() }); if (a && b && + QQWB.browser.feature.postmessage) { + QQWB.log.info("library booting at server proxy + mode"); var d = "*", e = + window.parent; e.postMessage("success", + d); var f = function(a) + { var b = QQWB.JSON.fromString(a.data), + c = b.id, f = b.data, g = f[0]; + f[2].toLowerCase() == "xml" && + (f[2] = "xmltext"), g ? + QQWB.io._apiAjax.apply(this, + f).complete(function() + { + e.postMessage(QQWB.JSON.stringify({ + id: + c, + data: + QQWB.Array.fromArguments(arguments) + }), + d) + }) + : + (e.postMessage(QQWB.JSON.stringify({ + id: c, data: + [-1, "interface + can not be + empty"] }), d), + QQWB.log.error("interface + is empty")) }; + window.addEventListener ? + window.addEventListener("message", + f, !1) + : window.attachEvent && + window.attachEvent("onmessage", + f); + return } QQWB.log.info("library + booting at + normal mode"), + c() }(), + QQWB._isDocumentReady || + (window.addEventListener + && + document.addEventListener("DOMContentLoaded", + function() { + QQWB._tryToTriggerDocumentReadyEvents() + }, !1), + window.attachEvent && + (document.attachEvent("onreadystatechange", + function() + { + /complete/.test(document.readyState) + && + (document.detachEvent("onreadystatechange", + arguments.callee), + QQWB._tryToTriggerDocumentReadyEvents()) + }), + window === window.top + && function() { if + (QQWB._isDocumentReady) + return; try { + document.documentElement.doScroll("left") + } catch (a) { + setTimeout(arguments.callee, + 0); + return + } + QQWB._tryToTriggerDocumentReadyEvents() + }()), + QQWB.browser.webkit && + function() { if + (QQWB._isDocumentReady) + return; + if + (!/load|complete/.test(document.readyState)) + { + setTimeout(arguments.callee, + 0); + return + } + QQWB._tryToTriggerDocumentReadyEvents() + }()), function() { + function b() { + var c = + !! + QQWB._token.getAccessToken(), + d; a && + QQWB.log.info("cancel + the + **OLD** + maintain + token + schedule"), + a && + clearTimeout(a), + c ? (d + = + parseInt(QQWB.cookie.get(QQWB._cookie.names.accessToken).split("|")[1], + 10) + - + QQWB.time.now() + - + 15e3, + QQWB.log.info("scheduled + to + exchange + token + after + " + + + d + + + "ms"), + a + = + setTimeout(function() + { + QQWB._token.exchangeForToken(function() + { + b() + }) + }, + d)) + : + (a + && + QQWB.log.info("cancel + the + exchange + token + schedule"), + a + && + clearTimeout(a)) + } var a; + QQWB.bind(QQWB.events.TOKEN_READY_EVENT, + b), + QQWB.bind(QQWB.events.USER_LOGGEDIN_EVENT, + b), + QQWB.bind(QQWB.events.USER_LOGIN_FAILED_EVENT, + b), + QQWB.bind(QQWB.events.USER_LOGGEDOUT_EVENT, + b) + }(); if +(QQWB.browser.feature.localstorage) QQWB.extend("localStorage", { set: + function(a, b, c) { a = "k" + a; var d = QQWB.time.secondsNow() + (c || + 7) * 24 * 3600, e = { value: b, expire: d }; return + localStorage[a] = JSON.stringify(e), localStorage[a] }, get: + function(a, b) { a = "k" + a; var c = localStorage[a]; return c && (c = + JSON.parse(c)) && c.value && QQWB.time.secondsNow() < c.expire + ? c.value : b }, del: function(a) { return a = "k" + a, + localStorage.removeItem(a), !localStorage[a] } }); else +if (QQWB.browser.feature.userdata) { var userData, storeName = + "QQWBLocalStore"; QQWB.documentReady(function() { userData = + document.createElement("input"), userData.type = "hidden", + userData.style.display = "none", + userData.addBehavior("#default#userData"), userData.expires = + (new Date(QQWB.time.now() + 31536e7)).toUTCString(), + document.body.appendChild(userData) }), + QQWB.extend("localStorage", { set: function(a, b, c) { a = "k" + + a; var d = QQWB.time.secondsNow() + (c || 7) * 24 * + 3600, e = { value: b, expire: d }; return !userData && + QQWB.log.error("store can't set value for key " + a + + ", userData is unavaiable, please try later"), + userData && userData.load(storeName), userData && + userData.setAttribute(a, JSON.stringify(e)), userData + && userData.save(storeName), userData.getAttribute(a) + }, get: function(a, b) { a = "k" + a, !userData && + QQWB.log.error("store can't get value for key " + a + + ", userData is unavaiable, please try later"), + userData && userData.load(storeName); var c = userData + && userData.getAttribute(a); return c && (c = + JSON.parse(c)) && c.value && + QQWB.time.secondsNow() < c.expire ? c.value : b }, del: + function(a) { return a = "k" + a, !userData && + QQWB.log.error("store can't delete value for + key " + a + ", userData is unavaiable, + please try later"), userData && + userData.load(storeName), userData && + userData.removeAttribute(a), userData && + userData.save(storeName), !userData.getAttribute(a) } + }) } else QQWB.log.warning("T.localStorage object isn't + initialized, do check before use"); QQWB.localStorage + && (QQWB._alias.call(QQWB.localStorage, "save", + QQWB.localStorage.set), + QQWB._alias.call(QQWB.localStorage, "remove", + QQWB.localStorage.del)), + QQWB.extend("auth.authWindow", { _width: + QQWB._const.AUTH_WINDOW_WIDTH, _height: + QQWB._const.AUTH_WINDOW_HEIGHT, _name: + QQWB._const.AUTH_WINDOW_NAME, _url: QQWB._domain.auth, + _attribs: + "toolbar=no,menubar=no,scrollbars=yes,resizable=yes,location=yes,status=no", + _authorizing: !1, _window: null, show: function() { var a, b, + c, d; return this._authorizing ? this.focus() : (a = + (window.screenX || window.screenLeft) + + ((window.outerWidth || + document.documentElement.clientWidth) - + this._width) / 2, b = (window.screenY || + window.screenTop) + + ((window.outerHeight || + document.documentElement.clientHeight) - + this._height) / 2, c = + QQWB.queryString.encode({ response_type: + "token", client_id: QQWB.appkey.value, + redirect_uri: QQWB._domain.clientproxy, scope: + "all", status: 0 }), d = ["width=" + + this._width, "height=" + this._height, "left=" + + a, "top=" + b], this._window = + window.open(this._url + "?" + c, this._name, d + + "," + this._attribs), + this._authorizing = !0, function() { var a = + QQWB.auth.authWindow, b; if + (a._window.closed) { + QQWB._token.resolveResponse("error=access_denied"), + a.close(); return } try { b = + a._window.location.hash } catch + (c) { b = null } if (b) { b = + QQWB.queryString.decode(b.split("#").pop()), + parseInt(b.status, 10) + == 200 && + QQWB._token.resolveResponse(b), + a.close(); return } + setTimeout(arguments.callee, 0) }()), this }, close: + function() { return this._authorizing = !1, + this._window ? this._window.closed ? + this : (this._window.close(), + this) : this }, + focus: function() { return this._window + && this._window.focus(), this } + }), QQWB.extend("auth", { login: function(a, b) { QQWB._inited + || QQWB.log.critical("Library not initialized, call + T.init() to initialize"); var c = + QQWB.loginStatus(), d; if (c && a) { a(c); + return } if (a || b) d = function(c) { + c.access_token && a ? a(c) : + c.error && b ? b(c) : QQWB.log.warning("confused result + of T.login"), + QQWB.unbind(QQWB.events.USER_LOGGEDIN_EVENT, d), + QQWB.unbind(QQWB.events.USER_LOGIN_FAILED_EVENT, d), d = null + }, + QQWB.bind(QQWB.events.USER_LOGGEDIN_EVENT, d), + QQWB.bind(QQWB.events.USER_LOGIN_FAILED_EVENT, d); return + QQWB.auth.authWindow.show().focus(), QQWB }, logout: + function(a) { var b = QQWB.loginStatus(); return + QQWB.log.info("logging out user..."), b ? + (QQWB._token.clearAccessToken(), + QQWB._token.clearRefreshToken(), QQWB.log.info(b.name + + " has logged out successfully")) : + QQWB.log.warning("oops, user not logged in"), a && + a.call(QQWB), + QQWB.trigger(QQWB.events.USER_LOGGEDOUT_EVENT), QQWB }, + loginStatus: function(a) { var b, c = + QQWB._token.getAccessToken(), d = + QQWB._token.getTokenUser(); return c && (b = { + access_token: c, name: d.name, nick: + d.nick }), a && a.call(QQWB, b), b } + }), QQWB._alias("login", QQWB.auth.login), + QQWB._alias("logout", QQWB.auth.logout), + QQWB._alias("loginStatus", QQWB.auth.loginStatus), + QQWB.provide("api", function(a, b, c, d, e) { a = + this._apiProvider.compat(a), b = b || {}, c = (c || + "json").toLowerCase(), d = d || "GET"; var f, + g, h = c, i = { json: !0, xml: !0 }, j = + QQWB.deferred.deferred(); h in i || (h = "json"), + b.oauth_consumer_key = QQWB.appkey.value, b.oauth_token = + QQWB._token.getAccessToken(), b.oauth_version = "2.0", + b.format = h, f = j.promise(), e && + QQWB.Array.inArray([QQWB._solution.HTML5_SOLUTION, + QQWB._solution.FLASH_SOLUTION, + QQWB._solution.SILVER_LIGHT_SOLUTION], e) ? + (QQWB.log.warning("forced to use solution " + e), + QQWB._solution[e] || (QQWB.log.warning("forced to use + solution " + e + ", this solution is + not inited, initialzing..."), + QQWB._solution.initSolution[e]), g = + QQWB._solution[e]) : g = + QQWB.browser.feature.postmessage && + QQWB._solution[QQWB._solution.HTML5_SOLUTION] || + QQWB.browser.feature.flash && + QQWB._solution[QQWB._solution.FLASH_SOLUTION] || + QQWB.browser.feature.silverlight && + QQWB._solution[QQWB._solution.SILVER_LIGHT_SOLUTION]; + if (!g || g.readyState === 2) return + QQWB.log.critical("solution error"), j.reject(-1, + "solution error", 0), f; if + (g.readyState === 0) return + QQWB.log.warning("solution is not ready, your + api call request has been + cached, will invoke immediately + when solution is ready"), + g.promise.done(function() { + QQWB.log.info('invoking cached api call + "QQWB.api( ' + [a, b, c, + d].join(",") + ')"...'), QQWB.api(a, b, + c, d).success(function() { + j.resolveWith(j, + QQWB.Array.fromArguments(arguments)) + }).error(function() { j.rejectWith(j, + QQWB.Array.fromArguments(arguments)) + }) }).fail(function() { + QQWB.log.error("can't invoking + cached api call + \"QQWB.api( " + [a, b, + c, d].join(",") + ')"'), + j.rejectWith(j, + QQWB.Array.fromArguments(arguments)) + }), f; QQWB.api.id || + QQWB.extend(QQWB.api, { id: 0, total: function() { return + QQWB.api.id } }), QQWB.api.id++, QQWB.log.info("[" + + QQWB.api.id + '] requesting data "' + + QQWB._apiProvider.describe(a) + '" from + server...'); if (g === + QQWB._solution[QQWB._solution.HTML5_SOLUTION]) + { var k = document.getElementById(g.id); if + (!k) QQWB.log.critical("server proxy + not found"), + j.reject(-1, "server proxy not found", + 0); else if (k.src !== + QQWB._domain.serverproxy) + QQWB.log.critical("server + proxy + is + not + valid, + src + attribute + has + unexpected + value"), + j.reject(-1, "server + proxy + not + valid", + 0); + else { QQWB.api._deferredCollection || + QQWB.extend(QQWB.api, { + _deferredCollection: + {}, deferredAt: function(a) { + if + (this._deferredCollection[a]) + return + this._deferredCollection[a]; + QQWB.log.warning("get deferred + object has failed, that + object does not exist + at index " + a) }, + uncollect: function(a) + { this._deferredCollection[a] ? + delete + this._deferredCollection[a] + : + QQWB.log.warning("uncollect + deferred object + has failed, + that object + does not exist + at index " + a) + }, collect: function(a) { if + (a.promise) return + this._deferredCollection[this.id] + = a, this.id; + QQWB.log.warning("collect + a + non-deferred + object + is + illegal") + } }), QQWB.api.messageHandler + || + (QQWB.provide("api.messageHandler", + function(a) + { if + (QQWB._domain.serverproxy.indexOf(a.origin) + !== + 0) + QQWB.log.warning("unexpected + message + arrived + from + " + + + a.origin + + + " + with + data + " + + + a.data); + else + { + var + b + = + QQWB.JSON.fromString(a.data), + c + = + b.id, + d + = + QQWB.api.deferredAt(c), + e + = + b.data; + d + ? + (e[0] + !== + 200 + ? + d.reject.apply(d, + e) + : + (e[5] + == + "xmltext" + && + (e[3] + = + QQWB.XML.fromString(e[3])), + d.resolve(e[3], + e[2], + e[4])), + QQWB.api.uncollect(c)) + : + QQWB.log.warning("related + deferred + object + not + found, + it + shouldn't + happen") + } + }), + window.addEventListener + ? + window.addEventListener("message", + QQWB.api.messageHandler, + !1) + : + window.attachEvent + && + window.attachEvent("onmessage", + QQWB.api.messageHandler)); + try { var l = + QQWB.api.collect(j); + setTimeout(function() { + k.contentWindow.postMessage(QQWB.JSON.stringify({ + id: l, + data: + [a, b, + c, d] + }), + QQWB._domain.serverproxy) + }, 0) } catch (m) { + QQWB.log.critical("post + message + to + server + proxy + has + failed, + " + + + m), + j.reject(-1, + m, + 0) + } } } else g === + QQWB._solution[QQWB._solution.FLASH_SOLUTION] && + QQWB.io._apiFlashAjax(a, b, c, d).complete(function() { + var a = QQWB.Array.fromArguments(arguments); + a[0] !== 200 ? j.reject.apply(j, a) : + j.resolve(a[3], a[2], a[4]) }); return - function() { - var - e = QQWB.api.id; - f.complete(function() { - QQWB.log.info("*[" + e + "] - done"), e = null - }); - if (QQWB.pingback && QQWB.ping) { - function - h(e, f, h) { - QQWB.ping.pingAPI(a, QQWB.queryString.encode(b), c, d, e, f, h, g.name) - } - f.success(function(a, b) { - h(200, "ok", b) - }), f.fail(function(a, b, c) { - h(a, b, c) - }) - } - }(), f -}) + function() { var e = QQWB.api.id; f.complete(function() { + QQWB.log.info("*[" + e + "] done"), e = null }); if (QQWB.pingback + && QQWB.ping) { function h(e, f, h) { QQWB.ping.pingAPI(a, + QQWB.queryString.encode(b), c, d, e, f, h, g.name) } + f.success(function(a, b) { h(200, "ok", b) }), f.fail(function(a, + b, c) { h(a, b, c) }) } }(), f }) /* |xGv00|6d5d6ce9717937b567ca32a7f3d7c7d0 */