1 /* Replayable replacements for global functions */
3 /***************************************************************
5 **************************************************************/
6 //! stable.js 0.1.3, https://github.com/Two-Screen/stable
7 //! © 2012 Stéphan Kochen, Angry Bytes. MIT licensed.
10 // A stable array sort, because `Array#sort()` is not guaranteed stable.
11 // This is an implementation of merge sort, without recursion.
13 var stable = function(arr, comp) {
14 if (typeof(comp) !== 'function') {
15 comp = function(a, b) {
26 if (len <= 1) return arr;
28 // Rather than dividing input, simply iterate chunks of 1, 2, 4, 8, etc.
29 // Chunks are the size of the left or right hand in merge sort.
30 // Stop when the left-hand covers all of the array.
32 for (var chk = 1; chk < len; chk *= 2) {
33 arr = pass(arr, comp, chk);
35 for (var i = 0; i < len; i++) {
41 // Run a single pass with the given chunk size. Returns a new array.
42 var pass = function(arr, comp, chk) {
44 // Output, and position.
45 var result = new Array(len);
47 // Step size / double chunk size.
49 // Bounds of the left and right chunks.
51 // Iterators over the left and right chunk.
54 // Iterate over pairs of chunks.
55 for (l = 0; l < len; l += dbl) {
61 // Iterate both chunks in parallel.
65 // Compare the chunks.
66 if (li < r && ri < e) {
67 // This works for a regular `sort()` compatible comparator,
68 // but also for a simple comparator like: `a > b`
69 if (comp(arr[li], arr[ri]) <= 0) {
70 result[i++] = arr[li++];
73 result[i++] = arr[ri++];
76 // Nothing to compare, just flush what's left.
78 result[i++] = arr[li++];
81 result[i++] = arr[ri++];
83 // Both iterators are at the chunk ends.
93 var arrsort = function(comp) {
94 return stable(this, comp);
97 if (Object.defineProperty) {
98 Object.defineProperty(Array.prototype, "sort", {
99 configurable: true, writable: true, enumerable: false,
103 Array.prototype.sort = arrsort;
107 /***************************************************************
109 **************************************************************/
112 * In a generated replay, this file is partially common, boilerplate code
113 * included in every replay, and partially generated replay code. The following
114 * header applies to the boilerplate code. A comment indicating "Auto-generated
115 * below this comment" marks the separation between these two parts.
117 * Copyright (C) 2011, 2012 Purdue University
118 * Written by Gregor Richards
119 * All rights reserved.
121 * Redistribution and use in source and binary forms, with or without
122 * modification, are permitted provided that the following conditions are met:
124 * 1. Redistributions of source code must retain the above copyright notice,
125 * this list of conditions and the following disclaimer.
126 * 2. Redistributions in binary form must reproduce the above copyright notice,
127 * this list of conditions and the following disclaimer in the documentation
128 * and/or other materials provided with the distribution.
130 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
131 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
132 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
133 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
134 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
135 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
136 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
137 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
138 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
139 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
140 * POSSIBILITY OF SUCH DAMAGE.
147 // detect if we're in a browser or not
148 var inbrowser = false;
149 var inharness = false;
150 var finished = false;
151 if (typeof window !== "undefined" && "document" in window) {
153 if (window.parent && "JSBNG_handleResult" in window.parent) {
156 } else if (typeof global !== "undefined") {
160 window = (function() { return this; })();
164 if ("console" in window) {
165 window.JSBNG_Console = window.console;
170 // Workaround for bound functions as events
171 delete Function.prototype.bind;
174 var JSBNG_Replay = window.top.JSBNG_Replay = {
175 push: function(arr, fun) {
180 path: function(str) {
184 forInKeys: function(of) {
192 // the actual replay runner
195 delete window.onload;
198 var jr = JSBNG_Replay$;
199 var cb = function() {
200 var end = new Date().getTime();
203 var msg = "Time: " + (end - st) + "ms";
206 window.parent.JSBNG_handleResult({error:false, time:(end - st)});
207 } else if (inbrowser) {
208 var res = document.createElement("div");
210 res.style.position = "fixed";
211 res.style.left = "1em";
212 res.style.top = "1em";
213 res.style.width = "35em";
214 res.style.height = "5em";
215 res.style.padding = "1em";
216 res.style.backgroundColor = "white";
217 res.style.color = "black";
218 res.appendChild(document.createTextNode(msg));
220 document.body.appendChild(res);
221 } else if (typeof console !== "undefined") {
223 } else if (typeof print !== "undefined") {
224 // hopefully not the browser print() function :)
233 var st = new Date().getTime();
234 while (jr !== null) {
239 // add a frame at replay time
240 function iframe(pageid) {
243 // represent the iframe as an iframe (of course)
244 var iframe = document.createElement("iframe");
245 iframe.style.display = "none";
246 document.body.appendChild(iframe);
247 iw = iframe.contentWindow;
248 iw.document.write("<script type=\"text/javascript\">var JSBNG_Replay_geval = eval;</script>");
251 // no general way, just lie and do horrible things
255 window.window = window;
257 window.JSBNG_Replay_geval = function(str) {
266 // called at the end of the replay stuff
267 function finalize() {
269 setTimeout(onload, 0);
275 // verify this recorded value and this replayed value are close enough
276 function verify(rep, rec) {
278 (rep === rep || rec === rec) /* NaN test */) {
280 if (typeof rec === "function" && typeof rep === "function") {
283 if (typeof rec !== "object" || rec === null ||
284 !(("__JSBNG_unknown_" + typeof(rep)) in rec)) {
292 var firstMessage = true;
293 function replayMessage(msg) {
297 firstMessage = false;
304 // complain when there's an error
305 function verificationError(msg) {
306 if (finished) return;
308 window.parent.JSBNG_handleResult({error:true, msg: msg});
309 } else replayMessage(msg);
314 function verifySet(objstr, obj, prop, gvalstr, gval) {
315 if (/^on/.test(prop)) {
316 // these aren't instrumented compatibly
320 if (!verify(obj[prop], gval)) {
321 var bval = obj[prop];
322 var msg = "Verification failure! " + objstr + "." + prop + " is not " + gvalstr + ", it's " + bval + "!";
323 verificationError(msg);
327 // to verify a call or new
328 function verifyCall(iscall, func, cthis, cargs) {
330 var callArgs = func.callArgs[func.inst];
331 iscall = iscall ? 1 : 0;
332 if (cargs.length !== callArgs.length - 1) {
335 if (iscall && !verify(cthis, callArgs[0])) ok = false;
336 for (var i = 0; i < cargs.length; i++) {
337 if (!verify(cargs[i], callArgs[i+1])) ok = false;
341 var msg = "Call verification failure!";
342 verificationError(msg);
345 return func.returns[func.inst++];
348 // to verify the callpath
349 function verifyPath(func) {
350 var real = callpath.shift();
352 var msg = "Call path verification failure! Expected " + real + ", found " + func;
353 verificationError(msg);
357 // figure out how to define getters
359 if (Object.defineProperty) {
360 var odp = Object.defineProperty;
361 defineGetter = function(obj, prop, getter, setter) {
362 if (typeof setter === "undefined") setter = function(){};
363 odp(obj, prop, {"enumerable": true, "configurable": true, "get": getter, "set": setter});
365 } else if (Object.prototype.__defineGetter__) {
366 var opdg = Object.prototype.__defineGetter__;
367 var opds = Object.prototype.__defineSetter__;
368 defineGetter = function(obj, prop, getter, setter) {
369 if (typeof setter === "undefined") setter = function(){};
370 opdg.call(obj, prop, getter);
371 opds.call(obj, prop, setter);
374 defineGetter = function() {
375 verificationError("This replay requires getters for correct behavior, and your JS engine appears to be incapable of defining getters. Sorry!");
379 var defineRegetter = function(obj, prop, getter, setter) {
380 defineGetter(obj, prop, function() {
381 return getter.call(this, prop);
383 // once it's set by the client, it's claimed
384 setter.call(this, prop, val);
385 Object.defineProperty(obj, prop, {
386 "enumerable": true, "configurable": true, "writable": true,
392 // for calling events
393 var fpc = Function.prototype.call;
395 // resist the urge, don't put a })(); here!
396 /******************************************************************************
397 * Auto-generated below this comment
398 *****************************************************************************/
399 var ow881945950 = window;
425 JSBNG_Replay.s6642b77f01f4d49ef240b29032e6da4372359178_0 = [];
426 JSBNG_Replay.sdaedc82b47673ce6de4c0b9c01978bd63c2c50e4_1 = [];
427 JSBNG_Replay.sdaedc82b47673ce6de4c0b9c01978bd63c2c50e4_2 = [];
428 JSBNG_Replay.s6642b77f01f4d49ef240b29032e6da4372359178_1 = [];
429 JSBNG_Replay.sd77f26a2825b7813fef421f4fc64cccaae936b24_7 = [];
431 // record generated by JSBench at 2013-07-10T17:55:49.619Z
434 f881945950_0 = function() { return f881945950_0.returns[f881945950_0.inst++]; };
435 f881945950_0.returns = [];
436 f881945950_0.inst = 0;
438 ow881945950.JSBNG__Date = f881945950_0;
442 ow881945950.JSBNG__document = o0;
444 f881945950_7 = function() { return f881945950_7.returns[f881945950_7.inst++]; };
445 f881945950_7.returns = [];
446 f881945950_7.inst = 0;
448 ow881945950.JSBNG__addEventListener = f881945950_7;
450 ow881945950.JSBNG__top = ow881945950;
452 ow881945950.JSBNG__scrollX = 0;
454 ow881945950.JSBNG__scrollY = 0;
456 f881945950_16 = function() { return f881945950_16.returns[f881945950_16.inst++]; };
457 f881945950_16.returns = [];
458 f881945950_16.inst = 0;
460 ow881945950.JSBNG__setTimeout = f881945950_16;
462 f881945950_17 = function() { return f881945950_17.returns[f881945950_17.inst++]; };
463 f881945950_17.returns = [];
464 f881945950_17.inst = 0;
466 ow881945950.JSBNG__setInterval = f881945950_17;
468 ow881945950.JSBNG__frames = ow881945950;
470 ow881945950.JSBNG__self = ow881945950;
472 ow881945950.JSBNG__content = ow881945950;
474 ow881945950.JSBNG__closed = false;
476 ow881945950.JSBNG__pkcs11 = null;
478 ow881945950.JSBNG__opener = null;
480 ow881945950.JSBNG__defaultStatus = "";
484 ow881945950.JSBNG__location = o1;
486 ow881945950.JSBNG__innerWidth = 994;
488 ow881945950.JSBNG__innerHeight = 603;
490 ow881945950.JSBNG__outerWidth = 994;
492 ow881945950.JSBNG__outerHeight = 690;
494 ow881945950.JSBNG__screenX = 24;
496 ow881945950.JSBNG__screenY = 28;
498 ow881945950.JSBNG__mozInnerScreenX = 0;
500 ow881945950.JSBNG__mozInnerScreenY = 0;
502 ow881945950.JSBNG__pageXOffset = 0;
504 ow881945950.JSBNG__pageYOffset = 0;
506 ow881945950.JSBNG__scrollMaxX = 0;
508 ow881945950.JSBNG__scrollMaxY = 0;
510 ow881945950.JSBNG__fullScreen = false;
512 ow881945950.JSBNG__frameElement = null;
514 ow881945950.JSBNG__mozPaintCount = 0;
516 ow881945950.JSBNG__mozAnimationStartTime = 1373479177771;
520 ow881945950.JSBNG__mozIndexedDB = o2;
524 ow881945950.JSBNG__performance = o3;
526 ow881945950.JSBNG__devicePixelRatio = 1;
528 f881945950_65 = function() { return f881945950_65.returns[f881945950_65.inst++]; };
529 f881945950_65.returns = [];
530 f881945950_65.inst = 0;
532 ow881945950.JSBNG__Image = f881945950_65;
534 ow881945950.JSBNG__name = "uaMatch";
536 ow881945950.JSBNG__status = "";
538 ow881945950.JSBNG__Components = undefined;
540 ow881945950.JSBNG__indexedDB = o2;
544 ow881945950.JSBNG__onerror = null;
547 JSBNG_Replay$ = function(real, cb) { if (!real) return;
551 f881945950_0.returns.push(o2);
555 geval("var ue_t0 = ((ue_t0 || +new JSBNG__Date()));");
559 f881945950_0.returns.push(o2);
565 f881945950_0.returns.push(o2);
571 f881945950_0.returns.push(o2);
577 f881945950_0.returns.push(o2);
583 f881945950_0.returns.push(o2);
587 ow881945950.JSBNG__onJSBNG__stop = undefined;
589 f881945950_393 = function() { return f881945950_393.returns[f881945950_393.inst++]; };
590 f881945950_393.returns = [];
591 f881945950_393.inst = 0;
593 ow881945950.JSBNG__onbeforeunload = f881945950_393;
595 o0.webkitHidden = void 0;
599 o0.msHidden = void 0;
601 o0.mozHidden = false;
603 o0.mozVisibilityState = "visible";
607 f881945950_0.returns.push(o2);
611 f881945950_395 = function() { return f881945950_395.returns[f881945950_395.inst++]; };
612 f881945950_395.returns = [];
613 f881945950_395.inst = 0;
615 o0.JSBNG__addEventListener = f881945950_395;
617 f881945950_395.returns.push(undefined);
619 f881945950_7.returns.push(undefined);
623 f881945950_0.returns.push(o2);
625 f881945950_397 = function() { return f881945950_397.returns[f881945950_397.inst++]; };
626 f881945950_397.returns = [];
627 f881945950_397.inst = 0;
629 o2.getTime = f881945950_397;
633 f881945950_397.returns.push(1373479177880);
637 f881945950_0.returns.push(o2);
643 f881945950_0.returns.push(o2);
649 f881945950_0.returns.push(o2);
653 geval("var ue_csm = window;\nue_csm.ue_hob = ((ue_csm.ue_hob || +new JSBNG__Date()));\n(function(d) {\n var a = {\n ec: 0,\n pec: 0,\n ts: 0,\n erl: [],\n mxe: 50,\n startTimer: function() {\n a.ts++;\n JSBNG__setInterval(function() {\n ((((d.ue && ((a.pec < a.ec)))) && d.uex(\"at\")));\n a.pec = a.ec;\n }, 10000);\n }\n };\n function c(e) {\n if (((a.ec > a.mxe))) {\n return;\n }\n ;\n ;\n a.ec++;\n if (d.ue_jserrv2) {\n e.pageURL = ((\"\" + ((window.JSBNG__location ? window.JSBNG__location.href : \"\"))));\n }\n ;\n ;\n a.erl.push(e);\n };\n;\n function b(h, g, e) {\n var f = {\n m: h,\n f: g,\n l: e,\n fromOnError: 1,\n args: arguments\n };\n d.ueLogError(f);\n return false;\n };\n;\n b.skipTrace = 1;\n c.skipTrace = 1;\n d.ueLogError = c;\n d.ue_err = a;\n window.JSBNG__onerror = b;\n})(ue_csm);\nue_csm.ue_hoe = +new JSBNG__Date();\nvar ue_id = \"0M4YTA6K9C1VFV7TYXNC\", ue_sid = \"176-5336870-9447366\", ue_mid = \"ATVPDKIKX0DER\", ue_sn = \"www.amazon.com\", ue_url = \"/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/ref=sr_1_1/uedata/unsticky/176-5336870-9447366/Detail/ntpoffrw\", ue_furl = \"fls-na.amazon.com\", ue_pr = 0, ue_navtiming = 1, ue_log_idx = 0, ue_log_f = 0, ue_fcsn = 1, ue_ctb0tf = 1, ue_fst = 0, ue_fna = 1, ue_swi = 1, ue_swm = 4, ue_onbful = 0, ue_jserrv2 = 3;\nif (!window.ue_csm) {\n var ue_csm = window;\n}\n;\n;\nue_csm.ue_hob = ((ue_csm.ue_hob || +new JSBNG__Date));\nfunction ue_viz() {\n (function(d, j, g) {\n var b, l, e, a, c = [\"\",\"moz\",\"ms\",\"o\",\"webkit\",], k = 0, f = 20, h = \"JSBNG__addEventListener\", i = \"JSBNG__attachEvent\";\n while ((((b = c.pop()) && !k))) {\n l = ((((b ? ((b + \"H\")) : \"h\")) + \"idden\"));\n if (k = ((typeof j[l] == \"boolean\"))) {\n e = ((b + \"visibilitychange\"));\n a = ((b + \"VisibilityState\"));\n }\n ;\n ;\n };\n ;\n {\n function m(q) {\n if (((d.ue.viz.length < f))) {\n var p = q.type, n = q.originalEvent;\n if (!((((/^focus./.test(p) && n)) && ((((n.toElement || n.fromElement)) || n.relatedTarget))))) {\n var r = ((j[a] || ((((((p == \"JSBNG__blur\")) || ((p == \"focusout\")))) ? \"hidden\" : \"visible\")))), o = ((+new JSBNG__Date - d.ue.t0));\n d.ue.viz.push(((((r + \":\")) + o)));\n ((((((ue.iel && ((ue.iel.length > 0)))) && ((r == \"visible\")))) && uex(\"at\")));\n }\n ;\n ;\n }\n ;\n ;\n };\n ((window.top.JSBNG_Replay.sd77f26a2825b7813fef421f4fc64cccaae936b24_7.push)((m)));\n };\n ;\n m({\n });\n if (k) {\n j[h](e, m, 0);\n }\n ;\n ;\n })(ue_csm, JSBNG__document, window);\n};\n;\nue_csm.ue_hoe = +new JSBNG__Date;\nue_csm.ue_hob = ((ue_csm.ue_hob || +new JSBNG__Date()));\n(function(e, h) {\n e.ueinit = ((((e.ueinit || 0)) + 1));\n e.ue = {\n t0: ((h.aPageStart || e.ue_t0)),\n id: e.ue_id,\n url: e.ue_url,\n a: \"\",\n b: \"\",\n h: {\n },\n r: {\n ld: 0,\n oe: 0,\n ul: 0\n },\n s: 1,\n t: {\n },\n sc: {\n },\n iel: [],\n ielf: [],\n fc_idx: {\n },\n viz: [],\n v: 30\n };\n e.ue.tagC = function() {\n var j = [];\n return function(k) {\n if (k) {\n j.push(k);\n }\n ;\n ;\n return j.slice(0);\n };\n };\n e.ue.tag = e.ue.tagC();\n e.ue.ifr = ((((((h.JSBNG__top !== h.JSBNG__self)) || (h.JSBNG__frameElement))) ? 1 : 0));\n function c(l, o, q, n) {\n if (((e.ue_log_f && e.ue.log))) {\n e.ue.log({\n f: \"uet\",\n en: l,\n s: o,\n so: q,\n to: n\n }, \"csm\");\n }\n ;\n ;\n var p = ((n || (new JSBNG__Date()).getTime()));\n var j = ((!o && ((typeof q != \"undefined\"))));\n if (j) {\n return;\n }\n ;\n ;\n if (l) {\n var m = ((o ? ((d(\"t\", o) || d(\"t\", o, {\n }))) : e.ue.t));\n m[l] = p;\n {\n var fin0keys = ((window.top.JSBNG_Replay.forInKeys)((q))), fin0i = (0);\n var k;\n for (; (fin0i < fin0keys.length); (fin0i++)) {\n ((k) = (fin0keys[fin0i]));\n {\n d(k, o, q[k]);\n };\n };\n };\n ;\n }\n ;\n ;\n return p;\n };\n;\n function d(k, l, m) {\n if (((e.ue_log_f && e.ue.log))) {\n e.ue.log({\n f: \"ues\",\n k: k,\n s: l,\n v: m\n }, \"csm\");\n }\n ;\n ;\n var n, j;\n if (k) {\n n = j = e.ue;\n if (((l && ((l != n.id))))) {\n j = n.sc[l];\n if (!j) {\n j = {\n };\n ((m ? (n.sc[l] = j) : j));\n }\n ;\n ;\n }\n ;\n ;\n n = ((m ? (j[k] = m) : j[k]));\n }\n ;\n ;\n return n;\n };\n;\n function g(n, o, m, k, j) {\n if (((e.ue_log_f && e.ue.log))) {\n e.ue.log({\n f: \"ueh\",\n ek: n\n }, \"csm\");\n }\n ;\n ;\n var l = ((\"JSBNG__on\" + m));\n var p = o[l];\n if (((typeof (p) == \"function\"))) {\n if (n) {\n e.ue.h[n] = p;\n }\n ;\n ;\n }\n else {\n p = function() {\n \n };\n }\n ;\n ;\n o[l] = ((j ? function(q) {\n k(q);\n p(q);\n } : function(q) {\n p(q);\n k(q);\n }));\n o[l].isUeh = 1;\n };\n;\n function b(s, m, r) {\n if (((e.ue_log_f && e.ue.log))) {\n e.ue.log({\n f: \"uex\",\n en: s,\n s: m,\n so: r\n }, \"csm\");\n }\n ;\n ;\n function l(P, N) {\n var L = [P,], G = 0, M = {\n };\n if (N) {\n L.push(\"m=1\");\n M[N] = 1;\n }\n else {\n M = e.ue.sc;\n }\n ;\n ;\n var E;\n {\n var fin1keys = ((window.top.JSBNG_Replay.forInKeys)((M))), fin1i = (0);\n var F;\n for (; (fin1i < fin1keys.length); (fin1i++)) {\n ((F) = (fin1keys[fin1i]));\n {\n var H = d(\"wb\", F), K = ((d(\"t\", F) || {\n })), J = ((d(\"t0\", F) || e.ue.t0));\n if (((N || ((H == 2))))) {\n var O = ((H ? G++ : \"\"));\n L.push(((((((\"sc\" + O)) + \"=\")) + F)));\n {\n var fin2keys = ((window.top.JSBNG_Replay.forInKeys)((K))), fin2i = (0);\n var I;\n for (; (fin2i < fin2keys.length); (fin2i++)) {\n ((I) = (fin2keys[fin2i]));\n {\n if (((((I.length <= 3)) && K[I]))) {\n L.push(((((((I + O)) + \"=\")) + ((K[I] - J)))));\n }\n ;\n ;\n };\n };\n };\n ;\n L.push(((((((\"t\" + O)) + \"=\")) + K[s])));\n if (((d(\"ctb\", F) || d(\"wb\", F)))) {\n E = 1;\n }\n ;\n ;\n }\n ;\n ;\n };\n };\n };\n ;\n if (((!n && E))) {\n L.push(\"ctb=1\");\n }\n ;\n ;\n return L.join(\"&\");\n };\n ;\n function v(H, F, J, E) {\n if (!H) {\n return;\n }\n ;\n ;\n var I = new JSBNG__Image();\n var G = function() {\n if (!e.ue.b) {\n return;\n }\n ;\n ;\n var L = e.ue.b;\n e.ue.b = \"\";\n v(L, F, J, 1);\n };\n if (((e.ue.b && !e.ue_swi))) {\n I.JSBNG__onload = G;\n }\n ;\n ;\n var K = ((((((!E || !e.ue.log)) || !window.amznJQ)) || ((window.amznJQ && window.amznJQ.isMock))));\n if (K) {\n e.ue.iel.push(I);\n I.src = H;\n }\n ;\n ;\n if (((e.ue.log && ((((J || E)) || e.ue_ctb0tf))))) {\n e.ue.log(H, \"uedata\", {\n n: 1\n });\n e.ue.ielf.push(H);\n }\n ;\n ;\n if (((e.ue_err && !e.ue_err.ts))) {\n e.ue_err.startTimer();\n }\n ;\n ;\n if (e.ue_swi) {\n G();\n }\n ;\n ;\n };\n ;\n function B(E) {\n if (!ue.collected) {\n var G = E.timing;\n if (G) {\n e.ue.t.na_ = G.navigationStart;\n e.ue.t.ul_ = G.unloadEventStart;\n e.ue.t._ul = G.unloadEventEnd;\n e.ue.t.rd_ = G.redirectStart;\n e.ue.t._rd = G.redirectEnd;\n e.ue.t.fe_ = G.fetchStart;\n e.ue.t.lk_ = G.domainLookupStart;\n e.ue.t._lk = G.domainLookupEnd;\n e.ue.t.co_ = G.connectStart;\n e.ue.t._co = G.connectEnd;\n e.ue.t.sc_ = G.secureConnectionStart;\n e.ue.t.rq_ = G.requestStart;\n e.ue.t.rs_ = G.responseStart;\n e.ue.t._rs = G.responseEnd;\n e.ue.t.dl_ = G.domLoading;\n e.ue.t.di_ = G.domInteractive;\n e.ue.t.de_ = G.domContentLoadedEventStart;\n e.ue.t._de = G.domContentLoadedEventEnd;\n e.ue.t._dc = G.domComplete;\n e.ue.t.ld_ = G.loadEventStart;\n e.ue.t._ld = G.loadEventEnd;\n }\n ;\n ;\n var F = E.navigation;\n if (F) {\n e.ue.t.ty = ((F.type + e.ue.t0));\n e.ue.t.rc = ((F.redirectCount + e.ue.t0));\n if (e.ue.tag) {\n e.ue.tag(((F.redirectCount ? \"redirect\" : \"nonredirect\")));\n }\n ;\n ;\n }\n ;\n ;\n e.ue.collected = 1;\n }\n ;\n ;\n };\n ;\n var D = ((!m && ((typeof r != \"undefined\"))));\n if (D) {\n return;\n }\n ;\n ;\n {\n var fin3keys = ((window.top.JSBNG_Replay.forInKeys)((r))), fin3i = (0);\n var j;\n for (; (fin3i < fin3keys.length); (fin3i++)) {\n ((j) = (fin3keys[fin3i]));\n {\n d(j, m, r[j]);\n };\n };\n };\n ;\n c(\"pc\", m, r);\n var x = ((d(\"id\", m) || e.ue.id));\n var p = ((((((((((((e.ue.url + \"?\")) + s)) + \"&v=\")) + e.ue.v)) + \"&id=\")) + x));\n var n = ((d(\"ctb\", m) || d(\"wb\", m)));\n if (n) {\n p += ((\"&ctb=\" + n));\n }\n ;\n ;\n if (((e.ueinit > 1))) {\n p += ((\"&ic=\" + e.ueinit));\n }\n ;\n ;\n var A = ((h.JSBNG__performance || h.JSBNG__webkitPerformance));\n var y = e.ue.bfini;\n var q = ((((A && A.navigation)) && ((A.navigation.type == 2))));\n var o = ((((m && ((m != x)))) && d(\"ctb\", m)));\n if (!o) {\n if (((y && ((y > 1))))) {\n p += ((\"&bft=\" + ((y - 1))));\n p += \"&bfform=1\";\n }\n else {\n if (q) {\n p += \"&bft=1\";\n }\n ;\n ;\n }\n ;\n ;\n if (q) {\n p += \"&bfnt=1\";\n }\n ;\n ;\n }\n ;\n ;\n if (((((e.ue._fi && ((s == \"at\")))) && ((!m || ((m == x))))))) {\n p += e.ue._fi();\n }\n ;\n ;\n var k;\n if (((((((s == \"ld\")) || ((s == \"ul\")))) && ((!m || ((m == x))))))) {\n if (((s == \"ld\"))) {\n if (((h.JSBNG__onbeforeunload && h.JSBNG__onbeforeunload.isUeh))) {\n h.JSBNG__onbeforeunload = null;\n }\n ;\n ;\n ue.r.ul = e.ue_onbful;\n if (((e.ue_onbful == 3))) {\n ue.detach(\"beforeunload\", e.onUl);\n }\n ;\n ;\n if (((JSBNG__document.ue_backdetect && JSBNG__document.ue_backdetect.ue_back))) {\n JSBNG__document.ue_backdetect.ue_back.value++;\n }\n ;\n ;\n if (e._uess) {\n k = e._uess();\n }\n ;\n ;\n }\n ;\n ;\n if (((((e.ue_navtiming && A)) && A.timing))) {\n d(\"ctb\", x, \"1\");\n if (((e.ue_navtiming == 1))) {\n e.ue.t.tc = A.timing.navigationStart;\n }\n ;\n ;\n }\n ;\n ;\n if (A) {\n B(A);\n }\n ;\n ;\n if (((e.ue_hob && e.ue_hoe))) {\n e.ue.t.hob = e.ue_hob;\n e.ue.t.hoe = e.ue_hoe;\n }\n ;\n ;\n if (e.ue.ifr) {\n p += \"&ifr=1\";\n }\n ;\n ;\n }\n ;\n ;\n c(s, m, r);\n var w = ((((((s == \"ld\")) && m)) && d(\"wb\", m)));\n if (w) {\n d(\"wb\", m, 2);\n }\n ;\n ;\n var z = 1;\n {\n var fin4keys = ((window.top.JSBNG_Replay.forInKeys)((e.ue.sc))), fin4i = (0);\n var u;\n for (; (fin4i < fin4keys.length); (fin4i++)) {\n ((u) = (fin4keys[fin4i]));\n {\n if (((d(\"wb\", u) == 1))) {\n z = 0;\n break;\n }\n ;\n ;\n };\n };\n };\n ;\n if (w) {\n if (((!e.ue.s && ((e.ue_swi || ((z && !e.ue_swi))))))) {\n p = l(p, null);\n }\n else {\n return;\n }\n ;\n ;\n }\n else {\n if (((((z && !e.ue_swi)) || e.ue_swi))) {\n var C = l(p, null);\n if (((C != p))) {\n e.ue.b = C;\n }\n ;\n ;\n }\n ;\n ;\n if (k) {\n p += k;\n }\n ;\n ;\n p = l(p, ((m || e.ue.id)));\n }\n ;\n ;\n if (((e.ue.b || w))) {\n {\n var fin5keys = ((window.top.JSBNG_Replay.forInKeys)((e.ue.sc))), fin5i = (0);\n var u;\n for (; (fin5i < fin5keys.length); (fin5i++)) {\n ((u) = (fin5keys[fin5i]));\n {\n if (((d(\"wb\", u) == 2))) {\n delete e.ue.sc[u];\n }\n ;\n ;\n };\n };\n };\n ;\n }\n ;\n ;\n var t = 0;\n if (!w) {\n e.ue.s = 0;\n if (((e.ue_err && ((e.ue_err.ec > 0))))) {\n if (((e.ue_jserrv2 == 3))) {\n if (((e.ue_err.pec < e.ue_err.ec))) {\n e.ue_err.pec = e.ue_err.ec;\n p += ((\"&ec=\" + e.ue_err.ec));\n }\n ;\n ;\n }\n else {\n p += ((\"&ec=\" + e.ue_err.ec));\n }\n ;\n ;\n }\n ;\n ;\n t = d(\"ctb\", m);\n d(\"t\", m, {\n });\n }\n ;\n ;\n if (((!window.amznJQ && e.ue.tag))) {\n e.ue.tag(\"noAmznJQ\");\n }\n ;\n ;\n if (((((p && e.ue.tag)) && ((e.ue.tag().length > 0))))) {\n p += ((\"&csmtags=\" + e.ue.tag().join(\"|\")));\n e.ue.tag = e.ue.tagC();\n }\n ;\n ;\n if (((((p && e.ue.viz)) && ((e.ue.viz.length > 0))))) {\n p += ((\"&viz=\" + e.ue.viz.join(\"|\")));\n e.ue.viz = [];\n }\n ;\n ;\n e.ue.a = p;\n v(p, s, t, w);\n };\n;\n function a(j, k, l) {\n l = ((l || h));\n if (l.JSBNG__addEventListener) {\n l.JSBNG__addEventListener(j, k, false);\n }\n else {\n if (l.JSBNG__attachEvent) {\n l.JSBNG__attachEvent(((\"JSBNG__on\" + j)), k);\n }\n ;\n ;\n }\n ;\n ;\n };\n;\n ue.attach = a;\n function i(j, k, l) {\n l = ((l || h));\n if (l.JSBNG__removeEventListener) {\n l.JSBNG__removeEventListener(j, k);\n }\n else {\n if (l.JSBNG__detachEvent) {\n l.JSBNG__detachEvent(((\"JSBNG__on\" + j)), k);\n }\n ;\n ;\n }\n ;\n ;\n };\n;\n ue.detach = i;\n function f() {\n if (((e.ue_log_f && e.ue.log))) {\n e.ue.log({\n f: \"uei\"\n }, \"csm\");\n }\n ;\n ;\n var l = e.ue.r;\n function k(n) {\n return function() {\n if (!l[n]) {\n l[n] = 1;\n b(n);\n }\n ;\n ;\n };\n };\n ;\n e.onLd = k(\"ld\");\n e.onLdEnd = k(\"ld\");\n e.onUl = k(\"ul\");\n var j = {\n beforeunload: e.onUl,\n JSBNG__stop: function() {\n b(\"os\");\n }\n };\n {\n var fin6keys = ((window.top.JSBNG_Replay.forInKeys)((j))), fin6i = (0);\n var m;\n for (; (fin6i < fin6keys.length); (fin6i++)) {\n ((m) = (fin6keys[fin6i]));\n {\n g(0, window, m, j[m]);\n };\n };\n };\n ;\n ((e.ue_viz && ue_viz()));\n ue.attach(\"load\", e.onLd);\n if (((e.ue_onbful == 3))) {\n ue.attach(\"beforeunload\", e.onUl);\n }\n ;\n ;\n e.ue._uep = function() {\n new JSBNG__Image().src = ((((e.ue_md ? e.ue_md : \"http://uedata.amazon.com/uedata/?tp=\")) + (+new JSBNG__Date)));\n };\n if (((e.ue_pr && ((((e.ue_pr == 2)) || ((e.ue_pr == 4))))))) {\n e.ue._uep();\n }\n ;\n ;\n c(\"ue\");\n };\n;\n ue.reset = function(k, j) {\n if (!k) {\n return;\n }\n ;\n ;\n ((e.ue_cel && e.ue_cel.reset()));\n e.ue.t0 = +new JSBNG__Date();\n e.ue.rid = k;\n e.ue.id = k;\n e.ue.fc_idx = {\n };\n e.ue.viz = [];\n };\n e.uei = f;\n e.ueh = g;\n e.ues = d;\n e.uet = c;\n e.uex = b;\n f();\n})(ue_csm, window);\nue_csm.ue_hoe = +new JSBNG__Date();\nue_csm.ue_hob = ((ue_csm.ue_hob || +new JSBNG__Date()));\n(function(b) {\n var a = b.ue;\n a.rid = b.ue_id;\n a.sid = b.ue_sid;\n a.mid = b.ue_mid;\n a.furl = b.ue_furl;\n a.sn = b.ue_sn;\n a.lr = [];\n a.log = function(e, d, c) {\n if (((a.lr.length == 500))) {\n return;\n }\n ;\n ;\n a.lr.push([\"l\",e,d,c,a.d(),a.rid,]);\n };\n a.d = function(c) {\n return ((+new JSBNG__Date - ((c ? 0 : a.t0))));\n };\n})(ue_csm);\nue_csm.ue_hoe = +new JSBNG__Date();");
657 f881945950_65.returns.push(o2);
663 geval("var imaget0;\n(function() {\n var i = new JSBNG__Image;\n i.JSBNG__onload = function() {\n imaget0 = new JSBNG__Date().getTime();\n };\n i.src = \"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\";\n})();");
665 geval("var amznJQ, jQueryPatchIPadOffset = false;\n(function() {\n function f(x) {\n return function() {\n x.push(arguments);\n };\n };\n;\n function ch(y) {\n return String.fromCharCode(y);\n };\n;\n var a = [], c = [], cs = [], d = [], l = [], o = [], s = [], p = [], t = [];\n amznJQ = {\n _timesliceJS: false,\n _a: a,\n _c: c,\n _cs: cs,\n _d: d,\n _l: l,\n _o: o,\n _s: s,\n _pl: p,\n addLogical: f(l),\n addStyle: f(s),\n addPL: f(p),\n available: f(a),\n chars: {\n EOL: ch(10),\n SQUOTE: ch(39),\n DQUOTE: ch(34),\n BACKSLASH: ch(92),\n YEN: ch(165)\n },\n completedStage: f(cs),\n declareAvailable: f(d),\n onCompletion: f(c),\n onReady: f(o),\n strings: {\n }\n };\n}());");
667 geval("function amz_js_PopWin(url, JSBNG__name, options) {\n var ContextWindow = window.open(url, JSBNG__name, options);\n ContextWindow.JSBNG__focus();\n return false;\n};\n;");
669 geval("function showElement(id) {\n var elm = JSBNG__document.getElementById(id);\n if (elm) {\n elm.style.visibility = \"visible\";\n if (((elm.getAttribute(\"JSBNG__name\") == \"heroQuickPromoDiv\"))) {\n elm.style.display = \"block\";\n }\n ;\n ;\n }\n;\n;\n};\n;\nfunction hideElement(id) {\n var elm = JSBNG__document.getElementById(id);\n if (elm) {\n elm.style.visibility = \"hidden\";\n if (((elm.getAttribute(\"JSBNG__name\") == \"heroQuickPromoDiv\"))) {\n elm.style.display = \"none\";\n }\n ;\n ;\n }\n;\n;\n};\n;\nfunction showHideElement(h_id, div_id) {\n var hiddenTag = JSBNG__document.getElementById(h_id);\n if (hiddenTag) {\n showElement(div_id);\n }\n else {\n hideElement(div_id);\n }\n;\n;\n};\n;\nwindow.isBowserFeatureCleanup = 1;\nvar touchDeviceDetected = false;\nvar CSMReqs = {\n af: {\n c: 2,\n e: \"amznJQ.AboveTheFold\",\n p: \"atf\"\n },\n cf: {\n c: 2,\n e: \"amznJQ.criticalFeature\",\n p: \"cf\"\n }\n};\nfunction setCSMReq(a) {\n a = a.toLowerCase();\n var b = CSMReqs[a];\n if (((b && ((--b.c == 0))))) {\n if (((typeof uet == \"function\"))) {\n uet(a);\n }\n ;\n ;\n ;\n if (b.e) {\n amznJQ.completedStage(b.e);\n }\n ;\n ;\n ;\n if (((typeof P != \"undefined\"))) {\n P.register(b.p);\n }\n ;\n ;\n ;\n }\n;\n;\n};\n;");
671 geval("var gbEnableTwisterJS = 0;\nvar isTwisterPage = 0;");
673 geval("if (window.amznJQ) {\n amznJQ.addLogical(\"csm-base\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/csm-base/csm-base-min-2486485847._V1_.js\",]);\n amznJQ.available(\"csm-base\", function() {\n \n });\n}\n;\n;");
675 geval("amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n amznJQ.available(\"navbarJS-jQuery\", function() {\n \n });\n amznJQ.available(\"finderFitsJS\", function() {\n \n });\n amznJQ.available(\"twister\", function() {\n \n });\n amznJQ.available(\"swfjs\", function() {\n \n });\n});");
677 geval("(function(d) {\n var e = function(d) {\n function b(f, c, b) {\n f[b] = function() {\n a._replay.push(c.concat({\n m: b,\n a: [].slice.call(arguments)\n }));\n };\n };\n ;\n var a = {\n };\n a._sourceName = d;\n a._replay = [];\n a.getNow = function(a, b) {\n return b;\n };\n a.when = function() {\n var a = [{\n m: \"when\",\n a: [].slice.call(arguments)\n },], c = {\n };\n b(c, a, \"run\");\n b(c, a, \"declare\");\n b(c, a, \"publish\");\n b(c, a, \"build\");\n return c;\n };\n b(a, [], \"declare\");\n b(a, [], \"build\");\n b(a, [], \"publish\");\n b(a, [], \"importEvent\");\n e._shims.push(a);\n return a;\n };\n e._shims = [];\n if (!d.$Nav) {\n d.$Nav = e(\"rcx-nav\");\n }\n;\n;\n if (!d.$Nav.make) {\n d.$Nav.make = e;\n }\n;\n;\n})(window);\nwindow.$Nav.when(\"exposeSBD.enable\", \"img.horz\", \"img.vert\", \"img.spin\", \"$popover\", \"btf.full\").run(function(d, e, j, b) {\n function a(a) {\n switch (typeof a) {\n case \"boolean\":\n h = a;\n i = !0;\n break;\n case \"function\":\n g = a;\n c++;\n break;\n default:\n c++;\n };\n ;\n ((((i && ((c > 2)))) && g(h)));\n };\n;\n function f(a, b) {\n var c = new JSBNG__Image;\n if (b) {\n c.JSBNG__onload = b;\n }\n ;\n ;\n c.src = a;\n return c;\n };\n;\n var c = 0, g, h, i = !1;\n f(e, ((d && a)));\n f(j, ((d && a)));\n window.$Nav.declare(\"protectExposeSBD\", a);\n window.$Nav.declare(\"preloadSpinner\", function() {\n f(b);\n });\n});\n((window.amznJQ && amznJQ.available(\"navbarJS-beacon\", function() {\n\n})));\nwindow._navbarSpriteUrl = \"http://g-ecx.images-amazon.com/images/G/01/gno/beacon/BeaconSprite-US-01._V397411194_.png\";\n$Nav.importEvent(\"navbarJS-beacon\");\n$Nav.importEvent(\"NavAuiJS\");\n$Nav.declare(\"exposeSBD.enable\", false);\n$Nav.declare(\"img.spin\", \"http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/snake._V192571611_.gif\");\n$Nav.when(\"$\").run(function($) {\n var ie6 = (($.browser.msie && ((parseInt($.browser.version) <= 6))));\n $Nav.declare(\"img.horz\", ((ie6 ? \"http://g-ecx.images-amazon.com/images/G/01/gno/beacon/nav-pop-8bit-h._V155961234_.png\" : \"http://g-ecx.images-amazon.com/images/G/01/gno/beacon/nav-pop-h-v2._V137157005_.png\")));\n $Nav.declare(\"img.vert\", ((ie6 ? \"http://g-ecx.images-amazon.com/images/G/01/gno/beacon/nav-pop-8bit-v._V155961234_.png\" : \"http://g-ecx.images-amazon.com/images/G/01/gno/beacon/nav-pop-v-v2._V137157005_.png\")));\n});");
681 f881945950_0.returns.push(o2);
683 o2.getTime = f881945950_397;
687 f881945950_397.returns.push(1373479178159);
689 geval("window.Navbar = function(options) {\n options = ((options || {\n }));\n this._loadedCount = 0;\n this._hasUedata = ((typeof uet == \"function\"));\n this._finishLoadQuota = ((options[\"finishLoadQuota\"] || 2));\n this._startedLoading = false;\n this._btfFlyoutContents = [];\n this._saFlyoutHorizOffset = -16;\n this._saMaskHorizOffset = -17;\n this._sbd_config = {\n major_delay: 300,\n minor_delay: 100,\n target_slop: 25\n };\n ((window.$Nav && $Nav.declare(\"config.sbd\", this._sbd_config)));\n this.addToBtfFlyoutContents = function(JSBNG__content, callback) {\n this._btfFlyoutContents.push({\n JSBNG__content: JSBNG__content,\n callback: callback\n });\n };\n this.getBtfFlyoutContents = function() {\n return this._btfFlyoutContents;\n };\n this.loading = function() {\n if (((!this._startedLoading && this._isReportingEvents()))) {\n uet(\"ns\");\n }\n ;\n ;\n this._startedLoading = true;\n };\n this.componentLoaded = function() {\n this._loadedCount++;\n if (((((this._startedLoading && this._isReportingEvents())) && ((this._loadedCount == this._finishLoadQuota))))) {\n uet(\"ne\");\n }\n ;\n ;\n };\n this._isReportingEvents = function() {\n return this._hasUedata;\n };\n this.browsepromos = {\n };\n this.issPromos = [];\n var le = {\n };\n this.logEv = function(d, o) {\n \n };\n ((window.$Nav && $Nav.declare(\"logEvent\", this.logEv)));\n};\nwindow._navbar = new Navbar({\n finishLoadQuota: 1\n});\n_navbar.loading();\n((window.$Nav && $Nav.declare(\"config.lightningDeals\", ((window._navbar._lightningDealsData || {\n})))));\n((window.$Nav && $Nav.declare(\"config.swmStyleData\", ((window._navbar._swmStyleData || {\n})))));\n_navbar._ajaxProximity = [141,7,60,150,];\n((window.$Nav && $Nav.declare(\"config.ajaxProximity\", window._navbar._ajaxProximity)));");
693 f881945950_0.returns.push(o2);
695 o2.getTime = f881945950_397;
697 f881945950_397.returns.push(1373479178221);
701 f881945950_65.returns.push(o4);
705 geval("_navbar.dynamicMenuUrl = \"/gp/navigation/ajax/dynamicmenu.html\";\n((window.$Nav && $Nav.declare(\"config.dynamicMenuUrl\", _navbar.dynamicMenuUrl)));\n_navbar.dismissNotificationUrl = \"/gp/navigation/ajax/dismissnotification.html\";\n((window.$Nav && $Nav.declare(\"config.dismissNotificationUrl\", _navbar.dismissNotificationUrl)));\n_navbar.dynamicMenus = true;\n((window.$Nav && $Nav.declare(\"config.enableDynamicMenus\", true)));\n_navbar.recordEvUrl = \"/gp/navigation/ajax/recordevent.html\";\n_navbar.recordEvInterval = 60000;\n_navbar.sid = \"176-5336870-9447366\";\n_navbar.rid = \"0M4YTA6K9C1VFV7TYXNC\";\n((window.$Nav && $Nav.declare(\"config.recordEvUrl\", _navbar.recordEvUrl)));\n((window.$Nav && $Nav.declare(\"config.recordEvInterval\", 60000)));\n((window.$Nav && $Nav.declare(\"config.sessionId\", _navbar.sid)));\n((window.$Nav && $Nav.declare(\"config.requestId\", _navbar.rid)));\n_navbar.readyOnATF = false;\n((window.$Nav && $Nav.declare(\"config.readyOnATF\", _navbar.readyOnATF)));\n_navbar.dynamicMenuArgs = {\n isPrime: 0,\n primeMenuWidth: 310\n};\n((window.$Nav && $Nav.declare(\"config.dynamicMenuArgs\", ((_navbar.dynamicMenuArgs || {\n})))));\n((window.$Nav && $Nav.declare(\"config.signOutText\", _navbar.signOutText)));\n((window.$Nav && $Nav.declare(\"config.yourAccountPrimeURL\", _navbar.yourAccountPrimer)));\nif (((window.amznJQ && amznJQ.available))) {\n amznJQ.available(\"jQuery\", function() {\n if (!jQuery.isArray) {\n jQuery.isArray = function(o) {\n return ((Object.prototype.toString.call(o) === \"[object Array]\"));\n };\n }\n ;\n ;\n });\n}\n;\n;\nif (((typeof uet == \"function\"))) {\n uet(\"bb\", \"iss-init-pc\", {\n wb: 1\n });\n}\n;\n;\nif (((!window.$SearchJS && window.$Nav))) {\n window.$SearchJS = $Nav.make();\n}\n;\n;\nif (window.$SearchJS) {\n var iss, issHost = \"completion.amazon.com/search/complete\", issMktid = \"1\", issSearchAliases = [\"aps\",\"stripbooks\",\"popular\",\"apparel\",\"electronics\",\"sporting\",\"garden\",\"videogames\",\"toys-and-games\",\"jewelry\",\"digital-text\",\"digital-music\",\"watches\",\"grocery\",\"hpc\",\"instant-video\",\"baby-products\",\"office-products\",\"software\",\"magazines\",\"tools\",\"automotive\",\"misc\",\"industrial\",\"mi\",\"pet-supplies\",\"digital-music-track\",\"digital-music-album\",\"mobile\",\"mobile-apps\",\"movies-tv\",\"music-artist\",\"music-album\",\"music-song\",\"stripbooks-spanish\",\"electronics-accessories\",\"photo\",\"audio-video\",\"computers\",\"furniture\",\"kitchen\",\"audiobooks\",\"beauty\",\"shoes\",\"arts-crafts\",\"appliances\",\"gift-cards\",\"pets\",\"outdoor\",\"lawngarden\",\"collectibles\",\"financial\",\"wine\",], updateISSCompletion = function() {\n iss.updateAutoCompletion();\n };\n $SearchJS.importEvent(\"search-js-autocomplete-lib\");\n $SearchJS.when(\"search-js-autocomplete-lib\").run(function() {\n $SearchJS.importEvent(\"search-csl\");\n $SearchJS.when(\"search-csl\").run(function(searchCSL) {\n if (!searchCSL) {\n searchCSL = jQuery.searchCSL;\n }\n ;\n ;\n searchCSL.init(\"Detail\", \"0M4YTA6K9C1VFV7TYXNC\");\n var ctw = [function() {\n var searchSelect = jQuery(\"select.searchSelect\"), nodeRegEx = new RegExp(/node=\\d+/i);\n return function() {\n var currDropdownSel = searchSelect.children();\n return ((((currDropdownSel.attr(\"data-root-alias\") || nodeRegEx.test(currDropdownSel.attr(\"value\")))) ? \"16458\" : undefined));\n };\n }(),];\n iss = new AutoComplete({\n src: issHost,\n mkt: issMktid,\n aliases: issSearchAliases,\n fb: 1,\n dd: \"select.searchSelect\",\n dupElim: 0,\n deptText: \"in {department}\",\n sugText: \"Search suggestions\",\n sc: 1,\n ime: 0,\n imeEnh: 0,\n imeSpacing: 0,\n isNavInline: 1,\n iac: 0,\n scs: 0,\n np: 4,\n doCTW: function(e) {\n for (var i = 0; ((i < ctw.length)); i++) {\n searchCSL.addWlt(((ctw[i].call ? ctw[i](e) : ctw[i])));\n };\n ;\n }\n });\n $SearchJS.publish(\"search-js-autocomplete\", iss);\n if (((((typeof uet == \"function\")) && ((typeof uex == \"function\"))))) {\n uet(\"be\", \"iss-init-pc\", {\n wb: 1\n });\n uex(\"ld\", \"iss-init-pc\", {\n wb: 1\n });\n }\n ;\n ;\n });\n });\n}\n;\n;\n((window.amznJQ && amznJQ.declareAvailable(\"navbarInline\")));\n((window.$Nav && $Nav.declare(\"nav.inline\")));\n((window.amznJQ && amznJQ.available(\"jQuery\", function() {\n amznJQ.available(\"navbarJS-beacon\", function() {\n \n });\n})));\n_navbar._endSpriteImage = new JSBNG__Image();\n_navbar._endSpriteImage.JSBNG__onload = function() {\n _navbar.componentLoaded();\n};\n_navbar._endSpriteImage.src = window._navbarSpriteUrl;\n((window.$Nav && $Nav.declare(\"config.autoFocus\", false)));\n((window.$Nav && $Nav.declare(\"config.responsiveGW\", !!window._navbar.responsivegw)));\n((window.$Nav && $Nav.when(\"$\", \"flyout.JSBNG__content\").run(function(jQuery) {\n jQuery(\"#nav_amabotandroid\").parent().html(\"Get CSG-Crazy Ball\\ufffdfree today\");\n})));\n_navbar.browsepromos[\"android\"] = {\n destination: \"/gp/product/ref=nav_sap_mas_13_07_10?ie=UTF8&ASIN=B00AVFO41K\",\n productTitle2: \"(List Price: $0.99)\",\n button: \"Learn more\",\n price: \"FREE\",\n productTitle: \"CSG-Crazy Ball - Power Match5\",\n headline: \"Free App of the Day\",\n image: \"http://ecx.images-amazon.com/images/I/71ws-s180zL._SS100_.png\"\n};\n_navbar.browsepromos[\"audible\"] = {\n width: 479,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"-19\",\n height: 470,\n image: \"http://g-ecx.images-amazon.com/images/G/01/Audible/en_US/images/creative/amazon/beacon/ADBLECRE_2309_Beacon_Headphones_mystery_thehit._V382182717_.png\"\n};\n_navbar.browsepromos[\"automotive-industrial\"] = {\n width: 479,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"0\",\n height: 472,\n image: \"http://g-ecx.images-amazon.com/images/G/01/BISS/stores/homepage/flyouts/julyGNO._V381261427_.png\"\n};\n_navbar.browsepromos[\"books\"] = {\n width: 495,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"0\",\n height: 472,\n image: \"http://g-ecx.images-amazon.com/images/G/01/img13/books/flyout/books_botysf_flyout_kids-2._V380040471_.png\"\n};\n_navbar.browsepromos[\"clothing-shoes-jewelry\"] = {\n width: 460,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"-20\",\n height: 472,\n image: \"http://g-ecx.images-amazon.com/images/G/01/AMAZON_FASHION/2013/GATEWAY/BTS1/FLYOUTS/FO_watch._V381438784_.png\"\n};\n_navbar.browsepromos[\"cloud-drive\"] = {\n width: 480,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"0\",\n height: 472,\n image: \"http://g-ecx.images-amazon.com/images/G/01/digital/adrive/images/gno/iOs_GNO1._V385462964_.jpg\"\n};\n_navbar.browsepromos[\"digital-games-software\"] = {\n width: 518,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"-19\",\n height: 472,\n image: \"http://g-ecx.images-amazon.com/images/G/01/img13/digital-video-games/flyout/0610-dvg-civ-flyout-b._V382016459_.png\"\n};\n_navbar.browsepromos[\"electronics-computers\"] = {\n width: 498,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"0\",\n height: 228,\n image: \"http://g-ecx.images-amazon.com/images/G/01/img13/camera-photo/flyout/7-1_-confidential-canon_GNO._V379604226_.png\"\n};\n_navbar.browsepromos[\"grocery-health-beauty\"] = {\n width: 496,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"0\",\n height: 471,\n image: \"http://g-ecx.images-amazon.com/images/G/01/img13/wine/flyout/0702_wine_international_flyout.v2._V379935612_.png\"\n};\n_navbar.browsepromos[\"home-garden-tools\"] = {\n width: 492,\n promoType: \"wide\",\n vertOffset: 0,\n horizOffset: 0,\n height: 287,\n image: \"http://g-ecx.images-amazon.com/images/G/01/img13/home/flyout/7-9_furniture-photo-shoot_flyout._V379916182_.png\"\n};\n_navbar.browsepromos[\"instant-video\"] = {\n width: 500,\n promoType: \"wide\",\n vertOffset: \"-10\",\n horizOffset: \"-20\",\n height: 495,\n image: \"http://g-ecx.images-amazon.com/images/G/01/digital/video/merch/UnderTheDome/AIV_GNO-Flyout_UTDPostLaunchV2._V381606810_.png\"\n};\n_navbar.browsepromos[\"kindle\"] = {\n width: 440,\n promoType: \"wide\",\n vertOffset: \"-35\",\n horizOffset: \"28\",\n height: 151,\n image: \"http://g-ecx.images-amazon.com/images/G/01/gno/beacon/merch/browse/gno-family-440x151._V389693769_.png\"\n};\n_navbar.browsepromos[\"movies-music-games\"] = {\n width: 524,\n promoType: \"wide\",\n vertOffset: \"-25\",\n horizOffset: \"-21\",\n height: 493,\n image: \"http://g-ecx.images-amazon.com/images/G/01/img13/movies-tv/flyout/0628b-bsf-movie-n-music-flyout._V380036698_.png\"\n};\n_navbar.browsepromos[\"mp3\"] = {\n width: 520,\n promoType: \"wide\",\n vertOffset: \"-20\",\n horizOffset: \"-21\",\n height: 492,\n image: \"http://g-ecx.images-amazon.com/images/G/01/digital/music/mp3/flyout/JayZ_Flyout_1._V380151426_.png\"\n};\n_navbar.browsepromos[\"sports-outdoors\"] = {\n width: 500,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"-20\",\n height: 487,\n image: \"http://g-ecx.images-amazon.com/images/G/01/img13/sports-outdoors/flyout/sgfitness._V382533691_.png\"\n};\n_navbar.browsepromos[\"toys-kids-baby\"] = {\n width: 479,\n promoType: \"wide\",\n vertOffset: \"0\",\n horizOffset: \"0\",\n height: 395,\n image: \"http://g-ecx.images-amazon.com/images/G/01/img13/babyregistry/2013sweepstakes/flyout/baby_2013sweeps_flyout._V381448744_.jpg\"\n};\n((window.$Nav && $Nav.declare(\"config.browsePromos\", window._navbar.browsepromos)));\n((window.amznJQ && amznJQ.declareAvailable(\"navbarPromosContent\")));");
709 f881945950_65.returns.push(o5);
712 geval("(function() {\n var availableWidth = ((((window.JSBNG__innerWidth || JSBNG__document.body.offsetWidth)) - 1));\n;\n var widths = [1280,];\n var imageHashMain = [\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",];\n var imageObj = new JSBNG__Image();\n var sz = 0;\n for (; ((((sz < widths.length)) && ((availableWidth >= widths[sz])))); sz++) {\n ;\n };\n;\n imageObj.src = imageHashMain[sz];\n})();");
714 geval("function eba5e792808f98ffad2199c25c3f252962a7697cd(JSBNG__event) {\n;\n if (((typeof measureATFDiff == \"function\"))) {\n measureATFDiff(new JSBNG__Date().getTime(), 0);\n }\n;\n;\n;\n if (((typeof setCSMReq == \"function\"))) {\n setCSMReq(\"af\");\n setCSMReq(\"cf\");\n }\n else if (((typeof uet == \"function\"))) {\n uet(\"af\");\n uet(\"cf\");\n amznJQ.completedStage(\"amznJQ.AboveTheFold\");\n }\n \n;\n;\n};\n;");
716 geval("function e5209abad2ea9a8e8a3d19b988fd4501696abff96(JSBNG__event) {\n return false;\n};\n;");
718 f881945950_406 = function() { return f881945950_406.returns[f881945950_406.inst++]; };
719 f881945950_406.returns = [];
720 f881945950_406.inst = 0;
722 o0.getElementById = f881945950_406;
726 f881945950_406.returns.push(o6);
730 f881945950_406.returns.push(o7);
732 o7.className = "size0 bottom-thumbs main-image-widget-for-dp standard";
742 geval("var colorImages = {\n initial: [{\n large: \"http://ecx.images-amazon.com/images/I/51gdVAEfPUL.jpg\",\n landing: [\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",],\n hiRes: \"http://ecx.images-amazon.com/images/I/814biaGJWaL._SL1500_.jpg\",\n thumb: \"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._SS30_.jpg\",\n main: [\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",]\n },]\n};\n(function(doc) {\n var mi = doc.getElementById(\"main-image\");\n var w = ((window.JSBNG__innerWidth || doc.body.offsetWidth));\n w--;\n var widths = [1280,];\n var sz = 0;\n for (; ((((sz < 1)) && ((w >= widths[sz])))); sz++) {\n ;\n };\n;\n if (((sz || 1))) {\n var miw = doc.getElementById(\"main-image-widget\");\n miw.className = miw.className.replace(/size[0-9]+/, ((\"size\" + sz)));\n if (((sz && 1))) {\n mi.width = 300;\n mi.height = 300;\n }\n else if (((!sz && 1))) {\n mi.width = 300;\n mi.height = 300;\n }\n \n ;\n ;\n amznJQ.onCompletion(\"amznJQ.AboveTheFold\", function() {\n var src = colorImages.initial[0].main[sz];\n var img = new JSBNG__Image();\n img.JSBNG__onload = function() {\n var clone = mi.cloneNode(true);\n clone.src = src;\n clone.removeAttribute(\"width\");\n clone.removeAttribute(\"height\");\n clone.removeAttribute(\"JSBNG__onload\");\n mi.parentNode.replaceChild(clone, mi);\n mi = clone;\n amznJQ.declareAvailable(\"ImageBlockATF\");\n };\n img.src = src;\n });\n }\n else {\n amznJQ.declareAvailable(\"ImageBlockATF\");\n }\n;\n;\n mi.style.display = \"inline\";\n})(JSBNG__document);");
744 geval("function ea61dd9757a317a235aa0212a7a482613abe637a5(JSBNG__event) {\n if (((typeof (SitbReader) != \"undefined\"))) {\n SitbReader.LightboxActions.openReader(\"sib_dp_ptu\");\n return false;\n }\n;\n;\n};\n;");
746 geval("var legacyOnSelectedQuantityChange = function() {\n if (((jQuery(\"#pricePlusShippingQty\").length > 0))) {\n jQuery.ajax({\n url: \"/gp/product/du/quantity-sip-update.html\",\n data: {\n qt: jQuery(\"#quantityDropdownDiv select\").val(),\n a: jQuery(\"#ASIN\").val(),\n me: jQuery(\"#merchantID\").val()\n },\n dataType: \"html\",\n success: function(sipHtml) {\n jQuery(\"#pricePlusShippingQty\").html(sipHtml);\n }\n });\n }\n;\n;\n};\namznJQ.onReady(\"jQuery\", function() {\n jQuery(\"#quantityDropdownDiv select\").change(legacyOnSelectedQuantityChange);\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n amznJQ.available(\"quantityDropDownJS\", function() {\n var qdd = new jQuery.fn.quantityDropDown();\n qdd.setPopoverContent(\"\\u003Cstrong\\u003EWe're sorry. This item is limited to %d per customer.\\u003C/strong\\u003E\", \"\\u003Cbr /\\u003E\\u003Cbr /\\u003EWe strive to provide customers with great prices, and sometimes that means we limit quantity to ensure that the majority of customers have an opportunity to order products that have very low prices or a limited supply.\\u003Cbr /\\u003E\\u003Cbr /\\u003EWe may also adjust quantity in checkout if you have recently purchased this item.\");\n });\n });\n});");
748 geval("amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n amznJQ.available(\"bbopCheckBoxJS\", function() {\n var bbopJS = new jQuery.fn.bbopCheckBox();\n bbopJS.initialize(1, 0, \"To get FREE Two-Day Shipping on this item, proceed to checkout using "Add to Cart"\");\n });\n});");
750 geval("var gbSecure1Click = true;\nif (((((typeof (gbSecure1Click) != \"undefined\")) && gbSecure1Click))) {\n amznJQ.onReady(\"jQuery\", function() {\n jQuery(\"#oneClickBuyButton\").click(function() {\n var hbbAction = jQuery(\"#handleBuy\").attr(\"action\").replace(\"http:\", \"https:\");\n jQuery(\"#handleBuy\").attr(\"action\", hbbAction);\n return true;\n });\n });\n}\n;\n;");
752 geval("if (window.gbvar) {\n amznJQ.onReady(\"jQuery\", function() {\n jQuery(\"#oneClickSignInLinkID\").attr(\"href\", window.gbvar);\n });\n}\n else {\n window.gbvar = \"http://jsbngssl.www.amazon.com/gp/product/utility/edit-one-click-pref.html?ie=UTF8&query=selectObb%3Dnew&returnPath=%2Fgp%2Fproduct%2F0596517742\";\n}\n;\n;");
756 f881945950_0.returns.push(o2);
758 o2.getTime = f881945950_397;
762 f881945950_397.returns.push(1373479178221);
766 f881945950_65.returns.push(o4);
772 geval("if (window.gbvar) {\n amznJQ.onReady(\"jQuery\", function() {\n jQuery(\"#oneClickSignInLinkID\").attr(\"href\", window.gbvar);\n });\n}\n else {\n window.gbvar = \"http://jsbngssl.www.amazon.com/gp/product/utility/edit-one-click-pref.html?ie=UTF8&query=selectObb%3Dnew&returnPath=%2Fgp%2Fproduct%2F0596517742\";\n}\n;\n;");
776 f881945950_65.returns.push(o5);
781 geval("(function() {\n var availableWidth = ((((window.JSBNG__innerWidth || JSBNG__document.body.offsetWidth)) - 1));\n;\n var widths = [1280,];\n var imageHashMain = [\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",];\n var imageObj = new JSBNG__Image();\n var sz = 0;\n for (; ((((sz < widths.length)) && ((availableWidth >= widths[sz])))); sz++) {\n ;\n };\n;\n imageObj.src = imageHashMain[sz];\n})();");
783 geval("function eba5e792808f98ffad2199c25c3f252962a7697cd(JSBNG__event) {\n;\n if (((typeof measureATFDiff == \"function\"))) {\n measureATFDiff(new JSBNG__Date().getTime(), 0);\n }\n;\n;\n;\n if (((typeof setCSMReq == \"function\"))) {\n setCSMReq(\"af\");\n setCSMReq(\"cf\");\n }\n else if (((typeof uet == \"function\"))) {\n uet(\"af\");\n uet(\"cf\");\n amznJQ.completedStage(\"amznJQ.AboveTheFold\");\n }\n \n;\n;\n};\n;");
785 geval("function e5209abad2ea9a8e8a3d19b988fd4501696abff96(JSBNG__event) {\n return false;\n};\n;");
787 f881945950_406 = function() { return f881945950_406.returns[f881945950_406.inst++]; };
788 f881945950_406.returns = [];
789 f881945950_406.inst = 0;
793 f881945950_406.returns.push(o6);
797 f881945950_406.returns.push(o7);
799 o7.className = "size0 bottom-thumbs main-image-widget-for-dp standard";
815 geval("var colorImages = {\n initial: [{\n large: \"http://ecx.images-amazon.com/images/I/51gdVAEfPUL.jpg\",\n landing: [\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",],\n hiRes: \"http://ecx.images-amazon.com/images/I/814biaGJWaL._SL1500_.jpg\",\n thumb: \"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._SS30_.jpg\",\n main: [\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",\"http://ecx.images-amazon.com/images/I/51gdVAEfPUL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg\",]\n },]\n};\n(function(doc) {\n var mi = doc.getElementById(\"main-image\");\n var w = ((window.JSBNG__innerWidth || doc.body.offsetWidth));\n w--;\n var widths = [1280,];\n var sz = 0;\n for (; ((((sz < 1)) && ((w >= widths[sz])))); sz++) {\n ;\n };\n;\n if (((sz || 1))) {\n var miw = doc.getElementById(\"main-image-widget\");\n miw.className = miw.className.replace(/size[0-9]+/, ((\"size\" + sz)));\n if (((sz && 1))) {\n mi.width = 300;\n mi.height = 300;\n }\n else if (((!sz && 1))) {\n mi.width = 300;\n mi.height = 300;\n }\n \n ;\n ;\n amznJQ.onCompletion(\"amznJQ.AboveTheFold\", function() {\n var src = colorImages.initial[0].main[sz];\n var img = new JSBNG__Image();\n img.JSBNG__onload = function() {\n var clone = mi.cloneNode(true);\n clone.src = src;\n clone.removeAttribute(\"width\");\n clone.removeAttribute(\"height\");\n clone.removeAttribute(\"JSBNG__onload\");\n mi.parentNode.replaceChild(clone, mi);\n mi = clone;\n amznJQ.declareAvailable(\"ImageBlockATF\");\n };\n img.src = src;\n });\n }\n else {\n amznJQ.declareAvailable(\"ImageBlockATF\");\n }\n;\n;\n mi.style.display = \"inline\";\n})(JSBNG__document);");
817 geval("function ea61dd9757a317a235aa0212a7a482613abe637a5(JSBNG__event) {\n if (((typeof (SitbReader) != \"undefined\"))) {\n SitbReader.LightboxActions.openReader(\"sib_dp_ptu\");\n return false;\n }\n;\n;\n};\n;");
819 geval("var legacyOnSelectedQuantityChange = function() {\n if (((jQuery(\"#pricePlusShippingQty\").length > 0))) {\n jQuery.ajax({\n url: \"/gp/product/du/quantity-sip-update.html\",\n data: {\n qt: jQuery(\"#quantityDropdownDiv select\").val(),\n a: jQuery(\"#ASIN\").val(),\n me: jQuery(\"#merchantID\").val()\n },\n dataType: \"html\",\n success: function(sipHtml) {\n jQuery(\"#pricePlusShippingQty\").html(sipHtml);\n }\n });\n }\n;\n;\n};\namznJQ.onReady(\"jQuery\", function() {\n jQuery(\"#quantityDropdownDiv select\").change(legacyOnSelectedQuantityChange);\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n amznJQ.available(\"quantityDropDownJS\", function() {\n var qdd = new jQuery.fn.quantityDropDown();\n qdd.setPopoverContent(\"\\u003Cstrong\\u003EWe're sorry. This item is limited to %d per customer.\\u003C/strong\\u003E\", \"\\u003Cbr /\\u003E\\u003Cbr /\\u003EWe strive to provide customers with great prices, and sometimes that means we limit quantity to ensure that the majority of customers have an opportunity to order products that have very low prices or a limited supply.\\u003Cbr /\\u003E\\u003Cbr /\\u003EWe may also adjust quantity in checkout if you have recently purchased this item.\");\n });\n });\n});");
821 geval("amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n amznJQ.available(\"bbopCheckBoxJS\", function() {\n var bbopJS = new jQuery.fn.bbopCheckBox();\n bbopJS.initialize(1, 0, \"To get FREE Two-Day Shipping on this item, proceed to checkout using "Add to Cart"\");\n });\n});");
823 geval("var gbSecure1Click = true;\nif (((((typeof (gbSecure1Click) != \"undefined\")) && gbSecure1Click))) {\n amznJQ.onReady(\"jQuery\", function() {\n jQuery(\"#oneClickBuyButton\").click(function() {\n var hbbAction = jQuery(\"#handleBuy\").attr(\"action\").replace(\"http:\", \"https:\");\n jQuery(\"#handleBuy\").attr(\"action\", hbbAction);\n return true;\n });\n });\n}\n;\n;");
825 geval("if (window.gbvar) {\n amznJQ.onReady(\"jQuery\", function() {\n jQuery(\"#oneClickSignInLinkID\").attr(\"href\", window.gbvar);\n });\n}\n else {\n window.gbvar = \"http://jsbngssl.www.amazon.com/gp/product/utility/edit-one-click-pref.html?ie=UTF8&query=selectObb%3Dnew&returnPath=%2Fgp%2Fproduct%2F0596517742\";\n}\n;\n;");
831 geval("if (window.gbvar) {\n amznJQ.onReady(\"jQuery\", function() {\n jQuery(\"#oneClickSignInLinkID\").attr(\"href\", window.gbvar);\n });\n}\n else {\n window.gbvar = \"http://jsbngssl.www.amazon.com/gp/product/utility/edit-one-click-pref.html?ie=UTF8&query=selectObb%3Dnew&returnPath=%2Fgp%2Fproduct%2F0596517742\";\n}\n;\n;");
833 geval("amznJQ.onReady(\"jQuery\", function() {\n if (((((((typeof dpLdWidget !== \"undefined\")) && ((typeof dpLdWidget.deal !== \"undefined\")))) && ((typeof dpLdWidget.deal.asins !== \"undefined\"))))) {\n var dealPriceText;\n if (((((((typeof Deal !== \"undefined\")) && ((typeof Deal.Price !== \"undefined\")))) && ((typeof dpLdWidget.deal.asins[0] !== \"undefined\"))))) {\n var dp = dpLdWidget.deal.asins[0].dealPrice;\n if (((dp.price > 396))) {\n dealPriceText = Deal.Price.format(dp);\n jQuery(\"#rbb_bb_trigger .bb_price, #rentalPriceBlockGrid .buyNewOffers .rentPrice\").html(dealPriceText);\n }\n ;\n ;\n }\n ;\n ;\n }\n;\n;\n jQuery(\"#rbbContainer .rbb_section .rbb_header\").click(function(e) {\n var target = jQuery(e.target);\n if (!target.hasClass(\"rbb_header\")) {\n target.parents(\".rbbHeaderLink\").attr(\"href\", \"javascript:void(0);\");\n }\n ;\n ;\n var t = jQuery(this);\n var header = ((t.hasClass(\"rbb_header\") ? t : t.parents(\".rbb_header\")));\n if (header.parents(\".rbb_section\").hasClass(\"selected\")) {\n return false;\n }\n ;\n ;\n jQuery(\"#radiobuyboxDivId .bb_radio\").attr(\"checked\", false);\n header.JSBNG__find(\".bb_radio\").attr(\"checked\", \"checked\");\n header.parents(\".rbb_section\").removeClass(\"unselected\").addClass(\"selected\");\n jQuery(\"#radiobuyboxDivId .abbListInput\").attr(\"checked\", false);\n var bbClicked = jQuery(this).attr(\"id\");\n var slideMeDown, slideMeUp;\n jQuery(\"#radiobuyboxDivId .rbb_section\").each(function(i, bb) {\n if (((jQuery(bb).JSBNG__find(\".rbb_header\")[0].id == bbClicked))) {\n slideMeDown = jQuery(bb);\n }\n else if (jQuery(bb).hasClass(\"selected\")) {\n slideMeUp = jQuery(bb);\n }\n \n ;\n ;\n });\n slideMeUp.JSBNG__find(\".rbb_content\").slideUp(500, function() {\n slideMeUp.removeClass(\"selected\").addClass(\"unselected\");\n });\n slideMeDown.JSBNG__find(\".rbb_content\").slideDown(500);\n JSBNG__location.hash = ((\"#selectedObb=\" + header.attr(\"id\")));\n return true;\n });\n var locationHash = JSBNG__location.hash;\n if (((locationHash.length != 0))) {\n var selectObb = locationHash.substring(1).split(\"=\")[1];\n if (((typeof (selectObb) != \"undefined\"))) {\n var target = jQuery(((\"#\" + selectObb)));\n if (((target.length != 0))) {\n target.trigger(\"click\");\n }\n ;\n ;\n }\n ;\n ;\n }\n;\n;\n});");
835 geval("function e0ad247b2845d5a62f8d680c69024109c41a3aba5(JSBNG__event) {\n return false;\n};\n;");
837 geval("if (((typeof window.amznJQ != \"undefined\"))) {\n amznJQ.onReady(\"popover\", function() {\n jQuery(\"#tradeinBuyboxLearnMore\").amazonPopoverTrigger({\n closeText: \"Close\",\n width: 580,\n group: \"tradein\",\n destination: \"/gp/tradein/popovers/ajax-popover.html?ie=UTF8&name=howToTradeIn\",\n title: \"How to Trade In\"\n });\n });\n}\n;\n;");
839 geval("function ef6ad9c87b00e618dc7a9b5e5140bbc8ba2edd739(JSBNG__event) {\n window.open(this.href, \"_blank\", \"location=yes,width=700,height=400\");\n return false;\n};\n;");
841 geval("function ed3bd13821903ecb97b20e31910662670d650c5cb(JSBNG__event) {\n window.open(this.href, \"_blank\", \"location=yes,width=700,height=400\");\n return false;\n};\n;");
843 geval("function ea6dbd42abc1e9b3dbebd197268ce92a9b0e0b4ad(JSBNG__event) {\n window.open(this.href, \"_blank\", \"location=yes,width=700,height=570\");\n return false;\n};\n;");
845 geval("if (((typeof window.amznJQ != \"undefined\"))) {\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n amznJQ.available(\"share-with-friends-js-new\", function() {\n var popoverParams = {\n url: \"/gp/pdp/taf/dpPop.html/ref=cm_sw_p_view_dp_geA3rb04T691F?ie=UTF8&contentID=0596517742&contentName=item&contentType=asin&contentURI=%2Fdp%2F0596517742&emailCaptionStrID=&emailCustomMsgStrID=&emailDescStrID=&emailSubjectStrID=&emailTemplate=%2Fgp%2Fpdp%2Fcommon%2Femail%2Fshare-product&forceSprites=1&id=0596517742&imageURL=&isDynamicSWF=0&isEmail=0&learnMoreButton=&merchantID=&parentASIN=0596517742&placementID=dp_geA3rb04T691F&ra=taf&referer=http%253A%252F%252Fwww.amazon.com%252Fgp%252Fproduct%252F0596517742%252Fref%253D&relatedAccounts=amazondeals%2Camazonmp3&suppressPurchaseReqLogin=&titleText=&tt=sh&viaAccount=amazon\",\n title: \"Share this item via Email\",\n closeText: \"Close\",\n isCompact: false\n };\n amz_taf_triggers.swftext = popoverParams;\n amz_taf_generatePopover(\"swftext\", false);\n });\n });\n}\n;\n;");
847 geval("amznJQ.onReady(\"bylinePopover\", function() {\n\n});");
849 geval("function acrPopoverHover(e, h) {\n if (h) {\n window.acrAsinHover = e;\n }\n else {\n if (((window.acrAsinHover == e))) {\n window.acrAsinHover = null;\n }\n ;\n }\n;\n;\n};\n;\namznJQ.onReady(\"popover\", function() {\n (function($) {\n if ($.fn.acrPopover) {\n return;\n }\n ;\n ;\n var popoverConfig = {\n showOnHover: true,\n showCloseButton: true,\n width: null,\n JSBNG__location: \"bottom\",\n locationAlign: \"left\",\n locationOffset: [-20,0,],\n paddingLeft: 15,\n paddingBottom: 5,\n paddingRight: 15,\n group: \"reviewsPopover\",\n clone: false,\n hoverHideDelay: 300\n };\n $.fn.acrPopover = function() {\n return this.each(function() {\n var $this = $(this);\n if (!$this.data(\"init\")) {\n $this.data(\"init\", 1);\n var getargs = $this.attr(\"getargs\");\n var ajaxURL = ((((((((((((((\"/gp/customer-reviews/common/du/displayHistoPopAjax.html?\" + \"&ASIN=\")) + $this.attr(\"JSBNG__name\"))) + \"&link=1\")) + \"&seeall=1\")) + \"&ref=\")) + $this.attr(\"ref\"))) + ((((typeof getargs != \"undefined\")) ? ((\"&getargs=\" + getargs)) : \"\"))));\n var myConfig = $.extend(true, {\n destination: ajaxURL\n }, popoverConfig);\n $this.amazonPopoverTrigger(myConfig);\n var w = window.acrAsinHover;\n if (((w && (($(w).parents(\".asinReviewsSummary\").get(0) == this))))) {\n $this.trigger(\"mouseover.amzPopover\");\n window.acrAsinHover = null;\n }\n ;\n ;\n }\n ;\n ;\n });\n };\n window.reviewHistPopoverConfig = popoverConfig;\n var jqInit = window.jQueryInitHistoPopovers = function(asin) {\n $(((((\".acr-popover[name=\" + asin)) + \"]\"))).acrPopover();\n };\n window.doInit_average_customer_reviews = jqInit;\n window.onAjaxUpdate_average_customer_reviews = jqInit;\n window.onCacheUpdate_average_customer_reviews = jqInit;\n window.onCacheUpdateReselect_average_customer_reviews = jqInit;\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n JSBNG__setTimeout(function() {\n amznJQ.declareAvailable(\"acrPopover\");\n }, 10);\n });\n })(jQuery);\n});\namznJQ.onReady(\"acrPopover\", function() {\n jQuery(\".acr-popover,#searchTemplate .asinReviewsSummary\").each(function() {\n jQuery(this).acrPopover();\n });\n});");
851 geval("function ed2276bf20246f30c68990f23f81d89eadb38c166(JSBNG__event) {\n return acrPopoverHover(this, 1);\n};\n;");
853 geval("function ecf07c0edda27bc80d526213d7c6929ffbddc8bbc(JSBNG__event) {\n return acrPopoverHover(this, 0);\n};\n;");
855 geval("function efaf91b69248e7e79f131f7036cba56d101e7bfb6(JSBNG__event) {\n return acrPopoverHover(this, 1);\n};\n;");
857 geval("function efb799c660c9baca416793b32167d426e04dee131(JSBNG__event) {\n return acrPopoverHover(this, 0);\n};\n;");
859 geval("function e454b94055c2707a9784ef2ca3e2fe7a272f31974(JSBNG__event) {\n return amz_js_PopWin(\"/gp/help/customer/display.html/ref=mk_sss_dp_1?ie=UTF8&nodeId=527692&pop-up=1\", \"AmazonHelp\", \"width=550,height=550,resizable=1,scrollbars=1,toolbar=0,status=0\");\n};\n;");
861 geval("amznJQ.declareAvailable(\"gbPriceBlockFields\");");
865 f881945950_0.returns.push(o2);
867 f881945950_413 = function() { return f881945950_413.returns[f881945950_413.inst++]; };
868 f881945950_413.returns = [];
869 f881945950_413.inst = 0;
871 o2.getHours = f881945950_413;
873 f881945950_413.returns.push(13);
875 f881945950_414 = function() { return f881945950_414.returns[f881945950_414.inst++]; };
876 f881945950_414.returns = [];
877 f881945950_414.inst = 0;
879 o2.getMinutes = f881945950_414;
881 f881945950_414.returns.push(59);
883 f881945950_415 = function() { return f881945950_415.returns[f881945950_415.inst++]; };
884 f881945950_415.returns = [];
885 f881945950_415.inst = 0;
887 o2.getSeconds = f881945950_415;
889 f881945950_415.returns.push(38);
893 f881945950_0.returns.push(o4);
895 o4.getHours = f881945950_413;
897 f881945950_413.returns.push(13);
899 o4.getMinutes = f881945950_414;
901 f881945950_414.returns.push(59);
903 o4.getSeconds = f881945950_415;
905 f881945950_415.returns.push(38);
911 f881945950_406.returns.push(null);
913 f881945950_406.returns.push(null);
915 f881945950_16.returns.push(2);
917 geval("try {\n var ftCountdownElementIDs = new Array();\n var ftEntireMessageElementIDs = new Array();\n var FT_CurrentDisplayMin = new Array();\n var clientServerTimeDrift;\n var firstTimeUpdate = false;\n function ftRegisterCountdownElementID(elementID) {\n ftCountdownElementIDs[ftCountdownElementIDs.length] = elementID;\n };\n;\n function ftRegisterEntireMessageElementID(elementID) {\n ftEntireMessageElementIDs[ftEntireMessageElementIDs.length] = elementID;\n };\n;\n function getTimeRemainingString(hours, minutes) {\n var hourString = ((((hours == 1)) ? \"hr\" : \"hrs\"));\n var minuteString = ((((minutes == 1)) ? \"min\" : \"mins\"));\n if (((hours == 0))) {\n return ((((minutes + \" \")) + minuteString));\n }\n ;\n ;\n if (((minutes == 0))) {\n return ((((hours + \" \")) + hourString));\n }\n ;\n ;\n return ((((((((((((hours + \" \")) + hourString)) + \" \")) + minutes)) + \" \")) + minuteString));\n return ((((((((((((hours + \" \")) + hourString)) + \" \")) + minutes)) + \" \")) + minuteString));\n };\n;\n function FT_displayCountdown(forceUpdate) {\n if (((((!JSBNG__document.layers && !JSBNG__document.all)) && !JSBNG__document.getElementById))) {\n return;\n }\n ;\n ;\n FT_showHtmlElement(\"ftShipString\", true, \"inline\");\n var FT_remainSeconds = ((FT_givenSeconds - FT_actualSeconds));\n if (((FT_remainSeconds < 1))) {\n FT_showEntireMessageElement(false);\n }\n ;\n ;\n var FT_secondsPerDay = ((((24 * 60)) * 60));\n var FT_daysLong = ((FT_remainSeconds / FT_secondsPerDay));\n var FT_days = Math.floor(FT_daysLong);\n var FT_hoursLong = ((((FT_daysLong - FT_days)) * 24));\n var FT_hours = Math.floor(FT_hoursLong);\n var FT_minsLong = ((((FT_hoursLong - FT_hours)) * 60));\n var FT_mins = Math.floor(FT_minsLong);\n var FT_secsLong = ((((FT_minsLong - FT_mins)) * 60));\n var FT_secs = Math.floor(FT_secsLong);\n if (((FT_days > 0))) {\n FT_hours = ((((FT_days * 24)) + FT_hours));\n }\n ;\n ;\n window.JSBNG__setTimeout(\"FT_getTime()\", 1000);\n var ftCountdown = getTimeRemainingString(FT_hours, FT_mins);\n for (var i = 0; ((i < ftCountdownElementIDs.length)); i++) {\n var countdownElement = JSBNG__document.getElementById(ftCountdownElementIDs[i]);\n if (countdownElement) {\n if (((((((((FT_CurrentDisplayMin[i] != FT_mins)) || forceUpdate)) || ((countdownElement.innerHTML == \"\")))) || firstTimeUpdate))) {\n countdownElement.innerHTML = ftCountdown;\n FT_CurrentDisplayMin[i] = FT_mins;\n firstTimeUpdate = false;\n }\n ;\n ;\n }\n ;\n ;\n };\n ;\n };\n;\n function FT_showEntireMessageElement(shouldShow) {\n for (var i = 0; ((i < ftEntireMessageElementIDs.length)); i++) {\n FT_showHtmlElement(ftEntireMessageElementIDs[i], shouldShow);\n };\n ;\n };\n;\n function FT_showHtmlElement(elementID, shouldShow, displayStyle) {\n var element = JSBNG__document.getElementById(elementID);\n if (element) {\n if (shouldShow) {\n element.style.display = ((((displayStyle != null)) ? displayStyle : \"\"));\n }\n else {\n element.style.display = \"none\";\n }\n ;\n ;\n }\n ;\n ;\n };\n;\n function FT_getAndClearCutOffEpochSeconds() {\n var ftCutOffEpochSecondsElementID = \"ftCutOffEpochSeconds\";\n var ftServerCurrentEpochSecondsElementID = \"ftServerCurrentEpochSeconds\";\n if (((((JSBNG__document.layers || JSBNG__document.all)) || JSBNG__document.getElementById))) {\n if (JSBNG__document.getElementById(ftCutOffEpochSecondsElementID)) {\n var cutOffEpochSeconds = JSBNG__document.getElementById(ftCutOffEpochSecondsElementID).innerHTML;\n if (((cutOffEpochSeconds != \"\"))) {\n JSBNG__document.getElementById(ftCutOffEpochSecondsElementID).innerHTML = \"\";\n if (((((clientServerTimeDrift == null)) && JSBNG__document.getElementById(ftServerCurrentEpochSecondsElementID)))) {\n var serverCurrentEpochSeconds = ((JSBNG__document.getElementById(ftServerCurrentEpochSecondsElementID).innerHTML * 1));\n clientServerTimeDrift = ((((new JSBNG__Date().getTime() / 1000)) - serverCurrentEpochSeconds));\n }\n ;\n ;\n return ((((((clientServerTimeDrift == null)) ? 0 : clientServerTimeDrift)) + ((cutOffEpochSeconds * 1))));\n }\n ;\n ;\n }\n ;\n ;\n }\n ;\n ;\n return 0;\n };\n;\n function FT_getCountdown(secondsLeft) {\n var FT_currentTime = new JSBNG__Date();\n var FT_currentHours = FT_currentTime.getHours();\n var FT_currentMins = FT_currentTime.getMinutes();\n var FT_currentSecs = FT_currentTime.getSeconds();\n FT_givenSeconds = ((((((FT_currentHours * 3600)) + ((FT_currentMins * 60)))) + FT_currentSecs));\n var FT_secondsFromCat = 18026;\n if (((secondsLeft != null))) {\n FT_secondsFromCat = secondsLeft;\n }\n ;\n ;\n FT_givenSeconds += FT_secondsFromCat;\n FT_getTime();\n };\n;\n function FT_getTime() {\n var FT_newCurrentTime = new JSBNG__Date();\n var FT_actualHours = FT_newCurrentTime.getHours();\n var FT_actualMins = FT_newCurrentTime.getMinutes();\n var FT_actualSecs = FT_newCurrentTime.getSeconds();\n FT_actualSeconds = ((((((FT_actualHours * 3600)) + ((FT_actualMins * 60)))) + FT_actualSecs));\n var cutOffTimeFromPageElement = FT_getAndClearCutOffEpochSeconds();\n if (cutOffTimeFromPageElement) {\n var countDownSeconds = ((cutOffTimeFromPageElement - ((FT_newCurrentTime.getTime() / 1000))));\n if (((countDownSeconds >= 1))) {\n FT_showEntireMessageElement(true);\n }\n ;\n ;\n FT_givenSeconds = ((countDownSeconds + FT_actualSeconds));\n }\n ;\n ;\n FT_displayCountdown();\n };\n;\n function onAjaxUpdate_fast_track(asin) {\n var timerDiv = JSBNG__document.getElementById(\"ftMessageTimer\");\n var cutOffElems = JSBNG__document.getElementsByName(((\"promise-cutoff-time.\" + asin)));\n if (((((cutOffElems == null)) || ((cutOffElems.length == 0))))) {\n return;\n }\n ;\n ;\n if (((timerDiv && timerDiv.style))) {\n timerDiv.style.display = \"inline\";\n }\n ;\n ;\n var cutOffTimeVal = cutOffElems[0].value;\n var cutOffTime = parseInt(cutOffTimeVal);\n var currSecs = ((new JSBNG__Date().getTime() / 1000));\n var secsLeft = ((cutOffTime - currSecs));\n FT_getCountdown(secsLeft);\n };\n;\n FT_getCountdown();\n} catch (JSBNG_ex) {\n\n};");
919 geval("ftRegisterCountdownElementID(\"ftCountdown\");\nftRegisterEntireMessageElementID(\"ftMessage\");");
921 geval("function e75b493e6089a201530187bf51690fe2bbd897fb3(JSBNG__event) {\n return amz_js_PopWin(\"/gp/help/customer/display.html/ref=ftinfo_dp_?ie=UTF8&nodeId=3510241&pop-up=1\", \"AmazonHelp\", \"width=550,height=600,resizable=1,scrollbars=1,toolbar=1,status=1\");\n};\n;");
925 f881945950_406.returns.push(o5);
932 geval("var timerDiv = JSBNG__document.getElementById(\"ftMessageTimer\");\nif (((timerDiv && timerDiv.style))) {\n timerDiv.style.display = \"inline\";\n}\n;\n;");
934 geval("if (((typeof measureATFDiff == \"function\"))) {\n measureATFDiff(0, new JSBNG__Date().getTime());\n}\n;\n;\n;\nif (((typeof setCSMReq == \"function\"))) {\n setCSMReq(\"af\");\n}\n else if (((typeof uet == \"function\"))) {\n uet(\"af\");\n}\n\n;\n;");
936 geval("function ee976dbac42452e3152d3a48f703b0a8e017fa4d8(JSBNG__event) {\n javascript:\n Vellum.h();\n};\n;");
938 geval("function ed771f07937fda9c8dd04b0376cf96f16a586029a(JSBNG__event) {\n javascript:\n Vellum.h();\n};\n;");
940 geval("amznJQ.available(\"jQuery\", function() {\n window.sitbWeblab = \"\";\n if (((typeof (Vellum) == \"undefined\"))) {\n Vellum = {\n js: \"http://z-ecx.images-amazon.com/images/G/01/digital/sitb/reader/v4/201305301526/en_US/sitb-library-js._V383092699_.js\",\n sj: \"/gp/search-inside/js?locale=en_US&version=201305301526\",\n css: \"http://z-ecx.images-amazon.com/images/G/01/digital/sitb/reader/v4/201305301526/en_US/sitb-library-css._V383092698_.css\",\n pl: function() {\n Vellum.lj(Vellum.js, Vellum.sj, Vellum.css);\n },\n lj: function(u, u2, uc) {\n if (window.vellumLjDone) {\n return;\n }\n ;\n ;\n window.vellumLjDone = true;\n var d = JSBNG__document;\n var s = d.createElement(\"link\");\n s.type = \"text/css\";\n s.rel = \"stylesheet\";\n s.href = uc;\n d.getElementsByTagName(\"head\")[0].appendChild(s);\n s = d.createElement(\"script\");\n s.type = \"text/javascript\";\n s.src = u2;\n d.getElementsByTagName(\"head\")[0].appendChild(s);\n },\n lj2: function(u) {\n var d = JSBNG__document;\n var s = d.createElement(\"script\");\n s.type = \"text/javascript\";\n s.src = u;\n d.getElementsByTagName(\"head\")[0].appendChild(s);\n },\n go: function() {\n sitbLodStart = new JSBNG__Date().getTime();\n jQuery(\"body\").css(\"overflow\", \"hidden\");\n var jqw = jQuery(window);\n var h = jqw.height();\n var w = jqw.width();\n var st = jqw.scrollTop();\n jQuery(\"#vellumShade\").css({\n JSBNG__top: st,\n height: h,\n width: w\n }).show();\n var vli = jQuery(\"#vellumLdgIco\");\n var nl = ((((w / 2)) - ((vli.width() / 2))));\n var nt = ((((st + ((h / 2)))) - ((vli.height() / 2))));\n vli.css({\n left: nl,\n JSBNG__top: nt\n }).show();\n JSBNG__setTimeout(\"Vellum.x()\", 20000);\n Vellum.pl();\n },\n x: function() {\n jQuery(\"#vellumMsgTxt\").html(\"An error occurred while trying to show this book.\");\n jQuery(\"#vellumMsgHdr\").html(\"Server Timeout\");\n jQuery(\"#vellumMsg\").show();\n var reftagImage = new JSBNG__Image();\n reftagImage.src = \"/gp/search-inside/reftag/ref=rdr_bar_jsto\";\n },\n h: function() {\n jQuery(\"#vellumMsg\").hide();\n jQuery(\"#vellumShade\").hide();\n jQuery(\"#vellumLdgIco\").hide();\n jQuery(\"body\").css(\"overflow\", \"auto\");\n },\n cf: function(a) {\n return function() {\n v.mt = a;\n v.rg = Array.prototype.slice.call(arguments);\n v.go();\n };\n },\n c: function(a) {\n var v = Vellum;\n v.mt = \"c\";\n v.rg = [a,];\n v.pl();\n }\n };\n var f = \"opqr\".split(\"\");\n {\n var fin7keys = ((window.top.JSBNG_Replay.forInKeys)((f))), fin7i = (0);\n var i;\n for (; (fin7i < fin7keys.length); (fin7i++)) {\n ((i) = (fin7keys[fin7i]));\n {\n var v = Vellum;\n v[f[i]] = v.cf(f[i]);\n };\n };\n };\n ;\n sitbAsin = \"0596517742\";\n SitbReader = {\n LightboxActions: {\n openReader: function(r) {\n Vellum.o(\"0596517742\", r);\n return false;\n },\n openReaderToRandomPage: function(r) {\n Vellum.r(\"0596517742\", r);\n return false;\n },\n openReaderToSearchResults: function(q, r) {\n Vellum.q(\"0596517742\", q, r);\n return false;\n },\n openReaderToPage: function(p, t, r) {\n Vellum.p(\"0596517742\", p, t, r);\n return false;\n }\n }\n };\n }\n;\n;\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n Vellum.c(\"0596517742\");\n });\n});");
944 f881945950_0.returns.push(o7);
948 f881945950_0.returns.push(o2);
950 f881945950_413 = function() { return f881945950_413.returns[f881945950_413.inst++]; };
951 f881945950_413.returns = [];
952 f881945950_413.inst = 0;
954 o2.getHours = f881945950_413;
956 f881945950_413.returns.push(13);
958 f881945950_414 = function() { return f881945950_414.returns[f881945950_414.inst++]; };
959 f881945950_414.returns = [];
960 f881945950_414.inst = 0;
962 o2.getMinutes = f881945950_414;
964 f881945950_414.returns.push(59);
966 f881945950_415 = function() { return f881945950_415.returns[f881945950_415.inst++]; };
967 f881945950_415.returns = [];
968 f881945950_415.inst = 0;
970 o2.getSeconds = f881945950_415;
972 f881945950_415.returns.push(38);
976 f881945950_0.returns.push(o4);
978 o4.getHours = f881945950_413;
980 f881945950_413.returns.push(13);
982 o4.getMinutes = f881945950_414;
984 f881945950_414.returns.push(59);
986 o4.getSeconds = f881945950_415;
988 f881945950_415.returns.push(38);
990 f881945950_406.returns.push(null);
992 f881945950_406.returns.push(null);
994 f881945950_16.returns.push(2);
996 geval("if (((typeof amznJQ != \"undefined\"))) {\n amznJQ.addLogical(\"twister-media-matrix\", [\"http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/tmmJS/tmmJS-combined-core-4624._V1_.js\",]);\n window._tmm_1 = +new JSBNG__Date();\n}\n;\n;");
998 geval("ftRegisterCountdownElementID(\"ftCountdown\");\nftRegisterEntireMessageElementID(\"ftMessage\");");
1000 geval("function e75b493e6089a201530187bf51690fe2bbd897fb3(JSBNG__event) {\n return amz_js_PopWin(\"/gp/help/customer/display.html/ref=ftinfo_dp_?ie=UTF8&nodeId=3510241&pop-up=1\", \"AmazonHelp\", \"width=550,height=600,resizable=1,scrollbars=1,toolbar=1,status=1\");\n};\n;");
1004 f881945950_406.returns.push(o5);
1011 geval("var timerDiv = JSBNG__document.getElementById(\"ftMessageTimer\");\nif (((timerDiv && timerDiv.style))) {\n timerDiv.style.display = \"inline\";\n}\n;\n;");
1013 geval("try {\n if (((typeof measureATFDiff == \"function\"))) {\n measureATFDiff(0, new JSBNG__Date().getTime());\n }\n;\n;\n;\n if (((typeof setCSMReq == \"function\"))) {\n setCSMReq(\"af\");\n }\n else if (((typeof uet == \"function\"))) {\n uet(\"af\");\n }\n \n;\n;\n} catch (JSBNG_ex) {\n\n};");
1015 geval("function ee976dbac42452e3152d3a48f703b0a8e017fa4d8(JSBNG__event) {\n javascript:\n Vellum.h();\n};\n;");
1017 geval("function ed771f07937fda9c8dd04b0376cf96f16a586029a(JSBNG__event) {\n javascript:\n Vellum.h();\n};\n;");
1019 geval("amznJQ.available(\"jQuery\", function() {\n window.sitbWeblab = \"\";\n if (((typeof (Vellum) == \"undefined\"))) {\n Vellum = {\n js: \"http://z-ecx.images-amazon.com/images/G/01/digital/sitb/reader/v4/201305301526/en_US/sitb-library-js._V383092699_.js\",\n sj: \"/gp/search-inside/js?locale=en_US&version=201305301526\",\n css: \"http://z-ecx.images-amazon.com/images/G/01/digital/sitb/reader/v4/201305301526/en_US/sitb-library-css._V383092698_.css\",\n pl: function() {\n Vellum.lj(Vellum.js, Vellum.sj, Vellum.css);\n },\n lj: function(u, u2, uc) {\n if (window.vellumLjDone) {\n return;\n }\n ;\n ;\n window.vellumLjDone = true;\n var d = JSBNG__document;\n var s = d.createElement(\"link\");\n s.type = \"text/css\";\n s.rel = \"stylesheet\";\n s.href = uc;\n d.getElementsByTagName(\"head\")[0].appendChild(s);\n s = d.createElement(\"script\");\n s.type = \"text/javascript\";\n s.src = u2;\n d.getElementsByTagName(\"head\")[0].appendChild(s);\n },\n lj2: function(u) {\n var d = JSBNG__document;\n var s = d.createElement(\"script\");\n s.type = \"text/javascript\";\n s.src = u;\n d.getElementsByTagName(\"head\")[0].appendChild(s);\n },\n go: function() {\n sitbLodStart = new JSBNG__Date().getTime();\n jQuery(\"body\").css(\"overflow\", \"hidden\");\n var jqw = jQuery(window);\n var h = jqw.height();\n var w = jqw.width();\n var st = jqw.scrollTop();\n jQuery(\"#vellumShade\").css({\n JSBNG__top: st,\n height: h,\n width: w\n }).show();\n var vli = jQuery(\"#vellumLdgIco\");\n var nl = ((((w / 2)) - ((vli.width() / 2))));\n var nt = ((((st + ((h / 2)))) - ((vli.height() / 2))));\n vli.css({\n left: nl,\n JSBNG__top: nt\n }).show();\n JSBNG__setTimeout(\"Vellum.x()\", 20000);\n Vellum.pl();\n },\n x: function() {\n jQuery(\"#vellumMsgTxt\").html(\"An error occurred while trying to show this book.\");\n jQuery(\"#vellumMsgHdr\").html(\"Server Timeout\");\n jQuery(\"#vellumMsg\").show();\n var reftagImage = new JSBNG__Image();\n reftagImage.src = \"/gp/search-inside/reftag/ref=rdr_bar_jsto\";\n },\n h: function() {\n jQuery(\"#vellumMsg\").hide();\n jQuery(\"#vellumShade\").hide();\n jQuery(\"#vellumLdgIco\").hide();\n jQuery(\"body\").css(\"overflow\", \"auto\");\n },\n cf: function(a) {\n return function() {\n v.mt = a;\n v.rg = Array.prototype.slice.call(arguments);\n v.go();\n };\n },\n c: function(a) {\n var v = Vellum;\n v.mt = \"c\";\n v.rg = [a,];\n v.pl();\n }\n };\n var f = \"opqr\".split(\"\");\n {\n var fin8keys = ((window.top.JSBNG_Replay.forInKeys)((f))), fin8i = (0);\n var i;\n for (; (fin8i < fin8keys.length); (fin8i++)) {\n ((i) = (fin8keys[fin8i]));\n {\n var v = Vellum;\n v[f[i]] = v.cf(f[i]);\n };\n };\n };\n ;\n sitbAsin = \"0596517742\";\n SitbReader = {\n LightboxActions: {\n openReader: function(r) {\n Vellum.o(\"0596517742\", r);\n return false;\n },\n openReaderToRandomPage: function(r) {\n Vellum.r(\"0596517742\", r);\n return false;\n },\n openReaderToSearchResults: function(q, r) {\n Vellum.q(\"0596517742\", q, r);\n return false;\n },\n openReaderToPage: function(p, t, r) {\n Vellum.p(\"0596517742\", p, t, r);\n return false;\n }\n }\n };\n }\n;\n;\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n Vellum.c(\"0596517742\");\n });\n});");
1023 f881945950_0.returns.push(o7);
1029 f881945950_0.returns.push(o2);
1031 f881945950_413 = function() { return f881945950_413.returns[f881945950_413.inst++]; };
1032 f881945950_413.returns = [];
1033 f881945950_413.inst = 0;
1035 o2.getHours = f881945950_413;
1037 f881945950_413.returns.push(13);
1039 f881945950_414 = function() { return f881945950_414.returns[f881945950_414.inst++]; };
1040 f881945950_414.returns = [];
1041 f881945950_414.inst = 0;
1043 o2.getMinutes = f881945950_414;
1045 f881945950_414.returns.push(59);
1047 f881945950_415 = function() { return f881945950_415.returns[f881945950_415.inst++]; };
1048 f881945950_415.returns = [];
1049 f881945950_415.inst = 0;
1051 o2.getSeconds = f881945950_415;
1055 f881945950_415.returns.push(38);
1059 f881945950_0.returns.push(o4);
1061 o4.getHours = f881945950_413;
1063 f881945950_413.returns.push(13);
1065 o4.getMinutes = f881945950_414;
1067 f881945950_414.returns.push(59);
1069 o4.getSeconds = f881945950_415;
1073 f881945950_415.returns.push(38);
1075 f881945950_406.returns.push(null);
1077 f881945950_406.returns.push(null);
1079 f881945950_16.returns.push(2);
1081 geval("if (((typeof amznJQ != \"undefined\"))) {\n amznJQ.addLogical(\"twister-media-matrix\", [\"http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/tmmJS/tmmJS-combined-core-4624._V1_.js\",]);\n window._tmm_1 = +new JSBNG__Date();\n}\n;\n;");
1083 geval("ftRegisterCountdownElementID(\"ftCountdown\");\nftRegisterEntireMessageElementID(\"ftMessage\");");
1085 geval("function e75b493e6089a201530187bf51690fe2bbd897fb3(JSBNG__event) {\n return amz_js_PopWin(\"/gp/help/customer/display.html/ref=ftinfo_dp_?ie=UTF8&nodeId=3510241&pop-up=1\", \"AmazonHelp\", \"width=550,height=600,resizable=1,scrollbars=1,toolbar=1,status=1\");\n};\n;");
1089 f881945950_406.returns.push(o5);
1100 geval("var timerDiv = JSBNG__document.getElementById(\"ftMessageTimer\");\nif (((timerDiv && timerDiv.style))) {\n timerDiv.style.display = \"inline\";\n}\n;\n;");
1102 geval("if (((typeof measureATFDiff == \"function\"))) {\n measureATFDiff(0, new JSBNG__Date().getTime());\n}\n;\n;\n;\nif (((typeof setCSMReq == \"function\"))) {\n setCSMReq(\"af\");\n}\n else if (((typeof uet == \"function\"))) {\n uet(\"af\");\n}\n\n;\n;");
1104 geval("function ee976dbac42452e3152d3a48f703b0a8e017fa4d8(JSBNG__event) {\n javascript:\n Vellum.h();\n};\n;");
1106 geval("function ed771f07937fda9c8dd04b0376cf96f16a586029a(JSBNG__event) {\n javascript:\n Vellum.h();\n};\n;");
1108 geval("amznJQ.available(\"jQuery\", function() {\n window.sitbWeblab = \"\";\n if (((typeof (Vellum) == \"undefined\"))) {\n Vellum = {\n js: \"http://z-ecx.images-amazon.com/images/G/01/digital/sitb/reader/v4/201305301526/en_US/sitb-library-js._V383092699_.js\",\n sj: \"/gp/search-inside/js?locale=en_US&version=201305301526\",\n css: \"http://z-ecx.images-amazon.com/images/G/01/digital/sitb/reader/v4/201305301526/en_US/sitb-library-css._V383092698_.css\",\n pl: function() {\n Vellum.lj(Vellum.js, Vellum.sj, Vellum.css);\n },\n lj: function(u, u2, uc) {\n if (window.vellumLjDone) {\n return;\n }\n ;\n ;\n window.vellumLjDone = true;\n var d = JSBNG__document;\n var s = d.createElement(\"link\");\n s.type = \"text/css\";\n s.rel = \"stylesheet\";\n s.href = uc;\n d.getElementsByTagName(\"head\")[0].appendChild(s);\n s = d.createElement(\"script\");\n s.type = \"text/javascript\";\n s.src = u2;\n d.getElementsByTagName(\"head\")[0].appendChild(s);\n },\n lj2: function(u) {\n var d = JSBNG__document;\n var s = d.createElement(\"script\");\n s.type = \"text/javascript\";\n s.src = u;\n d.getElementsByTagName(\"head\")[0].appendChild(s);\n },\n go: function() {\n sitbLodStart = new JSBNG__Date().getTime();\n jQuery(\"body\").css(\"overflow\", \"hidden\");\n var jqw = jQuery(window);\n var h = jqw.height();\n var w = jqw.width();\n var st = jqw.scrollTop();\n jQuery(\"#vellumShade\").css({\n JSBNG__top: st,\n height: h,\n width: w\n }).show();\n var vli = jQuery(\"#vellumLdgIco\");\n var nl = ((((w / 2)) - ((vli.width() / 2))));\n var nt = ((((st + ((h / 2)))) - ((vli.height() / 2))));\n vli.css({\n left: nl,\n JSBNG__top: nt\n }).show();\n JSBNG__setTimeout(\"Vellum.x()\", 20000);\n Vellum.pl();\n },\n x: function() {\n jQuery(\"#vellumMsgTxt\").html(\"An error occurred while trying to show this book.\");\n jQuery(\"#vellumMsgHdr\").html(\"Server Timeout\");\n jQuery(\"#vellumMsg\").show();\n var reftagImage = new JSBNG__Image();\n reftagImage.src = \"/gp/search-inside/reftag/ref=rdr_bar_jsto\";\n },\n h: function() {\n jQuery(\"#vellumMsg\").hide();\n jQuery(\"#vellumShade\").hide();\n jQuery(\"#vellumLdgIco\").hide();\n jQuery(\"body\").css(\"overflow\", \"auto\");\n },\n cf: function(a) {\n return function() {\n v.mt = a;\n v.rg = Array.prototype.slice.call(arguments);\n v.go();\n };\n },\n c: function(a) {\n var v = Vellum;\n v.mt = \"c\";\n v.rg = [a,];\n v.pl();\n }\n };\n var f = \"opqr\".split(\"\");\n {\n var fin9keys = ((window.top.JSBNG_Replay.forInKeys)((f))), fin9i = (0);\n var i;\n for (; (fin9i < fin9keys.length); (fin9i++)) {\n ((i) = (fin9keys[fin9i]));\n {\n var v = Vellum;\n v[f[i]] = v.cf(f[i]);\n };\n };\n };\n ;\n sitbAsin = \"0596517742\";\n SitbReader = {\n LightboxActions: {\n openReader: function(r) {\n Vellum.o(\"0596517742\", r);\n return false;\n },\n openReaderToRandomPage: function(r) {\n Vellum.r(\"0596517742\", r);\n return false;\n },\n openReaderToSearchResults: function(q, r) {\n Vellum.q(\"0596517742\", q, r);\n return false;\n },\n openReaderToPage: function(p, t, r) {\n Vellum.p(\"0596517742\", p, t, r);\n return false;\n }\n }\n };\n }\n;\n;\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n Vellum.c(\"0596517742\");\n });\n});");
1112 f881945950_0.returns.push(o7);
1124 geval("if (((typeof amznJQ != \"undefined\"))) {\n amznJQ.addLogical(\"twister-media-matrix\", [\"http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/tmmJS/tmmJS-combined-core-4624._V1_.js\",]);\n window._tmm_1 = +new JSBNG__Date();\n}\n;\n;");
1128 f881945950_0.returns.push(o2);
1132 geval("window._tmm_3 = +new JSBNG__Date();\nif (((typeof amznJQ != \"undefined\"))) {\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n amznJQ.available(\"twister-media-matrix\", function() {\n window._tmm_2 = +new JSBNG__Date();\n TwisterMediaMatrix.initialize({\n kindle_meta_binding: {\n n: \"1\",\n start: \"1\"\n },\n paperback_meta_binding: {\n n: \"4\",\n start: \"1\"\n },\n other_meta_binding: {\n n: \"1\",\n start: \"1\"\n }\n }, \"3\", \"books\", \"0596517742\", \"B00279BLLE\", \"book_display_on_website\", \"Loading...\", \"Error. Please try again.\", \"http://g-ecx.images-amazon.com/images/G/01/x-locale/twister/tiny-snake._V192199047_.gif\", false, \"1-1\", \"1373479157\");\n });\n });\n}\n;\n;\nvar disableWinnerPopup;");
1134 geval("function e51d7970767549cda27023a52a400a94280d471f5(JSBNG__event) {\n amz_expandPostBodyDescription(\"PS\", [\"psGradient\",\"psPlaceHolder\",]);\n return false;\n};\n;");
1136 geval("function e5c5178e859fbed387086d382315ddf2817c1731d(JSBNG__event) {\n amz_collapsePostBodyDescription(\"PS\", [\"psGradient\",\"psPlaceHolder\",]);\n return false;\n};\n;");
1138 geval("function amz_expandPostBodyDescription(id, objects) {\n amznJQ.onReady(\"jQuery\", function() {\n for (var i = 0; ((i < objects.length)); i++) {\n jQuery(((\"#\" + objects[i]))).hide();\n };\n ;\n jQuery(((\"#outer_postBody\" + id))).animate({\n height: jQuery(((\"#postBody\" + id))).height()\n }, 500);\n jQuery(((\"#expand\" + id))).hide();\n jQuery(((\"#collapse\" + id))).show();\n jQuery.ajax({\n url: \"/gp/product/utility/ajax/impression-tracking.html\",\n data: {\n a: \"0596517742\",\n ref: \"dp_pd_showmore_b\"\n }\n });\n });\n};\n;\nfunction amz_collapsePostBodyDescription(id, objects) {\n amznJQ.onReady(\"jQuery\", function() {\n for (var i = 0; ((i < objects.length)); i++) {\n jQuery(((\"#\" + objects[i]))).show();\n };\n ;\n jQuery(((\"#outer_postBody\" + id))).animate({\n height: 200\n }, 500);\n jQuery(((\"#collapse\" + id))).hide();\n jQuery(((\"#expand\" + id))).show();\n jQuery.ajax({\n url: \"/gp/product/utility/ajax/impression-tracking.html\",\n data: {\n a: \"0596517742\",\n ref: \"dp_pd_showless_b\"\n }\n });\n });\n};\n;\namznJQ.onReady(\"jQuery\", function() {\n var psTotalHeight = jQuery(\"#postBodyPS\").height();\n if (((psTotalHeight > 200))) {\n jQuery(\"#outer_postBodyPS\").css(\"display\", \"block\").css(\"height\", 200);\n jQuery(\"#psPlaceHolder\").css(\"display\", \"block\");\n jQuery(\"#expandPS\").css(\"display\", \"block\");\n jQuery(\"#psGradient\").css(\"display\", \"block\");\n }\n else {\n jQuery(\"#outer_postBodyPS\").css(\"height\", \"auto\");\n jQuery(\"#psGradient\").hide();\n jQuery(\"#psPlaceHolder\").hide();\n }\n;\n;\n});");
1140 geval("function ef2d35c5b582d6058ac633b57d69c8b9ac542ebec(JSBNG__event) {\n return false;\n};\n;");
1142 geval("function ecf51729fd790a7ea3ccc34e61cae1ad6542b3ab2(JSBNG__event) {\n return false;\n};\n;");
1144 geval("function edd8e3d0178c67cf94e61d6831fdd582864ee9797(JSBNG__event) {\n return false;\n};\n;");
1146 f881945950_423 = function() { return f881945950_423.returns[f881945950_423.inst++]; };
1147 f881945950_423.returns = [];
1148 f881945950_423.inst = 0;
1150 o0.createElement = f881945950_423;
1154 f881945950_423.returns.push(o2);
1167 f881945950_427 = function() { return f881945950_427.returns[f881945950_427.inst++]; };
1168 f881945950_427.returns = [];
1169 f881945950_427.inst = 0;
1171 o4.insertBefore = f881945950_427;
1183 f881945950_427.returns.push(o2);
1187 geval("window.AmazonPopoverImages = {\n snake: \"http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/snake._V192571611_.gif\",\n btnClose: \"http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/btn_close._V192188154_.gif\",\n closeTan: \"http://g-ecx.images-amazon.com/images/G/01/nav2/images/close-tan-sm._V192185930_.gif\",\n closeTanDown: \"http://g-ecx.images-amazon.com/images/G/01/nav2/images/close-tan-sm-dn._V192185961_.gif\",\n loadingBar: \"http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/loading-bar-small._V192188123_.gif\",\n pixel: \"http://g-ecx.images-amazon.com/images/G/01/icons/blank-pixel._V192192429_.gif\"\n};\nvar container = JSBNG__document.createElement(\"DIV\");\ncontainer.id = \"ap_container\";\nif (JSBNG__document.body.childNodes.length) {\n JSBNG__document.body.insertBefore(container, JSBNG__document.body.childNodes[0]);\n}\n else {\n JSBNG__document.body.appendChild(container);\n}\n;\n;");
1195 f881945950_423.returns.push(o4);
1199 o2.insertBefore = f881945950_427;
1209 f881945950_427.returns.push(o4);
1213 geval("(function() {\n var h = ((((JSBNG__document.head || JSBNG__document.getElementsByTagName(\"head\")[0])) || JSBNG__document.documentElement));\n var s = JSBNG__document.createElement(\"script\");\n s.async = \"async\";\n s.src = \"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/site-wide-js-1.2.6-beacon/site-wide-11198044143._V1_.js\";\n h.insertBefore(s, h.firstChild);\n})();");
1215 geval("amznJQ.addLogical(\"popover\", []);\namznJQ.addLogical(\"navbarCSSUS-beacon\", []);\namznJQ.addLogical(\"search-js-autocomplete\", []);\namznJQ.addLogical(\"navbarJS-beacon\", []);\namznJQ.addLogical(\"LBHUCCSS-US\", []);\namznJQ.addLogical(\"CustomerPopover\", [\"http://z-ecx.images-amazon.com/images/G/01/x-locale/communities/profile/customer-popover/script-13-min._V224617671_.js\",]);\namznJQ.addLogical(\"amazonShoveler\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/amazonShoveler/amazonShoveler-1466453065._V1_.js\",]);\namznJQ.addLogical(\"dpCSS\", []);\namznJQ.addLogical(\"discussionsCSS\", []);\namznJQ.addLogical(\"bxgyCSS\", []);\namznJQ.addLogical(\"simCSS\", []);\namznJQ.addLogical(\"condProbCSS\", []);\namznJQ.addLogical(\"ciuAnnotations\", []);\namznJQ.addLogical(\"cmuAnnotations\", [\"http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/cmuAnnotations/cmuAnnotations-cmuAnnotations-55262._V1_.js\",]);\namznJQ.addLogical(\"dpProductImage\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/dpProductImage/dpProductImage-2900646310._V1_.js\",]);\namznJQ.addLogical(\"search-csl\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/search-csl/search-csl-2400229912._V1_.js\",]);\namznJQ.addLogical(\"AmazonHistory\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/AmazonHistory/AmazonHistory-61973207._V1_.js\",]);\namznJQ.addLogical(\"AmazonCountdown\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/AmazonCountdownMerged/AmazonCountdownMerged-27059._V1_.js\",]);\namznJQ.addLogical(\"bylinePopover\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/bylinePopover/bylinePopover-1310866238._V1_.js\",]);\namznJQ.addLogical(\"simsJS\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/simsJSMerged/simsMerged-8063003390._V1_.js\",]);\namznJQ.addLogical(\"callOnVisible\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/callOnVisible/callOnVisible-3144292562._V1_.js\",]);\namznJQ.addLogical(\"p13nlogger\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/p13nlogger/p13nlogger-1808340331._V1_.js\",]);\namznJQ.addLogical(\"lazyLoadLib\", [\"http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/lazyLoadLib/lazyLoadLib-lazyLoadLib-60357._V1_.js\",]);\namznJQ.addLogical(\"immersiveView\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/immersiveView/immersiveView-990982538._V1_.js\",]);\namznJQ.addLogical(\"imageBlock\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/imageBlock/imageBlock-1812119340._V1_.js\",]);\namznJQ.addLogical(\"quantityDropDownJS\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/quantityDropDownJSMerged/quantityDropDownJSMerged-63734._V1_.js\",]);\namznJQ.addLogical(\"bbopCheckBoxJS\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/bbopCheckBoxJSMerged/bbopCheckBoxJSMerged-33025._V1_.js\",]);\namznJQ.addLogical(\"share-with-friends-js-new\", [\"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/share-with-friends-js-new/share-with-friends-js-new-4128511603._V1_.js\",]);");
1217 geval("function acrPopoverHover(e, h) {\n if (h) {\n window.acrAsinHover = e;\n }\n else {\n if (((window.acrAsinHover == e))) {\n window.acrAsinHover = null;\n }\n ;\n }\n;\n;\n};\n;\namznJQ.onReady(\"popover\", function() {\n (function($) {\n if ($.fn.acrPopover) {\n return;\n }\n ;\n ;\n var popoverConfig = {\n showOnHover: true,\n showCloseButton: true,\n width: null,\n JSBNG__location: \"bottom\",\n locationAlign: \"left\",\n locationOffset: [-20,0,],\n paddingLeft: 15,\n paddingBottom: 5,\n paddingRight: 15,\n group: \"reviewsPopover\",\n clone: false,\n hoverHideDelay: 300\n };\n $.fn.acrPopover = function() {\n return this.each(function() {\n var $this = $(this);\n if (!$this.data(\"init\")) {\n $this.data(\"init\", 1);\n var getargs = $this.attr(\"getargs\");\n var ajaxURL = ((((((((((((((\"/gp/customer-reviews/common/du/displayHistoPopAjax.html?\" + \"&ASIN=\")) + $this.attr(\"JSBNG__name\"))) + \"&link=1\")) + \"&seeall=1\")) + \"&ref=\")) + $this.attr(\"ref\"))) + ((((typeof getargs != \"undefined\")) ? ((\"&getargs=\" + getargs)) : \"\"))));\n var myConfig = $.extend(true, {\n destination: ajaxURL\n }, popoverConfig);\n $this.amazonPopoverTrigger(myConfig);\n var w = window.acrAsinHover;\n if (((w && (($(w).parents(\".asinReviewsSummary\").get(0) == this))))) {\n $this.trigger(\"mouseover.amzPopover\");\n window.acrAsinHover = null;\n }\n ;\n ;\n }\n ;\n ;\n });\n };\n window.reviewHistPopoverConfig = popoverConfig;\n var jqInit = window.jQueryInitHistoPopovers = function(asin) {\n $(((((\".acr-popover[name=\" + asin)) + \"]\"))).acrPopover();\n };\n window.doInit_average_customer_reviews = jqInit;\n window.onAjaxUpdate_average_customer_reviews = jqInit;\n window.onCacheUpdate_average_customer_reviews = jqInit;\n window.onCacheUpdateReselect_average_customer_reviews = jqInit;\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n JSBNG__setTimeout(function() {\n amznJQ.declareAvailable(\"acrPopover\");\n }, 10);\n });\n })(jQuery);\n});\namznJQ.onReady(\"acrPopover\", function() {\n jQuery(\".acr-popover,#searchTemplate .asinReviewsSummary\").each(function() {\n jQuery(this).acrPopover();\n });\n});");
1219 geval("function e4a4bcedba65b380893f77d4dd29526130ee3b4d1(JSBNG__event) {\n return acrPopoverHover(this, 1);\n};\n;");
1221 geval("function edeb92174417d8dc1c0e6f67c4ca60200f797789e(JSBNG__event) {\n return acrPopoverHover(this, 0);\n};\n;");
1223 geval("function ed89eaa1f3ad51711a79f8d9d280a54d2800bbe33(JSBNG__event) {\n return acrPopoverHover(this, 1);\n};\n;");
1225 geval("function e6347802676af907c8a2f7c8d51ebf8ecb4cc78ea(JSBNG__event) {\n return acrPopoverHover(this, 0);\n};\n;");
1227 geval("var DEFAULT_RENDERING_TIME = 123;\namznJQ.onReady(\"popover\", function() {\n jQuery(\"#ns_0M4YTA6K9C1VFV7TYXNC_775_1_community_feedback_trigger_product-detail\").amazonPopoverTrigger({\n title: \"What product features are missing?\",\n destination: \"/gp/lwcf/light-weight-form.html?asin=0596517742&root=283155\",\n showOnHover: false,\n draggable: true,\n width: 650,\n paddingBottom: 0,\n onHide: function() {\n logCloseWidgetEvent(DEFAULT_RENDERING_TIME);\n cleanupSearchResults();\n }\n });\n});");
1229 geval("amznJQ.onReady(\"popover\", function() {\n jQuery(\"#ns_0M4YTA6K9C1VFV7TYXNC_774_1_hmd_pricing_feedback_trigger_product-detail\").amazonPopoverTrigger({\n title: \"Tell Us About a Lower Price\",\n destination: \"/gp/pdp/pf/pricingFeedbackForm.html/ref=sr_1_1_pfdpb?ie=UTF8&ASIN=0596517742&PREFIX=ns_0M4YTA6K9C1VFV7TYXNC_774_2_&from=product-detail&keywords=javascript%20the%20good%20parts&originalURI=%2Fgp%2Fproduct%2F0596517742&qid=1373479157&s=books&sr=1-1&storeID=books\",\n showOnHover: false,\n draggable: true\n });\n});");
1231 geval("amznJQ.onReady(\"lazyLoadLib\", function() {\n jQuery(\"#books-entity-teaser\").lazyLoadContent({\n url: \"/gp/product/features/entity-teaser/books-entity-teaser-ajax.html?ASIN=0596517742\",\n metrics: true,\n JSBNG__name: \"books-entity-teaser\",\n cache: true\n });\n});");
1233 geval("function e1e1dc54f9e2961eab4a6b364613e62cd51b69355(JSBNG__event) {\n return amz_js_PopWin(this.href, \"AmazonHelp\", \"width=340,height=340,resizable=1,scrollbars=1,toolbar=1,status=1\");\n};\n;");
1235 geval("var paCusRevAllURL = \"http://product-ads-portal.amazon.com/gp/synd/?asin=0596517742&pAsin=&gl=14&sq=javascript%20the%20good%20parts&sa=&se=Amazon&noo=&pt=Detail&spt=Glance&sn=customer-reviews-top&pRID=0M4YTA6K9C1VFV7TYXNC&ts=1373479174&h=0BA9078DD844F27758A20C195D68A922B6040AC2\";");
1239 f881945950_0.returns.push(o2);
1241 o2.getTime = f881945950_397;
1243 f881945950_397.returns.push(1373479178512);
1245 geval("try {\n (function(w, d, e, o) {\n var i = \"DAcrt\";\n if (w.uDA = ((((w.ues && w.uet)) && w.uex))) {\n ues(\"wb\", i, 1);\n uet(\"bb\", i, {\n wb: 1\n });\n }\n ;\n ;\n var methodToBind = \"amznJQ.onCompletion\";\n if (((((!w.amznJQ && ((methodToBind == \"amznJQ.onCompletion\")))) && ((typeof (P) != \"undefined\"))))) {\n P.when(\"amznJQ.criticalFeature\").execute(function() {\n o = w.DA;\n if (!o) {\n o = w.DA = [];\n e = d.createElement(\"script\");\n e.src = \"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/DA-us/DA-us-1527499158._V381226140_.js\";\n d.getElementsByTagName(\"head\")[0].appendChild(e);\n }\n ;\n ;\n o.push({\n c: 855,\n a: \"site=amazon.us;pt=Detail;slot=customer-reviews-top;pid=0596517742;prid=0M4YTA6K9C1VFV7TYXNC;arid=d9da736c99a54c90a1096fec27fb2394;ef=0.00\",\n f: 1,\n g: \"\",\n n: 1,\n r: 1,\n v: 1,\n y: \"na\",\n u: \"amzn.us.dp.books/computer_internet;sz=300x250;oe=ISO-8859-1;u=d9da736c99a54c90a1096fec27fb2394;s=i0;s=i1;s=i3;s=i4;s=i5;s=i6;s=i7;s=i8;s=i9;s=m1;s=m4;s=u4;s=u13;s=u10;s=u2;z=153;z=180;z=173;z=141;s=3072;s=32;s=3172a;s=3172;s=3;s=12;s=67;s=142;s=150;s=622;s=762;s=833;s=921;s=1009;s=1046;s=1324;s=3101;s=3102;s=3103;s=3174;s=3175;s=3176;dc_ref=http%3A%2F%2Fwww.amazon.com;tile=1;ord=0M4YTA6K9C1VFV7TYXNC\",\n q: \"N4215\"\n });\n });\n }\n else {\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n o = w.DA;\n if (!o) {\n o = w.DA = [];\n e = d.createElement(\"script\");\n e.src = \"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/DA-us/DA-us-1527499158._V381226140_.js\";\n d.getElementsByTagName(\"head\")[0].appendChild(e);\n }\n ;\n ;\n o.push({\n c: 855,\n a: \"site=amazon.us;pt=Detail;slot=customer-reviews-top;pid=0596517742;prid=0M4YTA6K9C1VFV7TYXNC;arid=d9da736c99a54c90a1096fec27fb2394;ef=0.00\",\n f: 1,\n g: \"\",\n n: 1,\n r: 1,\n v: 1,\n y: \"na\",\n u: \"amzn.us.dp.books/computer_internet;sz=300x250;oe=ISO-8859-1;u=d9da736c99a54c90a1096fec27fb2394;s=i0;s=i1;s=i3;s=i4;s=i5;s=i6;s=i7;s=i8;s=i9;s=m1;s=m4;s=u4;s=u13;s=u10;s=u2;z=153;z=180;z=173;z=141;s=3072;s=32;s=3172a;s=3172;s=3;s=12;s=67;s=142;s=150;s=622;s=762;s=833;s=921;s=1009;s=1046;s=1324;s=3101;s=3102;s=3103;s=3174;s=3175;s=3176;dc_ref=http%3A%2F%2Fwww.amazon.com;tile=1;ord=0M4YTA6K9C1VFV7TYXNC\",\n q: \"N4215\"\n });\n });\n }\n ;\n ;\n })(window, JSBNG__document);\n} catch (JSBNG_ex) {\n\n};");
1249 f881945950_0.returns.push(o4);
1251 geval("if (((typeof setCSMReq == \"function\"))) {\n setCSMReq(\"cf\");\n}\n else {\n if (((typeof uet == \"function\"))) {\n uet(\"cf\");\n }\n;\n;\n amznJQ.completedStage(\"amznJQ.criticalFeature\");\n}\n;\n;");
1253 geval("function acrPopoverHover(e, h) {\n if (h) {\n window.acrAsinHover = e;\n }\n else {\n if (((window.acrAsinHover == e))) {\n window.acrAsinHover = null;\n }\n ;\n }\n;\n;\n};\n;\namznJQ.onReady(\"popover\", function() {\n (function($) {\n if ($.fn.acrPopover) {\n return;\n }\n ;\n ;\n var popoverConfig = {\n showOnHover: true,\n showCloseButton: true,\n width: null,\n JSBNG__location: \"bottom\",\n locationAlign: \"left\",\n locationOffset: [-20,0,],\n paddingLeft: 15,\n paddingBottom: 5,\n paddingRight: 15,\n group: \"reviewsPopover\",\n clone: false,\n hoverHideDelay: 300\n };\n $.fn.acrPopover = function() {\n return this.each(function() {\n var $this = $(this);\n if (!$this.data(\"init\")) {\n $this.data(\"init\", 1);\n var getargs = $this.attr(\"getargs\");\n var ajaxURL = ((((((((((((((\"/gp/customer-reviews/common/du/displayHistoPopAjax.html?\" + \"&ASIN=\")) + $this.attr(\"JSBNG__name\"))) + \"&link=1\")) + \"&seeall=1\")) + \"&ref=\")) + $this.attr(\"ref\"))) + ((((typeof getargs != \"undefined\")) ? ((\"&getargs=\" + getargs)) : \"\"))));\n var myConfig = $.extend(true, {\n destination: ajaxURL\n }, popoverConfig);\n $this.amazonPopoverTrigger(myConfig);\n var w = window.acrAsinHover;\n if (((w && (($(w).parents(\".asinReviewsSummary\").get(0) == this))))) {\n $this.trigger(\"mouseover.amzPopover\");\n window.acrAsinHover = null;\n }\n ;\n ;\n }\n ;\n ;\n });\n };\n window.reviewHistPopoverConfig = popoverConfig;\n var jqInit = window.jQueryInitHistoPopovers = function(asin) {\n $(((((\".acr-popover[name=\" + asin)) + \"]\"))).acrPopover();\n };\n window.doInit_average_customer_reviews = jqInit;\n window.onAjaxUpdate_average_customer_reviews = jqInit;\n window.onCacheUpdate_average_customer_reviews = jqInit;\n window.onCacheUpdateReselect_average_customer_reviews = jqInit;\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n JSBNG__setTimeout(function() {\n amznJQ.declareAvailable(\"acrPopover\");\n }, 10);\n });\n })(jQuery);\n});\namznJQ.onReady(\"acrPopover\", function() {\n jQuery(\".acr-popover,#searchTemplate .asinReviewsSummary\").each(function() {\n jQuery(this).acrPopover();\n });\n});");
1255 geval("function e4a4bcedba65b380893f77d4dd29526130ee3b4d1(JSBNG__event) {\n return acrPopoverHover(this, 1);\n};\n;");
1257 geval("function edeb92174417d8dc1c0e6f67c4ca60200f797789e(JSBNG__event) {\n return acrPopoverHover(this, 0);\n};\n;");
1259 geval("function ed89eaa1f3ad51711a79f8d9d280a54d2800bbe33(JSBNG__event) {\n return acrPopoverHover(this, 1);\n};\n;");
1261 geval("function e6347802676af907c8a2f7c8d51ebf8ecb4cc78ea(JSBNG__event) {\n return acrPopoverHover(this, 0);\n};\n;");
1263 geval("var DEFAULT_RENDERING_TIME = 123;\namznJQ.onReady(\"popover\", function() {\n jQuery(\"#ns_0M4YTA6K9C1VFV7TYXNC_775_1_community_feedback_trigger_product-detail\").amazonPopoverTrigger({\n title: \"What product features are missing?\",\n destination: \"/gp/lwcf/light-weight-form.html?asin=0596517742&root=283155\",\n showOnHover: false,\n draggable: true,\n width: 650,\n paddingBottom: 0,\n onHide: function() {\n logCloseWidgetEvent(DEFAULT_RENDERING_TIME);\n cleanupSearchResults();\n }\n });\n});");
1265 geval("amznJQ.onReady(\"popover\", function() {\n jQuery(\"#ns_0M4YTA6K9C1VFV7TYXNC_774_1_hmd_pricing_feedback_trigger_product-detail\").amazonPopoverTrigger({\n title: \"Tell Us About a Lower Price\",\n destination: \"/gp/pdp/pf/pricingFeedbackForm.html/ref=sr_1_1_pfdpb?ie=UTF8&ASIN=0596517742&PREFIX=ns_0M4YTA6K9C1VFV7TYXNC_774_2_&from=product-detail&keywords=javascript%20the%20good%20parts&originalURI=%2Fgp%2Fproduct%2F0596517742&qid=1373479157&s=books&sr=1-1&storeID=books\",\n showOnHover: false,\n draggable: true\n });\n});");
1267 geval("amznJQ.onReady(\"lazyLoadLib\", function() {\n jQuery(\"#books-entity-teaser\").lazyLoadContent({\n url: \"/gp/product/features/entity-teaser/books-entity-teaser-ajax.html?ASIN=0596517742\",\n metrics: true,\n JSBNG__name: \"books-entity-teaser\",\n cache: true\n });\n});");
1269 geval("function e1e1dc54f9e2961eab4a6b364613e62cd51b69355(JSBNG__event) {\n return amz_js_PopWin(this.href, \"AmazonHelp\", \"width=340,height=340,resizable=1,scrollbars=1,toolbar=1,status=1\");\n};\n;");
1271 geval("var paCusRevAllURL = \"http://product-ads-portal.amazon.com/gp/synd/?asin=0596517742&pAsin=&gl=14&sq=javascript%20the%20good%20parts&sa=&se=Amazon&noo=&pt=Detail&spt=Glance&sn=customer-reviews-top&pRID=0M4YTA6K9C1VFV7TYXNC&ts=1373479174&h=0BA9078DD844F27758A20C195D68A922B6040AC2\";");
1275 f881945950_0.returns.push(o2);
1277 o2.getTime = f881945950_397;
1281 f881945950_397.returns.push(1373479178512);
1283 geval("try {\n (function(w, d, e, o) {\n var i = \"DAcrt\";\n if (w.uDA = ((((w.ues && w.uet)) && w.uex))) {\n ues(\"wb\", i, 1);\n uet(\"bb\", i, {\n wb: 1\n });\n }\n ;\n ;\n var methodToBind = \"amznJQ.onCompletion\";\n if (((((!w.amznJQ && ((methodToBind == \"amznJQ.onCompletion\")))) && ((typeof (P) != \"undefined\"))))) {\n P.when(\"amznJQ.criticalFeature\").execute(function() {\n o = w.DA;\n if (!o) {\n o = w.DA = [];\n e = d.createElement(\"script\");\n e.src = \"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/DA-us/DA-us-1527499158._V381226140_.js\";\n d.getElementsByTagName(\"head\")[0].appendChild(e);\n }\n ;\n ;\n o.push({\n c: 855,\n a: \"site=amazon.us;pt=Detail;slot=customer-reviews-top;pid=0596517742;prid=0M4YTA6K9C1VFV7TYXNC;arid=d9da736c99a54c90a1096fec27fb2394;ef=0.00\",\n f: 1,\n g: \"\",\n n: 1,\n r: 1,\n v: 1,\n y: \"na\",\n u: \"amzn.us.dp.books/computer_internet;sz=300x250;oe=ISO-8859-1;u=d9da736c99a54c90a1096fec27fb2394;s=i0;s=i1;s=i3;s=i4;s=i5;s=i6;s=i7;s=i8;s=i9;s=m1;s=m4;s=u4;s=u13;s=u10;s=u2;z=153;z=180;z=173;z=141;s=3072;s=32;s=3172a;s=3172;s=3;s=12;s=67;s=142;s=150;s=622;s=762;s=833;s=921;s=1009;s=1046;s=1324;s=3101;s=3102;s=3103;s=3174;s=3175;s=3176;dc_ref=http%3A%2F%2Fwww.amazon.com;tile=1;ord=0M4YTA6K9C1VFV7TYXNC\",\n q: \"N4215\"\n });\n });\n }\n else {\n amznJQ.onCompletion(\"amznJQ.criticalFeature\", function() {\n o = w.DA;\n if (!o) {\n o = w.DA = [];\n e = d.createElement(\"script\");\n e.src = \"http://z-ecx.images-amazon.com/images/G/01/browser-scripts/DA-us/DA-us-1527499158._V381226140_.js\";\n d.getElementsByTagName(\"head\")[0].appendChild(e);\n }\n ;\n ;\n o.push({\n c: 855,\n a: \"site=amazon.us;pt=Detail;slot=customer-reviews-top;pid=0596517742;prid=0M4YTA6K9C1VFV7TYXNC;arid=d9da736c99a54c90a1096fec27fb2394;ef=0.00\",\n f: 1,\n g: \"\",\n n: 1,\n r: 1,\n v: 1,\n y: \"na\",\n u: \"amzn.us.dp.books/computer_internet;sz=300x250;oe=ISO-8859-1;u=d9da736c99a54c90a1096fec27fb2394;s=i0;s=i1;s=i3;s=i4;s=i5;s=i6;s=i7;s=i8;s=i9;s=m1;s=m4;s=u4;s=u13;s=u10;s=u2;z=153;z=180;z=173;z=141;s=3072;s=32;s=3172a;s=3172;s=3;s=12;s=67;s=142;s=150;s=622;s=762;s=833;s=921;s=1009;s=1046;s=1324;s=3101;s=3102;s=3103;s=3174;s=3175;s=3176;dc_ref=http%3A%2F%2Fwww.amazon.com;tile=1;ord=0M4YTA6K9C1VFV7TYXNC\",\n q: \"N4215\"\n });\n });\n }\n ;\n ;\n })(window, JSBNG__document);\n} catch (JSNBG_ex) {\n\n};");
1287 f881945950_0.returns.push(o4);
1289 geval("try {\n if (((typeof setCSMReq == \"function\"))) {\n setCSMReq(\"cf\");\n }\n else {\n if (((typeof uet == \"function\"))) {\n uet(\"cf\");\n }\n ;\n ;\n amznJQ.completedStage(\"amznJQ.criticalFeature\");\n }\n;\n;\n} catch (JSBNG_ex) {\n\n};");
1291 o4.getTime = f881945950_397;
1295 f881945950_397.returns.push(1373479178517);
1297 geval("try {\n (function() {\n var initJQuery = function() {\n var jQuery126PatchDelay = 13;\n var _jQuery = window.jQuery, _$ = window.$;\n var jQuery = window.jQuery = window.$ = function(selector, context) {\n return new jQuery.fn.init(selector, context);\n };\n var quickExpr = /^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/, isSimple = /^.[^:#\\[\\.]*$/, undefined;\n jQuery.fn = jQuery.prototype = {\n init: function(selector, context) {\n selector = ((selector || JSBNG__document));\n if (selector.nodeType) {\n this[0] = selector;\n this.length = 1;\n return this;\n }\n ;\n ;\n if (((typeof selector == \"string\"))) {\n var match = quickExpr.exec(selector);\n if (((match && ((match[1] || !context))))) {\n if (match[1]) {\n selector = jQuery.clean([match[1],], context);\n }\n else {\n var elem = JSBNG__document.getElementById(match[3]);\n if (elem) {\n if (((elem.id != match[3]))) {\n return jQuery().JSBNG__find(selector);\n }\n ;\n ;\n return jQuery(elem);\n }\n ;\n ;\n selector = [];\n }\n ;\n ;\n }\n else {\n return jQuery(context).JSBNG__find(selector);\n }\n ;\n ;\n }\n else {\n if (jQuery.isFunction(selector)) {\n return jQuery(JSBNG__document)[((jQuery.fn.ready ? \"ready\" : \"load\"))](selector);\n }\n ;\n ;\n }\n ;\n ;\n return this.setArray(jQuery.makeArray(selector));\n },\n jquery: \"1.2.6\",\n size: function() {\n return this.length;\n },\n length: 0,\n get: function(num) {\n return ((((num == undefined)) ? jQuery.makeArray(this) : this[num]));\n },\n pushStack: function(elems) {\n var ret = jQuery(elems);\n ret.prevObject = this;\n return ret;\n },\n setArray: function(elems) {\n this.length = 0;\n Array.prototype.push.apply(this, elems);\n return this;\n },\n each: function(callback, args) {\n return jQuery.each(this, callback, args);\n },\n index: function(elem) {\n var ret = -1;\n return jQuery.inArray(((((elem && elem.jquery)) ? elem[0] : elem)), this);\n },\n attr: function(JSBNG__name, value, type) {\n var options = JSBNG__name;\n if (((JSBNG__name.constructor == String))) {\n if (((value === undefined))) {\n return ((this[0] && jQuery[((type || \"attr\"))](this[0], JSBNG__name)));\n }\n else {\n options = {\n };\n options[JSBNG__name] = value;\n }\n ;\n ;\n }\n ;\n ;\n return this.each(function(i) {\n {\n var fin10keys = ((window.top.JSBNG_Replay.forInKeys)((options))), fin10i = (0);\n (0);\n for (; (fin10i < fin10keys.length); (fin10i++)) {\n ((name) = (fin10keys[fin10i]));\n {\n jQuery.attr(((type ? this.style : this)), JSBNG__name, jQuery.prop(this, options[JSBNG__name], type, i, JSBNG__name));\n };\n };\n };\n ;\n });\n },\n css: function(key, value) {\n if (((((((key == \"width\")) || ((key == \"height\")))) && ((parseFloat(value) < 0))))) {\n value = undefined;\n }\n ;\n ;\n return this.attr(key, value, \"curCSS\");\n },\n text: function(text) {\n if (((((typeof text != \"object\")) && ((text != null))))) {\n return this.empty().append(((((this[0] && this[0].ownerDocument)) || JSBNG__document)).createTextNode(text));\n }\n ;\n ;\n var ret = \"\";\n jQuery.each(((text || this)), function() {\n jQuery.each(this.childNodes, function() {\n if (((this.nodeType != 8))) {\n ret += ((((this.nodeType != 1)) ? this.nodeValue : jQuery.fn.text([this,])));\n }\n ;\n ;\n });\n });\n return ret;\n },\n wrapAll: function(html) {\n if (this[0]) {\n jQuery(html, this[0].ownerDocument).clone().insertBefore(this[0]).map(function() {\n var elem = this;\n while (elem.firstChild) {\n elem = elem.firstChild;\n };\n ;\n return elem;\n }).append(this);\n }\n ;\n ;\n return this;\n },\n wrapInner: function(html) {\n return this.each(function() {\n jQuery(this).contents().wrapAll(html);\n });\n },\n wrap: function(html) {\n return this.each(function() {\n jQuery(this).wrapAll(html);\n });\n },\n append: function() {\n return this.domManip(arguments, true, false, function(elem) {\n if (((this.nodeType == 1))) {\n this.appendChild(elem);\n }\n ;\n ;\n });\n },\n prepend: function() {\n return this.domManip(arguments, true, true, function(elem) {\n if (((this.nodeType == 1))) {\n this.insertBefore(elem, this.firstChild);\n }\n ;\n ;\n });\n },\n before: function() {\n return this.domManip(arguments, false, false, function(elem) {\n this.parentNode.insertBefore(elem, this);\n });\n },\n after: function() {\n return this.domManip(arguments, false, true, function(elem) {\n this.parentNode.insertBefore(elem, this.nextSibling);\n });\n },\n end: function() {\n return ((this.prevObject || jQuery([])));\n },\n JSBNG__find: function(selector) {\n var elems = jQuery.map(this, function(elem) {\n return jQuery.JSBNG__find(selector, elem);\n });\n return this.pushStack(((((/[^+>] [^+>]/.test(selector) || ((selector.indexOf(\"..\") > -1)))) ? jQuery.unique(elems) : elems)));\n },\n clone: function(events) {\n var ret = this.map(function() {\n if (((jQuery.browser.msie && !jQuery.isXMLDoc(this)))) {\n var clone = this.cloneNode(true), container = JSBNG__document.createElement(\"div\");\n container.appendChild(clone);\n return jQuery.clean([container.innerHTML,])[0];\n }\n else {\n return this.cloneNode(true);\n }\n ;\n ;\n });\n var clone = ret.JSBNG__find(\"*\").andSelf().each(function() {\n if (((this[expando] != undefined))) {\n this[expando] = null;\n }\n ;\n ;\n });\n if (((events === true))) {\n this.JSBNG__find(\"*\").andSelf().each(function(i) {\n if (((this.nodeType == 3))) {\n return;\n }\n ;\n ;\n var events = jQuery.data(this, \"events\");\n {\n var fin11keys = ((window.top.JSBNG_Replay.forInKeys)((events))), fin11i = (0);\n var type;\n for (; (fin11i < fin11keys.length); (fin11i++)) {\n ((type) = (fin11keys[fin11i]));\n {\n {\n var fin12keys = ((window.top.JSBNG_Replay.forInKeys)((events[type]))), fin12i = (0);\n var handler;\n for (; (fin12i < fin12keys.length); (fin12i++)) {\n ((handler) = (fin12keys[fin12i]));\n {\n jQuery.JSBNG__event.add(clone[i], type, events[type][handler], events[type][handler].data);\n };\n };\n };\n ;\n };\n };\n };\n ;\n });\n }\n ;\n ;\n return ret;\n },\n filter: function(selector) {\n return this.pushStack(((((jQuery.isFunction(selector) && jQuery.grep(this, function(elem, i) {\n return selector.call(elem, i);\n }))) || jQuery.multiFilter(selector, this))));\n },\n not: function(selector) {\n if (((selector.constructor == String))) {\n if (isSimple.test(selector)) {\n return this.pushStack(jQuery.multiFilter(selector, this, true));\n }\n else {\n selector = jQuery.multiFilter(selector, this);\n }\n ;\n ;\n }\n ;\n ;\n var isArrayLike = ((((selector.length && ((selector[((selector.length - 1))] !== undefined)))) && !selector.nodeType));\n return this.filter(function() {\n return ((isArrayLike ? ((jQuery.inArray(this, selector) < 0)) : ((this != selector))));\n });\n },\n add: function(selector) {\n return this.pushStack(jQuery.unique(jQuery.merge(this.get(), ((((typeof selector == \"string\")) ? jQuery(selector) : jQuery.makeArray(selector))))));\n },\n is: function(selector) {\n return ((!!selector && ((jQuery.multiFilter(selector, this).length > 0))));\n },\n hasClass: function(selector) {\n return this.is(((\".\" + selector)));\n },\n val: function(value) {\n if (((value == undefined))) {\n if (this.length) {\n var elem = this[0];\n if (jQuery.nodeName(elem, \"select\")) {\n var index = elem.selectedIndex, values = [], options = elem.options, one = ((elem.type == \"select-one\"));\n if (((index < 0))) {\n return null;\n }\n ;\n ;\n for (var i = ((one ? index : 0)), max = ((one ? ((index + 1)) : options.length)); ((i < max)); i++) {\n var option = options[i];\n if (option.selected) {\n value = ((((jQuery.browser.msie && !option.attributes.value.specified)) ? option.text : option.value));\n if (one) {\n return value;\n }\n ;\n ;\n values.push(value);\n }\n ;\n ;\n };\n ;\n return values;\n }\n else {\n return ((this[0].value || \"\")).replace(/\\r/g, \"\");\n }\n ;\n ;\n }\n ;\n ;\n return undefined;\n }\n ;\n ;\n if (((value.constructor == Number))) {\n value += \"\";\n }\n ;\n ;\n return this.each(function() {\n if (((this.nodeType != 1))) {\n return;\n }\n ;\n ;\n if (((((value.constructor == Array)) && /radio|checkbox/.test(this.type)))) {\n this.checked = ((((jQuery.inArray(this.value, value) >= 0)) || ((jQuery.inArray(this.JSBNG__name, value) >= 0))));\n }\n else {\n if (jQuery.nodeName(this, \"select\")) {\n var values = jQuery.makeArray(value);\n jQuery(\"option\", this).each(function() {\n this.selected = ((((jQuery.inArray(this.value, values) >= 0)) || ((jQuery.inArray(this.text, values) >= 0))));\n });\n if (!values.length) {\n this.selectedIndex = -1;\n }\n ;\n ;\n }\n else {\n this.value = value;\n }\n ;\n ;\n }\n ;\n ;\n });\n },\n html: function(value) {\n return ((((value == undefined)) ? ((this[0] ? this[0].innerHTML : null)) : this.empty().append(value)));\n },\n replaceWith: function(value) {\n return this.after(value).remove();\n },\n eq: function(i) {\n return this.slice(i, ((i + 1)));\n },\n slice: function() {\n return this.pushStack(Array.prototype.slice.apply(this, arguments));\n },\n map: function(callback) {\n return this.pushStack(jQuery.map(this, function(elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n andSelf: function() {\n return this.add(this.prevObject);\n },\n data: function(key, value) {\n var parts = key.split(\".\");\n parts[1] = ((parts[1] ? ((\".\" + parts[1])) : \"\"));\n if (((value === undefined))) {\n var data = this.triggerHandler(((((\"getData\" + parts[1])) + \"!\")), [parts[0],]);\n if (((((data === undefined)) && this.length))) {\n data = jQuery.data(this[0], key);\n }\n ;\n ;\n return ((((((data === undefined)) && parts[1])) ? this.data(parts[0]) : data));\n }\n else {\n return this.trigger(((((\"setData\" + parts[1])) + \"!\")), [parts[0],value,]).each(function() {\n jQuery.data(this, key, value);\n });\n }\n ;\n ;\n },\n removeData: function(key) {\n return this.each(function() {\n jQuery.removeData(this, key);\n });\n },\n domManip: function(args, table, reverse, callback) {\n var clone = ((this.length > 1)), elems;\n return this.each(function() {\n if (!elems) {\n elems = jQuery.clean(args, this.ownerDocument);\n if (reverse) {\n elems.reverse();\n }\n ;\n ;\n }\n ;\n ;\n var obj = this;\n if (((((table && jQuery.nodeName(this, \"table\"))) && jQuery.nodeName(elems[0], \"tr\")))) {\n obj = ((this.getElementsByTagName(\"tbody\")[0] || this.appendChild(this.ownerDocument.createElement(\"tbody\"))));\n }\n ;\n ;\n var scripts = jQuery([]);\n jQuery.each(elems, function() {\n var elem = ((clone ? jQuery(this).clone(true)[0] : this));\n if (jQuery.nodeName(elem, \"script\")) {\n scripts = scripts.add(elem);\n }\n else {\n if (((elem.nodeType == 1))) {\n scripts = scripts.add(jQuery(\"script\", elem).remove());\n }\n ;\n ;\n callback.call(obj, elem);\n }\n ;\n ;\n });\n scripts.each(evalScript);\n });\n }\n };\n jQuery.fn.init.prototype = jQuery.fn;\n function evalScript(i, elem) {\n if (elem.src) {\n jQuery.ajax({\n url: elem.src,\n async: false,\n dataType: \"script\"\n });\n }\n else {\n jQuery.globalEval(((((((elem.text || elem.textContent)) || elem.innerHTML)) || \"\")));\n }\n ;\n ;\n if (elem.parentNode) {\n elem.parentNode.removeChild(elem);\n }\n ;\n ;\n };\n ;\n function now() {\n return +new JSBNG__Date;\n };\n ;\n jQuery.extend = jQuery.fn.extend = function() {\n var target = ((arguments[0] || {\n })), i = 1, length = arguments.length, deep = false, options;\n if (((target.constructor == Boolean))) {\n deep = target;\n target = ((arguments[1] || {\n }));\n i = 2;\n }\n ;\n ;\n if (((((typeof target != \"object\")) && ((typeof target != \"function\"))))) {\n target = {\n };\n }\n ;\n ;\n if (((length == i))) {\n target = this;\n --i;\n }\n ;\n ;\n for (; ((i < length)); i++) {\n if ((((options = arguments[i]) != null))) {\n {\n var fin13keys = ((window.top.JSBNG_Replay.forInKeys)((options))), fin13i = (0);\n var JSBNG__name;\n for (; (fin13i < fin13keys.length); (fin13i++)) {\n ((name) = (fin13keys[fin13i]));\n {\n var src = target[JSBNG__name], copy = options[JSBNG__name];\n if (((target === copy))) {\n continue;\n }\n ;\n ;\n if (((((((deep && copy)) && ((typeof copy == \"object\")))) && !copy.nodeType))) {\n target[JSBNG__name] = jQuery.extend(deep, ((src || ((((copy.length != null)) ? [] : {\n })))), copy);\n }\n else {\n if (((copy !== undefined))) {\n target[JSBNG__name] = copy;\n }\n ;\n ;\n }\n ;\n ;\n };\n };\n };\n ;\n }\n ;\n ;\n };\n ;\n return target;\n };\n var expando = ((\"jQuery\" + now())), uuid = 0, windowData = {\n }, exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i, defaultView = ((JSBNG__document.defaultView || {\n }));\n jQuery.extend({\n noConflict: function(deep) {\n window.$ = _$;\n if (deep) {\n window.jQuery = _jQuery;\n }\n ;\n ;\n return jQuery;\n },\n isFunction: function(fn) {\n return ((((((((!!fn && ((typeof fn != \"string\")))) && !fn.nodeName)) && ((fn.constructor != Array)))) && /^[\\s[]?function/.test(((fn + \"\")))));\n },\n isXMLDoc: function(elem) {\n return ((((elem.documentElement && !elem.body)) || ((((elem.tagName && elem.ownerDocument)) && !elem.ownerDocument.body))));\n },\n globalEval: function(data) {\n data = jQuery.trim(data);\n if (data) {\n var head = ((JSBNG__document.getElementsByTagName(\"head\")[0] || JSBNG__document.documentElement)), script = JSBNG__document.createElement(\"script\");\n script.type = \"text/javascript\";\n if (jQuery.browser.msie) {\n script.text = data;\n }\n else {\n script.appendChild(JSBNG__document.createTextNode(data));\n }\n ;\n ;\n head.insertBefore(script, head.firstChild);\n head.removeChild(script);\n }\n ;\n ;\n },\n nodeName: function(elem, JSBNG__name) {\n return ((elem.nodeName && ((elem.nodeName.toUpperCase() == JSBNG__name.toUpperCase()))));\n },\n cache: {\n },\n data: function(elem, JSBNG__name, data) {\n elem = ((((elem == window)) ? windowData : elem));\n var id = elem[expando];\n if (!id) {\n id = elem[expando] = ++uuid;\n }\n ;\n ;\n if (((JSBNG__name && !jQuery.cache[id]))) {\n jQuery.cache[id] = {\n };\n }\n ;\n ;\n if (((data !== undefined))) {\n jQuery.cache[id][JSBNG__name] = data;\n }\n ;\n ;\n return ((JSBNG__name ? jQuery.cache[id][JSBNG__name] : id));\n },\n removeData: function(elem, JSBNG__name) {\n elem = ((((elem == window)) ? windowData : elem));\n var id = elem[expando];\n if (JSBNG__name) {\n if (jQuery.cache[id]) {\n delete jQuery.cache[id][JSBNG__name];\n JSBNG__name = \"\";\n {\n var fin14keys = ((window.top.JSBNG_Replay.forInKeys)((jQuery.cache[id]))), fin14i = (0);\n (0);\n for (; (fin14i < fin14keys.length); (fin14i++)) {\n ((name) = (fin14keys[fin14i]));\n {\n break;\n };\n };\n };\n ;\n if (!JSBNG__name) {\n jQuery.removeData(elem);\n }\n ;\n ;\n }\n ;\n ;\n }\n else {\n try {\n delete elem[expando];\n } catch (e) {\n if (elem.removeAttribute) {\n elem.removeAttribute(expando);\n }\n ;\n ;\n };\n ;\n delete jQuery.cache[id];\n }\n ;\n ;\n },\n each: function(object, callback, args) {\n var JSBNG__name, i = 0, length = object.length;\n if (args) {\n if (((length == undefined))) {\n {\n var fin15keys = ((window.top.JSBNG_Replay.forInKeys)((object))), fin15i = (0);\n (0);\n for (; (fin15i < fin15keys.length); (fin15i++)) {\n ((name) = (fin15keys[fin15i]));\n {\n if (((callback.apply(object[JSBNG__name], args) === false))) {\n break;\n }\n ;\n ;\n };\n };\n };\n ;\n }\n else {\n for (; ((i < length)); ) {\n if (((callback.apply(object[i++], args) === false))) {\n break;\n }\n ;\n ;\n };\n ;\n }\n ;\n ;\n }\n else {\n if (((length == undefined))) {\n {\n var fin16keys = ((window.top.JSBNG_Replay.forInKeys)((object))), fin16i = (0);\n (0);\n for (; (fin16i < fin16keys.length); (fin16i++)) {\n ((name) = (fin16keys[fin16i]));\n {\n if (((callback.call(object[JSBNG__name], JSBNG__name, object[JSBNG__name]) === false))) {\n break;\n }\n ;\n ;\n };\n };\n };\n ;\n }\n else {\n for (var value = object[0]; ((((i < length)) && ((callback.call(value, i, value) !== false)))); value = object[++i]) {\n \n };\n ;\n }\n ;\n ;\n }\n ;\n ;\n return object;\n },\n prop: function(elem, value, type, i, JSBNG__name) {\n if (jQuery.isFunction(value)) {\n value = value.call(elem, i);\n }\n ;\n ;\n return ((((((((value && ((value.constructor == Number)))) && ((type == \"curCSS\")))) && !exclude.test(JSBNG__name))) ? ((value + \"px\")) : value));\n },\n className: {\n add: function(elem, classNames) {\n jQuery.each(((classNames || \"\")).split(/\\s+/), function(i, className) {\n if (((((elem.nodeType == 1)) && !jQuery.className.has(elem.className, className)))) {\n elem.className += ((((elem.className ? \" \" : \"\")) + className));\n }\n ;\n ;\n });\n },\n remove: function(elem, classNames) {\n if (((elem.nodeType == 1))) {\n elem.className = ((((classNames != undefined)) ? jQuery.grep(elem.className.split(/\\s+/), function(className) {\n return !jQuery.className.has(classNames, className);\n }).join(\" \") : \"\"));\n }\n ;\n ;\n },\n has: function(elem, className) {\n return ((jQuery.inArray(className, ((elem.className || elem)).toString().split(/\\s+/)) > -1));\n }\n },\n swap: function(elem, options, callback) {\n var old = {\n };\n {\n var fin17keys = ((window.top.JSBNG_Replay.forInKeys)((options))), fin17i = (0);\n var JSBNG__name;\n for (; (fin17i < fin17keys.length); (fin17i++)) {\n ((name) = (fin17keys[fin17i]));\n {\n old[JSBNG__name] = elem.style[JSBNG__name];\n elem.style[JSBNG__name] = options[JSBNG__name];\n };\n };\n };\n ;\n callback.call(elem);\n {\n var fin18keys = ((window.top.JSBNG_Replay.forInKeys)((options))), fin18i = (0);\n var JSBNG__name;\n for (; (fin18i < fin18keys.length); (fin18i++)) {\n ((name) = (fin18keys[fin18i]));\n {\n elem.style[JSBNG__name] = old[JSBNG__name];\n };\n };\n };\n ;\n },\n css: function(elem, JSBNG__name, force) {\n if (((((JSBNG__name == \"width\")) || ((JSBNG__name == \"height\"))))) {\n var val, props = {\n position: \"absolute\",\n visibility: \"hidden\",\n display: \"block\"\n }, which = ((((JSBNG__name == \"width\")) ? [\"Left\",\"Right\",] : [\"Top\",\"Bottom\",]));\n function getWH() {\n val = ((((JSBNG__name == \"width\")) ? elem.offsetWidth : elem.offsetHeight));\n var padding = 0, border = 0;\n jQuery.each(which, function() {\n padding += ((parseFloat(jQuery.curCSS(elem, ((\"padding\" + this)), true)) || 0));\n border += ((parseFloat(jQuery.curCSS(elem, ((((\"border\" + this)) + \"Width\")), true)) || 0));\n });\n val -= Math.round(((padding + border)));\n };\n ;\n if (jQuery(elem).is(\":visible\")) {\n getWH();\n }\n else {\n jQuery.swap(elem, props, getWH);\n }\n ;\n ;\n return Math.max(0, val);\n }\n ;\n ;\n return jQuery.curCSS(elem, JSBNG__name, force);\n },\n curCSS: function(elem, JSBNG__name, force) {\n var ret, style = elem.style;\n function color(elem) {\n if (!jQuery.browser.safari) {\n return false;\n }\n ;\n ;\n var ret = defaultView.JSBNG__getComputedStyle(elem, null);\n return ((!ret || ((ret.getPropertyValue(\"color\") == \"\"))));\n };\n ;\n if (((((JSBNG__name == \"opacity\")) && jQuery.browser.msie))) {\n ret = jQuery.attr(style, \"opacity\");\n return ((((ret == \"\")) ? \"1\" : ret));\n }\n ;\n ;\n if (((jQuery.browser.JSBNG__opera && ((JSBNG__name == \"display\"))))) {\n var save = style.outline;\n style.outline = \"0 solid black\";\n style.outline = save;\n }\n ;\n ;\n if (JSBNG__name.match(/float/i)) {\n JSBNG__name = styleFloat;\n }\n ;\n ;\n if (((((!force && style)) && style[JSBNG__name]))) {\n ret = style[JSBNG__name];\n }\n else {\n if (defaultView.JSBNG__getComputedStyle) {\n if (JSBNG__name.match(/float/i)) {\n JSBNG__name = \"float\";\n }\n ;\n ;\n JSBNG__name = JSBNG__name.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n var computedStyle = defaultView.JSBNG__getComputedStyle(elem, null);\n if (((computedStyle && !color(elem)))) {\n ret = computedStyle.getPropertyValue(JSBNG__name);\n }\n else {\n var swap = [], stack = [], a = elem, i = 0;\n for (; ((a && color(a))); a = a.parentNode) {\n stack.unshift(a);\n };\n ;\n for (; ((i < stack.length)); i++) {\n if (color(stack[i])) {\n swap[i] = stack[i].style.display;\n stack[i].style.display = \"block\";\n }\n ;\n ;\n };\n ;\n ret = ((((((JSBNG__name == \"display\")) && ((swap[((stack.length - 1))] != null)))) ? \"none\" : ((((computedStyle && computedStyle.getPropertyValue(JSBNG__name))) || \"\"))));\n for (i = 0; ((i < swap.length)); i++) {\n if (((swap[i] != null))) {\n stack[i].style.display = swap[i];\n }\n ;\n ;\n };\n ;\n }\n ;\n ;\n if (((((JSBNG__name == \"opacity\")) && ((ret == \"\"))))) {\n ret = \"1\";\n }\n ;\n ;\n }\n else {\n if (elem.currentStyle) {\n var camelCase = JSBNG__name.replace(/\\-(\\w)/g, function(all, letter) {\n return letter.toUpperCase();\n });\n ret = ((elem.currentStyle[JSBNG__name] || elem.currentStyle[camelCase]));\n if (((!/^\\d+(px)?$/i.test(ret) && /^\\d/.test(ret)))) {\n var left = style.left, rsLeft = elem.runtimeStyle.left;\n elem.runtimeStyle.left = elem.currentStyle.left;\n style.left = ((ret || 0));\n ret = ((style.pixelLeft + \"px\"));\n style.left = left;\n elem.runtimeStyle.left = rsLeft;\n }\n ;\n ;\n }\n ;\n ;\n }\n ;\n ;\n }\n ;\n ;\n return ret;\n },\n clean: function(elems, context) {\n var ret = [];\n context = ((context || JSBNG__document));\n if (((typeof context.createElement == \"undefined\"))) {\n context = ((((context.ownerDocument || ((context[0] && context[0].ownerDocument)))) || JSBNG__document));\n }\n ;\n ;\n jQuery.each(elems, function(i, elem) {\n if (!elem) {\n return;\n }\n ;\n ;\n if (((elem.constructor == Number))) {\n elem += \"\";\n }\n ;\n ;\n if (((typeof elem == \"string\"))) {\n elem = elem.replace(/(<(\\w+)[^>]*?)\\/>/g, function(all, front, tag) {\n return ((tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? all : ((((((front + \"\\u003E\\u003C/\")) + tag)) + \"\\u003E\"))));\n });\n var tags = jQuery.trim(elem).toLowerCase(), div = context.createElement(\"div\");\n var wrap = ((((((((((((((((!tags.indexOf(\"\\u003Copt\") && [1,\"\\u003Cselect multiple='multiple'\\u003E\",\"\\u003C/select\\u003E\",])) || ((!tags.indexOf(\"\\u003Cleg\") && [1,\"\\u003Cfieldset\\u003E\",\"\\u003C/fieldset\\u003E\",])))) || ((tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && [1,\"\\u003Ctable\\u003E\",\"\\u003C/table\\u003E\",])))) || ((!tags.indexOf(\"\\u003Ctr\") && [2,\"\\u003Ctable\\u003E\\u003Ctbody\\u003E\",\"\\u003C/tbody\\u003E\\u003C/table\\u003E\",])))) || ((((!tags.indexOf(\"\\u003Ctd\") || !tags.indexOf(\"\\u003Cth\"))) && [3,\"\\u003Ctable\\u003E\\u003Ctbody\\u003E\\u003Ctr\\u003E\",\"\\u003C/tr\\u003E\\u003C/tbody\\u003E\\u003C/table\\u003E\",])))) || ((!tags.indexOf(\"\\u003Ccol\") && [2,\"\\u003Ctable\\u003E\\u003Ctbody\\u003E\\u003C/tbody\\u003E\\u003Ccolgroup\\u003E\",\"\\u003C/colgroup\\u003E\\u003C/table\\u003E\",])))) || ((jQuery.browser.msie && [1,\"div\\u003Cdiv\\u003E\",\"\\u003C/div\\u003E\",])))) || [0,\"\",\"\",]));\n div.innerHTML = ((((wrap[1] + elem)) + wrap[2]));\n while (wrap[0]--) {\n div = div.lastChild;\n };\n ;\n if (jQuery.browser.msie) {\n var tbody = ((((!tags.indexOf(\"\\u003Ctable\") && ((tags.indexOf(\"\\u003Ctbody\") < 0)))) ? ((div.firstChild && div.firstChild.childNodes)) : ((((((wrap[1] == \"\\u003Ctable\\u003E\")) && ((tags.indexOf(\"\\u003Ctbody\") < 0)))) ? div.childNodes : []))));\n for (var j = ((tbody.length - 1)); ((j >= 0)); --j) {\n if (((jQuery.nodeName(tbody[j], \"tbody\") && !tbody[j].childNodes.length))) {\n tbody[j].parentNode.removeChild(tbody[j]);\n }\n ;\n ;\n };\n ;\n if (/^\\s/.test(elem)) {\n div.insertBefore(context.createTextNode(elem.match(/^\\s*/)[0]), div.firstChild);\n }\n ;\n ;\n }\n ;\n ;\n elem = jQuery.makeArray(div.childNodes);\n }\n ;\n ;\n if (((((elem.length === 0)) && ((!jQuery.nodeName(elem, \"form\") && !jQuery.nodeName(elem, \"select\")))))) {\n return;\n }\n ;\n ;\n if (((((((elem[0] == undefined)) || jQuery.nodeName(elem, \"form\"))) || elem.options))) {\n ret.push(elem);\n }\n else {\n ret = jQuery.merge(ret, elem);\n }\n ;\n ;\n });\n return ret;\n },\n attr: function(elem, JSBNG__name, value) {\n if (((((!elem || ((elem.nodeType == 3)))) || ((elem.nodeType == 8))))) {\n return undefined;\n }\n ;\n ;\n var notxml = !jQuery.isXMLDoc(elem), set = ((value !== undefined)), msie = jQuery.browser.msie;\n JSBNG__name = ((((notxml && jQuery.props[JSBNG__name])) || JSBNG__name));\n if (elem.tagName) {\n var special = /href|src|style/.test(JSBNG__name);\n if (((((JSBNG__name == \"selected\")) && jQuery.browser.safari))) {\n elem.parentNode.selectedIndex;\n }\n ;\n ;\n if (((((((JSBNG__name in elem)) && notxml)) && !special))) {\n if (set) {\n if (((((((JSBNG__name == \"type\")) && jQuery.nodeName(elem, \"input\"))) && elem.parentNode))) {\n throw \"type property can't be changed\";\n }\n ;\n ;\n elem[JSBNG__name] = value;\n }\n ;\n ;\n if (((jQuery.nodeName(elem, \"form\") && elem.getAttributeNode(JSBNG__name)))) {\n return elem.getAttributeNode(JSBNG__name).nodeValue;\n }\n ;\n ;\n return elem[JSBNG__name];\n }\n ;\n ;\n if (((((msie && notxml)) && ((JSBNG__name == \"style\"))))) {\n return jQuery.attr(elem.style, \"cssText\", value);\n }\n ;\n ;\n if (set) {\n elem.setAttribute(JSBNG__name, ((\"\" + value)));\n }\n ;\n ;\n var attr = ((((((msie && notxml)) && special)) ? elem.getAttribute(JSBNG__name, 2) : elem.getAttribute(JSBNG__name)));\n return ((((attr === null)) ? undefined : attr));\n }\n ;\n ;\n if (((msie && ((JSBNG__name == \"opacity\"))))) {\n if (set) {\n elem.zoom = 1;\n elem.filter = ((((elem.filter || \"\")).replace(/alpha\\([^)]*\\)/, \"\") + ((((((parseInt(value) + \"\")) == \"NaN\")) ? \"\" : ((((\"alpha(opacity=\" + ((value * 100)))) + \")\"))))));\n }\n ;\n ;\n return ((((elem.filter && ((elem.filter.indexOf(\"opacity=\") >= 0)))) ? ((((parseFloat(elem.filter.match(/opacity=([^)]*)/)[1]) / 100)) + \"\")) : \"\"));\n }\n ;\n ;\n JSBNG__name = JSBNG__name.replace(/-([a-z])/gi, function(all, letter) {\n return letter.toUpperCase();\n });\n if (set) {\n elem[JSBNG__name] = value;\n }\n ;\n ;\n return elem[JSBNG__name];\n },\n trim: function(text) {\n return ((text || \"\")).replace(/^\\s+|\\s+$/g, \"\");\n },\n makeArray: function(array) {\n var ret = [];\n if (((array != null))) {\n var i = array.length;\n if (((((((((i == null)) || array.split)) || array.JSBNG__setInterval)) || array.call))) {\n ret[0] = array;\n }\n else {\n while (i) {\n ret[--i] = array[i];\n };\n ;\n }\n ;\n ;\n }\n ;\n ;\n return ret;\n },\n inArray: function(elem, array) {\n for (var i = 0, length = array.length; ((i < length)); i++) {\n if (((array[i] === elem))) {\n return i;\n }\n ;\n ;\n };\n ;\n return -1;\n },\n merge: function(first, second) {\n var i = 0, elem, pos = first.length;\n if (jQuery.browser.msie) {\n while (elem = second[i++]) {\n if (((elem.nodeType != 8))) {\n first[pos++] = elem;\n }\n ;\n ;\n };\n ;\n }\n else {\n while (elem = second[i++]) {\n first[pos++] = elem;\n };\n ;\n }\n ;\n ;\n return first;\n },\n unique: function(array) {\n var ret = [], done = {\n };\n try {\n for (var i = 0, length = array.length; ((i < length)); i++) {\n var id = jQuery.data(array[i]);\n if (!done[id]) {\n done[id] = true;\n ret.push(array[i]);\n }\n ;\n ;\n };\n ;\n } catch (e) {\n ret = array;\n };\n ;\n return ret;\n },\n grep: function(elems, callback, inv) {\n var ret = [];\n for (var i = 0, length = elems.length; ((i < length)); i++) {\n if (((!inv != !callback(elems[i], i)))) {\n ret.push(elems[i]);\n }\n ;\n ;\n };\n ;\n return ret;\n },\n map: function(elems, callback) {\n var ret = [];\n for (var i = 0, length = elems.length; ((i < length)); i++) {\n var value = callback(elems[i], i);\n if (((value != null))) {\n ret[ret.length] = value;\n }\n ;\n ;\n };\n ;\n return ret.concat.apply([], ret);\n }\n });\n var userAgent = JSBNG__navigator.userAgent.toLowerCase();\n jQuery.browser = {\n version: ((userAgent.match(/.+(?:rv|it|ra|ie)[\\/: ]([\\d.]+)/) || []))[1],\n safari: /webkit/.test(userAgent),\n JSBNG__opera: /opera/.test(userAgent),\n msie: ((/msie/.test(userAgent) && !/opera/.test(userAgent))),\n mozilla: ((/mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)))\n };\n var styleFloat = ((jQuery.browser.msie ? \"styleFloat\" : \"cssFloat\"));\n jQuery.extend({\n boxModel: ((!jQuery.browser.msie || ((JSBNG__document.compatMode == \"CSS1Compat\")))),\n props: {\n \"for\": \"htmlFor\",\n class: \"className\",\n float: styleFloat,\n cssFloat: styleFloat,\n styleFloat: styleFloat,\n readonly: \"readOnly\",\n maxlength: \"maxLength\",\n cellspacing: \"cellSpacing\"\n }\n });\n jQuery.each({\n parent: function(elem) {\n return elem.parentNode;\n },\n parents: function(elem) {\n return jQuery.dir(elem, \"parentNode\");\n },\n next: function(elem) {\n return jQuery.nth(elem, 2, \"nextSibling\");\n },\n prev: function(elem) {\n return jQuery.nth(elem, 2, \"previousSibling\");\n },\n nextAll: function(elem) {\n return jQuery.dir(elem, \"nextSibling\");\n },\n prevAll: function(elem) {\n return jQuery.dir(elem, \"previousSibling\");\n },\n siblings: function(elem) {\n return jQuery.sibling(elem.parentNode.firstChild, elem);\n },\n children: function(elem) {\n return jQuery.sibling(elem.firstChild);\n },\n contents: function(elem) {\n return ((jQuery.nodeName(elem, \"div\") ? ((elem.contentDocument || elem.contentWindow.JSBNG__document)) : jQuery.makeArray(elem.childNodes)));\n }\n }, function(JSBNG__name, fn) {\n jQuery.fn[JSBNG__name] = function(selector) {\n var ret = jQuery.map(this, fn);\n if (((selector && ((typeof selector == \"string\"))))) {\n ret = jQuery.multiFilter(selector, ret);\n }\n ;\n ;\n return this.pushStack(jQuery.unique(ret));\n };\n });\n jQuery.each({\n appendTo: \"append\",\n prependTo: \"prepend\",\n insertBefore: \"before\",\n insertAfter: \"after\",\n replaceAll: \"replaceWith\"\n }, function(JSBNG__name, original) {\n jQuery.fn[JSBNG__name] = function() {\n var args = arguments;\n return this.each(function() {\n for (var i = 0, length = args.length; ((i < length)); i++) {\n jQuery(args[i])[original](this);\n };\n ;\n });\n };\n });\n jQuery.each({\n removeAttr: function(JSBNG__name) {\n jQuery.attr(this, JSBNG__name, \"\");\n if (((this.nodeType == 1))) {\n this.removeAttribute(JSBNG__name);\n }\n ;\n ;\n },\n addClass: function(classNames) {\n jQuery.className.add(this, classNames);\n },\n removeClass: function(classNames) {\n jQuery.className.remove(this, classNames);\n },\n toggleClass: function(classNames) {\n jQuery.className[((jQuery.className.has(this, classNames) ? \"remove\" : \"add\"))](this, classNames);\n },\n remove: function(selector) {\n if (((!selector || jQuery.filter(selector, [this,]).r.length))) {\n jQuery(\"*\", this).add(this).each(function() {\n jQuery.JSBNG__event.remove(this);\n jQuery.removeData(this);\n });\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n ;\n ;\n }\n ;\n ;\n },\n empty: function() {\n jQuery(\"\\u003E*\", this).remove();\n while (this.firstChild) {\n this.removeChild(this.firstChild);\n };\n ;\n }\n }, function(JSBNG__name, fn) {\n jQuery.fn[JSBNG__name] = function() {\n return this.each(fn, arguments);\n };\n });\n jQuery.each([\"Height\",\"Width\",], function(i, JSBNG__name) {\n var type = JSBNG__name.toLowerCase();\n jQuery.fn[type] = function(size) {\n return ((((this[0] == window)) ? ((((((((jQuery.browser.JSBNG__opera && JSBNG__document.body[((\"client\" + JSBNG__name))])) || ((jQuery.browser.safari && window[((\"JSBNG__inner\" + JSBNG__name))])))) || ((((JSBNG__document.compatMode == \"CSS1Compat\")) && JSBNG__document.documentElement[((\"client\" + JSBNG__name))])))) || JSBNG__document.body[((\"client\" + JSBNG__name))])) : ((((this[0] == JSBNG__document)) ? Math.max(Math.max(JSBNG__document.body[((\"JSBNG__scroll\" + JSBNG__name))], JSBNG__document.documentElement[((\"JSBNG__scroll\" + JSBNG__name))]), Math.max(JSBNG__document.body[((\"offset\" + JSBNG__name))], JSBNG__document.documentElement[((\"offset\" + JSBNG__name))])) : ((((size == undefined)) ? ((this.length ? jQuery.css(this[0], type) : null)) : this.css(type, ((((size.constructor == String)) ? size : ((size + \"px\")))))))))));\n };\n });\n function num(elem, prop) {\n return ((((elem[0] && parseInt(jQuery.curCSS(elem[0], prop, true), 10))) || 0));\n };\n ;\n var chars = ((((jQuery.browser.safari && ((parseInt(jQuery.browser.version) < 417)))) ? \"(?:[\\\\w*_-]|\\\\\\\\.)\" : \"(?:[\\\\w\\u0128-\\uffff*_-]|\\\\\\\\.)\")), quickChild = new RegExp(((((\"^\\u003E\\\\s*(\" + chars)) + \"+)\"))), quickID = new RegExp(((((((((\"^(\" + chars)) + \"+)(#)(\")) + chars)) + \"+)\"))), quickClass = new RegExp(((((\"^([#.]?)(\" + chars)) + \"*)\")));\n jQuery.extend({\n expr: {\n \"\": function(a, i, m) {\n return ((((m[2] == \"*\")) || jQuery.nodeName(a, m[2])));\n },\n \"#\": function(a, i, m) {\n return ((a.getAttribute(\"id\") == m[2]));\n },\n \":\": {\n lt: function(a, i, m) {\n return ((i < ((m[3] - 0))));\n },\n gt: function(a, i, m) {\n return ((i > ((m[3] - 0))));\n },\n nth: function(a, i, m) {\n return ((((m[3] - 0)) == i));\n },\n eq: function(a, i, m) {\n return ((((m[3] - 0)) == i));\n },\n first: function(a, i) {\n return ((i == 0));\n },\n last: function(a, i, m, r) {\n return ((i == ((r.length - 1))));\n },\n even: function(a, i) {\n return ((((i % 2)) == 0));\n },\n odd: function(a, i) {\n return ((i % 2));\n },\n \"first-child\": function(a) {\n return ((a.parentNode.getElementsByTagName(\"*\")[0] == a));\n },\n \"last-child\": function(a) {\n return ((jQuery.nth(a.parentNode.lastChild, 1, \"previousSibling\") == a));\n },\n \"only-child\": function(a) {\n return !jQuery.nth(a.parentNode.lastChild, 2, \"previousSibling\");\n },\n parent: function(a) {\n return a.firstChild;\n },\n empty: function(a) {\n return !a.firstChild;\n },\n contains: function(a, i, m) {\n return ((((((((a.textContent || a.innerText)) || jQuery(a).text())) || \"\")).indexOf(m[3]) >= 0));\n },\n visible: function(a) {\n return ((((((\"hidden\" != a.type)) && ((jQuery.css(a, \"display\") != \"none\")))) && ((jQuery.css(a, \"visibility\") != \"hidden\"))));\n },\n hidden: function(a) {\n return ((((((\"hidden\" == a.type)) || ((jQuery.css(a, \"display\") == \"none\")))) || ((jQuery.css(a, \"visibility\") == \"hidden\"))));\n },\n enabled: function(a) {\n return !a.disabled;\n },\n disabled: function(a) {\n return a.disabled;\n },\n checked: function(a) {\n return a.checked;\n },\n selected: function(a) {\n return ((a.selected || jQuery.attr(a, \"selected\")));\n },\n text: function(a) {\n return ((\"text\" == a.type));\n },\n radio: function(a) {\n return ((\"radio\" == a.type));\n },\n checkbox: function(a) {\n return ((\"checkbox\" == a.type));\n },\n file: function(a) {\n return ((\"file\" == a.type));\n },\n password: function(a) {\n return ((\"password\" == a.type));\n },\n submit: function(a) {\n return ((\"submit\" == a.type));\n },\n image: function(a) {\n return ((\"image\" == a.type));\n },\n reset: function(a) {\n return ((\"reset\" == a.type));\n },\n button: function(a) {\n return ((((\"button\" == a.type)) || jQuery.nodeName(a, \"button\")));\n },\n input: function(a) {\n return /input|select|textarea|button/i.test(a.nodeName);\n },\n has: function(a, i, m) {\n return jQuery.JSBNG__find(m[3], a).length;\n },\n header: function(a) {\n return /h\\d/i.test(a.nodeName);\n },\n animated: function(a) {\n return jQuery.grep(jQuery.timers, function(fn) {\n return ((a == fn.elem));\n }).length;\n }\n }\n },\n parse: [/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *('?\"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\(\"?'?(.*?(\\(.*?\\))?[^(]*?)\"?'?\\)/,new RegExp(((((\"^([:.#]*)(\" + chars)) + \"+)\"))),],\n multiFilter: function(expr, elems, not) {\n var old, cur = [];\n while (((expr && ((expr != old))))) {\n old = expr;\n var f = jQuery.filter(expr, elems, not);\n expr = f.t.replace(/^\\s*,\\s*/, \"\");\n cur = ((not ? elems = f.r : jQuery.merge(cur, f.r)));\n };\n ;\n return cur;\n },\n JSBNG__find: function(t, context) {\n if (((typeof t != \"string\"))) {\n return [t,];\n }\n ;\n ;\n if (((((context && ((context.nodeType != 1)))) && ((context.nodeType != 9))))) {\n return [];\n }\n ;\n ;\n context = ((context || JSBNG__document));\n var ret = [context,], done = [], last, nodeName;\n while (((t && ((last != t))))) {\n var r = [];\n last = t;\n t = jQuery.trim(t);\n var foundToken = false, re = quickChild, m = re.exec(t);\n if (m) {\n nodeName = m[1].toUpperCase();\n for (var i = 0; ret[i]; i++) {\n for (var c = ret[i].firstChild; c; c = c.nextSibling) {\n if (((((c.nodeType == 1)) && ((((nodeName == \"*\")) || ((c.nodeName.toUpperCase() == nodeName))))))) {\n r.push(c);\n }\n ;\n ;\n };\n ;\n };\n ;\n ret = r;\n t = t.replace(re, \"\");\n if (((t.indexOf(\" \") == 0))) {\n continue;\n }\n ;\n ;\n foundToken = true;\n }\n else {\n re = /^([>+~])\\s*(\\w*)/i;\n if ((((m = re.exec(t)) != null))) {\n r = [];\n var merge = {\n };\n nodeName = m[2].toUpperCase();\n m = m[1];\n for (var j = 0, rl = ret.length; ((j < rl)); j++) {\n var n = ((((((m == \"~\")) || ((m == \"+\")))) ? ret[j].nextSibling : ret[j].firstChild));\n for (; n; n = n.nextSibling) {\n if (((n.nodeType == 1))) {\n var id = jQuery.data(n);\n if (((((m == \"~\")) && merge[id]))) {\n break;\n }\n ;\n ;\n if (((!nodeName || ((n.nodeName.toUpperCase() == nodeName))))) {\n if (((m == \"~\"))) {\n merge[id] = true;\n }\n ;\n ;\n r.push(n);\n }\n ;\n ;\n if (((m == \"+\"))) {\n break;\n }\n ;\n ;\n }\n ;\n ;\n };\n ;\n };\n ;\n ret = r;\n t = jQuery.trim(t.replace(re, \"\"));\n foundToken = true;\n }\n ;\n ;\n }\n ;\n ;\n if (((t && !foundToken))) {\n if (!t.indexOf(\",\")) {\n if (((context == ret[0]))) {\n ret.shift();\n }\n ;\n ;\n done = jQuery.merge(done, ret);\n r = ret = [context,];\n t = ((\" \" + t.substr(1, t.length)));\n }\n else {\n var re2 = quickID;\n var m = re2.exec(t);\n if (m) {\n m = [0,m[2],m[3],m[1],];\n }\n else {\n re2 = quickClass;\n m = re2.exec(t);\n }\n ;\n ;\n m[2] = m[2].replace(/\\\\/g, \"\");\n var elem = ret[((ret.length - 1))];\n if (((((((((m[1] == \"#\")) && elem)) && elem.getElementById)) && !jQuery.isXMLDoc(elem)))) {\n var oid = elem.getElementById(m[2]);\n if (((((((((jQuery.browser.msie || jQuery.browser.JSBNG__opera)) && oid)) && ((typeof oid.id == \"string\")))) && ((oid.id != m[2]))))) {\n oid = jQuery(((((\"[@id=\\\"\" + m[2])) + \"\\\"]\")), elem)[0];\n }\n ;\n ;\n ret = r = ((((oid && ((!m[3] || jQuery.nodeName(oid, m[3]))))) ? [oid,] : []));\n }\n else {\n for (var i = 0; ret[i]; i++) {\n var tag = ((((((m[1] == \"#\")) && m[3])) ? m[3] : ((((((m[1] != \"\")) || ((m[0] == \"\")))) ? \"*\" : m[2]))));\n if (((((tag == \"*\")) && ((ret[i].nodeName.toLowerCase() == \"object\"))))) {\n tag = \"param\";\n }\n ;\n ;\n r = jQuery.merge(r, ret[i].getElementsByTagName(tag));\n };\n ;\n if (((m[1] == \".\"))) {\n r = jQuery.classFilter(r, m[2]);\n }\n ;\n ;\n if (((m[1] == \"#\"))) {\n var tmp = [];\n for (var i = 0; r[i]; i++) {\n if (((r[i].getAttribute(\"id\") == m[2]))) {\n tmp = [r[i],];\n break;\n }\n ;\n ;\n };\n ;\n r = tmp;\n }\n ;\n ;\n ret = r;\n }\n ;\n ;\n t = t.replace(re2, \"\");\n }\n ;\n ;\n }\n ;\n ;\n if (t) {\n var val = jQuery.filter(t, r);\n ret = r = val.r;\n t = jQuery.trim(val.t);\n }\n ;\n ;\n };\n ;\n if (t) {\n ret = [];\n }\n ;\n ;\n if (((ret && ((context == ret[0]))))) {\n ret.shift();\n }\n ;\n ;\n done = jQuery.merge(done, ret);\n return done;\n },\n classFilter: function(r, m, not) {\n m = ((((\" \" + m)) + \" \"));\n var tmp = [];\n for (var i = 0; r[i]; i++) {\n var pass = ((((((\" \" + r[i].className)) + \" \")).indexOf(m) >= 0));\n if (((((!not && pass)) || ((not && !pass))))) {\n tmp.push(r[i]);\n }\n ;\n ;\n };\n ;\n return tmp;\n },\n filter: function(t, r, not) {\n var last;\n while (((t && ((t != last))))) {\n last = t;\n var p = jQuery.parse, m;\n for (var i = 0; p[i]; i++) {\n m = p[i].exec(t);\n if (m) {\n t = t.substring(m[0].length);\n m[2] = m[2].replace(/\\\\/g, \"\");\n break;\n }\n ;\n ;\n };\n ;\n if (!m) {\n break;\n }\n ;\n ;\n if (((((m[1] == \":\")) && ((m[2] == \"not\"))))) {\n r = ((isSimple.test(m[3]) ? jQuery.filter(m[3], r, true).r : jQuery(r).not(m[3])));\n }\n else {\n if (((m[1] == \".\"))) {\n r = jQuery.classFilter(r, m[2], not);\n }\n else {\n if (((m[1] == \"[\"))) {\n var tmp = [], type = m[3];\n for (var i = 0, rl = r.length; ((i < rl)); i++) {\n var a = r[i], z = a[((jQuery.props[m[2]] || m[2]))];\n if (((((z == null)) || /href|src|selected/.test(m[2])))) {\n z = ((jQuery.attr(a, m[2]) || \"\"));\n }\n ;\n ;\n if (((((((((((((((((type == \"\")) && !!z)) || ((((type == \"=\")) && ((z == m[5])))))) || ((((type == \"!=\")) && ((z != m[5])))))) || ((((((type == \"^=\")) && z)) && !z.indexOf(m[5]))))) || ((((type == \"$=\")) && ((z.substr(((z.length - m[5].length))) == m[5])))))) || ((((((type == \"*=\")) || ((type == \"~=\")))) && ((z.indexOf(m[5]) >= 0)))))) ^ not))) {\n tmp.push(a);\n }\n ;\n ;\n };\n ;\n r = tmp;\n }\n else {\n if (((((m[1] == \":\")) && ((m[2] == \"nth-child\"))))) {\n var merge = {\n }, tmp = [], test = /(-?)(\\d*)n((?:\\+|-)?\\d*)/.exec(((((((((((m[3] == \"even\")) && \"2n\")) || ((((m[3] == \"odd\")) && \"2n+1\")))) || ((!/\\D/.test(m[3]) && ((\"0n+\" + m[3])))))) || m[3]))), first = ((((test[1] + ((test[2] || 1)))) - 0)), last = ((test[3] - 0));\n for (var i = 0, rl = r.length; ((i < rl)); i++) {\n var node = r[i], parentNode = node.parentNode, id = jQuery.data(parentNode);\n if (!merge[id]) {\n var c = 1;\n for (var n = parentNode.firstChild; n; n = n.nextSibling) {\n if (((n.nodeType == 1))) {\n n.nodeIndex = c++;\n }\n ;\n ;\n };\n ;\n merge[id] = true;\n }\n ;\n ;\n var add = false;\n if (((first == 0))) {\n if (((node.nodeIndex == last))) {\n add = true;\n }\n ;\n ;\n }\n else {\n if (((((((((node.nodeIndex - last)) % first)) == 0)) && ((((((node.nodeIndex - last)) / first)) >= 0))))) {\n add = true;\n }\n ;\n ;\n }\n ;\n ;\n if (((add ^ not))) {\n tmp.push(node);\n }\n ;\n ;\n };\n ;\n r = tmp;\n }\n else {\n var fn = jQuery.expr[m[1]];\n if (((typeof fn == \"object\"))) {\n fn = fn[m[2]];\n }\n ;\n ;\n if (((typeof fn == \"string\"))) {\n fn = eval(((((\"false||function(a,i){return \" + fn)) + \";}\")));\n }\n ;\n ;\n r = jQuery.grep(r, function(elem, i) {\n return fn(elem, i, m, r);\n }, not);\n }\n ;\n ;\n }\n ;\n ;\n }\n ;\n ;\n }\n ;\n ;\n };\n ;\n return {\n r: r,\n t: t\n };\n },\n dir: function(elem, dir) {\n var matched = [], cur = elem[dir];\n while (((cur && ((cur != JSBNG__document))))) {\n if (((cur.nodeType == 1))) {\n matched.push(cur);\n }\n ;\n ;\n cur = cur[dir];\n };\n ;\n return matched;\n },\n nth: function(cur, result, dir, elem) {\n result = ((result || 1));\n var num = 0;\n for (; cur; cur = cur[dir]) {\n if (((((cur.nodeType == 1)) && ((++num == result))))) {\n break;\n }\n ;\n ;\n };\n ;\n return cur;\n },\n sibling: function(n, elem) {\n var r = [];\n for (; n; n = n.nextSibling) {\n if (((((n.nodeType == 1)) && ((n != elem))))) {\n r.push(n);\n }\n ;\n ;\n };\n ;\n return r;\n }\n });\n jQuery.JSBNG__event = {\n add: function(elem, types, handler, data) {\n if (((((elem.nodeType == 3)) || ((elem.nodeType == 8))))) {\n return;\n }\n ;\n ;\n if (((jQuery.browser.msie && elem.JSBNG__setInterval))) {\n elem = window;\n }\n ;\n ;\n if (!handler.guid) {\n handler.guid = this.guid++;\n }\n ;\n ;\n if (((data != undefined))) {\n var fn = handler;\n handler = this.proxy(fn, function() {\n return fn.apply(this, arguments);\n });\n handler.data = data;\n }\n ;\n ;\n var events = ((jQuery.data(elem, \"events\") || jQuery.data(elem, \"events\", {\n }))), handle = ((jQuery.data(elem, \"handle\") || jQuery.data(elem, \"handle\", function() {\n if (((((typeof jQuery != \"undefined\")) && !jQuery.JSBNG__event.triggered))) {\n return jQuery.JSBNG__event.handle.apply(arguments.callee.elem, arguments);\n }\n ;\n ;\n })));\n handle.elem = elem;\n jQuery.each(types.split(/\\s+/), function(index, type) {\n var parts = type.split(\".\");\n type = parts[0];\n handler.type = parts[1];\n var handlers = events[type];\n if (!handlers) {\n handlers = events[type] = {\n };\n if (((!jQuery.JSBNG__event.special[type] || ((jQuery.JSBNG__event.special[type].setup.call(elem) === false))))) {\n if (elem.JSBNG__addEventListener) {\n elem.JSBNG__addEventListener(type, handle, false);\n }\n else {\n if (elem.JSBNG__attachEvent) {\n elem.JSBNG__attachEvent(((\"JSBNG__on\" + type)), handle);\n }\n ;\n ;\n }\n ;\n ;\n }\n ;\n ;\n }\n ;\n ;\n handlers[handler.guid] = handler;\n jQuery.JSBNG__event.global[type] = true;\n });\n elem = null;\n },\n guid: 1,\n global: {\n },\n remove: function(elem, types, handler) {\n if (((((elem.nodeType == 3)) || ((elem.nodeType == 8))))) {\n return;\n }\n ;\n ;\n var events = jQuery.data(elem, \"events\"), ret, index;\n if (events) {\n if (((((types == undefined)) || ((((typeof types == \"string\")) && ((types.charAt(0) == \".\"))))))) {\n {\n var fin19keys = ((window.top.JSBNG_Replay.forInKeys)((events))), fin19i = (0);\n var type;\n for (; (fin19i < fin19keys.length); (fin19i++)) {\n ((type) = (fin19keys[fin19i]));\n {\n this.remove(elem, ((type + ((types || \"\")))));\n };\n };\n };\n ;\n }\n else {\n if (types.type) {\n handler = types.handler;\n types = types.type;\n }\n ;\n ;\n jQuery.each(types.split(/\\s+/), function(index, type) {\n var parts = type.split(\".\");\n type = parts[0];\n if (events[type]) {\n if (handler) {\n delete events[type][handler.guid];\n }\n else {\n {\n var fin20keys = ((window.top.JSBNG_Replay.forInKeys)((events[type]))), fin20i = (0);\n (0);\n for (; (fin20i < fin20keys.length); (fin20i++)) {\n ((handler) = (fin20keys[fin20i]));\n {\n if (((!parts[1] || ((events[type][handler].type == parts[1]))))) {\n delete events[type][handler];\n }\n ;\n ;\n };\n };\n };\n ;\n }\n ;\n ;\n {\n var fin21keys = ((window.top.JSBNG_Replay.forInKeys)((events[type]))), fin21i = (0);\n (0);\n for (; (fin21i < fin21keys.length); (fin21i++)) {\n ((ret) = (fin21keys[fin21i]));\n {\n break;\n };\n };\n };\n ;\n if (!ret) {\n if (((!jQuery.JSBNG__event.special[type] || ((jQuery.JSBNG__event.special[type].teardown.call(elem) === false))))) {\n if (elem.JSBNG__removeEventListener) {\n elem.JSBNG__removeEventListener(type, jQuery.data(elem, \"handle\"), false);\n }\n else {\n if (elem.JSBNG__detachEvent) {\n elem.JSBNG__detachEvent(((\"JSBNG__on\" + type)), jQuery.data(elem, \"handle\"));\n }\n ;\n ;\n }\n ;\n ;\n }\n ;\n ;\n ret = null;\n delete events[type];\n }\n ;\n ;\n }\n ;\n ;\n });\n }\n ;\n ;\n {\n var fin22keys = ((window.top.JSBNG_Replay.forInKeys)((events))), fin22i = (0);\n (0);\n for (; (fin22i < fin22keys.length); (fin22i++)) {\n ((ret) = (fin22keys[fin22i]));\n {\n break;\n };\n };\n };\n ;\n if (!ret) {\n var handle = jQuery.data(elem, \"handle\");\n if (handle) {\n handle.elem = null;\n }\n ;\n ;\n jQuery.removeData(elem, \"events\");\n jQuery.removeData(elem, \"handle\");\n }\n ;\n ;\n }\n ;\n ;\n },\n trigger: function(type, data, elem, donative, extra) {\n data = jQuery.makeArray(data);\n if (((type.indexOf(\"!\") >= 0))) {\n type = type.slice(0, -1);\n var exclusive = true;\n }\n ;\n ;\n if (!elem) {\n if (this.global[type]) {\n jQuery(\"*\").add([window,JSBNG__document,]).trigger(type, data);\n }\n ;\n ;\n }\n else {\n if (((((elem.nodeType == 3)) || ((elem.nodeType == 8))))) {\n return undefined;\n }\n ;\n ;\n var val, ret, fn = jQuery.isFunction(((elem[type] || null))), JSBNG__event = ((!data[0] || !data[0].preventDefault));\n if (JSBNG__event) {\n data.unshift({\n type: type,\n target: elem,\n preventDefault: function() {\n \n },\n stopPropagation: function() {\n \n },\n timeStamp: now()\n });\n data[0][expando] = true;\n }\n ;\n ;\n data[0].type = type;\n if (exclusive) {\n data[0].exclusive = true;\n }\n ;\n ;\n var handle = jQuery.data(elem, \"handle\");\n if (handle) {\n val = handle.apply(elem, data);\n }\n ;\n ;\n if (((((((!fn || ((jQuery.nodeName(elem, \"a\") && ((type == \"click\")))))) && elem[((\"JSBNG__on\" + type))])) && ((elem[((\"JSBNG__on\" + type))].apply(elem, data) === false))))) {\n val = false;\n }\n ;\n ;\n if (JSBNG__event) {\n data.shift();\n }\n ;\n ;\n if (((extra && jQuery.isFunction(extra)))) {\n ret = extra.apply(elem, ((((val == null)) ? data : data.concat(val))));\n if (((ret !== undefined))) {\n val = ret;\n }\n ;\n ;\n }\n ;\n ;\n if (((((((fn && ((donative !== false)))) && ((val !== false)))) && !((jQuery.nodeName(elem, \"a\") && ((type == \"click\"))))))) {\n this.triggered = true;\n try {\n elem[type]();\n } catch (e) {\n \n };\n ;\n }\n ;\n ;\n this.triggered = false;\n }\n ;\n ;\n return val;\n },\n handle: function(JSBNG__event) {\n var val, ret, namespace, all, handlers;\n JSBNG__event = arguments[0] = jQuery.JSBNG__event.fix(((JSBNG__event || window.JSBNG__event)));\n namespace = JSBNG__event.type.split(\".\");\n JSBNG__event.type = namespace[0];\n namespace = namespace[1];\n all = ((!namespace && !JSBNG__event.exclusive));\n handlers = ((jQuery.data(this, \"events\") || {\n }))[JSBNG__event.type];\n {\n var fin23keys = ((window.top.JSBNG_Replay.forInKeys)((handlers))), fin23i = (0);\n var j;\n for (; (fin23i < fin23keys.length); (fin23i++)) {\n ((j) = (fin23keys[fin23i]));\n {\n var handler = handlers[j];\n if (((all || ((handler.type == namespace))))) {\n JSBNG__event.handler = handler;\n JSBNG__event.data = handler.data;\n ret = handler.apply(this, arguments);\n if (((val !== false))) {\n val = ret;\n }\n ;\n ;\n if (((ret === false))) {\n JSBNG__event.preventDefault();\n JSBNG__event.stopPropagation();\n }\n ;\n ;\n }\n ;\n ;\n };\n };\n };\n ;\n return val;\n },\n fix: function(JSBNG__event) {\n if (((JSBNG__event[expando] == true))) {\n return JSBNG__event;\n }\n ;\n ;\n var originalEvent = JSBNG__event;\n &nbs