http://www.lxway.com/814960451.htm
手机淘宝列表页面 的js调用展示
http://api.m.taobao.com/h5/com.taobao.search.api.getshopitemlist/2.0/?v=2.0&api=com.taobao.search.api.getShopItemList&appKey=12574478&t=1438702983589&callback=mtopjsonp1&type=jsonp&sign=d5df66c0389ad26658f44959fc74bdab&data=%7B%22shopId%22%3A%22112980512%22%2C%22currentPage%22%3A1%2C%22pageSize%22%3A%2230%22%2C%22catId%22%3A%221112106335%22%2C%22catTxt%22%3A%22%7B%207%E6%9C%88%E7%A7%8B%E6%AC%BE%E7%AC%AC9%E6%89%B9%7D%22%2C%22sort%22%3A%22oldstarts%22%7D
--------------------------------
列表页面
http://shop.m.taobao.com/shop/shop_index.htm?spm=0.0.0.0&shop_id=112980512#list?catId=1112106335&catTxt={%207%E6%9C%88%E7%A7%8B%E6%AC%BE%E7%AC%AC9%E6%89%B9}
// 请求页面数据, 开始解析 function getPageView() { // 从 location 获取页面参数 var params = [], PAGE_QUERY = {}, VIEW_DATA = {}; var page = window.G_msp_path?window.G_msp_path:'';//兼容店铺首页 var search = location.search; if(search) { //search = decodeURIComponent(search); search = search.slice(1).split('&'); search.forEach(function(param) { param = param.split('='); var k = param[0]; var v = param[1]; try{ v=decodeURIComponent(v); }catch(err) {} if(k == 'page') { page = v; } else { params.push(k + ':' + v); PAGE_QUERY[k] = v; } }) } if(!PAGE_QUERY.userId&&window.G_msp_userId){ PAGE_QUERY.userId=window.G_msp_userId; VIEW_DATA.userId=window.G_msp_userId; params.push('userId:' + window.G_msp_userId); //兼容店铺首页 }; if(window.G_msp_shopId){ params.push('shop_id:' + window.G_msp_shopId); }; if(!page) { console.error('缺少 page 参数!'); return; } lib.mtop.request({ api: "mtop.geb.view.getPageView", v: "2.0", data: { page: page, clientVersion: '10000', params: params.join(';') } }, function(resp) { var resp=resp; window.meta = resp.data; Object.keys(meta.data).forEach(function(k) { VIEW_DATA[k] = meta.data[k]; }) // 单独处理页面 title var page_title = meta.title; if(page_title) { if(String(page_title).indexOf('$') == 0) { page_title = VIEW_DATA[page_title.slice(1)]; }; if(page_title) { document.title = decodeURI(page_title); if (lib.env.taobaoApp && lib.env.taobaoApp.appname=='TB'&& lib.WindVane) { lib.windvane.call('WebAppInterface', 'setCustomPageTitle',decodeURI(page_title)); }; } } var page = new PageView(resp.data); var host = document.querySelector('#we-page'); host.innerHTML = ''; host.appendChild(page.element.root); }, function(resp) { console.log('获取页面数据失败: ', resp); }); } getPageView(); document.getElementById('we-page').style.height = 'auto';
另外
-------------
http://bbs.125.la/thread-13785103-1-1.html
相关网址 http://www.cnblogs.com/easyshop/
http://www.cnblogs.com/easyshop/archive/2011/01/03/1924831.html
http://www.zuanke8.com/space-uid-183728.html
http://www.zuanke8.com/thread-1879054-1-1.html
appkey 12278902对应的appsecret(744e7d*)暴露这么久了,现在才想到封
封么不封彻底,登陆接口还可以用,就秒杀那禁止......
然后,既然知道这个暴露了,那么不会更改接口阿,v4sign出来这么久还不用,光封这个appkey有用么?
21646297,12574478?1478716954?1740881339?这些你不封么
现在很多软件用21272146 这个appkey 也没见过 不知道哪里来的
--------------------------------------------
! function(a) { String.prototype.trim === a && (String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, "") }), Array.prototype.reduce === a && (Array.prototype.reduce = function(b) { if (void 0 === this || null === this) throw new TypeError; var c, d = Object(this), e = d.length >>> 0, f = 0; if ("function" != typeof b) throw new TypeError; if (0 == e && 1 == arguments.length) throw new TypeError; if (arguments.length >= 2) c = arguments[1]; else for (;;) { if (f in d) { c = d[f++]; break } if (++f >= e) throw new TypeError } for (; e > f;) f in d && (c = b.call(a, c, d[f], f, d)), f++; return c }) } (); var Zepto = function() { function a(a) { return null == a ? String(a) : W[X.call(a)] || "object" } function b(b) { return "function" == a(b) } function c(a) { return null != a && a == a.window } function d(a) { return null != a && a.nodeType == a.DOCUMENT_NODE } function e(b) { return "object" == a(b) } function f(a) { return e(a) && !c(a) && a.__proto__ == Object.prototype } function g(a) { return a instanceof Array } function h(a) { return "number" == typeof a.length } function i(a) { return E.call(a, function(a) { return null != a }) } function j(a) { return a.length > 0 ? y.fn.concat.apply([], a) : a } function k(a) { return a.replace(/::/g, "/").replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2").replace(/([a-z\d])([A-Z])/g, "$1_$2").replace(/_/g, "-").toLowerCase() } function l(a) { return a in H ? H[a] : H[a] = new RegExp("(^|\\s)" + a + "(\\s|$)") } function m(a, b) { return "number" != typeof b || J[k(a)] ? b: b + "px" } function n(a) { var b, c; return G[a] || (b = F.createElement(a), F.body.appendChild(b), c = I(b, "").getPropertyValue("display"), b.parentNode.removeChild(b), "none" == c && (c = "block"), G[a] = c), G[a] } function o(a) { return "children" in a ? D.call(a.children) : y.map(a.childNodes, function(a) { return 1 == a.nodeType ? a: void 0 }) } function p(a, b, c) { for (x in b) c && (f(b[x]) || g(b[x])) ? (f(b[x]) && !f(a[x]) && (a[x] = {}), g(b[x]) && !g(a[x]) && (a[x] = []), p(a[x], b[x], c)) : b[x] !== w && (a[x] = b[x]) } function q(a, b) { return b === w ? y(a) : y(a).filter(b) } function r(a, c, d, e) { return b(c) ? c.call(a, d, e) : c } function s(a, b, c) { null == c ? a.removeAttribute(b) : a.setAttribute(b, c) } function t(a, b) { var c = a.className, d = c && c.baseVal !== w; return b === w ? d ? c.baseVal: c: void(d ? c.baseVal = b: a.className = b) } function u(a) { var b; try { return a ? "true" == a || ("false" == a ? !1 : "null" == a ? null: isNaN(b = Number(a)) ? /^[\[\{]/.test(a) ? y.parseJSON(a) : a: b) : a } catch(c) { return a } } function v(a, b) { b(a); for (var c in a.childNodes) v(a.childNodes[c], b) } var w, x, y, z, A, B, C = [], D = C.slice, E = C.filter, F = window.document, G = {}, H = {}, I = F.defaultView.getComputedStyle, J = { "column-count": 1, columns: 1, "font-weight": 1, "line-height": 1, opacity: 1, "z-index": 1, zoom: 1 }, K = /^\s*<(\w+|!)[^>]*>/, L = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, M = /^(?:body|html)$/i, N = ["val", "css", "html", "text", "data", "width", "height", "offset"], O = ["after", "prepend", "before", "append"], P = F.createElement("table"), Q = F.createElement("tr"), R = { tr: F.createElement("tbody"), tbody: P, thead: P, tfoot: P, td: Q, th: Q, "*": F.createElement("div") }, S = /complete|loaded|interactive/, T = /^\.([\w-]+)$/, U = /^#([\w-]*)$/, V = /^[\w-]+$/, W = {}, X = W.toString, Y = {}, Z = F.createElement("div"); return Y.matches = function(a, b) { if (!a || 1 !== a.nodeType) return ! 1; var c = a.webkitMatchesSelector || a.mozMatchesSelector || a.oMatchesSelector || a.matchesSelector; if (c) return c.call(a, b); var d, e = a.parentNode, f = !e; return f && (e = Z).appendChild(a), d = ~Y.qsa(e, b).indexOf(a), f && Z.removeChild(a), d }, A = function(a) { return a.replace(/-+(.)?/g, function(a, b) { return b ? b.toUpperCase() : "" }) }, B = function(a) { return E.call(a, function(b, c) { return a.indexOf(b) == c }) }, Y.fragment = function(a, b, c) { a.replace && (a = a.replace(L, "<$1>$2>")), b === w && (b = K.test(a) && RegExp.$1), b in R || (b = "*"); var d, e, g = R[b]; return g.innerHTML = "" + a, e = y.each(D.call(g.childNodes), function() { g.removeChild(this) }), f(c) && (d = y(e), y.each(c, function(a, b) { N.indexOf(a) > -1 ? d[a](b) : d.attr(a, b) })), e }, Y.Z = function(a, b) { return a = a || [], a.__proto__ = y.fn, a.selector = b || "", a }, Y.isZ = function(a) { return a instanceof Y.Z }, Y.init = function(a, c) { if (a) { if (b(a)) return y(F).ready(a); if (Y.isZ(a)) return a; var d; if (g(a)) d = i(a); else if (e(a)) d = [f(a) ? y.extend({}, a) : a], a = null; else if (K.test(a)) d = Y.fragment(a.trim(), RegExp.$1, c), a = null; else { if (c !== w) return y(c).find(a); d = Y.qsa(F, a) } return Y.Z(d, a) } return Y.Z() }, y = function(a, b) { return Y.init(a, b) }, y.extend = function(a) { var b, c = D.call(arguments, 1); return "boolean" == typeof a && (b = a, a = c.shift()), c.forEach(function(c) { p(a, c, b) }), a }, Y.qsa = function(a, b) { var c; return d(a) && U.test(b) ? (c = a.getElementById(RegExp.$1)) ? [c] : [] : 1 !== a.nodeType && 9 !== a.nodeType ? [] : D.call(T.test(b) ? a.getElementsByClassName(RegExp.$1) : V.test(b) ? a.getElementsByTagName(b) : a.querySelectorAll(b)) }, y.contains = function(a, b) { return a !== b && a.contains(b) }, y.type = a, y.isFunction = b, y.isWindow = c, y.isArray = g, y.isPlainObject = f, y.isEmptyObject = function(a) { var b; for (b in a) return ! 1; return ! 0 }, y.inArray = function(a, b, c) { return C.indexOf.call(b, a, c) }, y.camelCase = A, y.trim = function(a) { return a.trim() }, y.uuid = 0, y.support = {}, y.expr = {}, y.map = function(a, b) { var c, d, e, f = []; if (h(a)) for (d = 0; d < a.length; d++) c = b(a[d], d), null != c && f.push(c); else for (e in a) c = b(a[e], e), null != c && f.push(c); return j(f) }, y.each = function(a, b) { var c, d; if (h(a)) { for (c = 0; c < a.length; c++) if (b.call(a[c], c, a[c]) === !1) return a } else for (d in a) if (b.call(a[d], d, a[d]) === !1) return a; return a }, y.grep = function(a, b) { return E.call(a, b) }, window.JSON && (y.parseJSON = JSON.parse), y.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(a, b) { W["[object " + b + "]"] = b.toLowerCase() }), y.fn = { forEach: C.forEach, reduce: C.reduce, push: C.push, sort: C.sort, indexOf: C.indexOf, concat: C.concat, map: function(a) { return y(y.map(this, function(b, c) { return a.call(b, c, b) })) }, slice: function() { return y(D.apply(this, arguments)) }, ready: function(a) { return S.test(F.readyState) ? a(y) : F.addEventListener("DOMContentLoaded", function() { a(y) }, !1), this }, get: function(a) { return a === w ? D.call(this) : this[a >= 0 ? a: a + this.length] }, toArray: function() { return this.get() }, size: function() { return this.length }, remove: function() { return this.each(function() { null != this.parentNode && this.parentNode.removeChild(this) }) }, each: function(a) { return C.every.call(this, function(b, c) { return a.call(b, c, b) !== !1 }), this }, filter: function(a) { return b(a) ? this.not(this.not(a)) : y(E.call(this, function(b) { return Y.matches(b, a) })) }, add: function(a, b) { return y(B(this.concat(y(a, b)))) }, is: function(a) { return this.length > 0 && Y.matches(this[0], a) }, not: function(a) { var c = []; if (b(a) && a.call !== w) this.each(function(b) { a.call(this, b) || c.push(this) }); else { var d = "string" == typeof a ? this.filter(a) : h(a) && b(a.item) ? D.call(a) : y(a); this.forEach(function(a) { d.indexOf(a) < 0 && c.push(a) }) } return y(c) }, has: function(a) { return this.filter(function() { return e(a) ? y.contains(this, a) : y(this).find(a).size() }) }, eq: function(a) { return - 1 === a ? this.slice(a) : this.slice(a, +a + 1) }, first: function() { var a = this[0]; return a && !e(a) ? a: y(a) }, last: function() { var a = this[this.length - 1]; return a && !e(a) ? a: y(a) }, find: function(a) { var b, c = this; return b = "object" == typeof a ? y(a).filter(function() { var a = this; return C.some.call(c, function(b) { return y.contains(b, a) }) }) : 1 == this.length ? y(Y.qsa(this[0], a)) : this.map(function() { return Y.qsa(this, a) }) }, closest: function(a, b) { var c = this[0], e = !1; for ("object" == typeof a && (e = y(a)); c && !(e ? e.indexOf(c) >= 0 : Y.matches(c, a));) c = c !== b && !d(c) && c.parentNode; return y(c) }, parents: function(a) { for (var b = [], c = this; c.length > 0;) c = y.map(c, function(a) { return (a = a.parentNode) && !d(a) && b.indexOf(a) < 0 ? (b.push(a), a) : void 0 }); return q(b, a) }, parent: function(a) { return q(B(this.pluck("parentNode")), a) }, children: function(a) { return q(this.map(function() { return o(this) }), a) }, contents: function() { return this.map(function() { return D.call(this.childNodes) }) }, siblings: function(a) { return q(this.map(function(a, b) { return E.call(o(b.parentNode), function(a) { return a !== b }) }), a) }, empty: function() { return this.each(function() { this.innerHTML = "" }) }, pluck: function(a) { return y.map(this, function(b) { return b[a] }) }, show: function() { return this.each(function() { "none" == this.style.display && (this.style.display = null), "none" == I(this, "").getPropertyValue("display") && (this.style.display = n(this.nodeName)) }) }, replaceWith: function(a) { return this.before(a).remove() }, wrap: function(a) { var c = b(a); if (this[0] && !c) var d = y(a).get(0), e = d.parentNode || this.length > 1; return this.each(function(b) { y(this).wrapAll(c ? a.call(this, b) : e ? d.cloneNode(!0) : d) }) }, wrapAll: function(a) { if (this[0]) { y(this[0]).before(a = y(a)); for (var b; (b = a.children()).length;) a = b.first(); y(a).append(this) } return this }, wrapInner: function(a) { var c = b(a); return this.each(function(b) { var d = y(this), e = d.contents(), f = c ? a.call(this, b) : a; e.length ? e.wrapAll(f) : d.append(f) }) }, unwrap: function() { return this.parent().each(function() { y(this).replaceWith(y(this).children()) }), this }, clone: function() { return this.map(function() { return this.cloneNode(!0) }) }, hide: function() { return this.css("display", "none") }, toggle: function(a) { return this.each(function() { var b = y(this); (a === w ? "none" == b.css("display") : a) ? b.show() : b.hide() }) }, prev: function(a) { return y(this.pluck("previousElementSibling")).filter(a || "*") }, next: function(a) { return y(this.pluck("nextElementSibling")).filter(a || "*") }, html: function(a) { return a === w ? this.length > 0 ? this[0].innerHTML: null: this.each(function(b) { var c = this.innerHTML; y(this).empty().append(r(this, a, b, c)) }) }, text: function(a) { return a === w ? this.length > 0 ? this[0].textContent: null: this.each(function() { this.textContent = a }) }, attr: function(a, b) { var c; return "string" == typeof a && b === w ? 0 == this.length || 1 !== this[0].nodeType ? w: "value" == a && "INPUT" == this[0].nodeName ? this.val() : !(c = this[0].getAttribute(a)) && a in this[0] ? this[0][a] : c: this.each(function(c) { if (1 === this.nodeType) if (e(a)) for (x in a) s(this, x, a[x]); else s(this, a, r(this, b, c, this.getAttribute(a))) }) }, removeAttr: function(a) { return this.each(function() { 1 === this.nodeType && s(this, a) }) }, prop: function(a, b) { return b === w ? this[0] && this[0][a] : this.each(function(c) { this[a] = r(this, b, c, this[a]) }) }, data: function(a, b) { var c = this.attr("data-" + k(a), b); return null !== c ? u(c) : w }, val: function(a) { return a === w ? this[0] && (this[0].multiple ? y(this[0]).find("option").filter(function() { return this.selected }).pluck("value") : this[0].value) : this.each(function(b) { this.value = r(this, a, b, this.value) }) }, offset: function(a) { if (a) return this.each(function(b) { var c = y(this), d = r(this, a, b, c.offset()), e = c.offsetParent().offset(), f = { top: d.top - e.top, left: d.left - e.left }; "static" == c.css("position") && (f.position = "relative"), c.css(f) }); if (0 == this.length) return null; var b = this[0].getBoundingClientRect(); return { left: b.left + window.pageXOffset, top: b.top + window.pageYOffset, width: Math.round(b.width), height: Math.round(b.height) } }, css: function(b, c) { if (arguments.length < 2 && "string" == typeof b) return this[0] && (this[0].style[A(b)] || I(this[0], "").getPropertyValue(b)); var d = ""; if ("string" == a(b)) c || 0 === c ? d = k(b) + ":" + m(b, c) : this.each(function() { this.style.removeProperty(k(b)) }); else for (x in b) b[x] || 0 === b[x] ? d += k(x) + ":" + m(x, b[x]) + ";": this.each(function() { this.style.removeProperty(k(x)) }); return this.each(function() { this.style.cssText += ";" + d }) }, index: function(a) { return a ? this.indexOf(y(a)[0]) : this.parent().children().indexOf(this[0]) }, hasClass: function(a) { return C.some.call(this, function(a) { return this.test(t(a)) }, l(a)) }, addClass: function(a) { return this.each(function(b) { z = []; var c = t(this), d = r(this, a, b, c); d.split(/\s+/g).forEach(function(a) { y(this).hasClass(a) || z.push(a) }, this), z.length && t(this, c + (c ? " ": "") + z.join(" ")) }) }, removeClass: function(a) { return this.each(function(b) { return a === w ? t(this, "") : (z = t(this), r(this, a, b, z).split(/\s+/g).forEach(function(a) { z = z.replace(l(a), " ") }), void t(this, z.trim())) }) }, toggleClass: function(a, b) { return this.each(function(c) { var d = y(this), e = r(this, a, c, t(this)); e.split(/\s+/g).forEach(function(a) { (b === w ? !d.hasClass(a) : b) ? d.addClass(a) : d.removeClass(a) }) }) }, scrollTop: function() { return this.length ? "scrollTop" in this[0] ? this[0].scrollTop: this[0].scrollY: void 0 }, position: function() { if (this.length) { var a = this[0], b = this.offsetParent(), c = this.offset(), d = M.test(b[0].nodeName) ? { top: 0, left: 0 }: b.offset(); return c.top -= parseFloat(y(a).css("margin-top")) || 0, c.left -= parseFloat(y(a).css("margin-left")) || 0, d.top += parseFloat(y(b[0]).css("border-top-width")) || 0, d.left += parseFloat(y(b[0]).css("border-left-width")) || 0, { top: c.top - d.top, left: c.left - d.left } } }, offsetParent: function() { return this.map(function() { for (var a = this.offsetParent || F.body; a && !M.test(a.nodeName) && "static" == y(a).css("position");) a = a.offsetParent; return a }) } }, y.fn.detach = y.fn.remove, ["width", "height"].forEach(function(a) { y.fn[a] = function(b) { var e, f = this[0], g = a.replace(/./, function(a) { return a[0].toUpperCase() }); return b === w ? c(f) ? f["inner" + g] : d(f) ? f.documentElement["offset" + g] : (e = this.offset()) && e[a] : this.each(function(c) { f = y(this), f.css(a, r(this, b, c, f[a]())) }) } }), O.forEach(function(b, c) { var d = c % 2; y.fn[b] = function() { var b, e, f = y.map(arguments, function(c) { return b = a(c), "object" == b || "array" == b || null == c ? c: Y.fragment(c) }), g = this.length > 1; return f.length < 1 ? this: this.each(function(a, b) { e = d ? b: b.parentNode, b = 0 == c ? b.nextSibling: 1 == c ? b.firstChild: 2 == c ? b: null, f.forEach(function(a) { if (g) a = a.cloneNode(!0); else if (!e) return y(a).remove(); v(e.insertBefore(a, b), function(a) { null == a.nodeName || "SCRIPT" !== a.nodeName.toUpperCase() || a.type && "text/javascript" !== a.type || a.src || window.eval.call(window, a.innerHTML) }) }) }) }, y.fn[d ? b + "To": "insert" + (c ? "Before": "After")] = function(a) { return y(a)[b](this), this } }), Y.Z.prototype = y.fn, Y.uniq = B, Y.deserializeValue = u, y.zepto = Y, y } (); window.Zepto = Zepto, "$" in window || (window.$ = Zepto), function(a) { function b(a) { var b = this.os = {}, c = this.browser = {}, d = a.match(/WebKit\/([\d.]+)/), e = a.match(/(Android)\s+([\d.]+)/), f = a.match(/(iPad).*OS\s([\d_]+)/), g = !f && a.match(/(iPhone\sOS)\s([\d_]+)/), h = a.match(/(webOS|hpwOS)[\s\/]([\d.]+)/), i = h && a.match(/TouchPad/), j = a.match(/Kindle\/([\d.]+)/), k = a.match(/Silk\/([\d._]+)/), l = a.match(/(BlackBerry).*Version\/([\d.]+)/), m = a.match(/(BB10).*Version\/([\d.]+)/), n = a.match(/(RIM\sTablet\sOS)\s([\d.]+)/), o = a.match(/PlayBook/), p = a.match(/Chrome\/([\d.]+)/) || a.match(/CriOS\/([\d.]+)/), q = a.match(/Firefox\/([\d.]+)/); (c.webkit = !!d) && (c.version = d[1]), e && (b.android = !0, b.version = e[2]), g && (b.ios = b.iphone = !0, b.version = g[2].replace(/_/g, ".")), f && (b.ios = b.ipad = !0, b.version = f[2].replace(/_/g, ".")), h && (b.webos = !0, b.version = h[2]), i && (b.touchpad = !0), l && (b.blackberry = !0, b.version = l[2]), m && (b.bb10 = !0, b.version = m[2]), n && (b.rimtabletos = !0, b.version = n[2]), o && (c.playbook = !0), j && (b.kindle = !0, b.version = j[1]), k && (c.silk = !0, c.version = k[1]), !k && b.android && a.match(/Kindle Fire/) && (c.silk = !0), p && (c.chrome = !0, c.version = p[1]), q && (c.firefox = !0, c.version = q[1]), b.tablet = !!(f || o || e && !a.match(/Mobile/) || q && a.match(/Tablet/)), b.phone = !(b.tablet || !(e || g || h || l || m || p && a.match(/Android/) || p && a.match(/CriOS\/([\d.]+)/) || q && a.match(/Mobile/))) } b.call(a, navigator.userAgent), a.__detect = b } (Zepto), function(a) { function b(a) { return a._zid || (a._zid = n++) } function c(a, c, f, g) { if (c = d(c), c.ns) var h = e(c.ns); return (m[b(a)] || []).filter(function(a) { return ! (!a || c.e && a.e != c.e || c.ns && !h.test(a.ns) || f && b(a.fn) !== b(f) || g && a.sel != g) }) } function d(a) { var b = ("" + a).split("."); return { e: b[0], ns: b.slice(1).sort().join(" ") } } function e(a) { return new RegExp("(?:^| )" + a.replace(" ", " .* ?") + "(?: |$)") } function f(b, c, d) { "string" != a.type(b) ? a.each(b, d) : b.split(/\s/).forEach(function(a) { d(a, c) }) } function g(a, b) { return a.del && ("focus" == a.e || "blur" == a.e) || !!b } function h(a) { return p[a] || a } function i(c, e, i, j, k, l) { var n = b(c), o = m[n] || (m[n] = []); f(e, i, function(b, e) { var f = d(b); f.fn = e, f.sel = j, f.e in p && (e = function(b) { var c = b.relatedTarget; return ! c || c !== this && !a.contains(this, c) ? f.fn.apply(this, arguments) : void 0 }), f.del = k && k(e, b); var i = f.del || e; f.proxy = function(a) { var b = i.apply(c, [a].concat(a.data)); return b === !1 && (a.preventDefault(), a.stopPropagation()), b }, f.i = o.length, o.push(f), c.addEventListener(h(f.e), f.proxy, g(f, l)) }) } function j(a, d, e, i, j) { var k = b(a); f(d || "", e, function(b, d) { c(a, b, d, i).forEach(function(b) { delete m[k][b.i], a.removeEventListener(h(b.e), b.proxy, g(b, j)) }) }) } function k(b) { var c, d = { originalEvent: b }; for (c in b) s.test(c) || void 0 === b[c] || (d[c] = b[c]); return a.each(t, function(a, c) { d[a] = function() { return this[c] = q, b[a].apply(b, arguments) }, d[c] = r }), d } function l(a) { if (! ("defaultPrevented" in a)) { a.defaultPrevented = !1; var b = a.preventDefault; a.preventDefault = function() { this.defaultPrevented = !0, b.call(this) } } } var m = (a.zepto.qsa, {}), n = 1, o = {}, p = { mouseenter: "mouseover", mouseleave: "mouseout" }; o.click = o.mousedown = o.mouseup = o.mousemove = "MouseEvents", a.event = { add: i, remove: j }, a.proxy = function(c, d) { if (a.isFunction(c)) { var e = function() { return c.apply(d, arguments) }; return e._zid = b(c), e } if ("string" == typeof d) return a.proxy(c[d], c); throw new TypeError("expected function") }, a.fn.bind = function(a, b) { return this.each(function() { i(this, a, b) }) }, a.fn.unbind = function(a, b) { return this.each(function() { j(this, a, b) }) }, a.fn.one = function(a, b) { return this.each(function(c, d) { i(this, a, b, null, function(a, b) { return function() { var c = a.apply(d, arguments); return j(d, b, a), c } }) }) }; var q = function() { return ! 0 }, r = function() { return ! 1 }, s = /^([A-Z]|layer[XY]$)/, t = { preventDefault: "isDefaultPrevented", stopImmediatePropagation: "isImmediatePropagationStopped", stopPropagation: "isPropagationStopped" }; a.fn.delegate = function(b, c, d) { return this.each(function(e, f) { i(f, c, d, b, function(c) { return function(d) { var e, g = a(d.target).closest(b, f).get(0); return g ? (e = a.extend(k(d), { currentTarget: g, liveFired: f }), c.apply(g, [e].concat([].slice.call(arguments, 1)))) : void 0 } }) }) }, a.fn.undelegate = function(a, b, c) { return this.each(function() { j(this, b, c, a) }) }, a.fn.live = function(b, c) { return a(document.body).delegate(this.selector, b, c), this }, a.fn.die = function(b, c) { return a(document.body).undelegate(this.selector, b, c), this }, a.fn.on = function(b, c, d) { return ! c || a.isFunction(c) ? this.bind(b, c || d) : this.delegate(c, b, d) }, a.fn.off = function(b, c, d) { return ! c || a.isFunction(c) ? this.unbind(b, c || d) : this.undelegate(c, b, d) }, a.fn.trigger = function(b, c) { return ("string" == typeof b || a.isPlainObject(b)) && (b = a.Event(b)), l(b), b.data = c, this.each(function() { "dispatchEvent" in this && this.dispatchEvent(b) }) }, a.fn.triggerHandler = function(b, d) { var e, f; return this.each(function(g, h) { e = k("string" == typeof b ? a.Event(b) : b), e.data = d, e.target = h, a.each(c(h, b.type || b), function(a, b) { return f = b.proxy(e), e.isImmediatePropagationStopped() ? !1 : void 0 }) }), f }, "focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(b) { a.fn[b] = function(a) { return a ? this.bind(b, a) : this.trigger(b) } }), ["focus", "blur"].forEach(function(b) { a.fn[b] = function(a) { return a ? this.bind(b, a) : this.each(function() { try { this[b]() } catch(a) {} }), this } }), a.Event = function(a, b) { "string" != typeof a && (b = a, a = b.type); var c = document.createEvent(o[a] || "Events"), d = !0; if (b) for (var e in b)"bubbles" == e ? d = !!b[e] : c[e] = b[e]; return c.initEvent(a, d, !0, null, null, null, null, null, null, null, null, null, null, null, null), c.isDefaultPrevented = function() { return this.defaultPrevented }, c } } (Zepto), function(a) { function b(b, c, d) { var e = a.Event(c); return a(b).trigger(e, d), !e.defaultPrevented } function c(a, c, d, e) { return a.global ? b(c || s, d, e) : void 0 } function d(b) { b.global && 0 === a.active++&&c(b, null, "ajaxStart") } function e(b) { b.global && !--a.active && c(b, null, "ajaxStop") } function f(a, b) { var d = b.context; return b.beforeSend.call(d, a, b) === !1 || c(b, d, "ajaxBeforeSend", [a, b]) === !1 ? !1 : void c(b, d, "ajaxSend", [a, b]) } function g(a, b, d) { var e = d.context, f = "success"; d.success.call(e, a, f, b), c(d, e, "ajaxSuccess", [b, d, a]), i(f, b, d) } function h(a, b, d, e) { var f = e.context; e.error.call(f, d, b, a), c(e, f, "ajaxError", [d, e, a]), i(b, d, e) } function i(a, b, d) { var f = d.context; d.complete.call(f, b, a), c(d, f, "ajaxComplete", [b, d]), e(d) } function j() {} function k(a) { return a && (a = a.split(";", 2)[0]), a && (a == x ? "html": a == w ? "json": u.test(a) ? "script": v.test(a) && "xml") || "text" } function l(a, b) { return (a + "&" + b).replace(/[&?]{1,2}/, "?") } function m(b) { b.processData && b.data && "string" != a.type(b.data) && (b.data = a.param(b.data, b.traditional)), !b.data || b.type && "GET" != b.type.toUpperCase() || (b.url = l(b.url, b.data)) } function n(b, c, d, e) { var f = !a.isFunction(c); return { url: b, data: f ? c: void 0, success: f ? a.isFunction(d) ? d: void 0 : c, dataType: f ? e || d: d } } function o(b, c, d, e) { var f, g = a.isArray(c); a.each(c, function(c, h) { f = a.type(h), e && (c = d ? e: e + "[" + (g ? "": c) + "]"), !e && g ? b.add(h.name, h.value) : "array" == f || !d && "object" == f ? o(b, h, d, c) : b.add(c, h) }) } var p, q, r = 0, s = window.document, t = /