03.product.js

   1 /*
   2  item.jd.com Compressed by uglify
   3  Author:keelii
   4  Date: 2014-08-05 6:52:26 [PM]
   5  */
   6 function insertScript(t, e) {
   7     var i = document.getElementsByTagName("head")[0],
   8         s = document.createElement("script");
   9     if (s.setAttribute("type", "text/javascript"), e)
  10         for (var a in e) e.hasOwnProperty(a) && s.setAttribute(a, e[a]);
  11     s.setAttribute("src", t), i.appendChild(s)
  12 }
  13
  14 function onNumChange() {
  15     var t = Number($("#buy-num").val()),
  16         e = $("#gift-tips a"),
  17         i = e.attr("href");
  18     e.attr("href", i.replace(/pcount=\d+/, "pcount=" + t))
  19 }
  20
  21 function sendRequest(t) {
  22     var e = new Image;
  23     e.setAttribute("src", t), e = null
  24 }
  25
  26 function strtotime(t, e) {
  27     function i(t, e, i) {
  28         var s, a = c[e];
  29         a !== void 0 && (s = a - r.getDay(), 0 === s ? s = 7 * i : s > 0 && "last" === t ? s -= 7 : 0 > s && "next" === t && (s += 7), r.setDate(r.getDate() + s))
  30     }
  31
  32     function s(t) {
  33         var e = t.split(" "),
  34             s = e[0],
  35             a = e[1].substring(0, 3),
  36             n = /\d+/.test(s),
  37             o = "ago" === e[2],
  38             c = ("last" === s ? -1 : 1) * (o ? -1 : 1);
  39         if (n && (c *= parseInt(s, 10)), d.hasOwnProperty(a) && !e[1].match(/^mon(day|\.)?$/i)) return r["set" + d[a]](r["get" + d[a]]() + c);
  40         if ("wee" === a) return r.setDate(r.getDate() + 7 * c);
  41         if ("next" === s || "last" === s) i(s, a, c);
  42         else if (!n) return !1;
  43         return !0
  44     }
  45     var a, n, o, r, c, d, l, p, u, m;
  46     if (!t) return null;
  47     if (t = t.replace(/\s{2,}/g, " ").replace(/[\t\r\n]/g, "").toLowerCase(), "now" === t) return null === e || isNaN(e) ? 0 | (new Date).getTime() / 1e3 : 0 | e;
  48     if (!isNaN(a = Date.parse(t))) return 0 | a / 1e3;
  49     if ("now" === t) return (new Date).getTime() / 1e3;
  50     if (!isNaN(a = Date.parse(t))) return a / 1e3;
  51     if (n = t.match(/^(\d{2,4})-(\d{2})-(\d{2})(?:\s(\d{1,2}):(\d{2})(?::\d{2})?)?(?:\.(\d+)?)?$/)) return o = n[1] >= 0 && 69 >= n[1] ? +n[1] + 2e3 : n[1], new Date(o, parseInt(n[2], 10) - 1, n[3], n[4] || 0, n[5] || 0, n[6] || 0, n[7] || 0) / 1e3;
  52     if (r = e ? new Date(1e3 * e) : new Date, c = {
  53         sun: 0,
  54         mon: 1,
  55         tue: 2,
  56         wed: 3,
  57         thu: 4,
  58         fri: 5,
  59         sat: 6
  60     }, d = {
  61         yea: "FullYear",
  62         mon: "Month",
  63         day: "Date",
  64         hou: "Hours",
  65         min: "Minutes",
  66         sec: "Seconds"
  67     }, p = "(years?|months?|weeks?|days?|hours?|minutes?|min|seconds?|sec|sunday|sun\\.?|monday|mon\\.?|tuesday|tue\\.?|wednesday|wed\\.?|thursday|thu\\.?|friday|fri\\.?|saturday|sat\\.?)", u = "([+-]?\\d+\\s" + p + "|" + "(last|next)\\s" + p + ")(\\sago)?", n = t.match(RegExp(u, "gi")), !n) return !1;
  68     for (m = 0, l = n.length; l > m; m++)
  69         if (!s(n[m])) return !1;
  70     return r.getTime() / 1e3
  71 }
  72
  73 function mktime() {
  74     var t = new Date,
  75         e = arguments,
  76         i = 0,
  77         s = ["Hours", "Minutes", "Seconds", "Month", "Date", "FullYear"];
  78     for (i = 0; s.length > i; i++)
  79         if (e[i] === void 0) e[i] = t["get" + s[i]](), e[i] += 3 === i;
  80         else if (e[i] = parseInt(e[i], 10), isNaN(e[i])) return !1;
  81     return e[5] += e[5] >= 0 ? 69 >= e[5] ? 2e3 : 100 >= e[5] ? 1900 : 0 : 0, t.setFullYear(e[5], e[3] - 1, e[4]), t.setHours(e[0], e[1], e[2]), (t.getTime() / 1e3 >> 0) - (0 > t.getTime())
  82 }
  83
  84 function monthDay(t, e) {
  85     var i, s, a, n = new Date(1e3 * t),
  86         o = new Date(1e3 * e),
  87         r = n.getFullYear(),
  88         c = n.getMonth() + 1,
  89         d = n.getDate(),
  90         l = o.getFullYear(),
  91         p = o.getMonth() + 1,
  92         u = o.getDate(),
  93         m = "",
  94         h = 12 * (l - r) + p - c;
  95     return i = Math.floor(h / 12), s = h % 12, s = 0 === s - Math.floor(s) ? s + 1 : s, a = (mktime(0, 0, 0, p, u, l) - mktime(0, 0, 0, p, d, l)) / 86400, 0 > a && (s -= 1), 0 > s && (i -= 1), i > 0 && (m += i + "\u5e74"), s > 0 && (m += s + "\u4e2a\u6708"), m
  96 }
  97
  98 function el_top_middle(t, e, i) {
  99     var s = t.outerWidth(),
 100         a = t.outerHeight();
 101     e && (s = e), i && (a = i);
 102     var n = function() {};
 103     n.doc = function() {
 104         return "BackCompat" == document.compatMode ? document.body : document.documentElement
 105     }, n.clientWidth = function() {
 106         return n.doc().clientWidth
 107     }, n.clientHeight = function() {
 108         return n.doc().clientHeight
 109     }, n.docWidth = function() {
 110         return Math.max(n.doc().clientWidth, n.doc().scrollWidth)
 111     }, n.docHeight = function() {
 112         return Math.max(n.doc().clientHeight, n.doc().scrollHeight)
 113     };
 114     var o = n.docHeight() != n.clientHeight() ? 16 : 0,
 115         r = $(document).scrollTop(),
 116         c = (n.clientHeight() - a) / 2 + r,
 117         d = (n.clientWidth() - o - s) / 2;
 118     t.css({
 119         left: d,
 120         top: c
 121     })
 122 }
 123
 124 function showBaitiaoFq() {
 125     var t = document.getElementById("Fqfk_Tip");
 126     $("#InitCartUrl").attr("href"), t.style.width = "500px";
 127     var e = 502,
 128         i = 358,
 129         s = ‘        <div id="Fqfk_Tip" class="Tip360" style="width:auto;">            <div class="Tip_Title">                <em>                    <img src="‘ + fq_serverSite + ‘skin/images/tip_close.jpg" class="Tip_Close"/>                </em>\u767d\u6761/\u5206\u671f            </div>            <div class="Tip_Content" id="Tip_fq0">                <div id="baitiaofenqi" style="position:relative;width:482px;height:330px;">                </div>            </div>        </div>‘,
 130         a = ("<div id=‘c04tip‘ class=‘clearfix‘ style=‘z-index:20000;position:absolute;width:" + (e + 5) + "px;height:" + (i + 5) + "px;‘><div style=‘position:absolute;margin:5px 0 0 5px;width:" + e + "px;height:" + i + "px;z-index:20001;‘>{HTML}</div></div>").replace("{HTML}", s),
 131         n = $(a);
 132     n.append(s), $(document.body).prepend(n), $("#Fqfk_Tip").show(), el_top_middle($("#c04tip"), 502, 358), $.ajax({
 133         url: "http://fa.jd.com/loadFa.js?aid=2_163_5702",
 134         dataType: "script",
 135         cache: !0
 136     }), $(".Tip_Close").click(function() {
 137         $("#c04tip").remove()
 138     })
 139 }
 140
 141 function showNaBaitiao() {
 142     var t = 502,
 143         e = 358,
 144         i = $("<div id=‘c04tip‘ class=‘clearfix‘ style=‘z-index:20000;position:absolute;width:" + (t + 5) + "px;height:" + (e + 5) + "px;‘><div style=‘position:absolute;margin:5px 0 0 5px;width:" + t + "px;height:" + e + "px;z-index:20001;‘></div></div>"),
 145         s = ‘        <div id="Fqfk_Tip" class="Tip360" style="width:auto;width:500px;height:310px;">            <div class="Tip_Title">                <em><img src="http://jd2008.jd.com/purchase/skin/images/tip_close.jpg" class="Tip_Close"></em> \u62ff\u767d\u6761            </div>            <div class="Tip_Content" id="nabaitiao"></div>        </div>‘;
 146     i.append(s), $(document.body).prepend(i), $("#Fqfk_Tip").show(), el_top_middle($("#c04tip"), 502, 358), $(".Tip_Close").click(function() {
 147         $("#c04tip").remove()
 148     }), $.ajax({
 149         url: "http://fa.jd.com/loadFa.js?aid=2_163_5480",
 150         dataType: "script",
 151         cache: !0
 152     })
 153 }
 154
 155 function showTip100(proobj) {
 156     var TipDivW = $(proobj).width(),
 157         TipDivH = $(proobj).height();
 158     TipDivW = 502, TipDivH = 358;
 159     var TipDiv = $("<div id=‘c04tip‘ class=‘clearfix‘ style=‘z-index:20000;position:absolute;width:" + eval(TipDivW + 5) + "px;height:" + eval(TipDivH + 5) + "px;‘><div style=‘position:absolute;margin:5px 0 0 5px;width:" + TipDivW + "px;height:" + TipDivH + "px;z-index:20001;‘></div></div>");
 160     fq_returnData && fq_formatData(fq_returnData), TipDiv.append($(proobj)), 0 == $("#c04tip").length && $(document.body).prepend(TipDiv), $(proobj).show(), el_top_middle($("#c04tip"), 502, 358), $("#Tip_apply,#Tip_continue,.Tip_Close").click(function() {
 161         $("#c04tip").remove(), $("#choose-btn-coll").after(‘<div id="Fqfk_Tip" class="Tip360"></div>‘)
 162     })
 163 }
 164
 165 function fq_showFq_html(t) {
 166     if (null != t) {
 167         if (0 == t.json.length) return;
 168         if (0 == t.json.length) return;
 169         if (null != t.json[0].error) return;
 170         document.getElementById(fq_btnPanel).innerHTML = ‘<a href="javascript:;" class="btn-divide" onclick="showTip100(\‘#Fqfk_Tip\‘)">\u5206\u671f\u4ed8\u6b3e<b></b></a>‘, fq_returnData = t
 171     }
 172 }
 173
 174 function fq_formatData() {
 175     var t = document.getElementById("Fqfk_Tip"),
 176         e = $("#InitCartUrl").attr("href");
 177     t.style.width = "500px";
 178     var i = "http://baitiao.jd.com/creditUser/list?from=dpy",
 179         s = ‘<div class="Tip_Title">            <em>                <img src="‘ + fq_serverSite + ‘skin/images/tip_close.jpg" class="Tip_Close"/>            </em>\u767d\u6761/\u5206\u671f        </div>        <div class="Tip_Content" id="Tip_fq0">            <div style="position:relative;width:482px;height:310px;">                <img src="http://img13.360buyimg.com/da/jfs/t157/107/261896691/42066/92e14669/5385b7edNa8b9b2a3.png" />                <a href="http://help.jd.com/help/question-71.html#help211" title="\u94f6\u884c\u5206\u671f" style="position: absolute;bottom:3px;width:410px;height:32px;left:60px;background: url(http://misc.360buyimg.com/lib/img/e/blank.gif);"></a>                <a href=‘ + e + ‘ title="\u52a0\u5165\u8d2d\u7269\u8f66" style="position:absolute;top:61px;right:11px;width:98px;height:24px;background: url(http://misc.360buyimg.com/lib/img/e/blank.gif);" clstag="shangpin|keycount|product|initcarturlbt"></a>                <a href=‘ + i + ‘ title="\u7acb\u5373\u6fc0\u6d3b" style="position:absolute;top:61px;left:146px;width:67px;height:24px;background: url(http://misc.360buyimg.com/lib/img/e/blank.gif);"></a>            </div>        </div>‘;
 180     t.innerHTML = s
 181 }
 182
 183 function getCookie(t) {
 184     var e = document.cookie.match(RegExp("(^| )" + t + "=([^;]*)(;|$)"));
 185     return null != e ? unescape(e[2]) : null
 186 }
 187
 188 function setSearch(t, e) {
 189     var i = pageConfig.wideVersion && pageConfig.compatible ? 5 : 4,
 190         s = t || s;
 191     $.ajax({
 192         url: "http://api.search.jd.com/?key=" + s + "&pagesize=" + i + "&filt_type=wyn,L1M1;wstate,L1M1" + e,
 193         dataType: "jsonp",
 194         success: function(t) {
 195             var e = t.Summary.key;
 196             pageConfig.product.searchList = [], null !== t.Product && t.Product.length > 0 && (1 > $("#search-result").length && $("#product-intro").parent().before(‘<div class="w"><div id="search-result" class="m m2" clstag="shangpin|keycount|product|exrs"><div class="mt"></div><div class="mc search-item"></div></div></div>‘), $("#search-result").show(), $("#search-result .search-item").html(search_TPL.process(t)), $("#search-result .mt").html(‘<h2>\u5728\u4eac\u4e1c\u5546\u57ce\u4e2d\u67e5\u770b\u5176\u5b83\u201c<a target="_blank" href="http://search.jd.com/Search?keyword=‘ + e + ‘">‘ + e + ‘</a>\u201d\u7684\u641c\u7d22\u7ed3\u679c\uff1a</h2><div class="extra"><a target="_blank" href="http://search.jd.com/Search?keyword=‘ + e + ‘">\u67e5\u770b\u66f4\u591a\u641c\u7d22\u7ed3\u679c</a></div>‘), G.getPriceNum(pageConfig.product.searchList, null, $("#search-result")), $(".search-item dl .p-img a").click(function() {
 197                 var t = $(this).parents("dl").attr("skuid");
 198                 $.getScript("http://sstat.jd.com/scslog?args=1^" + encodeURIComponent(e) + "^^1^^" + encodeURIComponent(document.referrer) + "^" + t + "^0^101^^0^0")
 199             }), $(".search-item dl .p-name a").click(function() {
 200                 var t = $(this).parents("dl").attr("skuid");
 201                 $.getScript("http://sstat.jd.com/scslog?args=1^" + encodeURIComponent(e) + "^^1^^" + encodeURIComponent(document.referrer) + "^" + t + "^0^101^^0^0")
 202             }))
 203         }
 204     })
 205 }
 206
 207 function seoBanner(t, e) {
 208     $.ajax({
 209         url: "http://seo.jd.com/ad/getAds.action",
 210         data: {
 211             itemId: G.cat[0],
 212             searchWords: t.k,
 213             searchRefer: t.d
 214         },
 215         dataType: "jsonp",
 216         success: function(t) {
 217             var i = ‘<div class="w">    <div class="m m2">        <div class="mt hide"></div>        <div class="mc"><a href="${img.href}" target="_blank"><img src="${img.imtUrl}" width="${width}" height="${height}" /></a></div>    </div></div>‘;
 218             t && 3 === t.adType ? G.isJd ? setSearch(searchEngineSource.k, e) : /utm_source=organic/.test(location.href) || setSearch(searchEngineSource.k, e) : (t.width = pageConfig.compatible && pageConfig.wideVersion ? 1210 : 990, t.height = 110, $("#product-intro").parent().before(i.process(t)))
 219         }
 220     })
 221 }
 222
 223 function getSuitInfoService(t) {
 224     if (null !== t.packResponseList && t.packResponseList.length > 0) {
 225         var e = pageConfig.wideVersion && pageConfig.compatible ? 12 : 8;
 226         $("#favorable-suit").show(), $("#favorable-suit .mc").html(suit_TPL.tabs.process(t) + suit_TPL.cons.process(t)), $("#favorable-suit .mc").Jtab({
 227             event: e >= t.packResponseList.length ? "mouseover" : "click",
 228             delay: 300,
 229             compatible: !0,
 230             currClass: "scurr"
 231         }, function(t, e) {
 232             var i = e.attr("packprice"),
 233                 s = e.attr("data-cat"),
 234                 a = e.attr("packlistprice"),
 235                 n = e.attr("discount"),
 236                 o = e.find(".fitting-price"),
 237                 r = e.find(".orign-price"),
 238                 c = e.find(".fitting-saving"),
 239                 d = e.find(".infos .p-name a,.infos .btns a"),
 240                 l = [G.sku];
 241             "" !== i && "" !== a && (o.html(parseFloat(i).toFixed(2)), r.html(parseFloat(a).toFixed(2)), c.html(parseFloat(n).toFixed(2))), e.find(".suits li[data-sku]").each(function() {
 242                 l.push($(this).attr("data-sku"))
 243             }), d.attr("href", "http://www.jd.com/suit/show.html?suitId=" + s + "&skuIds=" + l.join(",")), e.find("img[data-src]").each(function() {
 244                 var t = $(this),
 245                     e = t.attr("data-src");
 246                 e && t.attr("src", e).removeAttr("data-src")
 247             }), G.getNewCLK({
 248                 name: "yhtz",
 249                 action: "0",
 250                 csku: l,
 251                 sku: G.sku
 252             })
 253         }), $("#favorable-suit .scurr").trigger("click").trigger("mouseover"), G.removeLastAdd()
 254     }
 255 }
 256
 257 function setPopInfo(t) {
 258     if (t && (Recommend.getDaPeiGou(G.sku, t.vid), EvaluateGradeNew.init(t), !G.isJd && "undefined" != typeof warestatus && 1 != warestatus)) {
 259         var e = $("#product-detail-1 .detail-list li").eq(2);
 260         e.html().indexOf("\u5e97\u94fa\uff1a") > -1 && e.html(‘\u5e97\u94fa\uff1a<a href="‘ + t.url + ‘" target="_blank">‘ + t.vender + "</a>")
 261     }
 262 }
 263
 264 function renew() {
 265     $.ajax({
 266         url: "http://d.360buy.com/oldfornew/get?skuId=" + pageConfig.product.skuid,
 267         dataType: "jsonp",
 268         success: function(t) {
 269             var e = ‘<div class="renew-arrgrment" style="line-height:200%;height:190px;overflow-y:auto;">    <p>\u5c0a\u656c\u7684\u5ba2\u6237\uff1a</p>    <p>\u60a8\u597d\uff01\u6b22\u8fce\u60a8\u53c2\u52a0\u4eac\u4e1c\u5546\u57ce\u201c\u7535\u8111\u4ee5\u65e7\u6362\u65b0\u201d\u6d3b\u52a8\u3002\u4e3a\u4e86\u4fdd\u8bc1\u60a8\u80fd\u591f\u6b63\u5e38\u4eab\u53d7\u4ee5\u65e7\u6362\u65b0\u6d3b\u52a8\u4f18\u60e0\uff0c\u8bf7\u60a8\u4ed4\u7ec6\u9605\u8bfb\u4ee5\u4e0b\u6d3b\u52a8\u7ec6\u5219\uff0c\u786e\u8ba4\u65e0\u8bef\u540e\u518d\u63d0\u4ea4\u4ee5\u65e7\u6362\u65b0\u8ba2\u5355\u3002</p>     <ul>        <li>1. \u6d3b\u52a8\u53c2\u4e0e\u5730\u533a\uff1a\u6240\u6709\u4eac\u4e1c\u81ea\u8425\u914d\u9001\u8986\u76d6\u8303\u56f4\uff0c\u5177\u4f53\u8303\u56f4\u8bf7\u67e5\u770b\u4eac\u4e1c\u5e2e\u52a9\u4e2d\u5fc3\uff1b</li>        <li>2. \u4eac\u4e1c\u5546\u57ce\u53c2\u52a0\u6d3b\u52a8\u4ea7\u54c1\uff1a\u4ee5\u4ea7\u54c1\u9875\u9762\u4fe1\u606f\u663e\u793a\u4e3a\u51c6\uff1b</li>        <li>3. \u60a8\u53c2\u52a0\u4ee5\u65e7\u6362\u65b0\u7535\u8111\u8981\u6c42\uff1a\u4efb\u4f55\u54c1\u724c\uff0c\u53ef\u4ee5\u6b63\u5e38\u5f00\u673a\u7684\u7b14\u8bb0\u672c\u7535\u8111\uff1b\u4e0d\u7b26\u5408\u6b64\u6807\u51c6\u7684\u65e7\u7535\u8111\uff0c\u4e0d\u80fd\u53c2\u4e0e\u201c\u4ee5\u65e7\u6362\u65b0\u201d\u6d3b\u52a8\uff1b</li>        <li>4. \u5177\u4f53\u6d3b\u52a8\u89c4\u5219\uff1a\u4ee5\u4eac\u4e1c\u5546\u57ce\u7f51\u7ad9\u9875\u9762\u516c\u793a\u4e3a\u51c6\uff1b</li>        <li>5. \u7b7e\u6536\u6d41\u7a0b\uff1a\u7b7e\u7f72\u4eac\u4e1c\u7535\u8111\u4ee5\u65e7\u6362\u65b0\u53d6\u8d27\u5355\uff0c\u5e76\u628a\u65e7\u7535\u8111\u4ea4\u4ed8\u4eac\u4e1c\u914d\u9001\u5458\uff1b</li>        <li>6. \u9000\u6362\u8d27\u6d41\u7a0b\uff1a\u53c2\u52a0\u6b64\u201c\u4ee5\u65e7\u6362\u65b0\u201d\u65b9\u5f0f\u8d2d\u4e70\u7684\u7b14\u8bb0\u672c\u7535\u8111\u5982\u7533\u8bf7\u9000\u8d27\uff0c\u4eac\u4e1c\u4ec5\u6309\u7167\u6d88\u8d39\u8005\u5b9e\u9645\u652f\u4ed8\u91d1\u989d\u9000\u6b3e\uff0c\u4eac\u4e1c\u4e0d\u518d\u5411\u6d88\u8d39\u8005\u8fd4\u8fd8\u65e7\u7b14\u8bb0\u672c\u7535\u8111\u3002</li>    </ul></div><div class="renew-btn">    <a href="#none" class="css3-btn">\u540c\u610f\u534f\u8bae</a></div>‘;
 270             t && t.isOldForNew && ($("#choose-btns").prepend(‘<div id="choose-btn-renew" class="btn"><a href="javascript:;" class="btn-renew">\u53c2\u52a0\u4ee5\u65e7\u6362\u65b0<b></b></a></div>‘), $("#choose-btn-renew").jdThickBox({
 271                 type: "text",
 272                 width: 570,
 273                 height: 240,
 274                 title: "\u4ee5\u65e7\u6362\u65b0\u534f\u8bae",
 275                 _title: "renew_agreement_title",
 276                 source: e,
 277                 _con: "renew_aggrement",
 278                 _close: "close_me"
 279             }, function() {
 280                 $(".renew-btn .css3-btn").attr("href", "http://trade.jd.com/order/getOrderInfo.action?pid=" + pageConfig.product.skuid + "&pcount=" + $("#buy-num").val() + "&rid=" + +new Date)
 281             }))
 282         }
 283     })
 284 }
 285
 286 function onlineService(t, e, i) {
 287     function s(t) {
 288         return encodeURIComponent(encodeURIComponent(t))
 289     }
 290     var a = pageConfig.product.skuid;
 291     a || (a = $("ul[id=‘summary‘] span").html().replace("\u5546\u54c1\u7f16\u53f7\uff1a", ""));
 292     var n = unescape(G.name);
 293     n = s(n);
 294     var o = $("#name strong").html();
 295     o = s(o);
 296     var r = $("#store-selector .text").text(),
 297         c = $("#store-prompt strong").html(),
 298         d = r + "\uff08" + c + "\uff09";
 299     d = s(d), e = s(e);
 300     var l = $("span[class^=‘star‘]").attr("class").replace("star sa", ""),
 301         p = 100;
 302     try {
 303         p = $("a[href=‘#comment‘]").html().replace("(\u5df2\u6709", "").replace("\u4eba\u8bc4\u4ef7)", "")
 304     } catch (u) {}
 305     var m = 100;
 306     try {
 307         m = $("#i-comment .rate strong").text().replace("%", "")
 308     } catch (u) {}
 309     var h = s(pageConfig.product.src),
 310         f = jQuery.cookie("_recent");
 311     f || (f = "");
 312     var g = "";
 313     try {
 314         g = $("strong[class=‘p-price‘] img").attr("src")
 315     } catch (u) {}
 316     g = g ? s(g) : "", i || (i = "chat.jd.com");
 317     var v = "http://" + i + "/index.action?",
 318         b = {
 319             pid: a,
 320             price: g,
 321             stock: d,
 322             score: l,
 323             commentNum: p,
 324             imgUrl: h,
 325             wname: n,
 326             advertiseWord: o,
 327             seller: e,
 328             evaluationRate: m,
 329             recent: f,
 330             code: t,
 331             area: s($("#store-selector .text").text()),
 332             size: s($("#choose-version .dd .selected a").text()),
 333             services: s($("#summary-service .dd").html())
 334         };
 335     open(v + decodeURIComponent($.param(b)), a, "status=no,toolbar=no,menubar=no,location=no,titlebar=no,resizable=yes,width=1018px,height=590")
 336 }
 337
 338 function setImButton(t) {
 339     var e = t || G.sku;
 340     $.ajax({
 341         url: "http://chat1.jd.com/api/checkChat?",
 342         data: {
 343             pid: e,
 344             returnCharset: "utf-8"
 345         },
 346         dataType: "jsonp",
 347         success: function(t) {
 348             if (t) {
 349                 pageConfig.im = t;
 350                 var i = t.seller,
 351                     s = t.code;
 352                 if (i && "" != i && (i = i.replace("&qt;", "‘").replace("&dt;", ‘"‘)), 1 > $("#brand-bar-pop").length && ($("#j-im").length > 0 && $("#j-im").remove(), $("#summary-grade .dd #j-im").length > 0 && $("#summary-grade .dd #j-im").remove(), (1 == s || 2 == s || 3 == s || 9 == s) && $("#summary-grade .dd").append(‘<a id="j-im" class="djd-im" href="#none" clstag="shangpin|keycount|product|imbtn"><b>\u8054\u7cfb\u5ba2\u670d</b></a>‘)), 1 == s) $("#online-service").show(), $("#j-im").attr("title", i + " \u8054\u7cfb\u5ba2\u670d"), $("#j-im").click(function() {
 353                     onlineService(1, i, t.chatDomain)
 354                 });
 355                 else if (2 == s) {
 356                     $("#online-service").show();
 357                     var a = e.length >= 10 ? " \u5ba2\u670d\u76ee\u524d\u4e0d\u5728\u7ebf\uff01\u8d2d\u4e70\u4e4b\u524d\uff0c\u5982\u6709\u95ee\u9898\uff0c\u8bf7\u5728\u6b64\u9875\u201c\u5168\u90e8\u8d2d\u4e70\u54a8\u8be2\u201d\u4e2d\u5411\u4eac\u4e1c\u5ba2\u670d\u53d1\u8d77\u54a8\u8be2" : " \u5382\u5546\u552e\u524d\u54a8\u8be2\u76ee\u524d\u4e0d\u5728\u7ebf\uff01\u8d2d\u4e70\u4e4b\u524d\uff0c\u5982\u6709\u95ee\u9898\uff0c\u8bf7\u5728\u6b64\u9875\u201c\u5168\u90e8\u8d2d\u4e70\u54a8\u8be2\u201d\u4e2d\u5411\u4eac\u4e1c\u5ba2\u670d\u53d1\u8d77\u54a8\u8be2";
 358                     $("#j-im").addClass("d-offline").html("<b>\u7559\u8a00\u54a8\u8be2</b>").attr("title", i + a).unbind("click")
 359                 } else(3 == s || 9 == s) && ($("#online-service").show().find("b").html("\u8054\u7cfb\u5ba2\u670d"), $("#j-im").addClass("d-offline").html("<b>\u7559\u8a00\u54a8\u8be2</b>").attr("title", i + " \u5ba2\u670d\u76ee\u524d\u4e0d\u5728\u7ebf\uff0c\u60a8\u53ef\u4ee5\u70b9\u51fb\u6b64\u5904\u7ed9\u5546\u5bb6\u7559\u8a00\uff0c\u5e76\u5728\u3010\u6211\u7684\u4eac\u4e1c->\u6d88\u606f\u7cbe\u7075\u3011\u4e2d\u67e5\u770b\u56de\u590d").click(function() {
 360                     onlineService(3, i, t.chatDomain)
 361                 }))
 362             }
 363         }
 364     })
 365 }
 366
 367 function log(t, e) {
 368     var s = "";
 369     for (i = 2; arguments.length > i; i++) s = s + arguments[i] + "|||";
 370     var a = decodeURIComponent(escape(getCookie("pin"))),
 371         n = "http://csc.360buy.com/log.ashx?type1=$type1$&type2=$type2$&data=$data$&pin=$pin$&referrer=$referrer$&jinfo=$jinfo$&callback=?",
 372         o = n.replace(/\$type1\$/, escape(t));
 373     o = o.replace(/\$type2\$/, escape(e)), o = o.replace(/\$data\$/, escape(s)), o = o.replace(/\$pin\$/, escape(a)), o = o.replace(/\$referrer\$/, escape(document.referrer)), o = o.replace(/\$jinfo\$/, escape("")), $.getJSON(o, function() {});
 374     var r = ("https:" == document.location.protocol ? "https://mercuryssl" : "http://mercury") + ".jd.com/log.gif" + "?t=other.000000" + "&m=UA-J2011-1" + "&v=" + encodeURIComponent("t1=" + t + "$t2=" + e + "$p0=" + s) + "&ref=" + encodeURIComponent(document.referrer) + "&rm=" + (new Date).getTime(),
 375         c = new Image(1, 1);
 376     c.src = r
 377 }
 378
 379 function clsPVAndShowLog(t, e, i, s) {
 380     var a = t + "." + i + "." + skutype(e) + "." + s;
 381     log("d", "o", a)
 382 }
 383
 384 function clsClickLog(t, e, i, s, a, n) {
 385     var o = t + "." + s + "." + skutype(e);
 386     appendCookie(n, i, o), log("d", "o", o + ".c")
 387 }
 388
 389 function appendCookie(reCookieName, sku, key) {
 390     var reWidsCookies = eval("(" + getCookie(reCookieName) + ")");
 391     (null == reWidsCookies || "" == reWidsCookies) && (reWidsCookies = {}), null == reWidsCookies[key] && (reWidsCookies[key] = "");
 392     var pos = reWidsCookies[key].indexOf(sku);
 393     0 > pos && (reWidsCookies[key] = reWidsCookies[key] + "," + sku), setCookie(reCookieName, $.toJSON(reWidsCookies), 15)
 394 }
 395
 396 function skutype(t) {
 397     if (t) {
 398         var e = ("" + t).length;
 399         return 10 == e ? 1 : 0
 400     }
 401     return 0
 402 }
 403
 404 function setCookie(t, e, i) {
 405     var s = i,
 406         a = new Date;
 407     a.setTime(a.getTime() + 1e3 * 60 * 60 * 24 * s), document.cookie = t + "=" + escape(e) + ";expires=" + a.toGMTString() + ";path=/;domain=.jd.com"
 408 }
 409
 410 function getCookie(t) {
 411     var e = document.cookie.match(RegExp("(^| )" + t + "=([^;]*)(;|$)"));
 412     return null != e ? unescape(e[2]) : null
 413 }
 414
 415 function clsLog(t, e, i, s, a) {
 416     appendCookie(a, i, t), i = i.split("#")[0], log(3, t, i)
 417 }
 418
 419 function mark(t, e) {
 420     log(1, e, t)
 421 }
 422
 423 function CombineShare(t) {
 424     this.$el = t.$el, this.imgs = "string" == typeof t.imgs ? [t.imgs] : t.imgs, this.onbeforeOpen = t.onbeforeOpen || function() {}, t.title.length > 27 && (t.title = t.title.substr(0, 27) + "..."), this.shareParam = {
 425         sid: t.sid,
 426         rid: t.rid,
 427         title: t.title,
 428         content: t.content,
 429         imgUrl: this.imgs[0],
 430         url: t.url
 431     }, this.shareMap = {
 432         T2: {
 433             name: "sina",
 434             text: "\u65b0\u6d6a\u5fae\u535a",
 435             url: "http://share.jd.com/sina/login.action"
 436         },
 437         T3: {
 438             name: "qqWeibo",
 439             text: "\u817e\u8baf\u5fae\u535a",
 440             url: "http://share.jd.com/qqweibo/login.action"
 441         },
 442         T4: {
 443             name: "renren",
 444             text: "\u4eba\u4eba\u7f51",
 445             url: "http://share.jd.com/renren/login.action"
 446         },
 447         T5: {
 448             name: "kaixin",
 449             text: "\u5f00\u5fc3\u7f51",
 450             url: "http://share.jd.com/kaixin001/login.action"
 451         },
 452         T6: {
 453             name: "douban",
 454             text: "\u8c46\u74e3\u7f51",
 455             url: "http://share.jd.com/douban/login.action"
 456         }
 457     }, this.init()
 458 }
 459 if (G === void 0) var G = window.G = {};
 460 (function(t) {
 461     "object" == typeof pageConfig.product && (t.sku = pageConfig.product.skuid, t.key = pageConfig.product.skuidkey, t.url = pageConfig.product.href, t.src = pageConfig.product.src, t.name = pageConfig.product.name, t.mdPerfix = 1 == pageConfig.product.type ? "CR" : "GR", t.mbPerfix = 1 == pageConfig.product.type ? "3C" : "GM", t.mp = pageConfig.product.mp, t.jp = pageConfig.product.jp, t.cat = pageConfig.product.cat, t.orginSku = pageConfig.product.orginSkuid || t.sku, t.isJd = 1e9 > t.sku, t.isPop = t.sku > 1e9, t.isCellphone = 655 == pageConfig.product.cat[2] || 6881 == pageConfig.product.cat[2] || 6882 == pageConfig.product.cat[2], t.isArray = function(t) {
 462         return "[object Array]" === Object.prototype.toString.call(t)
 463     }, t.isObject = function(t) {
 464         return "[object Object]" === Object.prototype.toString.call(t)
 465     }, t.isEmptyObject = function(t) {
 466         var e;
 467         for (e in t) return !1;
 468         return !0
 469     }, t.isNothing = function(e) {
 470         return t.isArray(e) ? 1 > e.length : !e
 471     }, t.getRandomArray = function(t, e) {
 472         return e = e || 1, t.sort(function() {
 473             return Math.random() - .5
 474         }), t.slice(0, e)
 475     }), t.getPriceNum = function(t, e, i, s, a) {
 476         t = "string" == typeof t ? [t] : t, i = i || $("body"), s = s || "J-p-";
 477         var n = "";
 478         if (null !== e && (n = readCookie("ipLoc-djd") ? "&area=" + readCookie("ipLoc-djd").replace(/-/g, "_") : "&area=1"), void 0 !== t) {
 479             var o = "http://p.3.cn/prices/mgets?type=1&skuIds=J_" + t.join(",J_") + n;
 480             $.ajax({
 481                 url: o,
 482                 dataType: "jsonp",
 483                 success: function(t) {
 484                     if (!t && !t.length) return !1;
 485                     for (var e = 0; t.length > e; e++) {
 486                         if (!t[e].id) return !1;
 487                         var n = t[e].id.replace("J_", ""),
 488                             r = parseFloat(t[e].p);
 489                         parseFloat(t[e].m), r > 0 ? i.find("." + s + n).html("\uffe5" + t[e].p) : i.find("." + s + n).html("\u6682\u65e0\u62a5\u4ef7"), "function" == typeof a && a(n, t[e], o)
 490                     }
 491                 }
 492             })
 493         }
 494     }, t.serializeUrl = function(t) {
 495         var e, i, s, a, n = t.indexOf("?"),
 496             o = t.substr(0, n),
 497             r = t.substr(n + 1),
 498             c = r.split("&"),
 499             d = c.length,
 500             l = {};
 501         for (e = 0; d > e; e++) i = c[e].split("="), s = i[0], a = i[1], l[s] = a;
 502         return {
 503             url: o,
 504             param: l
 505         }
 506     }, t.setScroll = function(t) {
 507         var e = "string" == typeof t ? $(t) : $("body");
 508         e.find(".p-scroll").each(function() {
 509             var t = $(this).find(".p-scroll-wrap"),
 510                 e = $(this).find(".p-scroll-next"),
 511                 i = $(this).find(".p-scroll-prev");
 512             t.find("li").length > 4 && t.imgScroll({
 513                 showControl: !0,
 514                 width: 30,
 515                 height: 30,
 516                 visible: 4,
 517                 step: 1,
 518                 prev: i,
 519                 next: e
 520             })
 521         })
 522     }, t.thumbnailSwitch = function(t, e, i, s, a) {
 523         var n = t.find("img"),
 524             o = a || "mouseover";
 525         n.bind(o, function() {
 526             var s = $(this),
 527                 a = s.attr("src"),
 528                 n = a.replace(/\/n\d\//, i);
 529             e.attr("src", n), t.removeClass("curr"), s.parent().addClass("curr")
 530         })
 531     }, t.getCommentNum = function(t, e) {
 532         var i = pageConfig.product.commentCount;
 533         return i !== void 0 ? e(i) : (window.getCommentCount = function(t) {
 534             "function" == typeof e && e(t), t && pageConfig.product && (pageConfig.product.commentCount = t);
 535             try {
 536                 delete window.getCommentCount
 537             } catch (i) {}
 538         }, $.ajax({
 539             url: "http://club.jd.com/ProductPageService.aspx?method=GetCommentSummaryBySkuId&referenceId=" + t + "&callback=getCommentCount",
 540             dataType: "script",
 541             cache: !0
 542         }), void 0)
 543     }, t.getCommentData = function(t, e, i, s, a) {
 544         t = t || [], e = e || $("body").eq(0), i = i || "p-comm-", s = s || "(\u5df2\u6709{NUM}\u4eba\u8bc4\u4ef7)", $.ajax({
 545             url: "http://club.jd.com/clubservice.aspx?method=GetCommentsCount&referenceIds=" + t,
 546             dataType: "jsonp",
 547             success: function(t) {
 548                 var e;
 549                 if (t && t.CommentsCount.length) {
 550                     e = t.CommentsCount.length;
 551                     for (var n = 0; e > n; n++) $("." + i + t.CommentsCount[n].SkuId).find(".star").removeClass("sa5").addClass("sa" + t.CommentsCount[n].AverageScore), $("." + i + t.CommentsCount[n].SkuId).html(s.replace("{NUM}", t.CommentsCount[n].CommentCount)), a && a(t.CommentsCount[n].SkuId, t.CommentsCount[n])
 552                 }
 553             }
 554         })
 555     }, t.getUserLevel = function(t) {
 556         switch (t) {
 557             case 50:
 558                 return "\u6ce8\u518c\u7528\u6237";
 559             case 56:
 560                 return "\u94c1\u724c\u7528\u6237";
 561             case 59:
 562                 return "\u6ce8\u518c\u7528\u6237";
 563             case 60:
 564                 return "\u94dc\u724c\u7528\u6237";
 565             case 61:
 566                 return "\u94f6\u724c\u7528\u6237";
 567             case 62:
 568                 return "\u91d1\u724c\u7528\u6237";
 569             case 63:
 570                 return "\u94bb\u77f3\u7528\u6237";
 571             case 64:
 572                 return "\u7ecf\u9500\u5546";
 573             case 65:
 574                 return "VIP";
 575             case 66:
 576                 return "\u4eac\u4e1c\u5458\u5de5";
 577             case -1:
 578                 return "\u672a\u6ce8\u518c";
 579             case 88:
 580                 return "\u53cc\u94bb\u7528\u6237";
 581             case 90:
 582                 return "\u4f01\u4e1a\u7528\u6237";
 583             case 103:
 584                 return "\u4e09\u94bb\u7528\u6237";
 585             case 104:
 586                 return "\u56db\u94bb\u7528\u6237";
 587             case 105:
 588                 return "\u4e94\u94bb\u7528\u6237"
 589         }
 590         return "\u672a\u77e5"
 591     }, t.getNewUserLevel = function(t) {
 592         switch (t) {
 593             case 50:
 594                 return "\u6ce8\u518c\u7528\u6237";
 595             case 56:
 596                 return "\u94dc\u724c\u7528\u6237";
 597             case 59:
 598                 return "\u6ce8\u518c\u7528\u6237";
 599             case 60:
 600                 return "\u94f6\u724c\u7528\u6237";
 601             case 61:
 602                 return "\u94f6\u724c\u7528\u6237";
 603             case 62:
 604                 return "\u91d1\u724c\u7528\u6237";
 605             case 63:
 606                 return "\u94bb\u77f3\u7528\u6237";
 607             case 64:
 608                 return "\u7ecf\u9500\u5546";
 609             case 110:
 610                 return "VIP";
 611             case 66:
 612                 return "\u4eac\u4e1c\u5458\u5de5";
 613             case -1:
 614                 return "\u672a\u6ce8\u518c";
 615             case 88:
 616                 return "\u94bb\u77f3\u7528\u6237";
 617             case 90:
 618                 return "\u4f01\u4e1a\u7528\u6237";
 619             case 103:
 620                 return "\u94bb\u77f3\u7528\u6237";
 621             case 104:
 622                 return "\u94bb\u77f3\u7528\u6237";
 623             case 105:
 624                 return "\u94bb\u77f3\u7528\u6237"
 625         }
 626         return "\u672a\u77e5"
 627     }, t.calculatePrice = function(t, e) {
 628         for (var i = $(t).parents(e), s = i.find(".master input").attr("wmeprice"), a = i.find("input:checked"), n = a.length, o = i.find(".infos .res-totalprice"), r = i.find(".infos .res-jdprice"), c = 0, d = 0, l = "http://cart.jd.com/cart/dynamic/reBuyForOrderCenter.action?wids={SKUS}&nums={NUMS}", p = i.find(".btn-buy"), u = [], m = 0; a.length > m; m++) c += parseFloat(a.eq(m).attr("wmaprice")), d += parseFloat(a.eq(m).attr("wmeprice")), u.push(a.eq(m).attr("skuid"));
 629         "" == s || 0 >= Number(s) || 0 >= Number($(t).attr("wmeprice")) ? (o.text("\u6682\u65e0\u62a5\u4ef7"), r.text("\u6682\u65e0\u62a5\u4ef7")) : (o.hasClass("saving") || o.text("\uffe5 " + c.toFixed(2)), r.text("\uffe5 " + d.toFixed(2)), p.attr("href", l.replace("{SKUS}", u.join(",")).replace("{NUMS}", u.join(",").replace(/\d+/g, 1))), i.find(".infos .p-name span").html("" + (n - 1)))
 630     }, t.sortFitting = function(t, e, i) {
 631         var s = $(i),
 632             a = e,
 633             n = s.find(".suits"),
 634             o = s.find(".stab li"),
 635             r = s.find(".suits .lh"),
 636             c = n.find(‘li[data-cat="‘ + a + ‘"]‘);
 637         if ("all" == e) {
 638             var d = parseInt(n.attr("data-count"));
 639             n.find("li").show(), r.css("width", 166 * d), d > 4 && n.css("overflow-x", "scroll")
 640         } else n.find("li").hide(), c.show(); if (o.removeClass("scurr"), $(t).addClass("scurr"), 1 == !!$(t).attr("data-count")) {
 641             var l = parseInt($(t).attr("data-count"));
 642             n.css("overflow-x", 4 >= l ? "hidden" : "scroll"), r.css("width", 166 * l)
 643         }
 644         n.scrollLeft(0), G.removeLastAdd()
 645     }, t.removeLastAdd = function(t) {
 646         var t = t || $(".suits");
 647         t.find("li").removeClass("last-item"), t.find("li:visible:last").addClass("last-item")
 648     }, t.getNewCLK = function(t, e) {
 649         var i = "http://mercury.jd.com/log.gif?",
 650             s = "src=" + t.name + "$action=" + t.action;
 651         t.csku && (s += "$csku=" + t.csku.join(",")), t.sku && (s += "$sku=" + t.sku), t.index !== void 0 && (s += "$index=" + t.index);
 652         var a = {
 653             t: t.id || (1 == pageConfig.product.type ? "rec.993003" : "rec.993001"),
 654             v: s,
 655             m: t.m || "UA-J2011-1",
 656             ref: t.ref || document.referrer,
 657             random: t.random || Math.random()
 658         };
 659         return e !== void 0 ? i + $.param(a) : (sendRequest(i + $.param(a)), void 0)
 660     }, t.checkLogin = function(t) {
 661         "function" == typeof t && $.getJSON("http://passport.jd.com/loginservice.aspx?method=Login&callback=?", function(e) {
 662             e.Identity && t(e.Identity)
 663         })
 664     }, t.insertStyles = function(t) {
 665         var e = document,
 666             i = e.getElementsByTagName("head"),
 667             s = e.createElement("style"),
 668             a = e.createElement("link");
 669         if (/\.css$/.test(t)) a.rel = "stylesheet", a.type = "text/css", a.href = t, i.length ? i[0].appendChild(a) : e.documentElement.appendChild(a);
 670         else {
 671             if (s.setAttribute("type", "text/css"), s.styleSheet) s.styleSheet.cssText = t;
 672             else {
 673                 var n = e.createTextNode(t);
 674                 s.appendChild(n)
 675             }
 676             i.length && i[0].appendChild(s)
 677         }
 678     }, t.showServiceDesc = function(t) {
 679         return t > 1 && 5 > t ? "\u4e3a\u60a8\u8d2d\u4e70\u7684\u7535\u5668\u4ea7\u54c1\u5ef6\u957f\u4fdd\u4fee\u671f\u3001\u62d3\u5c55\u4fdd\u4fee\u8303\u56f4\u3002" : t > 5 && 8 > t ? "\u4e3a\u60a8\u8d2d\u4e70\u7684\u7535\u5668\u4ea7\u54c1\u7531\u4e8e\u610f\u5916\u5bfc\u81f4\u7684\u529f\u80fd\u6545\u969c\u63d0\u4f9b\u7ef4\u4fee\u6216\u66f4\u6362\u670d\u52a1\u3002" : 9 == t ? "\u4e3a\u60a8\u8d2d\u4e70\u7684800\u5143\u4ee5\u4e0b\u7684\u7535\u5668\u4ea7\u54c1\u63d0\u4f9b\u7b2c\u4e8c\u5e74\u4ee5\u6362\u4ee3\u4fee\u670d\u52a1\u3002" : 11 == t ? "\u4e13\u5bb6\u7528\u8fdc\u7a0b\u6280\u672f\u5e2e\u60a8\u89e3\u51b3\u7535\u8111\u8f6f\u4ef6\u7684\u4f7f\u7528\u95ee\u9898\u3002" : 15 == t ? "\u4e13\u5bb6\u4e0a\u95e8\u5e2e\u60a8\u5b89\u88c5\u8c03\u8bd5\u8def\u7531\u5668\uff08\u4e0d\u542b\u786c\u4ef6\uff09\u3002" : 16 == t ? "\u4e13\u5bb6\u4e0a\u95e8\u5e2e\u60a8\u5b89\u88c5\u8c03\u8bd5\u7f51\u5361\u3002" : 17 == t ? "\u4e13\u5bb6\u4e0a\u95e8\u5e2e\u60a8\u5b89\u88c5\u8c03\u8bd5\u6253\u5370\u673a\u3002" : 18 == t ? "\u4e13\u5bb6\u4e0a\u95e8\u5b89\u88c5\u7cfb\u7edf\u3001\u8f6f\u4ef6\uff0c\u8bbe\u7f6e\u7f51\u7edc\u3002(\u9700\u6b63\u7248)ID" : void 0
 680     }, t.clsLog = function(t, e, i, s, a) {
 681         var n = new Image,
 682             o = "http://mercury.jd.com/log.gif?t=rec." + t + "&v=" + encodeURIComponent("src=rec$action=" + e + "$enb=1$sku=" + i + "$csku=" + s + "$index=" + (a || 0) + "$expid=0") + "&m=UA-J2011-1&ref=" + encodeURIComponent(document.referrer) + "&random=" + Math.random();
 683         n.setAttribute("src", o)
 684     }, t.Countdown = {
 685         init: function(t, e) {
 686             this.seconds = t, this.timer = null, this.callback = e || function() {}, this.loopCount()
 687         },
 688         loopCount: function() {
 689             var t = this,
 690                 e = t.formatSeconds(t.seconds);
 691             t.callback(e), this.timer = setInterval(function() {
 692                 var e = t.formatSeconds(t.seconds);
 693                 0 === e.d && 0 === e.h && 0 === e.m && 0 === e.s ? clearInterval(t.timer) : t.seconds--, t.callback(e)
 694             }, 1e3)
 695         },
 696         formatSeconds: function(t) {
 697             var e = Math.floor(t / 86400),
 698                 i = Math.floor(t % 86400 / 3600),
 699                 s = Math.floor(t % 86400 % 3600 / 60),
 700                 t = t % 86400 % 3600 % 60;
 701             return {
 702                 d: e,
 703                 h: i,
 704                 m: s,
 705                 s: t
 706             }
 707         }
 708     }, t.onAttr = function(t, e) {
 709         var i = RegExp(t),
 710             s = pageConfig.product.specialAttrs;
 711         return s && s.length ? (s = s.join("^"), i.test(s) ? ("function" == typeof e && e(), !0) : !1) : !1
 712     }
 713 })(G), pageConfig.serviceYB = "enabled", pageConfig.btnBaiTiaoFq = "enabled",
 714     function(t) {
 715         t.fn.floatNav = function(e) {
 716             var i = t.extend({
 717                     start: null,
 718                     end: null,
 719                     fixedClass: "nav-fixed",
 720                     anchor: null,
 721                     targetEle: null,
 722                     range: 0,
 723                     onStart: function() {},
 724                     onEnd: function() {}
 725                 }, e),
 726                 s = t(this),
 727                 a = s.height(),
 728                 n = s.width(),
 729                 o = t(‘<div class="float-nav-wrap"/>‘);
 730             return s.css({
 731                 height: a,
 732                 width: n
 733             }), s.parent().hasClass("float-nav-wrap") || s.wrap(o.css("height", a)), t(window).bind("scroll", function() {
 734                 var e = t(document).scrollTop(),
 735                     a = s.find("a").eq(0).attr("href"),
 736                     n = i.start || s.parent(".float-nav-wrap").offset().top,
 737                     o = i.targetEle ? t(i.targetEle).offset().top : 1e4;
 738                 e > n && (i.end || o) - i.range > e ? (s.addClass(i.fixedClass), i.anchor && a !== i.anchor && s.find(".toggle-link").attr("href", i.anchor), i.onStart && i.onStart()) : (s.removeClass(i.fixedClass), i.anchor && s.find(".toggle-link").attr("href", "javascript:;"), i.onEnd && i.onEnd())
 739             }), this
 740         }
 741     }(jQuery),
 742     function(t) {
 743         var e = function(e, i) {
 744             this.opts = t.extend({
 745                 start: null,
 746                 end: null,
 747                 startThrehold: 0,
 748                 stopThrehold: 0,
 749                 onStart: function() {},
 750                 onEnd: function() {},
 751                 onScroll: function() {}
 752             }, i), this.$o = t(e), this.init()
 753         };
 754         e.prototype = {
 755             init: function() {
 756                 this.bindEvent(), t(window).bind("scroll", function() {
 757                     t(this).trigger("onscroller")
 758                 })
 759             },
 760             bindEvent: function() {
 761                 var e, i = this;
 762                 t(window).bind("onscroller", function() {
 763                     clearTimeout(e), e = setTimeout(function() {
 764                         i.onScroll(), clearTimeout(e)
 765                     }, 300)
 766                 })
 767             },
 768             onScroll: function() {
 769                 var e = t(document).scrollTop(),
 770                     i = this.opts.start || this.$o.offset().top,
 771                     s = this.opts.end || i + this.$o.outerHeight(),
 772                     a = t(window).height();
 773                 e > i + this.opts.startThrehold && s - a - this.opts.stopThrehold > e ? this.opts.onStart(this) : this.opts.onEnd(this), this.opts.onScroll(this)
 774             }
 775         }, t.fn.scroller = function(i, s) {
 776             return this.each(function() {
 777                 var a = new e(this, i, s);
 778                 t(this).data("scroller", a)
 779             })
 780         }
 781     }(jQuery),
 782     function(t) {
 783         var e = function(e, i, s) {
 784             this.opts = t.extend({
 785                 content: e.title || "",
 786                 width: null,
 787                 oTop: 0,
 788                 oLeft: 5,
 789                 zIndex: 1,
 790                 event: null,
 791                 position: "top",
 792                 close: !1,
 793                 autoClose: !1
 794             }, i), this.$obj = t(e), this.callback = s || function() {}, this.init()
 795         };
 796         e.prototype = {
 797             init: function() {
 798                 var t = Math.random().toString(16).substring(2);
 799                 this.id = "TIP-" + t, this.insertStyles(‘.Jtips { position: relative; float:left; display:none; } .Jtips-close { position:absolute; color:#ff6600; font:12px "simsun"; cursor:pointer; } .Jtips-top .Jtips-close { right:1px; top:0px; } .Jtips-bottom .Jtips-close { right:1px; top:5px; } .Jtips-left .Jtips-close { right:6px; top:1px; } .Jtips-right .Jtips-close { right:1px; top:1px; } .Jtips-arr { position: absolute; background-image:url(http://misc.360buyimg.com/product/skin/2012/i/arrow.gif); background-repeat:no-repeat; overflow:hidden; } .Jtips-top { padding-bottom: 5px; } .Jtips-top .Jtips-arr { left:10px; bottom:0; width:11px; height:6px; background-position:0 -5px; _bottom:-1px; } .Jtips-bottom { padding-top: 5px; } .Jtips-bottom .Jtips-arr { top:0; left:10px; width:11px; height:6px; background-position:0 0; } .Jtips-left { padding-right: 5px;  } .Jtips-left .Jtips-arr { right:0; top:10px; width:6px; height:11px; background-position:-5px 0;} .Jtips-right {padding-left: 5px; } .Jtips-right .Jtips-arr {top:10px; left:0; width:6px; height:11px; background-position:0 0;  } .Jtips-con { float:left; padding:10px; background:#fffdee; border:1px solid #edd28b; color:#ff6501; -moz-box-shadow: 0 0 2px 2px #eee; -webkit-box-shadow: 0 0 2px 2px #eee; box-shadow: 0 0 2px 2px #eee; } .Jtips-con a,.Jtips-con a:hover,.Jtips-con a:visited { color:#005fab; text-decoration:none; } .Jtips-con a:hover { text-decoration: underline; }‘), this.setTips(), null !== this.opts.event && this.bindEvent()
 800             },
 801             insertStyles: function(t) {
 802                 var e = document,
 803                     i = e.getElementsByTagName("head"),
 804                     s = e.createElement("style"),
 805                     a = e.createElement("link");
 806                 if (/\.css$/.test(t)) a.rel = "stylesheet", a.type = "text/css", a.href = t, i.length ? i[0].appendChild(a) : e.documentElement.appendChild(a);
 807                 else {
 808                     if (s.setAttribute("type", "text/css"), s.styleSheet) s.styleSheet.cssText = t;
 809                     else {
 810                         var n = e.createTextNode(t);
 811                         s.appendChild(n)
 812                     }
 813                     i.length && i[0].appendChild(s)
 814                 }
 815             },
 816             bindEvent: function() {
 817                 var t = this;
 818                 this.opts.autoClose ? this.$obj.hover(function() {
 819                     t.show()
 820                 }, function() {
 821                     t.hide()
 822                 }) : this.$obj.unbind(this.opts.event).bind(this.opts.event, function() {
 823                     t.show()
 824                 })
 825             },
 826             bindClose: function(t) {
 827                 var e = this;
 828                 t.find(".Jtips-close").bind("click", function() {
 829                     e.remove()
 830                 })
 831             },
 832             getPosition: function() {
 833                 var t = this.$obj;
 834                 return {
 835                     w: t.outerWidth(),
 836                     h: t.outerHeight(),
 837                     oTop: t.offset().top,
 838                     oLeft: t.offset().left
 839                 }
 840             },
 841             setPosition: function(t, e) {
 842                 var i = this.getPosition();
 843                 if (t.css({
 844                     position: "absolute",
 845                     "z-index": this.opts.zIndex
 846                 }), "left" === e && t.css({
 847                     top: i.oTop - 10 + this.opts.oTop,
 848                     left: i.oLeft - this.tips.outerWidth() - this.opts.oLeft
 849                 }), "right" === e && t.css({
 850                     left: i.oLeft + i.w + this.opts.oLeft,
 851                     top: i.oTop - 10 + this.opts.oTop
 852                 }), "top" === e && t.css({
 853                     left: i.oLeft - 10 + this.opts.oLeft,
 854                     top: i.oTop - this.tips.outerHeight() - this.opts.oTop
 855                 }), "bottom" === e && t.css({
 856                     left: i.oLeft - 10 + this.opts.oLeft,
 857                     top: i.oTop + i.h + this.opts.oTop
 858                 }), this.opts.autoClose) {
 859                     var s = this.$obj.css("position");
 860                     this.$obj.css({
 861                         position: "static" == s ? "relative" : s
 862                     }), t.css({
 863                         left: this.opts.oLeft,
 864                         top: this.$obj.outerHeight()
 865                     })
 866                 }
 867             },
 868             setTips: function() {
 869                 var e = this.opts.close ? ‘<div class="Jtips-close">&times;</div>‘ : "",
 870                     i = t(‘<div data-tipID="‘ + this.id + ‘" class="Jtips Jtips-‘ + this.opts.position + ‘"><div class="Jtips-arr"></div>‘ + e + ‘<div class="Jtips-con">‘ + this.opts.content + "</div></div>"),
 871                     s = this;
 872                 1 > t(‘[data-tipID="‘ + this.id + ‘"]‘).length && (this.tips = i, this.opts.autoClose ? this.$obj.append(i) : t("body").eq(0).append(i), this.tips.css("width", this.opts.width || i.width()).find(".Jtips-con").css("width", (this.opts.width || i.width()) - 20), this.setPosition(i, this.opts.position), this.bindClose(i), t(window).resize(function() {
 873                     s.setPosition(i, s.opts.position)
 874                 }), "function" == typeof this.callback && this.callback.apply(this.$obj, [i]))
 875             },
 876             show: function() {
 877                 this.tips.show()
 878             },
 879             hide: function() {
 880                 this.tips.hide()
 881             },
 882             remove: function() {
 883                 this.tips.remove()
 884             }
 885         }, t.fn.Jtips = function(i, s) {
 886             return this.each(function() {
 887                 var a = new e(this, i, s);
 888                 t(this).data("Jtips", a)
 889             })
 890         }
 891     }(jQuery),
 892     function(t) {
 893         t.fn.jqueryzoom = function(e) {
 894             var i = {
 895                 xzoom: 200,
 896                 yzoom: 200,
 897                 offset: 10,
 898                 position: "right",
 899                 lens: 1,
 900                 preload: 1
 901             };
 902             e && t.extend(i, e);
 903             var s = "";
 904             t(this).hover(function() {
 905                 function e(t) {
 906                     this.x = t.pageX, this.y = t.pageY
 907                 }
 908                 var a = t(this).offset().left,
 909                     n = t(this).offset().top,
 910                     o = t(this).find("img").get(0).offsetWidth,
 911                     r = t(this).find("img").get(0).offsetHeight;
 912                 s = t(this).find("img").attr("alt");
 913                 var c = t(this).find("img").attr("jqimg");
 914                 t(this).find("img").attr("alt", ""), 0 == t("div.zoomdiv").get().length && (t(this).after("<div class=‘zoomdiv‘><img class=‘bigimg‘ src=‘" + c + "‘/></div>"), t(this).append("<div class=‘jqZoomPup‘>&nbsp;</div>")), t("div.zoomdiv").width(i.xzoom), t("div.zoomdiv").height(i.yzoom), t("div.zoomdiv").show(), i.lens || t(this).css("cursor", "crosshair"), t(document.body).mousemove(function(s) {
 915                     mouse = new e(s);
 916                     var c = t(".bigimg").get(0).offsetWidth,
 917                         d = t(".bigimg").get(0).offsetHeight,
 918                         l = "x",
 919                         p = "y";
 920                     if (isNaN(p) | isNaN(l)) {
 921                         var p = c / o,
 922                             l = d / r;
 923                         t("div.jqZoomPup").width(i.xzoom / (1 * p)), t("div.jqZoomPup").height(i.yzoom / (1 * l)), i.lens && t("div.jqZoomPup").css("visibility", "visible")
 924                     }
 925                     xpos = mouse.x - t("div.jqZoomPup").width() / 2 - a, ypos = mouse.y - t("div.jqZoomPup").height() / 2 - n, i.lens && (xpos = a > mouse.x - t("div.jqZoomPup").width() / 2 ? 0 : mouse.x + t("div.jqZoomPup").width() / 2 > o + a ? o - t("div.jqZoomPup").width() - 2 : xpos, ypos = n > mouse.y - t("div.jqZoomPup").height() / 2 ? 0 : mouse.y + t("div.jqZoomPup").height() / 2 > r + n ? r - t("div.jqZoomPup").height() - 2 : ypos), i.lens && t("div.jqZoomPup").css({
 926                         top: ypos,
 927                         left: xpos
 928                     }), scrolly = ypos, t("div.zoomdiv").get(0).scrollTop = scrolly * l, scrollx = xpos, t("div.zoomdiv").get(0).scrollLeft = scrollx * p
 929                 })
 930             }, function() {
 931                 t(this).children("img").attr("alt", s), t(document.body).unbind("mousemove"), i.lens && t("div.jqZoomPup").remove(), t("div.zoomdiv").remove()
 932             }), count = 0, i.preload && (t("body").append("<div style=‘display:none;‘ class=‘jqPreload" + count + "‘>360buy</div>"), t(this).each(function() {
 933                 var e = t(this).children("img").attr("jqimg"),
 934                     i = jQuery("div.jqPreload" + count).html();
 935                 jQuery("div.jqPreload" + count).html(i + ‘<img src="‘ + e + ‘">‘)
 936             }))
 937         }
 938     }(jQuery);
 939 var suit_TPL = {
 940         tabs: ‘<ul class="stab lh">{for item in packResponseList}<li class="fore${parseInt(item_index)+1}{if item_index==0} scurr{/if}" data-widget="tab-item" data-cat="${item.packId}" data-suit="${item.packName}" title="${item.packName}">{if G.cat[2]==694}${item.packName.substr(0, 6)}{else}\u4f18\u60e0\u5957\u88c5${parseInt(item_index)+1}{/if}</li>{/for}</ul>‘,
 941         cons: ‘{for item in packResponseList}<div data-widget="tab-content" packPrice="${item.packPrice.amount}" packListPrice="${parseFloat((item.baseDiscount||0)+item.packPrice.amount).toFixed(2)}" discount="${(item.baseDiscount||item.discount.amount)}" data-cat="${item.packId}" class="stabcon{if parseInt(item_index) !== 0} none{/if}"><div class="master">    <s></s>    <div class="p-img">        <a href="http://item.jd.com/‘ + G.sku + ‘.html" target="_blank"><img src="${pageConfig.FN_GetImageDomain(‘ + G.sku + ")}n4/" + pageConfig.product.src + ‘" height="100" width="100"></a>‘ + "    </div>" + ‘    <div class="p-name">‘ + ‘        <a href="http://item.jd.com/‘ + G.sku + ‘.html" target="_blank">‘ + G.name + "</a>" + "    </div>" + "</div>" + ‘<div class="suits">‘ + ‘    <ul class="lh" style="width:${(item.productList.length-1)*165}px">‘ + "{for itemList in item.productList}" + "{if itemList.skuId == G.sku}" + "{else}" + ‘        <li data-sku="${itemList.skuId}" onclick=\‘G.getNewCLK({ name: "yhtz", action: "1", sku:${G.sku}, csku:[${itemList.skuId}], index:${itemList_index} })\‘>‘ + "            <s></s>" + ‘            <div class="p-img">‘ + ‘                <a href="http://item.jd.com/${itemList.skuId}.html" target="_blank"><img  {if Number(item_index)!=0}data-{/if}src="${pageConfig.FN_GetImageDomain(itemList.skuId)}n4/${itemList.skuPicUrl}"  height="100" width="100"></a>‘ + "            </div>" + ‘            <div class="p-name">‘ + ‘                <a href="http://item.jd.com/${itemList.skuId}.html" target="_blank">${itemList.skuName}</a>‘ + "            </div>" + "        </li>" + "{/if}" + "{/for}" + "    </ul>" + "</div>" + ‘<div class="infos">‘ + "    <s></s>" + ‘    <div class="p-name">‘ + ‘        <a href="http://www.jd.com/suite/${item.packId}-${skuId}.html">${item.packName}</a>‘ + "    </div>" + ‘    <div class="p-price">\u5957&nbsp;&nbsp;\u88c5&nbsp;&nbsp;\u4ef7\uff1a‘ + ‘        <strong class="fitting-price">${parseFloat(item.packPrice.amount).toFixed(2)}</strong>‘ + "    </div>" + ‘    <div class="p-price">\u4eac \u4e1c \u4ef7\uff1a‘ + ‘        <del class="orign-price">${parseFloat((item.baseDiscount||0)+item.packPrice.amount).toFixed(2)}</del>‘ + "    </div>" + ‘    <div class="p-saving">\u7acb\u5373\u8282\u7701\uff1a‘ + ‘        <span class="fitting-saving">${parseFloat(item.baseDiscount||item.discount.amount).toFixed(2)}</span>‘ + "    </div>" + ‘    <div class="btns">‘ + ‘        <a class="btn-buy" href="http://jd2008.jd.com/purchase/initcart.aspx?pId=${item.packId}&pCount=1&pType=2" clstag="shangpin|keycount|product|{if G.isPop}popbuysuit{else}zybuysuit{/if}">\u8d2d\u4e70\u5957\u88c5</a>‘ + "    </div>" + "</div>" + "</div>" + "{/for}"
 942     },
 943     recoFittings_TPL = {
 944         tabs: ‘<li class="fore scurr" onclick="G.sortFitting(this, \‘all\‘, \‘#tab-reco\‘)">\u5168\u90e8\u914d\u4ef6</li>{for item in fittingType}<li class="fore${parseInt(item_index)+1}" data-count="${item.number}" data-cat="${item.sort}" onclick="G.sortFitting(this, ${item.sort}, \‘#tab-reco\‘)">${item.name}(${item.number})</li>{/for}‘,
 945         cons: ‘<div class="master">    <s></s>    <div class="p-img">        <a href="http://item.jd.com/${master.skuid}.html" target="_blank"><img src="${pageConfig.FN_GetImageDomain(master.skuid)}n4/${master.pic}" height="100" width="100"></a>    </div>    <div class="p-name">        <a href="http://item.jd.com/${master.skuid}.html" target="_blank">${master.name}</a>    </div>    <div class="p-price"><input id="inp_${G.sku}_reco" type="checkbox" onclick="return false;" onchange="return false" wmeprice="{if master.price==""}0.00{else}${master.price}{/if}" wmaprice="${master.discount}" skuid="${master.skuid}" checked/> ${master.price}</div></div><div class="suits" data-count="${fittings.length}" style="overflow-x:{if parseInt(fittings.length)>(pageConfig.wideVersion&&pageConfig.compatible ? 4:3)}scroll{else}hidden{/if}">    <ul class="lh" style="width:${parseInt(fittings.length)*165}px">        {for item in fittings}        <li data-cat="${item.sort}" data-push="${pageConfig.product.cbRecoFittings.push(item.skuid)}" onclick=\‘G.getNewCLK({ name: "tjpj", action: "1", sku:${G.sku}, csku: [${item.skuid}], index:${item_index}  })\‘>            <s></s>            <div class="p-img">                <a href="http://item.jd.com/${item.skuid}.html" target="_blank"><img src="${pageConfig.FN_GetImageDomain(item.skuid)}n4/${item.pic}"  height="100" skuidth="100"></a>            </div>            <div class="p-name">                <a href="http://item.jd.com/${item.skuid}.html" target="_blank">${item.name}</a>            </div>            <div class="choose">                <input type="checkbox" id="inp_${item.skuid}" onclick="G.calculatePrice(this, \‘#tab-reco\‘)" wmaprice="${item.discount}" wmeprice="${item.price}" skuid="${item.skuid}" />                <label for="inp_${item.skuid}" class="p-price">                    <strong class="J-p-${item.skuid}"></strong>                </label>            </div>        </li>        {/for}    </ul></div><div class="infos">    <s></s>    <div class="p-name">        <em>\u5df2\u9009\u62e9<span>0</span>\u4e2a\u914d\u4ef6</em>    </div>    <div class="p-price">\u642d&nbsp;&nbsp;\u914d&nbsp;&nbsp;\u4ef7\uff1a        <strong class="res-jdprice">{if master.price==""}\u6682\u65e0\u62a5\u4ef7{else}\uffe5 ${master.price}{/if}</strong>    </div>    <div class="p-saving">\u83b7\u5f97\u4f18\u60e0\uff1a        <span class="res-totalprice saving">\uffe5 ${master.discount}</span>    </div>    <div class="btns">        <a class="btn-buy" href="http://cart.jd.com/cart/dynamic/reBuyForOrderCenter.action?wids=${master.skuid}&nums=1" clstag="shangpin|keycount|product|tuijianpeijianbt">\u7acb\u5373\u8d2d\u4e70</a>    </div></div>‘
 946     },
 947     suitRecommendNew_TPL = ‘<div class="stabcon"><div class="master">    <s></s>    <div class="p-img">        <a href="http://item.jd.com/${G.sku}.html" target="_blank"><img src="${pageConfig.FN_GetImageDomain(G.sku)}n4/${G.src}" height="100" width="100"></a>    </div>    <div class="p-name">        <a href="http://item.jd.com/${G.sku}.html" target="_blank">${G.name}</a>    </div>    <div class="p-price none"><input type="checkbox" id="inp_${G.sku}_hot" onclick="return false;" onchange="return false" wmaprice="${G.mp}" wmeprice="${G.jp}" skuid="${G.sku}" checked/> ${G.jp}</div></div><div class="suits" style="overflow-x:{if parseInt(data.length)>(pageConfig.wideVersion&&pageConfig.compatible ? 4:3)}scroll{else}hidden{/if}">    <ul class="lh" style="width:${parseInt(data.length)*165}px">        {for item in data}        <li data-clk="${item.clk}" data-push="${pageConfig.product.cbCombineBuying.push(item.sku)}" onclick="reClick(\‘${G.mdPerfix}3\‘, \‘${G.sku}\‘, \‘${item.sku}#${item.jp}\‘, \‘${item_index}\‘);">            <s></s>            <div class="p-img">                <a href="http://item.jd.com/${item.sku}.html" target="_blank"><img src="${pageConfig.FN_GetImageDomain(item.sku)}n4/${item.img}"  height="100" width="100"></a>            </div>            <div class="p-name">                <a href="http://item.jd.com/${item.sku}.html" target="_blank">${item.t}</a>            </div>            <div class="choose">                <input type="checkbox" id="inp_${item.sku}" onclick="G.calculatePrice(this, \‘#tab-hot\‘)" wmaprice="${item.mp}" wmeprice="${item.jp}" skuid="${item.sku}" />                <label for="inp_${item.sku}" class="p-price">                    <strong class="J-p-${item.sku}"></strong>                </label>            </div>        </li>        {/for}    </ul></div><div class="infos" onclick="{for item in data}reClick(\‘${G.mdPerfix}3\‘, \‘${G.sku}\‘, \‘${item.sku}#${item.jp}\‘, \‘${item_index}\‘);{/for}">    <s></s>    <div class="p-name">        <a onclick="log(\‘${G.mbPerfix}PopularBuy\‘,\‘click\‘)" href="http://cart.jd.com/cart/dynamic/reBuyForOrderCenter.action?wids=${G.sku}&nums=1">\u8d2d\u4e70\u4eba\u6c14\u7ec4\u5408</a>    </div>    <div class="p-price">\u603b\u4eac\u4e1c\u4ef7\uff1a        <strong class="res-jdprice">\uffe5 ${G.jp}</strong>    </div>    <div class="p-saving">\u603b\u53c2\u8003\u4ef7\uff1a        <del class="res-totalprice">\uffe5 ${G.mp}</del>    </div>    <div class="btns">        <a onclick="log(\‘${G.mbPerfix}PopularBuy\‘,\‘click\‘)" class="btn-buy" href="http://cart.jd.com/cart/dynamic/reBuyForOrderCenter.action?wids=${G.sku}&nums=1" clstag="shangpin|keycount|product|renqizuhebt">\u8d2d\u4e70\u7ec4\u5408</a>    </div></div><div class="clb"></div></div>‘,
 948     addToCart_TPL = ‘<ul class="lh">    {for item in data}    {if Number(item.jp)>=0}    <li data-push="${pageConfig.product.GrecommendSkus.push(item.sku)}" class="fore1" data-clk="${item.clk}">        <div class="p-img"><a target="_blank" href="http://item.jd.com/${item.sku}.html"><img height="100" width="100" alt="${item.t}" data-img="1" src="${pageConfig.FN_GetImageDomain(item.sku)}n4/${item.img}"></a></div>        <div class="p-name"><a target="_blank" href="http://item.jd.com/${item.sku}.html"" title="${item.t}">${item.t}</a></div>        <div class="p-price"><strong class="J-p-${item.sku}">\uffe5${item.jp}</strong></div>    </li>    {/if}    {/for}</ul>‘,
 949     noStock = ‘<ul>    {for item in data}    {if Number(item.jp)>=0}    <li style="width:225px" data-push="${pageConfig.product.GrecommendSkus.push(item.sku)}" class="fore1" data-clk="${item.clk}" onclick="reClick2(\‘${pageConfig.product.cat[0]+"&SORec"}\‘,\‘${pageConfig.product.skuid}\‘, \‘${item.sku}#${item.jp}\‘, ${item_index})">        <div class="p-img"><a target="_blank" href="http://item.jd.com/${item.sku}.html"><img height="130" width="130" alt="${item.t}" data-img="1" src="${pageConfig.FN_GetImageDomain(item.sku)}n3/${item.img}"></a></div>        <div class="p-name"><a target="_blank" href="http://item.jd.com/${item.sku}.html"" title="${item.t}">${item.t}</a></div>        <div class="p-price"><strong class="J-p-${item.sku}">\uffe5${item.jp}</strong></div>    </li>    {/if}    {/for}</ul>‘,
 950     itemDisabledReco = ‘<ul>    {for item in data}    {if Number(item.jp)>=0}    <li style="width:225px;height:225px;" data-push="${pageConfig.product.GrecommendSkus.push(item.sku)}" class="fore1" data-clk="${item.clk}">        <div class="p-img"><a target="_blank" href="http://item.jd.com/${item.sku}.html"><img height="130" width="130" alt="${item.t}" data-img="1" src="${pageConfig.FN_GetImageDomain(item.sku)}n3/${item.img}"></a></div>        <div class="p-name" style="text-align:left;"><a target="_blank" href="http://item.jd.com/${item.sku}.html"" title="${item.t}">${item.t}</a></div>        <div class="p-price" style="text-align:left;"><strong class="J-p-${item.sku}">\uffe5${item.jp}</strong></div>        <div class="p-comm"><a href="http://club.jd.com/review/${item.sku}-1-1.html" class="p-comm-${item.sku}"></a><div>    </li>    {/if}    {/for}</ul>‘,
 951     itemDisabled = ‘<p>\u7c7b\u4f3c\u5546\u54c1</p><div class="controls">{for list in json}<a class="{if list_index==0}curr{/if}" data-widget="tab-item" href="#none">${Number(list_index)+1}</a>{/for}</div><div class="itemover-related-list">    {for list in json}    <ul class="lh {if list_index!=0} hide{/if}" data-widget="tab-content">        {for item in list.tabs}        {if Number(item.jp)>=0}        <li data-push="${pageConfig.product.GrecommendSkus.push(item.sku)}" class="fore1" data-clk="${item.clk}">            <div class="p-img"><a target="_blank" href="http://item.jd.com/${item.sku}.html"><img height="160" width="160" alt="${item.t}" data-img="1" src="${pageConfig.FN_GetImageDomain(item.sku)}n2/${item.img}"></a></div>            <div class="p-name"><a target="_blank" href="http://item.jd.com/${item.sku}.html"" title="${item.t}">${item.t}</a></div>            <div class="p-price"><strong class="J-p-${item.sku}">\uffe5${item.jp}</strong></div>        </li>        {/if}        {/for}    </ul>    {/for}</div>‘,
 952     listBuyBuyNew_TPL = ‘<ul>  {for item in data}  <li class="fore${Number(item_index)+1}" data-clk="${item.clk}" onclick="reClick(\‘${G.mdPerfix}2\‘,\‘${G.sku}\‘,\‘${item.sku}#${item.jp}\‘,${item_index});" class="fore${parseInt(arguments[2])+1}" data-push="${pageConfig.product.GrecommendSkus.push(item.sku)}">      <div class="p-img">          <a target="_blank" title="${item.t}" href="http://item.jd.com/${item.sku}.html"><img height="100" width="100" alt="${item.t}" data-lazyload="${pageConfig.FN_GetImageDomain(item.sku)}n4/${item.img}"></a>      </div>      <div class="p-name">          <a target="_blank" title="${item.t}" href="http://item.jd.com/${item.sku}.html">${item.t}</a>      </div>      <div class="p-price">          <strong class="J-p-${item.sku}">${item.jp}</strong>      </div>  </li>  {/for}</ul>‘,
 953     listBrosweBrosweNew_TPL = ‘<ul>  {for item in data}  <li class="fore${Number(item_index)+1}" data-clk="${item.clk}" onclick="reClick(1,\‘\‘,\‘${item.sku}\‘,${item_index});" class="fore${parseInt(arguments[2])+1}" data-push="${pageConfig.product.GrecommendSkus.push(item.sku)}">      <div class="p-img">          <a target="_blank" title="${item.t}" href="http://item.jd.com/${item.sku}.html"><img height="100" width="100" alt="${item.t}" data-lazyload="${pageConfig.FN_GetImageDomain(item.sku)}n4/${item.img}"></a>      </div>      <div class="p-name">          <a target="_blank" title="${item.t}" href="http://item.jd.com/${item.sku}.html">${item.t}</a>      </div>      <div class="p-price">          <strong class="J-p-${item.sku}">${item.jp}</strong>      </div>  </li>  {/for}</ul>‘,
 954     listBrosweBuyNew_TPL = ‘<ul>  {for item in data}  <li class="fore${Number(item_index)+1}" data-clk="${item.clk}" onclick="reClick(\‘${G.mdPerfix}1\‘, ${G.sku}, \‘${item.sku}#${item.jp}\‘, ${item_index});" class="fore${parseInt(arguments[2])+1}" data-push="${pageConfig.product.GrecommendSkus.push(item.sku)}">      <div class="p-img">          <a target="_blank" title="${item.t}" href="http://item.jd.com/${item.sku}.html"><img height="100" width="100" alt="${item.t}" data-lazyload="${pageConfig.FN_GetImageDomain(item.sku)}n4/${item.img}"></a>      </div>      <div class="p-name">          <a target="_blank" title="${item.t}" href="http://item.jd.com/${item.sku}.html">${item.t}</a>      </div>      <div class="p-price">          <strong class="J-p-${item.sku}">${item.jp}</strong>      </div>  </li>  {/for}</ul>‘,
 955     newCommentRate_TPL = ‘<div id="i-comment">    <div class="rate">        <strong>${productCommentSummary.goodRateShow}<span>%</span></strong>        <br> <span>\u597d\u8bc4\u5ea6</span>     </div>     <div class="percent">        <dl>             <dt>\u597d\u8bc4<span>(${productCommentSummary.goodRateShow}%)</span></dt>             <dd> <div style="width: ${productCommentSummary.goodRateShow}px;"></div></dd>         </dl>         <dl>             <dt>\u4e2d\u8bc4<span>(${productCommentSummary.generalRateShow}%)</span></dt>             <dd class="d1"><div style="width: ${productCommentSummary.generalRateShow}%;"> </div></dd>         </dl>         <dl>             <dt>\u5dee\u8bc4<span>(${productCommentSummary.poorRateShow}%)</span></dt>            <dd class="d1">             <div style="width: ${productCommentSummary.poorRateShow}%;"> </div></dd>         </dl>     </div>     {if typeof hotCommentTagStatistics!="undefined" && hotCommentTagStatistics.length>0}    <div class="actor-new">        <dl>            <dt>\u4e70\u5bb6\u5370\u8c61\uff1a</dt>            <dd class="p-bfc">                {for tag in hotCommentTagStatistics}<q class="comm-tags"><span>${tag.name}</span><em>(${tag.count})</em></q>{/for}            </dd>        </dl>        <div class="clr"></div> <b></b>    </div>    {elseif typeof topFiveCommentVos!="undefined"}    <div class="actor">         <em>\u53d1\u8868\u8bc4\u4ef7\u5373\u53ef\u83b7\u5f97\u4eac\u8c46\uff0c\u524d\u4e94\u4f4d\u8bc4\u4ef7\u7528\u6237\u53ef\u83b7\u5f97\u53cc\u500d\u4eac\u8c46\uff1a</em><a href="http://help.jd.com/help/question-890.html" target="_blank">\u8be6\u89c1\u4eac\u8c46\u89c4\u5219</a>        <ul>            {for User in topFiveCommentVos}             <li><span>+{if User.integral==null}0{else}${User.integral}{/if}</span><div class="u-name">${parseInt(User_index)+1}. <a href="http://club.jd.com/userreview/${User.uid}-1-1.html" target="_blank">${User.nickname}</a></div></li>            {/for}         </ul>        <div class="clr"></div>         <b></b>    </div>    {/if}    <div class="btns">         <div>\u60a8\u53ef\u5bf9\u5df2\u8d2d\u5546\u54c1\u8fdb\u884c\u8bc4\u4ef7</div>         <a href="http://club.jd.com/mycomments.aspx?pid=${productCommentSummary.productId}" class="btn-comment" target="_blank">\u53d1\u8bc4\u4ef7\u62ff\u4eac\u8c46</a>        <div><em class="hl_red">\u524d\u4e94\u540d\u53ef\u83b7\u53cc\u500d\u4eac\u8c46</em><a href="http://help.jd.com/help/question-890.html" target="_blank">[\u89c4\u5219]</a></div>    </div></div>‘,
 956     newCommentList_TPL = ‘{for list in comments}<div class="item">  <div class="user">      <div class="u-icon"> {if !list.anonymousFlag||list.anonymousFlag!=1}<a title="\u67e5\u770bTA\u7684\u5168\u90e8\u8bc4\u4ef7" href="http://me.jd.com/${list.uid}.html" target="_blank">{/if} <img height="50" width="50" upin="${list.pin}" src="http://{if typeof list.userImageUrl!=="undefined"}${list.userImageUrl}{else}misc.360buyimg.com/lib/img/u/${list.userLevelId}.gif{/if}" alt="${list.nickname}"/> {if !list.anonymousFlag||list.anonymousFlag!=1}</a>{/if}      </div>      <div class="u-name"> {if !list.anonymousFlag||list.anonymousFlag!=1}<a href="http://me.jd.com/${list.uid}.html" target="_blank">{/if}      {if !G.isNothing(list.nickname)}          ${list.anonymousFlag&&list.anonymousFlag==1 ?  list.nickname.replace(list.nickname.substring(1, list.nickname.length - 1 ), "***") : list.nickname}      {else}          ${list.pin}      {/if}      {if !list.anonymousFlag||list.anonymousFlag!=1}</a>{/if}</div> <span class="u-level"><span style="color:{if !G.isNothing(list.userLevelColor)}${list.userLevelColor}{/if}"> ${list.userLevelName}</span> {if !G.isNothing(list.userProvince)}<span class="u-address">${list.userProvince}</span>{/if}</span>  </div>  <div class="i-item" data-guid="${list.guid}" data-top="${list.top}">      <div class="o-topic">           {if list.top}<strong class="topic topic-best">\u7cbe\u534e</strong>{/if}          <span class="star sa${list.score}"></span><span><a class="date-comment" title="\u67e5\u770b\u8bc4\u4ef7\u8be6\u60c5" href="http://club.jd.com/repay/${list.referenceId}_${list.guid}_1.html" target="_blank">${list.creationTime.replace(/:[0-9][0-9]$/, "")}</a><em class="fr hl_blue">${list.userClientShow}</em></span>          <strong class="topic"><a href="http://club.jd.com/repay/${list.referenceId}_${list.guid}_1.html" target="_blank">${list.title}</a></strong>      </div>      <div class="comment-content">          {if !G.isNothing(list.commentTags)}          <dl>              <dt>\u6807  \u7b7e\uff1a</dt>              <dd>                  {for tag in list.commentTags}                  <q data-tid="${tag.id}" class="comm-tags" href="#none"><span>${tag.name}</span><em></em></q>                  {/for}              </dd>          </dl>          {/if}          {if !G.isNothing(list.pros)}          <dl>              <dt>\u4f18\u70b9\uff1a</dt>               <dd> ${list.pros}</dd>          </dl>          {/if}           {if !G.isNothing(list.cons)}          <dl>              <dt>\u4e0d\u8db3\uff1a</dt>               <dd> ${list.cons}</dd>          </dl>          {/if}           {if !G.isNothing(list.content)}           <dl>              <dt>\u5fc3\u5f97\uff1a</dt>               <dd> ${list.content}</dd>          </dl>          {/if}            {if list.mergeOrderStatus>0&&!G.isNothing(list.images)}            <dl> <dt>\u7528\u6237\u6652\u5355\uff1a</dt>            <dd>                <div class="comment-show-pic">                                  <table cellspacing="10"><tr>                  {for image in list.images}                      {if parseInt(image_index)<3}                      <td><a class="comment-show-pic-wrap" href="http://club.jd.com/bbsDetail/${list.showOrderComment.referenceId}_${list.showOrderComment.guid}_1.html" target="_blank" clstag="shangpin|keycount|product|shaipic"><img  src="${image.imgUrl}" alt="${list.nickname} \u7684\u6652\u5355\u56fe\u7247" /></a></td>                      {/if}                  {/for}                  </tr></table>                                <span clstag="shangpin|keycount|product|shaitext"><em class="fl" style="color:#9C9A9C;margin-right:5px;">\u5171${list.images.length}\u5f20\u56fe\u7247</em><a href="http://club.jd.com/bbsDetail/${list.showOrderComment.referenceId}_${list.showOrderComment.guid}_1.html" target="_blank" class="p-simsun">\u67e5\u770b\u6652\u5355&gt;</a></span>                </div>            </dd>            {/if}          <div class="dl-extra">              {if !G.isNothing(list.productColor)}              <dl>                  <dt>\u989c\u8272\uff1a</dt>                  <dd>${list.productColor}</dd>              </dl>              {/if}              {if !G.isNothing(list.productSize)}              <dl>                  <dt>\u578b\u53f7\uff1a</dt>                  <dd>${list.productSize}</dd>              </dl>              {/if}              {if true}              {for attr in productAttr}                  {if !G.isNothing(list[attr.key])}                  <dl>                      <dt>{if attr.type=="baby_date"}{if list[attr.key] > strtotime(list.creationTime)}\u6000\u5b55\u5468\u671f{else}\u5b9d\u5b9d\u5e74\u9f84{/if}{else}${attr.name}{/if}\uff1a</dt>                      <dd>                          {if attr.type=="baby_date"}                              {if list[attr.key] > strtotime(list.creationTime)}                                 \u6000\u5b55 ${ Math.ceil(40-(list[attr.key]-strtotime(list.creationTime))/7/86400) }\u5468                              {else}                                  ${monthDay( list[attr.key], strtotime(list.creationTime, null, true), list_index )}                              {/if}                          {else}                              ${list[attr.key]} ${attr.unit}                          {/if}                      </dd>                  </dl>                  {/if}              {/for}              {/if}          </div><s class="clr"></s>          {if typeof list.referenceTime !=="undefined"}          <dl>              <dt>\u8d2d\u4e70\u65e5\u671f\uff1a</dt>              <dd>${list.referenceTime.split(" ")[0]}</dd>          </dl>          {/if}      </div>      <div class="btns">          <a class="btn-reply btn-toggle fr" data-id="${list.id}" href="#none">\u56de\u590d(<em>${list.replyCount}</em>)</a>          <div class="useful fr" id="${list.guid}">              <a name="agree" class="btn-agree" title="${list.usefulVoteCount}" href="#none">\u6709\u7528(${list.usefulVoteCount})</a>              <!--<a name="oppose" class="btn-oppose" title="${list.uselessVoteCount}" href="#none">\u6ca1\u7528(${list.uselessVoteCount})</a>-->          </div>      </div>      <div class="item-reply reply-lz" data-name="{if !G.isNothing(list.nickname)}${list.anonymousFlag&&list.anonymousFlag==1 ?  list.nickname.replace(list.nickname.substring(1, list.nickname.length - 1 ), "***") : list.nickname}{else}${list.pin}{/if}" data-uid="{list.uid}">          <strong></strong>          <div class="reply-list">               <div id="btn-toggle-${_type}-${list.id}" class="replay-form none">                   <div class="arrow"> <em>\u25c6</em><span>\u25c6</span></div>                   <div class="reply-wrap">                       <p><em>\u56de\u590d</em>  <span class="u-name">                           ${list.anonymousFlag&&list.anonymousFlag==1 ?  list.nickname.replace(list.nickname.substring(1, list.nickname.length - 1 ), "***") : list.nickname}                       \uff1a</span></p>                       <div class="reply-input">                           <div class="fl"><input type="text"></div>                           <a href="#none" class="reply-btn btn-gray p-bfc reply-btn-lz" data-nick="${list.nickname}" data-guid="${list.guid}" data-replyId="${list.id}">\u56de\u590d</a>                           <div class="clr"></div>                       </div>                   </div>               </div>          </div>      </div>      {for reply in list.replies}      <div class="item-reply hide-default {if list.top} hide{/if}" data-index="${list.replyCount-parseInt(reply_index)}" data-name="${reply.nickname}" data-uid="${reply.uid}">          <strong>${list.replyCount-parseInt(reply_index)}</strong>          <div class="reply-list">              <div class="reply-con">                  <span class="u-name">                      {if reply.userClient==98&&!G.isNothing(reply.venderShopInfo)}                          <a class="parentReplyFrom" href="${reply.venderShopInfo.appName}" target="_blank">${reply.venderShopInfo.title}<b class="sj"></b></a>                      {else}                          <a target="_blank" href="http://club.jd.com/userreview/${reply.uid}-1-1.html">                              ${reply.nickname}                              {if reply.userClient==99}<b></b>{/if}                          </a>                      {/if}                      {if parseInt(reply.parentId, 10)>0}                          <em>\u56de\u590d</em>                          {if !G.isNothing(reply.parent)&&reply.parent.userClient==98&&!G.isNothing(reply.parent.venderShopInfo)}                              <a class="parentReplyFrom" href="${reply.parent.venderShopInfo.appName}" target="_blank">${reply.parent.venderShopInfo.title}<b class="sj"></b></a>                          {else}                              {if !G.isNothing(reply.parent)}<a target="_blank" href="http://club.jd.com/userreview/${reply.parent.uid}-1-1.html">{if parseInt(reply.parentId, 10)<0}${list.nickname}{else}${reply.parent.nickname}{if reply.parent.userClient==99}<b></b>{/if}{/if}</a>{/if}                          {/if}                      {/if}\uff1a                  </span>                  <span class="u-con">${reply.content}</span>              </div>              <div class="reply-meta">                  <span class="reply-left fl">${reply.creationTimeString.replace(/:[0-9][0-9]$/, "")}</span>                  <a class="p-bfc btn-toggle hl_blue" data-id="${reply.id}" href="#none">\u56de\u590d</a>              </div>              <div id="btn-toggle-${_type}-${reply.id}" class="replay-form none">                  <div class="arrow">                      <em>\u25c6</em><span>\u25c6</span>                  </div>                  <div class="reply-wrap">                      <p><em>\u56de\u590d</em> <span class="u-name">${reply.nickname}\uff1a</span></p>                      <div class="reply-input">                          <div class="fl"><input type="text" /></div>                          <a href="#none" class="reply-btn btn-gray p-bfc" data-nick="${reply.nickname}" data-guid="${list.guid}" data-replyId="${reply.id}">\u56de\u590d</a>                          <div class="clr"></div>                      </div>                  </div>              </div>          </div>      </div>      {/for}      {if list.replyCount > 5}      <div class="ac">           <a class="hl_blue" href="http://club.jd.com/repay/${productCommentSummary.productId}_${list.guid}_1.html" title="\u67e5\u770b\u5168\u90e8\u56de\u590d" target="_blank">\u67e5\u770b\u5168\u90e8\u56de\u590d&gt;&gt;</a>      </div>      {/if}   </div>  <div class="corner tl"></div></div>{forelse}    {if score == 0}     <div class="norecode">         \u6682\u65e0\u5546\u54c1\u8bc4\u4ef7\uff01<span style="hl-red">\u4e89\u62a2\u4ea7\u54c1\u8bc4\u4ef7\u524d5\u540d\uff0c\u524d5\u4f4d\u8bc4\u4ef7\u7528\u6237\u53ef\u83b7\u5f97\u591a\u500d\u4eac\u8c46\u54e6\uff01</span>\uff08<a href="http://help.jd.com/help/question-890.html" target="_blank">\u8be6\u89c1\u4eac\u8c46\u89c4\u5219</a>\uff09\uff01    </div>    <div class="extra clearfix">        <div class="join">            \u53ea\u6709\u8d2d\u4e70\u8fc7\u8be5\u5546\u54c1\u7684\u7528\u6237\u624d\u80fd\u8fdb\u884c\u8bc4\u4ef7\u3002&nbsp;&nbsp;<a target="_blank" href="http://club.jd.com/Simplereview/${productCommentSummary.productId}.html" name="http://club.jd.com/Simplereview/${productCommentSummary.productId}.html" id="A1">[\u53d1\u8868\u8bc4\u4ef7]</a>&nbsp;&nbsp;<a target="_blank" href="http://club.jd.com/allreview/1-1.html">[\u6700\u65b0\u8bc4\u4ef7]</a>        </div>    </div>     {elseif score == 3}         <div class="norecode"> \u6682\u65e0\u597d\u8bc4\uff01</div>     {elseif score == 2}         <div class="norecode"> \u6682\u65e0\u4e2d\u8bc4\uff01</div>     {elseif score == 1}         <div class="norecode"> \u6682\u65e0\u5dee\u8bc4\uff01</div>     {elseif score == 4}         <div class="norecode"> \u6682\u65e0\u6652\u5355\u8bc4\u4ef7\uff01</div>    {/if}{/for}<div class="clearfix">    {if productCommentSummary.commentCount}<div class="fl" style="padding:8px 0 0 120px;"><a href="http://club.jd.com/review/${productCommentSummary.productId}-0-1-0.html" target="_blank" class="hl_blue">[\u67e5\u770b\u5168\u90e8\u8bc4\u4ef7]</a></div>{/if}    <div class="pagin fr" clstag="shangpin|keycount|product|fanye" id="commentsPage${score}">    </div></div>‘,
 957     discuss_TPL = ‘<table width="100%" cellspacing="0" cellpadding="0" border="0">    <tbody>        <tr>            <th class="col1">\u4e3b\u9898</th>            <th class="col2">\u56de\u590d/\u6d4f\u89c8</th>            <th class="col3">\u4f5c\u8005</th>            <th class="col4">\u65f6\u95f4</th>        </tr>        {for comment in discussComments.Comments}        {if Number(comment_index) < 10}        <tr>            <td class="col1">                <div class="topic">                    {if comment.referenceType == "Order"}                    <b class="icon shai"></b>                    {elseif comment.referenceType == "User"}                    <b class="icon lun"></b>                    {elseif comment.referenceType == "Question"}                    <b class="icon wen"></b>                    {elseif comment.referenceType == "Friend"}                    <b class="icon quan"></b>                    {/if}                    <a href="http://club.jd.com/bbsDetail/${comment.referenceId}_${comment.id}_1.html" target="_blank">${comment.title}</a>                </div>            </td>            <td class="col2">${comment.replyCount}/${comment.viewCount}</td>            <td class="col3">                <div class="u-name">                    <a target="_blank" title="${comment.uRemark}" href="http://me.jd.com/${comment.uid}.html">{if comment.uRemark}${comment.uRemark}{else}${comment.userId}{/if}</a>                </div>            </td>            <td class="col4">${comment.creationTime}</td>        </tr>        {/if}        {/for}    </tbody></table><table id="discuss-comment" width="100%" cellspacing="0" cellpadding="0" border="0"></table>{if discussComments.CommentCount <= 0}    {if parseInt(ReferenceType) == 1}        <div class="norecode">\u6682\u65e0\u8ba8\u8bba\u5e16\uff01</div>    {elseif parseInt(ReferenceType) == 2}        <div class="norecode">\u6682\u65e0\u95ee\u7b54\u5e16\uff01</div>    {elseif parseInt(ReferenceType) == 3}        <div class="norecode">\u6682\u65e0\u5708\u5b50\u8d34\uff01</div>    {elseif parseInt(ReferenceType) == 4}        <div class="norecode">\u6682\u65e0\u6652\u5355\u5e16\uff01</div>    {else}        <div class="norecode">\u6682\u65e0\u7f51\u53cb\u8ba8\u8bba\uff01</div>    {/if}{/if}<div class="extra clearfix">    {if discussComments.CommentCount > 0}    <div class="total">          <span>\u5171${Discuss.count=discussComments.CommentCount}\u4e2a\u8bdd\u9898</span>&nbsp;&nbsp;           <a target="_blank" href="http://club.jd.com/bbs/${referenceId}-1-0-${ReferenceType}.html">\u6d4f\u89c8\u5168\u90e8\u8bdd\u9898&gt;&gt;</a>    </div>    {/if}    <div class="contact">        \u6709\u95ee\u9898\u8981\u4e0e\u5176\u4ed6\u7528\u6237\u8ba8\u8bba\uff1f<a target="_blank" href="http://club.jd.com/bbs/${referenceId}-1.html" name="http://club.jd.com/bbs/${referenceId}-1.html" id="userComment${ReferenceType}">[\u53d1\u8868\u5e16\u5b50]</a>    </div></div>‘,
 958     consult_TPL = ‘{if !!Consultations}    {for Consultation in Consultations}    <div class="item{if Consultation_index% 2 == 1} odd{/if}">        <div class="user">            <span class="u-name">\u7f51\u3000\u3000\u53cb\uff1a${Consultation.UNickNme}</span>             <!--<span class="u-level" name="${Consultation.UserId}"></span>-->             <span class="u-level" ><font style="color:${Consultation.UserLevelColor}"> ${Consultation.UserLevelName} </font></span>             <span class="date-ask">${Consultation.CreationTime}</span>        </div>        <dl class="ask">            <dt><b></b>\u54a8\u8be2\u5185\u5bb9\uff1a</dt>            <dd><a target="_blank" href="http://club.jd.com/consultation/${Consultation.ProductId}-${Consultation.Id}.html">${Consultation.Content}</a></dd>        </dl>        <dl class="answer">            {for Reply in Consultation.Replies}            <dt>                <b></b>                {if Reply.sst == 2}\u5356\u5bb6\u56de\u590d\uff1a {else}\u4eac\u4e1c\u56de\u590d\uff1a{/if}             </dt>            <dd>                <div class="content">${Reply.sword}</div>                <div class="date-answer">${Reply.sinsdate}</div>            </dd>            {/for}        </dl>    </div>    {/for}{else}    <div class="norecode">\u6682\u65e0\u8be5\u7c7b\u54a8\u8be2\uff01</div>{/if}<div class="extra clearfix">    <div class="total hide-pop">        \u5171<strong>${SearchParameter.Count}</strong>\u6761&nbsp;&nbsp;         <a href="http://club.jd.com/allconsultations/${SearchParameter.ProductId}-1-1.html" target="_blank">\u6d4f\u89c8\u6240\u6709\u54a8\u8be2\u4fe1\u606f&gt;&gt;</a>     </div>    <div class="join">        \u8d2d\u4e70\u4e4b\u524d\uff0c\u5982\u6709\u95ee\u9898\uff0c\u8bf7{if $("#j-im").length}\u54a8\u8be2&nbsp;&nbsp;<a id="j-im-extra" class="djd-im hide" clstag="shangpin|keycount|product|imbtn"><b>\u8054\u7cfb\u5ba2\u670d</b></a><span class="hide-pop">\uff0c\u6216</span>{/if}        <a id="consultation" href="http://club.jd.com/allconsultations/${SearchParameter.ProductId}-1-1.html#form1">[\u53d1\u8868\u54a8\u8be2]</a>    </div></div>‘,
 959     consult_search_TPL = ‘{for item in list}<div class="item search-result-item">    <div class="user">        <span class="u-name">\u7f51\u3000\u3000\u53cb\uff1a${item.nickname}</span>        <span class="date-ask">${item.sindate}</span>    </div>    <dl class="ask">        <dt><b></b>\u54a8\u8be2\u5185\u5bb9\uff1a</dt>        <dd>${item.sword}</dd>    </dl>    <dl class="answer">        <dt><b></b>\u4eac\u4e1c\u56de\u590d\uff1a</dt>        <dd>{if item.sword!==""}${item.sword2}{/if}</dd>    </dl>    <div id="${item.sid}" class="useful">\u60a8\u5bf9\u6211\u4eec\u7684\u56de\u590d\uff1a        <a name="2" href="#none" class="btn-pleased">\u6ee1\u610f</a>        (<span>${item.zantong}</span>)\u3000        <a name="2" href="#none" class="btn-unpleased">\u4e0d\u6ee1\u610f</a>        (<span>${item.fd}</span>)    </div></div>{/for}‘,
 960     search_TPL = ‘{for list in Product}<dl skuid="${list.wareid}" data-push="${pageConfig.product.searchList.push(list.wareid)}">    <dt class="p-img"><a target="_blank" href="http://item.jd.com/${list.wareid}.html"><img width="50" height="50" src="${pageConfig.FN_GetImageDomain(list.wareid)}n5/${list.Content.imageurl}" ></a></dt>    <dd class="p-name"><a target="_blank" href="http://item.jd.com/${list.wareid}.html">${list.Content.warename}</a></dd>    <dd class="p-price"><strong class="J-p-${list.wareid}"></strong></dd></dl>{/for}‘,
 961     fq_serverSite = "http://jd2008.jd.com/purchase/",
 962     fq_serverSiteService = "http://jd2008.jd.com/purchaseservice/",
 963     fq_serverUrl = "ajaxServer/ForMiniCart_fq.aspx",
 964     fq_btnPanel = "choose-btn-divide",
 965     fq_skuId = "",
 966     fq_TipHtml = "",
 967     isFqOpen = !0,
 968     fq_returnData = null,
 969     isIe = window.ActiveXObject ? !0 : !1,
 970     Grecommend = function(t, e, i, s, a) {
 971         this.sku = t, this.rid = e, this.locId = i, this.lim = a || 6, this.pin = readCookie("pin"), this.pid = null === i ? 1 : i.split("-")[0], this.el = s;
 972         var n = this;
 973         return 1713 == pageConfig.product.cat[0] ? !1 : ("#tab-hot" === s.selector || "#out-of-stock #noitem-list" === s.selector ? n.init() : $(s.selector).parent().wrap(‘<div data-lazyload="true"></div>‘).parent().Jlazyload({
 974             type: "module"
 975         }, function() {
 976             n.init()
 977         }), void 0)
 978     };
 979 Grecommend.prototype = {
 980     init: function() {
 981         var t = readCookie("__jda");
 982         this.uuid = t ? "-" == t.split(".")[1] ? -1 : t.split(".")[1] : -1, this.get(this.rid)
 983     },
 984     get: function(t) {
 985         var e = this,
 986             i = {
 987                 sku: this.sku,
 988                 p: t || this.rid,
 989                 lid: this.pid,
 990                 lim: this.lim,
 991                 uuid: this.uuid,
 992                 ec: "utf-8"
 993             };
 994         if (pageConfig.product)
 995             for (var s = 0; pageConfig.product.cat.length > s; s++) i["c" + (s + 1)] = pageConfig.product.cat[s];
 996         this.pin && (i.pin = this.pin), $.ajax({
 997             url: "http://diviner.jd.com/diviner?" + decodeURIComponent($.param(i)),
 998             dataType: "jsonp",
 999             scriptCharset: "utf-8",
1000             success: function(t) {
1001                 e.set(t)
1002             }
1003         })
1004     },
1005     set: function(t) {
1006         function e(t, e) {
1007             for (var i = t.length / e, s = [], a = 0; i > a; a++) s.push({
1008                 tabs: [],
1009                 increment: null,
1010                 count: e,
1011                 skuids: []
1012             });
1013             for (var n = 0, o = 0; t.length > o; o++) 0 == o % e && n++, s[n - 1].tabs.push(t[o]), s[n - 1].increment = n, s[n - 1].skuids.push(t[o].wid);
1014             return s
1015         }
1016
1017         function i() {
1018             pageConfig.product.cbCombineBuying = [pageConfig.product.skuid], a.attr("loaded", "true").html(suitRecommendNew_TPL.process(t)), log(G.mdPerfix + "3", "Show"), Recommend.switchTab("#th-hot"), G.removeLastAdd(), $("#tab-hot .master input").attr("skuid", pageConfig.product.skuid), G.getPriceNum(pageConfig.product.cbCombineBuying, readCookie("ipLoc-djd"), a, null, function(t, e) {
1019                 a.find(‘input[skuid="‘ + t + ‘"]‘).attr("wmeprice", e.p), a.find(‘input[skuid="‘ + t + ‘"]‘).attr("wmaprice", e.m), G.calculatePrice($("#tab-hot .master input")[0], "#tab-hot")
1020             })
1021         }
1022         var s = this,
1023             a = s.el;
1024         if (pageConfig.product.GrecommendSkus = [], t.success && t.data && t.data.length > 0) {
1025             if (105e3 === this.rid && this.el.html(listBrosweBrosweNew_TPL.process(t)).parent().show(), 102004 === this.rid && this.el.html(listBrosweBrosweNew_TPL.process(t)).parent().show(), 103001 === this.rid && this.el.html(listBrosweBuyNew_TPL.process(t)).parent().show(), 102003 === this.rid && this.el.html(listBrosweBuyNew_TPL.process(t)).parent().show(), 103002 === this.rid && (this.el.html(listBuyBuyNew_TPL.process(t)).parent().show(), log(G.mdPerfix + "2", "Show")), 102002 === this.rid && this.el.html(listBuyBuyNew_TPL.process(t)).parent().show(), 102001 === this.rid && (1315 == G.cat[0] || 11729 == G.cat[0] ? (pageConfig.product.cbCombineBuying = [pageConfig.product.skuid], s.set1315(t)) : i()), 103003 === this.rid && i(), (102001 === this.rid || 103003 === this.rid) && G.getPriceNum(pageConfig.product.GrecommendSkus, null, this.el), 303001 === this.rid && this.el.html(addToCart_TPL.process(t)).parent().show(), 103e3 === this.rid || 102e3 === this.rid) {
1026                 this.el.html(noStock.process(t)), $("#out-of-stock").show();
1027                 var n = pageConfig.wideVersion && pageConfig.compatible ? 5 : 4;
1028                 $("#noitem-list").imgScroll({
1029                     visible: n,
1030                     showControl: !0,
1031                     step: n,
1032                     loop: !1,
1033                     prev: "#noitem-forward",
1034                     next: "#noitem-backward",
1035                     disableClass: "disabled"
1036                 })
1037             }
1038             if (902011 === this.rid) {
1039                 var o = pageConfig.wideVersion && pageConfig.compatible ? 4 : 3;
1040                 t.json = e(t.data, o), this.el.html(itemDisabled.process(t)), this.el.parents(".clearfix").eq(0).attr("data-widget", "tabs").Jtab({
1041                     compatible: !0,
1042                     auto: !0
1043                 })
1044             }
1045             if (902018 === this.rid) {
1046                 var a = $("#noitem-list");
1047                 this.el.html(itemDisabledReco.process(t)), $("#out-of-stock").show();
1048                 var n = pageConfig.wideVersion && pageConfig.compatible ? 5 : 4;
1049                 a.imgScroll({
1050                     visible: n,
1051                     showControl: !0,
1052                     step: n,
1053                     loop: !1,
1054                     prev: "#noitem-forward",
1055                     next: "#noitem-backward",
1056                     disableClass: "disabled"
1057                 }), G.getCommentData(pageConfig.product.GrecommendSkus, a, null)
1058             }
1059             G.getPriceNum(pageConfig.product.GrecommendSkus, readCookie("ipLoc-djd"), this.el), this.el.find("img").Jlazyload({
1060                 type: "image"
1061             }), this.setTrackCode(t.impr)
1062         }
1063     },
1064     set1315: function(t) {
1065         function e(t) {
1066             if (t) {
1067                 var e = $("#pop-box .p-scroll-wrap"),
1068                     i = $("#pop-box .p-scroll-next"),
1069                     s = $("#pop-box .p-scroll-prev");
1070                 e.find("li").length > 4 && e.imgScroll({
1071                     showControl: !0,
1072                     width: 30,
1073                     height: 30,
1074                     visible: 4,
1075                     step: 1,
1076                     prev: s,
1077                     next: i
1078                 })
1079             } else G.setScroll("#stabcon_pop")
1080         }
1081
1082         function i(e, i) {
1083             var e = e;
1084             if (i) var s = i.split("|"),
1085                 a = s[1],
1086                 p = s[2];
1087             $("#pop-box").length > 0 && $("#pop-box").attr("data-ind", e), r.clear().show(e, function() {
1088                 var i = $("#pop-list-" + e),
1089                     s = i.attr("data-sku"),
1090                     r = i.find("a.curr").attr("title");
1091                 l(e), n.del(), d.get(e), o(e, a || null, t), c.get(s, a || r, e, p)
1092             })
1093         }
1094         var s = $("#tab-hot"),
1095             a = {
1096                 set: function(t, e) {
1097                     1 > $("#p-selected-" + t).length ? $("#pop-list-" + t).find(".p-scroll").hide().before(‘<div id="p-selected-‘ + t + ‘" class="p-selected">\u5df2\u9009\u62e9\uff1a‘ + e.split("|")[1] + "\uff0c" + e.split("|")[2] + ‘ <a data-ind="‘ + t + ‘" class="p-modify" href="#none">\u4fee\u6539</a></div>‘) : $("#p-selected-" + t).html("\u5df2\u9009\u62e9\uff1a" + e.split("|")[1] + "\uff0c" + e.split("|")[2] + ‘ <a data-ind="‘ + t + ‘" class="p-modify" href="#none">\u4fee\u6539</a>‘), $(".p-modify").unbind("click").bind("click", function() {
1098                         i(parseInt(this.getAttribute("data-ind")), e)
1099                     }), $("#p-selected-" + t).attr("data-res", e)
1100                 }
1101             },
1102             n = {
1103                 set: function(t) {
1104                     var e = t || $("#stabcon_pop .pop-list");
1105                     e.find(".p-scroll").each(function() {
1106                         var t = $(this),
1107                             e = t.prev(".p-img").find("img"),
1108                             i = t.find(".p-scroll-wrap a");
1109                         G.thumbnailSwitch(i, e, "/n2/", "curr")
1110                     })
1111                 },
1112                 del: function(t) {
1113                     var e = t || $("#stabcon_pop .pop-list");
1114                     e.find(".p-scroll").each(function() {
1115                         $(this).find(".p-scroll-wrap img").unbind("mouseover")
1116                     })
1117                 }
1118             },
1119             o = function(t, e) {
1120                 var i = $("#p-scroll .p-scroll-wrap a"),
1121                     s = $("#pop-list-" + t).find(".p-img img"),
1122                     a = $("#pop-list-" + t).attr("data-sku");
1123                 i.unbind("click").bind("click", function() {
1124                     var e = ($(this), $(this).find("img").attr("src")),
1125                         n = $(this).attr("title");
1126                     c.get(a, n, t, null), i.removeClass("curr"), $(this).addClass("curr"), s.attr("src", e.replace("/n5/", "/n2/")), $("#pop-list-" + t).attr("data-res") && $("#pop-list-" + t).removeAttr("data-res")
1127                 }), e && i.each(function() {
1128                     $(this).attr("title") == e && $(this).trigger("click")
1129                 })
1130             },
1131             r = {
1132                 show: function(t, e) {
1133                     $("#pop-box").css({
1134                         left: t * $("#stabcon_pop .pop-list").outerWidth() - $("#stabcon_pop .suits").scrollLeft(),
1135                         visibility: "visible"
1136                     }), "function" == typeof e && e(t)
1137                 },
1138                 hide: function() {
1139                     return $("#pop-box").css("visibility", "hidden"), this
1140                 },
1141                 clear: function() {
1142                     var t = ($("#pop-box"), $("#p-scroll,#p-size,#p-tips"));
1143                     return t.html(""), this.isClear = !0, n && n.set(), this
1144                 }
1145             },
1146             c = {
1147                 sClick: function(t, e) {
1148                     var i = $("#p-size a"),
1149                         s = $("#pop-list-" + t),
1150                         a = this;
1151                     i.click(function() {
1152                         var t = $(this).attr("data-resku"),
1153                             e = $("#p-scroll .p-scroll-wrap .curr").attr("title"),
1154                             n = $(this).attr("title"),
1155                             o = $(this).attr("wmaprice"),
1156                             r = $(this).attr("wmeprice");
1157                         i.removeClass("selected"), $(this).addClass("selected"), a.clearTips("#p-noselected"), s.attr("data-res", [t, e, n, o, r].join("|"))
1158                     }), e && $("#p-size a").each(function() {
1159                         $(this).attr("title") == e && $(this).trigger("click")
1160                     })
1161                 },
1162                 noSize: function(t, e) {
1163                     $("#p-size").addClass("nosizes").html(""), $("#pop-list-" + t).attr("data-res", [e.Subcodesku[0].Sku, $("#pop-box .curr").attr("title"), "\u65e0\u5c3a\u7801", e.Subcodesku[0].WMeprice, e.Subcodesku[0].WMaprice].join("|"))
1164                 },
1165                 get: function(t, e, i, s, a) {
1166                     var n = this,
1167                         o = {
1168                             ip: getCookie("ipLocation"),
1169                             sku: t,
1170                             color: encodeURI(e)
1171                         };
1172                     $("#pop-list-" + i).find(".no-scroll").length > 0 && (o = {
1173                         ip: getCookie("ipLocation"),
1174                         sku: t
1175                     }), window.fetchJSON_sizeList = function(e) {
1176                         1 > e.Subcodesku.length ? (n.setTips(‘<p id="p-nostock">\u8be5\u5546\u54c1\u5df2\u4e0b\u67b6\u6216\u65e0\u8d27</p>‘), $("#p-size").html("")) : 1 == e.Subcodesku.length && 0 == !!e.Subcodesku[0].sizename || "\u65e0" == e.Subcodesku[0].sizename ? (n.noSize(i, e), n.clearTips("#p-nostock")) : (n.set(e, t, i, s), n.clearTips("#p-nostock")), "function" == typeof a && a(e)
1177                     }, $.ajax({
1178                         url: "http://prs.jd.com/Pop/CodeServiceSize.aspx?callback=fetchJSON_sizeList",
1179                         dataType: "script",
1180                         cache: !0,
1181                         data: o
1182                     })
1183                 },
1184                 set: function(t, e, i, s) {
1185                     var a = ‘{for list in Subcodesku}<a href="#none" data-resku="${list.Sku}" wmaprice="${list.WMaprice}" wmeprice="${list.WMeprice}" title="${list.sizename}">${list.sizename}</a>{/for}‘;
1186                     $("#p-size").html(a.process(t)), this.sClick(i, s)
1187                 },
1188                 setTips: function(t) {
1189                     "" == $("#p-tips").html() && $("#p-tips").html(t)
1190                 },
1191                 clearTips: function(t) {
1192                     $("#pop-box").find(t).remove()
1193                 }
1194             },
1195             d = {
1196                 get: function(t) {
1197                     $("#p-scroll").append($("#pop-list-" + t).find(".p-scroll").clone().show()), this.set(t)
1198                 },
1199                 set: function() {
1200                     e(!0)
1201                 }
1202             },
1203             l = function(t) {
1204                 var t = t;
1205                 $("#p-selected-ok").unbind("click").bind("click", function() {
1206                     var e = $("#pop-box");
1207                     if (e.find("#p-scroll .curr").attr("title"), 1 > $("#pop-box .curr").length) c.setTips(‘<p id="p-noselected">\u8bf7\u9009\u62e9\u989c\u8272</p>‘);
1208                     else if (1 > $("#pop-box .selected").length && !$("#p-size").hasClass("nosizes")) c.setTips(‘<p id="p-noselected">\u8bf7\u9009\u62e9\u5c3a\u7801</p>‘);
1209                     else {
1210                         a.set(t, $("#pop-list-" + t).attr("data-res")), r.hide().clear();
1211                         var i = $("#pop-list-" + t),
1212                             s = i.attr("data-res").split("|"),
1213                             n = s[0],
1214                             o = s[3],
1215                             d = s[4],
1216                             l = i.find(".p-price img");
1217                         l.attr("src"), i.find("input:checkbox").attr({
1218                             skuid: n,
1219                             wmaprice: o,
1220                             wmeprice: d,
1221                             checked: !0
1222                         }), G.calculatePrice($("#pop-list-" + t).find("input:checkbox")[0], "#tab-hot")
1223                     }
1224                 }), $("#p-selected-cancel").click(function() {
1225                     r.hide().clear(), 1 > $("#p-selected-" + t).length && $("#pop-list-" + t).find("input:checkbox").attr("checked", !1)
1226                 })
1227             };
1228         if (t.success) {
1229             var p = ‘<div id="stabcon_pop" class="stabcon stabcon_big"><div class="master">    <s></s>    <div class="p-img">        <a href="http://item.jd.com/${G.sku}.html" target="_blank"><img src="${pageConfig.FN_GetImageDomain(G.sku)}n2/${G.src}" height="160" width="160"></a>    </div>    <div class="p-name">        <a href="http://item.jd.com/${G.sku}.html" target="_blank">${G.name}</a>    </div>    <div class="p-price none"><input type="checkbox" id="inp_${G.sku}_hot" onclick="return false;" onchange="return false" wmaprice="${pageConfig.product.mp}" wmeprice="${pageConfig.product.jp}" skuid="${G.sku}" checked/> ${pageConfig.product.jp}</div></div><div class="pop-wrap"><div id="pop-box" class="">    <div id="p-scroll"></div>    <div id="p-size"></div>    <div id="p-tips"></div>    <div id="p-size-btn">        <a href="#none" id="p-selected-ok">\u786e\u5b9a</a><a id="p-selected-cancel" href="#none">\u53d6\u6d88</a>    </div></div><div class="suits" style="overflow-x:{if parseInt(data.length)>(pageConfig.wideVersion&&pageConfig.compatible ? 3:2)}scroll;{else}hidden;{/if}">    <ul class="lh" style="width:${parseInt(data.length)*200+20}px">        {for item in data}        <li data-push="${pageConfig.product.cbCombineBuyingPop.push(item.sku)}" class="pop-list {if parseInt(item_index)+1==parseInt(data.length)} last-item{/if}" id="pop-list-${item_index}" data-sku="${item.sku}" data-ind="${item_index}" onclick="reClick(\‘${G.mdPerfix}3\‘, \‘${G.sku}\‘, \‘${item.sku}#${item.jp}\‘, \‘${item_index}\‘);" data-clk="${item.clk}">            <s></s>            <div class="p-img">                <a href="http://item.jd.com/${item.sku}.html" target="_blank"><img src="${pageConfig.FN_GetImageDomain(item.sku)}n2/${item.img}"  height="160" width="160"></a>            </div>            <div class="p-scroll">                <a href="javascript:;" class="p-scroll-btn p-scroll-prev">&lt;</a>                <div class="p-scroll-wrap">                    <ul>                    {for color in item.subsku}                        {if parseInt(color_index)==0}<li><a href="javascript:;" class="no-scroll curr" title="${item.popco}"><img data-img="1" width="25" height="25"  src="${pageConfig.FN_GetImageDomain(item.sku)}n5/${item.img}"></a></li>{/if}                        <li><a href="javascript:;" class="{if parseInt(color_index)==0}curr{/if}" data-sku="${item.sku}" title="${color.hit}"><img data-img="1" width="25" height="25"  src="${pageConfig.FN_GetImageDomain(item.sku)}n5/${color.img}" data-img="1"></a></li>                    {forelse}                        <li><a href="javascript:;" class="no-scroll curr" title="\u65e0"><img data-img="1" width="25" height="25"  src="${pageConfig.FN_GetImageDomain(item.sku)}n5/${item.img}"></a></li>                    {/for}                    </ul>                </div>                <a href="javascript:;" class="p-scroll-btn p-scroll-next">&gt;</a>            </div>            <div class="p-name">                <a href="http://item.jd.com/${item.sku}.html" target="_blank">${item.t}</a>            </div>            <div class="choose">                <input type="checkbox" data-nocolor="${item.subsku.length<1}" id="inp_${item.sku}" class="{if parseInt(item.subsku.length)==0}no-pop-win{/if}" wmaprice="${item.wmaprice}" wmeprice="${item.jp}" skuid="${item.sku}" />                <label for="inp_${item.sku}" class="p-price">                    <strong class="J-p-${item.sku}"></strong>                </label>            </div>        </li>        {/for}    </ul></div></div><div class="infos" onclick="{for item in data}reClick(\‘${G.mdPerfix}3\‘, \‘${G.sku}\‘, \‘${item.sku}#${item.jp}\‘, \‘${item_index}\‘);{/for}">    <s></s>    <div class="p-name">        <a onclick="log(\‘${G.mbPerfix}PopularBuy\‘,\‘click\‘)" href="http://jd2008.jd.com/purchase/OrderFlowService.aspx?action=AddSkus&wids=${G.sku}">\u8d2d\u4e70\u4eba\u6c14\u7ec4\u5408</a>    </div>    <div class="p-price">\u603b\u4eac\u4e1c\u4ef7\uff1a        <strong class="res-jdprice">\uffe5 ${pageConfig.product.jp}</strong>    </div>    <div class="p-saving">\u603b\u53c2\u8003\u4ef7\uff1a        <del class="res-totalprice">\uffe5 ${pageConfig.product.mp}</del>    </div>    <div class="btns">        <a onclick="log(\‘${G.mbPerfix}PopularBuy\‘,\‘click\‘)" class="btn-buy" href="http://jd2008.jd.com/purchase/OrderFlowService.aspx?action=AddSkus&wids=${G.sku}">\u8d2d\u4e70\u7ec4\u5408</a>    </div></div><div class="clb"></div></div>‘;
1230             pageConfig.product.cbCombineBuyingPop = [], s.attr("loaded", "true").html(p.process(t)), pageConfig.FN_ImgError($("#tab-hot")[0]), $("#stabcon_pop .suits").scroll(function() {
1231                 if ("visible" == $("#pop-box").css("visibility")) {
1232                     var t = parseInt($("#pop-box").attr("data-ind"));
1233                     $("#pop-list-" + t).find("input:checkbox").attr("checked", !1), r.clear().hide()
1234                 }
1235             }), n.set(), e(!1), $("#stabcon_pop ul input:checkbox").click(function() {
1236                 var t = $(this),
1237                     e = t.attr("data-nocolor"),
1238                     s = t.parents(".pop-list"),
1239                     a = s.attr("data-ind");
1240                 if ("visible" == $("#pop-box").css("visibility")) {
1241                     var o = parseInt($("#pop-box").attr("data-ind"));
1242                     $("#pop-list-" + o).find("input:checkbox").attr("checked", !1), r.clear().hide()
1243                 }
1244                 "true" == e ? G.calculatePrice(t[0], "#tab-hot") : 1 == $(this).attr("checked") ? i(a) : ($("#p-selected-" + a) && ($("#p-selected-" + a).remove(), $("#pop-list-" + a).find(".p-scroll").show(), n.set($("#pop-list-" + a))), G.calculatePrice(t[0], "#tab-hot"))
1245             }), log(G.mdPerfix + "3", "Show"), Recommend.switchTab("#th-hot"), G.getPriceNum(pageConfig.product.cbCombineBuyingPop, null, s, null, function(t, e) {
1246                 s.find(‘input[skuid="‘ + t + ‘"]‘).attr("wmeprice", e.p), s.find(‘input[skuid="‘ + t + ‘"]‘).attr("wmaprice", e.m)
1247             })
1248         }
1249     },
1250     setTrackCode: function(t) {
1251         var e = this.el.find("li"),
1252             i = this,
1253             s = "&m=UA-J2011-1&ref=" + encodeURIComponent(document.referrer);
1254         e.each(function() {
1255             var t = $(this).attr("data-clk");
1256             $(this).bind("click", function(e) {
1257                 var a = $(e.target);
1258                 (a.is("a") || a.is("img") || a.is("span")) && i.newImage(t + s, !0), a.is("input") && 1 == a.attr("checked") && i.newImage(t + s, !0)
1259             })
1260         }), this.newImage(t + s, !0)
1261     },
1262     newImage: function(t, e, i) {
1263         var s = new Image;
1264         t = e ? t + "&random=" + Math.random() + new Date : t, s.onload = function() {
1265             i !== void 0 && i(t)
1266         }, s.setAttribute("src", t)
1267     }
1268 };
1269 var Recommend = {
1270         init: function(t) {
1271             this.type = t, this.renderHTML(), this.renderRecoFittingsHTML(), this.getSuits()
1272         },
1273         getSuits: function() {
1274             G.isPop ? $.ajax({
1275                 url: "http://misc.360buyimg.com/product/js/2012/suits.js",
1276                 dataType: "script",
1277                 scriptCharset: "gb2312",
1278                 cache: !0,
1279                 success: function() {
1280                     "undefined" != typeof Suits && Suits.init(G.sku)
1281                 }
1282             }) : $.ajax({
1283                 url: "http://jprice.360buy.com/suit/" + G.sku + "-1-1.html",
1284                 dataType: "script",
1285                 cache: !0,
1286                 scriptCharset: "utf-8"
1287             })
1288         },
1289         renderRecoFittingsHTML: function() {
1290             var t = G.sku,
1291                 e = 6728 == G.cat[0] || 653 == G.cat[1] || 830 == G.cat[1],
1292                 i = "-672-6864-1105-717-720-718-719-798-",
1293                 s = RegExp("-" + G.cat[2] + "-").test(i);
1294             return !G.isJd && e ? !1 : (655 == G.cat[2] ? $.ajax({
1295                 url: "http://rs.jd.com/accessorie/newServiceWhite.jsonp?sku=" + G.sku + "&callback=Recommend.cbNewFittings",
1296                 dataType: "script",
1297                 cache: !0,
1298                 scriptCharset: "utf-8"
1299             }) : 830 == G.cat[1] ? $.ajax({
1300                 url: "http://rs.jd.com/accessorie/accessoryByAccessory.jsonp?sku=" + G.sku + "&callback=Recommend.cbNewFittings",
1301                 dataType: "script",
1302                 cache: !0,
1303                 scriptCharset: "utf-8"
1304             }) : G.cat[2] > 830 && 835 > G.cat[2] || 5012 === G.cat[2] ? $.ajax({
1305                 url: "http://misc.360buyimg.com/product/js/2012/fittingsCamera.js?ver=20140424",
1306                 dataType: "script",
1307                 cache: !0,
1308                 success: function() {
1309                     fittingsCamera.init(pageConfig.product.skuid, pageConfig.product.cat[2], 1)
1310                 }
1311             }) : s ? $.ajax({
1312                 url: "http://misc.360buyimg.com/product/js/2012/fittingsCamera.js?ver=20140424",
1313                 dataType: "script",
1314                 cache: !0,
1315                 success: function() {
1316                     fittingsCamera.init(pageConfig.product.skuid, pageConfig.product.cat[2], 2)
1317                 }
1318             }) : 6728 == G.cat[0] && G.isJd ? $.ajax({
1319                 url: "http://misc.360buyimg.com/product/js/2012/fittingsAuto.js?ver=20140424",
1320                 dataType: "script",
1321                 cache: !0
1322             }) : $.getJSONP("http://d.360buy.com/fittingInfo/get?skuId=" + t + "&callback=Recommend.cbRecoFittings"), void 0)
1323         },
1324         cbNewFittings: function(t) {
1325             var e = $("#tab-reco"),
1326                 i = {
1327                     accessoryList: []
1328                 },
1329                 s = {
1330                     tabs: ‘<div class="tab-cat stab">    <ul>        {if pageConfig.product.cat[1]!=830}            <li id="tab-cat-0" class="fl scurr" data-widget="tab-item" data-cat="\u914d\u4ef6\u9009\u8d2d\u4e2d\u5fc3|3">\u7cbe\u9009\u914d\u4ef6</li>            {for tab in accessoryList}            <li id="tab-cat-${parseInt(tab_index)+1}" class="fl" data-widget="tab-item" data-cat="${tab.thirdName}|${tab.thirdTypeId}">${tab.thirdName}</li>            {/for}        {else}            {for tab in accessoryList}            <li id="tab-cat-${parseInt(tab_index)+1}" class="{if Number(tab_index)==0}scurr{/if} fl" data-widget="tab-item" data-cat="${tab.thirdName}|${tab.thirdTypeId}">${tab.thirdName}</li>            {/for}        {/if}    </ul></div>‘,
1331                     cons: ‘<div id="newFittign-tab"  data-widget="tabs"><div class="master">    <s></s>    <div class="p-img">        <a href="http://item.jd.com/${mainproduct.sku}.html" target="_blank"><img src="${pageConfig.FN_GetImageDomain(mainproduct.sku)}n4/${mainproduct.imageUrl}" height="100" width="100"></a>    </div>    <div class="p-name">        <a href="http://item.jd.com/${mainproduct.sku}.html" target="_blank">${mainproduct.name}</a>    </div>    <div class="p-price"><input id="inp_${mainproduct.sku}_reco" type="checkbox" onclick="return false;" onchange="return false" wmeprice="{if mainproduct.price==""}0.00{else}${mainproduct.price}{/if}" wmaprice="${mainproduct.maPrice}" skuid="${mainproduct.sku}" checked/> ${mainproduct.price}</div></div><div class="suits" style="width:${pageConfig.wideVersion&&pageConfig.compatible?(4*165-40):(3*128)}px;overflow-x:{if G.cat[1]!=830}auto{else}hidden{/if};overflow-y:hidden;">    {for tab in accessoryList}    <ul id="newFitting-${parseInt(tab_index)+1}" data-cat="${tab.thirdName}" style="width:${G.cat[1]==830?165*tab.accessoryList.length:660}px;" class="{if G.cat[1]==830}{if Number(tab_index)!=0}hide{/if}{else}hide{/if} lh" data-widget="tab-content">        {if G.cat[1]==830}            {for list in tab.accessoryList}            <li data-push="${pageConfig.product.cbNewFittings.push(list.sku)}" {if (parseInt(list_index)+1)==tab.accessoryList.length} class="last_item"{/if} onclick=\‘${pageConfig.setFittingsClk(G.cat[2], G.sku, list.sku, 50, list_index, "rodGlobalTrack")}\‘>                <s></s>                <div class="p-img">                    <a href="http://item.jd.com/${list.sku}.html" target="_blank"><img src="${pageConfig.FN_GetImageDomain(list.sku)}n4/${list.imageUrl}"  height="100" width="100"></a>                </div>                <div class="p-name">                    <a href="http://item.jd.com/${list.sku}.html" target="_blank">${list.name}</a>                </div>                <div class="choose">                    <input type="checkbox" id="inp_${list.sku}" onclick="G.calculatePrice(this, \‘#tab-reco\‘)" wmaprice="${list.maPrice}" wmeprice="${list.price}" skuid="${list.sku}" />                    <label for="inp_${list.sku}" class="p-price">                        <strong class="J-p-${list.sku}"></strong>                    </label>                </div>            </li>            {/for}        {else}            <div class="iloading">\u52a0\u8f7d\u4e2d...</div>        {/if}    </ul>    {/for}</div><div class="infos">    {if pageConfig.product.cat[1]!=830}<div id="more-fitting-link"><a class="hl_link" href="http://rs.jd.com/accessorie/center.html?sku=${G.sku}&thirdTypeId=3" target="_blank">\u8fdb\u5165\u914d\u4ef6\u9009\u8d2d\u4e2d\u5fc3</a><span>&gt;<b></b></span></div>{/if}    <s></s>    <div class="p-name">        <em>\u5df2\u9009\u62e9<span>0</span>\u4e2a\u914d\u4ef6</em>    </div>    <div class="p-price">\u642d&nbsp;&nbsp;\u914d&nbsp;&nbsp;\u4ef7\uff1a        <strong class="res-jdprice">{if mainproduct.price==""}\u6682\u65e0\u62a5\u4ef7{else}\uffe5 ${mainproduct.price.toFixed(2)}{/if}</strong>    </div>    <div class="p-saving">\u53c2&nbsp;&nbsp;\u8003&nbsp;&nbsp;\u4ef7\uff1a        <span class="res-totalprice">\uffe5 ${mainproduct.maPrice.toFixed(2)}</span>    </div>    <div class="btns">        <a class="btn-buy" href="http://jd2008.jd.com/purchase/OrderFlowService.aspx?action=AddSkus&wids=${G.sku}">\u7acb\u5373\u8d2d\u4e70</a>    </div></div></div>‘,
1332                     item: ‘{for item in accessoryList}<li data-push="${pageConfig.product.cbNewFittings.push(item.sku)}" {if (parseInt(item_index)+1)==accessoryList.length} class="last_item"{/if}  onclick=\‘${pageConfig.setFittingsClk(G.cat[2], G.sku, item.sku, 34, item_index)};\‘>    <s></s>    <div class="p-img">        <a href="http://item.jd.com/${item.sku}.html" target="_blank"><img src="${pageConfig.FN_GetImageDomain(item.sku)}n4/${item.imageUrl}"  height="100" skuidth="100"></a>    </div>    <div class="p-name">        <a href="http://item.jd.com/${item.sku}.html" target="_blank">${item.name}</a>    </div>    <div class="choose">        <input type="checkbox" id="inp_m_${item.sku}" onclick="G.calculatePrice(this, \‘#tab-reco\‘)" wmaprice="${item.maPrice}" wmeprice="${item.price}" skuid="${item.sku}" />        <label for="inp_m_${item.sku}" class="p-price">            <strong class="J-p-${item.sku}"></strong>        </label>    </div>    {if isExtra==true}    <div class="p-more{if (parseInt(item_index)+1)!==accessoryList.length} hide{/if}"><a class="hl_link" href="http://rs.jd.com/accessorie/center.html?sku=${G.sku}&thirdTypeId=${item.thirdType}" target="_blank"></a></div>    {else}    <div class="p-more"><a class="hl_link" href="http://rs.jd.com/accessorie/center.html?sku=${G.sku}&thirdTypeId=${item.thirdType}" target="_blank">\u66f4\u591a${item.thirdName}</a></div>    {/if}</li>{/for}‘
1333                 };
1334             if (pageConfig.product.cbNewFittings = [pageConfig.product.skuid], pageConfig.setFittingsClk = function(t, e, i, s, a) {
1335                 var n = {
1336                     cid: t,
1337                     mainSku: e,
1338                     itemSku: i,
1339                     id: s,
1340                     ind: a,
1341                     str: "rodGlobalTrack"
1342                 };
1343                 return 830 === G.cat[1] && (n.cid = "", n.mainSku = ""), n.rid = 830 === G.cat[1] ? 402002 : 402001, ‘clsClickLog("${cid}", "${mainSku}", "${itemSku}", ${id}, "${ind}", "${str}");G.clsLog(${rid}, "1", ${G.sku}, ${itemSku}, ${ind});‘.process(n)
1344             }, 655 == G.cat[2] ? (clsPVAndShowLog("655", G.sku, 34, "p"), G.clsLog(402001, "0", G.sku, pageConfig.product.cbNewFittings.join(","))) : G.clsLog(402002, "0", G.sku, pageConfig.product.cbNewFittings.join(",")), t.accessoryByAccessList && (t.accessoryList = t.accessoryByAccessList, t.accessoryByAccessList = null), t && t.accessoryList && t.accessoryList.length > 0) {
1345                 if (e.attr("loaded", "true").html(s.cons.process(t)), 830 != pageConfig.product.cat[1]) {
1346                     for (var a = 0; t.accessoryList.length > a; a++) t.accessoryList[a].accessoryList.length = 4, t.accessoryList[a].accessoryList[0].thirdType = t.accessoryList[a].thirdTypeId, t.accessoryList[a].accessoryList[0].thirdName = t.accessoryList[a].thirdName, i.accessoryList.push(t.accessoryList[a].accessoryList[0]), i.isExtra = !1;
1347                     $("#newFittign-tab .suits").prepend(‘<ul id="newFitting-0" class="lh" data-widget="tab-content" style="width:‘ + 165 * i.accessoryList.length + ‘px">‘ + s.item.process(i) + "</ul>")
1348                 }
1349                 $("#newFittign-tab").prepend(s.tabs.process(t)).Jtab({
1350                     event: "click",
1351                     compatible: !0,
1352                     currClass: "scurr"
1353                 }, function(t, i, a) {
1354                     var n = $("#newFittign-tab .suits"),
1355                         o = $("#tab-cat-" + a).attr("data-cat").split("|")[1],
1356                         r = $("#tab-cat-" + a).attr("data-cat").split("|")[0],
1357                         c = $("#more-fitting-link a");
1358                     if (830 != G.cat[1])
1359                         if (c.attr("href", "http://rs.jd.com/accessorie/center.html?sku=" + G.sku + "&thirdTypeId=" + o).html("\u8fdb\u5165" + r), n.scrollLeft(0), 0 !== a) {
1360                             if ("1" == $("#newFitting-" + a).attr("loaded")) return;
1361                             window.fetchJSON_fittingExtra = function(t) {
1362                                 var i = pageConfig.wideVersion && pageConfig.compatible ? 4 : 3;
1363                                 t.isExtra = !0, t.accessoryList = t.accessoryList.slice(0, i), $("#newFitting-" + a).html(s.item.process(t)).attr("loaded", "1"), $("#newFitting-" + a).find(".hl_link").html("\u66f4\u591a" + $("#tab-cat-" + a).html());
1364                                 try {
1365                                     delete window.fetchJSON_fittingExtra
1366                                 } catch (n) {}
1367                                 G.getPriceNum(pageConfig.product.cbNewFittings, readCookie("ipLoc-djd"), e, null, function(t, i) {
1368                                     e.find(‘input[skuid="‘ + t + ‘"]‘).attr("wmeprice", i.p), e.find(‘input[skuid="‘ + t + ‘"]‘).attr("wmaprice", i.m), G.calculatePrice($("#tab-reco .master input")[0], "#tab-reco")
1369                                 })
1370                             }, $.ajax({
1371                                 url: "http://rs.jd.com/accessorie/newServiceList.jsonp?sku=" + G.sku + "&thirdTypeId=" + o + "&callback=fetchJSON_fittingExtra",
1372                                 dataType: "script",
1373                                 cache: "true",
1374                                 scriptCharset: "utf-8"
1375                             }), $("#newFittign-tab .suits").removeAttr("style").css({
1376                                 width: pageConfig.wideVersion && pageConfig.compatible ? 620 : 384,
1377                                 overflow: pageConfig.wideVersion && pageConfig.compatible ? "hidden" : "auto"
1378                             })
1379                         } else $("#newFittign-tab .suits").removeAttr("style").css({
1380                             width: pageConfig.wideVersion && pageConfig.compatible ? 620 : 384,
1381                             overflowX: "auto"
1382                         })
1383                 }), clsPVAndShowLog("655", G.sku, 34, "s"), this.switchTab("#th-fitting"), G.removeLastAdd(), $("#tab-reco .master input").attr("skuid", pageConfig.product.skuid), G.getPriceNum(pageConfig.product.cbNewFittings, readCookie("ipLoc-djd"), e, null, function(t, i) {
1384                     e.find(‘input[skuid="‘ + t + ‘"]‘).attr("wmeprice", i.p), e.find(‘input[skuid="‘ + t + ‘"]‘).attr("wmaprice", i.m), G.calculatePrice($("#tab-reco .master input")[0], "#tab-reco")
1385                 })
1386             }
1387         },
1388         renderHTML: function() {
1389             switch (1 == this.type ? new Grecommend(G.sku, 105e3, readCookie("ipLoc-djd"), $("#browse-browse .mc")) : new Grecommend(G.sku, 102004, readCookie("ipLoc-djd"), $("#browse-browse .mc")), this.type) {
1390                 case 1:
1391                     new Grecommend(G.sku, 103002, readCookie("ipLoc-djd"), $("#buy-buy .mc")), new Grecommend(G.sku, 103001, readCookie("ipLoc-djd"), $("#view-buy .mc")), new Grecommend(G.sku, 103003, readCookie("ipLoc-djd"), $("#tab-hot"));
1392                     break;
1393                 case 2:
1394                     new Grecommend(G.sku, 102002, readCookie("ipLoc-djd"), $("#buy-buy .mc")), new Grecommend(G.sku, 102003, readCookie("ipLoc-djd"), $("#view-buy .mc")), 1315 == G.cat[0] || 11729 == G.cat[0] ? new Grecommend(G.sku, 102001, readCookie("ipLoc-djd"), $("#tab-hot"), 12) : new Grecommend(G.sku, 102001, readCookie("ipLoc-djd"), $("#tab-hot"), 12);
1395                     break;
1396                 default:
1397             }
1398         },
1399         getDaPeiGou: function(t, e) {
1400             var t = t || G.sku,
1401                 i = this,
1402                 s = ‘<ul class="lh">    {for list in cbList}    <li class="fore${parseInt(list_index)+1}" clstag="shangpin|keycount|product|dapeip${parseInt(list_index)+1}">        <div class="p-img">            <a target="_blank" title="${list.title}" href="http://dapeigou.jd.com/collocateDetail.html?cid=${list.c_id}&s=${list.sku_ids.join(\‘,\‘)}">                <img height="130" width="130"  src="${list.url}">            </a>        </div>        <div class="p-name ac">            <a target="_blank" title="${list.title}" href="http://dapeigou.jd.com/collocateDetail.html?cid=${list.c_id}&s=${list.sku_ids.join(\‘,\‘)}">${list.title}</a>        </div>    </li>    {/for}</ul>‘;
1403             $.ajax({
1404                 url: "http://rs.jd.com/collocationBuy/service.jsonp?sku=" + t + "&venderId=" + e,
1405                 dataType: "jsonp",
1406                 success: function(t) {
1407                     t && t.cbList && t.cbList.length > 0 ? ($("#tab-dpg").html(s.process(t)), i.switchTab("#th-dpg")) : $("#tab-dpg .iloading").removeClass("iloading").html("\u6682\u65e0\u6570\u636e")
1408                 }
1409             })
1410         },
1411         switchTab: function(t) {
1412             var e = $(t),
1413                 i = $("#recommend"),
1414                 s = $(‘#recommend .mc[loaded="true"]‘),
1415                 a = s.length > 0;
1416             i.show(), e.show(), "#th-service" != t ? e.trigger("click") : a || e.trigger("click")
1417         },
1418         cbRecoFittings: function(t) {
1419             var e = $("#tab-reco");
1420             pageConfig.product.cbRecoFittings = [pageConfig.product.skuid], t && t.fittings && t.fittings.length > 0 && (e.attr("loaded", "true").html(‘<ul class="stab lh">‘ + recoFittings_TPL.tabs.process(t) + ‘</ul><div class="stabcon">‘ + recoFittings_TPL.cons.process(t) + "</div>"), this.switchTab("#th-fitting"), G.removeLastAdd(), G.getPriceNum(pageConfig.product.cbRecoFittings, readCookie("ipLoc-djd"), e, null, function(t, i) {
1421                 e.find(‘input[skuid="‘ + t + ‘"]‘).attr("wmeprice", i.p), e.find(‘input[skuid="‘ + t + ‘"]‘).attr("wmaprice", i.m), G.calculatePrice($("#tab-reco .master input")[0], "#tab-reco", 1)
1422             }), G.getNewCLK({
1423                 name: "tjpj",
1424                 action: "0",
1425                 csku: pageConfig.product.cbRecoFittings,
1426                 sku: G.sku
1427             }))
1428         }
1429     },
1430     setAmount = {
1431         min: 1,
1432         max: 199,
1433         count: 1,
1434         countEl: $("#buy-num"),
1435         buyLink: $("#choose-btn-append .btn-append"),
1436         targetLink: $("#choose-btn-append .btn-append"),
1437         matchCountKey: ["pcount", "pCount", "num"],
1438         add: function() {
1439             return this.count >= this.max ? !1 : (this.count++, this.countEl.val(this.count), this.setBuyLink(), void 0)
1440         },
1441         reduce: function() {
1442             return this.count <= this.min ? !1 : (this.count--, this.countEl.val(this.count), this.setBuyLink(), void 0)
1443         },
1444         modify: function() {
1445             var t = parseInt(this.countEl.val(), 10);
1446             return "" == this.countEl.val() ? !1 : isNaN(t) || this.min > t || t > this.max ? (this.countEl.val(this.count), !1) : (this.count = t, this.setBuyLink(), void 0)
1447         },
1448         setBuyLink: function() {
1449             var t = this;
1450             t.targetLink.each(function() {
1451                 var e, i, s = $(this),
1452                     a = s.attr("href"),
1453                     n = a.split("?")[1];
1454                 (function() {
1455                     for (var o = 0; t.matchCountKey.length > o; o++)
1456                         if (i = RegExp(t.matchCountKey[o] + "=\\d+"), i.test(n)) return e = a.replace(i, t.matchCountKey[o] + "=" + t.count), s.attr("href", e), !1
1457                 })()
1458             }), window.getPOPDeliveCash && getPOPDeliveCash(), onNumChange()
1459         }
1460     };
1461 $.extend(jdModelCallCenter, {
1462     usefulComment: function(t) {
1463         $.login({
1464             modal: !0,
1465             complete: function(e) {
1466                 if (e.IsAuthenticated) {
1467                     var i = t.parent().attr("id"),
1468                         s = "agree" == t.attr("name");
1469                     "true" != t.attr("enabled") ? $.ajax({
1470                         type: "GET",
1471                         url: "http://club.jd.com/index.php",
1472                         data: {
1473                             mod: "ProductComment",
1474                             action: "saveCommentUserfulVote",
1475                             commentId: i,
1476                             isUseful: s
1477                         },
1478                         dataType: "jsonp",
1479                         success: function(e) {
1480                             if (t.attr("enabled", "true"), 1 == e.status) {
1481                                 var i = parseInt(t.attr("title")) + 1;
1482                                 t.attr("title", i), s ? t.html("\u6709\u7528(" + i + ")") : t.html("\u6ca1\u7528(" + i + ")")
1483                             } else alert("\u4e00\u4e2a\u8bc4\u4ef7\u53ea\u80fd\u70b9\u4e00\u6b21\u5466")
1484                         }
1485                     }) : alert("\u4e00\u4e2a\u8bc4\u4ef7\u53ea\u80fd\u70b9\u4e00\u6b21\u5466")
1486                 }
1487             }
1488         }), mark(G.sku, 5)
1489     }
1490 }), $(".btn-agree,.btn-oppose").livequery("click", function() {
1491     var t = $(this);
1492     $.extend(jdModelCallCenter.settings, {
1493         object: t,
1494         fn: function() {
1495             jdModelCallCenter.usefulComment(this.object)
1496         }
1497     }), jdModelCallCenter.settings.fn()
1498 });
1499 var consultationServiceUrl = "http://club.jd.com/newconsultationservice.aspx?callback=?";
1500 $("#btnReferSearch").livequery("click", function() {
1501     Consult.search(G.sku, $("#txbReferSearch").val(), 1, 6)
1502 }), $("#txbReferSearch").livequery("keydown", function(t) {
1503     13 == t.keyCode && Consult.search(G.sku, $("#txbReferSearch").val(), 1, 6)
1504 }), $("#backConsultations").livequery("click", function() {
1505     $("#consult .tab li.curr").trigger("click")
1506 }), $("#login").livequery("click", function() {
1507     $.login()
1508 });
1509 var Refresh = {
1510         init: function() {
1511             return G.isCellphone ? !1 : ("undefined" != typeof Promotions ? (Promotions.init(), pageConfig.promotionInited = !0) : pageConfig.promotionInited = !1, this.rFittings(), this.rCombine(), void 0)
1512         },
1513         rFittings: function() {
1514             var t, e = $("#tab-reco");
1515             pageConfig.product.cbNewFittings !== void 0 && (t = pageConfig.product.cbNewFittings), pageConfig.product.fittingsAuto !== void 0 && (t = pageConfig.product.fittingsAuto), pageConfig.product.cbRecoFittings !== void 0 && (t = pageConfig.product.cbRecoFittings), t !== void 0 && t.length > 1 && (t.push(pageConfig.product.skuid), $("#recommend .master input").attr("skuid", pageConfig.product.skuid), G.getPriceNum(t, readCookie("ipLoc-djd"), null, null, function(t, i) {
1516                 e.find(‘input[skuid="‘ + t + ‘"]‘).attr("wmeprice", i.p), e.find(‘input[skuid="‘ + t + ‘"]‘).attr("wmaprice", i.m), G.calculatePrice($("#tab-reco .master input")[0], "#tab-reco")
1517             }))
1518         },
1519         rCombine: function() {
1520             var t = $("#tab-hot");
1521             pageConfig.product.cbCombineBuying !== void 0 && (pageConfig.product.cbCombineBuying.push(pageConfig.product.skuid), G.getPriceNum(pageConfig.product.cbCombineBuying, readCookie("ipLoc-djd"), null, null, function(e, i) {
1522                 t.find(‘input[skuid="‘ + e + ‘"]‘).attr("wmeprice", i.p), t.find(‘input[skuid="‘ + e + ‘"]‘).attr("wmaprice", i.m), G.calculatePrice($("#tab-hot .master input")[0], "#tab-hot")
1523             }))
1524         }
1525     },
1526     CommentListNew = {
1527         loadFirstPage: !1,
1528         init: function(t) {
1529             var e = $("#comments-list").find(".mt"),
1530                 i = ‘<div id="comment-sort" class="extra"> <select > <option value="3">\u70ed\u5ea6\u6392\u5e8f</option> <option value="1">\u65f6\u95f4\u6392\u5e8f</option> </select> </div>‘;
1531             1 > $("#comment-sort").length && e.append(i), this.commList = $("#comments-list"), this.commRate = $("#comment"), this.wrap = $("#comment-0"), this.sku = t || G.sku, this.bindSelect(e), this.commList.find(".tab li em").html("(0)")
1532         },
1533         bindSelect: function(t) {
1534             var e = this;
1535             t.find("select").change(function() {
1536                 var t = parseInt($(this).val(), 10);
1537                 e.sort !== t && (e.sort = t, e.getData(e.wrap, e.type, e.page))
1538             })
1539         },
1540         bindHover: function() {
1541             this.commList.find(".item-reply").hover(function() {
1542                 $(this).find(".reply-meta a").css("visibility", "visible")
1543             }, function() {
1544                 "none" === $(this).find(".replay-form").css("display") && $(this).find(".reply-meta a").css("visibility", "hidden")
1545             })
1546         },
1547         bindReply: function() {
1548             var t = this;
1549             this.commList.find(".btn-toggle").unbind("click").bind("click", function() {
1550                 var e = $(this),
1551                     i = e.parents(".i-item"),
1552                     s = e.attr("data-id");
1553                 e.hasClass("btn-toggle") && $("#btn-toggle-" + t.type + "-" + s).toggle().find("input")[0].focus(), e.hasClass("btn-reply") && "true" === i.attr("data-top") && i.find(".hide-default").toggle()
1554             }), this.bindHover(), this.commList.find(".reply-btn").unbind("click").bind("click", function(e) {
1555                 var i = $(e.target),
1556                     s = i.attr("data-guid"),
1557                     a = i.attr("data-replyId"),
1558                     n = i.attr("data-nickname"),
1559                     o = i.parents(".reply-input").find("input").val(),
1560                     r = {};
1561                 if (i.hasClass("reply-btn")) return t.currReply = i, o = o.replace(/</g, "<").replace(/>/g, ">"), a = i.hasClass("reply-btn-lz") ? "" : a, r = {
1562                     guid: s,
1563                     content: o,
1564                     replyId: a,
1565                     nickname: n
1566                 }, "" === o.replace(/\s+/, "") ? (alert("\u8bf7\u8f93\u5165\u56de\u590d\u5185\u5bb9"), void 0) : (G.checkLogin(function(e) {
1567                     e.IsAuthenticated ? t.reply(r) : (jdModelCallCenter.settings.fn = function() {
1568                         G.checkLogin(function(e) {
1569                             e.IsAuthenticated && t.reply(r)
1570                         })
1571                     }, jdModelCallCenter.login())
1572                 }), void 0)
1573             })
1574         },
1575         reply: function(t) {
1576             var e = this,
1577                 i = {
1578                     mod: "Club2013.ProductCommentReply",
1579                     action: "saveProductCommentReply",
1580                     commentId: t.guid,
1581                     content: t.content,
1582                     parentId: t.replyId
1583                 },
1584                 s = t.content.replace(/[\u4e00-\u9fa5]/g, "XX");
1585             return "" === t.content.replace(/\s+/, "") ? (alert("\u8bf7\u8f93\u5165\u56de\u590d\u5185\u5bb9"), !1) : 1 > s.length || s.length > 800 ? (alert("\u56de\u590d\u5185\u5bb9\u5e94\u57281~400\u4e2a\u5b57\u4ee5\u5185"), !1) : ($.ajax({
1586                 url: "http://club.jd.com/index.php?",
1587                 data: i,
1588                 dataType: "jsonp",
1589                 success: function(i) {
1590                     1 === i.status ? (i.data.nickname = t.nickname, e.setReplyItem(i.data)) : i.info && alert(i.info)
1591                 }
1592             }), void 0)
1593         },
1594         setReplyItem: function(t) {
1595             var e, i = this,
1596                 s = i.currReply.parents(".i-item").eq(0),
1597                 a = s.find(".reply-lz"),
1598                 n = i.currReply.parents(".reply-list").eq(0),
1599                 o = n.find(".parentReplyFrom"),
1600                 r = this.currReply.parents(".item-reply").eq(0),
1601                 c = a.next();
1602             t._type = this.type, t.commentReply.guid = s.attr("data-guid"), t.commentReply.index = e = c.length > 0 ? parseInt(c.attr("data-index"), 10) + 1 : 1, t.toname = r.attr("data-name"), t.touid = r.attr("data-uid"), o.length > 0 && (t.replyHTML = $("<div>").append(o.clone()).html());
1603             var d = ‘<div class="item-reply hide-default" data-index="${commentReply.index}" data-name="${commentReply.nickname}" data-uid="${commentReply.uid}">          <strong>${commentReply.index}</strong>          <div class="reply-list">              <div class="reply-con">                  <span class="u-name">                      <a href="http://club.jd.com/userreview/${commentReply.uid}-1-1.html" target="_blank">${commentReply.nickname}{if commentReply.userClient==99}<b></b>{/if}</a>                      {if parseInt(commentReply.parentId, 10)>0}                          <em>\u56de\u590d</em>                          {if typeof replyHTML!=="undefined"}                              ${replyHTML}                          {else}                              <a class="parentReplyTo" target="_blank" href="http://club.jd.com/userreview/${touid}-1-1.html">{if parseInt(commentReply.parentId, 10)<0}{else}${toname}{/if}</a>                          {/if}                      {/if}\uff1a                  </span>                  <span class="u-con">${commentReply.content}</span>              </div>              <div class="reply-meta">                  <span class="reply-left fl">${commentReply.creationTimeString.replace(/:[0-9][0-9]$/, "")}</span>                  <a class="btn-toggle p-bfc" data-id="${commentReply.id}" href="#none">\u56de\u590d</a>              </div>              <div id="btn-toggle-${_type}-${commentReply.id}" class="replay-form none">                  <div class="arrow">                      <em>\u25c6</em><span>\u25c6</span>                  </div>                  <div class="reply-wrap">                      <p><em>\u56de\u590d</em> <span class="u-name">${commentReply.nickname}\uff1a</span></p>                      <div class="reply-input">                          <div class="fl"><input type="text" /></div>                          <a href="#none" class="reply-btn btn-gray p-bfc" data-guid="${commentReply.guid}" data-replyId="${commentReply.id}">\u56de\u590d</a>                          <div class="clr"></div>                      </div>                  </div>              </div>          </div>      </div>‘;
1604             a.after($(d.process(t)).fadeIn()), s.find(".btns .btn-reply em").html(e), this.currReply.hasClass("reply-btn-lz") || this.currReply.parents(".replay-form").eq(0).hide(), this.currReply.parents(".reply-input").find("input").val(""), this.bindReply()
1605         },
1606         getData: function(t, e, i, s) {
1607             var a = this;
1608             this.wrap = t, this.type = e || 0, this.page = i, this.sType = s || 3, this.commRateLoaded = !1, this.url = "http://club.jd.com/productpage/p-{skuId}-s-{commType}-t-{sortType}-p-{currPage}.html", this.url = this.url.replace("{skuId}", this.sku).replace("{commType}", this.type).replace("{sortType}", this.sType).replace("{currPage}", this.page), $.ajax({
1609                 url: this.url,
1610                 dataType: "jsonp",
1611                 success: function(t) {
1612                     a.setData(t)
1613                 }
1614             })
1615         },
1616         setABTest: function(t) {
1617             var e = document.getElementsByTagName("head")[0],
1618                 i = document.createElement("script");
1619             t && t.jwotest_product !== void 0 && (1 > $("#gemini_comment_sort" + t.jwotest_product).length && $("body").append(‘<div id="gemini_comment_sort‘ + t.jwotest_product + ‘"></div>‘), i.type = "text/javascript", i.async = !0, i.id = "gemini_divide_script", i.setAttribute("param", "[{t:24}]"), i.setAttribute("cTime", "1387864948704"), i.src = "http://api.gemini.jd.com/gemini/gemini_v1.0.js", e.appendChild(i))
1620         },
1621         setData: function(t) {
1622             return t || (this.wrap.html("\u3000\u6682\u65e0\u8bc4\u8bba"), this.commRate.find(".mc").html("\u3000\u6682\u65e0\u8bc4\u8bba")), t.comments === void 0 ? (this.wrap.html(‘<div class="norecode"> \u6682\u65e0\u5546\u54c1\u8bc4\u4ef7\uff01</div>‘), void 0) : (this.commRateLoaded === !1 && this.setCommRate($("#comment"), t), t._type = this.type, this.setCommentCount(t), this.wrap.html(newCommentList_TPL.process(t)), this.bindReply(), this.setPageNav(t), this.loadFirstPage = !0, void 0)
1623         },
1624         setPageNav: function(t) {
1625             var e = this,
1626                 i = "";
1627             switch (this.type) {
1628                 case 0:
1629                     i = "commentCount";
1630                     break;
1631                 case 1:
1632                     i = "poorCount";
1633                     break;
1634                 case 2:
1635                     i = "generalCount";
1636                     break;
1637                 case 3:
1638                     i = "goodCount";
1639                     break;
1640                 case 4:
1641                     i = "showCount";
1642                     break;
1643                 default:
1644                     i = "commentCount"
1645             }
1646             $("#commentsPage" + t.score).pagination(t.productCommentSummary[i], {
1647                 items_per_page: 10,
1648                 num_display_entries: 5,
1649                 current_page: e.page,
1650                 num_edge_entries: 2,
1651                 link_to: "#comments-list",
1652                 prev_text: "\u4e0a\u4e00\u9875",
1653                 next_text: "\u4e0b\u4e00\u9875",
1654                 ellipse_text: "...",
1655                 prev_show_always: !1,
1656                 next_show_always: !1,
1657                 callback: function(i) {
1658                     e.getData(e.wrap, t.score, i, e.sType)
1659                 }
1660             })
1661         },
1662         setCommentCount: function(t) {
1663             var e = this.commList.find(".tab li em"),
1664                 i = t.productCommentSummary;
1665             e.eq(0).html("(" + i.commentCount + ")"), e.eq(1).html("(" + i.goodCount + ")"), e.eq(2).html("(" + i.generalCount + ")"), e.eq(3).html("(" + i.poorCount + ")"), e.eq(4).html("(" + i.showCount + ")")
1666         },
1667         setCommRate: function(t, e) {
1668             t.find(".mc").html(newCommentRate_TPL.process(e)), this.commRateLoaded = !0
1669         }
1670     },
1671     Discuss = {
1672         getData: function(t, e) {
1673             var i = this,
1674                 s = "http://club.jd.com/clubservice/newcomment-",
1675                 a = "",
1676                 n = e;
1677             switch (this.obj = n, t) {
1678                 case 0:
1679                     a = "Club";
1680                     break;
1681                 case 1:
1682                     a = "Order";
1683                     break;
1684                 case 2:
1685                     a = "User";
1686                     break;
1687                 case 3:
1688                     a = "Question";
1689                     break;
1690                 case 4:
1691                     a = "Friend"
1692             }
1693             window.fetchJSON_Discuss = function(t) {
1694                 n.html(discuss_TPL.process(t)), i.getDiscussComment()
1695             }, $.getJSONP(s + a + "-" + G.orginSku + ".html?callback=fetchJSON_Discuss")
1696         },
1697         getDiscussComment: function() {
1698             var t = this,
1699                 e = "http://club.jd.com/clubservice/newcomment-Commp." + G.cat[2] + "-" + G.sku + ".html";
1700             $.ajax({
1701                 url: e,
1702                 dataType: "jsonp",
1703                 success: function(e) {
1704                     e.discussComments && e.discussComments.Comments && e.discussComments.Comments.length && t.setDiscussComment(e.discussComments)
1705                 }
1706             })
1707         },
1708         setDiscussComment: function(t) {
1709             var e = $("#discuss-comment"),
1710                 i = ‘<tbody>    {for item in Comments}    <tr>        <td class="col1">            <div class="topic">                <b class="icon lun"></b>                <a href="http://club.jd.com/CommunityGroupDetail/${item.id}_1.html" target="_blank">${item.title}</a>            </div>        </td>        <td class="col2">${item.replyCount}/${item.viewCount}</td>        <td class="col3">            <div class="u-name">                <a target="_blank" title="${comment.uRemark}" href="http://me.jd.com/${item.uid}.html">{if item.uRemark}${item.uRemark}{else}${item.nickname}{/if}</a>            </div>        </td>        <td class="col4">${item.creationTime}</td>    </tr>    {/for}</tbody>‘;
1711             e.html(i.process(t)), this.obj.find(".norecode").hide(), this.obj.find(".total span").html("\u5171" + (this.count + t.CommentCount) + "\u4e2a\u8bdd\u9898")
1712         }
1713     },
1714     Consult = {
1715         getData: function(t, e) {
1716             window.fetchJSON_Consult = function(t) {
1717                 if (e.html(consult_TPL.process(t)), void 0 !== pageConfig.im) {
1718                     var i = pageConfig.im,
1719                         s = i.code,
1720                         a = i.seller;
1721                     if (1 == s) $("#j-im-extra").css("display", "inline-block"), $("#j-im-extra").attr("title", a + " \u8054\u7cfb\u5ba2\u670d"), $("#j-im-extra").click(function() {
1722                         onlineService(1, a, i.chatDomain)
1723                     });
1724                     else if (2 == s) {
1725                         $("#j-im-extra").css("display", "inline-block");
1726                         var n = pid.length >= 10 ? " \u5ba2\u670d\u76ee\u524d\u4e0d\u5728\u7ebf\uff01\u8d2d\u4e70\u4e4b\u524d\uff0c\u5982\u6709\u95ee\u9898\uff0c\u8bf7\u5728\u6b64\u9875\u201c\u5168\u90e8\u8d2d\u4e70\u54a8\u8be2\u201d\u4e2d\u5411\u4eac\u4e1c\u5ba2\u670d\u53d1\u8d77\u54a8\u8be2" : " \u5382\u5546\u552e\u524d\u54a8\u8be2\u76ee\u524d\u4e0d\u5728\u7ebf\uff01\u8d2d\u4e70\u4e4b\u524d\uff0c\u5982\u6709\u95ee\u9898\uff0c\u8bf7\u5728\u6b64\u9875\u201c\u5168\u90e8\u8d2d\u4e70\u54a8\u8be2\u201d\u4e2d\u5411\u4eac\u4e1c\u5ba2\u670d\u53d1\u8d77\u54a8\u8be2";
1727                         $("#j-im-extra").addClass("d-offline").html("<b>\u7559\u8a00\u54a8\u8be2</b>").attr("title", a + n).unbind("click")
1728                     } else(3 == s || 9 == s) && ($("#j-im-extra").css("display", "inline-block").find("b").html("\u7ed9\u5ba2\u670d\u7559\u8a00"), $("#j-im-extra").addClass("d-offline").html("<b>\u7559\u8a00\u54a8\u8be2</b>").attr("title", a + " \u5ba2\u670d\u76ee\u524d\u4e0d\u5728\u7ebf\uff0c\u60a8\u53ef\u4ee5\u70b9\u51fb\u6b64\u5904\u7ed9\u5546\u5bb6\u7559\u8a00\uff0c\u5e76\u5728\u3010\u6211\u7684\u4eac\u4e1c->\u6d88\u606f\u7cbe\u7075\u3011\u4e2d\u67e5\u770b\u56de\u590d").click(function() {
1729                         onlineService(3, a, i.chatDomain)
1730                     }))
1731                 }
1732             }, $.getJSONP("http://club.jd.com/clubservice/newconsulation-" + G.orginSku + "-" + (t + 1) + ".html?callback=fetchJSON_Consult")
1733         },
1734         setExtraData: function(t, e) {
1735             $.jmsajax({
1736                 url: "/newsserver.asmx",
1737                 method: "PayExplain",
1738                 data: {
1739                     id: "A-product-0" + (t - 3)
1740                 },
1741                 success: function(i) {
1742                     if (null != i) {
1743                         var s = pageConfig.compatible && pageConfig.wideVersion ? 770 : 1450;
1744                         6 === t ? $("#consult-6").html(‘<iframe src="http://help.jd.com/help/deliveryService.html" style="margin-top:10px;width:100%;height:‘ + s + ‘px;border:none;"></iframe>‘) : e.html(i)
1745                     }
1746                 }
1747             })
1748         },
1749         search: function(t, e, i) {
1750             var s = "http://search.jd.com/sayword?",
1751                 i = i || 0,
1752                 t = t || G.orginSku,
1753                 a = this;
1754             $.ajax({
1755                 url: s,
1756                 dataType: "jsonp",
1757                 data: {
1758                     wid: t,
1759                     keyword: encodeURI(e),
1760                     page: i,
1761                     ps: 5
1762                 },
1763                 success: function(t) {
1764                     var e = ‘<div class="clb"><div id="ReferPagenation" class="pagin fr none"></div></div>‘;
1765                     if (t.length > 0) {
1766                         var s = 0 >= t[0].list.length || 0 >= t[0].total ? "\uff0c\u8bd5\u8bd5\u66f4\u7b80\u77ed\u7684\u5173\u952e\u8bcd\u6216\u66f4\u6362\u5173\u952e\u8bcd" : "",
1767                             n = ‘<div id="consult-result" class="result clearfix"><div class="fl">\u5171\u641c\u7d22\u5230<strong>‘ + t[0].total + "</strong>\u6761\u76f8\u5173\u54a8\u8be2" + s + ‘\u3000<a id="backConsultations" href="#none">\u8fd4\u56de</a></div><div class="fr"><em>\u58f0\u660e\uff1a\u4ee5\u4e0b\u56de\u590d\u4ec5\u5bf9\u63d0\u95ee\u80053\u5929\u5185\u6709\u6548\uff0c\u5176\u4ed6\u7f51\u53cb\u4ec5\u4f9b\u53c2\u8003\uff01</em></div></div>‘;
1768                         if ($("#consult .tabcon:visible").html(n + "" + consult_search_TPL.process(t[0]) + e), 0 >= t[0].list.length || 0 >= t[0].total) return !1;
1769                         $("#ReferPagenation").show().pagination(t[0].total, {
1770                             items_per_page: 5,
1771                             num_display_entries: 5,
1772                             current_page: i - 1,
1773                             num_edge_entries: 0,
1774                             link_to: "#consult",
1775                             prev_text: "\u4e0a\u4e00\u9875",
1776                             next_text: "\u4e0b\u4e00\u9875",
1777                             ellipse_text: "...",
1778                             prev_show_always: !1,
1779                             next_show_always: !1,
1780                             callback: function(t) {
1781                                 a.search(G.orginSku, $("#txbReferSearch").val(), t + 1, 6)
1782                             }
1783                         })
1784                     }
1785                 }
1786             })
1787         }
1788     },
1789     Repository = {
1790         init: function(t) {
1791             var t = t || G.sku;
1792             this.t = null, this.getKeywords(), this.content = $(".detail-content").eq(0)
1793         },
1794         setKeywords: function(t) {
1795             var e = (this.content.html(), $("body").eq(0)),
1796                 i = ‘<b class="wiki-arr">\u25c7</b><div class="wiki-inner">  <dl><dt>${keyword}</dt>      <dd>${description}</dd>  </dl>  <div class="wiki-more"><a href="${href}" clstag="shangpin|keycount|product|xxjs" target="_blank">\u67e5\u770b\u8be6\u7ec6\u4ecb\u7ecd</a></div></div>‘,
1797                 s = "";
1798             if (null !== t && t.length > 0) {
1799                 for (var a = 0; t.length > a; a++) t[a].id = "wiki-keyword-" + a, this.content.html($(".detail-content").eq(0).html().replace(RegExp(t[a].keyword), ‘<span data-id="‘ + t[a].knid + ‘" class="wiki-words" id="‘ + "wiki-keyword-" + a + ‘" style="border-bottom:1px dotted;padding-bottom:2px;">‘ + t[a].keyword + "</span>")), s = i.process(t[a]), e.append($(‘<div class="wiki-pop hide" id="des-wiki-keyword-‘ + a + ‘">‘ + s + "</div>"));
1800                 $("img[data-lazyload]").Jlazyload({
1801                     type: "image",
1802                     placeholderClass: "err-product"
1803                 }), this.keyWordHover()
1804             }
1805         },
1806         log: function(t) {
1807             $.ajax({
1808                 url: "http://wiki.jd.com/statistics/termFloat.action?",
1809                 data: {
1810                     id: t,
1811                     t: +new Date
1812                 },
1813                 dataType: "script",
1814                 cache: !0
1815             })
1816         },
1817         keyWordHover: function() {
1818             var t = this,
1819                 e = $(".detail-content .wiki-words");
1820             $(".wiki-pop dl"), e.each(function() {
1821                 var e = this.id,
1822                     i = $(this).attr("data-id"),
1823                     s = $(this);
1824                 s.hover(function() {
1825                     var s = $("#product-detail"),
1826                         a = s.offset().left,
1827                         n = s.outerWidth(),
1828                         o = $(this).offset().left,
1829                         r = o - a > n / 2 ? 310 : 110,
1830                         c = o - a > n / 2 ? o - 300 : o - 100,
1831                         d = $(this).offset().top,
1832                         l = $(this).outerHeight();
1833                     $("#des-" + e).length > 0 && ($("#des-" + e).show().css({
1834                         left: c,
1835                         top: d + l - 1
1836                     }), $("#des-" + e).find("b").css({
1837                         marginLeft: r
1838                     })), t.t = setTimeout(function() {
1839                         t.log(i)
1840                     }, 500)
1841                 }, function(e) {
1842                     var i = this.id,
1843                         s = e.relatedTarget;
1844                     return s.id == "des-" + i ? !1 : ($("#des-" + i).hide(), clearTimeout(t.t), void 0)
1845                 }), $("#des-" + e).hover(function() {}, function(t) {
1846                     var i = t.relatedTarget;
1847                     return i.id == "des-" + e ? !1 : ($(this).hide(), void 0)
1848                 })
1849             })
1850         },
1851         getKeywords: function() {
1852             var t = this;
1853             $.ajax({
1854                 url: "http://wiki.jd.com/product/" + G.sku + "/keywords.html",
1855                 dataType: "jsonp",
1856                 success: function(e) {
1857                     t.setKeywords(e)
1858                 }
1859             })
1860         }
1861     },
1862     EvaluateGradeNew = {
1863         init: function(t) {
1864             var e = this;
1865             return e.popInfo = t, G.isJd ? !1 : (e.getGradeDetail(t.vid), e.getAddress(t.vid), e.setShopInfo(t), e.setGlobalBuy(t), void 0)
1866         },
1867         bindEvent: function() {
1868             return $("#evaluate s").click(function() {
1869                 $(this).toggleClass("fold"), $("#evaluate-detail").toggle()
1870             }), this
1871         },
1872         getAddress: function(t) {
1873             $.getJSONP("http://rms.shop.jd.com/json/pop/popcompany.action?callback=EvaluateGradeNew.setAddress&venderID=" + t)
1874         },
1875         setAddress: function(t) {
1876             var e = $("#online-service");
1877             t && (t.companyName || t.firstAddr || t.secAddr) && (e.after(‘<dl id="pop-company"><dt>\u516c\u53f8\u540d\u79f0\uff1a</dt><dd></dd></dl><dl id="pop-address"><dt>\u6240&nbsp;\u5728&nbsp;\u5730\uff1a</dt><dd></dd></dl>‘), $("#pop-company dd").html(t.companyName), $("#pop-address dd").html(t.firstAddr + "&nbsp;" + t.secAddr), pageConfig.wideVersion && pageConfig.compatible && $("#online-service dt").css("margin-bottom", 10))
1878         },
1879         setGlobalBuy: function(t) {
1880             var e = $("#brand-bar-pop");
1881             t.vid && 7 == ("" + t.vid).length && e.prepend(‘<div id="global-buy"><em><img src="http://misc.360buyimg.com/product/skin/2012/i/haiwai.gif" alt="\u6d77\u5916\u8d2d\u8ba4\u8bc1\u5546\u5bb6" /></em></div>‘)
1882         },
1883         getGrade: function() {
1884             var t = $(".evaluate-grade"),
1885                 e = $(".heart-red");
1886             return window.fetchJSON_Eva = function(i) {
1887                 e.removeClass("h4").addClass("h" + Math.round(parseFloat(i.result))), t.html(parseFloat(i.result) + "\u5206")
1888             }, $.getJSONP("http://club.jd.com/clubservice/merchantcomment/" + G.sku + ".html?callback=fetchJSON_Eva"), this
1889         },
1890         getGradeDetail: function(t) {
1891             $.getJSONP("http://rms.shop.jd.com/json/popscore/scorefact.action?callback=EvaluateGradeNew.setGradeDetail&venderID=" + t)
1892         },
1893         calcTrends: function(t) {
1894             var e = "",
1895                 i = "",
1896                 s = this.data;
1897             return 1 === t && (s.f20 === s.f35 && (e = "eva-eq"), s.f20 > s.f35 && (e = "eva-up", i = "\u8ba1\u7b97\u89c4\u5219\uff1a\uff08\u5546\u5bb6\u5f97\u5206-\u540c\u884c\u4e1a\u5e73\u5747\u5206\uff09/\uff08\u540c\u884c\u4e1a\u5546\u5bb6\u6700\u9ad8\u5f97\u5206-\u540c\u884c\u4e1a\u5e73\u5747\u5206\uff09"), s.f20 < s.f35 && (e = "eva-down", i = "\u8ba1\u7b97\u89c4\u5219\uff1a\uff08\u540c\u884c\u4e1a\u5e73\u5747\u5206-\u5546\u5bb6\u5f97\u5206\uff09/\uff08\u540c\u884c\u4e1a\u5e73\u5747\u5206-\u540c\u884c\u4e1a\u5546\u5bb6\u6700\u4f4e\u5f97\u5206\uff09")), 2 === t && (s.f21 === s.f36 && (e = "eva-eq"), s.f21 > s.f36 && (e = "eva-up", i = "\u8ba1\u7b97\u89c4\u5219\uff1a\uff08\u5546\u5bb6\u5f97\u5206-\u540c\u884c\u4e1a\u5e73\u5747\u5206\uff09/\uff08\u540c\u884c\u4e1a\u5546\u5bb6\u6700\u9ad8\u5f97\u5206-\u540c\u884c\u4e1a\u5e73\u5747\u5206\uff09"), s.f21 < s.f36 && (e = "eva-down", i = "\u8ba1\u7b97\u89c4\u5219\uff1a\uff08\u540c\u884c\u4e1a\u5e73\u5747\u5206-\u5546\u5bb6\u5f97\u5206\uff09/\uff08\u540c\u884c\u4e1a\u5e73\u5747\u5206-\u540c\u884c\u4e1a\u5546\u5bb6\u6700\u4f4e\u5f97\u5206\uff09")), 3 === t && (s.f22 === s.f37 && (e = "eva-eq"), s.f22 > s.f37 && (e = "eva-up", i = "\u8ba1\u7b97\u89c4\u5219\uff1a\uff08\u5546\u5bb6\u5f97\u5206-\u540c\u884c\u4e1a\u5e73\u5747\u5206\uff09/\uff08\u540c\u884c\u4e1a\u5546\u5bb6\u6700\u9ad8\u5f97\u5206-\u540c\u884c\u4e1a\u5e73\u5747\u5206\uff09"), s.f22 < s.f37 && (e = "eva-down", i = "\u8ba1\u7b97\u89c4\u5219\uff1a\uff08\u540c\u884c\u4e1a\u5e73\u5747\u5206-\u5546\u5bb6\u5f97\u5206\uff09/\uff08\u540c\u884c\u4e1a\u5e73\u5747\u5206-\u540c\u884c\u4e1a\u5546\u5bb6\u6700\u4f4e\u5f97\u5206\uff09")), {
1898                 trends: e,
1899                 title: i
1900             }
1901         },
1902         setGradeDetail: function(t) {
1903             this.data = t;
1904             var e = ‘<div id="evaluate-detail" class="m">    {if f23<1}        <div style="padding-bottom:10px">\u5356\u5bb6\u6682\u672a\u6536\u5230\u4efb\u4f55\u8bc4\u4ef7</div><style type="text/css">#brand-bar-pop #online-service{border-top:1px solid #ddd;}</style>    {else}        <div class="mt"><style type="text/css">#brand-bar-pop #evaluate{display:block;}</style>            <div class="fl">\u8bc4\u5206\u660e\u7ec6</div>            <div class="p-bfc">\u4e0e\u884c\u4e1a\u76f8\u6bd4</div>        </div>        <div class="mc">            <dl>                <dt>\u5546\u54c1\u8bc4\u5206\uff1a</dt>                <dd>                    <span class="eva-grade" title="${f20}">${f20.toFixed(10).substr(0,4)}<b>\u5206</b></span>                    <span class="eva-percent ${EvaluateGradeNew.calcTrends(1).trends}" title="${EvaluateGradeNew.calcTrends(1).title}"><s></s>{if EvaluateGradeNew.calcTrends(1)=="eva-eq"}-----{else}${(f46*100).toFixed(10).substr(0,4)}%{/if}</span>                </dd>            </dl>            <dl>                <dt>\u670d\u52a1\u8bc4\u5206\uff1a</dt>                <dd>                    <span class="eva-grade" title="${f21}">${f21.toFixed(10).substr(0,4)}<b>\u5206</b></span>                    <span class="eva-percent ${EvaluateGradeNew.calcTrends(2).trends}" title="${EvaluateGradeNew.calcTrends(2).title}"><s></s>{if EvaluateGradeNew.calcTrends(2)=="eva-eq"}-----{else}${(f47*100).toFixed(10).substr(0,4)}%{/if}</span>                </dd>            </dl>            <dl>                <dt>\u65f6\u6548\u8bc4\u5206\uff1a</dt>                <dd>                    <span class="eva-grade" title="${f22}">${f22.toFixed(10).substr(0,4)}<b>\u5206</b></span>                    <span class="eva-percent ${EvaluateGradeNew.calcTrends(3).trends}" title="${EvaluateGradeNew.calcTrends(3).title}"><s></s>{if EvaluateGradeNew.calcTrends(3)=="eva-eq"}-----{else}${(f48*100).toFixed(10).substr(0,4)}%{/if}</span>                </dd>            </dl><div class="line"></div>        </div>    {/if}</div>‘;
1905             if (null !== t) {
1906                 1 > $("#evaluate s").length && $("#evaluate").append("<s></s>"), this.bindEvent();
1907                 var i = this.popInfo ? "http://mall.jd.com/shopLevel-" + this.popInfo.id + ".html" : "#none";
1908                 $("#evaluate").after(e.process(t)).find("dt").html("\u7efc\u5408\u8bc4\u5206\uff1a"), $(".evaluate-grade strong").html(‘<a href="‘ + i + ‘" target="_blank">‘ + t.f23.toFixed(10).substr(0, 3) + "</a>").attr("title", t.f23), $(".heart-red").removeClass("h5").addClass("h" + parseInt(t.f23)), pageConfig.product.isFlashPurchase && ($("#evaluate,#evaluate-detail,#enter-shop a").hide(), $("#seller dd").html($("#seller dd").text()))
1909             }
1910         },
1911         setShopInfo: function(t) {
1912             t.vender && t.url && $("#seller dd a").html(t.vender).attr({
1913                 href: t.url,
1914                 title: t.vender
1915             }), $("#enter-shop a").attr("href", t.url).attr("clstag", "shangpin|keycount|product|pop-01"), t.linkphone && "" == $("#hotline dd").html() && ($("#hotline dd").html(t.linkphone), $("#hotline").show())
1916         }
1917     },
1918     JdService = {
1919         init: function(t, e, i) {
1920             this.sku = t, this.resObj = {}, this.currSku = null, this.obj = e || $("#choose-service .dd"), this.fn = i || function() {}, this.url = "", this.typeMap = {
1921                 t2: "ycbs",
1922                 t3: "ycbs",
1923                 t4: "ycbs",
1924                 t6: "ywbh",
1925                 t7: "ywbh",
1926                 t9: "yhdx"
1927             }, this.itemTPL = ‘<div class="item">    {if arguments[2][0]&&arguments[2][1]==0}        <ins class="yb-item-more">\u66f4\u591a</ins>    {/if}    <b></b>    <a class="yb-link" href="http://fuwu.jd.com" target="_blank"><i class="yb-ico"></i></a>    <a href="#none" class="yb-item {if arguments[2][0]&&arguments[2][1]==0} yb-item-first{/if}" id="yb-pid-${platformPid}" data-type="${sortId}" data-sku="${platformPid}" title="${G.showServiceDesc(sortId)}">${sortName} \uffe5${price}</a></div>‘, this.TPL = ‘<div class="service-type-yb">    {if r1.length>0}        <div class="yb-item-cat yb-item-cat-r1">            ${JdService.itemTPL.process(r1[0], [r1.length>1, 0])}            <div class="yb-item-hide">                {for item in r1}                    {if item_index!=0}${JdService.itemTPL.process(item, [r1.length>1])}{/if}                {/for}            </div>        </div>    {/if}    {if r2.length>0}        <div class="yb-item-cat yb-item-cat-r2">            ${JdService.itemTPL.process(r2[0], [r2.length>1, 0])}            <div class="yb-item-hide">                {for item in r2}                    {if item_index!=0}${JdService.itemTPL.process(item, [r2.length>1])}{/if}                {/for}            </div>        </div>    {/if}    {if r3.length>0}        <div class="yb-item-cat yb-item-cat-r3">            ${JdService.itemTPL.process(r3[0], [r3.length>1, 0])}            <div class="yb-item-hide">                {for item in r3}                    {if item_index!=0}${JdService.itemTPL.process(item, [r3.length>1])}{/if}                {/for}            </div>        </div>    {/if}    {if r4.length>0}        <div class="yb-item-cat yb-item-cat-r4">            ${JdService.itemTPL.process(r4[0], [r4.length>1, 0])}            <div class="yb-item-hide">                {for item in r4}                    {if item_index!=0}${JdService.itemTPL.process(item, [r4.length>1])}{/if}                {/for}            </div>        </div>    {/if}    {if r5.length>0}        <div class="yb-item-cat yb-item-cat-r5">            ${JdService.itemTPL.process(r5[0], [r5.length>1, 0])}            <div class="yb-item-hide">                {for item in r5}                    {if item_index!=0}${JdService.itemTPL.process(item, [r5.length>1])}{/if}                {/for}            </div>        </div>    {/if}    <div class="yb-item-cat yb-item-detail"><a class="hl_blue" target="_blank" href="http://sale.jd.com/act/1pChm0RcanBPYXIS.html?erpad_source=erpad">\u8be6\u60c5</a></div></div>‘, this.get()
1928         },
1929         bindEvent: function() {
1930             var t = this;
1931             this.obj.find(".service-type-yb .item a").bind("click", function() {
1932                 var e = $(this),
1933                     i = e.attr("data-sku"),
1934                     s = (e.attr("data-type"), e.parent(".item")),
1935                     a = e.parents(".yb-item-cat");
1936                 s.hasClass("selected") ? s.removeClass("selected") : (a.find(".item").removeClass("selected"), s.addClass("selected")), t.currSku = i, t.currEl = e, t.calResult()
1937             })
1938         },
1939         addCurrStyle: function(t) {
1940             var e = t.parents(".service-type").eq(0),
1941                 i = e.find(".item");
1942             i.removeClass("selected"), t.parent(".item").eq(0).addClass("selected")
1943         },
1944         removeCurrStyle: function(t) {
1945             t.parent(".item").eq(0).removeClass("selected")
1946         },
1947         get: function() {
1948             var t = this;
1949             $.ajax({
1950                 url: "http://d.360buy.com/yanbao2/get?skuId=" + this.sku,
1951                 dataType: "jsonp",
1952                 success: function(e) {
1953                     e && t.set(e)
1954                 }
1955             })
1956         },
1957         set: function(t) {
1958             var e, i, s = {
1959                     list: t
1960                 },
1961                 a = {
1962                     r1: [],
1963                     r2: [],
1964                     r3: [],
1965                     r4: [],
1966                     r5: []
1967                 },
1968                 n = t.length;
1969             for (e = 0; n > e; e++) i = RegExp("-" + t[e].sortId + "-"), i.test("-2-3-4-44-49-") ? a.r1.push(t[e]) : i.test("-6-7-41-47-52-53-54-57-58-59-") ? a.r2.push(t[e]) : i.test("-9-48-") ? a.r3.push(t[e]) : i.test("-11-50-") ? a.r4.push(t[e]) : i.test("-15-16-17-18-45-46-") ? a.r5.push(t[e]) : a.r1.push(t[e]);
1970             if (s.list.length > 0) {
1971                 this.obj.html(this.TPL.process(a)).parent().show(), pageConfig.product.hasYbInfo = !0;
1972                 var o = this.obj.find(".yb-item-cat");
1973                 o.hover(function() {
1974                     $(this).addClass("yb-item-hover")
1975                 }, function() {
1976                     $(this).removeClass("yb-item-hover")
1977                 }), o.each(function() {
1978                     var t = $(this).width();
1979                     $(this).find(".item").css("width", t)
1980                 })
1981             } else this.obj.parent().hide();
1982             this.bindEvent(), this.itemCount = s.list.length
1983         },
1984         addItem: function(t) {
1985             this.resObj["p" + t] = t
1986         },
1987         removeItem: function(t) {
1988             this.resObj["p" + t] = null
1989         },
1990         calResult: function() {
1991             var t = this.obj.find(".selected"),
1992                 e = [];
1993             return t.each(function() {
1994                 var t = $(this).find(".yb-item"),
1995                     i = t.attr("data-sku");
1996                 i && e.push(i)
1997             }), "function" == typeof this.fn ? this.fn.apply(this, [e, this.currSku, this.currEl]) : void 0
1998         }
1999     },
2000     NotifyPop = {
2001         _saleNotify: "http://skunotify." + pageConfig.FN_getDomain() + "/pricenotify.html?",
2002         _stockNotify: "http://skunotify." + pageConfig.FN_getDomain() + "/storenotify.html?",
2003         init: function(t, e, i) {
2004             var s, a = this,
2005                 n = G.serializeUrl(location.href),
2006                 o = /from=weibo/.test(location.href) ? location.search.replace(/\?/, "") : "";
2007             /from=weibo/.test(location.href) && (s = n.param.type, this.setThickBox(s, o)), $(t + "," + e + "," + i).livequery("click", function() {
2008                 var t, e = $(this).attr("id");
2009                 return t = "notify-btn" == e || "notify-stock" == e ? 2 : 1, G.checkLogin(function(e) {
2010                     e.IsAuthenticated ? (a._userPin = e.Name, a.setThickBox(t, o)) : (jdModelCallCenter.settings.fn = function() {
2011                         G.checkLogin(function(e) {
2012                             e.IsAuthenticated && (a._userPin = e.Name, a.setThickBox(t, o))
2013                         })
2014                     }, jdModelCallCenter.login())
2015                 }), !1
2016             }).attr("href", "#none").removeAttr("target")
2017         },
2018         setThickBox: function(t, e) {
2019             var i, s, a, n = {
2020                     skuId: pageConfig.product.skuid,
2021                     pin: this._userPin,
2022                     webSite: 1,
2023                     origin: 1,
2024                     source: 1
2025                 },
2026                 o = G.serializeUrl(location.href);
2027             /blogPin/.test(location.href) && (n.blogPin = o.param.blogPin), 1 == t && (i = "\u964d\u4ef7\u901a\u77e5", s = this._saleNotify, a = 250), 2 == t && (i = "\u5230\u8d27\u901a\u77e5", s = this._stockNotify, a = 210, n.storeAddressId = readCookie("ipLoc-djd")), s += e ? e : $.param(n), $.jdThickBox({
2028                 type: "iframe",
2029                 source: decodeURIComponent(s) + "&nocache=" + +new Date,
2030                 width: 500,
2031                 height: a,
2032                 title: i,
2033                 _box: "notify_box",
2034                 _con: "notify_con",
2035                 _title: "notify_title"
2036             })
2037         }
2038     };
2039 (function() {
2040     var t = $("#choose-color .selected a,#choose-version .selected a"),
2041         e = $("#choose-result .dd"),
2042         i = [];
2043     1 > t.length || $("#product-intro").hasClass("product-intro-noitem") ? $("#choose-result").hide() : (t.each(function() {
2044         1 == !!$(this).attr("title") && i.push("<strong>\u201c" + $(this).attr("title") + "\u201d</strong>")
2045     }), i.length > 0 && (e.prepend("<em>\u5df2\u9009\u62e9</em>" + i.join("\uff0c")), $("#choose-result").show()))
2046 })(),
2047 function() {
2048     var t = "-4835-4836-4833-7073-9393-12276-12278-12279-",
2049         e = G.cat[2];
2050     RegExp("-" + e + "-").test(t) && $("#choose-amount").hide(), (4835 == e || 4836 == e) && (setAmount.urlPerfix = "http://card.jd.com/order/order_place.action?", setAmount.data = null, setAmount.data = {
2051         skuId: G.sku
2052     }), 4833 == e && (setAmount.urlPerfix = "http://chongzhi.jd.com/order/order_place.action?", setAmount.data = null, setAmount.data = {
2053         skuId: G.sku
2054     })
2055 }(), G.onAttr("HYKHSP", function() {
2056         var t = "http://eve.jd.com/redirect.action?wid=" + G.sku + "&btype=0&r=" + Math.random(),
2057             e = $("#InitCartUrl");
2058         e.attr({
2059             href: t,
2060             "data-origin": encodeURIComponent(t)
2061         })
2062     }), G.onAttr("isSelfService_17", function() {
2063         var t = $("#buy-num");
2064         t.attr("disabled", "true"), setAmount = {}
2065     }),
2066     function() {
2067         var t = function() {
2068             var t = "";
2069             try {
2070                 t = window.top.document.referrer
2071             } catch (e) {
2072                 if (window.parent) try {
2073                     t = window.parent.document.referrer
2074                 } catch (i) {
2075                     t = ""
2076                 }
2077             }
2078             return "" === t && (t = document.referrer), t
2079         };
2080         JDS = window.JDS || {}, JDS.strpos = function(t, e, i) {
2081             var s = (t + "").indexOf(e, i || 0);
2082             return -1 === s ? !1 : s
2083         }, JDS.uri = function(t) {
2084             this.components = {}, this.options = {
2085                 strictMode: !1,
2086                 key: ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"],
2087                 q: {
2088                     name: "queryKey",
2089                     parser: /(?:^|&)([^&=]*)=?([^&]*)/g
2090                 },
2091                 parser: {
2092                     strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)[email protected])?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
2093                     loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)[email protected])?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
2094                 }
2095             }, t && (this.components = this.parseUri(t))
2096         }, JDS.uri.prototype = {
2097             parseUri: function(t) {
2098                 for (var e = this.options, i = e.parser[e.strictMode ? "strict" : "loose"].exec(t), s = {}, a = 14; a--;) s[e.key[a]] = i[a] || "";
2099                 return s[e.q.name] = {}, s[e.key[12]].replace(e.q.parser, function(t, i, a) {
2100                     i && (s[e.q.name][i] = a)
2101                 }), s
2102             },
2103             getHost: function() {
2104                 return this.components.hasOwnProperty("host") ? this.components.host : void 0
2105             },
2106             getQueryParam: function(t) {
2107                 return this.components.hasOwnProperty("queryKey") && this.components.queryKey.hasOwnProperty(t) ? this.components.queryKey[t] : void 0
2108             },
2109             isQueryParam: function(t) {
2110                 return this.components.hasOwnProperty("queryKey") && this.components.queryKey.hasOwnProperty(t) ? !0 : !1
2111             }
2112         };
2113         var e = [{
2114                 d: "baidu",
2115                 q: "wd"
2116             }, {
2117                 d: "google",
2118                 q: "q"
2119             }, {
2120                 d: "images.google",
2121                 q: "q"
2122             }, {
2123                 d: "images.search.yahoo.com",
2124                 q: "p"
2125             }, {
2126                 d: "sogou",
2127                 q: "query"
2128             }, {
2129                 d: "soso",
2130                 q: "w"
2131             }, {
2132                 d: "bing",
2133                 q: "q"
2134             }, {
2135                 d: "youdao",
2136                 q: "q"
2137             }, {
2138                 d: "114so",
2139                 q: "kw"
2140             }, {
2141                 d: "zhongsou",
2142                 q: "w"
2143             }, {
2144                 d: "yisou",
2145                 q: "q"
2146             }, {
2147                 d: "lycos",
2148                 q: "query"
2149             }, {
2150                 d: "lycos",
2151                 q: "word"
2152             }, {
2153                 d: "yahoo",
2154                 q: "q"
2155             }, {
2156                 d: "yahoo",
2157                 q: "p"
2158             }, {
2159                 d: "search",
2160                 q: "q"
2161             }, {
2162                 d: "live",
2163                 q: "q"
2164             }, {
2165                 d: "aol",
2166                 q: "query"
2167             }, {
2168                 d: "aol",
2169                 q: "encquery"
2170             }, {
2171                 d: "aol",
2172                 q: "q"
2173             }, {
2174                 d: "ask",
2175                 q: "q"
2176             }, {
2177                 d: "cnn",
2178                 q: "query"
2179             }, {
2180                 d: "teoma",
2181                 q: "q"
2182             }, {
2183                 d: "yandex",
2184                 q: "text"
2185             }],
2186             i = function(t) {
2187                 for (var i = 0, s = e.length; s > i; i++) {
2188                     var a = e[i].d,
2189                         n = e[i].q,
2190                         o = t.getHost(),
2191                         r = t.getQueryParam(n);
2192                     if (!JDS.strpos(o, "360buy") && JDS.strpos(o, a) && t.isQueryParam(n)) return {
2193                         d: a,
2194                         q: n,
2195                         k: r
2196                     }
2197                 }
2198             };
2199         window.jdSref = t(), window.jdSuri = new JDS.uri(window.jdSref), window.searchEngineSource = i(window.jdSuri)
2200     }(), CombineShare.prototype = {
2201         init: function() {
2202             var t = this;
2203             this.$el.bind("click", function() {
2204                 $.login({
2205                     modal: !0,
2206                     complete: function(e) {
2207                         e && e.IsAuthenticated && e.IsAuthenticated && t.getThickBox(1)
2208                     }
2209                 })
2210             })
2211         },
2212         getThickBox: function(t, e) {
2213             function i() {
2214                 var t = a.imgs,
2215                     e = "";
2216                 if (1 > t.length) return !1;
2217                 for (var i = 0; t.length > i; i++) e += ‘<li class="‘ + (0 === i ? "selected" : "") + ‘"><a href="#none"><img src="‘ + t[i].replace(/\/n\d/, "/n4") + ‘"  /><s></s></a></li>‘;
2218                 return e
2219             }
2220
2221             function s() {
2222                 var t = a.shareMap,
2223                     e = "";
2224                 for (var i in t) e += ‘<label title="‘ + t[i].text + ‘" for="share-‘ + t[i].name + ‘"><input value="‘ + i.replace("T", "") + ‘" id="share-‘ + t[i].name + ‘" type="checkbox"><em id="share-ico-‘ + t[i].name + ‘">‘ + t[i].text + "</em></label>";
2225                 return e
2226             }
2227             var a = this,
2228                 n = {};
2229             n.T1 = ‘<div id="cb-share1" class="combine-share">    <div class="mt">        <dl>            <dt class="fl">\u5206\u4eab\u5230\uff1a</dt>            <dd class="lh">{SHARELIST}</dd>        </dl>    </div>    <div class="mc">        <textarea id="share-text" name="" cols="30" rows="10" placeholder="\u8bf4\u70b9\u4ec0\u4e48\u5427...">{TEXT}</textarea>        <div class="share-meta clearfix">            <div class="share-link fl"><a class="s-btn s-btn-gray" href="{LINK}" target="_blank"><b class="s-btn"></b>\u5206\u4eab\u94fe\u63a5</a></div>            <div class="share-count lh ar">\u8fd8\u53ef\u4ee5\u8f93\u5165<em>100</em>\u5b57</div>        </div>        {IMGWRAP}    </div>    <div class="mb">        <div class="share-btn">            <a href="#none" class="s-btn s-btn-ok share-btn-ok">\u5206\u4eab</a>        </div>    </div></div>‘, n.T2 = ‘<div id="cb-share2" class="combine-share share-msg">    <dl>        <dd class="ld"><h5 class="ac"><strong><s class="share-ico"></s>\u6210\u529f\u5206\u4eab\u5230 {EXT}</strong></h5></dd>    </dl>    <div class="share-btn"><a href="#none" class="s-btn s-btn-gray" onclick="jdThickBoxclose();">\u786e\u5b9a</a></div></div>‘, n.T3 = ‘<div id="cb-share3" class="combine-share share-msg share-warning">    <dl>        <dt class="fl share-ico"></dt>        <dd class="ld"><h5>\u5206\u4eab\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u64cd\u4f5c\u3002</h5></dd>    </dl>    <div class="share-btn"><a href="#none" class="s-btn s-btn-gray share-btn-fail">\u786e\u5b9a</a></div></div>‘, n.T4 = ‘<div id="cb-share4" class="combine-share share-msg share-warning">    <dl>        <dt class="fl share-ico"></dt>        <dd class="ld"><h5>\u5b57\u6570\u8d85\u51fa\u9650\u5236\u8bf7\u91cd\u65b0\u8f93\u5165</h5></dd>    </dl>    <div class="share-btn"><a href="#none" class="s-btn s-btn-gray share-btn-fail">\u786e\u5b9a</a></div></div>‘, n.T5 = ‘<div id="cb-share5" class="combine-share share-warning">    <dl>        <dt class="fl share-ico"></dt>        <dd class="ld"><h5>\u8bf7\u5148\u7ed1\u5b9a\u5206\u4eab\u5e73\u53f0\u8d26\u53f7\u518d\u8fdb\u884c\u5206\u4eab</h5></dd>    </dl>    <div class="share-btn"><a href="#none" class="s-btn s-btn-gray share-btn-rebind">\u786e\u5b9a</a></div></div>‘, n.IMG = ‘<p>\u9009\u62e9\u914d\u56fe\uff1a</p><div class="share-imgScroll">    <a id="share-img-prev" class="share-controls s-btn s-btn-gray" href="#none"><s></s></a>    <a id="share-img-next" class="share-controls s-btn s-btn-gray" href="#none"><s></s></a>    <div class="share-img-wrap">        <ul class="lh">{IMGS}</ul>    </div></div>‘, this.onbeforeOpen && this.onbeforeOpen(this);
2230             var o = i(),
2231                 r = s(),
2232                 c = "";
2233             c = o ? n["T" + t].replace("{IMGWRAP}", n.IMG).replace("{IMGS}", i()) : n["T" + t].replace("{IMGWRAP}", ""), c = c.replace("{LINK}", this.shareParam.url), c = c.replace("{SHARELIST}", r), this.textNumOverflow && (this.shareParam.content = this.cacheText), this.jp && (this.shareParam.content = this.shareParam.content.replace("{PRICE}", this.jp)), c = c.replace("{TEXT}", this.shareParam.content), e !== void 0 && (c = c.replace("{EXT}", e)), jdThickBoxclose && jdThickBoxclose(), 1 === t && $.jdThickBox({
2234                 title: "\u5206\u4eab\u7ed9\u597d\u53cb",
2235                 width: 520,
2236                 height: o ? 340 : 200,
2237                 source: c
2238             }, function() {
2239                 a.getBindStatus()
2240             }), 2 === t && $.jdThickBox({
2241                 title: "\u5206\u4eab\u7ed9\u597d\u53cb",
2242                 width: 520,
2243                 height: 100,
2244                 source: c
2245             }), 3 === t && $.jdThickBox({
2246                 title: "\u5206\u4eab\u7ed9\u597d\u53cb",
2247                 width: 400,
2248                 height: 100,
2249                 source: c
2250             }), 4 === t && $.jdThickBox({
2251                 title: "\u63d0\u793a",
2252                 width: 400,
2253                 height: 100,
2254                 source: c
2255             }), 5 === t && $.jdThickBox({
2256                 title: "\u8d26\u53f7\u7ed1\u5b9a",
2257                 width: 400,
2258                 height: 100,
2259                 source: c
2260             }), this.wrap = $("#cb-share" + t), 1 === t && this.updateCount(), this.bindEvent()
2261         },
2262         bindEvent: function() {
2263             var t = this,
2264                 e = this.wrap,
2265                 i = e.find(".share-btn-ok"),
2266                 s = e.find(".share-btn-fail,.share-btn-rebind"),
2267                 a = e.find(".share-img-wrap"),
2268                 n = $("#share-img-prev"),
2269                 o = $("#share-img-next"),
2270                 r = a.find("li");
2271             r.bind("click", function() {
2272                 r.removeClass("selected"), $(this).addClass("selected")
2273             }), e.find(".mt input").unbind("click").bind("click", function() {
2274                 var e = $(this).val();
2275                 $(this).next().hasClass("actived") || ($(this).next().addClass("actived"), window.open(t.shareMap["T" + e].url))
2276             }), e.find(".mc textarea").bind("keyup change", function() {
2277                 t.updateCount($(this)), t.cacheText = $(this).val()
2278             }), i.bind("click", function() {
2279                 t.wrap.find("textarea");
2280                 var e = t.wrap.find(".share-count").hasClass("overflow");
2281                 e ? (t.getThickBox(4), t.textNumOverflow = !0) : (t.goShare(), t.textNumOverflow = !1)
2282             }), s.unbind("click").bind("click", function() {
2283                 t.getThickBox(1)
2284             }), a.imgScroll({
2285                 visible: 4,
2286                 step: 4,
2287                 prev: n,
2288                 next: o,
2289                 showControl: !0
2290             })
2291         },
2292         updateCount: function(t) {
2293             t = t || this.wrap.find("textarea");
2294             var e = t.val(),
2295                 i = e.replace(/[\u4e00-\u9fa5]/g, "jd").length,
2296                 s = this.wrap.find(".share-count"),
2297                 a = s.find("em"),
2298                 n = 100;
2299             0 > n - Math.ceil(i / 2) ? a.html("0") : a.html(n - Math.ceil(i / 2) + ""), Math.ceil(i / 2) > n ? s.addClass("overflow") : s.removeClass("overflow")
2300         },
2301         getBindStatus: function() {
2302             var t = this;
2303             $.ajax({
2304                 url: "http://share.jd.com/share/getBindStatus.action",
2305                 dataType: "jsonp",
2306                 success: function(e) {
2307                     e && e.length && t.setBindStatus(e)
2308                 }
2309             })
2310         },
2311         setBindStatus: function(t) {
2312             for (var e, i, s, a = 0; t.length > a; a++) e = t[a].name, i = t[a].status, s = t[a].type, 1 === i && (this.wrap.find("#share-ico-" + e).addClass("actived"), this.wrap.find("#share-" + e).attr("checked", !0))
2313         },
2314         goShare: function() {
2315             var t = this,
2316                 e = this.wrap.find("dd input:checked"),
2317                 i = this.wrap.find(".share-img-wrap .selected img").attr("src"),
2318                 s = this.wrap.find("#share-text").val(),
2319                 a = [],
2320                 n = this.shareParam;
2321             n.content = s, n.imgUrl = i, e.each(function() {
2322                 var t = $(this).val();
2323                 t && a.push(t)
2324             }), a.length && (n.type = a.join(","), $.ajax({
2325                 url: "http://share.jd.com/share/shareItem.action",
2326                 dataType: "jsonp",
2327                 data: n,
2328                 success: function(e) {
2329                     var i = [],
2330                         s = [];
2331                     if (e && e.code !== void 0 && (-1 === e.code && t.getThickBox(3), 0 === e.code)) {
2332                         i = e.status.split(",");
2333                         for (var a = 0; i.length > a; a++) s.push(t.shareMap["T" + i[a]].text);
2334                         t.getThickBox(2, s.join(","))
2335                     }
2336                 }
2337             }))
2338         }
2339     }, G.onAttr("isOnlyIOUsPay", function() {
2340         function t() {
2341             /debug/.test(location.href) && prompt("\u9875\u9762\u5c06\u8df3\u8f6c\u5230\uff1a", i.replace(/nums=\d+/, "nums=" + $("#buy-num").val()) + "&r=" + Math.random()), location.href = i.replace(/nums=\d+/, "nums=" + $("#buy-num").val()) + "&r=" + Math.random()
2342         }
2343         var e, i = "http://cart.jd.com/cart/dynamic/gateForSubFlow.action?wids=" + G.sku + "&nums=1&subType=25",
2344             s = $("#choose-btns"),
2345             a = s.find("#choose-btn-easybuy,#choose-btn-divide"),
2346             n = s.find("#choose-btn-append"),
2347             o = $("#nav-minicart"),
2348             r = ‘        <div id="choose-btn-baitiao" class="btn">            <a href="#none" class="btn-baitiao" clstag="shangpin|keycount|product|btn-dbt">\u6253\u767d\u6761<b></b></a>        </div>        <div id="choose-btn-baitiao-n" class="btn">            <a href="#none" class="btn-baitiao-n" onclick="showNaBaitiao(\‘#Fqfk_Tip\‘)" clstag="shangpin|keycount|product|btn-dbt">\u62ff\u767d\u6761<b></b></a>        </div>‘;
2349         s.prepend(r), e = s.find("#choose-btn-baitiao"), a.remove(), n.hide(), o.addClass("nav-minicart-baitiao"), pageConfig.serviceYB = "disabled", pageConfig.btnBaiTiaoFq = "disabled", o.find("a").attr("href", "#none").addClass("btn-baitiao"), jdModelCallCenter.settings.fn = t, $(".btn-baitiao").click(function() {
2350             $(this).attr("href", "#none"), pageConfig.product.havestock && $.login({
2351                 modal: !0,
2352                 complete: function(e) {
2353                     e && e.IsAuthenticated && e.IsAuthenticated && t()
2354                 }
2355             })
2356         })
2357     }), G.onAttr("is7ToReturn-0", function() {
2358         var t = $("#summary-tips .dd"),
2359             e = $("#is7ToReturn-0");
2360         e.length || (t.append(‘<div id="is7ToReturn-0" class="hl_red">\u8be5\u5546\u54c1\u4e0d\u652f\u63017\u5929\u65e0\u7406\u7531\u9000\u8d27</div>‘), t.parent().show())
2361     }), G.onAttr("isOverseaPurchase-2", function() {
2362         var t = $("#brand-bar-pop");
2363         t.prepend(‘<div id="oversea-purchase" class="m"><em><img src="http://misc.360buyimg.com/product/skin/2012/i/oversea-purchase.png" alt="\u6d77\u5916\u76f4\u8d2d-\u8ba4\u8bc1\u5546\u5bb6" /></em></div>‘)
2364     }),
2365     function() {
2366         function t() {
2367             var t = $("#choose-btn-easybuy,#choose-btn-baitiao-fq,#nav-minicart");
2368             pageConfig.product.specialAttrs.join("^"), $("#choose-btn-append").addClass("disabled"), t.remove(), pageConfig.product.isWeChatStock = !0
2369         }
2370         pageConfig.product.isClosePCShow && t()
2371     }(),
2372     function() {
2373         var t = $("#choose-btn-easybuy"),
2374             e = ‘        <div id="choose-btn-baitiao-fq" clstag="shangpin|keycount|product|baitiao" class="btn">            <a href="#none" class="btn-baitiao-fq" style="width:100px" onclick="showBaitiaoFq(\‘#Fqfk_Tip\‘)" clstag="shangpin|keycount|product|btn-dbt">\u767d\u6761/\u5206\u671f<b style="background:url(http://img10.360buyimg.com/da/jfs/t187/274/284523263/8856/bceb4ca8/5385bac9Nbc69d7f7.png) no-repeat"></b></a>        </div>‘;
2375         G.isJd && "enabled" == pageConfig.btnBaiTiaoFq && t.after(e)
2376     }(), $(function() {
2377         var addToCartBtnWrap = $("#choose-btn-append"),
2378             addToCartBtn = $("#InitCartUrl"),
2379             recoTab = $("#recommend .tab"),
2380             disabled = "",
2381             orginGiftLink = "";
2382         pageConfig.product.havestock === void 0 ? (disabled = "", orginGiftLink = "http://cart.gift.jd.com/cart/addGiftToCart.action?pid=" + pageConfig.product.skuid + "&pcount=" + $("#buy-num").val() + "&ptype=1") : (disabled = pageConfig.product.havestock ? "" : "disabled", pageConfig.product.havestock ? (disabled = "", orginGiftLink = "http://cart.gift.jd.com/cart/addGiftToCart.action?pid=" + pageConfig.product.skuid + "&pcount=" + $("#buy-num").val() + "&ptype=1") : (disabled = "disabled", orginGiftLink = "#none")), 6980 == G.cat[2] && $(‘#product-detail [data-widget="tab-item"]‘).eq(3).hide(), $("#online-service").find("b").html("\u8054\u7cfb\u5ba2\u670d"), $("#comments-list li").eq(4).html(‘<a href="javascript:;">\u6709\u6652\u5355\u7684\u8bc4\u4ef7<em>(0)</em></a>‘), $("body").addClass("cat-1-" + G.cat[0] + " cat-2-" + G.cat[1] + " cat-3-" + G.cat[2] + " item-" + G.sku),
2383             function() {
2384                 var t = $("#product-detail .mt").eq(0).find("li");
2385                 t.eq(0).attr("id", "p-con-detail"), t.eq(1).attr("id", "p-con-attr"), t.eq(2).attr("id", "p-con-list"), t.eq(3).attr("id", "p-con-comm"), t.eq(4).attr("id", "p-con-guar"), t.eq(5).attr("id", "p-con-wiki")
2386             }(), recoTab.find("li").eq(0).attr("id", "th-fitting"), recoTab.find("li").eq(1).attr("id", "th-hot"), recoTab.find("li").eq(2).attr("id", "th-service").hide(), $("#th-fitting a").eq(0).text("\u63a8\u8350\u914d\u4ef6"), $("#summary-grade .dd a").attr("clstag", "shangpin|keycount|product|pingjiabtn"), $("#store-selector").attr("clstag", "shangpin|keycount|product|quyuxuanze"), $("#choose-btn-coll a").attr("clstag", "shangpin|keycount|product|btn-guanzhu"), $("#choose-btn-easybuy").attr("clstag", "shangpin|keycount|product|btn-easybuy"), 1 > $("#th-suits").length && ($("#th-fitting").after(‘<li data-widget="tab-item" class="none" id="th-suits"><a href="javascript:;">\u4f18\u60e0\u5957\u88c5</a></li>‘), $("#tab-reco").after(‘<div id="tab-suits" class="mc none" data-widget="tab-content"> <div class="iloading">\u6b63\u5728\u52a0\u8f7d\u4e2d\uff0c\u8bf7\u7a0d\u5019...</div> </div>‘)), 1 > $("#th-dpg").length && ($("#th-service").before(‘<li data-widget="tab-item" class="none" id="th-dpg"><a href="javascript:;">\u76f8\u5173\u4e3b\u9898\u642d\u914d</a></li>‘), $("#tab-services").before(‘<div id="tab-dpg" class="mc none" data-widget="tab-content"> <div class="iloading">\u6b63\u5728\u52a0\u8f7d\u4e2d\uff0c\u8bf7\u7a0d\u5019...</div> </div>‘)), $("#j-im").addClass("djd-im").attr("href", "#none"), $("#btnReferSearch").attr("clstag", "shangpin|keycount|product|consult9"), $("#consult .tab li").each(function(t) {
2387                 $(this).attr("clstag", "shangpin|keycount|product|consult0" + (t + 1))
2388             }), G.isJd && $("body").addClass("JD"), G.isPop && $("body").addClass("POP"), "" != $.trim($("#product-detail-6").html()) && ($("#p-con-wiki").show(), $("#practical-guide").Jtab({
2389                 event: "click",
2390                 hookKey: "data-subtab",
2391                 hookItemVal: "subtab-item",
2392                 hookContentVal: "subtab-content",
2393                 compatible: !0
2394             })), /gift=true/.test(location.href) && ($("#choose-btns").prepend(‘<div id="choose-btn-gift" class="btn ‘ + disabled + ‘"><a href="‘ + orginGiftLink + ‘" class="btn-gift"><b></b>\u9009\u4f5c\u793c\u7269\u8d2d\u4e70</a></div>‘), setAmount.targetLink = $("#choose-btn-append .btn-append,#choose-btn-gift .btn-gift")), (938747 == G.sku || 938749 == G.sku) && (addToCartBtnWrap.addClass("disabled"), addToCartBtn.attr("href", "#none")), $("#view-bigimg").after(‘<div id="compare" clstag="shangpin|keycount|product|jiaruduibi"><a class="btn-compare btn-compare-s" href="#none" id="comp_{sku}" skuid="{sku}"><span>\u5bf9\u6bd4</span></a></div>‘.replace(/{sku}/g, G.sku)), $("#view-bigimg").attr("clstag", "shangpin|keycount|product|chakandatu"), pageConfig.FN_InitContrast(), G.getCommentNum(G.orginSku, function(t) {
2395                 var e = $("#summary-grade .star"),
2396                     i = $("#summary-grade .dd>a").eq(0),
2397                     s = $("#p-con-comm");
2398                 if (t && t.CommentCount !== void 0) {
2399                     if (e.removeClass("sa0").addClass("sa" + t.AverageScore), 6980 === G.cat[2]) return !1;
2400                     i.html("(\u5df2\u6709" + t.CommentCount + "\u4eba\u8bc4\u4ef7)").css("float", "left"), t.CommentCount > 0 && s.find("a").append(‘<span class="hl_blue"> (‘ + t.CommentCount + ") </span>")
2401                 } else e.removeClass("sa0").addClass("sa5"), i.html("(\u5df2\u67090\u4eba\u8bc4\u4ef7)").css("float", "left")
2402             }),
2403             function() {
2404                 if ("disabled" == pageConfig.serviceYB) return !1;
2405                 $("#choose-result").length > 0 ? $("#choose-result").before(‘<li id="choose-service" class="hide"><div class="dt">\u4eac\u4e1c\u670d\u52a1\uff1a</div><div class="dd"></div></li>‘) : $("#choose-btns").length > 0 && $("#choose-btns").before(‘<li id="choose-service" class="hide"><div class="dt">\u4eac\u4e1c\u670d\u52a1\uff1a</div><div class="dd"></div></li>‘);
2406                 var t = $("#choose-btn-append a"),
2407                     e = t.attr("href"),
2408                     i = $("#choose-result .dd"),
2409                     s = $("#choose-result .dd").html(),
2410                     a = !1;
2411                 JdService.init(G.sku, $("#choose-service .dd"), function(n) {
2412                     var o = "&ybId=" + n.join(","),
2413                         r = $("#buy-num").val(),
2414                         c = [],
2415                         d = $("#choose-btn-qiang a");
2416                     if (n.length > 0) {
2417                         t.attr("href", e.replace(/pcount=\d+/, "pcount=" + r) + o), i.parent().show();
2418                         for (var l = 0; n.length > l; l++) c.push("<strong>\u201c" + $("#yb-pid-" + n[l]).text() + "\u201d</strong>");
2419                         i.html((s ? s + "\uff0c" : "") + c.join("\uff0c"))
2420                     } else t.attr("href", e.replace(/pcount=\d+/, "pcount=" + r)), i.html(s);
2421                     d.length && !a && (a = d.attr("href")), d.length && (n.length > 0 ? d.attr("href", a + o) : d.attr("href", a))
2422                 })
2423             }(), $(".jqzoom").jqueryzoom({
2424                 xzoom: 400,
2425                 yzoom: 400,
2426                 offset: 10,
2427                 position: "left",
2428                 preload: 1,
2429                 lens: 1
2430             }), $("#summary-grade .dd").click(function() {
2431                 var t = $("#comment");
2432                 "true" !== $("#comment").attr("nodata") ? t.show() : $(document).scrollTop($("#comments-list").offset().top + $("#comments-list .mt").height())
2433             }),
2434             function() {
2435                 var t = $("#spec-list li");
2436                 t.mouseover(function() {
2437                     var e = $(this).find("img"),
2438                         i = e.attr("src");
2439                     t.index($(this)), $("#spec-list img").removeClass("img-hover"), e.addClass("img-hover"), $("#spec-n1 img").eq(0).attr({
2440                         src: i.replace("/n5/", "/n1/"),
2441                         jqimg: i.replace("/n5/", "/n0/")
2442                     })
2443                 })
2444             }(), G.isPop && $.getJSONP("http://st.3.cn/gvi.html?callback=setPopInfo&type=popdeliver&skuid=" + G.sku), CommentListNew.init(G.sku), Recommend.init(pageConfig.product.type), NotifyPop.init("#summary-price .dd a", "#notify-stock", ".btn-notice"), $(".spec-items").imgScroll({
2445                 visible: 5,
2446                 speed: 200,
2447                 step: 1,
2448                 loop: !1,
2449                 prev: "#spec-forward",
2450                 next: "#spec-backward",
2451                 disableClass: "disabled"
2452             }), $("#recommend").Jtab({
2453                 event: "click",
2454                 compatible: !0
2455             }), $("#product-detail").Jtab({
2456                 event: "click",
2457                 compatible: !0
2458             }, function(t, e, i) {
2459                 if ($("#product-detail .mt").removeClass("nav-fixed"), $("#product-detail .mt").removeClass("nav-fixed").floatNav({
2460                     fixedClass: "nav-fixed",
2461                     targetEle: "#consult",
2462                     anchor: "#product-detail",
2463                     range: 30,
2464                     onStart: function() {
2465                         $("#nav-minicart").show()
2466                     },
2467                     onEnd: function() {
2468                         restoreDetailListTab()
2469                     }
2470                 }), 3 == i) {
2471                     if (e.css("height", 5).html("<div>a</div>"), $("#promises,#state").hide(), Consult.getData(0, $("#consult-0")), !CommentListNew.loadFirstPage) {
2472                         var s = pageConfig.product.isFlashPurchase ? 2 : isAreaProduct ? 1 : 3;
2473                         CommentListNew.getData($("#comment-0"), 0, 0, s)
2474                     }
2475                     $("#product-detail .mt").floatNav({
2476                         fixedClass: "nav-fixed",
2477                         targetEle: "#consult",
2478                         anchor: "#product-detail",
2479                         range: 0,
2480                         onStart: function() {
2481                             $("#nav-minicart").show()
2482                         },
2483                         onEnd: function() {
2484                             restoreDetailListTab()
2485                         }
2486                     })
2487                 } else $("#promises,#state").show();
2488                 0 === i ? setDetailListTab() : destroyDetailListTab()
2489             }), $("#comments-list").Jtab({
2490                 event: "click",
2491                 compatible: !0
2492             }, function(t, e, i) {
2493                 var s = 0;
2494                 s = 1 === i ? 3 : 3 === i ? 1 : i;
2495                 var a = pageConfig.product.isFlashPurchase ? 2 : isAreaProduct ? 1 : 0;
2496                 CommentListNew.getData(e, s, 0, a)
2497             }), $("#discuss").Jtab({
2498                 event: "click",
2499                 compatible: !0
2500             }, function(t, e, i) {
2501                 Discuss.getData(i, e)
2502             }), $("#consult").Jtab({
2503                 event: "click",
2504                 compatible: !0
2505             }, function(t, e, i) {
2506                 4 >= i ? Consult.getData(i, e) : Consult.setExtraData(i, e)
2507             }), $("#ranklist .mc").Jtab({
2508                 compatible: !0
2509             }, function(t, e) {
2510                 var i = e.find("img");
2511                 i.each(function() {
2512                     var t = $(this).attr("data-src");
2513                     t && $(this).attr("src", t).removeAttr("data-src")
2514                 })
2515             });
2516         var destroyDetailListTab = function() {},
2517             setDetailListTab = function() {},
2518             restoreDetailListTab = function() {},
2519             openDetailListTab = function() {},
2520             closeDetailListTab = function() {};
2521         if ($(‘#product-detail [data-widget="tab-item"]‘).find("a").addClass("toggle-link"), function() {
2522             function t(t) {
2523                 var e = $(window).height(),
2524                     i = $("body").scrollTop() || $("html").scrollTop(),
2525                     s = t.offset().top;
2526                 return e + i > s && s > i
2527             }
2528             var e, i, s = $(".detail-content"),
2529                 a = s.find(‘[name^="detail-tag-id-"]‘),
2530                 n = [],
2531                 o = $(‘#product-detail [data-widget="tab-item"]‘),
2532                 r = o.eq(0);
2533             return 1 > a.length ? !1 : (o.find("a").addClass("toggle-link"), setDetailListTab = function() {
2534                 return 1 > a.length ? !1 : (r.addClass("p-tab"), 1 > r.find("a>s").length && r.find("a").append("<s></s>"), r.mouseover(function() {
2535                     $(this).addClass("hover")
2536                 }), 1 > r.find(".sub-item").length && (a.each(function() {
2537                     var t = $(this).attr("id"),
2538                         e = $(this).attr("text");
2539                     n.push(‘<li data-id="‘ + t + ‘"><a data-id="#‘ + t + ‘" href="#‘ + t + ‘">‘ + e + "</a></li>")
2540                 }), r.append(‘<ul class="hide sub-item">‘ + n.join("") + "</ul>"), e = r.children(), i = r.find("li"), r.find(".sub-item a").unbind("click").bind("click", function(t) {
2541                     $(this).text();
2542                     var e = $(this).attr("data-id");
2543                     $("body,html").scrollTop($(e).offset().top - 35), i.remove("hl_red"), $(this).parent().addClass("hl_red"), t.preventDefault(), t.stopPropagation()
2544                 })), void 0)
2545             }, destroyDetailListTab = function() {
2546                 r.unbind("mouseover mouseenter mouseout").removeClass("hover"), r.children("a").html("\u5546\u54c1\u4ecb\u7ecd<s></s>"), pageConfig.detailListInited = !1
2547             }, restoreDetailListTab = function() {
2548                 r.find(".toggle-link").eq(0).html("\u5546\u54c1\u4ecb\u7ecd<s></s>")
2549             }, openDetailListTab = function() {
2550                 r.addClass("hover")
2551             }, closeDetailListTab = function() {
2552                 r.removeClass("hover")
2553             }, setDetailListTab(), $("body").scroller({
2554                 onScroll: function(e) {
2555                     e.$o;
2556                     var s = [];
2557                     if (a.each(function() {
2558                         var e = $(this);
2559                         t(e) && s.push(e)
2560                     }), s.length > 0) {
2561                         var n = s[0].attr("id").replace("detail-tag-id-", "");
2562                         i.removeClass("hl_red"), i.filter(‘[data-id="detail-tag-id-‘ + n + ‘"]‘).addClass("hl_red")
2563                     } else i.removeClass("hl_red")
2564                 }
2565             }), $("#product-detail").scroller({
2566                 startThrehold: 110,
2567                 onStart: function() {
2568                     openDetailListTab()
2569                 },
2570                 onEnd: function() {
2571                     closeDetailListTab()
2572                 }
2573             }), void 0)
2574         }(), mlazyload({
2575             defObj: "#consult",
2576             defHeight: 0,
2577             fn: function() {
2578                 Consult.getData(0, $("#consult-0"))
2579             }
2580         }), mlazyload({
2581             defObj: "#comments-list",
2582             defHeight: 0,
2583             fn: function() {
2584                 if (!CommentListNew.loadFirstPage) {
2585                     var t = pageConfig.product.isFlashPurchase ? 2 : isAreaProduct ? 1 : 0;
2586                     CommentListNew.getData($("#comment-0"), 0, 0, t)
2587                 }
2588             }
2589         }), mlazyload({
2590             defObj: "#discuss",
2591             defHeight: 0,
2592             fn: function() {
2593                 Discuss.getData(0, $("#discuss-1"))
2594             }
2595         }), mlazyload({
2596             defObj: "#comments",
2597             defHeight: 0,
2598             fn: function() {
2599                 if (!CommentListNew.loadFirstPage) {
2600                     var t = pageConfig.product.isFlashPurchase ? 2 : isAreaProduct ? 1 : 0;
2601                     CommentListNew.getData($("#comment-0"), 0, 0, t)
2602                 }
2603             }
2604         }), mlazyload({
2605             defObj: "#product-track",
2606             defHeight: 100,
2607             fn: function() {
2608                 $.ajax({
2609                     url: "http://misc.360buyimg.com/product/js/2012/footprint.js?ver=20140724",
2610                     dataType: "script",
2611                     cache: !0
2612                 })
2613             }
2614         }), mlazyload({
2615             defObj: "#product-detail",
2616             defHeight: 0,
2617             fn: function() {
2618                 Repository.init(G.sku)
2619             }
2620         }), mlazyload({
2621             defObj: "#ranklist",
2622             defHeight: 0,
2623             fn: function() {
2624                 var t = [],
2625                     e = $("#ranklist");
2626                 e.find(".p-price strong").each(function() {
2627                     var e = $(this),
2628                         i = e.attr("class");
2629                     i && t.push(i.replace("J-p-", ""))
2630                 }), G.getPriceNum(t, null, e)
2631             }
2632         }), $("#product-detail .mt").floatNav({
2633             fixedClass: "nav-fixed",
2634             targetEle: "#consult",
2635             anchor: "#product-detail",
2636             range: 30,
2637             onStart: function() {
2638                 var t = $(".nav-minicart-buynow");
2639                 t.length > 0 && t.find("a").html("\u7acb\u5373\u8d2d\u4e70"), $("#nav-minicart").show()
2640             },
2641             onEnd: function() {
2642                 restoreDetailListTab()
2643             }
2644         }), $("#nav-minicart").Jdropdown(function(t) {
2645             var e = pageConfig.product.priceImg || "http://jprice.360buyimg.com/price/gp" + G.sku + "-1-1-1.png";
2646             t.find(".nav-minicart-btn a").attr("href", $("#choose-btn-append .btn-append").attr("href")), t.find(".p-img img").attr("src", pageConfig.FN_GetImageDomain(G.sku) + "n4/" + pageConfig.product.src), t.find(".p-name").html(G.name), t.find(".p-price img").attr("src", e)
2647         }), $("#store-selector").Jdropdown(), $(".share-ft").click(function() {
2648             $(this).toggleClass("share-ft-open"), $(this).parents("#share-list").toggleClass("share-list-open"), $(".share-list-item").toggleClass("share-list-item-all")
2649         }), $("#comments-list .tab").append(‘<li class="tab-last"></li>‘), renew(), /from=email/.test(location.href) && $.ajax({
2650             url: "http://misc.360buyimg.com/product/js/2012/notify.js",
2651             dataType: "script",
2652             cache: !0,
2653             success: function() {
2654                 Notify && Notify.init("#summary-price .dd a", "#notify-stock")
2655             }
2656         }), $(".btn-pleased,.btn-unpleased").livequery("click", function() {
2657             var t = $(this);
2658             $.login({
2659                 complete: function(e) {
2660                     if (null != e.IsAuthenticated && e.IsAuthenticated) {
2661                         var i = parseInt($.query.get("id"));
2662                         if (isNaN(i) || 0 == i) {
2663                             var e = location.href.match(/(\d+)(.html)/);
2664                             null != e && (i = parseInt(e[1]))
2665                         }
2666                         var s = $(t).parent().attr("id"),
2667                             a = parseInt($(t).attr("name"));
2668                         i > 0 && $.getJSON(consultationServiceUrl, {
2669                             method: "VoteForConsultation",
2670                             productId: i,
2671                             consultationId: s,
2672                             score: a
2673                         }, function(e) {
2674                             e.Result ? ($(t).text("\u5df2\u6295\u7968"), $(t).next("span").text(parseInt($(t).next("span").text()) + 1)) : $(t).text("\u5df2\u6295\u7968")
2675                         })
2676                     }
2677                 }
2678             }), mark(location.href.match(/(\d+).html/)[1], 5)
2679         }), $("#site-qq,#site-msn,#site-email").parent().remove(), window.pageConfig) {
2680             var sidePanle = new pageConfig.FN_InitSidebar,
2681                 surveyId = "98523";
2682             832 === G.cat[2] && (surveyId = "737542"), sidePanle.addItem(‘<a class="research" target="_blank" href="http://surveys.jd.com/index.php?r=survey/index/sid/‘ + surveyId + ‘/lang/zh-Hans"><b></b>\u8c03\u67e5\u95ee\u5377</a>‘), sidePanle.setTop(), sidePanle.scroll()
2683         }
2684         if (setImButton(G.sku), 1319 === G.cat[0] && $.ajax({
2685             url: "http://misc.360buyimg.com/product/js/2012/item.baby.js?ver=20140123",
2686             cache: !0,
2687             dataType: "script",
2688             scriptCharset: "gb2312"
2689         }), jdSref && searchEngineSource) {
2690             var charset = "&encode=utf-8";
2691             if ("baidu" == searchEngineSource.d) {
2692                 var refer = document.referrer;
2693                 charset = /ie=utf-8/.test(refer) ? "&encode=utf-8" : "&encode=gbk"
2694             } else charset = RegExp(searchEngineSource.d).test("soso#sogou") ? "&encode=gbk" : "&encode=utf-8";
2695             pageConfig.disabledSeoBanner = !0, seoBanner(searchEngineSource, charset)
2696         }(function() {
2697             var t = ["2_163_817", "2_163_818", "2_232_3431", "2_163_3743"];
2698             pageConfig.disabledSeoBanner || (t.push("2_163_5395"), t.push("2_163_5394")), 1315 === G.cat[0] && $("#Ad2_100_2272").length > 0 && t.push("2_100_2272"), G.isPop && t.push("2_601_3951"), $.ajax({
2699                 url: "http://fa.jd.com/loadFa_toJson.js?aid=" + t.join("-") + "&ver=20131107",
2700                 dataType: "script",
2701                 cache: !0
2702             }), insertScript("http://static.360buyimg.com/gemini/gemini/gemini_v2.2.1.js", {
2703                 id: "1399174259281",
2704                 name: "gemini_divide_script",
2705                 charset: "utf-8",
2706                 divideType: "MODULE_INJECT",
2707                 param: "[{t:‘xiaoyumi‘}]"
2708             })
2709         })(), mark(G.sku, 1), clsPVAndShowLog("", "", 3, "p"), clsPVAndShowLog("", "", 2, "p"), $("#choose-btn-append .btn-append b").livequery("click", function() {
2710             JA && JA.tracker.ngloader("item.010002", {
2711                 sku: G.sku,
2712                 jp: pageConfig.product.jp
2713             })
2714         }), $("#choose-btn-coll b").click(function() {
2715             JA && JA.tracker.ngloader("item.010003", {
2716                 sku: G.sku
2717             })
2718         });
2719         var adultCat = 1468 === G.cat[1] || 1587 === G.cat[1] || 1586 === G.cat[1] || 1588 === G.cat[1] || 7058 === G.cat[2] || 1550 === G.cat[2] || 6320 === G.cat[2] || 500 === G.cat[2] || 5e3 === G.cat[2] || 1345 === G.cat[1] || 1385 === G.cat[1] || 1467 === G.cat[1];
2720         adultCat || setTimeout(function() {
2721                 var t = document.createElement("img"),
2722                     e = "http://c.x.jd.com/set/lsku?",
2723                     i = {
2724                         skuid: G.sku,
2725                         sortId: G.cat[2],
2726                         p: $("#jd-price").text().replace("\uffe5", ""),
2727                         name: G.name
2728                     };
2729                 t.src = e + $.param(i) + "&img=" + G.src, t = null
2730             }, 1e3),
2731             function() {
2732                 var slideWrap = $(".w .left").eq(0),
2733                     slideItemTPL = ‘<div id="last-item-1" class="m">    <a  href="${link}" onclick="${onclick}" target="_blank"><img data-img="2" data-lazyload="${pageConfig.FN_GetImageDomain(skuid)}n7/${imageurl}" width="211" alt="${name}"></a></div>‘;
2734                 $.ajax({
2735                     url: "http://autorank.jd.com/v2.php?ad_type=6&ad_ids=9&sku_id=" + G.sku,
2736                     dataType: "jsonp",
2737                     success: function(r) {
2738                         if (!G.isNothing(r) && r && r.pos.Pos_9.length) {
2739                             var res = G.getRandomArray(r.pos.Pos_9);
2740                             1 > $("#last-item-1").length && slideWrap.append(slideItemTPL.process(res[0])), r.onload && eval(r.onload), $("#last-item-1 img").Jlazyload({
2741                                 type: "image"
2742                             })
2743                         }
2744                     }
2745                 })
2746             }(),
2747             function() {
2748                 var t = pageConfig.product.videoPath,
2749                     e = $(".detail-content"),
2750                     i = $("#letv");
2751                 if (t && 1 > i.length) {
2752                     var s = "http://yuntv.letv.com/bcloud.html?uu=abcde12345&vu=" + t + "&pu=12345abcde&auto_play=0&width=750&height=422";
2753                     e.before(‘<div id="letv"><iframe id="le-video" data-lazyload="‘ + s + ‘" frameborder="0" scrolling="no" style="display:block; width:750px; height:422px; margin:0 auto;"></iframe></div>‘), $("#letv iframe").Jlazyload({
2754                         type: "image"
2755                     })
2756                 }
2757             }(),
2758             function() {
2759                 var t = $("#itemover-related-list"),
2760                     e = pageConfig.compatible && pageConfig.wideVersion ? 12 : 9;
2761                 if ("undefined" != typeof warestatus && 0 === warestatus) {
2762                     t.show(), t.find("p").html("\u7c7b\u4f3c\u5546\u54c1");
2763                     var i = ‘<div class="w">    <div id="out-of-stock" class="m m2 hide">        <div class="mt">            <h2>\u642d\u914d\u63a8\u8350</h2>        </div>        <div class="mc">            <div id="noitem-related-list">                <div class="noitem-related-list">                    <a href="javascript:;" class="spec-control disabled" id="noitem-forward"></a>                    <a href="javascript:;" class="spec-control" id="noitem-backward"></a>                    <div id="noitem-list">                            <div class="iloading">\u6b63\u5728\u52a0\u8f7d\u4e2d\uff0c\u8bf7\u7a0d\u5019...</div>                    </div>                </div>            </div>        </div>    </div></div>‘;
2764                     $("#product-intro").parent().after(i), new Grecommend(G.sku, 902011, readCookie("ipLoc-djd"), t, e), new Grecommend(G.sku, 902018, readCookie("ipLoc-djd"), $("#out-of-stock #noitem-list"), 20)
2765                 }
2766             }(),
2767             function() {
2768                 var t = $("#preview .spec-items li img"),
2769                     e = [],
2770                     i = $("#share-list li");
2771                 t.each(function() {
2772                     var t = $(this).attr("src");
2773                     e.push(t)
2774                 });
2775                 var s = "\u6211\[email protected]\u4eac\u4e1c \u53d1\u73b0\u4e86\u4e00\u4e2a\u975e\u5e38\u4e0d\u9519\u7684\u5546\u54c1\uff1a" + G.name + "\uff0c\u4eac\u4e1c\u4ef7\uff1a\uffe5 {PRICE}\u3002 \u611f\u89c9\u4e0d\u9519\uff0c\u5206\u4eab\u4e00\u4e0b";
2776                 new CombineShare({
2777                     sid: 3,
2778                     rid: G.sku,
2779                     $el: i,
2780                     title: s,
2781                     content: s,
2782                     url: location.href,
2783                     imgs: e,
2784                     onbeforeOpen: function(t) {
2785                         t.jp = pageConfig.product.jp
2786                     }
2787                 }), i.attr("clstag", "shangpin|keycount|product|fenxiang")
2788             }(),
2789             function() {
2790                 var t = $("#consult-search .form"),
2791                     e = $("#consult"),
2792                     i = pageConfig.wideVersion && pageConfig.compatible,
2793                     s = ‘            <div id="consult-wrap" class="consult-search">                <b></b>                <div class="consult-pop">                    <input type="text" id="txbReferSearch" placeholder="\u8bf7\u8f93\u5165\u5173\u952e\u8bcd" />                    <input type="button" value="\u641c\u7d22" id="btnReferSearch" class="btn-search" clstag="shangpin|keycount|product|consult9">                    <a class="consult-close hl_blue" href="#none" onclick="closeCounsultSearch()">\u53d6\u6d88</a>                </div>            </div>            <div class="consult-pub">                <a class="css3-btn" target="_blank" href="http://club.jd.com/allconsultations/‘ + G.sku + ‘-1-1.html#form1">\u53d1\u8868\u54a8\u8be2</a>            </div>‘;
2794                 t.remove(), e.addClass("consult-2014"), e.find(".mt").append(s), window.closeCounsultSearch = function() {
2795                     $("#consult-wrap").removeClass("hover"), pageConfig.onConsultSearch = !1
2796                 }, i || (e.find(".consult-search").hover(function() {
2797                     var t = $(this);
2798                     setTimeout(function() {
2799                         t.addClass("hover")
2800                     }, 500)
2801                 }, function() {
2802                     pageConfig.onConsultSearch || $(this).removeClass("hover")
2803                 }).bind("click", function() {
2804                     return $(this).is(".consult-close") ? void 0 : !1
2805                 }), e.find("b").bind("click", function() {
2806                     return $(this).addClass("hover"), pageConfig.onConsultSearch = !0, !1
2807                 }), $("body").bind("click", function() {
2808                     closeCounsultSearch()
2809                 }))
2810             }()
2811     });
2812 var geminiCustomizedDot = geminiCustomizedDot || [],
2813     MBuy = {
2814         init: function() {
2815             this.chooseBtn = $("#choose-btns"), this.setQrcode()
2816         },
2817         setQrcode: function() {
2818             var t = this,
2819                 e = ‘<div id="m-buy" clstag="shangpin|keycount|product|btn-erweima">    <div class="mt">\u5ba2\u6237\u7aef\u9996\u6b21\u4e0b\u5355</div>    <div id="m-countdown">        <strong class="hl_red">\u90015\u5143\u4eac\u5238</strong>    </div>    <div id="m-qrcode" class="hide">        <span class="close" onclick="$(\‘#m-buy\‘).removeClass(\‘hover\‘)"></span>        <span class="arr"></span>        <div class="m-qrcode-wrap">            <strong>\u5ba2\u6237\u7aef\u9996\u5355\u6ee159\u90015\u5143\u4eac\u5238\u4f4e\u4ef7\u79d2\u6740\u5546\u54c1\u62a2\u4e0d\u505c</strong>            <div id="m-qrcode-box">                <img src="http://misc.360buyimg.com/lib/img/e/blank.gif" width="155" height="155" />            </div>        </div>    </div></div>‘;
2820             return $("#m-buy").length > 0 ? !1 : (this.chooseBtn.append(e), this.mBuy = $("#m-buy"), this.mt = this.mBuy.find(".mt"), this.mBuy.Jdropdown({
2821                 delay: 200,
2822                 event: "click"
2823             }, function() {
2824                 "true" !== t.mBuy.attr("loaded") && ($.ajax({
2825                     url: "http://misc.360buyimg.com/product/js/2012/qrcode.js?ver=20140527",
2826                     dataType: "script",
2827                     scriptCharset: "gb2312",
2828                     cache: !0
2829                 }), t.mBuy.attr("loaded", "true"))
2830             }), void 0)
2831         },
2832         setProm: function(t) {
2833             var e = this.mBuy.find("#m-countdown");
2834             if (!(t && t.indexOf(".") > -1)) return this.mt.html("\u5ba2\u6237\u7aef\u9996\u6b21\u4e0b\u5355"), e.html(‘<strong class="hl_red">\u90015\u5143\u4eac\u5238</strong>‘), void 0;
2835             t = t.split(",");
2836             var i = isNaN(Number(t[1])) ? 0 : Number(t[1]) / 1e3;
2837             Math.floor(i / 86400) > 7 ? (this.mt.html("\u5ba2\u6237\u7aef\u9996\u6b21\u4e0b\u5355"), e.html(‘<strong class="hl_red">\u90015\u5143\u4eac\u5238</strong>‘)) : (this.mt.html(‘<strong class="hl_red">\u624b\u673a\u4e13\u4eab\u4ef7\uff1a‘ + t[0] + "\u5143</strong>"), i >= 0 && G.Countdown.init(i, function(t) {
2838                 e.html("\u8fd8\u5269\uff1a" + t.d + "\u5929" + t.h + "\u5c0f\u65f6" + t.m + "\u5206")
2839             }))
2840         }
2841     };
2842 (function() {
2843     var t = RegExp("-" + G.cat[2] + "-"),
2844         e = "-1195-6980-6151-6152-1444-7052-7054-7057-9435-";
2845     t.test(e) ? MBuy.setProm = function() {} : MBuy.init()
2846 })();

03.product.js

时间: 2024-10-28 23:57:38

03.product.js的相关文章

03 Node.js学习之根据http请求路径返回不同数据

在Nodejs中,当客户端请求的路径不同时,NodeJS处理返回不同的数据 步骤: //1.载入http模块 var http=require('http'); //2.创建一个http服务 var server=http.createServer(); //3.监听request请求事件,设置request,response回调函数 server.on('request',function (request,response) { //这里指定编码,处理乱码的问题 response.write

js框架设计1.1命名空间笔记

借到了司徒正美的写的js框架设计一书,司徒大神所著有些看不太懂,果然尚需循序渐进,稳扎js基础之中. 第一张开篇司徒阐述了种子模块的概念 种子模块亦为核心模块,框架最先执行模块,司徒见解应包含:对象扩展.数组化,类型判定,简单事件的绑定和写在,无冲突处理,模块加载与domReady.应具有扩展性.常用.稳定等特点. 1.1 命名空间 一观各大框架,基本是定义一个全局变量作为命名空间,如Ext的Ext等,大体抽象取例为: if(typeof(Ten)==='undefined'){ Ten={};

爱创课堂2016年Angular.JS前端开发从入门到上手企业开发视频教程(完整版)

资源网盘: 2016年Angular.JS从入门到上手企业开发 链接: https://pan.baidu.com/s/1dF2vBzV 密码: 3hbk 免费学习网站地址:http://www.icketang.com/ AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了.所以我做了一些工作(你也可以觉得是小花招)来让浏览器做我想要的事.AngularJS试图成为WEB应用中的一种客户端的解决

require.js+backbone 使用r.js 来压缩,本地不压缩,生产环境压缩 的实现方式

requie.js 和backbone.js 这里就不说了,可以去看官方文档,都很详细! 但是使用require.js 默认带的压缩方式感觉不是很方便,所以本文主要讲 利用r.js压缩,来实现本地不压缩,生产环境压缩 r.js 是运行在node上的,默认使用UglifyJS.UglifyJS真的很好用,那为什么说默认的方式 不是很方便呢? r.js 单独压缩一个文件也很好用的,但在实际项目中,总不能一个一个压吧!因此r.js提供了一种多文件的压缩方式 ,使用一个叫bulid.js 的配置文件来配

Excel.JS

1.chrome浏览器下 js如何读取EXCEL内容.全部豆子求解_博问_博客园.html(https://q.cnblogs.com/q/44269/) 服务端 用NPOI来读取EXCEL的内容,然后响应出json出来,页面上绑定对象就行了.有问题的话再继续提问. ````` | 园豆:14263 (专家六级) | 2012-12-04 16:00 在客户端的时候我需要用JS读取本地EXCEL,然后上传给服务端. 客户端可以用NPOI来操作吗? 支持(0)反对(0)3500 | 园豆:2 (初

你不知道的Node.js性能优化,读了之后水平直线上升

本文由云+社区发表 "当我第一次知道要这篇文章的时候,其实我是拒绝的,因为我觉得,你不能叫我写马上就写,我要有干货才行,写一些老生常谈的然后加上好多特技,那个 Node.js 性能啊好像 Duang~ 的一下就上去了,那读者一定会骂我,Node.js 根本没有这样搞性能优化的,都是假的." ------ 斯塔克·成龙·王 1.使用最新版本的 Node.js 仅仅是简单的升级 Node.js 版本就可以轻松地获得性能提升,因为几乎任何新版本的 Node.js 都会比老版本性能更好,为什么

2690036 - SAP HANA 2.0 SPS 03 Database Revision 034

Symptom This is the SAP Release Note for SAP HANA 2.0 Database Revision 034 (2.00.034.00) of the SAP HANA platform software Support Package Stack (SPS 03). Please refer to the following SAP Notes: SAP Note 2380229 - SAP HANA Platform 2.0 - Central No

JS引擎线程的执行过程的三个阶段(一)

浏览器首先按顺序加载由<script>标签分割的js代码块,加载js代码块完毕后,立刻进入以下三个阶段,然后再按顺序查找下一个代码块,再继续执行以下三个阶段,无论是外部脚本文件(不异步加载)还是内部脚本代码块,都是一样的原理,并且都在同一个全局作用域中. JS引擎线程的执行过程的三个阶段: 语法分析 预编译阶段 执行阶段 一. 语法分析 分析该js脚本代码块的语法是否正确,如果出现不正确,则向外抛出一个语法错误(SyntaxError),停止该js代码块的执行,然后继续查找并加载下一个代码块:

JS引擎线程的执行过程的三个阶段(二)

继续JS引擎线程的执行过程的三个阶段(一) 内容, 如下: 三. 执行阶段 1. 网页的线程 永远只有JS引擎线程在执行JS脚本程序,其他三个线程只负责将满足触发条件的处理函数推进事件队列,等待JS引擎线程执行, 不参与代码解析与执行. JS引擎线程: 也称为JS内核,负责解析执行Javascript脚本程序的主线程(例如V8引擎) 事件触发线程: 归属于浏览器内核进程,不受JS引擎线程控制.主要用于控制事件(例如鼠标,键盘等事件),当该事件被触发时候,事件触发线程就会把该事件的处理函数推进事件