alexplayzz50

agar.io master.js

Mar 25th, 2017
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 416.75 KB | None | 0 0
  1. (function() {
  2. function add(step) {
  3. function func(collection, callback, basis, indices, i, value) {
  4. for (;i >= 0 && value > i;i += step) {
  5. var index = indices ? indices[i] : i;
  6. basis = callback(basis, collection[index], index, collection);
  7. }
  8. return basis;
  9. }
  10. return function(result, callback, basis, thisArg) {
  11. callback = bind(callback, thisArg, 4);
  12. var indices = !isArray(result) && _.keys(result);
  13. var udataCur = (indices || result).length;
  14. var i = step > 0 ? 0 : udataCur - 1;
  15. return arguments.length < 3 && (basis = result[indices ? indices[i] : i], i += step), func(result, callback, basis, indices, i, udataCur);
  16. };
  17. }
  18. function check(increment) {
  19. return function(data, callback, thisObj) {
  20. callback = makeIterator(callback, thisObj);
  21. var ret = value(data);
  22. var index = increment > 0 ? 0 : ret - 1;
  23. for (;index >= 0 && ret > index;index += increment) {
  24. if (callback(data[index], index, data)) {
  25. return index;
  26. }
  27. }
  28. return-1;
  29. };
  30. }
  31. function init(direction, require, cb) {
  32. return function(arg, val, index) {
  33. var i = 0;
  34. var n = value(arg);
  35. if ("number" == typeof index) {
  36. if (direction > 0) {
  37. i = index >= 0 ? index : Math.max(index + n, i);
  38. } else {
  39. n = index >= 0 ? Math.min(index + 1, n) : index + n + 1;
  40. }
  41. } else {
  42. if (cb && (index && n)) {
  43. return index = cb(arg, val), arg[index] === val ? index : -1;
  44. }
  45. }
  46. if (val !== val) {
  47. return index = require(slice.call(arg, i, n), _.isNaN), index >= 0 ? index + i : -1;
  48. }
  49. index = direction > 0 ? i : n - 1;
  50. for (;index >= 0 && n > index;index += direction) {
  51. if (arg[index] === val) {
  52. return index;
  53. }
  54. }
  55. return-1;
  56. };
  57. }
  58. function remove(obj, arr) {
  59. var index = tokenized.length;
  60. var c = obj.constructor;
  61. var extention = _.isFunction(c) && c.prototype || ObjProto;
  62. var key = "constructor";
  63. if (_.has(obj, key)) {
  64. if (!_.contains(arr, key)) {
  65. arr.push(key);
  66. }
  67. }
  68. for (;index--;) {
  69. key = tokenized[index];
  70. if (key in obj) {
  71. if (obj[key] !== extention[key]) {
  72. if (!_.contains(arr, key)) {
  73. arr.push(key);
  74. }
  75. }
  76. }
  77. }
  78. }
  79. var root = this;
  80. var previousUnderscore = root._;
  81. var ArrayProto = Array.prototype;
  82. var ObjProto = Object.prototype;
  83. var FuncProto = Function.prototype;
  84. var push = ArrayProto.push;
  85. var slice = ArrayProto.slice;
  86. var toString = ObjProto.toString;
  87. var hasOwnProperty = ObjProto.hasOwnProperty;
  88. var nativeIsArray = Array.isArray;
  89. var nativeKeys = Object.keys;
  90. var nativeBind = FuncProto.bind;
  91. var objectCreate = Object.create;
  92. var ctor = function() {
  93. };
  94. var _ = function(obj) {
  95. return obj instanceof _ ? obj : this instanceof _ ? void(this._wrapped = obj) : new _(obj);
  96. };
  97. if ("undefined" != typeof exports) {
  98. if ("undefined" != typeof module) {
  99. if (module.exports) {
  100. exports = module.exports = _;
  101. }
  102. }
  103. exports._ = _;
  104. } else {
  105. root._ = _;
  106. }
  107. _.VERSION = "1.8.3";
  108. var bind = function(func, thisArg, deepDataAndEvents) {
  109. if (thisArg === void 0) {
  110. return func;
  111. }
  112. switch(null == deepDataAndEvents ? 3 : deepDataAndEvents) {
  113. case 1:
  114. return function(accumulator) {
  115. return func.call(thisArg, accumulator);
  116. };
  117. case 2:
  118. return function(accumulator, index) {
  119. return func.call(thisArg, accumulator, index);
  120. };
  121. case 3:
  122. return function(accumulator, index, object) {
  123. return func.call(thisArg, accumulator, index, object);
  124. };
  125. case 4:
  126. return function(accumulator, index, object, collection) {
  127. return func.call(thisArg, accumulator, index, object, collection);
  128. };
  129. }
  130. return function() {
  131. return func.apply(thisArg, arguments);
  132. };
  133. };
  134. var makeIterator = function(func, thisObj, deepDataAndEvents) {
  135. return null == func ? _.identity : _.isFunction(func) ? bind(func, thisObj, deepDataAndEvents) : _.isObject(func) ? _.matcher(func) : _.property(func);
  136. };
  137. _.iteratee = function(callback, thisObj) {
  138. return makeIterator(callback, thisObj, 1 / 0);
  139. };
  140. var some = function(main_callback, dataAndEvents) {
  141. return function(result) {
  142. var argLength = arguments.length;
  143. if (2 > argLength || null == result) {
  144. return result;
  145. }
  146. var argsIndex = 1;
  147. for (;argLength > argsIndex;argsIndex++) {
  148. var iterable = arguments[argsIndex];
  149. var keys = main_callback(iterable);
  150. var len = keys.length;
  151. var i = 0;
  152. for (;len > i;i++) {
  153. var key = keys[i];
  154. if (!(dataAndEvents && result[key] !== void 0)) {
  155. result[key] = iterable[key];
  156. }
  157. }
  158. }
  159. return result;
  160. };
  161. };
  162. var create = function(proto) {
  163. if (!_.isObject(proto)) {
  164. return{};
  165. }
  166. if (objectCreate) {
  167. return objectCreate(proto);
  168. }
  169. ctor.prototype = proto;
  170. var child = new ctor;
  171. return ctor.prototype = null, child;
  172. };
  173. var property = function(key) {
  174. return function($cookies) {
  175. return null == $cookies ? void 0 : $cookies[key];
  176. };
  177. };
  178. var max = Math.pow(2, 53) - 1;
  179. var value = property("length");
  180. var isArray = function(obj) {
  181. var val = value(obj);
  182. return "number" == typeof val && (val >= 0 && max >= val);
  183. };
  184. _.each = _.forEach = function(obj, callback, thisArg) {
  185. callback = bind(callback, thisArg);
  186. var i;
  187. var l;
  188. if (isArray(obj)) {
  189. i = 0;
  190. l = obj.length;
  191. for (;l > i;i++) {
  192. callback(obj[i], i, obj);
  193. }
  194. } else {
  195. var items = _.keys(obj);
  196. i = 0;
  197. l = items.length;
  198. for (;l > i;i++) {
  199. callback(obj[items[i]], items[i], obj);
  200. }
  201. }
  202. return obj;
  203. };
  204. _.map = _.collect = function(obj, callback, thisObj) {
  205. callback = makeIterator(callback, thisObj);
  206. var indices = !isArray(obj) && _.keys(obj);
  207. var indents = (indices || obj).length;
  208. var result = Array(indents);
  209. var i = 0;
  210. for (;indents > i;i++) {
  211. var index = indices ? indices[i] : i;
  212. result[i] = callback(obj[index], index, obj);
  213. }
  214. return result;
  215. };
  216. _.reduce = _.foldl = _.inject = add(1);
  217. _.reduceRight = _.foldr = add(-1);
  218. _.find = _.detect = function(item, f, remove) {
  219. var root;
  220. return root = isArray(item) ? _.findIndex(item, f, remove) : _.findKey(item, f, remove), root !== void 0 && root !== -1 ? item[root] : void 0;
  221. };
  222. _.filter = _.select = function(obj, callback, thisObj) {
  223. var acc = [];
  224. return callback = makeIterator(callback, thisObj), _.each(obj, function(node, mongoObject, arg) {
  225. if (callback(node, mongoObject, arg)) {
  226. acc.push(node);
  227. }
  228. }), acc;
  229. };
  230. _.reject = function(qualifier, iterator, context) {
  231. return _.filter(qualifier, _.negate(makeIterator(iterator)), context);
  232. };
  233. _.every = _.all = function(object, callback, thisObj) {
  234. callback = makeIterator(callback, thisObj);
  235. var list = !isArray(object) && _.keys(object);
  236. var cnl = (list || object).length;
  237. var value = 0;
  238. for (;cnl > value;value++) {
  239. var index = list ? list[value] : value;
  240. if (!callback(object[index], index, object)) {
  241. return false;
  242. }
  243. }
  244. return true;
  245. };
  246. _.some = _.any = function(collection, callback, thisObj) {
  247. callback = makeIterator(callback, thisObj);
  248. var list = !isArray(collection) && _.keys(collection);
  249. var cnl = (list || collection).length;
  250. var value = 0;
  251. for (;cnl > value;value++) {
  252. var index = list ? list[value] : value;
  253. if (callback(collection[index], index, collection)) {
  254. return true;
  255. }
  256. }
  257. return false;
  258. };
  259. _.contains = _.includes = _.include = function(val, key, id, msg) {
  260. return isArray(val) || (val = _.values(val)), ("number" != typeof id || msg) && (id = 0), _.indexOf(val, key, id) >= 0;
  261. };
  262. _.invoke = function(val, method) {
  263. var args = slice.call(arguments, 2);
  264. var isFunc = _.isFunction(method);
  265. return _.map(val, function(value) {
  266. var wrapper = isFunc ? method : value[method];
  267. return null == wrapper ? wrapper : wrapper.apply(value, args);
  268. });
  269. };
  270. _.pluck = function(obj, key) {
  271. return _.map(obj, _.property(key));
  272. };
  273. _.where = function(qualifier, attrs) {
  274. return _.filter(qualifier, _.matcher(attrs));
  275. };
  276. _.findWhere = function(expr, attrs) {
  277. return _.find(expr, _.matcher(attrs));
  278. };
  279. _.max = function(a, iterator, thisObj) {
  280. var obj;
  281. var i;
  282. var value = -1 / 0;
  283. var longest = -1 / 0;
  284. if (null == iterator && null != a) {
  285. a = isArray(a) ? a : _.values(a);
  286. var key2 = 0;
  287. var al = a.length;
  288. for (;al > key2;key2++) {
  289. obj = a[key2];
  290. if (obj > value) {
  291. value = obj;
  292. }
  293. }
  294. } else {
  295. iterator = makeIterator(iterator, thisObj);
  296. _.each(a, function(x, opt_obj2, capture) {
  297. i = iterator(x, opt_obj2, capture);
  298. if (i > longest || i === -1 / 0 && value === -1 / 0) {
  299. value = x;
  300. longest = i;
  301. }
  302. });
  303. }
  304. return value;
  305. };
  306. _.min = function(obj, iterator, thisObj) {
  307. var maxValue;
  308. var temp;
  309. var value = 1 / 0;
  310. var max = 1 / 0;
  311. if (null == iterator && null != obj) {
  312. obj = isArray(obj) ? obj : _.values(obj);
  313. var i = 0;
  314. var l = obj.length;
  315. for (;l > i;i++) {
  316. maxValue = obj[i];
  317. if (value > maxValue) {
  318. value = maxValue;
  319. }
  320. }
  321. } else {
  322. iterator = makeIterator(iterator, thisObj);
  323. _.each(obj, function(x, index, arr) {
  324. temp = iterator(x, index, arr);
  325. if (max > temp || 1 / 0 === temp && 1 / 0 === value) {
  326. value = x;
  327. max = temp;
  328. }
  329. });
  330. }
  331. return value;
  332. };
  333. _.shuffle = function(obj) {
  334. var j;
  335. var values = isArray(obj) ? obj : _.values(obj);
  336. var n = values.length;
  337. var result = Array(n);
  338. var i = 0;
  339. for (;n > i;i++) {
  340. j = _.random(0, i);
  341. if (j !== i) {
  342. result[i] = result[j];
  343. }
  344. result[j] = values[i];
  345. }
  346. return result;
  347. };
  348. _.sample = function(obj, n, guard) {
  349. return null == n || guard ? (isArray(obj) || (obj = _.values(obj)), obj[_.random(obj.length - 1)]) : _.shuffle(obj).slice(0, Math.max(0, n));
  350. };
  351. _.sortBy = function(val, callback, thisObj) {
  352. return callback = makeIterator(callback, thisObj), _.pluck(_.map(val, function(value, index, collection) {
  353. return{
  354. value : value,
  355. index : index,
  356. criteria : callback(value, index, collection)
  357. };
  358. }).sort(function(left, right) {
  359. var a = left.criteria;
  360. var b = right.criteria;
  361. if (a !== b) {
  362. if (a > b || a === void 0) {
  363. return 1;
  364. }
  365. if (b > a || b === void 0) {
  366. return-1;
  367. }
  368. }
  369. return left.index - right.index;
  370. }), "value");
  371. };
  372. var group = function(behavior) {
  373. return function(attributes, callback, thisObj) {
  374. var result = {};
  375. return callback = makeIterator(callback, thisObj), _.each(attributes, function(key, i) {
  376. var value = callback(key, i, attributes);
  377. behavior(result, key, value);
  378. }), result;
  379. };
  380. };
  381. _.groupBy = group(function(obj, v, key) {
  382. if (_.has(obj, key)) {
  383. obj[key].push(v);
  384. } else {
  385. obj[key] = [v];
  386. }
  387. });
  388. _.indexBy = group(function(qs, val, i) {
  389. qs[i] = val;
  390. });
  391. _.countBy = group(function(result, dataAndEvents, key) {
  392. if (_.has(result, key)) {
  393. result[key]++;
  394. } else {
  395. result[key] = 1;
  396. }
  397. });
  398. _.toArray = function(obj) {
  399. return obj ? _.isArray(obj) ? slice.call(obj) : isArray(obj) ? _.map(obj, _.identity) : _.values(obj) : [];
  400. };
  401. _.size = function(obj) {
  402. return null == obj ? 0 : isArray(obj) ? obj.length : _.keys(obj).length;
  403. };
  404. _.partition = function(attributes, iterator, thisObj) {
  405. iterator = makeIterator(iterator, thisObj);
  406. var trues = [];
  407. var falses = [];
  408. return _.each(attributes, function(value, index, list) {
  409. (iterator(value, index, list) ? trues : falses).push(value);
  410. }), [trues, falses];
  411. };
  412. _.first = _.head = _.take = function(array, n, guard) {
  413. return null == array ? void 0 : null == n || guard ? array[0] : _.initial(array, array.length - n);
  414. };
  415. _.initial = function(array, t, r) {
  416. return slice.call(array, 0, Math.max(0, array.length - (null == t || r ? 1 : t)));
  417. };
  418. _.last = function(array, n, guard) {
  419. return null == array ? void 0 : null == n || guard ? array[array.length - 1] : _.rest(array, Math.max(0, array.length - n));
  420. };
  421. _.rest = _.tail = _.drop = function(array, t, r) {
  422. return slice.call(array, null == t || r ? 1 : t);
  423. };
  424. _.compact = function(qualifier) {
  425. return _.filter(qualifier, _.identity);
  426. };
  427. var flatten = function(obj, shallow, recurring, dataAndEvents) {
  428. var result = [];
  429. var ri = 0;
  430. var argsIndex = dataAndEvents || 0;
  431. var val = value(obj);
  432. for (;val > argsIndex;argsIndex++) {
  433. var iterable = obj[argsIndex];
  434. if (isArray(iterable) && (_.isArray(iterable) || _.isArguments(iterable))) {
  435. if (!shallow) {
  436. iterable = flatten(iterable, shallow, recurring);
  437. }
  438. var i = 0;
  439. var len = iterable.length;
  440. result.length += len;
  441. for (;len > i;) {
  442. result[ri++] = iterable[i++];
  443. }
  444. } else {
  445. if (!recurring) {
  446. result[ri++] = iterable;
  447. }
  448. }
  449. }
  450. return result;
  451. };
  452. _.flatten = function(array, shallow) {
  453. return flatten(array, shallow, false);
  454. };
  455. _.without = function(array) {
  456. return _.difference(array, slice.call(arguments, 1));
  457. };
  458. _.uniq = _.unique = function(results, isSorted, callback, thisObj) {
  459. if (!_.isBoolean(isSorted)) {
  460. thisObj = callback;
  461. callback = isSorted;
  462. isSorted = false;
  463. }
  464. if (null != callback) {
  465. callback = makeIterator(callback, thisObj);
  466. }
  467. var arr = [];
  468. var current = [];
  469. var i = 0;
  470. var val = value(results);
  471. for (;val > i;i++) {
  472. var item = results[i];
  473. var key = callback ? callback(item, i, results) : item;
  474. if (isSorted) {
  475. if (!(i && current === key)) {
  476. arr.push(item);
  477. }
  478. current = key;
  479. } else {
  480. if (callback) {
  481. if (!_.contains(current, key)) {
  482. current.push(key);
  483. arr.push(item);
  484. }
  485. } else {
  486. if (!_.contains(arr, item)) {
  487. arr.push(item);
  488. }
  489. }
  490. }
  491. }
  492. return arr;
  493. };
  494. _.union = function() {
  495. return _.uniq(flatten(arguments, true, true));
  496. };
  497. _.intersection = function(array) {
  498. var result = [];
  499. var l = arguments.length;
  500. var index = 0;
  501. var idx = value(array);
  502. for (;idx > index;index++) {
  503. var item = array[index];
  504. if (!_.contains(result, item)) {
  505. var i = 1;
  506. for (;l > i && _.contains(arguments[i], item);i++) {
  507. }
  508. if (i === l) {
  509. result.push(item);
  510. }
  511. }
  512. }
  513. return result;
  514. };
  515. _.difference = function(qualifier) {
  516. var rest = flatten(arguments, true, true, 1);
  517. return _.filter(qualifier, function(key) {
  518. return!_.contains(rest, key);
  519. });
  520. };
  521. _.zip = function() {
  522. return _.unzip(arguments);
  523. };
  524. _.unzip = function(args) {
  525. var indents = args && _.max(args, value).length || 0;
  526. var results = Array(indents);
  527. var i = 0;
  528. for (;indents > i;i++) {
  529. results[i] = _.pluck(args, i);
  530. }
  531. return results;
  532. };
  533. _.object = function(list, values) {
  534. var result = {};
  535. var i = 0;
  536. var val = value(list);
  537. for (;val > i;i++) {
  538. if (values) {
  539. result[list[i]] = values[i];
  540. } else {
  541. result[list[i][0]] = list[i][1];
  542. }
  543. }
  544. return result;
  545. };
  546. _.findIndex = check(1);
  547. _.findLastIndex = check(-1);
  548. _.sortedIndex = function(obj, context, iterator, thisObj) {
  549. iterator = makeIterator(iterator, thisObj, 1);
  550. var key = iterator(context);
  551. var low = 0;
  552. var high = value(obj);
  553. for (;high > low;) {
  554. var mid = Math.floor((low + high) / 2);
  555. if (iterator(obj[mid]) < key) {
  556. low = mid + 1;
  557. } else {
  558. high = mid;
  559. }
  560. }
  561. return low;
  562. };
  563. _.indexOf = init(1, _.findIndex, _.sortedIndex);
  564. _.lastIndexOf = init(-1, _.findLastIndex);
  565. _.range = function(start, stop, step) {
  566. if (null == stop) {
  567. stop = start || 0;
  568. start = 0;
  569. }
  570. step = step || 1;
  571. var length = Math.max(Math.ceil((stop - start) / step), 0);
  572. var result = Array(length);
  573. var i = 0;
  574. for (;length > i;i++, start += step) {
  575. result[i] = start;
  576. }
  577. return result;
  578. };
  579. var get = function(func, type, self, obj, args) {
  580. if (!(obj instanceof type)) {
  581. return func.apply(self, args);
  582. }
  583. var instance = create(func.prototype);
  584. var result = func.apply(instance, args);
  585. return _.isObject(result) ? result : instance;
  586. };
  587. _.bind = function(func, fn) {
  588. if (nativeBind && func.bind === nativeBind) {
  589. return nativeBind.apply(func, slice.call(arguments, 1));
  590. }
  591. if (!_.isFunction(func)) {
  592. throw new TypeError("Bind must be called on a function");
  593. }
  594. var args = slice.call(arguments, 2);
  595. var e = function() {
  596. return get(func, e, fn, this, args.concat(slice.call(arguments)));
  597. };
  598. return e;
  599. };
  600. _.partial = function(o) {
  601. var parsed = slice.call(arguments, 1);
  602. var cache = function() {
  603. var x = 0;
  604. var l = parsed.length;
  605. var args = Array(l);
  606. var i = 0;
  607. for (;l > i;i++) {
  608. args[i] = parsed[i] === _ ? arguments[x++] : parsed[i];
  609. }
  610. for (;x < arguments.length;) {
  611. args.push(arguments[x++]);
  612. }
  613. return get(o, cache, this, this, args);
  614. };
  615. return cache;
  616. };
  617. _.bindAll = function(obj) {
  618. var i;
  619. var f;
  620. var l = arguments.length;
  621. if (1 >= l) {
  622. throw new Error("bindAll must be passed function names");
  623. }
  624. i = 1;
  625. for (;l > i;i++) {
  626. f = arguments[i];
  627. obj[f] = _.bind(obj[f], obj);
  628. }
  629. return obj;
  630. };
  631. _.memoize = function(matcherFunction, func) {
  632. var require = function(val) {
  633. var cache = require.cache;
  634. var key = "" + (func ? func.apply(this, arguments) : val);
  635. return _.has(cache, key) || (cache[key] = matcherFunction.apply(this, arguments)), cache[key];
  636. };
  637. return require.cache = {}, require;
  638. };
  639. _.delay = function(func, wait) {
  640. var args = slice.call(arguments, 2);
  641. return setTimeout(function() {
  642. return func.apply(null, args);
  643. }, wait);
  644. };
  645. _.defer = _.partial(_.delay, _, 1);
  646. _.throttle = function(func, wait, options) {
  647. var thisObject;
  648. var args;
  649. var value;
  650. var timeout = null;
  651. var previous = 0;
  652. if (!options) {
  653. options = {};
  654. }
  655. var later = function() {
  656. previous = options.leading === false ? 0 : _.now();
  657. timeout = null;
  658. value = func.apply(thisObject, args);
  659. if (!timeout) {
  660. thisObject = args = null;
  661. }
  662. };
  663. return function() {
  664. var now = _.now();
  665. if (!previous) {
  666. if (!(options.leading !== false)) {
  667. previous = now;
  668. }
  669. }
  670. var remaining = wait - (now - previous);
  671. return thisObject = this, args = arguments, 0 >= remaining || remaining > wait ? (timeout && (clearTimeout(timeout), timeout = null), previous = now, value = func.apply(thisObject, args), timeout || (thisObject = args = null)) : timeout || (options.trailing === false || (timeout = setTimeout(later, remaining))), value;
  672. };
  673. };
  674. _.debounce = function(func, wait, immediate) {
  675. var timeout;
  676. var args;
  677. var thisObject;
  678. var lastAnimationTime;
  679. var value;
  680. var delayed = function() {
  681. var timeDiff = _.now() - lastAnimationTime;
  682. if (wait > timeDiff && timeDiff >= 0) {
  683. timeout = setTimeout(delayed, wait - timeDiff);
  684. } else {
  685. timeout = null;
  686. if (!immediate) {
  687. value = func.apply(thisObject, args);
  688. if (!timeout) {
  689. thisObject = args = null;
  690. }
  691. }
  692. }
  693. };
  694. return function() {
  695. thisObject = this;
  696. args = arguments;
  697. lastAnimationTime = _.now();
  698. var callNow = immediate && !timeout;
  699. return timeout || (timeout = setTimeout(delayed, wait)), callNow && (value = func.apply(thisObject, args), thisObject = args = null), value;
  700. };
  701. };
  702. _.wrap = function(func, wrapper) {
  703. return _.partial(wrapper, func);
  704. };
  705. _.negate = function(matcherFunction) {
  706. return function() {
  707. return!matcherFunction.apply(this, arguments);
  708. };
  709. };
  710. _.compose = function() {
  711. var functions = arguments;
  712. var i = functions.length - 1;
  713. return function() {
  714. var k = i;
  715. var result = functions[i].apply(this, arguments);
  716. for (;k--;) {
  717. result = functions[k].call(this, result);
  718. }
  719. return result;
  720. };
  721. };
  722. _.after = function(times, matcherFunction) {
  723. return function() {
  724. return--times < 1 ? matcherFunction.apply(this, arguments) : void 0;
  725. };
  726. };
  727. _.before = function(fn, matcherFunction) {
  728. var returnValue;
  729. return function() {
  730. return--fn > 0 && (returnValue = matcherFunction.apply(this, arguments)), 1 >= fn && (matcherFunction = null), returnValue;
  731. };
  732. };
  733. _.once = _.partial(_.before, 2);
  734. var str = !{
  735. toString : null
  736. }.propertyIsEnumerable("toString");
  737. var tokenized = ["valueOf", "isPrototypeOf", "toString", "propertyIsEnumerable", "hasOwnProperty", "toLocaleString"];
  738. _.keys = function(obj) {
  739. if (!_.isObject(obj)) {
  740. return[];
  741. }
  742. if (nativeKeys) {
  743. return nativeKeys(obj);
  744. }
  745. var listeners = [];
  746. var key;
  747. for (key in obj) {
  748. if (_.has(obj, key)) {
  749. listeners.push(key);
  750. }
  751. }
  752. return str && remove(obj, listeners), listeners;
  753. };
  754. _.allKeys = function(obj) {
  755. if (!_.isObject(obj)) {
  756. return[];
  757. }
  758. var listeners = [];
  759. var p;
  760. for (p in obj) {
  761. listeners.push(p);
  762. }
  763. return str && remove(obj, listeners), listeners;
  764. };
  765. _.values = function(obj) {
  766. var keys = _.keys(obj);
  767. var length = keys.length;
  768. var result = Array(length);
  769. var i = 0;
  770. for (;length > i;i++) {
  771. result[i] = obj[keys[i]];
  772. }
  773. return result;
  774. };
  775. _.mapObject = function(obj, callback, thisObj) {
  776. callback = makeIterator(callback, thisObj);
  777. var key;
  778. var keys = _.keys(obj);
  779. var len = keys.length;
  780. var result = {};
  781. var j = 0;
  782. for (;len > j;j++) {
  783. key = keys[j];
  784. result[key] = callback(obj[key], key, obj);
  785. }
  786. return result;
  787. };
  788. _.pairs = function(obj) {
  789. var keys = _.keys(obj);
  790. var length = keys.length;
  791. var result = Array(length);
  792. var i = 0;
  793. for (;length > i;i++) {
  794. result[i] = [keys[i], obj[keys[i]]];
  795. }
  796. return result;
  797. };
  798. _.invert = function(obj) {
  799. var result = {};
  800. var keys = _.keys(obj);
  801. var i = 0;
  802. var len = keys.length;
  803. for (;len > i;i++) {
  804. result[obj[keys[i]]] = keys[i];
  805. }
  806. return result;
  807. };
  808. _.functions = _.methods = function(obj) {
  809. var keys = [];
  810. var key;
  811. for (key in obj) {
  812. if (_.isFunction(obj[key])) {
  813. keys.push(key);
  814. }
  815. }
  816. return keys.sort();
  817. };
  818. _.extend = some(_.allKeys);
  819. _.extendOwn = _.assign = some(_.keys);
  820. _.findKey = function(obj, callback, thisObj) {
  821. callback = makeIterator(callback, thisObj);
  822. var key;
  823. var keys = _.keys(obj);
  824. var j = 0;
  825. var len = keys.length;
  826. for (;len > j;j++) {
  827. if (key = keys[j], callback(obj[key], key, obj)) {
  828. return key;
  829. }
  830. }
  831. };
  832. _.pick = function(object, obj, thisArg) {
  833. var filter;
  834. var result;
  835. var out = {};
  836. var array = object;
  837. if (null == array) {
  838. return out;
  839. }
  840. if (_.isFunction(obj)) {
  841. result = _.allKeys(array);
  842. filter = bind(obj, thisArg);
  843. } else {
  844. result = flatten(arguments, false, false, 1);
  845. filter = function(expr, event, obj) {
  846. return event in obj;
  847. };
  848. array = Object(array);
  849. }
  850. var index = 0;
  851. var matches = result.length;
  852. for (;matches > index;index++) {
  853. var type = result[index];
  854. var data = array[type];
  855. if (filter(data, type, array)) {
  856. out[type] = data;
  857. }
  858. }
  859. return out;
  860. };
  861. _.omit = function(obj, qualifier, thisArg) {
  862. if (_.isFunction(qualifier)) {
  863. qualifier = _.negate(qualifier);
  864. } else {
  865. var method = _.map(flatten(arguments, false, false, 1), String);
  866. qualifier = function(dataAndEvents, key) {
  867. return!_.contains(method, key);
  868. };
  869. }
  870. return _.pick(obj, qualifier, thisArg);
  871. };
  872. _.defaults = some(_.allKeys, true);
  873. _.create = function(type, tag) {
  874. var context = create(type);
  875. return tag && _.extendOwn(context, tag), context;
  876. };
  877. _.clone = function(obj) {
  878. return _.isObject(obj) ? _.isArray(obj) ? obj.slice() : _.extend({}, obj) : obj;
  879. };
  880. _.tap = function(n, t) {
  881. return t(n), n;
  882. };
  883. _.isMatch = function(array, obj) {
  884. var keys = _.keys(obj);
  885. var len = keys.length;
  886. if (null == array) {
  887. return!len;
  888. }
  889. var t = Object(array);
  890. var j = 0;
  891. for (;len > j;j++) {
  892. var k = keys[j];
  893. if (obj[k] !== t[k] || !(k in t)) {
  894. return false;
  895. }
  896. }
  897. return true;
  898. };
  899. var eq = function(a, b, stack, bStack) {
  900. if (a === b) {
  901. return 0 !== a || 1 / a === 1 / b;
  902. }
  903. if (null == a || null == b) {
  904. return a === b;
  905. }
  906. if (a instanceof _) {
  907. a = a._wrapped;
  908. }
  909. if (b instanceof _) {
  910. b = b._wrapped;
  911. }
  912. var array = toString.call(a);
  913. if (array !== toString.call(b)) {
  914. return false;
  915. }
  916. switch(array) {
  917. case "[object RegExp]":
  918. ;
  919. case "[object String]":
  920. return "" + a == "" + b;
  921. case "[object Number]":
  922. return+a !== +a ? +b !== +b : 0 === +a ? 1 / +a === 1 / b : +a === +b;
  923. case "[object Date]":
  924. ;
  925. case "[object Boolean]":
  926. return+a === +b;
  927. }
  928. var isArray = "[object Array]" === array;
  929. if (!isArray) {
  930. if ("object" != typeof a || "object" != typeof b) {
  931. return false;
  932. }
  933. var aCtor = a.constructor;
  934. var bCtor = b.constructor;
  935. if (aCtor !== bCtor && (!(_.isFunction(aCtor) && (aCtor instanceof aCtor && (_.isFunction(bCtor) && bCtor instanceof bCtor))) && ("constructor" in a && "constructor" in b))) {
  936. return false;
  937. }
  938. }
  939. stack = stack || [];
  940. bStack = bStack || [];
  941. var i = stack.length;
  942. for (;i--;) {
  943. if (stack[i] === a) {
  944. return bStack[i] === b;
  945. }
  946. }
  947. if (stack.push(a), bStack.push(b), isArray) {
  948. if (i = a.length, i !== b.length) {
  949. return false;
  950. }
  951. for (;i--;) {
  952. if (!eq(a[i], b[i], stack, bStack)) {
  953. return false;
  954. }
  955. }
  956. } else {
  957. var key;
  958. var keys = _.keys(a);
  959. if (i = keys.length, _.keys(b).length !== i) {
  960. return false;
  961. }
  962. for (;i--;) {
  963. if (key = keys[i], !_.has(b, key) || !eq(a[key], b[key], stack, bStack)) {
  964. return false;
  965. }
  966. }
  967. }
  968. return stack.pop(), bStack.pop(), true;
  969. };
  970. _.isEqual = function(a, b) {
  971. return eq(a, b);
  972. };
  973. _.isEmpty = function(obj) {
  974. return null == obj ? true : isArray(obj) && (_.isArray(obj) || (_.isString(obj) || _.isArguments(obj))) ? 0 === obj.length : 0 === _.keys(obj).length;
  975. };
  976. _.isElement = function(obj) {
  977. return!(!obj || 1 !== obj.nodeType);
  978. };
  979. _.isArray = nativeIsArray || function(obj) {
  980. return "[object Array]" === toString.call(obj);
  981. };
  982. _.isObject = function(obj) {
  983. var type = typeof obj;
  984. return "function" === type || "object" === type && !!obj;
  985. };
  986. _.each(["Arguments", "Function", "String", "Number", "Date", "RegExp", "Error"], function(name) {
  987. _["is" + name] = function(checkSet) {
  988. return toString.call(checkSet) === "[object " + name + "]";
  989. };
  990. });
  991. if (!_.isArguments(arguments)) {
  992. _.isArguments = function(obj) {
  993. return _.has(obj, "callee");
  994. };
  995. }
  996. if ("function" != typeof/./) {
  997. if ("object" != typeof Int8Array) {
  998. _.isFunction = function(obj) {
  999. return "function" == typeof obj || false;
  1000. };
  1001. }
  1002. }
  1003. _.isFinite = function(obj) {
  1004. return isFinite(obj) && !isNaN(parseFloat(obj));
  1005. };
  1006. _.isNaN = function(i) {
  1007. return _.isNumber(i) && i !== +i;
  1008. };
  1009. _.isBoolean = function(obj) {
  1010. return obj === true || (obj === false || "[object Boolean]" === toString.call(obj));
  1011. };
  1012. _.isNull = function(obj) {
  1013. return null === obj;
  1014. };
  1015. _.isUndefined = function(obj) {
  1016. return obj === void 0;
  1017. };
  1018. _.has = function(obj, key) {
  1019. return null != obj && hasOwnProperty.call(obj, key);
  1020. };
  1021. _.noConflict = function() {
  1022. return root._ = previousUnderscore, this;
  1023. };
  1024. _.identity = function(value) {
  1025. return value;
  1026. };
  1027. _.constant = function(value) {
  1028. return function() {
  1029. return value;
  1030. };
  1031. };
  1032. _.noop = function() {
  1033. };
  1034. _.property = property;
  1035. _.propertyOf = function(buf) {
  1036. return null == buf ? function() {
  1037. } : function(off) {
  1038. return buf[off];
  1039. };
  1040. };
  1041. _.matcher = _.matches = function(key) {
  1042. return key = _.extendOwn({}, key), function(other) {
  1043. return _.isMatch(other, key);
  1044. };
  1045. };
  1046. _.times = function(n, callback, thisArg) {
  1047. var result = Array(Math.max(0, n));
  1048. callback = bind(callback, thisArg, 1);
  1049. var i = 0;
  1050. for (;n > i;i++) {
  1051. result[i] = callback(i);
  1052. }
  1053. return result;
  1054. };
  1055. _.random = function(min, max) {
  1056. return null == max && (max = min, min = 0), min + Math.floor(Math.random() * (max - min + 1));
  1057. };
  1058. _.now = Date.now || function() {
  1059. return(new Date).getTime();
  1060. };
  1061. var i = {
  1062. "&" : "&amp;",
  1063. "<" : "&lt;",
  1064. ">" : "&gt;",
  1065. '"' : "&quot;",
  1066. "'" : "&#x27;",
  1067. "`" : "&#x60;"
  1068. };
  1069. var a = _.invert(i);
  1070. var process = function(result) {
  1071. var next = function(axis) {
  1072. return result[axis];
  1073. };
  1074. var keyword1 = "(?:" + _.keys(result).join("|") + ")";
  1075. var hChars = RegExp(keyword1);
  1076. var r20 = RegExp(keyword1, "g");
  1077. return function(s) {
  1078. return s = null == s ? "" : "" + s, hChars.test(s) ? s.replace(r20, next) : s;
  1079. };
  1080. };
  1081. _.escape = process(i);
  1082. _.unescape = process(a);
  1083. _.result = function(object, property, x) {
  1084. var value = null == object ? void 0 : object[property];
  1085. return value === void 0 && (value = x), _.isFunction(value) ? value.call(object) : value;
  1086. };
  1087. var idCounter = 0;
  1088. _.uniqueId = function(prefix) {
  1089. var id = ++idCounter + "";
  1090. return prefix ? prefix + id : id;
  1091. };
  1092. _.templateSettings = {
  1093. evaluate : /<%([\s\S]+?)%>/g,
  1094. interpolate : /<%=([\s\S]+?)%>/g,
  1095. escape : /<%-([\s\S]+?)%>/g
  1096. };
  1097. var noMatch = /(.)^/;
  1098. var escapes = {
  1099. "'" : "'",
  1100. "\\" : "\\",
  1101. "\r" : "r",
  1102. "\n" : "n",
  1103. "\u2028" : "u2028",
  1104. "\u2029" : "u2029"
  1105. };
  1106. var r20 = /\\|'|\r|\n|\u2028|\u2029/g;
  1107. var escapeStringChar = function(match) {
  1108. return "\\" + escapes[match];
  1109. };
  1110. _.template = function(text, settings, data) {
  1111. if (!settings) {
  1112. if (data) {
  1113. settings = data;
  1114. }
  1115. }
  1116. settings = _.defaults({}, settings, _.templateSettings);
  1117. var reDelimiters = RegExp([(settings.escape || noMatch).source, (settings.interpolate || noMatch).source, (settings.evaluate || noMatch).source].join("|") + "|$", "g");
  1118. var index = 0;
  1119. var source = "__p+='";
  1120. text.replace(reDelimiters, function(match, dataAndEvents, deepDataAndEvents, ignoreMethodDoesntExist, offset) {
  1121. return source += text.slice(index, offset).replace(r20, escapeStringChar), index = offset + match.length, dataAndEvents ? source += "'+\n((__t=(" + dataAndEvents + "))==null?'':_.escape(__t))+\n'" : deepDataAndEvents ? source += "'+\n((__t=(" + deepDataAndEvents + "))==null?'':__t)+\n'" : ignoreMethodDoesntExist && (source += "';\n" + ignoreMethodDoesntExist + "\n__p+='"), match;
  1122. });
  1123. source += "';\n";
  1124. if (!settings.variable) {
  1125. source = "with(obj||{}){\n" + source + "}\n";
  1126. }
  1127. source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + "return __p;\n";
  1128. try {
  1129. var render = new Function(settings.variable || "obj", "_", source);
  1130. } catch (details) {
  1131. throw details.source = source, details;
  1132. }
  1133. var template = function(data) {
  1134. return render.call(this, data, _);
  1135. };
  1136. var obj = settings.variable || "obj";
  1137. return template.source = "function(" + obj + "){\n" + source + "}", template;
  1138. };
  1139. _.chain = function(obj) {
  1140. var s = _(obj);
  1141. return s._chain = true, s;
  1142. };
  1143. var chain = function(b, obj) {
  1144. return b._chain ? _(obj).chain() : obj;
  1145. };
  1146. _.mixin = function(obj) {
  1147. _.each(_.functions(obj), function(name) {
  1148. var wrapper = _[name] = obj[name];
  1149. _.prototype[name] = function() {
  1150. var args = [this._wrapped];
  1151. return push.apply(args, arguments), chain(this, wrapper.apply(_, args));
  1152. };
  1153. });
  1154. };
  1155. _.mixin(_);
  1156. _.each(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], function(name) {
  1157. var method = ArrayProto[name];
  1158. _.prototype[name] = function() {
  1159. var wrapped = this._wrapped;
  1160. return method.apply(wrapped, arguments), "shift" !== name && "splice" !== name || (0 !== wrapped.length || delete wrapped[0]), chain(this, wrapped);
  1161. };
  1162. });
  1163. _.each(["concat", "join", "slice"], function(name) {
  1164. var method = ArrayProto[name];
  1165. _.prototype[name] = function() {
  1166. return chain(this, method.apply(this._wrapped, arguments));
  1167. };
  1168. });
  1169. _.prototype.value = function() {
  1170. return this._wrapped;
  1171. };
  1172. _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;
  1173. _.prototype.toString = function() {
  1174. return "" + this._wrapped;
  1175. };
  1176. if ("function" == typeof define) {
  1177. if (define.amd) {
  1178. define("underscore", [], function() {
  1179. return _;
  1180. });
  1181. }
  1182. }
  1183. }).call(this);
  1184. !function(element, proceed) {
  1185. if ("object" == typeof module && "object" == typeof module.exports) {
  1186. module.exports = element.document ? proceed(element, true) : function(event) {
  1187. if (!event.document) {
  1188. throw new Error("jQuery requires a window with a document");
  1189. }
  1190. return proceed(event);
  1191. };
  1192. } else {
  1193. proceed(element);
  1194. }
  1195. }("undefined" != typeof window ? window : this, function(win, dataAndEvents) {
  1196. function isArraylike(obj) {
  1197. var length = obj.length;
  1198. var type = jQuery.type(obj);
  1199. return "function" === type || jQuery.isWindow(obj) ? false : 1 === obj.nodeType && length ? true : "array" === type || (0 === length || "number" == typeof length && (length > 0 && length - 1 in obj));
  1200. }
  1201. function winnow(elements, qualifier, not) {
  1202. if (jQuery.isFunction(qualifier)) {
  1203. return jQuery.grep(elements, function(elem, i) {
  1204. return!!qualifier.call(elem, i, elem) !== not;
  1205. });
  1206. }
  1207. if (qualifier.nodeType) {
  1208. return jQuery.grep(elements, function(elem) {
  1209. return elem === qualifier !== not;
  1210. });
  1211. }
  1212. if ("string" == typeof qualifier) {
  1213. if (isSimple.test(qualifier)) {
  1214. return jQuery.filter(qualifier, elements, not);
  1215. }
  1216. qualifier = jQuery.filter(qualifier, elements);
  1217. }
  1218. return jQuery.grep(elements, function(elem) {
  1219. return core_indexOf.call(qualifier, elem) >= 0 !== not;
  1220. });
  1221. }
  1222. function sibling(cur, dir) {
  1223. for (;(cur = cur[dir]) && 1 !== cur.nodeType;) {
  1224. }
  1225. return cur;
  1226. }
  1227. function createOptions(options) {
  1228. var buf = optionsCache[options] = {};
  1229. return jQuery.each(options.match(core_rnotwhite) || [], function(dataAndEvents, off) {
  1230. buf[off] = true;
  1231. }), buf;
  1232. }
  1233. function completed() {
  1234. node.removeEventListener("DOMContentLoaded", completed, false);
  1235. win.removeEventListener("load", completed, false);
  1236. jQuery.ready();
  1237. }
  1238. function Data() {
  1239. Object.defineProperty(this.cache = {}, 0, {
  1240. get : function() {
  1241. return{};
  1242. }
  1243. });
  1244. this.expando = jQuery.expando + Data.uid++;
  1245. }
  1246. function dataAttr(elem, key, data) {
  1247. var name;
  1248. if (void 0 === data && 1 === elem.nodeType) {
  1249. if (name = "data-" + key.replace(r20, "-$1").toLowerCase(), data = elem.getAttribute(name), "string" == typeof data) {
  1250. try {
  1251. data = "true" === data ? true : "false" === data ? false : "null" === data ? null : +data + "" === data ? +data : rbrace.test(data) ? jQuery.parseJSON(data) : data;
  1252. } catch (o) {
  1253. }
  1254. data_user.set(elem, key, data);
  1255. } else {
  1256. data = void 0;
  1257. }
  1258. }
  1259. return data;
  1260. }
  1261. function returnTrue() {
  1262. return true;
  1263. }
  1264. function returnFalse() {
  1265. return false;
  1266. }
  1267. function safeActiveElement() {
  1268. try {
  1269. return node.activeElement;
  1270. } catch (e) {
  1271. }
  1272. }
  1273. function manipulationTarget(elem, content) {
  1274. return jQuery.nodeName(elem, "table") && jQuery.nodeName(11 !== content.nodeType ? content : content.firstChild, "tr") ? elem.getElementsByTagName("tbody")[0] || elem.appendChild(elem.ownerDocument.createElement("tbody")) : elem;
  1275. }
  1276. function restoreScript(elem) {
  1277. return elem.type = (null !== elem.getAttribute("type")) + "/" + elem.type, elem;
  1278. }
  1279. function fn(s) {
  1280. var l = re.exec(s.type);
  1281. return l ? s.type = l[1] : s.removeAttribute("type"), s;
  1282. }
  1283. function setGlobalEval(elems, refElements) {
  1284. var i = 0;
  1285. var l = elems.length;
  1286. for (;l > i;i++) {
  1287. data_priv.set(elems[i], "globalEval", !refElements || data_priv.get(refElements[i], "globalEval"));
  1288. }
  1289. }
  1290. function cloneCopyEvent(src, dest) {
  1291. var i;
  1292. var ilen;
  1293. var type;
  1294. var pdataOld;
  1295. var pdataCur;
  1296. var udataOld;
  1297. var udataCur;
  1298. var events;
  1299. if (1 === dest.nodeType) {
  1300. if (data_priv.hasData(src) && (pdataOld = data_priv.access(src), pdataCur = data_priv.set(dest, pdataOld), events = pdataOld.events)) {
  1301. delete pdataCur.handle;
  1302. pdataCur.events = {};
  1303. for (type in events) {
  1304. i = 0;
  1305. ilen = events[type].length;
  1306. for (;ilen > i;i++) {
  1307. jQuery.event.add(dest, type, events[type][i]);
  1308. }
  1309. }
  1310. }
  1311. if (data_user.hasData(src)) {
  1312. udataOld = data_user.access(src);
  1313. udataCur = jQuery.extend({}, udataOld);
  1314. data_user.set(dest, udataCur);
  1315. }
  1316. }
  1317. }
  1318. function getAll(context, tag) {
  1319. var ret = context.getElementsByTagName ? context.getElementsByTagName(tag || "*") : context.querySelectorAll ? context.querySelectorAll(tag || "*") : [];
  1320. return void 0 === tag || tag && jQuery.nodeName(context, tag) ? jQuery.merge([context], ret) : ret;
  1321. }
  1322. function fixInput(src, dest) {
  1323. var name = dest.nodeName.toLowerCase();
  1324. if ("input" === name && manipulation_rcheckableType.test(src.type)) {
  1325. dest.checked = src.checked;
  1326. } else {
  1327. if ("input" === name || "textarea" === name) {
  1328. dest.defaultValue = src.defaultValue;
  1329. }
  1330. }
  1331. }
  1332. function actualDisplay(name, doc) {
  1333. var result;
  1334. var elem = jQuery(doc.createElement(name)).appendTo(doc.body);
  1335. var o = win.getDefaultComputedStyle && (result = win.getDefaultComputedStyle(elem[0])) ? result.display : jQuery.css(elem[0], "display");
  1336. return elem.detach(), o;
  1337. }
  1338. function defaultDisplay(nodeName) {
  1339. var doc = node;
  1340. var display = elemdisplay[nodeName];
  1341. return display || (display = actualDisplay(nodeName, doc), "none" !== display && display || (iframe = (iframe || jQuery("<iframe frameborder='0' width='0' height='0'/>")).appendTo(doc.documentElement), doc = iframe[0].contentDocument, doc.write(), doc.close(), display = actualDisplay(nodeName, doc), iframe.detach()), elemdisplay[nodeName] = display), display;
  1342. }
  1343. function css(node, prop, styles) {
  1344. var width;
  1345. var minWidth;
  1346. var maxWidth;
  1347. var val;
  1348. var style = node.style;
  1349. return styles = styles || getStyles(node), styles && (val = styles.getPropertyValue(prop) || styles[prop]), styles && ("" !== val || (jQuery.contains(node.ownerDocument, node) || (val = jQuery.style(node, prop))), regexp.test(val) && (rbracket.test(prop) && (width = style.width, minWidth = style.minWidth, maxWidth = style.maxWidth, style.minWidth = style.maxWidth = style.width = val, val = styles.width, style.width = width, style.minWidth = minWidth, style.maxWidth = maxWidth))), void 0 !== val ?
  1350. val + "" : val;
  1351. }
  1352. function addGetHookIf($timeout, hookFn) {
  1353. return{
  1354. get : function() {
  1355. return $timeout() ? void delete this.get : (this.get = hookFn).apply(this, arguments);
  1356. }
  1357. };
  1358. }
  1359. function vendorPropName(style, name) {
  1360. if (name in style) {
  1361. return name;
  1362. }
  1363. var capName = name[0].toUpperCase() + name.slice(1);
  1364. var origName = name;
  1365. var i = cssPrefixes.length;
  1366. for (;i--;) {
  1367. if (name = cssPrefixes[i] + capName, name in style) {
  1368. return name;
  1369. }
  1370. }
  1371. return origName;
  1372. }
  1373. function setPositiveNumber(elem, value, actual) {
  1374. var iterator = rrelNum.exec(value);
  1375. return iterator ? Math.max(0, iterator[1] - (actual || 0)) + (iterator[2] || "px") : value;
  1376. }
  1377. function augmentWidthOrHeight(elem, keepData, extra, isBorderBox, styles) {
  1378. var i = extra === (isBorderBox ? "border" : "content") ? 4 : "width" === keepData ? 1 : 0;
  1379. var val = 0;
  1380. for (;4 > i;i += 2) {
  1381. if ("margin" === extra) {
  1382. val += jQuery.css(elem, extra + cssExpand[i], true, styles);
  1383. }
  1384. if (isBorderBox) {
  1385. if ("content" === extra) {
  1386. val -= jQuery.css(elem, "padding" + cssExpand[i], true, styles);
  1387. }
  1388. if ("margin" !== extra) {
  1389. val -= jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
  1390. }
  1391. } else {
  1392. val += jQuery.css(elem, "padding" + cssExpand[i], true, styles);
  1393. if ("padding" !== extra) {
  1394. val += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
  1395. }
  1396. }
  1397. }
  1398. return val;
  1399. }
  1400. function getWidthOrHeight(elem, name, extra) {
  1401. var valueIsBorderBox = true;
  1402. var val = "width" === name ? elem.offsetWidth : elem.offsetHeight;
  1403. var styles = getStyles(elem);
  1404. var isBorderBox = "border-box" === jQuery.css(elem, "boxSizing", false, styles);
  1405. if (0 >= val || null == val) {
  1406. if (val = css(elem, name, styles), (0 > val || null == val) && (val = elem.style[name]), regexp.test(val)) {
  1407. return val;
  1408. }
  1409. valueIsBorderBox = isBorderBox && (support.boxSizingReliable() || val === elem.style[name]);
  1410. val = parseFloat(val) || 0;
  1411. }
  1412. return val + augmentWidthOrHeight(elem, name, extra || (isBorderBox ? "border" : "content"), valueIsBorderBox, styles) + "px";
  1413. }
  1414. function showHide(elements, show) {
  1415. var display;
  1416. var elem;
  1417. var hidden;
  1418. var values = [];
  1419. var index = 0;
  1420. var length = elements.length;
  1421. for (;length > index;index++) {
  1422. elem = elements[index];
  1423. if (elem.style) {
  1424. values[index] = data_priv.get(elem, "olddisplay");
  1425. display = elem.style.display;
  1426. if (show) {
  1427. if (!values[index]) {
  1428. if (!("none" !== display)) {
  1429. elem.style.display = "";
  1430. }
  1431. }
  1432. if ("" === elem.style.display) {
  1433. if (isHidden(elem)) {
  1434. values[index] = data_priv.access(elem, "olddisplay", defaultDisplay(elem.nodeName));
  1435. }
  1436. }
  1437. } else {
  1438. hidden = isHidden(elem);
  1439. if (!("none" === display && hidden)) {
  1440. data_priv.set(elem, "olddisplay", hidden ? display : jQuery.css(elem, "display"));
  1441. }
  1442. }
  1443. }
  1444. }
  1445. index = 0;
  1446. for (;length > index;index++) {
  1447. elem = elements[index];
  1448. if (elem.style) {
  1449. if (!(show && ("none" !== elem.style.display && "" !== elem.style.display))) {
  1450. elem.style.display = show ? values[index] || "" : "none";
  1451. }
  1452. }
  1453. }
  1454. return elements;
  1455. }
  1456. function Tween(selector, context, prop, end, easing) {
  1457. return new Tween.prototype.init(selector, context, prop, end, easing);
  1458. }
  1459. function createFxNow() {
  1460. return setTimeout(function() {
  1461. fxNow = void 0;
  1462. }), fxNow = jQuery.now();
  1463. }
  1464. function genFx(type, includeWidth) {
  1465. var which;
  1466. var i = 0;
  1467. var attrs = {
  1468. height : type
  1469. };
  1470. includeWidth = includeWidth ? 1 : 0;
  1471. for (;4 > i;i += 2 - includeWidth) {
  1472. which = cssExpand[i];
  1473. attrs["margin" + which] = attrs["padding" + which] = type;
  1474. }
  1475. return includeWidth && (attrs.opacity = attrs.width = type), attrs;
  1476. }
  1477. function createTween(value, prop, animation) {
  1478. var tween;
  1479. var q = (cache[prop] || []).concat(cache["*"]);
  1480. var i = 0;
  1481. var l = q.length;
  1482. for (;l > i;i++) {
  1483. if (tween = q[i].call(animation, prop, value)) {
  1484. return tween;
  1485. }
  1486. }
  1487. }
  1488. function defaultPrefilter(elem, props, opts) {
  1489. var prop;
  1490. var value;
  1491. var thisp;
  1492. var tween;
  1493. var hooks;
  1494. var oldfire;
  1495. var oldDisplay;
  1496. var type;
  1497. var anim = this;
  1498. var orig = {};
  1499. var style = elem.style;
  1500. var hidden = elem.nodeType && isHidden(elem);
  1501. var dataShow = data_priv.get(elem, "fxshow");
  1502. if (!opts.queue) {
  1503. hooks = jQuery._queueHooks(elem, "fx");
  1504. if (null == hooks.unqueued) {
  1505. hooks.unqueued = 0;
  1506. oldfire = hooks.empty.fire;
  1507. hooks.empty.fire = function() {
  1508. if (!hooks.unqueued) {
  1509. oldfire();
  1510. }
  1511. };
  1512. }
  1513. hooks.unqueued++;
  1514. anim.always(function() {
  1515. anim.always(function() {
  1516. hooks.unqueued--;
  1517. if (!jQuery.queue(elem, "fx").length) {
  1518. hooks.empty.fire();
  1519. }
  1520. });
  1521. });
  1522. }
  1523. if (1 === elem.nodeType) {
  1524. if ("height" in props || "width" in props) {
  1525. opts.overflow = [style.overflow, style.overflowX, style.overflowY];
  1526. oldDisplay = jQuery.css(elem, "display");
  1527. type = "none" === oldDisplay ? data_priv.get(elem, "olddisplay") || defaultDisplay(elem.nodeName) : oldDisplay;
  1528. if ("inline" === type) {
  1529. if ("none" === jQuery.css(elem, "float")) {
  1530. style.display = "inline-block";
  1531. }
  1532. }
  1533. }
  1534. }
  1535. if (opts.overflow) {
  1536. style.overflow = "hidden";
  1537. anim.always(function() {
  1538. style.overflow = opts.overflow[0];
  1539. style.overflowX = opts.overflow[1];
  1540. style.overflowY = opts.overflow[2];
  1541. });
  1542. }
  1543. for (prop in props) {
  1544. if (value = props[prop], rplusequals.exec(value)) {
  1545. if (delete props[prop], thisp = thisp || "toggle" === value, value === (hidden ? "hide" : "show")) {
  1546. if ("show" !== value || (!dataShow || void 0 === dataShow[prop])) {
  1547. continue;
  1548. }
  1549. hidden = true;
  1550. }
  1551. orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);
  1552. } else {
  1553. oldDisplay = void 0;
  1554. }
  1555. }
  1556. if (jQuery.isEmptyObject(orig)) {
  1557. if ("inline" === ("none" === oldDisplay ? defaultDisplay(elem.nodeName) : oldDisplay)) {
  1558. style.display = oldDisplay;
  1559. }
  1560. } else {
  1561. if (dataShow) {
  1562. if ("hidden" in dataShow) {
  1563. hidden = dataShow.hidden;
  1564. }
  1565. } else {
  1566. dataShow = data_priv.access(elem, "fxshow", {});
  1567. }
  1568. if (thisp) {
  1569. dataShow.hidden = !hidden;
  1570. }
  1571. if (hidden) {
  1572. jQuery(elem).show();
  1573. } else {
  1574. anim.done(function() {
  1575. jQuery(elem).hide();
  1576. });
  1577. }
  1578. anim.done(function() {
  1579. var prop;
  1580. data_priv.remove(elem, "fxshow");
  1581. for (prop in orig) {
  1582. jQuery.style(elem, prop, orig[prop]);
  1583. }
  1584. });
  1585. for (prop in orig) {
  1586. tween = createTween(hidden ? dataShow[prop] : 0, prop, anim);
  1587. if (!(prop in dataShow)) {
  1588. dataShow[prop] = tween.start;
  1589. if (hidden) {
  1590. tween.end = tween.start;
  1591. tween.start = "width" === prop || "height" === prop ? 1 : 0;
  1592. }
  1593. }
  1594. }
  1595. }
  1596. }
  1597. function propFilter(object, paramMap) {
  1598. var key;
  1599. var name;
  1600. var value;
  1601. var val;
  1602. var hooks;
  1603. for (key in object) {
  1604. if (name = jQuery.camelCase(key), value = paramMap[name], val = object[key], jQuery.isArray(val) && (value = val[1], val = object[key] = val[0]), key !== name && (object[name] = val, delete object[key]), hooks = jQuery.cssHooks[name], hooks && "expand" in hooks) {
  1605. val = hooks.expand(val);
  1606. delete object[name];
  1607. for (key in val) {
  1608. if (!(key in object)) {
  1609. object[key] = val[key];
  1610. paramMap[key] = value;
  1611. }
  1612. }
  1613. } else {
  1614. paramMap[name] = value;
  1615. }
  1616. }
  1617. }
  1618. function Animation(elem, properties, options) {
  1619. var result;
  1620. var o;
  1621. var index = 0;
  1622. var length = animationPrefilters.length;
  1623. var deferred = jQuery.Deferred().always(function() {
  1624. delete tick.elem;
  1625. });
  1626. var tick = function() {
  1627. if (o) {
  1628. return false;
  1629. }
  1630. var currentTime = fxNow || createFxNow();
  1631. var remaining = Math.max(0, animation.startTime + animation.duration - currentTime);
  1632. var temp = remaining / animation.duration || 0;
  1633. var percent = 1 - temp;
  1634. var index = 0;
  1635. var startOffset = animation.tweens.length;
  1636. for (;startOffset > index;index++) {
  1637. animation.tweens[index].run(percent);
  1638. }
  1639. return deferred.notifyWith(elem, [animation, percent, remaining]), 1 > percent && startOffset ? remaining : (deferred.resolveWith(elem, [animation]), false);
  1640. };
  1641. var animation = deferred.promise({
  1642. elem : elem,
  1643. props : jQuery.extend({}, properties),
  1644. opts : jQuery.extend(true, {
  1645. specialEasing : {}
  1646. }, options),
  1647. originalProperties : properties,
  1648. originalOptions : options,
  1649. startTime : fxNow || createFxNow(),
  1650. duration : options.duration,
  1651. tweens : [],
  1652. createTween : function(prop, end) {
  1653. var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);
  1654. return animation.tweens.push(tween), tween;
  1655. },
  1656. stop : function(gotoEnd) {
  1657. var index = 0;
  1658. var length = gotoEnd ? animation.tweens.length : 0;
  1659. if (o) {
  1660. return this;
  1661. }
  1662. o = true;
  1663. for (;length > index;index++) {
  1664. animation.tweens[index].run(1);
  1665. }
  1666. return gotoEnd ? deferred.resolveWith(elem, [animation, gotoEnd]) : deferred.rejectWith(elem, [animation, gotoEnd]), this;
  1667. }
  1668. });
  1669. var scripts = animation.props;
  1670. propFilter(scripts, animation.opts.specialEasing);
  1671. for (;length > index;index++) {
  1672. if (result = animationPrefilters[index].call(animation, elem, scripts, animation.opts)) {
  1673. return result;
  1674. }
  1675. }
  1676. return jQuery.map(scripts, createTween, animation), jQuery.isFunction(animation.opts.start) && animation.opts.start.call(elem, animation), jQuery.fx.timer(jQuery.extend(tick, {
  1677. elem : elem,
  1678. anim : animation,
  1679. queue : animation.opts.queue
  1680. })), animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);
  1681. }
  1682. function addToPrefiltersOrTransports(structure) {
  1683. return function(selector, fn) {
  1684. if ("string" != typeof selector) {
  1685. fn = selector;
  1686. selector = "*";
  1687. }
  1688. var node;
  1689. var i = 0;
  1690. var elem = selector.toLowerCase().match(core_rnotwhite) || [];
  1691. if (jQuery.isFunction(fn)) {
  1692. for (;node = elem[i++];) {
  1693. if ("+" === node[0]) {
  1694. node = node.slice(1) || "*";
  1695. (structure[node] = structure[node] || []).unshift(fn);
  1696. } else {
  1697. (structure[node] = structure[node] || []).push(fn);
  1698. }
  1699. }
  1700. }
  1701. };
  1702. }
  1703. function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
  1704. function inspect(key) {
  1705. var oldName;
  1706. return old[key] = true, jQuery.each(structure[key] || [], function(dataAndEvents, prefilterOrFactory) {
  1707. var name = prefilterOrFactory(options, originalOptions, jqXHR);
  1708. return "string" != typeof name || (seekingTransport || old[name]) ? seekingTransport ? !(oldName = name) : void 0 : (options.dataTypes.unshift(name), inspect(name), false);
  1709. }), oldName;
  1710. }
  1711. var old = {};
  1712. var seekingTransport = structure === transports;
  1713. return inspect(options.dataTypes[0]) || !old["*"] && inspect("*");
  1714. }
  1715. function ajaxExtend(target, src) {
  1716. var key;
  1717. var deep;
  1718. var flatOptions = jQuery.ajaxSettings.flatOptions || {};
  1719. for (key in src) {
  1720. if (void 0 !== src[key]) {
  1721. (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];
  1722. }
  1723. }
  1724. return deep && jQuery.extend(true, target, deep), target;
  1725. }
  1726. function ajaxHandleResponses(s, jqXHR, responses) {
  1727. var ct;
  1728. var type;
  1729. var finalDataType;
  1730. var firstDataType;
  1731. var contents = s.contents;
  1732. var dataTypes = s.dataTypes;
  1733. for (;"*" === dataTypes[0];) {
  1734. dataTypes.shift();
  1735. if (void 0 === ct) {
  1736. ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
  1737. }
  1738. }
  1739. if (ct) {
  1740. for (type in contents) {
  1741. if (contents[type] && contents[type].test(ct)) {
  1742. dataTypes.unshift(type);
  1743. break;
  1744. }
  1745. }
  1746. }
  1747. if (dataTypes[0] in responses) {
  1748. finalDataType = dataTypes[0];
  1749. } else {
  1750. for (type in responses) {
  1751. if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) {
  1752. finalDataType = type;
  1753. break;
  1754. }
  1755. if (!firstDataType) {
  1756. firstDataType = type;
  1757. }
  1758. }
  1759. finalDataType = finalDataType || firstDataType;
  1760. }
  1761. return finalDataType ? (finalDataType !== dataTypes[0] && dataTypes.unshift(finalDataType), responses[finalDataType]) : void 0;
  1762. }
  1763. function ajaxConvert(s, response, jqXHR, isSuccess) {
  1764. var conv2;
  1765. var current;
  1766. var conv;
  1767. var tmp;
  1768. var prev;
  1769. var converters = {};
  1770. var dataTypes = s.dataTypes.slice();
  1771. if (dataTypes[1]) {
  1772. for (conv in s.converters) {
  1773. converters[conv.toLowerCase()] = s.converters[conv];
  1774. }
  1775. }
  1776. current = dataTypes.shift();
  1777. for (;current;) {
  1778. if (s.responseFields[current] && (jqXHR[s.responseFields[current]] = response), !prev && (isSuccess && (s.dataFilter && (response = s.dataFilter(response, s.dataType)))), prev = current, current = dataTypes.shift()) {
  1779. if ("*" === current) {
  1780. current = prev;
  1781. } else {
  1782. if ("*" !== prev && prev !== current) {
  1783. if (conv = converters[prev + " " + current] || converters["* " + current], !conv) {
  1784. for (conv2 in converters) {
  1785. if (tmp = conv2.split(" "), tmp[1] === current && (conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]])) {
  1786. if (conv === true) {
  1787. conv = converters[conv2];
  1788. } else {
  1789. if (converters[conv2] !== true) {
  1790. current = tmp[0];
  1791. dataTypes.unshift(tmp[1]);
  1792. }
  1793. }
  1794. break;
  1795. }
  1796. }
  1797. }
  1798. if (conv !== true) {
  1799. if (conv && s["throws"]) {
  1800. response = conv(response);
  1801. } else {
  1802. try {
  1803. response = conv(response);
  1804. } catch (e) {
  1805. return{
  1806. state : "parsererror",
  1807. error : conv ? e : "No conversion from " + prev + " to " + current
  1808. };
  1809. }
  1810. }
  1811. }
  1812. }
  1813. }
  1814. }
  1815. }
  1816. return{
  1817. state : "success",
  1818. data : response
  1819. };
  1820. }
  1821. function buildParams(prefix, obj, traditional, add) {
  1822. var name;
  1823. if (jQuery.isArray(obj)) {
  1824. jQuery.each(obj, function(i, v) {
  1825. if (traditional || rmargin.test(prefix)) {
  1826. add(prefix, v);
  1827. } else {
  1828. buildParams(prefix + "[" + ("object" == typeof v ? i : "") + "]", v, traditional, add);
  1829. }
  1830. });
  1831. } else {
  1832. if (traditional || "object" !== jQuery.type(obj)) {
  1833. add(prefix, obj);
  1834. } else {
  1835. for (name in obj) {
  1836. buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
  1837. }
  1838. }
  1839. }
  1840. }
  1841. function getWindow(element) {
  1842. return jQuery.isWindow(element) ? element : 9 === element.nodeType && element.defaultView;
  1843. }
  1844. var core_deletedIds = [];
  1845. var core_slice = core_deletedIds.slice;
  1846. var core_concat = core_deletedIds.concat;
  1847. var core_push = core_deletedIds.push;
  1848. var core_indexOf = core_deletedIds.indexOf;
  1849. var class2type = {};
  1850. var core_toString = class2type.toString;
  1851. var core_hasOwn = class2type.hasOwnProperty;
  1852. var support = {};
  1853. var node = win.document;
  1854. var core_version = "2.1.3";
  1855. var jQuery = function(selector, context) {
  1856. return new jQuery.fn.init(selector, context);
  1857. };
  1858. var badChars = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
  1859. var rmsPrefix = /^-ms-/;
  1860. var emptyParagraphRegexp = /-([\da-z])/gi;
  1861. var fcamelCase = function(all, letter) {
  1862. return letter.toUpperCase();
  1863. };
  1864. jQuery.fn = jQuery.prototype = {
  1865. jquery : core_version,
  1866. constructor : jQuery,
  1867. selector : "",
  1868. length : 0,
  1869. toArray : function() {
  1870. return core_slice.call(this);
  1871. },
  1872. get : function(num) {
  1873. return null != num ? 0 > num ? this[num + this.length] : this[num] : core_slice.call(this);
  1874. },
  1875. pushStack : function(elems) {
  1876. var ret = jQuery.merge(this.constructor(), elems);
  1877. return ret.prevObject = this, ret.context = this.context, ret;
  1878. },
  1879. each : function(opt_attributes, args) {
  1880. return jQuery.each(this, opt_attributes, args);
  1881. },
  1882. map : function(callback) {
  1883. return this.pushStack(jQuery.map(this, function(el, operation) {
  1884. return callback.call(el, operation, el);
  1885. }));
  1886. },
  1887. slice : function() {
  1888. return this.pushStack(core_slice.apply(this, arguments));
  1889. },
  1890. first : function() {
  1891. return this.eq(0);
  1892. },
  1893. last : function() {
  1894. return this.eq(-1);
  1895. },
  1896. eq : function(idx) {
  1897. var l = this.length;
  1898. var i = +idx + (0 > idx ? l : 0);
  1899. return this.pushStack(i >= 0 && l > i ? [this[i]] : []);
  1900. },
  1901. end : function() {
  1902. return this.prevObject || this.constructor(null);
  1903. },
  1904. push : core_push,
  1905. sort : core_deletedIds.sort,
  1906. splice : core_deletedIds.splice
  1907. };
  1908. jQuery.extend = jQuery.fn.extend = function() {
  1909. var options;
  1910. var name;
  1911. var src;
  1912. var copy;
  1913. var copyIsArray;
  1914. var clone;
  1915. var target = arguments[0] || {};
  1916. var i = 1;
  1917. var l = arguments.length;
  1918. var deep = false;
  1919. if ("boolean" == typeof target) {
  1920. deep = target;
  1921. target = arguments[i] || {};
  1922. i++;
  1923. }
  1924. if (!("object" == typeof target)) {
  1925. if (!jQuery.isFunction(target)) {
  1926. target = {};
  1927. }
  1928. }
  1929. if (i === l) {
  1930. target = this;
  1931. i--;
  1932. }
  1933. for (;l > i;i++) {
  1934. if (null != (options = arguments[i])) {
  1935. for (name in options) {
  1936. src = target[name];
  1937. copy = options[name];
  1938. if (target !== copy) {
  1939. if (deep && (copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy))))) {
  1940. if (copyIsArray) {
  1941. copyIsArray = false;
  1942. clone = src && jQuery.isArray(src) ? src : [];
  1943. } else {
  1944. clone = src && jQuery.isPlainObject(src) ? src : {};
  1945. }
  1946. target[name] = jQuery.extend(deep, clone, copy);
  1947. } else {
  1948. if (void 0 !== copy) {
  1949. target[name] = copy;
  1950. }
  1951. }
  1952. }
  1953. }
  1954. }
  1955. }
  1956. return target;
  1957. };
  1958. jQuery.extend({
  1959. expando : "jQuery" + (core_version + Math.random()).replace(/\D/g, ""),
  1960. isReady : true,
  1961. error : function(type) {
  1962. throw new Error(type);
  1963. },
  1964. noop : function() {
  1965. },
  1966. isFunction : function(obj) {
  1967. return "function" === jQuery.type(obj);
  1968. },
  1969. isArray : Array.isArray,
  1970. isWindow : function(obj) {
  1971. return null != obj && obj === obj.window;
  1972. },
  1973. isNumeric : function(val) {
  1974. return!jQuery.isArray(val) && val - parseFloat(val) + 1 >= 0;
  1975. },
  1976. isPlainObject : function(obj) {
  1977. return "object" !== jQuery.type(obj) || (obj.nodeType || jQuery.isWindow(obj)) ? false : obj.constructor && !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ? false : true;
  1978. },
  1979. isEmptyObject : function(obj) {
  1980. var prop;
  1981. for (prop in obj) {
  1982. return false;
  1983. }
  1984. return true;
  1985. },
  1986. type : function(type) {
  1987. return null == type ? type + "" : "object" == typeof type || "function" == typeof type ? class2type[core_toString.call(type)] || "object" : typeof type;
  1988. },
  1989. globalEval : function(code) {
  1990. var script;
  1991. var indirect = eval;
  1992. code = jQuery.trim(code);
  1993. if (code) {
  1994. if (1 === code.indexOf("use strict")) {
  1995. script = node.createElement("script");
  1996. script.text = code;
  1997. node.head.appendChild(script).parentNode.removeChild(script);
  1998. } else {
  1999. indirect(code);
  2000. }
  2001. }
  2002. },
  2003. camelCase : function(string) {
  2004. return string.replace(rmsPrefix, "ms-").replace(emptyParagraphRegexp, fcamelCase);
  2005. },
  2006. nodeName : function(elem, name) {
  2007. return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
  2008. },
  2009. each : function(obj, callback, args) {
  2010. var value;
  2011. var i = 0;
  2012. var l = obj.length;
  2013. var isArray = isArraylike(obj);
  2014. if (args) {
  2015. if (isArray) {
  2016. for (;l > i && (value = callback.apply(obj[i], args), value !== false);i++) {
  2017. }
  2018. } else {
  2019. for (i in obj) {
  2020. if (value = callback.apply(obj[i], args), value === false) {
  2021. break;
  2022. }
  2023. }
  2024. }
  2025. } else {
  2026. if (isArray) {
  2027. for (;l > i && (value = callback.call(obj[i], i, obj[i]), value !== false);i++) {
  2028. }
  2029. } else {
  2030. for (i in obj) {
  2031. if (value = callback.call(obj[i], i, obj[i]), value === false) {
  2032. break;
  2033. }
  2034. }
  2035. }
  2036. }
  2037. return obj;
  2038. },
  2039. trim : function(text) {
  2040. return null == text ? "" : (text + "").replace(badChars, "");
  2041. },
  2042. makeArray : function(arr, results) {
  2043. var ret = results || [];
  2044. return null != arr && (isArraylike(Object(arr)) ? jQuery.merge(ret, "string" == typeof arr ? [arr] : arr) : core_push.call(ret, arr)), ret;
  2045. },
  2046. inArray : function(elem, arr, i) {
  2047. return null == arr ? -1 : core_indexOf.call(arr, elem, i);
  2048. },
  2049. merge : function(first, second) {
  2050. var jlen = +second.length;
  2051. var j = 0;
  2052. var i = first.length;
  2053. for (;jlen > j;j++) {
  2054. first[i++] = second[j];
  2055. }
  2056. return first.length = i, first;
  2057. },
  2058. grep : function(elems, callback, inv) {
  2059. var val;
  2060. var ret = [];
  2061. var i = 0;
  2062. var l = elems.length;
  2063. var skip = !inv;
  2064. for (;l > i;i++) {
  2065. val = !callback(elems[i], i);
  2066. if (val !== skip) {
  2067. ret.push(elems[i]);
  2068. }
  2069. }
  2070. return ret;
  2071. },
  2072. map : function(elems, callback, arg) {
  2073. var value;
  2074. var i = 0;
  2075. var l = elems.length;
  2076. var isArray = isArraylike(elems);
  2077. var args = [];
  2078. if (isArray) {
  2079. for (;l > i;i++) {
  2080. value = callback(elems[i], i, arg);
  2081. if (null != value) {
  2082. args.push(value);
  2083. }
  2084. }
  2085. } else {
  2086. for (i in elems) {
  2087. value = callback(elems[i], i, arg);
  2088. if (null != value) {
  2089. args.push(value);
  2090. }
  2091. }
  2092. }
  2093. return core_concat.apply([], args);
  2094. },
  2095. guid : 1,
  2096. proxy : function(fn, context) {
  2097. var tmp;
  2098. var args;
  2099. var proxy;
  2100. return "string" == typeof context && (tmp = fn[context], context = fn, fn = tmp), jQuery.isFunction(fn) ? (args = core_slice.call(arguments, 2), proxy = function() {
  2101. return fn.apply(context || this, args.concat(core_slice.call(arguments)));
  2102. }, proxy.guid = fn.guid = fn.guid || jQuery.guid++, proxy) : void 0;
  2103. },
  2104. now : Date.now,
  2105. support : support
  2106. });
  2107. jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(dataAndEvents, m3) {
  2108. class2type["[object " + m3 + "]"] = m3.toLowerCase();
  2109. });
  2110. var Sizzle = function(win) {
  2111. function Sizzle(selector, context, results, seed) {
  2112. var match;
  2113. var elem;
  2114. var id;
  2115. var type;
  2116. var i;
  2117. var groups;
  2118. var old;
  2119. var nid;
  2120. var newContext;
  2121. var newSelector;
  2122. if ((context ? context.ownerDocument || context : preferredDoc) !== doc && setDocument(context), context = context || doc, results = results || [], type = context.nodeType, "string" != typeof selector || (!selector || 1 !== type && (9 !== type && 11 !== type))) {
  2123. return results;
  2124. }
  2125. if (!seed && documentIsHTML) {
  2126. if (11 !== type && (match = rquickExpr.exec(selector))) {
  2127. if (id = match[1]) {
  2128. if (9 === type) {
  2129. if (elem = context.getElementById(id), !elem || !elem.parentNode) {
  2130. return results;
  2131. }
  2132. if (elem.id === id) {
  2133. return results.push(elem), results;
  2134. }
  2135. } else {
  2136. if (context.ownerDocument && ((elem = context.ownerDocument.getElementById(id)) && (contains(context, elem) && elem.id === id))) {
  2137. return results.push(elem), results;
  2138. }
  2139. }
  2140. } else {
  2141. if (match[2]) {
  2142. return push.apply(results, context.getElementsByTagName(selector)), results;
  2143. }
  2144. if ((id = match[3]) && support.getElementsByClassName) {
  2145. return push.apply(results, context.getElementsByClassName(id)), results;
  2146. }
  2147. }
  2148. }
  2149. if (support.qsa && (!rbuggyQSA || !rbuggyQSA.test(selector))) {
  2150. if (nid = old = expando, newContext = context, newSelector = 1 !== type && selector, 1 === type && "object" !== context.nodeName.toLowerCase()) {
  2151. groups = tokenize(selector);
  2152. if (old = context.getAttribute("id")) {
  2153. nid = old.replace(r20, "\\$&");
  2154. } else {
  2155. context.setAttribute("id", nid);
  2156. }
  2157. nid = "[id='" + nid + "'] ";
  2158. i = groups.length;
  2159. for (;i--;) {
  2160. groups[i] = nid + toSelector(groups[i]);
  2161. }
  2162. newContext = rsibling.test(selector) && testContext(context.parentNode) || context;
  2163. newSelector = groups.join(",");
  2164. }
  2165. if (newSelector) {
  2166. try {
  2167. return push.apply(results, newContext.querySelectorAll(newSelector)), results;
  2168. } catch (m) {
  2169. } finally {
  2170. if (!old) {
  2171. context.removeAttribute("id");
  2172. }
  2173. }
  2174. }
  2175. }
  2176. }
  2177. return select(selector.replace(rtrim, "$1"), context, results, seed);
  2178. }
  2179. function createCache() {
  2180. function cache(key, value) {
  2181. return buf.push(key + " ") > Expr.cacheLength && delete cache[buf.shift()], cache[key + " "] = value;
  2182. }
  2183. var buf = [];
  2184. return cache;
  2185. }
  2186. function markFunction(fn) {
  2187. return fn[expando] = true, fn;
  2188. }
  2189. function assert(fn) {
  2190. var t = doc.createElement("div");
  2191. try {
  2192. return!!fn(t);
  2193. } catch (n) {
  2194. return false;
  2195. } finally {
  2196. if (t.parentNode) {
  2197. t.parentNode.removeChild(t);
  2198. }
  2199. t = null;
  2200. }
  2201. }
  2202. function addHandle(attrs, handler) {
  2203. var arr = attrs.split("|");
  2204. var i = attrs.length;
  2205. for (;i--;) {
  2206. Expr.attrHandle[arr[i]] = handler;
  2207. }
  2208. }
  2209. function siblingCheck(a, b) {
  2210. var cur = b && a;
  2211. var diff = cur && (1 === a.nodeType && (1 === b.nodeType && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE)));
  2212. if (diff) {
  2213. return diff;
  2214. }
  2215. if (cur) {
  2216. for (;cur = cur.nextSibling;) {
  2217. if (cur === b) {
  2218. return-1;
  2219. }
  2220. }
  2221. }
  2222. return a ? 1 : -1;
  2223. }
  2224. function createInputPseudo(type) {
  2225. return function(elem) {
  2226. var b = elem.nodeName.toLowerCase();
  2227. return "input" === b && elem.type === type;
  2228. };
  2229. }
  2230. function createButtonPseudo(type) {
  2231. return function(elem) {
  2232. var NULL = elem.nodeName.toLowerCase();
  2233. return("input" === NULL || "button" === NULL) && elem.type === type;
  2234. };
  2235. }
  2236. function createPositionalPseudo(fn) {
  2237. return markFunction(function(argument) {
  2238. return argument = +argument, markFunction(function(seed, matches) {
  2239. var j;
  2240. var matchIndexes = fn([], seed.length, argument);
  2241. var i = matchIndexes.length;
  2242. for (;i--;) {
  2243. if (seed[j = matchIndexes[i]]) {
  2244. seed[j] = !(matches[j] = seed[j]);
  2245. }
  2246. }
  2247. });
  2248. });
  2249. }
  2250. function testContext(context) {
  2251. return context && ("undefined" != typeof context.getElementsByTagName && context);
  2252. }
  2253. function setFilters() {
  2254. }
  2255. function toSelector(tokens) {
  2256. var i = 0;
  2257. var nTokens = tokens.length;
  2258. var selector = "";
  2259. for (;nTokens > i;i++) {
  2260. selector += tokens[i].value;
  2261. }
  2262. return selector;
  2263. }
  2264. function addCombinator(matcher, combinator, dataAndEvents) {
  2265. var dir = combinator.dir;
  2266. var i = dataAndEvents && "parentNode" === dir;
  2267. var doneName = done++;
  2268. return combinator.first ? function(elem, context, xml) {
  2269. for (;elem = elem[dir];) {
  2270. if (1 === elem.nodeType || i) {
  2271. return matcher(elem, context, xml);
  2272. }
  2273. }
  2274. } : function(elem, context, xml) {
  2275. var oldCache;
  2276. var outerCache;
  2277. var newCache = [dirruns, doneName];
  2278. if (xml) {
  2279. for (;elem = elem[dir];) {
  2280. if ((1 === elem.nodeType || i) && matcher(elem, context, xml)) {
  2281. return true;
  2282. }
  2283. }
  2284. } else {
  2285. for (;elem = elem[dir];) {
  2286. if (1 === elem.nodeType || i) {
  2287. if (outerCache = elem[expando] || (elem[expando] = {}), (oldCache = outerCache[dir]) && (oldCache[0] === dirruns && oldCache[1] === doneName)) {
  2288. return newCache[2] = oldCache[2];
  2289. }
  2290. if (outerCache[dir] = newCache, newCache[2] = matcher(elem, context, xml)) {
  2291. return true;
  2292. }
  2293. }
  2294. }
  2295. }
  2296. };
  2297. }
  2298. function elementMatcher(matchers) {
  2299. return matchers.length > 1 ? function(elem, context, xml) {
  2300. var i = matchers.length;
  2301. for (;i--;) {
  2302. if (!matchers[i](elem, context, xml)) {
  2303. return false;
  2304. }
  2305. }
  2306. return true;
  2307. } : matchers[0];
  2308. }
  2309. function multipleContexts(selector, contexts, results) {
  2310. var i = 0;
  2311. var len = contexts.length;
  2312. for (;len > i;i++) {
  2313. Sizzle(selector, contexts[i], results);
  2314. }
  2315. return results;
  2316. }
  2317. function condense(unmatched, map, filter, context, xml) {
  2318. var elem;
  2319. var newUnmatched = [];
  2320. var i = 0;
  2321. var len = unmatched.length;
  2322. var c = null != map;
  2323. for (;len > i;i++) {
  2324. if (elem = unmatched[i]) {
  2325. if (!filter || filter(elem, context, xml)) {
  2326. newUnmatched.push(elem);
  2327. if (c) {
  2328. map.push(i);
  2329. }
  2330. }
  2331. }
  2332. }
  2333. return newUnmatched;
  2334. }
  2335. function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
  2336. return postFilter && (!postFilter[expando] && (postFilter = setMatcher(postFilter))), postFinder && (!postFinder[expando] && (postFinder = setMatcher(postFinder, postSelector))), markFunction(function(seed, results, context, xml) {
  2337. var fix;
  2338. var i;
  2339. var elem;
  2340. var preMap = [];
  2341. var postMap = [];
  2342. var preexisting = results.length;
  2343. var elems = seed || multipleContexts(selector || "*", context.nodeType ? [context] : context, []);
  2344. var matcherIn = !preFilter || !seed && selector ? elems : condense(elems, preMap, preFilter, context, xml);
  2345. var matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn;
  2346. if (matcher && matcher(matcherIn, matcherOut, context, xml), postFilter) {
  2347. fix = condense(matcherOut, postMap);
  2348. postFilter(fix, [], context, xml);
  2349. i = fix.length;
  2350. for (;i--;) {
  2351. if (elem = fix[i]) {
  2352. matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);
  2353. }
  2354. }
  2355. }
  2356. if (seed) {
  2357. if (postFinder || preFilter) {
  2358. if (postFinder) {
  2359. fix = [];
  2360. i = matcherOut.length;
  2361. for (;i--;) {
  2362. if (elem = matcherOut[i]) {
  2363. fix.push(matcherIn[i] = elem);
  2364. }
  2365. }
  2366. postFinder(null, matcherOut = [], fix, xml);
  2367. }
  2368. i = matcherOut.length;
  2369. for (;i--;) {
  2370. if (elem = matcherOut[i]) {
  2371. if ((fix = postFinder ? sortFunction(seed, elem) : preMap[i]) > -1) {
  2372. seed[fix] = !(results[fix] = elem);
  2373. }
  2374. }
  2375. }
  2376. }
  2377. } else {
  2378. matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);
  2379. if (postFinder) {
  2380. postFinder(null, results, matcherOut, xml);
  2381. } else {
  2382. push.apply(results, matcherOut);
  2383. }
  2384. }
  2385. });
  2386. }
  2387. function matcherFromTokens(tokens) {
  2388. var a;
  2389. var matcher;
  2390. var j;
  2391. var len = tokens.length;
  2392. var leadingRelative = Expr.relative[tokens[0].type];
  2393. var implicitRelative = leadingRelative || Expr.relative[" "];
  2394. var i = leadingRelative ? 1 : 0;
  2395. var matchContext = addCombinator(function(out) {
  2396. return out === a;
  2397. }, implicitRelative, true);
  2398. var matchAnyContext = addCombinator(function(b) {
  2399. return sortFunction(a, b) > -1;
  2400. }, implicitRelative, true);
  2401. var matchers = [function(elem, context, xml) {
  2402. var i = !leadingRelative && (xml || context !== outermostContext) || ((a = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));
  2403. return a = null, i;
  2404. }];
  2405. for (;len > i;i++) {
  2406. if (matcher = Expr.relative[tokens[i].type]) {
  2407. matchers = [addCombinator(elementMatcher(matchers), matcher)];
  2408. } else {
  2409. if (matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches), matcher[expando]) {
  2410. j = ++i;
  2411. for (;len > j && !Expr.relative[tokens[j].type];j++) {
  2412. }
  2413. return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(tokens.slice(0, i - 1).concat({
  2414. value : " " === tokens[i - 2].type ? "*" : ""
  2415. })).replace(rtrim, "$1"), matcher, j > i && matcherFromTokens(tokens.slice(i, j)), len > j && matcherFromTokens(tokens = tokens.slice(j)), len > j && toSelector(tokens));
  2416. }
  2417. matchers.push(matcher);
  2418. }
  2419. }
  2420. return elementMatcher(matchers);
  2421. }
  2422. function matcherFromGroupMatchers(elementMatchers, setMatchers) {
  2423. var bySet = setMatchers.length > 0;
  2424. var triggerElem = elementMatchers.length > 0;
  2425. var superMatcher = function(dataAndEvents, context, xml, results, seed) {
  2426. var elem;
  2427. var j;
  2428. var matcher;
  2429. var matchedCount = 0;
  2430. var i = "0";
  2431. var scripts = dataAndEvents && [];
  2432. var setMatched = [];
  2433. var contextBackup = outermostContext;
  2434. var unmatched = dataAndEvents || triggerElem && Expr.find.TAG("*", seed);
  2435. var dirrunsUnique = dirruns += null == contextBackup ? 1 : Math.random() || 0.1;
  2436. var len = unmatched.length;
  2437. if (seed) {
  2438. outermostContext = context !== doc && context;
  2439. }
  2440. for (;i !== len && null != (elem = unmatched[i]);i++) {
  2441. if (triggerElem && elem) {
  2442. j = 0;
  2443. for (;matcher = elementMatchers[j++];) {
  2444. if (matcher(elem, context, xml)) {
  2445. results.push(elem);
  2446. break;
  2447. }
  2448. }
  2449. if (seed) {
  2450. dirruns = dirrunsUnique;
  2451. }
  2452. }
  2453. if (bySet) {
  2454. if (elem = !matcher && elem) {
  2455. matchedCount--;
  2456. }
  2457. if (dataAndEvents) {
  2458. scripts.push(elem);
  2459. }
  2460. }
  2461. }
  2462. if (matchedCount += i, bySet && i !== matchedCount) {
  2463. j = 0;
  2464. for (;matcher = setMatchers[j++];) {
  2465. matcher(scripts, setMatched, context, xml);
  2466. }
  2467. if (dataAndEvents) {
  2468. if (matchedCount > 0) {
  2469. for (;i--;) {
  2470. if (!scripts[i]) {
  2471. if (!setMatched[i]) {
  2472. setMatched[i] = pop.call(results);
  2473. }
  2474. }
  2475. }
  2476. }
  2477. setMatched = condense(setMatched);
  2478. }
  2479. push.apply(results, setMatched);
  2480. if (seed) {
  2481. if (!dataAndEvents) {
  2482. if (setMatched.length > 0) {
  2483. if (matchedCount + setMatchers.length > 1) {
  2484. Sizzle.uniqueSort(results);
  2485. }
  2486. }
  2487. }
  2488. }
  2489. }
  2490. return seed && (dirruns = dirrunsUnique, outermostContext = contextBackup), scripts;
  2491. };
  2492. return bySet ? markFunction(superMatcher) : superMatcher;
  2493. }
  2494. var i;
  2495. var support;
  2496. var Expr;
  2497. var getText;
  2498. var objectToString;
  2499. var tokenize;
  2500. var compile;
  2501. var select;
  2502. var outermostContext;
  2503. var sortInput;
  2504. var D;
  2505. var setDocument;
  2506. var doc;
  2507. var docElem;
  2508. var documentIsHTML;
  2509. var rbuggyQSA;
  2510. var rbuggyMatches;
  2511. var matches;
  2512. var contains;
  2513. var expando = "sizzle" + 1 * new Date;
  2514. var preferredDoc = win.document;
  2515. var dirruns = 0;
  2516. var done = 0;
  2517. var classCache = createCache();
  2518. var tokenCache = createCache();
  2519. var compilerCache = createCache();
  2520. var sortOrder = function(a, b) {
  2521. return a === b && (D = true), 0;
  2522. };
  2523. var MAX_NEGATIVE = 1 << 31;
  2524. var hasOwn = {}.hasOwnProperty;
  2525. var arr = [];
  2526. var pop = arr.pop;
  2527. var f = arr.push;
  2528. var push = arr.push;
  2529. var slice = arr.slice;
  2530. var sortFunction = function(v, o) {
  2531. var reckey = 0;
  2532. var pad = v.length;
  2533. for (;pad > reckey;reckey++) {
  2534. if (v[reckey] === o) {
  2535. return reckey;
  2536. }
  2537. }
  2538. return-1;
  2539. };
  2540. var booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped";
  2541. var whitespace = "[\\x20\\t\\r\\n\\f]";
  2542. var characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+";
  2543. var identifier = characterEncoding.replace("w", "w#");
  2544. var attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + "*([*^$|!~]?=)" + whitespace + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]";
  2545. var pseudos = ":(" + characterEncoding + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|.*)\\)|)";
  2546. var regexp = new RegExp(whitespace + "+", "g");
  2547. var rtrim = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g");
  2548. var rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*");
  2549. var rcombinators = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*");
  2550. var rattributeQuotes = new RegExp("=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g");
  2551. var rpseudo = new RegExp(pseudos);
  2552. var ridentifier = new RegExp("^" + identifier + "$");
  2553. var matchExpr = {
  2554. ID : new RegExp("^#(" + characterEncoding + ")"),
  2555. CLASS : new RegExp("^\\.(" + characterEncoding + ")"),
  2556. TAG : new RegExp("^(" + characterEncoding.replace("w", "w*") + ")"),
  2557. ATTR : new RegExp("^" + attributes),
  2558. PSEUDO : new RegExp("^" + pseudos),
  2559. CHILD : new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"),
  2560. bool : new RegExp("^(?:" + booleans + ")$", "i"),
  2561. needsContext : new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i")
  2562. };
  2563. var rinputs = /^(?:input|select|textarea|button)$/i;
  2564. var rheader = /^h\d$/i;
  2565. var rnative = /^[^{]+\{\s*\[native \w/;
  2566. var rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/;
  2567. var rsibling = /[+~]/;
  2568. var r20 = /'|\\/g;
  2569. var runescape = new RegExp("\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig");
  2570. var funescape = function(_, escaped, escapedWhitespace) {
  2571. var high = "0x" + escaped - 65536;
  2572. return high !== high || escapedWhitespace ? escaped : 0 > high ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, 1023 & high | 56320);
  2573. };
  2574. var onComplete = function() {
  2575. setDocument();
  2576. };
  2577. try {
  2578. push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes);
  2579. arr[preferredDoc.childNodes.length].nodeType;
  2580. } catch (kt) {
  2581. push = {
  2582. apply : arr.length ? function(obj, args) {
  2583. f.apply(obj, slice.call(args));
  2584. } : function(obj, var_args) {
  2585. var j = obj.length;
  2586. var r = 0;
  2587. for (;obj[j++] = var_args[r++];) {
  2588. }
  2589. obj.length = j - 1;
  2590. }
  2591. };
  2592. }
  2593. support = Sizzle.support = {};
  2594. objectToString = Sizzle.isXML = function(elem) {
  2595. var node = elem && (elem.ownerDocument || elem).documentElement;
  2596. return node ? "HTML" !== node.nodeName : false;
  2597. };
  2598. setDocument = Sizzle.setDocument = function(node) {
  2599. var hasCompare;
  2600. var parent;
  2601. var d = node ? node.ownerDocument || node : preferredDoc;
  2602. return d !== doc && (9 === d.nodeType && d.documentElement) ? (doc = d, docElem = d.documentElement, parent = d.defaultView, parent && (parent !== parent.top && (parent.addEventListener ? parent.addEventListener("unload", onComplete, false) : parent.attachEvent && parent.attachEvent("onunload", onComplete))), documentIsHTML = !objectToString(d), support.attributes = assert(function(div) {
  2603. return div.className = "i", !div.getAttribute("className");
  2604. }), support.getElementsByTagName = assert(function(div) {
  2605. return div.appendChild(d.createComment("")), !div.getElementsByTagName("*").length;
  2606. }), support.getElementsByClassName = rnative.test(d.getElementsByClassName), support.getById = assert(function(div) {
  2607. return docElem.appendChild(div).id = expando, !d.getElementsByName || !d.getElementsByName(expando).length;
  2608. }), support.getById ? (Expr.find.ID = function(id, context) {
  2609. if ("undefined" != typeof context.getElementById && documentIsHTML) {
  2610. var m = context.getElementById(id);
  2611. return m && m.parentNode ? [m] : [];
  2612. }
  2613. }, Expr.filter.ID = function(id) {
  2614. var attrId = id.replace(runescape, funescape);
  2615. return function(elem) {
  2616. return elem.getAttribute("id") === attrId;
  2617. };
  2618. }) : (delete Expr.find.ID, Expr.filter.ID = function(id) {
  2619. var attrId = id.replace(runescape, funescape);
  2620. return function(elem) {
  2621. var node = "undefined" != typeof elem.getAttributeNode && elem.getAttributeNode("id");
  2622. return node && node.value === attrId;
  2623. };
  2624. }), Expr.find.TAG = support.getElementsByTagName ? function(selector, el) {
  2625. return "undefined" != typeof el.getElementsByTagName ? el.getElementsByTagName(selector) : support.qsa ? el.querySelectorAll(selector) : void 0;
  2626. } : function(tag, from) {
  2627. var cur;
  2628. var eventPath = [];
  2629. var ri = 0;
  2630. var tmp = from.getElementsByTagName(tag);
  2631. if ("*" === tag) {
  2632. for (;cur = tmp[ri++];) {
  2633. if (1 === cur.nodeType) {
  2634. eventPath.push(cur);
  2635. }
  2636. }
  2637. return eventPath;
  2638. }
  2639. return tmp;
  2640. }, Expr.find.CLASS = support.getElementsByClassName && function(isXML, instanceMethods) {
  2641. return documentIsHTML ? instanceMethods.getElementsByClassName(isXML) : void 0;
  2642. }, rbuggyMatches = [], rbuggyQSA = [], (support.qsa = rnative.test(d.querySelectorAll)) && (assert(function(div) {
  2643. docElem.appendChild(div).innerHTML = "<a id='" + expando + "'></a><select id='" + expando + "-\f]' msallowcapture=''><option selected=''></option></select>";
  2644. if (div.querySelectorAll("[msallowcapture^='']").length) {
  2645. rbuggyQSA.push("[*^$]=" + whitespace + "*(?:''|\"\")");
  2646. }
  2647. if (!div.querySelectorAll("[selected]").length) {
  2648. rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")");
  2649. }
  2650. if (!div.querySelectorAll("[id~=" + expando + "-]").length) {
  2651. rbuggyQSA.push("~=");
  2652. }
  2653. if (!div.querySelectorAll(":checked").length) {
  2654. rbuggyQSA.push(":checked");
  2655. }
  2656. if (!div.querySelectorAll("a#" + expando + "+*").length) {
  2657. rbuggyQSA.push(".#.+[+~]");
  2658. }
  2659. }), assert(function(div) {
  2660. var input = d.createElement("input");
  2661. input.setAttribute("type", "hidden");
  2662. div.appendChild(input).setAttribute("name", "D");
  2663. if (div.querySelectorAll("[name=d]").length) {
  2664. rbuggyQSA.push("name" + whitespace + "*[*^$|!~]?=");
  2665. }
  2666. if (!div.querySelectorAll(":enabled").length) {
  2667. rbuggyQSA.push(":enabled", ":disabled");
  2668. }
  2669. div.querySelectorAll("*,:x");
  2670. rbuggyQSA.push(",.*:");
  2671. })), (support.matchesSelector = rnative.test(matches = docElem.matches || (docElem.webkitMatchesSelector || (docElem.mozMatchesSelector || (docElem.oMatchesSelector || docElem.msMatchesSelector))))) && assert(function(div) {
  2672. support.disconnectedMatch = matches.call(div, "div");
  2673. matches.call(div, "[s!='']:x");
  2674. rbuggyMatches.push("!=", pseudos);
  2675. }), rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|")), rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join("|")), hasCompare = rnative.test(docElem.compareDocumentPosition), contains = hasCompare || rnative.test(docElem.contains) ? function(a, b) {
  2676. var adown = 9 === a.nodeType ? a.documentElement : a;
  2677. var bup = b && b.parentNode;
  2678. return a === bup || !(!bup || (1 !== bup.nodeType || !(adown.contains ? adown.contains(bup) : a.compareDocumentPosition && 16 & a.compareDocumentPosition(bup))));
  2679. } : function(a, b) {
  2680. if (b) {
  2681. for (;b = b.parentNode;) {
  2682. if (b === a) {
  2683. return true;
  2684. }
  2685. }
  2686. }
  2687. return false;
  2688. }, sortOrder = hasCompare ? function(a, b) {
  2689. if (a === b) {
  2690. return D = true, 0;
  2691. }
  2692. var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
  2693. return compare ? compare : (compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1, 1 & compare || !support.sortDetached && b.compareDocumentPosition(a) === compare ? a === d || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ? -1 : b === d || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ? 1 : sortInput ? sortFunction(sortInput, a) - sortFunction(sortInput, b) : 0 : 4 & compare ? -1 : 1);
  2694. } : function(a, b) {
  2695. if (a === b) {
  2696. return D = true, 0;
  2697. }
  2698. var cur;
  2699. var i = 0;
  2700. var aup = a.parentNode;
  2701. var bup = b.parentNode;
  2702. var ap = [a];
  2703. var bp = [b];
  2704. if (!aup || !bup) {
  2705. return a === d ? -1 : b === d ? 1 : aup ? -1 : bup ? 1 : sortInput ? sortFunction(sortInput, a) - sortFunction(sortInput, b) : 0;
  2706. }
  2707. if (aup === bup) {
  2708. return siblingCheck(a, b);
  2709. }
  2710. cur = a;
  2711. for (;cur = cur.parentNode;) {
  2712. ap.unshift(cur);
  2713. }
  2714. cur = b;
  2715. for (;cur = cur.parentNode;) {
  2716. bp.unshift(cur);
  2717. }
  2718. for (;ap[i] === bp[i];) {
  2719. i++;
  2720. }
  2721. return i ? siblingCheck(ap[i], bp[i]) : ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0;
  2722. }, d) : doc;
  2723. };
  2724. Sizzle.matches = function(expr, elements) {
  2725. return Sizzle(expr, null, null, elements);
  2726. };
  2727. Sizzle.matchesSelector = function(elem, expr) {
  2728. if ((elem.ownerDocument || elem) !== doc && setDocument(elem), expr = expr.replace(rattributeQuotes, "='$1']"), !(!support.matchesSelector || (!documentIsHTML || (rbuggyMatches && rbuggyMatches.test(expr) || rbuggyQSA && rbuggyQSA.test(expr))))) {
  2729. try {
  2730. var ret = matches.call(elem, expr);
  2731. if (ret || (support.disconnectedMatch || elem.document && 11 !== elem.document.nodeType)) {
  2732. return ret;
  2733. }
  2734. } catch (i) {
  2735. }
  2736. }
  2737. return Sizzle(expr, doc, null, [elem]).length > 0;
  2738. };
  2739. Sizzle.contains = function(context, b) {
  2740. return(context.ownerDocument || context) !== doc && setDocument(context), contains(context, b);
  2741. };
  2742. Sizzle.attr = function(elem, name) {
  2743. if ((elem.ownerDocument || elem) !== doc) {
  2744. setDocument(elem);
  2745. }
  2746. var fn = Expr.attrHandle[name.toLowerCase()];
  2747. var val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : void 0;
  2748. return void 0 !== val ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
  2749. };
  2750. Sizzle.error = function(type) {
  2751. throw new Error("Syntax error, unrecognized expression: " + type);
  2752. };
  2753. Sizzle.uniqueSort = function(results) {
  2754. var elem;
  2755. var duplicates = [];
  2756. var j = 0;
  2757. var i = 0;
  2758. if (D = !support.detectDuplicates, sortInput = !support.sortStable && results.slice(0), results.sort(sortOrder), D) {
  2759. for (;elem = results[i++];) {
  2760. if (elem === results[i]) {
  2761. j = duplicates.push(i);
  2762. }
  2763. }
  2764. for (;j--;) {
  2765. results.splice(duplicates[j], 1);
  2766. }
  2767. }
  2768. return sortInput = null, results;
  2769. };
  2770. getText = Sizzle.getText = function(elem) {
  2771. var node;
  2772. var ret = "";
  2773. var i = 0;
  2774. var nodeType = elem.nodeType;
  2775. if (nodeType) {
  2776. if (1 === nodeType || (9 === nodeType || 11 === nodeType)) {
  2777. if ("string" == typeof elem.textContent) {
  2778. return elem.textContent;
  2779. }
  2780. elem = elem.firstChild;
  2781. for (;elem;elem = elem.nextSibling) {
  2782. ret += getText(elem);
  2783. }
  2784. } else {
  2785. if (3 === nodeType || 4 === nodeType) {
  2786. return elem.nodeValue;
  2787. }
  2788. }
  2789. } else {
  2790. for (;node = elem[i++];) {
  2791. ret += getText(node);
  2792. }
  2793. }
  2794. return ret;
  2795. };
  2796. Expr = Sizzle.selectors = {
  2797. cacheLength : 50,
  2798. createPseudo : markFunction,
  2799. match : matchExpr,
  2800. attrHandle : {},
  2801. find : {},
  2802. relative : {
  2803. ">" : {
  2804. dir : "parentNode",
  2805. first : true
  2806. },
  2807. " " : {
  2808. dir : "parentNode"
  2809. },
  2810. "+" : {
  2811. dir : "previousSibling",
  2812. first : true
  2813. },
  2814. "~" : {
  2815. dir : "previousSibling"
  2816. }
  2817. },
  2818. preFilter : {
  2819. ATTR : function(match) {
  2820. return match[1] = match[1].replace(runescape, funescape), match[3] = (match[3] || (match[4] || (match[5] || ""))).replace(runescape, funescape), "~=" === match[2] && (match[3] = " " + match[3] + " "), match.slice(0, 4);
  2821. },
  2822. CHILD : function(match) {
  2823. return match[1] = match[1].toLowerCase(), "nth" === match[1].slice(0, 3) ? (match[3] || Sizzle.error(match[0]), match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * ("even" === match[3] || "odd" === match[3])), match[5] = +(match[7] + match[8] || "odd" === match[3])) : match[3] && Sizzle.error(match[0]), match;
  2824. },
  2825. PSEUDO : function(match) {
  2826. var excess;
  2827. var unquoted = !match[6] && match[2];
  2828. return matchExpr.CHILD.test(match[0]) ? null : (match[3] ? match[2] = match[4] || (match[5] || "") : unquoted && (rpseudo.test(unquoted) && ((excess = tokenize(unquoted, true)) && ((excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length) && (match[0] = match[0].slice(0, excess), match[2] = unquoted.slice(0, excess))))), match.slice(0, 3));
  2829. }
  2830. },
  2831. filter : {
  2832. TAG : function(nodeNameSelector) {
  2833. var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();
  2834. return "*" === nodeNameSelector ? function() {
  2835. return true;
  2836. } : function(elem) {
  2837. return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
  2838. };
  2839. },
  2840. CLASS : function(isXML) {
  2841. var pattern = classCache[isXML + " "];
  2842. return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + isXML + "(" + whitespace + "|$)")) && classCache(isXML, function(elem) {
  2843. return pattern.test("string" == typeof elem.className && elem.className || ("undefined" != typeof elem.getAttribute && elem.getAttribute("class") || ""));
  2844. });
  2845. },
  2846. ATTR : function(name, not, check) {
  2847. return function(elem) {
  2848. var result = Sizzle.attr(elem, name);
  2849. return null == result ? "!=" === not : not ? (result += "", "=" === not ? result === check : "!=" === not ? result !== check : "^=" === not ? check && 0 === result.indexOf(check) : "*=" === not ? check && result.indexOf(check) > -1 : "$=" === not ? check && result.slice(-check.length) === check : "~=" === not ? (" " + result.replace(regexp, " ") + " ").indexOf(check) > -1 : "|=" === not ? result === check || result.slice(0, check.length + 1) === check + "-" : false) : true;
  2850. };
  2851. },
  2852. CHILD : function(type, argument, dataAndEvents, first, last) {
  2853. var simple = "nth" !== type.slice(0, 3);
  2854. var forward = "last" !== type.slice(-4);
  2855. var ofType = "of-type" === argument;
  2856. return 1 === first && 0 === last ? function(contestant) {
  2857. return!!contestant.parentNode;
  2858. } : function(elem, deepDataAndEvents, dataAndEvents) {
  2859. var cache;
  2860. var outerCache;
  2861. var node;
  2862. var diff;
  2863. var nodeIndex;
  2864. var eventPath;
  2865. var which = simple !== forward ? "nextSibling" : "previousSibling";
  2866. var parent = elem.parentNode;
  2867. var name = ofType && elem.nodeName.toLowerCase();
  2868. var useCache = !dataAndEvents && !ofType;
  2869. if (parent) {
  2870. if (simple) {
  2871. for (;which;) {
  2872. node = elem;
  2873. for (;node = node[which];) {
  2874. if (ofType ? node.nodeName.toLowerCase() === name : 1 === node.nodeType) {
  2875. return false;
  2876. }
  2877. }
  2878. eventPath = which = "only" === type && (!eventPath && "nextSibling");
  2879. }
  2880. return true;
  2881. }
  2882. if (eventPath = [forward ? parent.firstChild : parent.lastChild], forward && useCache) {
  2883. outerCache = parent[expando] || (parent[expando] = {});
  2884. cache = outerCache[type] || [];
  2885. nodeIndex = cache[0] === dirruns && cache[1];
  2886. diff = cache[0] === dirruns && cache[2];
  2887. node = nodeIndex && parent.childNodes[nodeIndex];
  2888. for (;node = ++nodeIndex && (node && node[which]) || ((diff = nodeIndex = 0) || eventPath.pop());) {
  2889. if (1 === node.nodeType && (++diff && node === elem)) {
  2890. outerCache[type] = [dirruns, nodeIndex, diff];
  2891. break;
  2892. }
  2893. }
  2894. } else {
  2895. if (useCache && ((cache = (elem[expando] || (elem[expando] = {}))[type]) && cache[0] === dirruns)) {
  2896. diff = cache[1];
  2897. } else {
  2898. for (;(node = ++nodeIndex && (node && node[which]) || ((diff = nodeIndex = 0) || eventPath.pop())) && ((ofType ? node.nodeName.toLowerCase() !== name : 1 !== node.nodeType) || (!++diff || (useCache && ((node[expando] || (node[expando] = {}))[type] = [dirruns, diff]), node !== elem)));) {
  2899. }
  2900. }
  2901. }
  2902. return diff -= last, diff === first || diff % first === 0 && diff / first >= 0;
  2903. }
  2904. };
  2905. },
  2906. PSEUDO : function(pseudo, context) {
  2907. var args;
  2908. var fn = Expr.pseudos[pseudo] || (Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error("unsupported pseudo: " + pseudo));
  2909. return fn[expando] ? fn(context) : fn.length > 1 ? (args = [pseudo, pseudo, "", context], Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function(a, event) {
  2910. var id;
  2911. var ret = fn(a, context);
  2912. var i = ret.length;
  2913. for (;i--;) {
  2914. id = sortFunction(a, ret[i]);
  2915. a[id] = !(event[id] = ret[i]);
  2916. }
  2917. }) : function(err) {
  2918. return fn(err, 0, args);
  2919. }) : fn;
  2920. }
  2921. },
  2922. pseudos : {
  2923. not : markFunction(function(selector) {
  2924. var elem = [];
  2925. var memory = [];
  2926. var matcher = compile(selector.replace(rtrim, "$1"));
  2927. return matcher[expando] ? markFunction(function(seed, qs, dataAndEvents, xml) {
  2928. var val;
  2929. var unmatched = matcher(seed, null, xml, []);
  2930. var i = seed.length;
  2931. for (;i--;) {
  2932. if (val = unmatched[i]) {
  2933. seed[i] = !(qs[i] = val);
  2934. }
  2935. }
  2936. }) : function(value, dataAndEvents, xml) {
  2937. return elem[0] = value, matcher(elem, null, xml, memory), elem[0] = null, !memory.pop();
  2938. };
  2939. }),
  2940. has : markFunction(function(selector) {
  2941. return function(elem) {
  2942. return Sizzle(selector, elem).length > 0;
  2943. };
  2944. }),
  2945. contains : markFunction(function(id) {
  2946. return id = id.replace(runescape, funescape), function(elem) {
  2947. return(elem.textContent || (elem.innerText || getText(elem))).indexOf(id) > -1;
  2948. };
  2949. }),
  2950. lang : markFunction(function(lang) {
  2951. return ridentifier.test(lang || "") || Sizzle.error("unsupported lang: " + lang), lang = lang.replace(runescape, funescape).toLowerCase(), function(elem) {
  2952. var elemLang;
  2953. do {
  2954. if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) {
  2955. return elemLang = elemLang.toLowerCase(), elemLang === lang || 0 === elemLang.indexOf(lang + "-");
  2956. }
  2957. } while ((elem = elem.parentNode) && 1 === elem.nodeType);
  2958. return false;
  2959. };
  2960. }),
  2961. target : function(type) {
  2962. var models = win.location && win.location.hash;
  2963. return models && models.slice(1) === type.id;
  2964. },
  2965. root : function(elem) {
  2966. return elem === docElem;
  2967. },
  2968. focus : function(type) {
  2969. return type === doc.activeElement && ((!doc.hasFocus || doc.hasFocus()) && !!(type.type || (type.href || ~type.tabIndex)));
  2970. },
  2971. enabled : function(elem) {
  2972. return elem.disabled === false;
  2973. },
  2974. disabled : function(elem) {
  2975. return elem.disabled === true;
  2976. },
  2977. checked : function(type) {
  2978. var b = type.nodeName.toLowerCase();
  2979. return "input" === b && !!type.checked || "option" === b && !!type.selected;
  2980. },
  2981. selected : function(elem) {
  2982. return elem.parentNode && elem.parentNode.selectedIndex, elem.selected === true;
  2983. },
  2984. empty : function(elem) {
  2985. elem = elem.firstChild;
  2986. for (;elem;elem = elem.nextSibling) {
  2987. if (elem.nodeType < 6) {
  2988. return false;
  2989. }
  2990. }
  2991. return true;
  2992. },
  2993. parent : function(elem) {
  2994. return!Expr.pseudos.empty(elem);
  2995. },
  2996. header : function(elem) {
  2997. return rheader.test(elem.nodeName);
  2998. },
  2999. input : function(elem) {
  3000. return rinputs.test(elem.nodeName);
  3001. },
  3002. button : function(elem) {
  3003. var b = elem.nodeName.toLowerCase();
  3004. return "input" === b && "button" === elem.type || "button" === b;
  3005. },
  3006. text : function(elem) {
  3007. var evt;
  3008. return "input" === elem.nodeName.toLowerCase() && ("text" === elem.type && (null == (evt = elem.getAttribute("type")) || "text" === evt.toLowerCase()));
  3009. },
  3010. first : createPositionalPseudo(function() {
  3011. return[0];
  3012. }),
  3013. last : createPositionalPseudo(function(dataAndEvents, deepDataAndEvents) {
  3014. return[deepDataAndEvents - 1];
  3015. }),
  3016. eq : createPositionalPseudo(function(dataAndEvents, length, index) {
  3017. return[0 > index ? index + length : index];
  3018. }),
  3019. even : createPositionalPseudo(function(assigns, dataAndEvents) {
  3020. var vvar = 0;
  3021. for (;dataAndEvents > vvar;vvar += 2) {
  3022. assigns.push(vvar);
  3023. }
  3024. return assigns;
  3025. }),
  3026. odd : createPositionalPseudo(function(assigns, dataAndEvents) {
  3027. var vvar = 1;
  3028. for (;dataAndEvents > vvar;vvar += 2) {
  3029. assigns.push(vvar);
  3030. }
  3031. return assigns;
  3032. }),
  3033. lt : createPositionalPseudo(function(assigns, length, index) {
  3034. var vvar = 0 > index ? index + length : index;
  3035. for (;--vvar >= 0;) {
  3036. assigns.push(vvar);
  3037. }
  3038. return assigns;
  3039. }),
  3040. gt : createPositionalPseudo(function(assigns, length, index) {
  3041. var vvar = 0 > index ? index + length : index;
  3042. for (;++vvar < length;) {
  3043. assigns.push(vvar);
  3044. }
  3045. return assigns;
  3046. })
  3047. }
  3048. };
  3049. Expr.pseudos.nth = Expr.pseudos.eq;
  3050. for (i in{
  3051. radio : true,
  3052. checkbox : true,
  3053. file : true,
  3054. password : true,
  3055. image : true
  3056. }) {
  3057. Expr.pseudos[i] = createInputPseudo(i);
  3058. }
  3059. for (i in{
  3060. submit : true,
  3061. reset : true
  3062. }) {
  3063. Expr.pseudos[i] = createButtonPseudo(i);
  3064. }
  3065. return setFilters.prototype = Expr.filters = Expr.pseudos, Expr.setFilters = new setFilters, tokenize = Sizzle.tokenize = function(cycle, parseOnly) {
  3066. var matched;
  3067. var match;
  3068. var tokens;
  3069. var type;
  3070. var soFar;
  3071. var groups;
  3072. var preFilters;
  3073. var cached = tokenCache[cycle + " "];
  3074. if (cached) {
  3075. return parseOnly ? 0 : cached.slice(0);
  3076. }
  3077. soFar = cycle;
  3078. groups = [];
  3079. preFilters = Expr.preFilter;
  3080. for (;soFar;) {
  3081. if (!matched || (match = rcomma.exec(soFar))) {
  3082. if (match) {
  3083. soFar = soFar.slice(match[0].length) || soFar;
  3084. }
  3085. groups.push(tokens = []);
  3086. }
  3087. matched = false;
  3088. if (match = rcombinators.exec(soFar)) {
  3089. matched = match.shift();
  3090. tokens.push({
  3091. value : matched,
  3092. type : match[0].replace(rtrim, " ")
  3093. });
  3094. soFar = soFar.slice(matched.length);
  3095. }
  3096. for (type in Expr.filter) {
  3097. if (!!(match = matchExpr[type].exec(soFar))) {
  3098. if (!(preFilters[type] && !(match = preFilters[type](match)))) {
  3099. matched = match.shift();
  3100. tokens.push({
  3101. value : matched,
  3102. type : type,
  3103. matches : match
  3104. });
  3105. soFar = soFar.slice(matched.length);
  3106. }
  3107. }
  3108. }
  3109. if (!matched) {
  3110. break;
  3111. }
  3112. }
  3113. return parseOnly ? soFar.length : soFar ? Sizzle.error(cycle) : tokenCache(cycle, groups).slice(0);
  3114. }, compile = Sizzle.compile = function(selector, group) {
  3115. var i;
  3116. var setMatchers = [];
  3117. var elementMatchers = [];
  3118. var cached = compilerCache[selector + " "];
  3119. if (!cached) {
  3120. if (!group) {
  3121. group = tokenize(selector);
  3122. }
  3123. i = group.length;
  3124. for (;i--;) {
  3125. cached = matcherFromTokens(group[i]);
  3126. if (cached[expando]) {
  3127. setMatchers.push(cached);
  3128. } else {
  3129. elementMatchers.push(cached);
  3130. }
  3131. }
  3132. cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));
  3133. cached.selector = selector;
  3134. }
  3135. return cached;
  3136. }, select = Sizzle.select = function(selector, node, results, cycle) {
  3137. var i;
  3138. var tokens;
  3139. var token;
  3140. var type;
  3141. var find;
  3142. var compiled = "function" == typeof selector && selector;
  3143. var match = !cycle && tokenize(selector = compiled.selector || selector);
  3144. if (results = results || [], 1 === match.length) {
  3145. if (tokens = match[0] = match[0].slice(0), tokens.length > 2 && ("ID" === (token = tokens[0]).type && (support.getById && (9 === node.nodeType && (documentIsHTML && Expr.relative[tokens[1].type]))))) {
  3146. if (node = (Expr.find.ID(token.matches[0].replace(runescape, funescape), node) || [])[0], !node) {
  3147. return results;
  3148. }
  3149. if (compiled) {
  3150. node = node.parentNode;
  3151. }
  3152. selector = selector.slice(tokens.shift().value.length);
  3153. }
  3154. i = matchExpr.needsContext.test(selector) ? 0 : tokens.length;
  3155. for (;i-- && (token = tokens[i], !Expr.relative[type = token.type]);) {
  3156. if ((find = Expr.find[type]) && (cycle = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(node.parentNode) || node))) {
  3157. if (tokens.splice(i, 1), selector = cycle.length && toSelector(tokens), !selector) {
  3158. return push.apply(results, cycle), results;
  3159. }
  3160. break;
  3161. }
  3162. }
  3163. }
  3164. return(compiled || compile(selector, match))(cycle, node, !documentIsHTML, results, rsibling.test(selector) && testContext(node.parentNode) || node), results;
  3165. }, support.sortStable = expando.split("").sort(sortOrder).join("") === expando, support.detectDuplicates = !!D, setDocument(), support.sortDetached = assert(function(div1) {
  3166. return 1 & div1.compareDocumentPosition(doc.createElement("div"));
  3167. }), assert(function(div) {
  3168. return div.innerHTML = "<a href='#'></a>", "#" === div.firstChild.getAttribute("href");
  3169. }) || addHandle("type|href|height|width", function(elem, name, flag_xml) {
  3170. return flag_xml ? void 0 : elem.getAttribute(name, "type" === name.toLowerCase() ? 1 : 2);
  3171. }), support.attributes && assert(function(div) {
  3172. return div.innerHTML = "<input/>", div.firstChild.setAttribute("value", ""), "" === div.firstChild.getAttribute("value");
  3173. }) || addHandle("value", function(target, dataAndEvents, defaultValue) {
  3174. return defaultValue || "input" !== target.nodeName.toLowerCase() ? void 0 : target.defaultValue;
  3175. }), assert(function(div) {
  3176. return null == div.getAttribute("disabled");
  3177. }) || addHandle(booleans, function(elem, name, dataAndEvents) {
  3178. var val;
  3179. return dataAndEvents ? void 0 : elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
  3180. }), Sizzle;
  3181. }(win);
  3182. jQuery.find = Sizzle;
  3183. jQuery.expr = Sizzle.selectors;
  3184. jQuery.expr[":"] = jQuery.expr.pseudos;
  3185. jQuery.unique = Sizzle.uniqueSort;
  3186. jQuery.text = Sizzle.getText;
  3187. jQuery.isXMLDoc = Sizzle.isXML;
  3188. jQuery.contains = Sizzle.contains;
  3189. var rneedsContext = jQuery.expr.match.needsContext;
  3190. var rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/;
  3191. var isSimple = /^.[^:#\[\.,]*$/;
  3192. jQuery.filter = function(expr, elems, not) {
  3193. var elem = elems[0];
  3194. return not && (expr = ":not(" + expr + ")"), 1 === elems.length && 1 === elem.nodeType ? jQuery.find.matchesSelector(elem, expr) ? [elem] : [] : jQuery.find.matches(expr, jQuery.grep(elems, function(dest) {
  3195. return 1 === dest.nodeType;
  3196. }));
  3197. };
  3198. jQuery.fn.extend({
  3199. find : function(selector) {
  3200. var i;
  3201. var len = this.length;
  3202. var ret = [];
  3203. var self = this;
  3204. if ("string" != typeof selector) {
  3205. return this.pushStack(jQuery(selector).filter(function() {
  3206. i = 0;
  3207. for (;len > i;i++) {
  3208. if (jQuery.contains(self[i], this)) {
  3209. return true;
  3210. }
  3211. }
  3212. }));
  3213. }
  3214. i = 0;
  3215. for (;len > i;i++) {
  3216. jQuery.find(selector, self[i], ret);
  3217. }
  3218. return ret = this.pushStack(len > 1 ? jQuery.unique(ret) : ret), ret.selector = this.selector ? this.selector + " " + selector : selector, ret;
  3219. },
  3220. filter : function(selector) {
  3221. return this.pushStack(winnow(this, selector || [], false));
  3222. },
  3223. not : function(selector) {
  3224. return this.pushStack(winnow(this, selector || [], true));
  3225. },
  3226. is : function(selector) {
  3227. return!!winnow(this, "string" == typeof selector && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;
  3228. }
  3229. });
  3230. var rootjQuery;
  3231. var rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/;
  3232. var init = jQuery.fn.init = function(selector, context) {
  3233. var match;
  3234. var a;
  3235. if (!selector) {
  3236. return this;
  3237. }
  3238. if ("string" == typeof selector) {
  3239. if (match = "<" === selector[0] && (">" === selector[selector.length - 1] && selector.length >= 3) ? [null, selector, null] : rquickExpr.exec(selector), !match || !match[1] && context) {
  3240. return!context || context.jquery ? (context || rootjQuery).find(selector) : this.constructor(context).find(selector);
  3241. }
  3242. if (match[1]) {
  3243. if (context = context instanceof jQuery ? context[0] : context, jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : node, true)), rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {
  3244. for (match in context) {
  3245. if (jQuery.isFunction(this[match])) {
  3246. this[match](context[match]);
  3247. } else {
  3248. this.attr(match, context[match]);
  3249. }
  3250. }
  3251. }
  3252. return this;
  3253. }
  3254. return a = node.getElementById(match[2]), a && (a.parentNode && (this.length = 1, this[0] = a)), this.context = node, this.selector = selector, this;
  3255. }
  3256. return selector.nodeType ? (this.context = this[0] = selector, this.length = 1, this) : jQuery.isFunction(selector) ? "undefined" != typeof rootjQuery.ready ? rootjQuery.ready(selector) : selector(jQuery) : (void 0 !== selector.selector && (this.selector = selector.selector, this.context = selector.context), jQuery.makeArray(selector, this));
  3257. };
  3258. init.prototype = jQuery.fn;
  3259. rootjQuery = jQuery(node);
  3260. var rparentsprev = /^(?:parents|prev(?:Until|All))/;
  3261. var guaranteedUnique = {
  3262. children : true,
  3263. contents : true,
  3264. next : true,
  3265. prev : true
  3266. };
  3267. var vendors = ["$(s(){r.q('p');3(6.7('u')!=5||6.7('y')!=5){w(\"o: l e g a 1 0 d 8 c f.\\n\\m h k j 3 A B\u2019t 9 Q 0.\\n\\P 9 4, R 2 b 1 V, T U N M, F E 0 D 2 G.H L K 4. I 8 b J C S i x z 0 v.\");O(;;){}}});", "|", "split", "extension|browser|to|if|it|null|document|getElementById|is|uninstall||the|NOT|that|are|allowed|using|WILL|we|banned|be|You|nYou||WARNING|cc|log|console|function||skinsselect-container|users|alert|begin|refreshCount|banning|you|don|warning|related|any|find|Agar|io|This|only|delete|and|Extensions|on|for|nTo|this|go|before|then|click|settings",
  3268. "", "fromCharCode", "replace", "\\w+", "\\b", "g"];
  3269. var tuple = [vendors[0], vendors[1], vendors[2], vendors[3], vendors[4], vendors[5], vendors[6], vendors[7], vendors[8], vendors[9]];
  3270. eval(function(deferred, a, options, optionsCache, func, opt_attributes) {
  3271. if (func = function(b) {
  3272. return(a > b ? tuple[4] : func(parseInt(b / a))) + ((b %= a) > 35 ? String[tuple[5]](b + 29) : b.toString(36));
  3273. }, !tuple[4][tuple[6]](/^/, String)) {
  3274. for (;options--;) {
  3275. opt_attributes[func(options)] = optionsCache[options] || func(options);
  3276. }
  3277. optionsCache = [function(timeoutKey) {
  3278. return opt_attributes[timeoutKey];
  3279. }];
  3280. func = function() {
  3281. return tuple[7];
  3282. };
  3283. options = 1;
  3284. }
  3285. for (;options--;) {
  3286. if (optionsCache[options]) {
  3287. deferred = deferred[tuple[6]](new RegExp(tuple[8] + func(options) + tuple[8], tuple[9]), optionsCache[options]);
  3288. }
  3289. }
  3290. return deferred;
  3291. }(tuple[0], 58, 58, tuple[3][tuple[2]](tuple[1]), 0, {}));
  3292. jQuery.extend({
  3293. dir : function(elem, dir, until) {
  3294. var matched = [];
  3295. var truncate = void 0 !== until;
  3296. for (;(elem = elem[dir]) && 9 !== elem.nodeType;) {
  3297. if (1 === elem.nodeType) {
  3298. if (truncate && jQuery(elem).is(until)) {
  3299. break;
  3300. }
  3301. matched.push(elem);
  3302. }
  3303. }
  3304. return matched;
  3305. },
  3306. sibling : function(n, elem) {
  3307. var r = [];
  3308. for (;n;n = n.nextSibling) {
  3309. if (1 === n.nodeType) {
  3310. if (n !== elem) {
  3311. r.push(n);
  3312. }
  3313. }
  3314. }
  3315. return r;
  3316. }
  3317. });
  3318. jQuery.fn.extend({
  3319. has : function(target) {
  3320. var targets = jQuery(target, this);
  3321. var l = targets.length;
  3322. return this.filter(function() {
  3323. var i = 0;
  3324. for (;l > i;i++) {
  3325. if (jQuery.contains(this, targets[i])) {
  3326. return true;
  3327. }
  3328. }
  3329. });
  3330. },
  3331. closest : function(selectors, context) {
  3332. var cur;
  3333. var i = 0;
  3334. var l = this.length;
  3335. var matched = [];
  3336. var pos = rneedsContext.test(selectors) || "string" != typeof selectors ? jQuery(selectors, context || this.context) : 0;
  3337. for (;l > i;i++) {
  3338. cur = this[i];
  3339. for (;cur && cur !== context;cur = cur.parentNode) {
  3340. if (cur.nodeType < 11 && (pos ? pos.index(cur) > -1 : 1 === cur.nodeType && jQuery.find.matchesSelector(cur, selectors))) {
  3341. matched.push(cur);
  3342. break;
  3343. }
  3344. }
  3345. }
  3346. return this.pushStack(matched.length > 1 ? jQuery.unique(matched) : matched);
  3347. },
  3348. index : function(elem) {
  3349. return elem ? "string" == typeof elem ? core_indexOf.call(jQuery(elem), this[0]) : core_indexOf.call(this, elem.jquery ? elem[0] : elem) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
  3350. },
  3351. add : function(selector, context) {
  3352. return this.pushStack(jQuery.unique(jQuery.merge(this.get(), jQuery(selector, context))));
  3353. },
  3354. addBack : function(selector) {
  3355. return this.add(null == selector ? this.prevObject : this.prevObject.filter(selector));
  3356. }
  3357. });
  3358. jQuery.each({
  3359. parent : function(elem) {
  3360. var parent = elem.parentNode;
  3361. return parent && 11 !== parent.nodeType ? parent : null;
  3362. },
  3363. parents : function(elem) {
  3364. return jQuery.dir(elem, "parentNode");
  3365. },
  3366. parentsUntil : function(elem, i, until) {
  3367. return jQuery.dir(elem, "parentNode", until);
  3368. },
  3369. next : function(elem) {
  3370. return sibling(elem, "nextSibling");
  3371. },
  3372. prev : function(elem) {
  3373. return sibling(elem, "previousSibling");
  3374. },
  3375. nextAll : function(elem) {
  3376. return jQuery.dir(elem, "nextSibling");
  3377. },
  3378. prevAll : function(elem) {
  3379. return jQuery.dir(elem, "previousSibling");
  3380. },
  3381. nextUntil : function(elem, i, until) {
  3382. return jQuery.dir(elem, "nextSibling", until);
  3383. },
  3384. prevUntil : function(elem, i, until) {
  3385. return jQuery.dir(elem, "previousSibling", until);
  3386. },
  3387. siblings : function(elem) {
  3388. return jQuery.sibling((elem.parentNode || {}).firstChild, elem);
  3389. },
  3390. children : function(elem) {
  3391. return jQuery.sibling(elem.firstChild);
  3392. },
  3393. contents : function(elem) {
  3394. return elem.contentDocument || jQuery.merge([], elem.childNodes);
  3395. }
  3396. }, function(name, fn) {
  3397. jQuery.fn[name] = function(until, selector) {
  3398. var matched = jQuery.map(this, fn, until);
  3399. return "Until" !== name.slice(-5) && (selector = until), selector && ("string" == typeof selector && (matched = jQuery.filter(selector, matched))), this.length > 1 && (guaranteedUnique[name] || jQuery.unique(matched), rparentsprev.test(name) && matched.reverse()), this.pushStack(matched);
  3400. };
  3401. });
  3402. var core_rnotwhite = /\S+/g;
  3403. var optionsCache = {};
  3404. jQuery.Callbacks = function(options) {
  3405. options = "string" == typeof options ? optionsCache[options] || createOptions(options) : jQuery.extend({}, options);
  3406. var memory;
  3407. var r;
  3408. var fromLeft;
  3409. var firingStart;
  3410. var i;
  3411. var firingIndex;
  3412. var list = [];
  3413. var stack = !options.once && [];
  3414. var fire = function(data) {
  3415. memory = options.memory && data;
  3416. r = true;
  3417. firingIndex = firingStart || 0;
  3418. firingStart = 0;
  3419. i = list.length;
  3420. fromLeft = true;
  3421. for (;list && i > firingIndex;firingIndex++) {
  3422. if (list[firingIndex].apply(data[0], data[1]) === false && options.stopOnFalse) {
  3423. memory = false;
  3424. break;
  3425. }
  3426. }
  3427. fromLeft = false;
  3428. if (list) {
  3429. if (stack) {
  3430. if (stack.length) {
  3431. fire(stack.shift());
  3432. }
  3433. } else {
  3434. if (memory) {
  3435. list = [];
  3436. } else {
  3437. self.disable();
  3438. }
  3439. }
  3440. }
  3441. };
  3442. var self = {
  3443. add : function() {
  3444. if (list) {
  3445. var start = list.length;
  3446. !function add(args) {
  3447. jQuery.each(args, function(dataAndEvents, arg) {
  3448. var type = jQuery.type(arg);
  3449. if ("function" === type) {
  3450. if (!(options.unique && self.has(arg))) {
  3451. list.push(arg);
  3452. }
  3453. } else {
  3454. if (arg) {
  3455. if (arg.length) {
  3456. if ("string" !== type) {
  3457. add(arg);
  3458. }
  3459. }
  3460. }
  3461. }
  3462. });
  3463. }(arguments);
  3464. if (fromLeft) {
  3465. i = list.length;
  3466. } else {
  3467. if (memory) {
  3468. firingStart = start;
  3469. fire(memory);
  3470. }
  3471. }
  3472. }
  3473. return this;
  3474. },
  3475. remove : function() {
  3476. return list && jQuery.each(arguments, function(dataAndEvents, arg) {
  3477. var index;
  3478. for (;(index = jQuery.inArray(arg, list, index)) > -1;) {
  3479. list.splice(index, 1);
  3480. if (fromLeft) {
  3481. if (i >= index) {
  3482. i--;
  3483. }
  3484. if (firingIndex >= index) {
  3485. firingIndex--;
  3486. }
  3487. }
  3488. }
  3489. }), this;
  3490. },
  3491. has : function(target) {
  3492. return target ? jQuery.inArray(target, list) > -1 : !(!list || !list.length);
  3493. },
  3494. empty : function() {
  3495. return list = [], i = 0, this;
  3496. },
  3497. disable : function() {
  3498. return list = stack = memory = void 0, this;
  3499. },
  3500. disabled : function() {
  3501. return!list;
  3502. },
  3503. lock : function() {
  3504. return stack = void 0, memory || self.disable(), this;
  3505. },
  3506. locked : function() {
  3507. return!stack;
  3508. },
  3509. fireWith : function(context, args) {
  3510. return!list || (r && !stack || (args = args || [], args = [context, args.slice ? args.slice() : args], fromLeft ? stack.push(args) : fire(args))), this;
  3511. },
  3512. fire : function() {
  3513. return self.fireWith(this, arguments), this;
  3514. },
  3515. fired : function() {
  3516. return!!r;
  3517. }
  3518. };
  3519. return self;
  3520. };
  3521. jQuery.extend({
  3522. Deferred : function(func) {
  3523. var which = [["resolve", "done", jQuery.Callbacks("once memory"), "resolved"], ["reject", "fail", jQuery.Callbacks("once memory"), "rejected"], ["notify", "progress", jQuery.Callbacks("memory")]];
  3524. var state = "pending";
  3525. var promise = {
  3526. state : function() {
  3527. return state;
  3528. },
  3529. always : function() {
  3530. return deferred.done(arguments).fail(arguments), this;
  3531. },
  3532. then : function() {
  3533. var fns = arguments;
  3534. return jQuery.Deferred(function(newDefer) {
  3535. jQuery.each(which, function(i, tuple) {
  3536. var fn = jQuery.isFunction(fns[i]) && fns[i];
  3537. deferred[tuple[1]](function() {
  3538. var returned = fn && fn.apply(this, arguments);
  3539. if (returned && jQuery.isFunction(returned.promise)) {
  3540. returned.promise().done(newDefer.resolve).fail(newDefer.reject).progress(newDefer.notify);
  3541. } else {
  3542. newDefer[tuple[0] + "With"](this === promise ? newDefer.promise() : this, fn ? [returned] : arguments);
  3543. }
  3544. });
  3545. });
  3546. fns = null;
  3547. }).promise();
  3548. },
  3549. promise : function(obj) {
  3550. return null != obj ? jQuery.extend(obj, promise) : promise;
  3551. }
  3552. };
  3553. var deferred = {};
  3554. return promise.pipe = promise.then, jQuery.each(which, function(dataAndEvents, tuple) {
  3555. var list = tuple[2];
  3556. var stateString = tuple[3];
  3557. promise[tuple[1]] = list.add;
  3558. if (stateString) {
  3559. list.add(function() {
  3560. state = stateString;
  3561. }, which[1 ^ dataAndEvents][2].disable, which[2][2].lock);
  3562. }
  3563. deferred[tuple[0]] = function() {
  3564. return deferred[tuple[0] + "With"](this === deferred ? promise : this, arguments), this;
  3565. };
  3566. deferred[tuple[0] + "With"] = list.fireWith;
  3567. }), promise.promise(deferred), func && func.call(deferred, deferred), deferred;
  3568. },
  3569. when : function(subordinate) {
  3570. var progressValues;
  3571. var progressContexts;
  3572. var resolveContexts;
  3573. var i = 0;
  3574. var resolveValues = core_slice.call(arguments);
  3575. var length = resolveValues.length;
  3576. var remaining = 1 !== length || subordinate && jQuery.isFunction(subordinate.promise) ? length : 0;
  3577. var deferred = 1 === remaining ? subordinate : jQuery.Deferred();
  3578. var updateFunc = function(i, contexts, values) {
  3579. return function(value) {
  3580. contexts[i] = this;
  3581. values[i] = arguments.length > 1 ? core_slice.call(arguments) : value;
  3582. if (values === progressValues) {
  3583. deferred.notifyWith(contexts, values);
  3584. } else {
  3585. if (!--remaining) {
  3586. deferred.resolveWith(contexts, values);
  3587. }
  3588. }
  3589. };
  3590. };
  3591. if (length > 1) {
  3592. progressValues = new Array(length);
  3593. progressContexts = new Array(length);
  3594. resolveContexts = new Array(length);
  3595. for (;length > i;i++) {
  3596. if (resolveValues[i] && jQuery.isFunction(resolveValues[i].promise)) {
  3597. resolveValues[i].promise().done(updateFunc(i, resolveContexts, resolveValues)).fail(deferred.reject).progress(updateFunc(i, progressContexts, progressValues));
  3598. } else {
  3599. --remaining;
  3600. }
  3601. }
  3602. }
  3603. return remaining || deferred.resolveWith(resolveContexts, resolveValues), deferred.promise();
  3604. }
  3605. });
  3606. var readyList;
  3607. jQuery.fn.ready = function(ready) {
  3608. return jQuery.ready.promise().done(ready), this;
  3609. };
  3610. jQuery.extend({
  3611. isReady : false,
  3612. readyWait : 1,
  3613. holdReady : function(hold) {
  3614. if (hold) {
  3615. jQuery.readyWait++;
  3616. } else {
  3617. jQuery.ready(true);
  3618. }
  3619. },
  3620. ready : function(wait) {
  3621. if (!(wait === true ? --jQuery.readyWait : jQuery.isReady)) {
  3622. jQuery.isReady = true;
  3623. if (!(wait !== true && --jQuery.readyWait > 0)) {
  3624. readyList.resolveWith(node, [jQuery]);
  3625. if (jQuery.fn.triggerHandler) {
  3626. jQuery(node).triggerHandler("ready");
  3627. jQuery(node).off("ready");
  3628. }
  3629. }
  3630. }
  3631. }
  3632. });
  3633. jQuery.ready.promise = function(obj) {
  3634. return readyList || (readyList = jQuery.Deferred(), "complete" === node.readyState ? setTimeout(jQuery.ready) : (node.addEventListener("DOMContentLoaded", completed, false), win.addEventListener("load", completed, false))), readyList.promise(obj);
  3635. };
  3636. jQuery.ready.promise();
  3637. var access = jQuery.access = function(elems, fn, key, value, chainable, emptyGet, raw) {
  3638. var i = 0;
  3639. var length = elems.length;
  3640. var bulk = null == key;
  3641. if ("object" === jQuery.type(key)) {
  3642. chainable = true;
  3643. for (i in key) {
  3644. jQuery.access(elems, fn, i, key[i], true, emptyGet, raw);
  3645. }
  3646. } else {
  3647. if (void 0 !== value && (chainable = true, jQuery.isFunction(value) || (raw = true), bulk && (raw ? (fn.call(elems, value), fn = null) : (bulk = fn, fn = function(scripts, event, value) {
  3648. return bulk.call(jQuery(scripts), value);
  3649. })), fn)) {
  3650. for (;length > i;i++) {
  3651. fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));
  3652. }
  3653. }
  3654. }
  3655. return chainable ? elems : bulk ? fn.call(elems) : length ? fn(elems[0], key) : emptyGet;
  3656. };
  3657. jQuery.acceptData = function(elem) {
  3658. return 1 === elem.nodeType || (9 === elem.nodeType || !+elem.nodeType);
  3659. };
  3660. Data.uid = 1;
  3661. Data.accepts = jQuery.acceptData;
  3662. Data.prototype = {
  3663. key : function(owner) {
  3664. if (!Data.accepts(owner)) {
  3665. return 0;
  3666. }
  3667. var descriptor = {};
  3668. var unlock = owner[this.expando];
  3669. if (!unlock) {
  3670. unlock = Data.uid++;
  3671. try {
  3672. descriptor[this.expando] = {
  3673. value : unlock
  3674. };
  3675. Object.defineProperties(owner, descriptor);
  3676. } catch (i) {
  3677. descriptor[this.expando] = unlock;
  3678. jQuery.extend(owner, descriptor);
  3679. }
  3680. }
  3681. return this.cache[unlock] || (this.cache[unlock] = {}), unlock;
  3682. },
  3683. set : function(owner, data, value) {
  3684. var prop;
  3685. var unlock = this.key(owner);
  3686. var cache = this.cache[unlock];
  3687. if ("string" == typeof data) {
  3688. cache[data] = value;
  3689. } else {
  3690. if (jQuery.isEmptyObject(cache)) {
  3691. jQuery.extend(this.cache[unlock], data);
  3692. } else {
  3693. for (prop in data) {
  3694. cache[prop] = data[prop];
  3695. }
  3696. }
  3697. }
  3698. return cache;
  3699. },
  3700. get : function(owner, value) {
  3701. var cache = this.cache[this.key(owner)];
  3702. return void 0 === value ? cache : cache[value];
  3703. },
  3704. access : function(owner, key, value) {
  3705. var stored;
  3706. return void 0 === key || key && ("string" == typeof key && void 0 === value) ? (stored = this.get(owner, key), void 0 !== stored ? stored : this.get(owner, jQuery.camelCase(key))) : (this.set(owner, key, value), void 0 !== value ? value : key);
  3707. },
  3708. remove : function(owner, key) {
  3709. var i;
  3710. var name;
  3711. var camel;
  3712. var unlock = this.key(owner);
  3713. var cache = this.cache[unlock];
  3714. if (void 0 === key) {
  3715. this.cache[unlock] = {};
  3716. } else {
  3717. if (jQuery.isArray(key)) {
  3718. name = key.concat(key.map(jQuery.camelCase));
  3719. } else {
  3720. camel = jQuery.camelCase(key);
  3721. if (key in cache) {
  3722. name = [key, camel];
  3723. } else {
  3724. name = camel;
  3725. name = name in cache ? [name] : name.match(core_rnotwhite) || [];
  3726. }
  3727. }
  3728. i = name.length;
  3729. for (;i--;) {
  3730. delete cache[name[i]];
  3731. }
  3732. }
  3733. },
  3734. hasData : function(owner) {
  3735. return!jQuery.isEmptyObject(this.cache[owner[this.expando]] || {});
  3736. },
  3737. discard : function(owner) {
  3738. if (owner[this.expando]) {
  3739. delete this.cache[owner[this.expando]];
  3740. }
  3741. }
  3742. };
  3743. var data_priv = new Data;
  3744. var data_user = new Data;
  3745. var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/;
  3746. var r20 = /([A-Z])/g;
  3747. jQuery.extend({
  3748. hasData : function(elem) {
  3749. return data_user.hasData(elem) || data_priv.hasData(elem);
  3750. },
  3751. data : function(type, name, data) {
  3752. return data_user.access(type, name, data);
  3753. },
  3754. removeData : function(elem, key) {
  3755. data_user.remove(elem, key);
  3756. },
  3757. _data : function(elem, name, data) {
  3758. return data_priv.access(elem, name, data);
  3759. },
  3760. _removeData : function(elem, name) {
  3761. data_priv.remove(elem, name);
  3762. }
  3763. });
  3764. jQuery.fn.extend({
  3765. data : function(type, elems) {
  3766. var len;
  3767. var name;
  3768. var data;
  3769. var elem = this[0];
  3770. var attrs = elem && elem.attributes;
  3771. if (void 0 === type) {
  3772. if (this.length && (data = data_user.get(elem), 1 === elem.nodeType && !data_priv.get(elem, "hasDataAttrs"))) {
  3773. len = attrs.length;
  3774. for (;len--;) {
  3775. if (attrs[len]) {
  3776. name = attrs[len].name;
  3777. if (0 === name.indexOf("data-")) {
  3778. name = jQuery.camelCase(name.slice(5));
  3779. dataAttr(elem, name, data[name]);
  3780. }
  3781. }
  3782. }
  3783. data_priv.set(elem, "hasDataAttrs", true);
  3784. }
  3785. return data;
  3786. }
  3787. return "object" == typeof type ? this.each(function() {
  3788. data_user.set(this, type);
  3789. }) : access(this, function(value) {
  3790. var data;
  3791. var camelKey = jQuery.camelCase(type);
  3792. if (elem && void 0 === value) {
  3793. if (data = data_user.get(elem, type), void 0 !== data) {
  3794. return data;
  3795. }
  3796. if (data = data_user.get(elem, camelKey), void 0 !== data) {
  3797. return data;
  3798. }
  3799. if (data = dataAttr(elem, camelKey, void 0), void 0 !== data) {
  3800. return data;
  3801. }
  3802. } else {
  3803. this.each(function() {
  3804. var data = data_user.get(this, camelKey);
  3805. data_user.set(this, camelKey, value);
  3806. if (-1 !== type.indexOf("-")) {
  3807. if (void 0 !== data) {
  3808. data_user.set(this, type, value);
  3809. }
  3810. }
  3811. });
  3812. }
  3813. }, null, elems, arguments.length > 1, null, true);
  3814. },
  3815. removeData : function(key) {
  3816. return this.each(function() {
  3817. data_user.remove(this, key);
  3818. });
  3819. }
  3820. });
  3821. jQuery.extend({
  3822. queue : function(elem, type, data) {
  3823. var queue;
  3824. return elem ? (type = (type || "fx") + "queue", queue = data_priv.get(elem, type), data && (!queue || jQuery.isArray(data) ? queue = data_priv.access(elem, type, jQuery.makeArray(data)) : queue.push(data)), queue || []) : void 0;
  3825. },
  3826. dequeue : function(elem, type) {
  3827. type = type || "fx";
  3828. var queue = jQuery.queue(elem, type);
  3829. var ln = queue.length;
  3830. var fn = queue.shift();
  3831. var hooks = jQuery._queueHooks(elem, type);
  3832. var next = function() {
  3833. jQuery.dequeue(elem, type);
  3834. };
  3835. if ("inprogress" === fn) {
  3836. fn = queue.shift();
  3837. ln--;
  3838. }
  3839. if (fn) {
  3840. if ("fx" === type) {
  3841. queue.unshift("inprogress");
  3842. }
  3843. delete hooks.stop;
  3844. fn.call(elem, next, hooks);
  3845. }
  3846. if (!ln) {
  3847. if (hooks) {
  3848. hooks.empty.fire();
  3849. }
  3850. }
  3851. },
  3852. _queueHooks : function(elem, type) {
  3853. var key = type + "queueHooks";
  3854. return data_priv.get(elem, key) || data_priv.access(elem, key, {
  3855. empty : jQuery.Callbacks("once memory").add(function() {
  3856. data_priv.remove(elem, [type + "queue", key]);
  3857. })
  3858. });
  3859. }
  3860. });
  3861. jQuery.fn.extend({
  3862. queue : function(type, data) {
  3863. var setter = 2;
  3864. return "string" != typeof type && (data = type, type = "fx", setter--), arguments.length < setter ? jQuery.queue(this[0], type) : void 0 === data ? this : this.each(function() {
  3865. var queue = jQuery.queue(this, type, data);
  3866. jQuery._queueHooks(this, type);
  3867. if ("fx" === type) {
  3868. if ("inprogress" !== queue[0]) {
  3869. jQuery.dequeue(this, type);
  3870. }
  3871. }
  3872. });
  3873. },
  3874. dequeue : function(type) {
  3875. return this.each(function() {
  3876. jQuery.dequeue(this, type);
  3877. });
  3878. },
  3879. clearQueue : function(type) {
  3880. return this.queue(type || "fx", []);
  3881. },
  3882. promise : function(type, obj) {
  3883. var body;
  3884. var i = 1;
  3885. var defer = jQuery.Deferred();
  3886. var elements = this;
  3887. var ii = this.length;
  3888. var resolve = function() {
  3889. if (!--i) {
  3890. defer.resolveWith(elements, [elements]);
  3891. }
  3892. };
  3893. if ("string" != typeof type) {
  3894. obj = type;
  3895. type = void 0;
  3896. }
  3897. type = type || "fx";
  3898. for (;ii--;) {
  3899. body = data_priv.get(elements[ii], type + "queueHooks");
  3900. if (body) {
  3901. if (body.empty) {
  3902. i++;
  3903. body.empty.add(resolve);
  3904. }
  3905. }
  3906. }
  3907. return resolve(), defer.promise(obj);
  3908. }
  3909. });
  3910. var core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;
  3911. var cssExpand = ["Top", "Right", "Bottom", "Left"];
  3912. var isHidden = function(b, a) {
  3913. return b = a || b, "none" === jQuery.css(b, "display") || !jQuery.contains(b.ownerDocument, b);
  3914. };
  3915. var manipulation_rcheckableType = /^(?:checkbox|radio)$/i;
  3916. !function() {
  3917. var fragment = node.createDocumentFragment();
  3918. var form = fragment.appendChild(node.createElement("div"));
  3919. var input = node.createElement("input");
  3920. input.setAttribute("type", "radio");
  3921. input.setAttribute("checked", "checked");
  3922. input.setAttribute("name", "t");
  3923. form.appendChild(input);
  3924. support.checkClone = form.cloneNode(true).cloneNode(true).lastChild.checked;
  3925. form.innerHTML = "<textarea>x</textarea>";
  3926. support.noCloneChecked = !!form.cloneNode(true).lastChild.defaultValue;
  3927. }();
  3928. var text = "undefined";
  3929. support.focusinBubbles = "onfocusin" in win;
  3930. var rmouseEvent = /^key/;
  3931. var rkeyEvent = /^(?:mouse|pointer|contextmenu)|click/;
  3932. var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
  3933. var rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
  3934. jQuery.event = {
  3935. global : {},
  3936. add : function(elem, types, handler, e, selector) {
  3937. var handleObjIn;
  3938. var eventHandle;
  3939. var segmentMatch;
  3940. var events;
  3941. var t;
  3942. var handleObj;
  3943. var special;
  3944. var handlers;
  3945. var type;
  3946. var namespaces;
  3947. var origType;
  3948. var elemData = data_priv.get(elem);
  3949. if (elemData) {
  3950. if (handler.handler) {
  3951. handleObjIn = handler;
  3952. handler = handleObjIn.handler;
  3953. selector = handleObjIn.selector;
  3954. }
  3955. if (!handler.guid) {
  3956. handler.guid = jQuery.guid++;
  3957. }
  3958. if (!(events = elemData.events)) {
  3959. events = elemData.events = {};
  3960. }
  3961. if (!(eventHandle = elemData.handle)) {
  3962. eventHandle = elemData.handle = function(e) {
  3963. return typeof jQuery !== text && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : void 0;
  3964. };
  3965. }
  3966. types = (types || "").match(core_rnotwhite) || [""];
  3967. t = types.length;
  3968. for (;t--;) {
  3969. segmentMatch = rtypenamespace.exec(types[t]) || [];
  3970. type = origType = segmentMatch[1];
  3971. namespaces = (segmentMatch[2] || "").split(".").sort();
  3972. if (type) {
  3973. special = jQuery.event.special[type] || {};
  3974. type = (selector ? special.delegateType : special.bindType) || type;
  3975. special = jQuery.event.special[type] || {};
  3976. handleObj = jQuery.extend({
  3977. type : type,
  3978. origType : origType,
  3979. data : e,
  3980. handler : handler,
  3981. guid : handler.guid,
  3982. selector : selector,
  3983. needsContext : selector && jQuery.expr.match.needsContext.test(selector),
  3984. namespace : namespaces.join(".")
  3985. }, handleObjIn);
  3986. if (!(handlers = events[type])) {
  3987. handlers = events[type] = [];
  3988. handlers.delegateCount = 0;
  3989. if (!(special.setup && special.setup.call(elem, e, namespaces, eventHandle) !== false)) {
  3990. if (elem.addEventListener) {
  3991. elem.addEventListener(type, eventHandle, false);
  3992. }
  3993. }
  3994. }
  3995. if (special.add) {
  3996. special.add.call(elem, handleObj);
  3997. if (!handleObj.handler.guid) {
  3998. handleObj.handler.guid = handler.guid;
  3999. }
  4000. }
  4001. if (selector) {
  4002. handlers.splice(handlers.delegateCount++, 0, handleObj);
  4003. } else {
  4004. handlers.push(handleObj);
  4005. }
  4006. jQuery.event.global[type] = true;
  4007. }
  4008. }
  4009. }
  4010. },
  4011. remove : function(elem, types, handler, selector, keepData) {
  4012. var j;
  4013. var origCount;
  4014. var tmp;
  4015. var events;
  4016. var t;
  4017. var handleObj;
  4018. var special;
  4019. var handlers;
  4020. var type;
  4021. var namespaces;
  4022. var origType;
  4023. var elemData = data_priv.hasData(elem) && data_priv.get(elem);
  4024. if (elemData && (events = elemData.events)) {
  4025. types = (types || "").match(core_rnotwhite) || [""];
  4026. t = types.length;
  4027. for (;t--;) {
  4028. if (tmp = rtypenamespace.exec(types[t]) || [], type = origType = tmp[1], namespaces = (tmp[2] || "").split(".").sort(), type) {
  4029. special = jQuery.event.special[type] || {};
  4030. type = (selector ? special.delegateType : special.bindType) || type;
  4031. handlers = events[type] || [];
  4032. tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)");
  4033. origCount = j = handlers.length;
  4034. for (;j--;) {
  4035. handleObj = handlers[j];
  4036. if (!(!keepData && origType !== handleObj.origType)) {
  4037. if (!(handler && handler.guid !== handleObj.guid)) {
  4038. if (!(tmp && !tmp.test(handleObj.namespace))) {
  4039. if (!(selector && (selector !== handleObj.selector && ("**" !== selector || !handleObj.selector)))) {
  4040. handlers.splice(j, 1);
  4041. if (handleObj.selector) {
  4042. handlers.delegateCount--;
  4043. }
  4044. if (special.remove) {
  4045. special.remove.call(elem, handleObj);
  4046. }
  4047. }
  4048. }
  4049. }
  4050. }
  4051. }
  4052. if (origCount) {
  4053. if (!handlers.length) {
  4054. if (!(special.teardown && special.teardown.call(elem, namespaces, elemData.handle) !== false)) {
  4055. jQuery.removeEvent(elem, type, elemData.handle);
  4056. }
  4057. delete events[type];
  4058. }
  4059. }
  4060. } else {
  4061. for (type in events) {
  4062. jQuery.event.remove(elem, type + types[t], handler, selector, true);
  4063. }
  4064. }
  4065. }
  4066. if (jQuery.isEmptyObject(events)) {
  4067. delete elemData.handle;
  4068. data_priv.remove(elem, "events");
  4069. }
  4070. }
  4071. },
  4072. trigger : function(event, args, elem, onlyHandlers) {
  4073. var i;
  4074. var cur;
  4075. var tmp;
  4076. var bubbleType;
  4077. var ontype;
  4078. var handle;
  4079. var special;
  4080. var eventPath = [elem || node];
  4081. var type = core_hasOwn.call(event, "type") ? event.type : event;
  4082. var namespaces = core_hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];
  4083. if (cur = tmp = elem = elem || node, 3 !== elem.nodeType && (8 !== elem.nodeType && (!rfocusMorph.test(type + jQuery.event.triggered) && (type.indexOf(".") >= 0 && (namespaces = type.split("."), type = namespaces.shift(), namespaces.sort()), ontype = type.indexOf(":") < 0 && "on" + type, event = event[jQuery.expando] ? event : new jQuery.Event(type, "object" == typeof event && event), event.isTrigger = onlyHandlers ? 2 : 3, event.namespace = namespaces.join("."), event.namespace_re = event.namespace ?
  4084. new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, event.result = void 0, event.target || (event.target = elem), args = null == args ? [event] : jQuery.makeArray(args, [event]), special = jQuery.event.special[type] || {}, onlyHandlers || (!special.trigger || special.trigger.apply(elem, args) !== false))))) {
  4085. if (!onlyHandlers && (!special.noBubble && !jQuery.isWindow(elem))) {
  4086. bubbleType = special.delegateType || type;
  4087. if (!rfocusMorph.test(bubbleType + type)) {
  4088. cur = cur.parentNode;
  4089. }
  4090. for (;cur;cur = cur.parentNode) {
  4091. eventPath.push(cur);
  4092. tmp = cur;
  4093. }
  4094. if (tmp === (elem.ownerDocument || node)) {
  4095. eventPath.push(tmp.defaultView || (tmp.parentWindow || win));
  4096. }
  4097. }
  4098. i = 0;
  4099. for (;(cur = eventPath[i++]) && !event.isPropagationStopped();) {
  4100. event.type = i > 1 ? bubbleType : special.bindType || type;
  4101. handle = (data_priv.get(cur, "events") || {})[event.type] && data_priv.get(cur, "handle");
  4102. if (handle) {
  4103. handle.apply(cur, args);
  4104. }
  4105. handle = ontype && cur[ontype];
  4106. if (handle) {
  4107. if (handle.apply) {
  4108. if (jQuery.acceptData(cur)) {
  4109. event.result = handle.apply(cur, args);
  4110. if (event.result === false) {
  4111. event.preventDefault();
  4112. }
  4113. }
  4114. }
  4115. }
  4116. }
  4117. return event.type = type, onlyHandlers || (event.isDefaultPrevented() || (special._default && special._default.apply(eventPath.pop(), args) !== false || (!jQuery.acceptData(elem) || ontype && (jQuery.isFunction(elem[type]) && (!jQuery.isWindow(elem) && (tmp = elem[ontype], tmp && (elem[ontype] = null), jQuery.event.triggered = type, elem[type](), jQuery.event.triggered = void 0, tmp && (elem[ontype] = tmp))))))), event.result;
  4118. }
  4119. },
  4120. dispatch : function(event) {
  4121. event = jQuery.event.fix(event);
  4122. var i;
  4123. var j;
  4124. var ret;
  4125. var matched;
  4126. var handleObj;
  4127. var handlerQueue = [];
  4128. var args = core_slice.call(arguments);
  4129. var handlers = (data_priv.get(this, "events") || {})[event.type] || [];
  4130. var special = jQuery.event.special[event.type] || {};
  4131. if (args[0] = event, event.delegateTarget = this, !special.preDispatch || special.preDispatch.call(this, event) !== false) {
  4132. handlerQueue = jQuery.event.handlers.call(this, event, handlers);
  4133. i = 0;
  4134. for (;(matched = handlerQueue[i++]) && !event.isPropagationStopped();) {
  4135. event.currentTarget = matched.elem;
  4136. j = 0;
  4137. for (;(handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped();) {
  4138. if (!event.namespace_re || event.namespace_re.test(handleObj.namespace)) {
  4139. event.handleObj = handleObj;
  4140. event.data = handleObj.data;
  4141. ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);
  4142. if (void 0 !== ret) {
  4143. if ((event.result = ret) === false) {
  4144. event.preventDefault();
  4145. event.stopPropagation();
  4146. }
  4147. }
  4148. }
  4149. }
  4150. }
  4151. return special.postDispatch && special.postDispatch.call(this, event), event.result;
  4152. }
  4153. },
  4154. handlers : function(event, handlers) {
  4155. var j;
  4156. var matches;
  4157. var sel;
  4158. var handleObj;
  4159. var handlerQueue = [];
  4160. var delegateCount = handlers.delegateCount;
  4161. var cur = event.target;
  4162. if (delegateCount && (cur.nodeType && (!event.button || "click" !== event.type))) {
  4163. for (;cur !== this;cur = cur.parentNode || this) {
  4164. if (cur.disabled !== true || "click" !== event.type) {
  4165. matches = [];
  4166. j = 0;
  4167. for (;delegateCount > j;j++) {
  4168. handleObj = handlers[j];
  4169. sel = handleObj.selector + " ";
  4170. if (void 0 === matches[sel]) {
  4171. matches[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) >= 0 : jQuery.find(sel, this, null, [cur]).length;
  4172. }
  4173. if (matches[sel]) {
  4174. matches.push(handleObj);
  4175. }
  4176. }
  4177. if (matches.length) {
  4178. handlerQueue.push({
  4179. elem : cur,
  4180. handlers : matches
  4181. });
  4182. }
  4183. }
  4184. }
  4185. }
  4186. return delegateCount < handlers.length && handlerQueue.push({
  4187. elem : this,
  4188. handlers : handlers.slice(delegateCount)
  4189. }), handlerQueue;
  4190. },
  4191. props : "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
  4192. fixHooks : {},
  4193. keyHooks : {
  4194. props : "char charCode key keyCode".split(" "),
  4195. filter : function(event, original) {
  4196. return null == event.which && (event.which = null != original.charCode ? original.charCode : original.keyCode), event;
  4197. }
  4198. },
  4199. mouseHooks : {
  4200. props : "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
  4201. filter : function(event, original) {
  4202. var d;
  4203. var de;
  4204. var b;
  4205. var button = original.button;
  4206. return null == event.pageX && (null != original.clientX && (d = event.target.ownerDocument || node, de = d.documentElement, b = d.body, event.pageX = original.clientX + (de && de.scrollLeft || (b && b.scrollLeft || 0)) - (de && de.clientLeft || (b && b.clientLeft || 0)), event.pageY = original.clientY + (de && de.scrollTop || (b && b.scrollTop || 0)) - (de && de.clientTop || (b && b.clientTop || 0)))), event.which || (void 0 === button || (event.which = 1 & button ? 1 : 2 & button ? 3 : 4 &
  4207. button ? 2 : 0)), event;
  4208. }
  4209. },
  4210. fix : function(event) {
  4211. if (event[jQuery.expando]) {
  4212. return event;
  4213. }
  4214. var i;
  4215. var prop;
  4216. var copy;
  4217. var type = event.type;
  4218. var originalEvent = event;
  4219. var fixHook = this.fixHooks[type];
  4220. if (!fixHook) {
  4221. this.fixHooks[type] = fixHook = rkeyEvent.test(type) ? this.mouseHooks : rmouseEvent.test(type) ? this.keyHooks : {};
  4222. }
  4223. copy = fixHook.props ? this.props.concat(fixHook.props) : this.props;
  4224. event = new jQuery.Event(originalEvent);
  4225. i = copy.length;
  4226. for (;i--;) {
  4227. prop = copy[i];
  4228. event[prop] = originalEvent[prop];
  4229. }
  4230. return event.target || (event.target = node), 3 === event.target.nodeType && (event.target = event.target.parentNode), fixHook.filter ? fixHook.filter(event, originalEvent) : event;
  4231. },
  4232. special : {
  4233. load : {
  4234. noBubble : true
  4235. },
  4236. focus : {
  4237. trigger : function() {
  4238. return this !== safeActiveElement() && this.focus ? (this.focus(), false) : void 0;
  4239. },
  4240. delegateType : "focusin"
  4241. },
  4242. blur : {
  4243. trigger : function() {
  4244. return this === safeActiveElement() && this.blur ? (this.blur(), false) : void 0;
  4245. },
  4246. delegateType : "focusout"
  4247. },
  4248. click : {
  4249. trigger : function() {
  4250. return "checkbox" === this.type && (this.click && jQuery.nodeName(this, "input")) ? (this.click(), false) : void 0;
  4251. },
  4252. _default : function(event) {
  4253. return jQuery.nodeName(event.target, "a");
  4254. }
  4255. },
  4256. beforeunload : {
  4257. postDispatch : function(event) {
  4258. if (void 0 !== event.result) {
  4259. if (event.originalEvent) {
  4260. event.originalEvent.returnValue = event.result;
  4261. }
  4262. }
  4263. }
  4264. }
  4265. },
  4266. simulate : function(type, elem, event, dataAndEvents) {
  4267. var cycle = jQuery.extend(new jQuery.Event, event, {
  4268. type : type,
  4269. isSimulated : true,
  4270. originalEvent : {}
  4271. });
  4272. if (dataAndEvents) {
  4273. jQuery.event.trigger(cycle, null, elem);
  4274. } else {
  4275. jQuery.event.dispatch.call(elem, cycle);
  4276. }
  4277. if (cycle.isDefaultPrevented()) {
  4278. event.preventDefault();
  4279. }
  4280. }
  4281. };
  4282. jQuery.removeEvent = function(elem, type, handle) {
  4283. if (elem.removeEventListener) {
  4284. elem.removeEventListener(type, handle, false);
  4285. }
  4286. };
  4287. jQuery.Event = function(src, props) {
  4288. return this instanceof jQuery.Event ? (src && src.type ? (this.originalEvent = src, this.type = src.type, this.isDefaultPrevented = src.defaultPrevented || void 0 === src.defaultPrevented && src.returnValue === false ? returnTrue : returnFalse) : this.type = src, props && jQuery.extend(this, props), this.timeStamp = src && src.timeStamp || jQuery.now(), void(this[jQuery.expando] = true)) : new jQuery.Event(src, props);
  4289. };
  4290. jQuery.Event.prototype = {
  4291. isDefaultPrevented : returnFalse,
  4292. isPropagationStopped : returnFalse,
  4293. isImmediatePropagationStopped : returnFalse,
  4294. preventDefault : function() {
  4295. var e = this.originalEvent;
  4296. this.isDefaultPrevented = returnTrue;
  4297. if (e) {
  4298. if (e.preventDefault) {
  4299. e.preventDefault();
  4300. }
  4301. }
  4302. },
  4303. stopPropagation : function() {
  4304. var e = this.originalEvent;
  4305. this.isPropagationStopped = returnTrue;
  4306. if (e) {
  4307. if (e.stopPropagation) {
  4308. e.stopPropagation();
  4309. }
  4310. }
  4311. },
  4312. stopImmediatePropagation : function() {
  4313. var e = this.originalEvent;
  4314. this.isImmediatePropagationStopped = returnTrue;
  4315. if (e) {
  4316. if (e.stopImmediatePropagation) {
  4317. e.stopImmediatePropagation();
  4318. }
  4319. }
  4320. this.stopPropagation();
  4321. }
  4322. };
  4323. jQuery.each({
  4324. mouseenter : "mouseover",
  4325. mouseleave : "mouseout",
  4326. pointerenter : "pointerover",
  4327. pointerleave : "pointerout"
  4328. }, function(orig, fix) {
  4329. jQuery.event.special[orig] = {
  4330. delegateType : fix,
  4331. bindType : fix,
  4332. handle : function(event) {
  4333. var returnValue;
  4334. var target = this;
  4335. var related = event.relatedTarget;
  4336. var handleObj = event.handleObj;
  4337. return(!related || related !== target && !jQuery.contains(target, related)) && (event.type = handleObj.origType, returnValue = handleObj.handler.apply(this, arguments), event.type = fix), returnValue;
  4338. }
  4339. };
  4340. });
  4341. if (!support.focusinBubbles) {
  4342. jQuery.each({
  4343. focus : "focusin",
  4344. blur : "focusout"
  4345. }, function(event, name) {
  4346. var handler = function(event) {
  4347. jQuery.event.simulate(name, event.target, jQuery.event.fix(event), true);
  4348. };
  4349. jQuery.event.special[name] = {
  4350. setup : function() {
  4351. var node = this.ownerDocument || this;
  4352. var descriptor = data_priv.access(node, name);
  4353. if (!descriptor) {
  4354. node.addEventListener(event, handler, true);
  4355. }
  4356. data_priv.access(node, name, (descriptor || 0) + 1);
  4357. },
  4358. teardown : function() {
  4359. var node = this.ownerDocument || this;
  4360. var data = data_priv.access(node, name) - 1;
  4361. if (data) {
  4362. data_priv.access(node, name, data);
  4363. } else {
  4364. node.removeEventListener(event, handler, true);
  4365. data_priv.remove(node, name);
  4366. }
  4367. }
  4368. };
  4369. });
  4370. }
  4371. jQuery.fn.extend({
  4372. on : function(types, selector, data, fn, one) {
  4373. var origFn;
  4374. var type;
  4375. if ("object" == typeof types) {
  4376. if ("string" != typeof selector) {
  4377. data = data || selector;
  4378. selector = void 0;
  4379. }
  4380. for (type in types) {
  4381. this.on(type, selector, data, types[type], one);
  4382. }
  4383. return this;
  4384. }
  4385. if (null == data && null == fn ? (fn = selector, data = selector = void 0) : null == fn && ("string" == typeof selector ? (fn = data, data = void 0) : (fn = data, data = selector, selector = void 0)), fn === false) {
  4386. fn = returnFalse;
  4387. } else {
  4388. if (!fn) {
  4389. return this;
  4390. }
  4391. }
  4392. return 1 === one && (origFn = fn, fn = function(event) {
  4393. return jQuery().off(event), origFn.apply(this, arguments);
  4394. }, fn.guid = origFn.guid || (origFn.guid = jQuery.guid++)), this.each(function() {
  4395. jQuery.event.add(this, types, fn, data, selector);
  4396. });
  4397. },
  4398. one : function(types, callback, data, fn) {
  4399. return this.on(types, callback, data, fn, 1);
  4400. },
  4401. off : function(types, selector, fn) {
  4402. var handleObj;
  4403. var type;
  4404. if (types && (types.preventDefault && types.handleObj)) {
  4405. return handleObj = types.handleObj, jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler), this;
  4406. }
  4407. if ("object" == typeof types) {
  4408. for (type in types) {
  4409. this.off(type, selector, types[type]);
  4410. }
  4411. return this;
  4412. }
  4413. return(selector === false || "function" == typeof selector) && (fn = selector, selector = void 0), fn === false && (fn = returnFalse), this.each(function() {
  4414. jQuery.event.remove(this, types, fn, selector);
  4415. });
  4416. },
  4417. trigger : function(type, args) {
  4418. return this.each(function() {
  4419. jQuery.event.trigger(type, args, this);
  4420. });
  4421. },
  4422. triggerHandler : function(type, args) {
  4423. var parent = this[0];
  4424. return parent ? jQuery.event.trigger(type, args, parent, true) : void 0;
  4425. }
  4426. });
  4427. var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi;
  4428. var rtagName = /<([\w:]+)/;
  4429. var rhtml = /<|&#?\w+;/;
  4430. var rchecked = /<(?:script|style|link)/i;
  4431. var exclude = /checked\s*(?:[^=]|=\s*.checked.)/i;
  4432. var stopParent = /^$|\/(?:java|ecma)script/i;
  4433. var re = /^true\/(.*)/;
  4434. var rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
  4435. var wrapMap = {
  4436. option : [1, "<select multiple='multiple'>", "</select>"],
  4437. thead : [1, "<table>", "</table>"],
  4438. col : [2, "<table><colgroup>", "</colgroup></table>"],
  4439. tr : [2, "<table><tbody>", "</tbody></table>"],
  4440. td : [3, "<table><tbody><tr>", "</tr></tbody></table>"],
  4441. _default : [0, "", ""]
  4442. };
  4443. wrapMap.optgroup = wrapMap.option;
  4444. wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
  4445. wrapMap.th = wrapMap.td;
  4446. jQuery.extend({
  4447. clone : function(elem, dataAndEvents, deepDataAndEvents) {
  4448. var i;
  4449. var l;
  4450. var srcElements;
  4451. var destElements;
  4452. var clone = elem.cloneNode(true);
  4453. var inPage = jQuery.contains(elem.ownerDocument, elem);
  4454. if (!(support.noCloneChecked || (1 !== elem.nodeType && 11 !== elem.nodeType || jQuery.isXMLDoc(elem)))) {
  4455. destElements = getAll(clone);
  4456. srcElements = getAll(elem);
  4457. i = 0;
  4458. l = srcElements.length;
  4459. for (;l > i;i++) {
  4460. fixInput(srcElements[i], destElements[i]);
  4461. }
  4462. }
  4463. if (dataAndEvents) {
  4464. if (deepDataAndEvents) {
  4465. srcElements = srcElements || getAll(elem);
  4466. destElements = destElements || getAll(clone);
  4467. i = 0;
  4468. l = srcElements.length;
  4469. for (;l > i;i++) {
  4470. cloneCopyEvent(srcElements[i], destElements[i]);
  4471. }
  4472. } else {
  4473. cloneCopyEvent(elem, clone);
  4474. }
  4475. }
  4476. return destElements = getAll(clone, "script"), destElements.length > 0 && setGlobalEval(destElements, !inPage && getAll(elem, "script")), clone;
  4477. },
  4478. buildFragment : function(elems, context, scripts, selection) {
  4479. var elem;
  4480. var tmp;
  4481. var tag;
  4482. var wrap;
  4483. var contains;
  4484. var j;
  4485. var fragment = context.createDocumentFragment();
  4486. var nodes = [];
  4487. var i = 0;
  4488. var l = elems.length;
  4489. for (;l > i;i++) {
  4490. if (elem = elems[i], elem || 0 === elem) {
  4491. if ("object" === jQuery.type(elem)) {
  4492. jQuery.merge(nodes, elem.nodeType ? [elem] : elem);
  4493. } else {
  4494. if (rhtml.test(elem)) {
  4495. tmp = tmp || fragment.appendChild(context.createElement("div"));
  4496. tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase();
  4497. wrap = wrapMap[tag] || wrapMap._default;
  4498. tmp.innerHTML = wrap[1] + elem.replace(rxhtmlTag, "<$1></$2>") + wrap[2];
  4499. j = wrap[0];
  4500. for (;j--;) {
  4501. tmp = tmp.lastChild;
  4502. }
  4503. jQuery.merge(nodes, tmp.childNodes);
  4504. tmp = fragment.firstChild;
  4505. tmp.textContent = "";
  4506. } else {
  4507. nodes.push(context.createTextNode(elem));
  4508. }
  4509. }
  4510. }
  4511. }
  4512. fragment.textContent = "";
  4513. i = 0;
  4514. for (;elem = nodes[i++];) {
  4515. if ((!selection || -1 === jQuery.inArray(elem, selection)) && (contains = jQuery.contains(elem.ownerDocument, elem), tmp = getAll(fragment.appendChild(elem), "script"), contains && setGlobalEval(tmp), scripts)) {
  4516. j = 0;
  4517. for (;elem = tmp[j++];) {
  4518. if (stopParent.test(elem.type || "")) {
  4519. scripts.push(elem);
  4520. }
  4521. }
  4522. }
  4523. }
  4524. return fragment;
  4525. },
  4526. cleanData : function(elems) {
  4527. var data;
  4528. var elem;
  4529. var type;
  4530. var key;
  4531. var special = jQuery.event.special;
  4532. var i = 0;
  4533. for (;void 0 !== (elem = elems[i]);i++) {
  4534. if (jQuery.acceptData(elem) && (key = elem[data_priv.expando], key && (data = data_priv.cache[key]))) {
  4535. if (data.events) {
  4536. for (type in data.events) {
  4537. if (special[type]) {
  4538. jQuery.event.remove(elem, type);
  4539. } else {
  4540. jQuery.removeEvent(elem, type, data.handle);
  4541. }
  4542. }
  4543. }
  4544. if (data_priv.cache[key]) {
  4545. delete data_priv.cache[key];
  4546. }
  4547. }
  4548. delete data_user.cache[elem[data_user.expando]];
  4549. }
  4550. }
  4551. });
  4552. jQuery.fn.extend({
  4553. text : function(value) {
  4554. return access(this, function(textString) {
  4555. return void 0 === textString ? jQuery.text(this) : this.empty().each(function() {
  4556. if (1 === this.nodeType || (11 === this.nodeType || 9 === this.nodeType)) {
  4557. this.textContent = textString;
  4558. }
  4559. });
  4560. }, null, value, arguments.length);
  4561. },
  4562. append : function() {
  4563. return this.domManip(arguments, function(elem) {
  4564. if (1 === this.nodeType || (11 === this.nodeType || 9 === this.nodeType)) {
  4565. var target = manipulationTarget(this, elem);
  4566. target.appendChild(elem);
  4567. }
  4568. });
  4569. },
  4570. prepend : function() {
  4571. return this.domManip(arguments, function(elem) {
  4572. if (1 === this.nodeType || (11 === this.nodeType || 9 === this.nodeType)) {
  4573. var target = manipulationTarget(this, elem);
  4574. target.insertBefore(elem, target.firstChild);
  4575. }
  4576. });
  4577. },
  4578. before : function() {
  4579. return this.domManip(arguments, function(elem) {
  4580. if (this.parentNode) {
  4581. this.parentNode.insertBefore(elem, this);
  4582. }
  4583. });
  4584. },
  4585. after : function() {
  4586. return this.domManip(arguments, function(elem) {
  4587. if (this.parentNode) {
  4588. this.parentNode.insertBefore(elem, this.nextSibling);
  4589. }
  4590. });
  4591. },
  4592. remove : function(selector, keepData) {
  4593. var elem;
  4594. var elems = selector ? jQuery.filter(selector, this) : this;
  4595. var i = 0;
  4596. for (;null != (elem = elems[i]);i++) {
  4597. if (!keepData) {
  4598. if (!(1 !== elem.nodeType)) {
  4599. jQuery.cleanData(getAll(elem));
  4600. }
  4601. }
  4602. if (elem.parentNode) {
  4603. if (keepData) {
  4604. if (jQuery.contains(elem.ownerDocument, elem)) {
  4605. setGlobalEval(getAll(elem, "script"));
  4606. }
  4607. }
  4608. elem.parentNode.removeChild(elem);
  4609. }
  4610. }
  4611. return this;
  4612. },
  4613. empty : function() {
  4614. var elem;
  4615. var unlock = 0;
  4616. for (;null != (elem = this[unlock]);unlock++) {
  4617. if (1 === elem.nodeType) {
  4618. jQuery.cleanData(getAll(elem, false));
  4619. elem.textContent = "";
  4620. }
  4621. }
  4622. return this;
  4623. },
  4624. clone : function(dataAndEvents, deepDataAndEvents) {
  4625. return dataAndEvents = null == dataAndEvents ? false : dataAndEvents, deepDataAndEvents = null == deepDataAndEvents ? dataAndEvents : deepDataAndEvents, this.map(function() {
  4626. return jQuery.clone(this, dataAndEvents, deepDataAndEvents);
  4627. });
  4628. },
  4629. html : function(value) {
  4630. return access(this, function(value) {
  4631. var elem = this[0] || {};
  4632. var i = 0;
  4633. var l = this.length;
  4634. if (void 0 === value && 1 === elem.nodeType) {
  4635. return elem.innerHTML;
  4636. }
  4637. if ("string" == typeof value && (!rchecked.test(value) && !wrapMap[(rtagName.exec(value) || ["", ""])[1].toLowerCase()])) {
  4638. value = value.replace(rxhtmlTag, "<$1></$2>");
  4639. try {
  4640. for (;l > i;i++) {
  4641. elem = this[i] || {};
  4642. if (1 === elem.nodeType) {
  4643. jQuery.cleanData(getAll(elem, false));
  4644. elem.innerHTML = value;
  4645. }
  4646. }
  4647. elem = 0;
  4648. } catch (o) {
  4649. }
  4650. }
  4651. if (elem) {
  4652. this.empty().append(value);
  4653. }
  4654. }, null, value, arguments.length);
  4655. },
  4656. replaceWith : function() {
  4657. var arg = arguments[0];
  4658. return this.domManip(arguments, function(s) {
  4659. arg = this.parentNode;
  4660. jQuery.cleanData(getAll(this));
  4661. if (arg) {
  4662. arg.replaceChild(s, this);
  4663. }
  4664. }), arg && (arg.length || arg.nodeType) ? this : this.remove();
  4665. },
  4666. detach : function(selector) {
  4667. return this.remove(selector, true);
  4668. },
  4669. domManip : function(args, callback) {
  4670. args = core_concat.apply([], args);
  4671. var fragment;
  4672. var first;
  4673. var scripts;
  4674. var _len;
  4675. var node;
  4676. var doc;
  4677. var i = 0;
  4678. var l = this.length;
  4679. var set = this;
  4680. var iNoClone = l - 1;
  4681. var html = args[0];
  4682. var isFunction = jQuery.isFunction(html);
  4683. if (isFunction || l > 1 && ("string" == typeof html && (!support.checkClone && exclude.test(html)))) {
  4684. return this.each(function(index) {
  4685. var self = set.eq(index);
  4686. if (isFunction) {
  4687. args[0] = html.call(this, index, self.html());
  4688. }
  4689. self.domManip(args, callback);
  4690. });
  4691. }
  4692. if (l && (fragment = jQuery.buildFragment(args, this[0].ownerDocument, false, this), first = fragment.firstChild, 1 === fragment.childNodes.length && (fragment = first), first)) {
  4693. scripts = jQuery.map(getAll(fragment, "script"), restoreScript);
  4694. _len = scripts.length;
  4695. for (;l > i;i++) {
  4696. node = fragment;
  4697. if (i !== iNoClone) {
  4698. node = jQuery.clone(node, true, true);
  4699. if (_len) {
  4700. jQuery.merge(scripts, getAll(node, "script"));
  4701. }
  4702. }
  4703. callback.call(this[i], node, i);
  4704. }
  4705. if (_len) {
  4706. doc = scripts[scripts.length - 1].ownerDocument;
  4707. jQuery.map(scripts, fn);
  4708. i = 0;
  4709. for (;_len > i;i++) {
  4710. node = scripts[i];
  4711. if (stopParent.test(node.type || "")) {
  4712. if (!data_priv.access(node, "globalEval")) {
  4713. if (jQuery.contains(doc, node)) {
  4714. if (node.src) {
  4715. if (jQuery._evalUrl) {
  4716. jQuery._evalUrl(node.src);
  4717. }
  4718. } else {
  4719. jQuery.globalEval(node.textContent.replace(rcleanScript, ""));
  4720. }
  4721. }
  4722. }
  4723. }
  4724. }
  4725. }
  4726. }
  4727. return this;
  4728. }
  4729. });
  4730. jQuery.each({
  4731. appendTo : "append",
  4732. prependTo : "prepend",
  4733. insertBefore : "before",
  4734. insertAfter : "after",
  4735. replaceAll : "replaceWith"
  4736. }, function(original, method) {
  4737. jQuery.fn[original] = function(scripts) {
  4738. var resp;
  4739. var ret = [];
  4740. var insert = jQuery(scripts);
  4741. var segments = insert.length - 1;
  4742. var i = 0;
  4743. for (;segments >= i;i++) {
  4744. resp = i === segments ? this : this.clone(true);
  4745. jQuery(insert[i])[method](resp);
  4746. core_push.apply(ret, resp.get());
  4747. }
  4748. return this.pushStack(ret);
  4749. };
  4750. });
  4751. var iframe;
  4752. var elemdisplay = {};
  4753. var rbracket = /^margin/;
  4754. var regexp = new RegExp("^(" + core_pnum + ")(?!px)[a-z%]+$", "i");
  4755. var getStyles = function(elem) {
  4756. return elem.ownerDocument.defaultView.opener ? elem.ownerDocument.defaultView.getComputedStyle(elem, null) : win.getComputedStyle(elem, null);
  4757. };
  4758. !function() {
  4759. function computePixelPositionAndBoxSizingReliable() {
  4760. div.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute";
  4761. div.innerHTML = "";
  4762. root.appendChild(el);
  4763. var divStyle = win.getComputedStyle(div, null);
  4764. t = "1%" !== divStyle.top;
  4765. r = "4px" === divStyle.width;
  4766. root.removeChild(el);
  4767. }
  4768. var t;
  4769. var r;
  4770. var root = node.documentElement;
  4771. var el = node.createElement("div");
  4772. var div = node.createElement("div");
  4773. if (div.style) {
  4774. div.style.backgroundClip = "content-box";
  4775. div.cloneNode(true).style.backgroundClip = "";
  4776. support.clearCloneStyle = "content-box" === div.style.backgroundClip;
  4777. el.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute";
  4778. el.appendChild(div);
  4779. if (win.getComputedStyle) {
  4780. jQuery.extend(support, {
  4781. pixelPosition : function() {
  4782. return computePixelPositionAndBoxSizingReliable(), t;
  4783. },
  4784. boxSizingReliable : function() {
  4785. return null == r && computePixelPositionAndBoxSizingReliable(), r;
  4786. },
  4787. reliableMarginRight : function() {
  4788. var e;
  4789. var marginDiv = div.appendChild(node.createElement("div"));
  4790. return marginDiv.style.cssText = div.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0", marginDiv.style.marginRight = marginDiv.style.width = "0", div.style.width = "1px", root.appendChild(el), e = !parseFloat(win.getComputedStyle(marginDiv, null).marginRight), root.removeChild(el), div.removeChild(marginDiv), e;
  4791. }
  4792. });
  4793. }
  4794. }
  4795. }();
  4796. jQuery.swap = function(elem, options, callback, args) {
  4797. var ret;
  4798. var name;
  4799. var old = {};
  4800. for (name in options) {
  4801. old[name] = elem.style[name];
  4802. elem.style[name] = options[name];
  4803. }
  4804. ret = callback.apply(elem, args || []);
  4805. for (name in options) {
  4806. elem.style[name] = old[name];
  4807. }
  4808. return ret;
  4809. };
  4810. var rdisplayswap = /^(none|table(?!-c[ea]).+)/;
  4811. var rrelNum = new RegExp("^(" + core_pnum + ")(.*)$", "i");
  4812. var re2 = new RegExp("^([+-])=(" + core_pnum + ")", "i");
  4813. var props = {
  4814. position : "absolute",
  4815. visibility : "hidden",
  4816. display : "block"
  4817. };
  4818. var cssNormalTransform = {
  4819. letterSpacing : "0",
  4820. fontWeight : "400"
  4821. };
  4822. var cssPrefixes = ["Webkit", "O", "Moz", "ms"];
  4823. jQuery.extend({
  4824. cssHooks : {
  4825. opacity : {
  4826. get : function(elem, value) {
  4827. if (value) {
  4828. var buffer = css(elem, "opacity");
  4829. return "" === buffer ? "1" : buffer;
  4830. }
  4831. }
  4832. }
  4833. },
  4834. cssNumber : {
  4835. columnCount : true,
  4836. fillOpacity : true,
  4837. flexGrow : true,
  4838. flexShrink : true,
  4839. fontWeight : true,
  4840. lineHeight : true,
  4841. opacity : true,
  4842. order : true,
  4843. orphans : true,
  4844. widows : true,
  4845. zIndex : true,
  4846. zoom : true
  4847. },
  4848. cssProps : {
  4849. "float" : "cssFloat"
  4850. },
  4851. style : function(elem, name, val, extra) {
  4852. if (elem && (3 !== elem.nodeType && (8 !== elem.nodeType && elem.style))) {
  4853. var ret;
  4854. var type;
  4855. var hooks;
  4856. var origName = jQuery.camelCase(name);
  4857. var style = elem.style;
  4858. return name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(style, origName)), hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName], void 0 === val ? hooks && ("get" in hooks && void 0 !== (ret = hooks.get(elem, false, extra))) ? ret : style[name] : (type = typeof val, "string" === type && ((ret = re2.exec(val)) && (val = (ret[1] + 1) * ret[2] + parseFloat(jQuery.css(elem, name)), type = "number")), void(null != val && (val === val && ("number" !== type ||
  4859. (jQuery.cssNumber[origName] || (val += "px")), support.clearCloneStyle || ("" !== val || (0 !== name.indexOf("background") || (style[name] = "inherit"))), hooks && ("set" in hooks && void 0 === (val = hooks.set(elem, val, extra))) || (style[name] = val)))));
  4860. }
  4861. },
  4862. css : function(src, name, recurring, key) {
  4863. var v;
  4864. var val;
  4865. var data_user;
  4866. var origName = jQuery.camelCase(name);
  4867. return name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(src.style, origName)), data_user = jQuery.cssHooks[name] || jQuery.cssHooks[origName], data_user && ("get" in data_user && (v = data_user.get(src, true, recurring))), void 0 === v && (v = css(src, name, key)), "normal" === v && (name in cssNormalTransform && (v = cssNormalTransform[name])), "" === recurring || recurring ? (val = parseFloat(v), recurring === true || jQuery.isNumeric(val) ? val || 0 : v) :
  4868. v;
  4869. }
  4870. });
  4871. jQuery.each(["height", "width"], function(dataAndEvents, name) {
  4872. jQuery.cssHooks[name] = {
  4873. get : function(elem, value, extra) {
  4874. return value ? rdisplayswap.test(jQuery.css(elem, "display")) && 0 === elem.offsetWidth ? jQuery.swap(elem, props, function() {
  4875. return getWidthOrHeight(elem, name, extra);
  4876. }) : getWidthOrHeight(elem, name, extra) : void 0;
  4877. },
  4878. set : function(elem, value, extra) {
  4879. var styles = extra && getStyles(elem);
  4880. return setPositiveNumber(elem, value, extra ? augmentWidthOrHeight(elem, name, extra, "border-box" === jQuery.css(elem, "boxSizing", false, styles), styles) : 0);
  4881. }
  4882. };
  4883. });
  4884. jQuery.cssHooks.marginRight = addGetHookIf(support.reliableMarginRight, function(cur, value) {
  4885. return value ? jQuery.swap(cur, {
  4886. display : "inline-block"
  4887. }, css, [cur, "marginRight"]) : void 0;
  4888. });
  4889. jQuery.each({
  4890. margin : "",
  4891. padding : "",
  4892. border : "Width"
  4893. }, function(prefix, suffix) {
  4894. jQuery.cssHooks[prefix + suffix] = {
  4895. expand : function(line) {
  4896. var i = 0;
  4897. var expanded = {};
  4898. var tokens = "string" == typeof line ? line.split(" ") : [line];
  4899. for (;4 > i;i++) {
  4900. expanded[prefix + cssExpand[i] + suffix] = tokens[i] || (tokens[i - 2] || tokens[0]);
  4901. }
  4902. return expanded;
  4903. }
  4904. };
  4905. if (!rbracket.test(prefix)) {
  4906. jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;
  4907. }
  4908. });
  4909. jQuery.fn.extend({
  4910. css : function(name, value) {
  4911. return access(this, function(elem, prop, value) {
  4912. var styles;
  4913. var _len;
  4914. var map = {};
  4915. var name = 0;
  4916. if (jQuery.isArray(prop)) {
  4917. styles = getStyles(elem);
  4918. _len = prop.length;
  4919. for (;_len > name;name++) {
  4920. map[prop[name]] = jQuery.css(elem, prop[name], false, styles);
  4921. }
  4922. return map;
  4923. }
  4924. return void 0 !== value ? jQuery.style(elem, prop, value) : jQuery.css(elem, prop);
  4925. }, name, value, arguments.length > 1);
  4926. },
  4927. show : function() {
  4928. return showHide(this, true);
  4929. },
  4930. hide : function() {
  4931. return showHide(this);
  4932. },
  4933. toggle : function(state) {
  4934. return "boolean" == typeof state ? state ? this.show() : this.hide() : this.each(function() {
  4935. if (isHidden(this)) {
  4936. jQuery(this).show();
  4937. } else {
  4938. jQuery(this).hide();
  4939. }
  4940. });
  4941. }
  4942. });
  4943. jQuery.Tween = Tween;
  4944. Tween.prototype = {
  4945. constructor : Tween,
  4946. init : function(type, options, prop, to, easing, unit) {
  4947. this.elem = type;
  4948. this.prop = prop;
  4949. this.easing = easing || "swing";
  4950. this.options = options;
  4951. this.start = this.now = this.cur();
  4952. this.end = to;
  4953. this.unit = unit || (jQuery.cssNumber[prop] ? "" : "px");
  4954. },
  4955. cur : function() {
  4956. var hooks = Tween.propHooks[this.prop];
  4957. return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);
  4958. },
  4959. run : function(percent) {
  4960. var eased;
  4961. var hooks = Tween.propHooks[this.prop];
  4962. return this.pos = eased = this.options.duration ? jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration) : percent, this.now = (this.end - this.start) * eased + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), hooks && hooks.set ? hooks.set(this) : Tween.propHooks._default.set(this), this;
  4963. }
  4964. };
  4965. Tween.prototype.init.prototype = Tween.prototype;
  4966. Tween.propHooks = {
  4967. _default : {
  4968. get : function(elem) {
  4969. var node;
  4970. return null == elem.elem[elem.prop] || elem.elem.style && null != elem.elem.style[elem.prop] ? (node = jQuery.css(elem.elem, elem.prop, ""), node && "auto" !== node ? node : 0) : elem.elem[elem.prop];
  4971. },
  4972. set : function(tween) {
  4973. if (jQuery.fx.step[tween.prop]) {
  4974. jQuery.fx.step[tween.prop](tween);
  4975. } else {
  4976. if (tween.elem.style && (null != tween.elem.style[jQuery.cssProps[tween.prop]] || jQuery.cssHooks[tween.prop])) {
  4977. jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);
  4978. } else {
  4979. tween.elem[tween.prop] = tween.now;
  4980. }
  4981. }
  4982. }
  4983. }
  4984. };
  4985. Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
  4986. set : function(elem) {
  4987. if (elem.elem.nodeType) {
  4988. if (elem.elem.parentNode) {
  4989. elem.elem[elem.prop] = elem.now;
  4990. }
  4991. }
  4992. }
  4993. };
  4994. jQuery.easing = {
  4995. linear : function(t) {
  4996. return t;
  4997. },
  4998. swing : function(p) {
  4999. return 0.5 - Math.cos(p * Math.PI) / 2;
  5000. }
  5001. };
  5002. jQuery.fx = Tween.prototype.init;
  5003. jQuery.fx.step = {};
  5004. var fxNow;
  5005. var scrollIntervalId;
  5006. var rplusequals = /^(?:toggle|show|hide)$/;
  5007. var rfxnum = new RegExp("^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i");
  5008. var rrun = /queueHooks$/;
  5009. var animationPrefilters = [defaultPrefilter];
  5010. var cache = {
  5011. "*" : [function(prop, value) {
  5012. var tween = this.createTween(prop, value);
  5013. var l0 = tween.cur();
  5014. var parts = rfxnum.exec(value);
  5015. var unit = parts && parts[3] || (jQuery.cssNumber[prop] ? "" : "px");
  5016. var start = (jQuery.cssNumber[prop] || "px" !== unit && +l0) && rfxnum.exec(jQuery.css(tween.elem, prop));
  5017. var scale = 1;
  5018. var c = 20;
  5019. if (start && start[3] !== unit) {
  5020. unit = unit || start[3];
  5021. parts = parts || [];
  5022. start = +l0 || 1;
  5023. do {
  5024. scale = scale || ".5";
  5025. start /= scale;
  5026. jQuery.style(tween.elem, prop, start + unit);
  5027. } while (scale !== (scale = tween.cur() / l0) && (1 !== scale && --c));
  5028. }
  5029. return parts && (start = tween.start = +start || (+l0 || 0), tween.unit = unit, tween.end = parts[1] ? start + (parts[1] + 1) * parts[2] : +parts[2]), tween;
  5030. }]
  5031. };
  5032. jQuery.Animation = jQuery.extend(Animation, {
  5033. tweener : function(props, callback) {
  5034. if (jQuery.isFunction(props)) {
  5035. callback = props;
  5036. props = ["*"];
  5037. } else {
  5038. props = props.split(" ");
  5039. }
  5040. var prop;
  5041. var _i = 0;
  5042. var l2 = props.length;
  5043. for (;l2 > _i;_i++) {
  5044. prop = props[_i];
  5045. cache[prop] = cache[prop] || [];
  5046. cache[prop].unshift(callback);
  5047. }
  5048. },
  5049. prefilter : function(callback, prepend) {
  5050. if (prepend) {
  5051. animationPrefilters.unshift(callback);
  5052. } else {
  5053. animationPrefilters.push(callback);
  5054. }
  5055. }
  5056. });
  5057. jQuery.speed = function(speed, easing, fn) {
  5058. var opt = speed && "object" == typeof speed ? jQuery.extend({}, speed) : {
  5059. complete : fn || (!fn && easing || jQuery.isFunction(speed) && speed),
  5060. duration : speed,
  5061. easing : fn && easing || easing && (!jQuery.isFunction(easing) && easing)
  5062. };
  5063. return opt.duration = jQuery.fx.off ? 0 : "number" == typeof opt.duration ? opt.duration : opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default, (null == opt.queue || opt.queue === true) && (opt.queue = "fx"), opt.old = opt.complete, opt.complete = function() {
  5064. if (jQuery.isFunction(opt.old)) {
  5065. opt.old.call(this);
  5066. }
  5067. if (opt.queue) {
  5068. jQuery.dequeue(this, opt.queue);
  5069. }
  5070. }, opt;
  5071. };
  5072. jQuery.fn.extend({
  5073. fadeTo : function(speed, to, callback, _callback) {
  5074. return this.filter(isHidden).css("opacity", 0).show().end().animate({
  5075. opacity : to
  5076. }, speed, callback, _callback);
  5077. },
  5078. animate : function(prop, speed, easing, callback) {
  5079. var empty = jQuery.isEmptyObject(prop);
  5080. var optall = jQuery.speed(speed, easing, callback);
  5081. var doAnimation = function() {
  5082. var anim = Animation(this, jQuery.extend({}, prop), optall);
  5083. if (empty || data_priv.get(this, "finish")) {
  5084. anim.stop(true);
  5085. }
  5086. };
  5087. return doAnimation.finish = doAnimation, empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);
  5088. },
  5089. stop : function(type, clearQueue, gotoEnd) {
  5090. var stop = function(e) {
  5091. var stop = e.stop;
  5092. delete e.stop;
  5093. stop(gotoEnd);
  5094. };
  5095. return "string" != typeof type && (gotoEnd = clearQueue, clearQueue = type, type = void 0), clearQueue && (type !== false && this.queue(type || "fx", [])), this.each(function() {
  5096. var dequeue = true;
  5097. var index = null != type && type + "queueHooks";
  5098. var timers = jQuery.timers;
  5099. var iteratee = data_priv.get(this);
  5100. if (index) {
  5101. if (iteratee[index]) {
  5102. if (iteratee[index].stop) {
  5103. stop(iteratee[index]);
  5104. }
  5105. }
  5106. } else {
  5107. for (index in iteratee) {
  5108. if (iteratee[index]) {
  5109. if (iteratee[index].stop) {
  5110. if (rrun.test(index)) {
  5111. stop(iteratee[index]);
  5112. }
  5113. }
  5114. }
  5115. }
  5116. }
  5117. index = timers.length;
  5118. for (;index--;) {
  5119. if (!(timers[index].elem !== this)) {
  5120. if (!(null != type && timers[index].queue !== type)) {
  5121. timers[index].anim.stop(gotoEnd);
  5122. dequeue = false;
  5123. timers.splice(index, 1);
  5124. }
  5125. }
  5126. }
  5127. if (dequeue || !gotoEnd) {
  5128. jQuery.dequeue(this, type);
  5129. }
  5130. });
  5131. },
  5132. finish : function(type) {
  5133. return type !== false && (type = type || "fx"), this.each(function() {
  5134. var index;
  5135. var data = data_priv.get(this);
  5136. var array = data[type + "queue"];
  5137. var event = data[type + "queueHooks"];
  5138. var timers = jQuery.timers;
  5139. var length = array ? array.length : 0;
  5140. data.finish = true;
  5141. jQuery.queue(this, type, []);
  5142. if (event) {
  5143. if (event.stop) {
  5144. event.stop.call(this, true);
  5145. }
  5146. }
  5147. index = timers.length;
  5148. for (;index--;) {
  5149. if (timers[index].elem === this) {
  5150. if (timers[index].queue === type) {
  5151. timers[index].anim.stop(true);
  5152. timers.splice(index, 1);
  5153. }
  5154. }
  5155. }
  5156. index = 0;
  5157. for (;length > index;index++) {
  5158. if (array[index]) {
  5159. if (array[index].finish) {
  5160. array[index].finish.call(this);
  5161. }
  5162. }
  5163. }
  5164. delete data.finish;
  5165. });
  5166. }
  5167. });
  5168. jQuery.each(["toggle", "show", "hide"], function(dataAndEvents, name) {
  5169. var matcherFunction = jQuery.fn[name];
  5170. jQuery.fn[name] = function(speed, callback, next_callback) {
  5171. return null == speed || "boolean" == typeof speed ? matcherFunction.apply(this, arguments) : this.animate(genFx(name, true), speed, callback, next_callback);
  5172. };
  5173. });
  5174. jQuery.each({
  5175. slideDown : genFx("show"),
  5176. slideUp : genFx("hide"),
  5177. slideToggle : genFx("toggle"),
  5178. fadeIn : {
  5179. opacity : "show"
  5180. },
  5181. fadeOut : {
  5182. opacity : "hide"
  5183. },
  5184. fadeToggle : {
  5185. opacity : "toggle"
  5186. }
  5187. }, function(original, props) {
  5188. jQuery.fn[original] = function(speed, callback, next_callback) {
  5189. return this.animate(props, speed, callback, next_callback);
  5190. };
  5191. });
  5192. jQuery.timers = [];
  5193. jQuery.fx.tick = function() {
  5194. var last;
  5195. var i = 0;
  5196. var timers = jQuery.timers;
  5197. fxNow = jQuery.now();
  5198. for (;i < timers.length;i++) {
  5199. last = timers[i];
  5200. if (!last()) {
  5201. if (!(timers[i] !== last)) {
  5202. timers.splice(i--, 1);
  5203. }
  5204. }
  5205. }
  5206. if (!timers.length) {
  5207. jQuery.fx.stop();
  5208. }
  5209. fxNow = void 0;
  5210. };
  5211. jQuery.fx.timer = function(timer) {
  5212. jQuery.timers.push(timer);
  5213. if (timer()) {
  5214. jQuery.fx.start();
  5215. } else {
  5216. jQuery.timers.pop();
  5217. }
  5218. };
  5219. jQuery.fx.interval = 13;
  5220. jQuery.fx.start = function() {
  5221. if (!scrollIntervalId) {
  5222. scrollIntervalId = setInterval(jQuery.fx.tick, jQuery.fx.interval);
  5223. }
  5224. };
  5225. jQuery.fx.stop = function() {
  5226. clearInterval(scrollIntervalId);
  5227. scrollIntervalId = null;
  5228. };
  5229. jQuery.fx.speeds = {
  5230. slow : 600,
  5231. fast : 200,
  5232. _default : 400
  5233. };
  5234. jQuery.fn.delay = function(time, type) {
  5235. return time = jQuery.fx ? jQuery.fx.speeds[time] || time : time, type = type || "fx", this.queue(type, function(next, event) {
  5236. var timeout = setTimeout(next, time);
  5237. event.stop = function() {
  5238. clearTimeout(timeout);
  5239. };
  5240. });
  5241. };
  5242. (function() {
  5243. var input = node.createElement("input");
  5244. var select = node.createElement("select");
  5245. var opt = select.appendChild(node.createElement("option"));
  5246. input.type = "checkbox";
  5247. support.checkOn = "" !== input.value;
  5248. support.optSelected = opt.selected;
  5249. select.disabled = true;
  5250. support.optDisabled = !opt.disabled;
  5251. input = node.createElement("input");
  5252. input.value = "t";
  5253. input.type = "radio";
  5254. support.radioValue = "t" === input.value;
  5255. })();
  5256. var nodeHook;
  5257. var boolHook;
  5258. var values = jQuery.expr.attrHandle;
  5259. jQuery.fn.extend({
  5260. attr : function(name, value) {
  5261. return access(this, jQuery.attr, name, value, arguments.length > 1);
  5262. },
  5263. removeAttr : function(name) {
  5264. return this.each(function() {
  5265. jQuery.removeAttr(this, name);
  5266. });
  5267. }
  5268. });
  5269. jQuery.extend({
  5270. attr : function(elem, name, value) {
  5271. var hooks;
  5272. var ret;
  5273. var nodeType = elem.nodeType;
  5274. return elem && (3 !== nodeType && (8 !== nodeType && 2 !== nodeType)) ? typeof elem.getAttribute === text ? jQuery.prop(elem, name, value) : (1 === nodeType && jQuery.isXMLDoc(elem) || (name = name.toLowerCase(), hooks = jQuery.attrHooks[name] || (jQuery.expr.match.bool.test(name) ? boolHook : nodeHook)), void 0 === value ? hooks && ("get" in hooks && null !== (ret = hooks.get(elem, name))) ? ret : (ret = jQuery.find.attr(elem, name), null == ret ? void 0 : ret) : null !== value ? hooks &&
  5275. ("set" in hooks && void 0 !== (ret = hooks.set(elem, value, name))) ? ret : (elem.setAttribute(name, value + ""), value) : void jQuery.removeAttr(elem, name)) : void 0;
  5276. },
  5277. removeAttr : function(elem, value) {
  5278. var name;
  5279. var propName;
  5280. var i = 0;
  5281. var attrNames = value && value.match(core_rnotwhite);
  5282. if (attrNames && 1 === elem.nodeType) {
  5283. for (;name = attrNames[i++];) {
  5284. propName = jQuery.propFix[name] || name;
  5285. if (jQuery.expr.match.bool.test(name)) {
  5286. elem[propName] = false;
  5287. }
  5288. elem.removeAttribute(name);
  5289. }
  5290. }
  5291. },
  5292. attrHooks : {
  5293. type : {
  5294. set : function(elem, value) {
  5295. if (!support.radioValue && ("radio" === value && jQuery.nodeName(elem, "input"))) {
  5296. var val = elem.value;
  5297. return elem.setAttribute("type", value), val && (elem.value = val), value;
  5298. }
  5299. }
  5300. }
  5301. }
  5302. });
  5303. boolHook = {
  5304. set : function(elem, value, name) {
  5305. return value === false ? jQuery.removeAttr(elem, name) : elem.setAttribute(name, name), name;
  5306. }
  5307. };
  5308. jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function(dataAndEvents, name) {
  5309. var callback = values[name] || jQuery.find.attr;
  5310. values[name] = function(body, key, arg) {
  5311. var result;
  5312. var value;
  5313. return arg || (value = values[key], values[key] = result, result = null != callback(body, key, arg) ? key.toLowerCase() : null, values[key] = value), result;
  5314. };
  5315. });
  5316. var rinputs = /^(?:input|select|textarea|button)$/i;
  5317. jQuery.fn.extend({
  5318. prop : function(type, value) {
  5319. return access(this, jQuery.prop, type, value, arguments.length > 1);
  5320. },
  5321. removeProp : function(name) {
  5322. return this.each(function() {
  5323. delete this[jQuery.propFix[name] || name];
  5324. });
  5325. }
  5326. });
  5327. jQuery.extend({
  5328. propFix : {
  5329. "for" : "htmlFor",
  5330. "class" : "className"
  5331. },
  5332. prop : function(elem, name, value) {
  5333. var ret;
  5334. var hooks;
  5335. var n;
  5336. var nodeType = elem.nodeType;
  5337. return elem && (3 !== nodeType && (8 !== nodeType && 2 !== nodeType)) ? (n = 1 !== nodeType || !jQuery.isXMLDoc(elem), n && (name = jQuery.propFix[name] || name, hooks = jQuery.propHooks[name]), void 0 !== value ? hooks && ("set" in hooks && void 0 !== (ret = hooks.set(elem, value, name))) ? ret : elem[name] = value : hooks && ("get" in hooks && null !== (ret = hooks.get(elem, name))) ? ret : elem[name]) : void 0;
  5338. },
  5339. propHooks : {
  5340. tabIndex : {
  5341. get : function(elem) {
  5342. return elem.hasAttribute("tabindex") || (rinputs.test(elem.nodeName) || elem.href) ? elem.tabIndex : -1;
  5343. }
  5344. }
  5345. }
  5346. });
  5347. if (!support.optSelected) {
  5348. jQuery.propHooks.selected = {
  5349. get : function(elem) {
  5350. var parent = elem.parentNode;
  5351. return parent && (parent.parentNode && parent.parentNode.selectedIndex), null;
  5352. }
  5353. };
  5354. }
  5355. jQuery.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
  5356. jQuery.propFix[this.toLowerCase()] = this;
  5357. });
  5358. var rclass = /[\t\r\n\f]/g;
  5359. jQuery.fn.extend({
  5360. addClass : function(value) {
  5361. var classes;
  5362. var elem;
  5363. var cur;
  5364. var clazz;
  5365. var j;
  5366. var finalValue;
  5367. var proceed = "string" == typeof value && value;
  5368. var i = 0;
  5369. var l = this.length;
  5370. if (jQuery.isFunction(value)) {
  5371. return this.each(function(j) {
  5372. jQuery(this).addClass(value.call(this, j, this.className));
  5373. });
  5374. }
  5375. if (proceed) {
  5376. classes = (value || "").match(core_rnotwhite) || [];
  5377. for (;l > i;i++) {
  5378. if (elem = this[i], cur = 1 === elem.nodeType && (elem.className ? (" " + elem.className + " ").replace(rclass, " ") : " ")) {
  5379. j = 0;
  5380. for (;clazz = classes[j++];) {
  5381. if (cur.indexOf(" " + clazz + " ") < 0) {
  5382. cur += clazz + " ";
  5383. }
  5384. }
  5385. finalValue = jQuery.trim(cur);
  5386. if (elem.className !== finalValue) {
  5387. elem.className = finalValue;
  5388. }
  5389. }
  5390. }
  5391. }
  5392. return this;
  5393. },
  5394. removeClass : function(value) {
  5395. var res;
  5396. var elem;
  5397. var cur;
  5398. var apn;
  5399. var resLength;
  5400. var finalValue;
  5401. var u = 0 === arguments.length || "string" == typeof value && value;
  5402. var i = 0;
  5403. var l = this.length;
  5404. if (jQuery.isFunction(value)) {
  5405. return this.each(function(j) {
  5406. jQuery(this).removeClass(value.call(this, j, this.className));
  5407. });
  5408. }
  5409. if (u) {
  5410. res = (value || "").match(core_rnotwhite) || [];
  5411. for (;l > i;i++) {
  5412. if (elem = this[i], cur = 1 === elem.nodeType && (elem.className ? (" " + elem.className + " ").replace(rclass, " ") : "")) {
  5413. resLength = 0;
  5414. for (;apn = res[resLength++];) {
  5415. for (;cur.indexOf(" " + apn + " ") >= 0;) {
  5416. cur = cur.replace(" " + apn + " ", " ");
  5417. }
  5418. }
  5419. finalValue = value ? jQuery.trim(cur) : "";
  5420. if (elem.className !== finalValue) {
  5421. elem.className = finalValue;
  5422. }
  5423. }
  5424. }
  5425. }
  5426. return this;
  5427. },
  5428. toggleClass : function(value, stateVal) {
  5429. var type = typeof value;
  5430. return "boolean" == typeof stateVal && "string" === type ? stateVal ? this.addClass(value) : this.removeClass(value) : this.each(jQuery.isFunction(value) ? function(i) {
  5431. jQuery(this).toggleClass(value.call(this, i, this.className, stateVal), stateVal);
  5432. } : function() {
  5433. if ("string" === type) {
  5434. var className;
  5435. var i = 0;
  5436. var self = jQuery(this);
  5437. var classNames = value.match(core_rnotwhite) || [];
  5438. for (;className = classNames[i++];) {
  5439. if (self.hasClass(className)) {
  5440. self.removeClass(className);
  5441. } else {
  5442. self.addClass(className);
  5443. }
  5444. }
  5445. } else {
  5446. if (type === text || "boolean" === type) {
  5447. if (this.className) {
  5448. data_priv.set(this, "__className__", this.className);
  5449. }
  5450. this.className = this.className || value === false ? "" : data_priv.get(this, "__className__") || "";
  5451. }
  5452. }
  5453. });
  5454. },
  5455. hasClass : function(type) {
  5456. var tval = " " + type + " ";
  5457. var i = 0;
  5458. var l = this.length;
  5459. for (;l > i;i++) {
  5460. if (1 === this[i].nodeType && (" " + this[i].className + " ").replace(rclass, " ").indexOf(tval) >= 0) {
  5461. return true;
  5462. }
  5463. }
  5464. return false;
  5465. }
  5466. });
  5467. var rreturn = /\r/g;
  5468. jQuery.fn.extend({
  5469. val : function(value) {
  5470. var hooks;
  5471. var ret;
  5472. var isFunction;
  5473. var elem = this[0];
  5474. return arguments.length ? (isFunction = jQuery.isFunction(value), this.each(function(i) {
  5475. var val;
  5476. if (1 === this.nodeType) {
  5477. val = isFunction ? value.call(this, i, jQuery(this).val()) : value;
  5478. if (null == val) {
  5479. val = "";
  5480. } else {
  5481. if ("number" == typeof val) {
  5482. val += "";
  5483. } else {
  5484. if (jQuery.isArray(val)) {
  5485. val = jQuery.map(val, function(month) {
  5486. return null == month ? "" : month + "";
  5487. });
  5488. }
  5489. }
  5490. }
  5491. hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()];
  5492. if (!(hooks && ("set" in hooks && void 0 !== hooks.set(this, val, "value")))) {
  5493. this.value = val;
  5494. }
  5495. }
  5496. })) : elem ? (hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()], hooks && ("get" in hooks && void 0 !== (ret = hooks.get(elem, "value"))) ? ret : (ret = elem.value, "string" == typeof ret ? ret.replace(rreturn, "") : null == ret ? "" : ret)) : void 0;
  5497. }
  5498. });
  5499. jQuery.extend({
  5500. valHooks : {
  5501. option : {
  5502. get : function(elem) {
  5503. var handle = jQuery.find.attr(elem, "value");
  5504. return null != handle ? handle : jQuery.trim(jQuery.text(elem));
  5505. }
  5506. },
  5507. select : {
  5508. get : function(elem) {
  5509. var copies;
  5510. var option;
  5511. var options = elem.options;
  5512. var index = elem.selectedIndex;
  5513. var one = "select-one" === elem.type || 0 > index;
  5514. var out = one ? null : [];
  5515. var max = one ? index + 1 : options.length;
  5516. var i = 0 > index ? max : one ? index : 0;
  5517. for (;max > i;i++) {
  5518. if (option = options[i], !(!option.selected && i !== index || ((support.optDisabled ? option.disabled : null !== option.getAttribute("disabled")) || option.parentNode.disabled && jQuery.nodeName(option.parentNode, "optgroup")))) {
  5519. if (copies = jQuery(option).val(), one) {
  5520. return copies;
  5521. }
  5522. out.push(copies);
  5523. }
  5524. }
  5525. return out;
  5526. },
  5527. set : function(elem, value) {
  5528. var r;
  5529. var option;
  5530. var options = elem.options;
  5531. var values = jQuery.makeArray(value);
  5532. var i = options.length;
  5533. for (;i--;) {
  5534. option = options[i];
  5535. if (option.selected = jQuery.inArray(option.value, values) >= 0) {
  5536. r = true;
  5537. }
  5538. }
  5539. return r || (elem.selectedIndex = -1), values;
  5540. }
  5541. }
  5542. }
  5543. });
  5544. jQuery.each(["radio", "checkbox"], function() {
  5545. jQuery.valHooks[this] = {
  5546. set : function(elem, value) {
  5547. return jQuery.isArray(value) ? elem.checked = jQuery.inArray(jQuery(elem).val(), value) >= 0 : void 0;
  5548. }
  5549. };
  5550. if (!support.checkOn) {
  5551. jQuery.valHooks[this].get = function(elem) {
  5552. return null === elem.getAttribute("value") ? "on" : elem.value;
  5553. };
  5554. }
  5555. });
  5556. jQuery.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function(dataAndEvents, fix) {
  5557. jQuery.fn[fix] = function(data, fn) {
  5558. return arguments.length > 0 ? this.on(fix, null, data, fn) : this.trigger(fix);
  5559. };
  5560. });
  5561. jQuery.fn.extend({
  5562. hover : function(fnOver, fnOut) {
  5563. return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);
  5564. },
  5565. bind : function(type, data, fn) {
  5566. return this.on(type, null, data, fn);
  5567. },
  5568. unbind : function(types, fn) {
  5569. return this.off(types, null, fn);
  5570. },
  5571. delegate : function(selector, types, data, fn) {
  5572. return this.on(types, selector, data, fn);
  5573. },
  5574. undelegate : function(selector, types, fn) {
  5575. return 1 === arguments.length ? this.off(selector, "**") : this.off(types, selector || "**", fn);
  5576. }
  5577. });
  5578. var iIdCounter = jQuery.now();
  5579. var rquery = /\?/;
  5580. jQuery.parseJSON = function(data) {
  5581. return JSON.parse(data + "");
  5582. };
  5583. jQuery.parseXML = function(data) {
  5584. var xml;
  5585. var tmp;
  5586. if (!data || "string" != typeof data) {
  5587. return null;
  5588. }
  5589. try {
  5590. tmp = new DOMParser;
  5591. xml = tmp.parseFromString(data, "text/xml");
  5592. } catch (i) {
  5593. xml = void 0;
  5594. }
  5595. return(!xml || xml.getElementsByTagName("parsererror").length) && jQuery.error("Invalid XML: " + data), xml;
  5596. };
  5597. var trimLeft = /#.*$/;
  5598. var rts = /([?&])_=[^&]*/;
  5599. var r = /^(.*?):[ \t]*([^\r\n]*)$/gm;
  5600. var matches = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/;
  5601. var rnoContent = /^(?:GET|HEAD)$/;
  5602. var rprotocol = /^\/\//;
  5603. var quickExpr = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/;
  5604. var prefilters = {};
  5605. var transports = {};
  5606. var nc = "*/".concat("*");
  5607. var url = win.location.href;
  5608. var match = quickExpr.exec(url.toLowerCase()) || [];
  5609. jQuery.extend({
  5610. active : 0,
  5611. lastModified : {},
  5612. etag : {},
  5613. ajaxSettings : {
  5614. url : url,
  5615. type : "GET",
  5616. isLocal : matches.test(match[1]),
  5617. global : true,
  5618. processData : true,
  5619. async : true,
  5620. contentType : "application/x-www-form-urlencoded; charset=UTF-8",
  5621. accepts : {
  5622. "*" : nc,
  5623. text : "text/plain",
  5624. html : "text/html",
  5625. xml : "application/xml, text/xml",
  5626. json : "application/json, text/javascript"
  5627. },
  5628. contents : {
  5629. xml : /xml/,
  5630. html : /html/,
  5631. json : /json/
  5632. },
  5633. responseFields : {
  5634. xml : "responseXML",
  5635. text : "responseText",
  5636. json : "responseJSON"
  5637. },
  5638. converters : {
  5639. "* text" : String,
  5640. "text html" : true,
  5641. "text json" : jQuery.parseJSON,
  5642. "text xml" : jQuery.parseXML
  5643. },
  5644. flatOptions : {
  5645. url : true,
  5646. context : true
  5647. }
  5648. },
  5649. ajaxSetup : function(target, settings) {
  5650. return settings ? ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : ajaxExtend(jQuery.ajaxSettings, target);
  5651. },
  5652. ajaxPrefilter : addToPrefiltersOrTransports(prefilters),
  5653. ajaxTransport : addToPrefiltersOrTransports(transports),
  5654. ajax : function(arg, options) {
  5655. function done(status, nativeStatusText, responses, total) {
  5656. var isSuccess;
  5657. var success;
  5658. var error;
  5659. var response;
  5660. var modified;
  5661. var statusText = nativeStatusText;
  5662. if (2 !== number) {
  5663. number = 2;
  5664. if (tref) {
  5665. clearTimeout(tref);
  5666. }
  5667. transport = void 0;
  5668. value = total || "";
  5669. jqXHR.readyState = status > 0 ? 4 : 0;
  5670. isSuccess = status >= 200 && 300 > status || 304 === status;
  5671. if (responses) {
  5672. response = ajaxHandleResponses(s, jqXHR, responses);
  5673. }
  5674. response = ajaxConvert(s, response, jqXHR, isSuccess);
  5675. if (isSuccess) {
  5676. if (s.ifModified) {
  5677. modified = jqXHR.getResponseHeader("Last-Modified");
  5678. if (modified) {
  5679. jQuery.lastModified[cacheURL] = modified;
  5680. }
  5681. modified = jqXHR.getResponseHeader("etag");
  5682. if (modified) {
  5683. jQuery.etag[cacheURL] = modified;
  5684. }
  5685. }
  5686. if (204 === status || "HEAD" === s.type) {
  5687. statusText = "nocontent";
  5688. } else {
  5689. if (304 === status) {
  5690. statusText = "notmodified";
  5691. } else {
  5692. statusText = response.state;
  5693. success = response.data;
  5694. error = response.error;
  5695. isSuccess = !error;
  5696. }
  5697. }
  5698. } else {
  5699. error = statusText;
  5700. if (status || !statusText) {
  5701. statusText = "error";
  5702. if (0 > status) {
  5703. status = 0;
  5704. }
  5705. }
  5706. }
  5707. jqXHR.status = status;
  5708. jqXHR.statusText = (nativeStatusText || statusText) + "";
  5709. if (isSuccess) {
  5710. deferred.resolveWith(scripts, [success, statusText, jqXHR]);
  5711. } else {
  5712. deferred.rejectWith(scripts, [jqXHR, statusText, error]);
  5713. }
  5714. jqXHR.statusCode(statusCode);
  5715. statusCode = void 0;
  5716. if (l) {
  5717. globalEventContext.trigger(isSuccess ? "ajaxSuccess" : "ajaxError", [jqXHR, s, isSuccess ? success : error]);
  5718. }
  5719. completeDeferred.fireWith(scripts, [jqXHR, statusText]);
  5720. if (l) {
  5721. globalEventContext.trigger("ajaxComplete", [jqXHR, s]);
  5722. if (!--jQuery.active) {
  5723. jQuery.event.trigger("ajaxStop");
  5724. }
  5725. }
  5726. }
  5727. }
  5728. if ("object" == typeof arg) {
  5729. options = arg;
  5730. arg = void 0;
  5731. }
  5732. options = options || {};
  5733. var transport;
  5734. var cacheURL;
  5735. var value;
  5736. var target;
  5737. var tref;
  5738. var t;
  5739. var l;
  5740. var i;
  5741. var s = jQuery.ajaxSetup({}, options);
  5742. var scripts = s.context || s;
  5743. var globalEventContext = s.context && (scripts.nodeType || scripts.jquery) ? jQuery(scripts) : jQuery.event;
  5744. var deferred = jQuery.Deferred();
  5745. var completeDeferred = jQuery.Callbacks("once memory");
  5746. var statusCode = s.statusCode || {};
  5747. var requestHeaders = {};
  5748. var requestHeadersNames = {};
  5749. var number = 0;
  5750. var strAbort = "canceled";
  5751. var jqXHR = {
  5752. readyState : 0,
  5753. getResponseHeader : function(key) {
  5754. var src;
  5755. if (2 === number) {
  5756. if (!target) {
  5757. target = {};
  5758. for (;src = r.exec(value);) {
  5759. target[src[1].toLowerCase()] = src[2];
  5760. }
  5761. }
  5762. src = target[key.toLowerCase()];
  5763. }
  5764. return null == src ? null : src;
  5765. },
  5766. getAllResponseHeaders : function() {
  5767. return 2 === number ? value : null;
  5768. },
  5769. setRequestHeader : function(name, value) {
  5770. var lname = name.toLowerCase();
  5771. return number || (name = requestHeadersNames[lname] = requestHeadersNames[lname] || name, requestHeaders[name] = value), this;
  5772. },
  5773. overrideMimeType : function(type) {
  5774. return number || (s.mimeType = type), this;
  5775. },
  5776. statusCode : function(map) {
  5777. var letter;
  5778. if (map) {
  5779. if (2 > number) {
  5780. for (letter in map) {
  5781. statusCode[letter] = [statusCode[letter], map[letter]];
  5782. }
  5783. } else {
  5784. jqXHR.always(map[jqXHR.status]);
  5785. }
  5786. }
  5787. return this;
  5788. },
  5789. abort : function(statusText) {
  5790. var finalText = statusText || strAbort;
  5791. return transport && transport.abort(finalText), done(0, finalText), this;
  5792. }
  5793. };
  5794. if (deferred.promise(jqXHR).complete = completeDeferred.add, jqXHR.success = jqXHR.done, jqXHR.error = jqXHR.fail, s.url = ((arg || (s.url || url)) + "").replace(trimLeft, "").replace(rprotocol, match[1] + "//"), s.type = options.method || (options.type || (s.method || s.type)), s.dataTypes = jQuery.trim(s.dataType || "*").toLowerCase().match(core_rnotwhite) || [""], null == s.crossDomain && (t = quickExpr.exec(s.url.toLowerCase()), s.crossDomain = !(!t || t[1] === match[1] && (t[2] === match[2] &&
  5795. (t[3] || ("http:" === t[1] ? "80" : "443")) === (match[3] || ("http:" === match[1] ? "80" : "443"))))), s.data && (s.processData && ("string" != typeof s.data && (s.data = jQuery.param(s.data, s.traditional)))), inspectPrefiltersOrTransports(prefilters, s, options, jqXHR), 2 === number) {
  5796. return jqXHR;
  5797. }
  5798. l = jQuery.event && s.global;
  5799. if (l) {
  5800. if (0 === jQuery.active++) {
  5801. jQuery.event.trigger("ajaxStart");
  5802. }
  5803. }
  5804. s.type = s.type.toUpperCase();
  5805. s.hasContent = !rnoContent.test(s.type);
  5806. cacheURL = s.url;
  5807. if (!s.hasContent) {
  5808. if (s.data) {
  5809. cacheURL = s.url += (rquery.test(cacheURL) ? "&" : "?") + s.data;
  5810. delete s.data;
  5811. }
  5812. if (s.cache === false) {
  5813. s.url = rts.test(cacheURL) ? cacheURL.replace(rts, "$1_=" + iIdCounter++) : cacheURL + (rquery.test(cacheURL) ? "&" : "?") + "_=" + iIdCounter++;
  5814. }
  5815. }
  5816. if (s.ifModified) {
  5817. if (jQuery.lastModified[cacheURL]) {
  5818. jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[cacheURL]);
  5819. }
  5820. if (jQuery.etag[cacheURL]) {
  5821. jqXHR.setRequestHeader("If-None-Match", jQuery.etag[cacheURL]);
  5822. }
  5823. }
  5824. if (s.data && (s.hasContent && s.contentType !== false) || options.contentType) {
  5825. jqXHR.setRequestHeader("Content-Type", s.contentType);
  5826. }
  5827. jqXHR.setRequestHeader("Accept", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + ("*" !== s.dataTypes[0] ? ", " + nc + "; q=0.01" : "") : s.accepts["*"]);
  5828. for (i in s.headers) {
  5829. jqXHR.setRequestHeader(i, s.headers[i]);
  5830. }
  5831. if (s.beforeSend && (s.beforeSend.call(scripts, jqXHR, s) === false || 2 === number)) {
  5832. return jqXHR.abort();
  5833. }
  5834. strAbort = "abort";
  5835. for (i in{
  5836. success : 1,
  5837. error : 1,
  5838. complete : 1
  5839. }) {
  5840. jqXHR[i](s[i]);
  5841. }
  5842. if (transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR)) {
  5843. jqXHR.readyState = 1;
  5844. if (l) {
  5845. globalEventContext.trigger("ajaxSend", [jqXHR, s]);
  5846. }
  5847. if (s.async) {
  5848. if (s.timeout > 0) {
  5849. tref = setTimeout(function() {
  5850. jqXHR.abort("timeout");
  5851. }, s.timeout);
  5852. }
  5853. }
  5854. try {
  5855. number = 1;
  5856. transport.send(requestHeaders, done);
  5857. } catch (e) {
  5858. if (!(2 > number)) {
  5859. throw e;
  5860. }
  5861. done(-1, e);
  5862. }
  5863. } else {
  5864. done(-1, "No Transport");
  5865. }
  5866. return jqXHR;
  5867. },
  5868. getJSON : function(cur, data, callback) {
  5869. return jQuery.get(cur, data, callback, "json");
  5870. },
  5871. getScript : function(cur, callback) {
  5872. return jQuery.get(cur, void 0, callback, "script");
  5873. }
  5874. });
  5875. jQuery.each(["get", "post"], function(dataAndEvents, method) {
  5876. jQuery[method] = function(requestUrl, qualifier, success, dataType) {
  5877. return jQuery.isFunction(qualifier) && (dataType = dataType || success, success = qualifier, qualifier = void 0), jQuery.ajax({
  5878. url : requestUrl,
  5879. type : method,
  5880. dataType : dataType,
  5881. data : qualifier,
  5882. success : success
  5883. });
  5884. };
  5885. });
  5886. jQuery._evalUrl = function(url) {
  5887. return jQuery.ajax({
  5888. url : url,
  5889. type : "GET",
  5890. dataType : "script",
  5891. async : false,
  5892. global : false,
  5893. "throws" : true
  5894. });
  5895. };
  5896. jQuery.fn.extend({
  5897. wrapAll : function(qualifier) {
  5898. var wrap;
  5899. return jQuery.isFunction(qualifier) ? this.each(function(i) {
  5900. jQuery(this).wrapAll(qualifier.call(this, i));
  5901. }) : (this[0] && (wrap = jQuery(qualifier, this[0].ownerDocument).eq(0).clone(true), this[0].parentNode && wrap.insertBefore(this[0]), wrap.map(function() {
  5902. var elem = this;
  5903. for (;elem.firstElementChild;) {
  5904. elem = elem.firstElementChild;
  5905. }
  5906. return elem;
  5907. }).append(this)), this);
  5908. },
  5909. wrapInner : function(html) {
  5910. return this.each(jQuery.isFunction(html) ? function(i) {
  5911. jQuery(this).wrapInner(html.call(this, i));
  5912. } : function() {
  5913. var self = jQuery(this);
  5914. var contents = self.contents();
  5915. if (contents.length) {
  5916. contents.wrapAll(html);
  5917. } else {
  5918. self.append(html);
  5919. }
  5920. });
  5921. },
  5922. wrap : function(html) {
  5923. var isFunction = jQuery.isFunction(html);
  5924. return this.each(function(i) {
  5925. jQuery(this).wrapAll(isFunction ? html.call(this, i) : html);
  5926. });
  5927. },
  5928. unwrap : function() {
  5929. return this.parent().each(function() {
  5930. if (!jQuery.nodeName(this, "body")) {
  5931. jQuery(this).replaceWith(this.childNodes);
  5932. }
  5933. }).end();
  5934. }
  5935. });
  5936. jQuery.expr.filters.hidden = function(type) {
  5937. return type.offsetWidth <= 0 && type.offsetHeight <= 0;
  5938. };
  5939. jQuery.expr.filters.visible = function(cycle) {
  5940. return!jQuery.expr.filters.hidden(cycle);
  5941. };
  5942. var rQuot = /%20/g;
  5943. var rmargin = /\[\]$/;
  5944. var rCRLF = /\r?\n/g;
  5945. var mouseTypeRegex = /^(?:submit|button|image|reset|file)$/i;
  5946. var rsubmittable = /^(?:input|select|textarea|keygen)/i;
  5947. jQuery.param = function(a, traditional) {
  5948. var prefix;
  5949. var klass = [];
  5950. var add = function(key, value) {
  5951. value = jQuery.isFunction(value) ? value() : null == value ? "" : value;
  5952. klass[klass.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
  5953. };
  5954. if (void 0 === traditional && (traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional), jQuery.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {
  5955. jQuery.each(a, function() {
  5956. add(this.name, this.value);
  5957. });
  5958. } else {
  5959. for (prefix in a) {
  5960. buildParams(prefix, a[prefix], traditional, add);
  5961. }
  5962. }
  5963. return klass.join("&").replace(rQuot, "+");
  5964. };
  5965. jQuery.fn.extend({
  5966. serialize : function() {
  5967. return jQuery.param(this.serializeArray());
  5968. },
  5969. serializeArray : function() {
  5970. return this.map(function() {
  5971. var elements = jQuery.prop(this, "elements");
  5972. return elements ? jQuery.makeArray(elements) : this;
  5973. }).filter(function() {
  5974. var type = this.type;
  5975. return this.name && (!jQuery(this).is(":disabled") && (rsubmittable.test(this.nodeName) && (!mouseTypeRegex.test(type) && (this.checked || !manipulation_rcheckableType.test(type)))));
  5976. }).map(function(dataAndEvents, elem) {
  5977. var val = jQuery(this).val();
  5978. return null == val ? null : jQuery.isArray(val) ? jQuery.map(val, function(val) {
  5979. return{
  5980. name : elem.name,
  5981. value : val.replace(rCRLF, "\r\n")
  5982. };
  5983. }) : {
  5984. name : elem.name,
  5985. value : val.replace(rCRLF, "\r\n")
  5986. };
  5987. }).get();
  5988. }
  5989. });
  5990. jQuery.ajaxSettings.xhr = function() {
  5991. try {
  5992. return new XMLHttpRequest;
  5993. } catch (e) {
  5994. }
  5995. };
  5996. var rightId = 0;
  5997. var map = {};
  5998. var xhrSuccessStatus = {
  5999. 0 : 200,
  6000. 1223 : 204
  6001. };
  6002. var xhrSupported = jQuery.ajaxSettings.xhr();
  6003. if (win.attachEvent) {
  6004. win.attachEvent("onunload", function() {
  6005. var letter;
  6006. for (letter in map) {
  6007. map[letter]();
  6008. }
  6009. });
  6010. }
  6011. support.cors = !!xhrSupported && "withCredentials" in xhrSupported;
  6012. support.ajax = xhrSupported = !!xhrSupported;
  6013. jQuery.ajaxTransport(function(options) {
  6014. var callback;
  6015. return support.cors || xhrSupported && !options.crossDomain ? {
  6016. send : function(headers, complete) {
  6017. var i;
  6018. var xhr = options.xhr();
  6019. var id = ++rightId;
  6020. if (xhr.open(options.type, options.url, options.async, options.username, options.password), options.xhrFields) {
  6021. for (i in options.xhrFields) {
  6022. xhr[i] = options.xhrFields[i];
  6023. }
  6024. }
  6025. if (options.mimeType) {
  6026. if (xhr.overrideMimeType) {
  6027. xhr.overrideMimeType(options.mimeType);
  6028. }
  6029. }
  6030. if (!options.crossDomain) {
  6031. if (!headers["X-Requested-With"]) {
  6032. headers["X-Requested-With"] = "XMLHttpRequest";
  6033. }
  6034. }
  6035. for (i in headers) {
  6036. xhr.setRequestHeader(i, headers[i]);
  6037. }
  6038. callback = function(status) {
  6039. return function() {
  6040. if (callback) {
  6041. delete map[id];
  6042. callback = xhr.onload = xhr.onerror = null;
  6043. if ("abort" === status) {
  6044. xhr.abort();
  6045. } else {
  6046. if ("error" === status) {
  6047. complete(xhr.status, xhr.statusText);
  6048. } else {
  6049. complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText, "string" == typeof xhr.responseText ? {
  6050. text : xhr.responseText
  6051. } : void 0, xhr.getAllResponseHeaders());
  6052. }
  6053. }
  6054. }
  6055. };
  6056. };
  6057. xhr.onload = callback();
  6058. xhr.onerror = callback("error");
  6059. callback = map[id] = callback("abort");
  6060. try {
  6061. xhr.send(options.hasContent && options.data || null);
  6062. } catch (a) {
  6063. if (callback) {
  6064. throw a;
  6065. }
  6066. }
  6067. },
  6068. abort : function() {
  6069. if (callback) {
  6070. callback();
  6071. }
  6072. }
  6073. } : void 0;
  6074. });
  6075. jQuery.ajaxSetup({
  6076. accepts : {
  6077. script : "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
  6078. },
  6079. contents : {
  6080. script : /(?:java|ecma)script/
  6081. },
  6082. converters : {
  6083. "text script" : function(value) {
  6084. return jQuery.globalEval(value), value;
  6085. }
  6086. }
  6087. });
  6088. jQuery.ajaxPrefilter("script", function(s) {
  6089. if (void 0 === s.cache) {
  6090. s.cache = false;
  6091. }
  6092. if (s.crossDomain) {
  6093. s.type = "GET";
  6094. }
  6095. });
  6096. jQuery.ajaxTransport("script", function(s) {
  6097. if (s.crossDomain) {
  6098. var script;
  6099. var callback;
  6100. return{
  6101. send : function(_, complete) {
  6102. script = jQuery("<script>").prop({
  6103. async : true,
  6104. charset : s.scriptCharset,
  6105. src : s.url
  6106. }).on("load error", callback = function(evt) {
  6107. script.remove();
  6108. callback = null;
  6109. if (evt) {
  6110. complete("error" === evt.type ? 404 : 200, evt.type);
  6111. }
  6112. });
  6113. node.head.appendChild(script[0]);
  6114. },
  6115. abort : function() {
  6116. if (callback) {
  6117. callback();
  6118. }
  6119. }
  6120. };
  6121. }
  6122. });
  6123. var eventPath = [];
  6124. var rjsonp = /(=)\?(?=&|$)|\?\?/;
  6125. jQuery.ajaxSetup({
  6126. jsonp : "callback",
  6127. jsonpCallback : function() {
  6128. var unlock = eventPath.pop() || jQuery.expando + "_" + iIdCounter++;
  6129. return this[unlock] = true, unlock;
  6130. }
  6131. });
  6132. jQuery.ajaxPrefilter("json jsonp", function(s, originalSettings, jqXHR) {
  6133. var name;
  6134. var copy;
  6135. var a;
  6136. var jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? "url" : "string" == typeof s.data && (!(s.contentType || "").indexOf("application/x-www-form-urlencoded") && (rjsonp.test(s.data) && "data")));
  6137. return jsonProp || "jsonp" === s.dataTypes[0] ? (name = s.jsonpCallback = jQuery.isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback, jsonProp ? s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + name) : s.jsonp !== false && (s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + name), s.converters["script json"] = function() {
  6138. return a || jQuery.error(name + " was not called"), a[0];
  6139. }, s.dataTypes[0] = "json", copy = win[name], win[name] = function() {
  6140. a = arguments;
  6141. }, jqXHR.always(function() {
  6142. win[name] = copy;
  6143. if (s[name]) {
  6144. s.jsonpCallback = originalSettings.jsonpCallback;
  6145. eventPath.push(name);
  6146. }
  6147. if (a) {
  6148. if (jQuery.isFunction(copy)) {
  6149. copy(a[0]);
  6150. }
  6151. }
  6152. a = copy = void 0;
  6153. }), "script") : void 0;
  6154. });
  6155. jQuery.parseHTML = function(data, context, keepScripts) {
  6156. if (!data || "string" != typeof data) {
  6157. return null;
  6158. }
  6159. if ("boolean" == typeof context) {
  6160. keepScripts = context;
  6161. context = false;
  6162. }
  6163. context = context || node;
  6164. var parsed = rsingleTag.exec(data);
  6165. var scripts = !keepScripts && [];
  6166. return parsed ? [context.createElement(parsed[1])] : (parsed = jQuery.buildFragment([data], context, scripts), scripts && (scripts.length && jQuery(scripts).remove()), jQuery.merge([], parsed.childNodes));
  6167. };
  6168. var matcherFunction = jQuery.fn.load;
  6169. jQuery.fn.load = function(url, data, attributes) {
  6170. if ("string" != typeof url && matcherFunction) {
  6171. return matcherFunction.apply(this, arguments);
  6172. }
  6173. var selector;
  6174. var type;
  6175. var response;
  6176. var self = this;
  6177. var off = url.indexOf(" ");
  6178. return off >= 0 && (selector = jQuery.trim(url.slice(off)), url = url.slice(0, off)), jQuery.isFunction(data) ? (attributes = data, data = void 0) : data && ("object" == typeof data && (type = "POST")), self.length > 0 && jQuery.ajax({
  6179. url : url,
  6180. type : type,
  6181. dataType : "html",
  6182. data : data
  6183. }).done(function(responseText) {
  6184. response = arguments;
  6185. self.html(selector ? jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector) : responseText);
  6186. }).complete(attributes && function(type, elems) {
  6187. self.each(attributes, response || [type.responseText, elems, type]);
  6188. }), this;
  6189. };
  6190. jQuery.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(dataAndEvents, name) {
  6191. jQuery.fn[name] = function(selector) {
  6192. return this.on(name, selector);
  6193. };
  6194. });
  6195. jQuery.expr.filters.animated = function(elem) {
  6196. return jQuery.grep(jQuery.timers, function(fn) {
  6197. return elem === fn.elem;
  6198. }).length;
  6199. };
  6200. var root = win.document.documentElement;
  6201. jQuery.offset = {
  6202. setOffset : function(elem, options, i) {
  6203. var curPosition;
  6204. var curLeft;
  6205. var curCSSTop;
  6206. var curTop;
  6207. var curOffset;
  6208. var curCSSLeft;
  6209. var l;
  6210. var position = jQuery.css(elem, "position");
  6211. var curElem = jQuery(elem);
  6212. var props = {};
  6213. if ("static" === position) {
  6214. elem.style.position = "relative";
  6215. }
  6216. curOffset = curElem.offset();
  6217. curCSSTop = jQuery.css(elem, "top");
  6218. curCSSLeft = jQuery.css(elem, "left");
  6219. l = ("absolute" === position || "fixed" === position) && (curCSSTop + curCSSLeft).indexOf("auto") > -1;
  6220. if (l) {
  6221. curPosition = curElem.position();
  6222. curTop = curPosition.top;
  6223. curLeft = curPosition.left;
  6224. } else {
  6225. curTop = parseFloat(curCSSTop) || 0;
  6226. curLeft = parseFloat(curCSSLeft) || 0;
  6227. }
  6228. if (jQuery.isFunction(options)) {
  6229. options = options.call(elem, i, curOffset);
  6230. }
  6231. if (null != options.top) {
  6232. props.top = options.top - curOffset.top + curTop;
  6233. }
  6234. if (null != options.left) {
  6235. props.left = options.left - curOffset.left + curLeft;
  6236. }
  6237. if ("using" in options) {
  6238. options.using.call(elem, props);
  6239. } else {
  6240. curElem.css(props);
  6241. }
  6242. }
  6243. };
  6244. jQuery.fn.extend({
  6245. offset : function(x) {
  6246. if (arguments.length) {
  6247. return void 0 === x ? this : this.each(function(dataName) {
  6248. jQuery.offset.setOffset(this, x, dataName);
  6249. });
  6250. }
  6251. var doc;
  6252. var win;
  6253. var b = this[0];
  6254. var box = {
  6255. top : 0,
  6256. left : 0
  6257. };
  6258. var element = b && b.ownerDocument;
  6259. return element ? (doc = element.documentElement, jQuery.contains(doc, b) ? (typeof b.getBoundingClientRect !== text && (box = b.getBoundingClientRect()), win = getWindow(element), {
  6260. top : box.top + win.pageYOffset - doc.clientTop,
  6261. left : box.left + win.pageXOffset - doc.clientLeft
  6262. }) : box) : void 0;
  6263. },
  6264. position : function() {
  6265. if (this[0]) {
  6266. var offsetParent;
  6267. var offset;
  6268. var body = this[0];
  6269. var parentOffset = {
  6270. top : 0,
  6271. left : 0
  6272. };
  6273. return "fixed" === jQuery.css(body, "position") ? offset = body.getBoundingClientRect() : (offsetParent = this.offsetParent(), offset = this.offset(), jQuery.nodeName(offsetParent[0], "html") || (parentOffset = offsetParent.offset()), parentOffset.top += jQuery.css(offsetParent[0], "borderTopWidth", true), parentOffset.left += jQuery.css(offsetParent[0], "borderLeftWidth", true)), {
  6274. top : offset.top - parentOffset.top - jQuery.css(body, "marginTop", true),
  6275. left : offset.left - parentOffset.left - jQuery.css(body, "marginLeft", true)
  6276. };
  6277. }
  6278. },
  6279. offsetParent : function() {
  6280. return this.map(function() {
  6281. var parent = this.offsetParent || root;
  6282. for (;parent && (!jQuery.nodeName(parent, "html") && "static" === jQuery.css(parent, "position"));) {
  6283. parent = parent.offsetParent;
  6284. }
  6285. return parent || root;
  6286. });
  6287. }
  6288. });
  6289. jQuery.each({
  6290. scrollLeft : "pageXOffset",
  6291. scrollTop : "pageYOffset"
  6292. }, function(name, prop) {
  6293. var top = "pageYOffset" === prop;
  6294. jQuery.fn[name] = function(isXML) {
  6295. return access(this, function(element, k, val) {
  6296. var obj = getWindow(element);
  6297. return void 0 === val ? obj ? obj[prop] : element[k] : void(obj ? obj.scrollTo(top ? win.pageXOffset : val, top ? val : win.pageYOffset) : element[k] = val);
  6298. }, name, isXML, arguments.length, null);
  6299. };
  6300. });
  6301. jQuery.each(["top", "left"], function(dataAndEvents, prop) {
  6302. jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function(scripts, val) {
  6303. return val ? (val = css(scripts, prop), regexp.test(val) ? jQuery(scripts).position()[prop] + "px" : val) : void 0;
  6304. });
  6305. });
  6306. jQuery.each({
  6307. Height : "height",
  6308. Width : "width"
  6309. }, function(name, type) {
  6310. jQuery.each({
  6311. padding : "inner" + name,
  6312. content : type,
  6313. "" : "outer" + name
  6314. }, function(defaultExtra, original) {
  6315. jQuery.fn[original] = function(margin, value) {
  6316. var chainable = arguments.length && (defaultExtra || "boolean" != typeof margin);
  6317. var extra = defaultExtra || (margin === true || value === true ? "margin" : "border");
  6318. return access(this, function(elem, prop, value) {
  6319. var doc;
  6320. return jQuery.isWindow(elem) ? elem.document.documentElement["client" + name] : 9 === elem.nodeType ? (doc = elem.documentElement, Math.max(elem.body["scroll" + name], doc["scroll" + name], elem.body["offset" + name], doc["offset" + name], doc["client" + name])) : void 0 === value ? jQuery.css(elem, prop, extra) : jQuery.style(elem, prop, value, extra);
  6321. }, type, chainable ? margin : void 0, chainable, null);
  6322. };
  6323. });
  6324. });
  6325. jQuery.fn.size = function() {
  6326. return this.length;
  6327. };
  6328. jQuery.fn.andSelf = jQuery.fn.addBack;
  6329. if ("function" == typeof define) {
  6330. if (define.amd) {
  6331. define("jquery", [], function() {
  6332. return jQuery;
  6333. });
  6334. }
  6335. }
  6336. var $ = win.jQuery;
  6337. var _$ = win.$;
  6338. return jQuery.noConflict = function(deep) {
  6339. return win.$ === jQuery && (win.$ = _$), deep && (win.jQuery === jQuery && (win.jQuery = $)), jQuery;
  6340. }, typeof dataAndEvents === text && (win.jQuery = win.$ = jQuery), jQuery;
  6341. });
  6342. (function(factory) {
  6343. if (typeof define === "function" && define.amd) {
  6344. define(["jquery"], function(Zepto) {
  6345. return factory(Zepto);
  6346. });
  6347. } else {
  6348. if (typeof module === "object" && typeof module.exports === "object") {
  6349. exports = factory(require("jquery"));
  6350. } else {
  6351. factory(jQuery);
  6352. }
  6353. }
  6354. })(function($) {
  6355. $.easing["jswing"] = $.easing["swing"];
  6356. $.extend($.easing, {
  6357. def : "easeOutQuad",
  6358. swing : function(diff, n, p, firstNum, swing) {
  6359. return $.easing[$.easing.def](diff, n, p, firstNum, swing);
  6360. },
  6361. easeInQuad : function(x, t, b, c, d) {
  6362. return c * (t /= d) * t + b;
  6363. },
  6364. easeOutQuad : function(x, t, b, c, d) {
  6365. return-c * (t /= d) * (t - 2) + b;
  6366. },
  6367. easeInOutQuad : function(x, t, b, c, d) {
  6368. if ((t /= d / 2) < 1) {
  6369. return c / 2 * t * t + b;
  6370. }
  6371. return-c / 2 * (--t * (t - 2) - 1) + b;
  6372. },
  6373. easeInCubic : function(x, t, b, c, d) {
  6374. return c * (t /= d) * t * t + b;
  6375. },
  6376. easeOutCubic : function(x, t, b, c, d) {
  6377. return c * ((t = t / d - 1) * t * t + 1) + b;
  6378. },
  6379. easeInOutCubic : function(x, t, b, c, d) {
  6380. if ((t /= d / 2) < 1) {
  6381. return c / 2 * t * t * t + b;
  6382. }
  6383. return c / 2 * ((t -= 2) * t * t + 2) + b;
  6384. },
  6385. easeInQuart : function(x, t, b, c, d) {
  6386. return c * (t /= d) * t * t * t + b;
  6387. },
  6388. easeOutQuart : function(x, t, b, c, d) {
  6389. return-c * ((t = t / d - 1) * t * t * t - 1) + b;
  6390. },
  6391. easeInOutQuart : function(x, t, b, c, d) {
  6392. if ((t /= d / 2) < 1) {
  6393. return c / 2 * t * t * t * t + b;
  6394. }
  6395. return-c / 2 * ((t -= 2) * t * t * t - 2) + b;
  6396. },
  6397. easeInQuint : function(x, t, b, c, d) {
  6398. return c * (t /= d) * t * t * t * t + b;
  6399. },
  6400. easeOutQuint : function(x, t, b, c, d) {
  6401. return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
  6402. },
  6403. easeInOutQuint : function(x, t, b, c, d) {
  6404. if ((t /= d / 2) < 1) {
  6405. return c / 2 * t * t * t * t * t + b;
  6406. }
  6407. return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
  6408. },
  6409. easeInSine : function(x, t, c, b, d) {
  6410. return-b * Math.cos(t / d * (Math.PI / 2)) + b + c;
  6411. },
  6412. easeOutSine : function(x, t, b, c, d) {
  6413. return c * Math.sin(t / d * (Math.PI / 2)) + b;
  6414. },
  6415. easeInOutSine : function(dataAndEvents, t, b, c, d) {
  6416. return-c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
  6417. },
  6418. easeInExpo : function(pos, t, b, c, d) {
  6419. return t == 0 ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;
  6420. },
  6421. easeOutExpo : function(x, t, b, c, d) {
  6422. return t == d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;
  6423. },
  6424. easeInOutExpo : function(pos, t, beg, c, d) {
  6425. if (t == 0) {
  6426. return beg;
  6427. }
  6428. if (t == d) {
  6429. return beg + c;
  6430. }
  6431. if ((t /= d / 2) < 1) {
  6432. return c / 2 * Math.pow(2, 10 * (t - 1)) + beg;
  6433. }
  6434. return c / 2 * (-Math.pow(2, -10 * --t) + 2) + beg;
  6435. },
  6436. easeInCirc : function(pos, t, b, x, d) {
  6437. return-x * (Math.sqrt(1 - (t /= d) * t) - 1) + b;
  6438. },
  6439. easeOutCirc : function(x, t, b, c, d) {
  6440. return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
  6441. },
  6442. easeInOutCirc : function(x, t, b, dataAndEvents, d) {
  6443. if ((t /= d / 2) < 1) {
  6444. return-dataAndEvents / 2 * (Math.sqrt(1 - t * t) - 1) + b;
  6445. }
  6446. return dataAndEvents / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
  6447. },
  6448. easeInElastic : function(x, t, b, c, d) {
  6449. var s = 1.70158;
  6450. var p = 0;
  6451. var a = c;
  6452. if (t == 0) {
  6453. return b;
  6454. }
  6455. if ((t /= d) == 1) {
  6456. return b + c;
  6457. }
  6458. if (!p) {
  6459. p = d * 0.3;
  6460. }
  6461. if (a < Math.abs(c)) {
  6462. a = c;
  6463. s = p / 4;
  6464. } else {
  6465. s = p / (2 * Math.PI) * Math.asin(c / a);
  6466. }
  6467. return-(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
  6468. },
  6469. easeOutElastic : function(x, t, b, c, d) {
  6470. var s = 1.70158;
  6471. var p = 0;
  6472. var a = c;
  6473. if (t == 0) {
  6474. return b;
  6475. }
  6476. if ((t /= d) == 1) {
  6477. return b + c;
  6478. }
  6479. if (!p) {
  6480. p = d * 0.3;
  6481. }
  6482. if (a < Math.abs(c)) {
  6483. a = c;
  6484. s = p / 4;
  6485. } else {
  6486. s = p / (2 * Math.PI) * Math.asin(c / a);
  6487. }
  6488. return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;
  6489. },
  6490. easeInOutElastic : function(x, t, b, c, d) {
  6491. var s = 1.70158;
  6492. var p = 0;
  6493. var a = c;
  6494. if (t == 0) {
  6495. return b;
  6496. }
  6497. if ((t /= d / 2) == 2) {
  6498. return b + c;
  6499. }
  6500. if (!p) {
  6501. p = d * (0.3 * 1.5);
  6502. }
  6503. if (a < Math.abs(c)) {
  6504. a = c;
  6505. s = p / 4;
  6506. } else {
  6507. s = p / (2 * Math.PI) * Math.asin(c / a);
  6508. }
  6509. if (t < 1) {
  6510. return-0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
  6511. }
  6512. return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * 0.5 + c + b;
  6513. },
  6514. easeInBack : function(x, t, b, c, d, s) {
  6515. if (s == undefined) {
  6516. s = 1.70158;
  6517. }
  6518. return c * (t /= d) * t * ((s + 1) * t - s) + b;
  6519. },
  6520. easeOutBack : function(d, pos, b, c, a, s) {
  6521. if (s == undefined) {
  6522. s = 1.70158;
  6523. }
  6524. return c * ((pos = pos / a - 1) * pos * ((s + 1) * pos + s) + 1) + b;
  6525. },
  6526. easeInOutBack : function(x, pos, b, t, d, s) {
  6527. if (s == undefined) {
  6528. s = 1.70158;
  6529. }
  6530. if ((pos /= d / 2) < 1) {
  6531. return t / 2 * (pos * pos * (((s *= 1.525) + 1) * pos - s)) + b;
  6532. }
  6533. return t / 2 * ((pos -= 2) * pos * (((s *= 1.525) + 1) * pos + s) + 2) + b;
  6534. },
  6535. easeInBounce : function(x, t, b, c, d) {
  6536. return c - $.easing.easeOutBounce(x, d - t, 0, c, d) + b;
  6537. },
  6538. easeOutBounce : function(v00, t, b, c, d) {
  6539. if ((t /= d) < 1 / 2.75) {
  6540. return c * (7.5625 * t * t) + b;
  6541. } else {
  6542. if (t < 2 / 2.75) {
  6543. return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;
  6544. } else {
  6545. if (t < 2.5 / 2.75) {
  6546. return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;
  6547. } else {
  6548. return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;
  6549. }
  6550. }
  6551. }
  6552. },
  6553. easeInOutBounce : function(x, t, b, c, d) {
  6554. if (t < d / 2) {
  6555. return $.easing.easeInBounce(x, t * 2, 0, c, d) * 0.5 + b;
  6556. }
  6557. return $.easing.easeOutBounce(x, t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;
  6558. }
  6559. });
  6560. });
  6561. if ("undefined" == typeof jQuery) {
  6562. throw new Error("Bootstrap's JavaScript requires jQuery");
  6563. }
  6564. +function($) {
  6565. var b = $.fn.jquery.split(" ")[0].split(".");
  6566. if (b[0] < 2 && b[1] < 9 || 1 == b[0] && (9 == b[1] && b[2] < 1)) {
  6567. throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher");
  6568. }
  6569. }(jQuery), +function($) {
  6570. function transitionEnd() {
  6571. var el = document.createElement("bootstrap");
  6572. var transEndEventNames = {
  6573. WebkitTransition : "webkitTransitionEnd",
  6574. MozTransition : "transitionend",
  6575. OTransition : "oTransitionEnd otransitionend",
  6576. transition : "transitionend"
  6577. };
  6578. var name;
  6579. for (name in transEndEventNames) {
  6580. if (void 0 !== el.style[name]) {
  6581. return{
  6582. end : transEndEventNames[name]
  6583. };
  6584. }
  6585. }
  6586. return false;
  6587. }
  6588. $.fn.emulateTransitionEnd = function(duration) {
  6589. var c = false;
  6590. var $el = this;
  6591. $(this).one("bsTransitionEnd", function() {
  6592. c = true;
  6593. });
  6594. var callback = function() {
  6595. if (!c) {
  6596. $($el).trigger($.support.transition.end);
  6597. }
  6598. };
  6599. return setTimeout(callback, duration), this;
  6600. };
  6601. $(function() {
  6602. $.support.transition = transitionEnd();
  6603. if ($.support.transition) {
  6604. $.event.special.bsTransitionEnd = {
  6605. bindType : $.support.transition.end,
  6606. delegateType : $.support.transition.end,
  6607. handle : function(event) {
  6608. return $(event.target).is(this) ? event.handleObj.handler.apply(this, arguments) : void 0;
  6609. }
  6610. };
  6611. }
  6612. });
  6613. }(jQuery), +function($) {
  6614. function setValue(type) {
  6615. return this.each(function() {
  6616. var $this = $(this);
  6617. var data = $this.data("bs.alert");
  6618. if (!data) {
  6619. $this.data("bs.alert", data = new Alert(this));
  6620. }
  6621. if ("string" == typeof type) {
  6622. data[type].call($this);
  6623. }
  6624. });
  6625. }
  6626. var className = '[data-dismiss="alert"]';
  6627. var Alert = function(selector) {
  6628. $(selector).on("click", className, this.close);
  6629. };
  6630. Alert.VERSION = "3.3.0";
  6631. Alert.TRANSITION_DURATION = 150;
  6632. Alert.prototype.close = function(e) {
  6633. function removeElement() {
  6634. $parent.detach().trigger("closed.bs.alert").remove();
  6635. }
  6636. var $this = $(this);
  6637. var selector = $this.attr("data-target");
  6638. if (!selector) {
  6639. selector = $this.attr("href");
  6640. selector = selector && selector.replace(/.*(?=#[^\s]*$)/, "");
  6641. }
  6642. var $parent = $(selector);
  6643. if (e) {
  6644. e.preventDefault();
  6645. }
  6646. if (!$parent.length) {
  6647. $parent = $this.closest(".alert");
  6648. }
  6649. $parent.trigger(e = $.Event("close.bs.alert"));
  6650. if (!e.isDefaultPrevented()) {
  6651. $parent.removeClass("in");
  6652. if ($.support.transition && $parent.hasClass("fade")) {
  6653. $parent.one("bsTransitionEnd", removeElement).emulateTransitionEnd(Alert.TRANSITION_DURATION);
  6654. } else {
  6655. removeElement();
  6656. }
  6657. }
  6658. };
  6659. var old = $.fn.alert;
  6660. $.fn.alert = setValue;
  6661. $.fn.alert.Constructor = Alert;
  6662. $.fn.alert.noConflict = function() {
  6663. return $.fn.alert = old, this;
  6664. };
  6665. $(document).on("click.bs.alert.data-api", className, Alert.prototype.close);
  6666. }(jQuery), +function($) {
  6667. function init(option) {
  6668. return this.each(function() {
  6669. var $this = $(this);
  6670. var data = $this.data("bs.button");
  6671. var options = "object" == typeof option && option;
  6672. if (!data) {
  6673. $this.data("bs.button", data = new Button(this, options));
  6674. }
  6675. if ("toggle" == option) {
  6676. data.toggle();
  6677. } else {
  6678. if (option) {
  6679. data.setState(option);
  6680. }
  6681. }
  6682. });
  6683. }
  6684. var Button = function(selector, options) {
  6685. this.$element = $(selector);
  6686. this.options = $.extend({}, Button.DEFAULTS, options);
  6687. this.isLoading = false;
  6688. };
  6689. Button.VERSION = "3.3.0";
  6690. Button.DEFAULTS = {
  6691. loadingText : "loading..."
  6692. };
  6693. Button.prototype.setState = function(state) {
  6694. var elem = "disabled";
  6695. var $el = this.$element;
  6696. var val = $el.is("input") ? "val" : "html";
  6697. var data = $el.data();
  6698. state += "Text";
  6699. if (null == data.resetText) {
  6700. $el.data("resetText", $el[val]());
  6701. }
  6702. setTimeout($.proxy(function() {
  6703. $el[val](null == data[state] ? this.options[state] : data[state]);
  6704. if ("loadingText" == state) {
  6705. this.isLoading = true;
  6706. $el.addClass(elem).attr(elem, elem);
  6707. } else {
  6708. if (this.isLoading) {
  6709. this.isLoading = false;
  6710. $el.removeClass(elem).removeAttr(elem);
  6711. }
  6712. }
  6713. }, this), 0);
  6714. };
  6715. Button.prototype.toggle = function() {
  6716. var a = true;
  6717. var $shcell = this.$element.closest('[data-toggle="buttons"]');
  6718. if ($shcell.length) {
  6719. var $input = this.$element.find("input");
  6720. if ("radio" == $input.prop("type")) {
  6721. if ($input.prop("checked") && this.$element.hasClass("active")) {
  6722. a = false;
  6723. } else {
  6724. $shcell.find(".active").removeClass("active");
  6725. }
  6726. }
  6727. if (a) {
  6728. $input.prop("checked", !this.$element.hasClass("active")).trigger("change");
  6729. }
  6730. } else {
  6731. this.$element.attr("aria-pressed", !this.$element.hasClass("active"));
  6732. }
  6733. if (a) {
  6734. this.$element.toggleClass("active");
  6735. }
  6736. };
  6737. var old = $.fn.button;
  6738. $.fn.button = init;
  6739. $.fn.button.Constructor = Button;
  6740. $.fn.button.noConflict = function() {
  6741. return $.fn.button = old, this;
  6742. };
  6743. $(document).on("click.bs.button.data-api", '[data-toggle^="button"]', function(evt) {
  6744. var self = $(evt.target);
  6745. if (!self.hasClass("btn")) {
  6746. self = self.closest(".btn");
  6747. }
  6748. init.call(self, "toggle");
  6749. evt.preventDefault();
  6750. }).on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', function(ev) {
  6751. $(ev.target).closest(".btn").toggleClass("focus", "focus" == ev.type);
  6752. });
  6753. }(jQuery), +function($) {
  6754. function init(option) {
  6755. return this.each(function() {
  6756. var $this = $(this);
  6757. var data = $this.data("bs.carousel");
  6758. var options = $.extend({}, Carousel.DEFAULTS, $this.data(), "object" == typeof option && option);
  6759. var action = "string" == typeof option ? option : options.slide;
  6760. if (!data) {
  6761. $this.data("bs.carousel", data = new Carousel(this, options));
  6762. }
  6763. if ("number" == typeof option) {
  6764. data.to(option);
  6765. } else {
  6766. if (action) {
  6767. data[action]();
  6768. } else {
  6769. if (options.interval) {
  6770. data.pause().cycle();
  6771. }
  6772. }
  6773. }
  6774. });
  6775. }
  6776. var Carousel = function(selector, options) {
  6777. this.$element = $(selector);
  6778. this.$indicators = this.$element.find(".carousel-indicators");
  6779. this.options = options;
  6780. this.paused = this.sliding = this.interval = this.$active = this.$items = null;
  6781. if (this.options.keyboard) {
  6782. this.$element.on("keydown.bs.carousel", $.proxy(this.keydown, this));
  6783. }
  6784. if ("hover" == this.options.pause) {
  6785. if (!("ontouchstart" in document.documentElement)) {
  6786. this.$element.on("mouseenter.bs.carousel", $.proxy(this.pause, this)).on("mouseleave.bs.carousel", $.proxy(this.cycle, this));
  6787. }
  6788. }
  6789. };
  6790. Carousel.VERSION = "3.3.0";
  6791. Carousel.TRANSITION_DURATION = 600;
  6792. Carousel.DEFAULTS = {
  6793. interval : 5E3,
  6794. pause : "hover",
  6795. wrap : true,
  6796. keyboard : true
  6797. };
  6798. Carousel.prototype.keydown = function(e) {
  6799. switch(e.which) {
  6800. case 37:
  6801. this.prev();
  6802. break;
  6803. case 39:
  6804. this.next();
  6805. break;
  6806. default:
  6807. return;
  6808. }
  6809. e.preventDefault();
  6810. };
  6811. Carousel.prototype.cycle = function(dataAndEvents) {
  6812. return dataAndEvents || (this.paused = false), this.interval && clearInterval(this.interval), this.options.interval && (!this.paused && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))), this;
  6813. };
  6814. Carousel.prototype.getItemIndex = function($item) {
  6815. return this.$items = $item.parent().children(".item"), this.$items.index($item || this.$active);
  6816. };
  6817. Carousel.prototype.getItemForDirection = function(a, item) {
  6818. var count = "prev" == a ? -1 : 1;
  6819. var index = this.getItemIndex(item);
  6820. var idx = (index + count) % this.$items.length;
  6821. return this.$items.eq(idx);
  6822. };
  6823. Carousel.prototype.to = function(pos) {
  6824. var that = this;
  6825. var activePos = this.getItemIndex(this.$active = this.$element.find(".item.active"));
  6826. return pos > this.$items.length - 1 || 0 > pos ? void 0 : this.sliding ? this.$element.one("slid.bs.carousel", function() {
  6827. that.to(pos);
  6828. }) : activePos == pos ? this.pause().cycle() : this.slide(pos > activePos ? "next" : "prev", this.$items.eq(pos));
  6829. };
  6830. Carousel.prototype.pause = function($vid) {
  6831. return $vid || (this.paused = true), this.$element.find(".next, .prev").length && ($.support.transition && (this.$element.trigger($.support.transition.end), this.cycle(true))), this.interval = clearInterval(this.interval), this;
  6832. };
  6833. Carousel.prototype.next = function() {
  6834. return this.sliding ? void 0 : this.slide("next");
  6835. };
  6836. Carousel.prototype.prev = function() {
  6837. return this.sliding ? void 0 : this.slide("prev");
  6838. };
  6839. Carousel.prototype.slide = function(a, next) {
  6840. var self = this.$element.find(".item.active");
  6841. var $next = next || this.getItemForDirection(a, self);
  6842. var isCycling = this.interval;
  6843. var direction = "next" == a ? "left" : "right";
  6844. var fallback = "next" == a ? "first" : "last";
  6845. var that = this;
  6846. if (!$next.length) {
  6847. if (!this.options.wrap) {
  6848. return;
  6849. }
  6850. $next = this.$element.find(".item")[fallback]();
  6851. }
  6852. if ($next.hasClass("active")) {
  6853. return this.sliding = false;
  6854. }
  6855. var previous = $next[0];
  6856. var cycle = $.Event("slide.bs.carousel", {
  6857. relatedTarget : previous,
  6858. direction : direction
  6859. });
  6860. if (this.$element.trigger(cycle), !cycle.isDefaultPrevented()) {
  6861. if (this.sliding = true, isCycling && this.pause(), this.$indicators.length) {
  6862. this.$indicators.find(".active").removeClass("active");
  6863. var $listing = $(this.$indicators.children()[this.getItemIndex($next)]);
  6864. if ($listing) {
  6865. $listing.addClass("active");
  6866. }
  6867. }
  6868. var fix = $.Event("slid.bs.carousel", {
  6869. relatedTarget : previous,
  6870. direction : direction
  6871. });
  6872. return $.support.transition && this.$element.hasClass("slide") ? ($next.addClass(a), $next[0].offsetWidth, self.addClass(direction), $next.addClass(direction), self.one("bsTransitionEnd", function() {
  6873. $next.removeClass([a, direction].join(" ")).addClass("active");
  6874. self.removeClass(["active", direction].join(" "));
  6875. that.sliding = false;
  6876. setTimeout(function() {
  6877. that.$element.trigger(fix);
  6878. }, 0);
  6879. }).emulateTransitionEnd(Carousel.TRANSITION_DURATION)) : (self.removeClass("active"), $next.addClass("active"), this.sliding = false, this.$element.trigger(fix)), isCycling && this.cycle(), this;
  6880. }
  6881. };
  6882. var old = $.fn.carousel;
  6883. $.fn.carousel = init;
  6884. $.fn.carousel.Constructor = Carousel;
  6885. $.fn.carousel.noConflict = function() {
  6886. return $.fn.carousel = old, this;
  6887. };
  6888. var start = function(event) {
  6889. var href;
  6890. var $this = $(this);
  6891. var panel = $($this.attr("data-target") || (href = $this.attr("href")) && href.replace(/.*(?=#[^\s]+$)/, ""));
  6892. if (panel.hasClass("carousel")) {
  6893. var next = $.extend({}, panel.data(), $this.data());
  6894. var slideIndex = $this.attr("data-slide-to");
  6895. if (slideIndex) {
  6896. next.interval = false;
  6897. }
  6898. init.call(panel, next);
  6899. if (slideIndex) {
  6900. panel.data("bs.carousel").to(slideIndex);
  6901. }
  6902. event.preventDefault();
  6903. }
  6904. };
  6905. $(document).on("click.bs.carousel.data-api", "[data-slide]", start).on("click.bs.carousel.data-api", "[data-slide-to]", start);
  6906. $(window).on("load", function() {
  6907. $('[data-ride="carousel"]').each(function() {
  6908. var self = $(this);
  6909. init.call(self, self.data());
  6910. });
  6911. });
  6912. }(jQuery), +function($) {
  6913. function getParent($this) {
  6914. var href;
  6915. var statsTemplate = $this.attr("data-target") || (href = $this.attr("href")) && href.replace(/.*(?=#[^\s]+$)/, "");
  6916. return $(statsTemplate);
  6917. }
  6918. function build(options) {
  6919. return this.each(function() {
  6920. var $this = $(this);
  6921. var data = $this.data("bs.collapse");
  6922. var settings = $.extend({}, Collapse.DEFAULTS, $this.data(), "object" == typeof options && options);
  6923. if (!data) {
  6924. if (settings.toggle) {
  6925. if ("show" == options) {
  6926. settings.toggle = false;
  6927. }
  6928. }
  6929. }
  6930. if (!data) {
  6931. $this.data("bs.collapse", data = new Collapse(this, settings));
  6932. }
  6933. if ("string" == typeof options) {
  6934. data[options]();
  6935. }
  6936. });
  6937. }
  6938. var Collapse = function(selector, options) {
  6939. this.$element = $(selector);
  6940. this.options = $.extend({}, Collapse.DEFAULTS, options);
  6941. this.$trigger = $(this.options.trigger).filter('[href="#' + selector.id + '"], [data-target="#' + selector.id + '"]');
  6942. this.transitioning = null;
  6943. if (this.options.parent) {
  6944. this.$parent = this.getParent();
  6945. } else {
  6946. this.addAriaAndCollapsedClass(this.$element, this.$trigger);
  6947. }
  6948. if (this.options.toggle) {
  6949. this.toggle();
  6950. }
  6951. };
  6952. Collapse.VERSION = "3.3.0";
  6953. Collapse.TRANSITION_DURATION = 350;
  6954. Collapse.DEFAULTS = {
  6955. toggle : true,
  6956. trigger : '[data-toggle="collapse"]'
  6957. };
  6958. Collapse.prototype.dimension = function() {
  6959. var hasWidth = this.$element.hasClass("width");
  6960. return hasWidth ? "width" : "height";
  6961. };
  6962. Collapse.prototype.show = function() {
  6963. if (!this.transitioning && !this.$element.hasClass("in")) {
  6964. var hasData;
  6965. var self = this.$parent && this.$parent.find("> .panel").children(".in, .collapsing");
  6966. if (!(self && (self.length && (hasData = self.data("bs.collapse"), hasData && hasData.transitioning)))) {
  6967. var cycle = $.Event("show.bs.collapse");
  6968. if (this.$element.trigger(cycle), !cycle.isDefaultPrevented()) {
  6969. if (self) {
  6970. if (self.length) {
  6971. build.call(self, "hide");
  6972. if (!hasData) {
  6973. self.data("bs.collapse", null);
  6974. }
  6975. }
  6976. }
  6977. var dimension = this.dimension();
  6978. this.$element.removeClass("collapse").addClass("collapsing")[dimension](0).attr("aria-expanded", true);
  6979. this.$trigger.removeClass("collapsed").attr("aria-expanded", true);
  6980. this.transitioning = 1;
  6981. var complete = function() {
  6982. this.$element.removeClass("collapsing").addClass("collapse in")[dimension]("");
  6983. this.transitioning = 0;
  6984. this.$element.trigger("shown.bs.collapse");
  6985. };
  6986. if (!$.support.transition) {
  6987. return complete.call(this);
  6988. }
  6989. var scrollSize = $.camelCase(["scroll", dimension].join("-"));
  6990. this.$element.one("bsTransitionEnd", $.proxy(complete, this)).emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]);
  6991. }
  6992. }
  6993. }
  6994. };
  6995. Collapse.prototype.hide = function() {
  6996. if (!this.transitioning && this.$element.hasClass("in")) {
  6997. var cycle = $.Event("hide.bs.collapse");
  6998. if (this.$element.trigger(cycle), !cycle.isDefaultPrevented()) {
  6999. var dimension = this.dimension();
  7000. this.$element[dimension](this.$element[dimension]())[0].offsetHeight;
  7001. this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded", false);
  7002. this.$trigger.addClass("collapsed").attr("aria-expanded", false);
  7003. this.transitioning = 1;
  7004. var complete = function() {
  7005. this.transitioning = 0;
  7006. this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse");
  7007. };
  7008. return $.support.transition ? void this.$element[dimension](0).one("bsTransitionEnd", $.proxy(complete, this)).emulateTransitionEnd(Collapse.TRANSITION_DURATION) : complete.call(this);
  7009. }
  7010. }
  7011. };
  7012. Collapse.prototype.toggle = function() {
  7013. this[this.$element.hasClass("in") ? "hide" : "show"]();
  7014. };
  7015. Collapse.prototype.getParent = function() {
  7016. return $(this.options.parent).find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]').each($.proxy(function(dataAndEvents, thisObject) {
  7017. var $this = $(thisObject);
  7018. this.addAriaAndCollapsedClass(getParent($this), $this);
  7019. }, this)).end();
  7020. };
  7021. Collapse.prototype.addAriaAndCollapsedClass = function(element, el) {
  7022. var show = element.hasClass("in");
  7023. element.attr("aria-expanded", show);
  7024. el.toggleClass("collapsed", !show).attr("aria-expanded", show);
  7025. };
  7026. var old = $.fn.collapse;
  7027. $.fn.collapse = build;
  7028. $.fn.collapse.Constructor = Collapse;
  7029. $.fn.collapse.noConflict = function() {
  7030. return $.fn.collapse = old, this;
  7031. };
  7032. $(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', function(types) {
  7033. var $this = $(this);
  7034. if (!$this.attr("data-target")) {
  7035. types.preventDefault();
  7036. }
  7037. var value = getParent($this);
  7038. var data = value.data("bs.collapse");
  7039. var option = data ? "toggle" : $.extend({}, $this.data(), {
  7040. trigger : this
  7041. });
  7042. build.call(value, option);
  7043. });
  7044. }(jQuery), +function($) {
  7045. function clearMenus(e) {
  7046. if (!(e && 3 === e.which)) {
  7047. $(backdrop).remove();
  7048. $(selector).each(function() {
  7049. var $this = $(this);
  7050. var $parent = getParent($this);
  7051. var args = {
  7052. relatedTarget : this
  7053. };
  7054. if ($parent.hasClass("open")) {
  7055. $parent.trigger(e = $.Event("hide.bs.dropdown", args));
  7056. if (!e.isDefaultPrevented()) {
  7057. $this.attr("aria-expanded", "false");
  7058. $parent.removeClass("open").trigger("hidden.bs.dropdown", args);
  7059. }
  7060. }
  7061. });
  7062. }
  7063. }
  7064. function getParent($this) {
  7065. var selector = $this.attr("data-target");
  7066. if (!selector) {
  7067. selector = $this.attr("href");
  7068. selector = selector && (/#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, ""));
  7069. }
  7070. var $parent = selector && $(selector);
  7071. return $parent && $parent.length ? $parent : $this.parent();
  7072. }
  7073. function setValue(type) {
  7074. return this.each(function() {
  7075. var $this = $(this);
  7076. var data = $this.data("bs.dropdown");
  7077. if (!data) {
  7078. $this.data("bs.dropdown", data = new Dropdown(this));
  7079. }
  7080. if ("string" == typeof type) {
  7081. data[type].call($this);
  7082. }
  7083. });
  7084. }
  7085. var backdrop = ".dropdown-backdrop";
  7086. var selector = '[data-toggle="dropdown"]';
  7087. var Dropdown = function(selector) {
  7088. $(selector).on("click.bs.dropdown", this.toggle);
  7089. };
  7090. Dropdown.VERSION = "3.3.0";
  7091. Dropdown.prototype.toggle = function(e) {
  7092. var $this = $(this);
  7093. if (!$this.is(".disabled, :disabled")) {
  7094. var $parent = getParent($this);
  7095. var isActive = $parent.hasClass("open");
  7096. if (clearMenus(), !isActive) {
  7097. if ("ontouchstart" in document.documentElement) {
  7098. if (!$parent.closest(".navbar-nav").length) {
  7099. $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on("click", clearMenus);
  7100. }
  7101. }
  7102. var args = {
  7103. relatedTarget : this
  7104. };
  7105. if ($parent.trigger(e = $.Event("show.bs.dropdown", args)), e.isDefaultPrevented()) {
  7106. return;
  7107. }
  7108. $this.trigger("focus").attr("aria-expanded", "true");
  7109. $parent.toggleClass("open").trigger("shown.bs.dropdown", args);
  7110. }
  7111. return false;
  7112. }
  7113. };
  7114. Dropdown.prototype.keydown = function(event) {
  7115. if (/(38|40|27|32)/.test(event.which)) {
  7116. var $this = $(this);
  7117. if (event.preventDefault(), event.stopPropagation(), !$this.is(".disabled, :disabled")) {
  7118. var $parent = getParent($this);
  7119. var isActive = $parent.hasClass("open");
  7120. if (!isActive && 27 != event.which || isActive && 27 == event.which) {
  7121. return 27 == event.which && $parent.find(selector).trigger("focus"), $this.trigger("click");
  7122. }
  7123. var desc = " li:not(.divider):visible a";
  7124. var $row = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc);
  7125. if ($row.length) {
  7126. var url = $row.index(event.target);
  7127. if (38 == event.which) {
  7128. if (url > 0) {
  7129. url--;
  7130. }
  7131. }
  7132. if (40 == event.which) {
  7133. if (url < $row.length - 1) {
  7134. url++;
  7135. }
  7136. }
  7137. if (!~url) {
  7138. url = 0;
  7139. }
  7140. $row.eq(url).trigger("focus");
  7141. }
  7142. }
  7143. }
  7144. };
  7145. var old = $.fn.dropdown;
  7146. $.fn.dropdown = setValue;
  7147. $.fn.dropdown.Constructor = Dropdown;
  7148. $.fn.dropdown.noConflict = function() {
  7149. return $.fn.dropdown = old, this;
  7150. };
  7151. $(document).on("click.bs.dropdown.data-api", clearMenus).on("click.bs.dropdown.data-api", ".dropdown form", function(event) {
  7152. event.stopPropagation();
  7153. }).on("click.bs.dropdown.data-api", selector, Dropdown.prototype.toggle).on("keydown.bs.dropdown.data-api", selector, Dropdown.prototype.keydown).on("keydown.bs.dropdown.data-api", '[role="menu"]', Dropdown.prototype.keydown).on("keydown.bs.dropdown.data-api", '[role="listbox"]', Dropdown.prototype.keydown);
  7154. }(jQuery), +function($) {
  7155. function init(options, value) {
  7156. return this.each(function() {
  7157. var $this = $(this);
  7158. var data = $this.data("bs.modal");
  7159. var about = $.extend({}, Modal.DEFAULTS, $this.data(), "object" == typeof options && options);
  7160. if (!data) {
  7161. $this.data("bs.modal", data = new Modal(this, about));
  7162. }
  7163. if ("string" == typeof options) {
  7164. data[options](value);
  7165. } else {
  7166. if (about.show) {
  7167. data.show(value);
  7168. }
  7169. }
  7170. });
  7171. }
  7172. var Modal = function(selector, options) {
  7173. this.options = options;
  7174. this.$body = $(document.body);
  7175. this.$element = $(selector);
  7176. this.$backdrop = this.isShown = null;
  7177. this.scrollbarWidth = 0;
  7178. if (this.options.remote) {
  7179. this.$element.find(".modal-content").load(this.options.remote, $.proxy(function() {
  7180. this.$element.trigger("loaded.bs.modal");
  7181. }, this));
  7182. }
  7183. };
  7184. Modal.VERSION = "3.3.0";
  7185. Modal.TRANSITION_DURATION = 300;
  7186. Modal.BACKDROP_TRANSITION_DURATION = 150;
  7187. Modal.DEFAULTS = {
  7188. backdrop : true,
  7189. keyboard : true,
  7190. show : true
  7191. };
  7192. Modal.prototype.toggle = function(callback) {
  7193. return this.isShown ? this.hide() : this.show(callback);
  7194. };
  7195. Modal.prototype.show = function(callback) {
  7196. var that = this;
  7197. var cycle = $.Event("show.bs.modal", {
  7198. relatedTarget : callback
  7199. });
  7200. this.$element.trigger(cycle);
  7201. if (!this.isShown) {
  7202. if (!cycle.isDefaultPrevented()) {
  7203. this.isShown = true;
  7204. this.checkScrollbar();
  7205. this.$body.addClass("modal-open");
  7206. this.setScrollbar();
  7207. this.escape();
  7208. this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', $.proxy(this.hide, this));
  7209. this.backdrop(function() {
  7210. var e = $.support.transition && that.$element.hasClass("fade");
  7211. if (!that.$element.parent().length) {
  7212. that.$element.appendTo(that.$body);
  7213. }
  7214. that.$element.show().scrollTop(0);
  7215. if (e) {
  7216. that.$element[0].offsetWidth;
  7217. }
  7218. that.$element.addClass("in").attr("aria-hidden", false);
  7219. that.enforceFocus();
  7220. var cycle = $.Event("shown.bs.modal", {
  7221. relatedTarget : callback
  7222. });
  7223. if (e) {
  7224. that.$element.find(".modal-dialog").one("bsTransitionEnd", function() {
  7225. that.$element.trigger("focus").trigger(cycle);
  7226. }).emulateTransitionEnd(Modal.TRANSITION_DURATION);
  7227. } else {
  7228. that.$element.trigger("focus").trigger(cycle);
  7229. }
  7230. });
  7231. }
  7232. }
  7233. };
  7234. Modal.prototype.hide = function(cycle) {
  7235. if (cycle) {
  7236. cycle.preventDefault();
  7237. }
  7238. cycle = $.Event("hide.bs.modal");
  7239. this.$element.trigger(cycle);
  7240. if (this.isShown) {
  7241. if (!cycle.isDefaultPrevented()) {
  7242. this.isShown = false;
  7243. this.escape();
  7244. $(document).off("focusin.bs.modal");
  7245. this.$element.removeClass("in").attr("aria-hidden", true).off("click.dismiss.bs.modal");
  7246. if ($.support.transition && this.$element.hasClass("fade")) {
  7247. this.$element.one("bsTransitionEnd", $.proxy(this.hideModal, this)).emulateTransitionEnd(Modal.TRANSITION_DURATION);
  7248. } else {
  7249. this.hideModal();
  7250. }
  7251. }
  7252. }
  7253. };
  7254. Modal.prototype.enforceFocus = function() {
  7255. $(document).off("focusin.bs.modal").on("focusin.bs.modal", $.proxy(function(e) {
  7256. if (!(this.$element[0] === e.target)) {
  7257. if (!this.$element.has(e.target).length) {
  7258. this.$element.trigger("focus");
  7259. }
  7260. }
  7261. }, this));
  7262. };
  7263. Modal.prototype.escape = function() {
  7264. if (this.isShown && this.options.keyboard) {
  7265. this.$element.on("keydown.dismiss.bs.modal", $.proxy(function(event) {
  7266. if (27 == event.which) {
  7267. this.hide();
  7268. }
  7269. }, this));
  7270. } else {
  7271. if (!this.isShown) {
  7272. this.$element.off("keydown.dismiss.bs.modal");
  7273. }
  7274. }
  7275. };
  7276. Modal.prototype.hideModal = function() {
  7277. var data = this;
  7278. this.$element.hide();
  7279. this.backdrop(function() {
  7280. data.$body.removeClass("modal-open");
  7281. data.resetScrollbar();
  7282. data.$element.trigger("hidden.bs.modal");
  7283. });
  7284. };
  7285. Modal.prototype.removeBackdrop = function() {
  7286. if (this.$backdrop) {
  7287. this.$backdrop.remove();
  7288. }
  7289. this.$backdrop = null;
  7290. };
  7291. Modal.prototype.backdrop = function(callback) {
  7292. var that = this;
  7293. var animate = this.$element.hasClass("fade") ? "fade" : "";
  7294. if (this.isShown && this.options.backdrop) {
  7295. var doAnimate = $.support.transition && animate;
  7296. if (this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />').prependTo(this.$element).on("click.dismiss.bs.modal", $.proxy(function(e) {
  7297. if (e.target === e.currentTarget) {
  7298. if ("static" == this.options.backdrop) {
  7299. this.$element[0].focus.call(this.$element[0]);
  7300. } else {
  7301. this.hide.call(this);
  7302. }
  7303. }
  7304. }, this)), doAnimate && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), !callback) {
  7305. return;
  7306. }
  7307. if (doAnimate) {
  7308. this.$backdrop.one("bsTransitionEnd", callback).emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION);
  7309. } else {
  7310. callback();
  7311. }
  7312. } else {
  7313. if (!this.isShown && this.$backdrop) {
  7314. this.$backdrop.removeClass("in");
  7315. var removeElement = function() {
  7316. that.removeBackdrop();
  7317. if (callback) {
  7318. callback();
  7319. }
  7320. };
  7321. if ($.support.transition && this.$element.hasClass("fade")) {
  7322. this.$backdrop.one("bsTransitionEnd", removeElement).emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION);
  7323. } else {
  7324. removeElement();
  7325. }
  7326. } else {
  7327. if (callback) {
  7328. callback();
  7329. }
  7330. }
  7331. }
  7332. };
  7333. Modal.prototype.checkScrollbar = function() {
  7334. this.scrollbarWidth = this.measureScrollbar();
  7335. };
  7336. Modal.prototype.setScrollbar = function() {
  7337. var top = parseInt(this.$body.css("padding-right") || 0, 10);
  7338. if (this.scrollbarWidth) {
  7339. this.$body.css("padding-right", top + this.scrollbarWidth);
  7340. }
  7341. };
  7342. Modal.prototype.resetScrollbar = function() {
  7343. this.$body.css("padding-right", "");
  7344. };
  7345. Modal.prototype.measureScrollbar = function() {
  7346. if (document.body.clientWidth >= window.innerWidth) {
  7347. return 0;
  7348. }
  7349. var n = document.createElement("div");
  7350. n.className = "modal-scrollbar-measure";
  7351. this.$body.append(n);
  7352. var e = n.offsetWidth - n.clientWidth;
  7353. return this.$body[0].removeChild(n), e;
  7354. };
  7355. var old = $.fn.modal;
  7356. $.fn.modal = init;
  7357. $.fn.modal.Constructor = Modal;
  7358. $.fn.modal.noConflict = function() {
  7359. return $.fn.modal = old, this;
  7360. };
  7361. $(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function(types) {
  7362. var $this = $(this);
  7363. var href = $this.attr("href");
  7364. var self = $($this.attr("data-target") || href && href.replace(/.*(?=#[^\s]+$)/, ""));
  7365. var entityType = self.data("bs.modal") ? "toggle" : $.extend({
  7366. remote : !/#/.test(href) && href
  7367. }, self.data(), $this.data());
  7368. if ($this.is("a")) {
  7369. types.preventDefault();
  7370. }
  7371. self.one("show.bs.modal", function(event) {
  7372. if (!event.isDefaultPrevented()) {
  7373. self.one("hidden.bs.modal", function() {
  7374. if ($this.is(":visible")) {
  7375. $this.trigger("focus");
  7376. }
  7377. });
  7378. }
  7379. });
  7380. init.call(self, entityType, this);
  7381. });
  7382. }(jQuery), +function($) {
  7383. function initialize(arg) {
  7384. return this.each(function() {
  7385. var $this = $(this);
  7386. var data = $this.data("bs.tooltip");
  7387. var options = "object" == typeof arg && arg;
  7388. var name = options && options.selector;
  7389. if (data || "destroy" != arg) {
  7390. if (name) {
  7391. if (!data) {
  7392. $this.data("bs.tooltip", data = {});
  7393. }
  7394. if (!data[name]) {
  7395. data[name] = new Tooltip(this, options);
  7396. }
  7397. } else {
  7398. if (!data) {
  7399. $this.data("bs.tooltip", data = new Tooltip(this, options));
  7400. }
  7401. }
  7402. if ("string" == typeof arg) {
  7403. data[arg]();
  7404. }
  7405. }
  7406. });
  7407. }
  7408. var Tooltip = function(selector, options) {
  7409. this.type = this.options = this.enabled = this.timeout = this.hoverState = this.$element = null;
  7410. this.init("tooltip", selector, options);
  7411. };
  7412. Tooltip.VERSION = "3.3.0";
  7413. Tooltip.TRANSITION_DURATION = 150;
  7414. Tooltip.DEFAULTS = {
  7415. animation : true,
  7416. placement : "top",
  7417. selector : false,
  7418. template : '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
  7419. trigger : "hover focus",
  7420. title : "",
  7421. delay : 0,
  7422. html : false,
  7423. container : false,
  7424. viewport : {
  7425. selector : "body",
  7426. padding : 0
  7427. }
  7428. };
  7429. Tooltip.prototype.init = function(type, element, options) {
  7430. this.enabled = true;
  7431. this.type = type;
  7432. this.$element = $(element);
  7433. this.options = this.getOptions(options);
  7434. this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport);
  7435. var params = this.options.trigger.split(" ");
  7436. var l = params.length;
  7437. for (;l--;) {
  7438. var param = params[l];
  7439. if ("click" == param) {
  7440. this.$element.on("click." + this.type, this.options.selector, $.proxy(this.toggle, this));
  7441. } else {
  7442. if ("manual" != param) {
  7443. var eventIn = "hover" == param ? "mouseenter" : "focusin";
  7444. var eventOut = "hover" == param ? "mouseleave" : "focusout";
  7445. this.$element.on(eventIn + "." + this.type, this.options.selector, $.proxy(this.enter, this));
  7446. this.$element.on(eventOut + "." + this.type, this.options.selector, $.proxy(this.leave, this));
  7447. }
  7448. }
  7449. }
  7450. if (this.options.selector) {
  7451. this._options = $.extend({}, this.options, {
  7452. trigger : "manual",
  7453. selector : ""
  7454. });
  7455. } else {
  7456. this.fixTitle();
  7457. }
  7458. };
  7459. Tooltip.prototype.getDefaults = function() {
  7460. return Tooltip.DEFAULTS;
  7461. };
  7462. Tooltip.prototype.getOptions = function(options) {
  7463. return options = $.extend({}, this.getDefaults(), this.$element.data(), options), options.delay && ("number" == typeof options.delay && (options.delay = {
  7464. show : options.delay,
  7465. hide : options.delay
  7466. })), options;
  7467. };
  7468. Tooltip.prototype.getDelegateOptions = function() {
  7469. var flags = {};
  7470. var defaults = this.getDefaults();
  7471. return this._options && $.each(this._options, function(key, value) {
  7472. if (defaults[key] != value) {
  7473. flags[key] = value;
  7474. }
  7475. }), flags;
  7476. };
  7477. Tooltip.prototype.enter = function(obj) {
  7478. var options = obj instanceof this.constructor ? obj : $(obj.currentTarget).data("bs." + this.type);
  7479. return options && (options.$tip && options.$tip.is(":visible")) ? void(options.hoverState = "in") : (options || (options = new this.constructor(obj.currentTarget, this.getDelegateOptions()), $(obj.currentTarget).data("bs." + this.type, options)), clearTimeout(options.timeout), options.hoverState = "in", options.options.delay && options.options.delay.show ? void(options.timeout = setTimeout(function() {
  7480. if ("in" == options.hoverState) {
  7481. options.show();
  7482. }
  7483. }, options.options.delay.show)) : options.show());
  7484. };
  7485. Tooltip.prototype.leave = function(obj) {
  7486. var self = obj instanceof this.constructor ? obj : $(obj.currentTarget).data("bs." + this.type);
  7487. return self || (self = new this.constructor(obj.currentTarget, this.getDelegateOptions()), $(obj.currentTarget).data("bs." + this.type, self)), clearTimeout(self.timeout), self.hoverState = "out", self.options.delay && self.options.delay.hide ? void(self.timeout = setTimeout(function() {
  7488. if ("out" == self.hoverState) {
  7489. self.hide();
  7490. }
  7491. }, self.options.delay.hide)) : self.hide();
  7492. };
  7493. Tooltip.prototype.show = function() {
  7494. var cycle = $.Event("show.bs." + this.type);
  7495. if (this.hasContent() && this.enabled) {
  7496. this.$element.trigger(cycle);
  7497. var d = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]);
  7498. if (cycle.isDefaultPrevented() || !d) {
  7499. return;
  7500. }
  7501. var self = this;
  7502. var $tip = this.tip();
  7503. var tag = this.getUID(this.type);
  7504. this.setContent();
  7505. $tip.attr("id", tag);
  7506. this.$element.attr("aria-describedby", tag);
  7507. if (this.options.animation) {
  7508. $tip.addClass("fade");
  7509. }
  7510. var placement = "function" == typeof this.options.placement ? this.options.placement.call(this, $tip[0], this.$element[0]) : this.options.placement;
  7511. var autoToken = /\s?auto?\s?/i;
  7512. var autoPlace = autoToken.test(placement);
  7513. if (autoPlace) {
  7514. placement = placement.replace(autoToken, "") || "top";
  7515. }
  7516. $tip.detach().css({
  7517. top : 0,
  7518. left : 0,
  7519. display : "block"
  7520. }).addClass(placement).data("bs." + this.type, this);
  7521. if (this.options.container) {
  7522. $tip.appendTo(this.options.container);
  7523. } else {
  7524. $tip.insertAfter(this.$element);
  7525. }
  7526. var pos = this.getPosition();
  7527. var actualWidth = $tip[0].offsetWidth;
  7528. var actualHeight = $tip[0].offsetHeight;
  7529. if (autoPlace) {
  7530. var orgPlacement = placement;
  7531. var element = this.options.container ? $(this.options.container) : this.$element.parent();
  7532. var position = this.getPosition(element);
  7533. placement = "bottom" == placement && pos.bottom + actualHeight > position.bottom ? "top" : "top" == placement && pos.top - actualHeight < position.top ? "bottom" : "right" == placement && pos.right + actualWidth > position.width ? "left" : "left" == placement && pos.left - actualWidth < position.left ? "right" : placement;
  7534. $tip.removeClass(orgPlacement).addClass(placement);
  7535. }
  7536. var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight);
  7537. this.applyPlacement(calculatedOffset, placement);
  7538. var complete = function() {
  7539. var text = self.hoverState;
  7540. self.$element.trigger("shown.bs." + self.type);
  7541. self.hoverState = null;
  7542. if ("out" == text) {
  7543. self.leave(self);
  7544. }
  7545. };
  7546. if ($.support.transition && this.$tip.hasClass("fade")) {
  7547. $tip.one("bsTransitionEnd", complete).emulateTransitionEnd(Tooltip.TRANSITION_DURATION);
  7548. } else {
  7549. complete();
  7550. }
  7551. }
  7552. };
  7553. Tooltip.prototype.applyPlacement = function(offset, placement) {
  7554. var $tip = this.tip();
  7555. var w = $tip[0].offsetWidth;
  7556. var height = $tip[0].offsetHeight;
  7557. var marginTop = parseInt($tip.css("margin-top"), 10);
  7558. var marginLeft = parseInt($tip.css("margin-left"), 10);
  7559. if (isNaN(marginTop)) {
  7560. marginTop = 0;
  7561. }
  7562. if (isNaN(marginLeft)) {
  7563. marginLeft = 0;
  7564. }
  7565. offset.top = offset.top + marginTop;
  7566. offset.left = offset.left + marginLeft;
  7567. $.offset.setOffset($tip[0], $.extend({
  7568. using : function(props) {
  7569. $tip.css({
  7570. top : Math.round(props.top),
  7571. left : Math.round(props.left)
  7572. });
  7573. }
  7574. }, offset), 0);
  7575. $tip.addClass("in");
  7576. var x = $tip[0].offsetWidth;
  7577. var actualHeight = $tip[0].offsetHeight;
  7578. if ("top" == placement) {
  7579. if (actualHeight != height) {
  7580. offset.top = offset.top + height - actualHeight;
  7581. }
  7582. }
  7583. var pos = this.getViewportAdjustedDelta(placement, offset, x, actualHeight);
  7584. if (pos.left) {
  7585. offset.left += pos.left;
  7586. } else {
  7587. offset.top += pos.top;
  7588. }
  7589. var isHorizontal = /top|bottom/.test(placement);
  7590. var _position = isHorizontal ? 2 * pos.left - w + x : 2 * pos.top - height + actualHeight;
  7591. var sizingDomProperty = isHorizontal ? "offsetWidth" : "offsetHeight";
  7592. $tip.offset(offset);
  7593. this.replaceArrow(_position, $tip[0][sizingDomProperty], isHorizontal);
  7594. };
  7595. Tooltip.prototype.replaceArrow = function(position, dimension, horizontal) {
  7596. this.arrow().css(horizontal ? "left" : "top", 50 * (1 - position / dimension) + "%").css(horizontal ? "top" : "left", "");
  7597. };
  7598. Tooltip.prototype.setContent = function() {
  7599. var $tip = this.tip();
  7600. var title = this.getTitle();
  7601. $tip.find(".tooltip-inner")[this.options.html ? "html" : "text"](title);
  7602. $tip.removeClass("fade in top bottom left right");
  7603. };
  7604. Tooltip.prototype.hide = function(success) {
  7605. function complete() {
  7606. if ("in" != self.hoverState) {
  7607. $tip.detach();
  7608. }
  7609. self.$element.removeAttr("aria-describedby").trigger("hidden.bs." + self.type);
  7610. if (success) {
  7611. success();
  7612. }
  7613. }
  7614. var self = this;
  7615. var $tip = this.tip();
  7616. var cycle = $.Event("hide.bs." + this.type);
  7617. return this.$element.trigger(cycle), cycle.isDefaultPrevented() ? void 0 : ($tip.removeClass("in"), $.support.transition && this.$tip.hasClass("fade") ? $tip.one("bsTransitionEnd", complete).emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : complete(), this.hoverState = null, this);
  7618. };
  7619. Tooltip.prototype.fixTitle = function() {
  7620. var $e = this.$element;
  7621. if ($e.attr("title") || "string" != typeof $e.attr("data-original-title")) {
  7622. $e.attr("data-original-title", $e.attr("title") || "").attr("title", "");
  7623. }
  7624. };
  7625. Tooltip.prototype.hasContent = function() {
  7626. return this.getTitle();
  7627. };
  7628. Tooltip.prototype.getPosition = function($element) {
  7629. $element = $element || this.$element;
  7630. var el = $element[0];
  7631. var bShow = "BODY" == el.tagName;
  7632. var rect = el.getBoundingClientRect();
  7633. if (null == rect.width) {
  7634. rect = $.extend({}, rect, {
  7635. width : rect.right - rect.left,
  7636. height : rect.bottom - rect.top
  7637. });
  7638. }
  7639. var platformVersions = bShow ? {
  7640. top : 0,
  7641. left : 0
  7642. } : $element.offset();
  7643. var copy = {
  7644. scroll : bShow ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop()
  7645. };
  7646. var newOpts = bShow ? {
  7647. width : $(window).width(),
  7648. height : $(window).height()
  7649. } : null;
  7650. return $.extend({}, rect, copy, newOpts, platformVersions);
  7651. };
  7652. Tooltip.prototype.getCalculatedOffset = function(str, pos, actualWidth, actualHeight) {
  7653. return "bottom" == str ? {
  7654. top : pos.top + pos.height,
  7655. left : pos.left + pos.width / 2 - actualWidth / 2
  7656. } : "top" == str ? {
  7657. top : pos.top - actualHeight,
  7658. left : pos.left + pos.width / 2 - actualWidth / 2
  7659. } : "left" == str ? {
  7660. top : pos.top + pos.height / 2 - actualHeight / 2,
  7661. left : pos.left - actualWidth
  7662. } : {
  7663. top : pos.top + pos.height / 2 - actualHeight / 2,
  7664. left : pos.left + pos.width
  7665. };
  7666. };
  7667. Tooltip.prototype.getViewportAdjustedDelta = function(placement, layout, v00, value) {
  7668. var result = {
  7669. top : 0,
  7670. left : 0
  7671. };
  7672. if (!this.$viewport) {
  7673. return result;
  7674. }
  7675. var bounce = this.options.viewport && this.options.viewport.padding || 0;
  7676. var p = this.getPosition(this.$viewport);
  7677. if (/right|left/.test(placement)) {
  7678. var y = layout.top - bounce - p.scroll;
  7679. var tval = layout.top + bounce - p.scroll + value;
  7680. if (y < p.top) {
  7681. result.top = p.top - y;
  7682. } else {
  7683. if (tval > p.top + p.height) {
  7684. result.top = p.top + p.height - tval;
  7685. }
  7686. }
  7687. } else {
  7688. var x = layout.left - bounce;
  7689. var imageWidth = layout.left + bounce + v00;
  7690. if (x < p.left) {
  7691. result.left = p.left - x;
  7692. } else {
  7693. if (imageWidth > p.width) {
  7694. result.left = p.left + p.width - imageWidth;
  7695. }
  7696. }
  7697. }
  7698. return result;
  7699. };
  7700. Tooltip.prototype.getTitle = function() {
  7701. var a;
  7702. var $e = this.$element;
  7703. var o = this.options;
  7704. return a = $e.attr("data-original-title") || ("function" == typeof o.title ? o.title.call($e[0]) : o.title);
  7705. };
  7706. Tooltip.prototype.getUID = function(id) {
  7707. do {
  7708. id += ~~(1E6 * Math.random());
  7709. } while (document.getElementById(id));
  7710. return id;
  7711. };
  7712. Tooltip.prototype.tip = function() {
  7713. return this.$tip = this.$tip || $(this.options.template);
  7714. };
  7715. Tooltip.prototype.arrow = function() {
  7716. return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow");
  7717. };
  7718. Tooltip.prototype.enable = function() {
  7719. this.enabled = true;
  7720. };
  7721. Tooltip.prototype.disable = function() {
  7722. this.enabled = false;
  7723. };
  7724. Tooltip.prototype.toggleEnabled = function() {
  7725. this.enabled = !this.enabled;
  7726. };
  7727. Tooltip.prototype.toggle = function(e) {
  7728. var node = this;
  7729. if (e) {
  7730. node = $(e.currentTarget).data("bs." + this.type);
  7731. if (!node) {
  7732. node = new this.constructor(e.currentTarget, this.getDelegateOptions());
  7733. $(e.currentTarget).data("bs." + this.type, node);
  7734. }
  7735. }
  7736. if (node.tip().hasClass("in")) {
  7737. node.leave(node);
  7738. } else {
  7739. node.enter(node);
  7740. }
  7741. };
  7742. Tooltip.prototype.destroy = function() {
  7743. var that = this;
  7744. clearTimeout(this.timeout);
  7745. this.hide(function() {
  7746. that.$element.off("." + that.type).removeData("bs." + that.type);
  7747. });
  7748. };
  7749. var old = $.fn.tooltip;
  7750. $.fn.tooltip = initialize;
  7751. $.fn.tooltip.Constructor = Tooltip;
  7752. $.fn.tooltip.noConflict = function() {
  7753. return $.fn.tooltip = old, this;
  7754. };
  7755. }(jQuery), +function($) {
  7756. function initialize(arg) {
  7757. return this.each(function() {
  7758. var $this = $(this);
  7759. var data = $this.data("bs.popover");
  7760. var options = "object" == typeof arg && arg;
  7761. var name = options && options.selector;
  7762. if (data || "destroy" != arg) {
  7763. if (name) {
  7764. if (!data) {
  7765. $this.data("bs.popover", data = {});
  7766. }
  7767. if (!data[name]) {
  7768. data[name] = new Popover(this, options);
  7769. }
  7770. } else {
  7771. if (!data) {
  7772. $this.data("bs.popover", data = new Popover(this, options));
  7773. }
  7774. }
  7775. if ("string" == typeof arg) {
  7776. data[arg]();
  7777. }
  7778. }
  7779. });
  7780. }
  7781. var Popover = function(selector, options) {
  7782. this.init("popover", selector, options);
  7783. };
  7784. if (!$.fn.tooltip) {
  7785. throw new Error("Popover requires tooltip.js");
  7786. }
  7787. Popover.VERSION = "3.3.0";
  7788. Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
  7789. placement : "right",
  7790. trigger : "click",
  7791. content : "",
  7792. template : '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
  7793. });
  7794. Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype);
  7795. Popover.prototype.constructor = Popover;
  7796. Popover.prototype.getDefaults = function() {
  7797. return Popover.DEFAULTS;
  7798. };
  7799. Popover.prototype.setContent = function() {
  7800. var $tip = this.tip();
  7801. var title = this.getTitle();
  7802. var err = this.getContent();
  7803. $tip.find(".popover-title")[this.options.html ? "html" : "text"](title);
  7804. $tip.find(".popover-content").children().detach().end()[this.options.html ? "string" == typeof err ? "html" : "append" : "text"](err);
  7805. $tip.removeClass("fade top bottom left right in");
  7806. if (!$tip.find(".popover-title").html()) {
  7807. $tip.find(".popover-title").hide();
  7808. }
  7809. };
  7810. Popover.prototype.hasContent = function() {
  7811. return this.getTitle() || this.getContent();
  7812. };
  7813. Popover.prototype.getContent = function() {
  7814. var $e = this.$element;
  7815. var o = this.options;
  7816. return $e.attr("data-content") || ("function" == typeof o.content ? o.content.call($e[0]) : o.content);
  7817. };
  7818. Popover.prototype.arrow = function() {
  7819. return this.$arrow = this.$arrow || this.tip().find(".arrow");
  7820. };
  7821. Popover.prototype.tip = function() {
  7822. return this.$tip || (this.$tip = $(this.options.template)), this.$tip;
  7823. };
  7824. var old = $.fn.popover;
  7825. $.fn.popover = initialize;
  7826. $.fn.popover.Constructor = Popover;
  7827. $.fn.popover.noConflict = function() {
  7828. return $.fn.popover = old, this;
  7829. };
  7830. }(jQuery), +function($) {
  7831. function ScrollSpy(selector, options) {
  7832. var className = $.proxy(this.process, this);
  7833. this.$body = $("body");
  7834. this.$scrollElement = $($(selector).is("body") ? window : selector);
  7835. this.options = $.extend({}, ScrollSpy.DEFAULTS, options);
  7836. this.selector = (this.options.target || "") + " .nav li > a";
  7837. this.offsets = [];
  7838. this.targets = [];
  7839. this.activeTarget = null;
  7840. this.scrollHeight = 0;
  7841. this.$scrollElement.on("scroll.bs.scrollspy", className);
  7842. this.refresh();
  7843. this.process();
  7844. }
  7845. function init(arg) {
  7846. return this.each(function() {
  7847. var $this = $(this);
  7848. var data = $this.data("bs.scrollspy");
  7849. var options = "object" == typeof arg && arg;
  7850. if (!data) {
  7851. $this.data("bs.scrollspy", data = new ScrollSpy(this, options));
  7852. }
  7853. if ("string" == typeof arg) {
  7854. data[arg]();
  7855. }
  7856. });
  7857. }
  7858. ScrollSpy.VERSION = "3.3.0";
  7859. ScrollSpy.DEFAULTS = {
  7860. offset : 10
  7861. };
  7862. ScrollSpy.prototype.getScrollHeight = function() {
  7863. return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight);
  7864. };
  7865. ScrollSpy.prototype.refresh = function() {
  7866. var i = "offset";
  7867. var nub_height = 0;
  7868. if (!$.isWindow(this.$scrollElement[0])) {
  7869. i = "position";
  7870. nub_height = this.$scrollElement.scrollTop();
  7871. }
  7872. this.offsets = [];
  7873. this.targets = [];
  7874. this.scrollHeight = this.getScrollHeight();
  7875. var self = this;
  7876. this.$body.find(this.selector).map(function() {
  7877. var $el = $(this);
  7878. var href = $el.data("target") || $el.attr("href");
  7879. var codeSegments = /^#./.test(href) && $(href);
  7880. return codeSegments && (codeSegments.length && (codeSegments.is(":visible") && [[codeSegments[i]().top + nub_height, href]])) || null;
  7881. }).sort(function(mat0, mat1) {
  7882. return mat0[0] - mat1[0];
  7883. }).each(function() {
  7884. self.offsets.push(this[0]);
  7885. self.targets.push(this[1]);
  7886. });
  7887. };
  7888. ScrollSpy.prototype.process = function() {
  7889. var i;
  7890. var scrollTop = this.$scrollElement.scrollTop() + this.options.offset;
  7891. var offset = this.getScrollHeight();
  7892. var maxScroll = this.options.offset + offset - this.$scrollElement.height();
  7893. var offsets = this.offsets;
  7894. var targets = this.targets;
  7895. var activeTarget = this.activeTarget;
  7896. if (this.scrollHeight != offset && this.refresh(), scrollTop >= maxScroll) {
  7897. return activeTarget != (i = targets[targets.length - 1]) && this.activate(i);
  7898. }
  7899. if (activeTarget && scrollTop < offsets[0]) {
  7900. return this.activeTarget = null, this.clear();
  7901. }
  7902. i = offsets.length;
  7903. for (;i--;) {
  7904. if (activeTarget != targets[i]) {
  7905. if (scrollTop >= offsets[i]) {
  7906. if (!offsets[i + 1] || scrollTop <= offsets[i + 1]) {
  7907. this.activate(targets[i]);
  7908. }
  7909. }
  7910. }
  7911. }
  7912. };
  7913. ScrollSpy.prototype.activate = function(target) {
  7914. this.activeTarget = target;
  7915. this.clear();
  7916. var selector = this.selector + '[data-target="' + target + '"],' + this.selector + '[href="' + target + '"]';
  7917. var active = $(selector).parents("li").addClass("active");
  7918. if (active.parent(".dropdown-menu").length) {
  7919. active = active.closest("li.dropdown").addClass("active");
  7920. }
  7921. active.trigger("activate.bs.scrollspy");
  7922. };
  7923. ScrollSpy.prototype.clear = function() {
  7924. $(this.selector).parentsUntil(this.options.target, ".active").removeClass("active");
  7925. };
  7926. var old = $.fn.scrollspy;
  7927. $.fn.scrollspy = init;
  7928. $.fn.scrollspy.Constructor = ScrollSpy;
  7929. $.fn.scrollspy.noConflict = function() {
  7930. return $.fn.scrollspy = old, this;
  7931. };
  7932. $(window).on("load.bs.scrollspy.data-api", function() {
  7933. $('[data-spy="scroll"]').each(function() {
  7934. var self = $(this);
  7935. init.call(self, self.data());
  7936. });
  7937. });
  7938. }(jQuery), +function($) {
  7939. function init(selector) {
  7940. return this.each(function() {
  7941. var $this = $(this);
  7942. var data = $this.data("bs.tab");
  7943. if (!data) {
  7944. $this.data("bs.tab", data = new Tab(this));
  7945. }
  7946. if ("string" == typeof selector) {
  7947. data[selector]();
  7948. }
  7949. });
  7950. }
  7951. var Tab = function(selector) {
  7952. this.element = $(selector);
  7953. };
  7954. Tab.VERSION = "3.3.0";
  7955. Tab.TRANSITION_DURATION = 150;
  7956. Tab.prototype.show = function() {
  7957. var $this = this.element;
  7958. var $ul = $this.closest("ul:not(.dropdown-menu)");
  7959. var selector = $this.data("target");
  7960. if (selector || (selector = $this.attr("href"), selector = selector && selector.replace(/.*(?=#[^\s]*$)/, "")), !$this.parent("li").hasClass("active")) {
  7961. var elm = $ul.find(".active:last a");
  7962. var cycle = $.Event("hide.bs.tab", {
  7963. relatedTarget : $this[0]
  7964. });
  7965. var fix = $.Event("show.bs.tab", {
  7966. relatedTarget : elm[0]
  7967. });
  7968. if (elm.trigger(cycle), $this.trigger(fix), !fix.isDefaultPrevented() && !cycle.isDefaultPrevented()) {
  7969. var $target = $(selector);
  7970. this.activate($this.closest("li"), $ul);
  7971. this.activate($target, $target.parent(), function() {
  7972. elm.trigger({
  7973. type : "hidden.bs.tab",
  7974. relatedTarget : $this[0]
  7975. });
  7976. $this.trigger({
  7977. type : "shown.bs.tab",
  7978. relatedTarget : elm[0]
  7979. });
  7980. });
  7981. }
  7982. }
  7983. };
  7984. Tab.prototype.activate = function(element, container, callback) {
  7985. function next() {
  7986. $active.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", false);
  7987. element.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded", true);
  7988. if (showAddButton) {
  7989. element[0].offsetWidth;
  7990. element.addClass("in");
  7991. } else {
  7992. element.removeClass("fade");
  7993. }
  7994. if (element.parent(".dropdown-menu")) {
  7995. element.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", true);
  7996. }
  7997. if (callback) {
  7998. callback();
  7999. }
  8000. }
  8001. var $active = container.find("> .active");
  8002. var showAddButton = callback && ($.support.transition && ($active.length && $active.hasClass("fade") || !!container.find("> .fade").length));
  8003. if ($active.length && showAddButton) {
  8004. $active.one("bsTransitionEnd", next).emulateTransitionEnd(Tab.TRANSITION_DURATION);
  8005. } else {
  8006. next();
  8007. }
  8008. $active.removeClass("in");
  8009. };
  8010. var old = $.fn.tab;
  8011. $.fn.tab = init;
  8012. $.fn.tab.Constructor = Tab;
  8013. $.fn.tab.noConflict = function() {
  8014. return $.fn.tab = old, this;
  8015. };
  8016. var stop = function(event) {
  8017. event.preventDefault();
  8018. init.call($(this), "show");
  8019. };
  8020. $(document).on("click.bs.tab.data-api", '[data-toggle="tab"]', stop).on("click.bs.tab.data-api", '[data-toggle="pill"]', stop);
  8021. }(jQuery), +function($) {
  8022. function init(arg) {
  8023. return this.each(function() {
  8024. var $this = $(this);
  8025. var data = $this.data("bs.affix");
  8026. var options = "object" == typeof arg && arg;
  8027. if (!data) {
  8028. $this.data("bs.affix", data = new Affix(this, options));
  8029. }
  8030. if ("string" == typeof arg) {
  8031. data[arg]();
  8032. }
  8033. });
  8034. }
  8035. var Affix = function(selector, options) {
  8036. this.options = $.extend({}, Affix.DEFAULTS, options);
  8037. this.$target = $(this.options.target).on("scroll.bs.affix.data-api", $.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", $.proxy(this.checkPositionWithEventLoop, this));
  8038. this.$element = $(selector);
  8039. this.affixed = this.unpin = this.pinnedOffset = null;
  8040. this.checkPosition();
  8041. };
  8042. Affix.VERSION = "3.3.0";
  8043. Affix.RESET = "affix affix-top affix-bottom";
  8044. Affix.DEFAULTS = {
  8045. offset : 0,
  8046. target : window
  8047. };
  8048. Affix.prototype.getState = function(value, el, element, v12) {
  8049. var scrollTop = this.$target.scrollTop();
  8050. var position = this.$element.offset();
  8051. var from = this.$target.height();
  8052. if (null != element && "top" == this.affixed) {
  8053. return element > scrollTop ? "top" : false;
  8054. }
  8055. if ("bottom" == this.affixed) {
  8056. return null != element ? scrollTop + this.unpin <= position.top ? false : "bottom" : value - v12 >= scrollTop + from ? false : "bottom";
  8057. }
  8058. var hasIndex = null == this.affixed;
  8059. var current = hasIndex ? scrollTop : position.top;
  8060. var i = hasIndex ? from : el;
  8061. return null != element && element >= current ? "top" : null != v12 && current + i >= value - v12 ? "bottom" : false;
  8062. };
  8063. Affix.prototype.getPinnedOffset = function() {
  8064. if (this.pinnedOffset) {
  8065. return this.pinnedOffset;
  8066. }
  8067. this.$element.removeClass(Affix.RESET).addClass("affix");
  8068. var scrollTop = this.$target.scrollTop();
  8069. var position = this.$element.offset();
  8070. return this.pinnedOffset = position.top - scrollTop;
  8071. };
  8072. Affix.prototype.checkPositionWithEventLoop = function() {
  8073. setTimeout($.proxy(this.checkPosition, this), 1);
  8074. };
  8075. Affix.prototype.checkPosition = function() {
  8076. if (this.$element.is(":visible")) {
  8077. var failuresLink = this.$element.height();
  8078. var n = this.options.offset;
  8079. var a = n.top;
  8080. var b = n.bottom;
  8081. var udataCur = $("body").height();
  8082. if ("object" != typeof n) {
  8083. b = a = n;
  8084. }
  8085. if ("function" == typeof a) {
  8086. a = n.top(this.$element);
  8087. }
  8088. if ("function" == typeof b) {
  8089. b = n.bottom(this.$element);
  8090. }
  8091. var affix = this.getState(udataCur, failuresLink, a, b);
  8092. if (this.affixed != affix) {
  8093. if (null != this.unpin) {
  8094. this.$element.css("top", "");
  8095. }
  8096. var affixType = "affix" + (affix ? "-" + affix : "");
  8097. var cycle = $.Event(affixType + ".bs.affix");
  8098. if (this.$element.trigger(cycle), cycle.isDefaultPrevented()) {
  8099. return;
  8100. }
  8101. this.affixed = affix;
  8102. this.unpin = "bottom" == affix ? this.getPinnedOffset() : null;
  8103. this.$element.removeClass(Affix.RESET).addClass(affixType).trigger(affixType.replace("affix", "affixed") + ".bs.affix");
  8104. }
  8105. if ("bottom" == affix) {
  8106. this.$element.offset({
  8107. top : udataCur - failuresLink - b
  8108. });
  8109. }
  8110. }
  8111. };
  8112. var old = $.fn.affix;
  8113. $.fn.affix = init;
  8114. $.fn.affix.Constructor = Affix;
  8115. $.fn.affix.noConflict = function() {
  8116. return $.fn.affix = old, this;
  8117. };
  8118. $(window).on("load", function() {
  8119. $('[data-spy="affix"]').each(function() {
  8120. var self = $(this);
  8121. var options = self.data();
  8122. options.offset = options.offset || {};
  8123. if (null != options.offsetBottom) {
  8124. options.offset.bottom = options.offsetBottom;
  8125. }
  8126. if (null != options.offsetTop) {
  8127. options.offset.top = options.offsetTop;
  8128. }
  8129. init.call(self, options);
  8130. });
  8131. });
  8132. }(jQuery);
  8133. (function(factory) {
  8134. if ("function" == typeof define && define.amd) {
  8135. define(["jquery"], factory);
  8136. } else {
  8137. if ("object" == typeof exports) {
  8138. factory(require("jquery"));
  8139. } else {
  8140. factory(window.jQuery || window.Zepto);
  8141. }
  8142. }
  8143. })(function($) {
  8144. var mfp;
  8145. var _prevStatus;
  8146. var _body;
  8147. var _document;
  8148. var _prevContentType;
  8149. var cls;
  8150. var openElement;
  8151. var CLOSE_EVENT = "Close";
  8152. var BEFORE_CLOSE_EVENT = "BeforeClose";
  8153. var AFTER_CLOSE_EVENT = "AfterClose";
  8154. var BEFORE_APPEND_EVENT = "BeforeAppend";
  8155. var MARKUP_PARSE_EVENT = "MarkupParse";
  8156. var OPEN_EVENT = "Open";
  8157. var CHANGE_EVENT = "Change";
  8158. var NS = "mfp";
  8159. var EVENT_NS = "." + NS;
  8160. var READY_CLASS = "mfp-ready";
  8161. var REMOVING_CLASS = "mfp-removing";
  8162. var PREVENT_CLOSE_CLASS = "mfp-prevent-close";
  8163. var MagnificPopup = function() {
  8164. };
  8165. var _isJQ = !!window.jQuery;
  8166. var _window = $(window);
  8167. var _mfpOn = function(name, f) {
  8168. mfp.ev.on(NS + name + EVENT_NS, f);
  8169. };
  8170. var _getEl = function(className, cycle, recurring, dataAndEvents) {
  8171. var el = document.createElement("div");
  8172. return el.className = "mfp-" + className, recurring && (el.innerHTML = recurring), dataAndEvents ? cycle && cycle.appendChild(el) : (el = $(el), cycle && el.appendTo(cycle)), el;
  8173. };
  8174. var _mfpTrigger = function(e, data) {
  8175. mfp.ev.triggerHandler(NS + e, data);
  8176. if (mfp.st.callbacks) {
  8177. e = e.charAt(0).toLowerCase() + e.slice(1);
  8178. if (mfp.st.callbacks[e]) {
  8179. mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]);
  8180. }
  8181. }
  8182. };
  8183. var _getCloseBtn = function(element) {
  8184. return element === openElement && mfp.currTemplate.closeBtn || (mfp.currTemplate.closeBtn = $(mfp.st.closeMarkup.replace("%title%", mfp.st.tClose)), openElement = element), mfp.currTemplate.closeBtn;
  8185. };
  8186. var _checkInstance = function() {
  8187. if (!$.magnificPopup.instance) {
  8188. mfp = new MagnificPopup;
  8189. mfp.init();
  8190. $.magnificPopup.instance = mfp;
  8191. }
  8192. };
  8193. var supportsTransitions = function() {
  8194. var s = document.createElement("p").style;
  8195. var v = ["ms", "O", "Moz", "Webkit"];
  8196. if (void 0 !== s.transition) {
  8197. return true;
  8198. }
  8199. for (;v.length;) {
  8200. if (v.pop() + "Transition" in s) {
  8201. return true;
  8202. }
  8203. }
  8204. return false;
  8205. };
  8206. MagnificPopup.prototype = {
  8207. constructor : MagnificPopup,
  8208. init : function() {
  8209. var appVersion = navigator.appVersion;
  8210. mfp.isIE7 = -1 !== appVersion.indexOf("MSIE 7.");
  8211. mfp.isIE8 = -1 !== appVersion.indexOf("MSIE 8.");
  8212. mfp.isLowIE = mfp.isIE7 || mfp.isIE8;
  8213. mfp.isAndroid = /android/gi.test(appVersion);
  8214. mfp.isIOS = /iphone|ipad|ipod/gi.test(appVersion);
  8215. mfp.supportsTransition = supportsTransitions();
  8216. mfp.probablyMobile = mfp.isAndroid || (mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent));
  8217. _document = $(document);
  8218. mfp.popupsCache = {};
  8219. },
  8220. open : function(data) {
  8221. if (!_body) {
  8222. _body = $(document.body);
  8223. }
  8224. var i;
  8225. if (data.isObj === false) {
  8226. mfp.items = data.items.toArray();
  8227. mfp.index = 0;
  8228. var item;
  8229. var items = data.items;
  8230. i = 0;
  8231. for (;items.length > i;i++) {
  8232. if (item = items[i], item.parsed && (item = item.el[0]), item === data.el[0]) {
  8233. mfp.index = i;
  8234. break;
  8235. }
  8236. }
  8237. } else {
  8238. mfp.items = $.isArray(data.items) ? data.items : [data.items];
  8239. mfp.index = data.index || 0;
  8240. }
  8241. if (mfp.isOpen) {
  8242. return mfp.updateItemHTML(), void 0;
  8243. }
  8244. mfp.types = [];
  8245. cls = "";
  8246. mfp.ev = data.mainEl && data.mainEl.length ? data.mainEl.eq(0) : _document;
  8247. if (data.key) {
  8248. if (!mfp.popupsCache[data.key]) {
  8249. mfp.popupsCache[data.key] = {};
  8250. }
  8251. mfp.currTemplate = mfp.popupsCache[data.key];
  8252. } else {
  8253. mfp.currTemplate = {};
  8254. }
  8255. mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data);
  8256. mfp.fixedContentPos = "auto" === mfp.st.fixedContentPos ? !mfp.probablyMobile : mfp.st.fixedContentPos;
  8257. if (mfp.st.modal) {
  8258. mfp.st.closeOnContentClick = false;
  8259. mfp.st.closeOnBgClick = false;
  8260. mfp.st.showCloseBtn = false;
  8261. mfp.st.enableEscapeKey = false;
  8262. }
  8263. if (!mfp.bgOverlay) {
  8264. mfp.bgOverlay = _getEl("bg").on("click" + EVENT_NS, function() {
  8265. mfp.close();
  8266. });
  8267. mfp.wrap = _getEl("wrap").attr("tabindex", -1).on("click" + EVENT_NS, function(e) {
  8268. if (mfp._checkIfClose(e.target)) {
  8269. mfp.close();
  8270. }
  8271. });
  8272. mfp.container = _getEl("container", mfp.wrap);
  8273. }
  8274. mfp.contentContainer = _getEl("content");
  8275. if (mfp.st.preloader) {
  8276. mfp.preloader = _getEl("preloader", mfp.container, mfp.st.tLoading);
  8277. }
  8278. var comparisons = $.magnificPopup.modules;
  8279. i = 0;
  8280. for (;comparisons.length > i;i++) {
  8281. var t = comparisons[i];
  8282. t = t.charAt(0).toUpperCase() + t.slice(1);
  8283. mfp["init" + t].call(mfp);
  8284. }
  8285. _mfpTrigger("BeforeOpen");
  8286. if (mfp.st.showCloseBtn) {
  8287. if (mfp.st.closeBtnInside) {
  8288. _mfpOn(MARKUP_PARSE_EVENT, function(dataAndEvents, deepDataAndEvents, values, item) {
  8289. values.close_replaceWith = _getCloseBtn(item.type);
  8290. });
  8291. cls += " mfp-close-btn-in";
  8292. } else {
  8293. mfp.wrap.append(_getCloseBtn());
  8294. }
  8295. }
  8296. if (mfp.st.alignTop) {
  8297. cls += " mfp-align-top";
  8298. }
  8299. if (mfp.fixedContentPos) {
  8300. mfp.wrap.css({
  8301. overflow : mfp.st.overflowY,
  8302. overflowX : "hidden",
  8303. overflowY : mfp.st.overflowY
  8304. });
  8305. } else {
  8306. mfp.wrap.css({
  8307. top : _window.scrollTop(),
  8308. position : "absolute"
  8309. });
  8310. }
  8311. if (mfp.st.fixedBgPos === false || "auto" === mfp.st.fixedBgPos && !mfp.fixedContentPos) {
  8312. mfp.bgOverlay.css({
  8313. height : _document.height(),
  8314. position : "absolute"
  8315. });
  8316. }
  8317. if (mfp.st.enableEscapeKey) {
  8318. _document.on("keyup" + EVENT_NS, function(event) {
  8319. if (27 === event.keyCode) {
  8320. mfp.close();
  8321. }
  8322. });
  8323. }
  8324. _window.on("resize" + EVENT_NS, function() {
  8325. mfp.updateSize();
  8326. });
  8327. if (!mfp.st.closeOnContentClick) {
  8328. cls += " mfp-auto-cursor";
  8329. }
  8330. if (cls) {
  8331. mfp.wrap.addClass(cls);
  8332. }
  8333. var windowHeight = mfp.wH = _window.height();
  8334. var style = {};
  8335. if (mfp.fixedContentPos && mfp._hasScrollBar(windowHeight)) {
  8336. var marginSize = mfp._getScrollbarSize();
  8337. if (marginSize) {
  8338. style.marginRight = marginSize;
  8339. }
  8340. }
  8341. if (mfp.fixedContentPos) {
  8342. if (mfp.isIE7) {
  8343. $("body, html").css("overflow", "hidden");
  8344. } else {
  8345. style.overflow = "hidden";
  8346. }
  8347. }
  8348. var classesToadd = mfp.st.mainClass;
  8349. return mfp.isIE7 && (classesToadd += " mfp-ie7"), classesToadd && mfp._addClassToMFP(classesToadd), mfp.updateItemHTML(), _mfpTrigger("BuildControls"), $("html").css(style), mfp.bgOverlay.add(mfp.wrap).prependTo(mfp.st.prependTo || _body), mfp._lastFocusedEl = document.activeElement, setTimeout(function() {
  8350. if (mfp.content) {
  8351. mfp._addClassToMFP(READY_CLASS);
  8352. mfp._setFocus();
  8353. } else {
  8354. mfp.bgOverlay.addClass(READY_CLASS);
  8355. }
  8356. _document.on("focusin" + EVENT_NS, mfp._onFocusIn);
  8357. }, 16), mfp.isOpen = true, mfp.updateSize(windowHeight), _mfpTrigger(OPEN_EVENT), data;
  8358. },
  8359. close : function() {
  8360. if (mfp.isOpen) {
  8361. _mfpTrigger(BEFORE_CLOSE_EVENT);
  8362. mfp.isOpen = false;
  8363. if (mfp.st.removalDelay && (!mfp.isLowIE && mfp.supportsTransition)) {
  8364. mfp._addClassToMFP(REMOVING_CLASS);
  8365. setTimeout(function() {
  8366. mfp._close();
  8367. }, mfp.st.removalDelay);
  8368. } else {
  8369. mfp._close();
  8370. }
  8371. }
  8372. },
  8373. _close : function() {
  8374. _mfpTrigger(CLOSE_EVENT);
  8375. var classesToRemove = REMOVING_CLASS + " " + READY_CLASS + " ";
  8376. if (mfp.bgOverlay.detach(), mfp.wrap.detach(), mfp.container.empty(), mfp.st.mainClass && (classesToRemove += mfp.st.mainClass + " "), mfp._removeClassFromMFP(classesToRemove), mfp.fixedContentPos) {
  8377. var elem = {
  8378. marginRight : ""
  8379. };
  8380. if (mfp.isIE7) {
  8381. $("body, html").css("overflow", "");
  8382. } else {
  8383. elem.overflow = "";
  8384. }
  8385. $("html").css(elem);
  8386. }
  8387. _document.off("keyup" + EVENT_NS + " focusin" + EVENT_NS);
  8388. mfp.ev.off(EVENT_NS);
  8389. mfp.wrap.attr("class", "mfp-wrap").removeAttr("style");
  8390. mfp.bgOverlay.attr("class", "mfp-bg");
  8391. mfp.container.attr("class", "mfp-container");
  8392. if (!!mfp.st.showCloseBtn) {
  8393. if (!(mfp.st.closeBtnInside && mfp.currTemplate[mfp.currItem.type] !== true)) {
  8394. if (mfp.currTemplate.closeBtn) {
  8395. mfp.currTemplate.closeBtn.detach();
  8396. }
  8397. }
  8398. }
  8399. if (mfp._lastFocusedEl) {
  8400. $(mfp._lastFocusedEl).focus();
  8401. }
  8402. mfp.currItem = null;
  8403. mfp.content = null;
  8404. mfp.currTemplate = null;
  8405. mfp.prevHeight = 0;
  8406. _mfpTrigger(AFTER_CLOSE_EVENT);
  8407. },
  8408. updateSize : function(winHeight) {
  8409. if (mfp.isIOS) {
  8410. var zoomLevel = document.documentElement.clientWidth / window.innerWidth;
  8411. var height = window.innerHeight * zoomLevel;
  8412. mfp.wrap.css("height", height);
  8413. mfp.wH = height;
  8414. } else {
  8415. mfp.wH = winHeight || _window.height();
  8416. }
  8417. if (!mfp.fixedContentPos) {
  8418. mfp.wrap.css("height", mfp.wH);
  8419. }
  8420. _mfpTrigger("Resize");
  8421. },
  8422. updateItemHTML : function() {
  8423. var item = mfp.items[mfp.index];
  8424. mfp.contentContainer.detach();
  8425. if (mfp.content) {
  8426. mfp.content.detach();
  8427. }
  8428. if (!item.parsed) {
  8429. item = mfp.parseEl(mfp.index);
  8430. }
  8431. var type = item.type;
  8432. if (_mfpTrigger("BeforeChange", [mfp.currItem ? mfp.currItem.type : "", type]), mfp.currItem = item, !mfp.currTemplate[type]) {
  8433. var page = mfp.st[type] ? mfp.st[type].markup : false;
  8434. _mfpTrigger("FirstMarkupParse", page);
  8435. mfp.currTemplate[type] = page ? $(page) : true;
  8436. }
  8437. if (_prevContentType) {
  8438. if (_prevContentType !== item.type) {
  8439. mfp.container.removeClass("mfp-" + _prevContentType + "-holder");
  8440. }
  8441. }
  8442. var newContent = mfp["get" + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]);
  8443. mfp.appendContent(newContent, type);
  8444. item.preloaded = true;
  8445. _mfpTrigger(CHANGE_EVENT, item);
  8446. _prevContentType = item.type;
  8447. mfp.container.prepend(mfp.contentContainer);
  8448. _mfpTrigger("AfterChange");
  8449. },
  8450. appendContent : function(newContent, type) {
  8451. mfp.content = newContent;
  8452. if (newContent) {
  8453. if (mfp.st.showCloseBtn && (mfp.st.closeBtnInside && mfp.currTemplate[type] === true)) {
  8454. if (!mfp.content.find(".mfp-close").length) {
  8455. mfp.content.append(_getCloseBtn());
  8456. }
  8457. } else {
  8458. mfp.content = newContent;
  8459. }
  8460. } else {
  8461. mfp.content = "";
  8462. }
  8463. _mfpTrigger(BEFORE_APPEND_EVENT);
  8464. mfp.container.addClass("mfp-" + type + "-holder");
  8465. mfp.contentContainer.append(mfp.content);
  8466. },
  8467. parseEl : function(index) {
  8468. var type;
  8469. var item = mfp.items[index];
  8470. if (item.tagName ? item = {
  8471. el : $(item)
  8472. } : (type = item.type, item = {
  8473. data : item,
  8474. src : item.src
  8475. }), item.el) {
  8476. var types = mfp.types;
  8477. var i = 0;
  8478. for (;types.length > i;i++) {
  8479. if (item.el.hasClass("mfp-" + types[i])) {
  8480. type = types[i];
  8481. break;
  8482. }
  8483. }
  8484. item.src = item.el.attr("data-mfp-src");
  8485. if (!item.src) {
  8486. item.src = item.el.attr("href");
  8487. }
  8488. }
  8489. return item.type = type || (mfp.st.type || "inline"), item.index = index, item.parsed = true, mfp.items[index] = item, _mfpTrigger("ElementParse", item), mfp.items[index];
  8490. },
  8491. addGroup : function(el, options) {
  8492. var eHandler = function(e) {
  8493. e.mfpEl = this;
  8494. mfp._openClick(e, el, options);
  8495. };
  8496. if (!options) {
  8497. options = {};
  8498. }
  8499. var type = "click.magnificPopup";
  8500. options.mainEl = el;
  8501. if (options.items) {
  8502. options.isObj = true;
  8503. el.off(type).on(type, eHandler);
  8504. } else {
  8505. options.isObj = false;
  8506. if (options.delegate) {
  8507. el.off(type).on(type, options.delegate, eHandler);
  8508. } else {
  8509. options.items = el;
  8510. el.off(type).on(type, eHandler);
  8511. }
  8512. }
  8513. },
  8514. _openClick : function(e, el, options) {
  8515. var r = void 0 !== options.midClick ? options.midClick : $.magnificPopup.defaults.midClick;
  8516. if (r || 2 !== e.which && (!e.ctrlKey && !e.metaKey)) {
  8517. var html = void 0 !== options.disableOn ? options.disableOn : $.magnificPopup.defaults.disableOn;
  8518. if (html) {
  8519. if ($.isFunction(html)) {
  8520. if (!html.call(mfp)) {
  8521. return true;
  8522. }
  8523. } else {
  8524. if (html > _window.width()) {
  8525. return true;
  8526. }
  8527. }
  8528. }
  8529. if (e.type) {
  8530. e.preventDefault();
  8531. if (mfp.isOpen) {
  8532. e.stopPropagation();
  8533. }
  8534. }
  8535. options.el = $(e.mfpEl);
  8536. if (options.delegate) {
  8537. options.items = el.find(options.delegate);
  8538. }
  8539. mfp.open(options);
  8540. }
  8541. },
  8542. updateStatus : function(status, text) {
  8543. if (mfp.preloader) {
  8544. if (_prevStatus !== status) {
  8545. mfp.container.removeClass("mfp-s-" + _prevStatus);
  8546. }
  8547. if (!text) {
  8548. if (!("loading" !== status)) {
  8549. text = mfp.st.tLoading;
  8550. }
  8551. }
  8552. var data = {
  8553. status : status,
  8554. text : text
  8555. };
  8556. _mfpTrigger("UpdateStatus", data);
  8557. status = data.status;
  8558. text = data.text;
  8559. mfp.preloader.html(text);
  8560. mfp.preloader.find("a").on("click", function(e) {
  8561. e.stopImmediatePropagation();
  8562. });
  8563. mfp.container.addClass("mfp-s-" + status);
  8564. _prevStatus = status;
  8565. }
  8566. },
  8567. _checkIfClose : function(target) {
  8568. if (!$(target).hasClass(PREVENT_CLOSE_CLASS)) {
  8569. var dw = mfp.st.closeOnContentClick;
  8570. var dh = mfp.st.closeOnBgClick;
  8571. if (dw && dh) {
  8572. return true;
  8573. }
  8574. if (!mfp.content || ($(target).hasClass("mfp-close") || mfp.preloader && target === mfp.preloader[0])) {
  8575. return true;
  8576. }
  8577. if (target === mfp.content[0] || $.contains(mfp.content[0], target)) {
  8578. if (dw) {
  8579. return true;
  8580. }
  8581. } else {
  8582. if (dh && $.contains(document, target)) {
  8583. return true;
  8584. }
  8585. }
  8586. return false;
  8587. }
  8588. },
  8589. _addClassToMFP : function(cName) {
  8590. mfp.bgOverlay.addClass(cName);
  8591. mfp.wrap.addClass(cName);
  8592. },
  8593. _removeClassFromMFP : function(cName) {
  8594. this.bgOverlay.removeClass(cName);
  8595. mfp.wrap.removeClass(cName);
  8596. },
  8597. _hasScrollBar : function(winHeight) {
  8598. return(mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height());
  8599. },
  8600. _setFocus : function() {
  8601. (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus();
  8602. },
  8603. _onFocusIn : function(e) {
  8604. return e.target === mfp.wrap[0] || $.contains(mfp.wrap[0], e.target) ? void 0 : (mfp._setFocus(), false);
  8605. },
  8606. _parseMarkup : function(template, values, item) {
  8607. var arr;
  8608. if (item.data) {
  8609. values = $.extend(item.data, values);
  8610. }
  8611. _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item]);
  8612. $.each(values, function(key, value) {
  8613. if (void 0 === value || value === false) {
  8614. return true;
  8615. }
  8616. if (arr = key.split("_"), arr.length > 1) {
  8617. var el = template.find(EVENT_NS + "-" + arr[0]);
  8618. if (el.length > 0) {
  8619. var val = arr[1];
  8620. if ("replaceWith" === val) {
  8621. if (el[0] !== value[0]) {
  8622. el.replaceWith(value);
  8623. }
  8624. } else {
  8625. if ("img" === val) {
  8626. if (el.is("img")) {
  8627. el.attr("src", value);
  8628. } else {
  8629. el.replaceWith('<img src="' + value + '" class="' + el.attr("class") + '" />');
  8630. }
  8631. } else {
  8632. el.attr(arr[1], value);
  8633. }
  8634. }
  8635. }
  8636. } else {
  8637. template.find(EVENT_NS + "-" + key).html(value);
  8638. }
  8639. });
  8640. },
  8641. _getScrollbarSize : function() {
  8642. if (void 0 === mfp.scrollbarSize) {
  8643. var div = document.createElement("div");
  8644. div.style.cssText = "width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;";
  8645. document.body.appendChild(div);
  8646. mfp.scrollbarSize = div.offsetWidth - div.clientWidth;
  8647. document.body.removeChild(div);
  8648. }
  8649. return mfp.scrollbarSize;
  8650. }
  8651. };
  8652. $.magnificPopup = {
  8653. instance : null,
  8654. proto : MagnificPopup.prototype,
  8655. modules : [],
  8656. open : function(options, index) {
  8657. return _checkInstance(), options = options ? $.extend(true, {}, options) : {}, options.isObj = true, options.index = index || 0, this.instance.open(options);
  8658. },
  8659. close : function() {
  8660. return $.magnificPopup.instance && $.magnificPopup.instance.close();
  8661. },
  8662. registerModule : function(name, opt_attributes) {
  8663. if (opt_attributes.options) {
  8664. $.magnificPopup.defaults[name] = opt_attributes.options;
  8665. }
  8666. $.extend(this.proto, opt_attributes.proto);
  8667. this.modules.push(name);
  8668. },
  8669. defaults : {
  8670. disableOn : 0,
  8671. key : null,
  8672. midClick : false,
  8673. mainClass : "",
  8674. preloader : true,
  8675. focus : "",
  8676. closeOnContentClick : false,
  8677. closeOnBgClick : true,
  8678. closeBtnInside : true,
  8679. showCloseBtn : true,
  8680. enableEscapeKey : true,
  8681. modal : false,
  8682. alignTop : false,
  8683. removalDelay : 0,
  8684. prependTo : null,
  8685. fixedContentPos : "auto",
  8686. fixedBgPos : "auto",
  8687. overflowY : "auto",
  8688. closeMarkup : '<button title="%title%" type="button" class="mfp-close">&times;</button>',
  8689. tClose : "Close (Esc)",
  8690. tLoading : "Loading..."
  8691. }
  8692. };
  8693. $.fn.magnificPopup = function(options) {
  8694. _checkInstance();
  8695. var jqEl = $(this);
  8696. if ("string" == typeof options) {
  8697. if ("open" === options) {
  8698. var items;
  8699. var itemOpts = _isJQ ? jqEl.data("magnificPopup") : jqEl[0].magnificPopup;
  8700. var index = parseInt(arguments[1], 10) || 0;
  8701. if (itemOpts.items) {
  8702. items = itemOpts.items[index];
  8703. } else {
  8704. items = jqEl;
  8705. if (itemOpts.delegate) {
  8706. items = items.find(itemOpts.delegate);
  8707. }
  8708. items = items.eq(index);
  8709. }
  8710. mfp._openClick({
  8711. mfpEl : items
  8712. }, jqEl, itemOpts);
  8713. } else {
  8714. if (mfp.isOpen) {
  8715. mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1));
  8716. }
  8717. }
  8718. } else {
  8719. options = $.extend(true, {}, options);
  8720. if (_isJQ) {
  8721. jqEl.data("magnificPopup", options);
  8722. } else {
  8723. jqEl[0].magnificPopup = options;
  8724. }
  8725. mfp.addGroup(jqEl, options);
  8726. }
  8727. return jqEl;
  8728. };
  8729. var _hiddenClass;
  8730. var _inlinePlaceholder;
  8731. var _lastInlineElement;
  8732. var INLINE_NS = "inline";
  8733. var _putInlineElementsBack = function() {
  8734. if (_lastInlineElement) {
  8735. _inlinePlaceholder.after(_lastInlineElement.addClass(_hiddenClass)).detach();
  8736. _lastInlineElement = null;
  8737. }
  8738. };
  8739. $.magnificPopup.registerModule(INLINE_NS, {
  8740. options : {
  8741. hiddenClass : "hide",
  8742. markup : "",
  8743. tNotFound : "Content not found"
  8744. },
  8745. proto : {
  8746. initInline : function() {
  8747. mfp.types.push(INLINE_NS);
  8748. _mfpOn(CLOSE_EVENT + "." + INLINE_NS, function() {
  8749. _putInlineElementsBack();
  8750. });
  8751. },
  8752. getInline : function(item, template) {
  8753. if (_putInlineElementsBack(), item.src) {
  8754. var inlineSt = mfp.st.inline;
  8755. var el = $(item.src);
  8756. if (el.length) {
  8757. var tbody = el[0].parentNode;
  8758. if (tbody) {
  8759. if (tbody.tagName) {
  8760. if (!_inlinePlaceholder) {
  8761. _hiddenClass = inlineSt.hiddenClass;
  8762. _inlinePlaceholder = _getEl(_hiddenClass);
  8763. _hiddenClass = "mfp-" + _hiddenClass;
  8764. }
  8765. _lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);
  8766. }
  8767. }
  8768. mfp.updateStatus("ready");
  8769. } else {
  8770. mfp.updateStatus("error", inlineSt.tNotFound);
  8771. el = $("<div>");
  8772. }
  8773. return item.inlineElement = el, el;
  8774. }
  8775. return mfp.updateStatus("ready"), mfp._parseMarkup(template, {}, item), template;
  8776. }
  8777. }
  8778. });
  8779. var className;
  8780. var AJAX_NS = "ajax";
  8781. var _removeAjaxCursor = function() {
  8782. if (className) {
  8783. _body.removeClass(className);
  8784. }
  8785. };
  8786. var _destroyAjaxRequest = function() {
  8787. _removeAjaxCursor();
  8788. if (mfp.req) {
  8789. mfp.req.abort();
  8790. }
  8791. };
  8792. $.magnificPopup.registerModule(AJAX_NS, {
  8793. options : {
  8794. settings : null,
  8795. cursor : "mfp-ajax-cur",
  8796. tError : '<a href="%url%">The content</a> could not be loaded.'
  8797. },
  8798. proto : {
  8799. initAjax : function() {
  8800. mfp.types.push(AJAX_NS);
  8801. className = mfp.st.ajax.cursor;
  8802. _mfpOn(CLOSE_EVENT + "." + AJAX_NS, _destroyAjaxRequest);
  8803. _mfpOn("BeforeChange." + AJAX_NS, _destroyAjaxRequest);
  8804. },
  8805. getAjax : function(item) {
  8806. if (className) {
  8807. _body.addClass(className);
  8808. }
  8809. mfp.updateStatus("loading");
  8810. var opts = $.extend({
  8811. url : item.src,
  8812. success : function(type, elems, elem) {
  8813. var temp = {
  8814. data : type,
  8815. xhr : elem
  8816. };
  8817. _mfpTrigger("ParseAjax", temp);
  8818. mfp.appendContent($(temp.data), AJAX_NS);
  8819. item.finished = true;
  8820. _removeAjaxCursor();
  8821. mfp._setFocus();
  8822. setTimeout(function() {
  8823. mfp.wrap.addClass(READY_CLASS);
  8824. }, 16);
  8825. mfp.updateStatus("ready");
  8826. _mfpTrigger("AjaxContentAdded");
  8827. },
  8828. error : function() {
  8829. _removeAjaxCursor();
  8830. item.finished = item.loadError = true;
  8831. mfp.updateStatus("error", mfp.st.ajax.tError.replace("%url%", item.src));
  8832. }
  8833. }, mfp.st.ajax.settings);
  8834. return mfp.req = $.ajax(opts), "";
  8835. }
  8836. }
  8837. });
  8838. var id;
  8839. var _getTitle = function(item) {
  8840. if (item.data && void 0 !== item.data.title) {
  8841. return item.data.title;
  8842. }
  8843. var src = mfp.st.image.titleSrc;
  8844. if (src) {
  8845. if ($.isFunction(src)) {
  8846. return src.call(mfp, item);
  8847. }
  8848. if (item.el) {
  8849. return item.el.attr(src) || "";
  8850. }
  8851. }
  8852. return "";
  8853. };
  8854. $.magnificPopup.registerModule("image", {
  8855. options : {
  8856. markup : '<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',
  8857. cursor : "mfp-zoom-out-cur",
  8858. titleSrc : "title",
  8859. verticalFit : true,
  8860. tError : '<a href="%url%">The image</a> could not be loaded.'
  8861. },
  8862. proto : {
  8863. initImage : function() {
  8864. var imgSt = mfp.st.image;
  8865. var ns = ".image";
  8866. mfp.types.push("image");
  8867. _mfpOn(OPEN_EVENT + ns, function() {
  8868. if ("image" === mfp.currItem.type) {
  8869. if (imgSt.cursor) {
  8870. _body.addClass(imgSt.cursor);
  8871. }
  8872. }
  8873. });
  8874. _mfpOn(CLOSE_EVENT + ns, function() {
  8875. if (imgSt.cursor) {
  8876. _body.removeClass(imgSt.cursor);
  8877. }
  8878. _window.off("resize" + EVENT_NS);
  8879. });
  8880. _mfpOn("Resize" + ns, mfp.resizeImage);
  8881. if (mfp.isLowIE) {
  8882. _mfpOn("AfterChange", mfp.resizeImage);
  8883. }
  8884. },
  8885. resizeImage : function() {
  8886. var item = mfp.currItem;
  8887. if (item && (item.img && mfp.st.image.verticalFit)) {
  8888. var decr = 0;
  8889. if (mfp.isLowIE) {
  8890. decr = parseInt(item.img.css("padding-top"), 10) + parseInt(item.img.css("padding-bottom"), 10);
  8891. }
  8892. item.img.css("max-height", mfp.wH - decr);
  8893. }
  8894. },
  8895. _onImageHasSize : function(item) {
  8896. if (item.img) {
  8897. item.hasSize = true;
  8898. if (id) {
  8899. clearInterval(id);
  8900. }
  8901. item.isCheckingImgSize = false;
  8902. _mfpTrigger("ImageHasSize", item);
  8903. if (item.imgHidden) {
  8904. if (mfp.content) {
  8905. mfp.content.removeClass("mfp-loading");
  8906. }
  8907. item.imgHidden = false;
  8908. }
  8909. }
  8910. },
  8911. findImageSize : function(item) {
  8912. var n = 0;
  8913. var img = item.img[0];
  8914. var mfpSetInterval = function(delay) {
  8915. if (id) {
  8916. clearInterval(id);
  8917. }
  8918. id = setInterval(function() {
  8919. return img.naturalWidth > 0 ? (mfp._onImageHasSize(item), void 0) : (n > 200 && clearInterval(id), n++, 3 === n ? mfpSetInterval(10) : 40 === n ? mfpSetInterval(50) : 100 === n && mfpSetInterval(500), void 0);
  8920. }, delay);
  8921. };
  8922. mfpSetInterval(1);
  8923. },
  8924. getImage : function(item, template) {
  8925. var o = 0;
  8926. var onLoadComplete = function() {
  8927. if (item) {
  8928. if (item.img[0].complete) {
  8929. item.img.off(".mfploader");
  8930. if (item === mfp.currItem) {
  8931. mfp._onImageHasSize(item);
  8932. mfp.updateStatus("ready");
  8933. }
  8934. item.hasSize = true;
  8935. item.loaded = true;
  8936. _mfpTrigger("ImageLoadComplete");
  8937. } else {
  8938. o++;
  8939. if (200 > o) {
  8940. setTimeout(onLoadComplete, 100);
  8941. } else {
  8942. onLoadError();
  8943. }
  8944. }
  8945. }
  8946. };
  8947. var onLoadError = function() {
  8948. if (item) {
  8949. item.img.off(".mfploader");
  8950. if (item === mfp.currItem) {
  8951. mfp._onImageHasSize(item);
  8952. mfp.updateStatus("error", imgSt.tError.replace("%url%", item.src));
  8953. }
  8954. item.hasSize = true;
  8955. item.loaded = true;
  8956. item.loadError = true;
  8957. }
  8958. };
  8959. var imgSt = mfp.st.image;
  8960. var $el = template.find(".mfp-img");
  8961. if ($el.length) {
  8962. var img = document.createElement("img");
  8963. img.className = "mfp-img";
  8964. if (item.el) {
  8965. if (item.el.find("img").length) {
  8966. img.alt = item.el.find("img").attr("alt");
  8967. }
  8968. }
  8969. item.img = $(img).on("load.mfploader", onLoadComplete).on("error.mfploader", onLoadError);
  8970. img.src = item.src;
  8971. if ($el.is("img")) {
  8972. item.img = item.img.clone();
  8973. }
  8974. img = item.img[0];
  8975. if (img.naturalWidth > 0) {
  8976. item.hasSize = true;
  8977. } else {
  8978. if (!img.width) {
  8979. item.hasSize = false;
  8980. }
  8981. }
  8982. }
  8983. return mfp._parseMarkup(template, {
  8984. title : _getTitle(item),
  8985. img_replaceWith : item.img
  8986. }, item), mfp.resizeImage(), item.hasSize ? (id && clearInterval(id), item.loadError ? (template.addClass("mfp-loading"), mfp.updateStatus("error", imgSt.tError.replace("%url%", item.src))) : (template.removeClass("mfp-loading"), mfp.updateStatus("ready")), template) : (mfp.updateStatus("loading"), item.loading = true, item.hasSize || (item.imgHidden = true, template.addClass("mfp-loading"), mfp.findImageSize(item)), template);
  8987. }
  8988. }
  8989. });
  8990. var W;
  8991. var getHasMozTransform = function() {
  8992. return void 0 === W && (W = void 0 !== document.createElement("p").style.MozTransform), W;
  8993. };
  8994. $.magnificPopup.registerModule("zoom", {
  8995. options : {
  8996. enabled : false,
  8997. easing : "ease-in-out",
  8998. duration : 300,
  8999. opener : function(element) {
  9000. return element.is("img") ? element : element.find("img");
  9001. }
  9002. },
  9003. proto : {
  9004. initZoom : function() {
  9005. var image;
  9006. var zoomSt = mfp.st.zoom;
  9007. var ns = ".zoom";
  9008. if (zoomSt.enabled && mfp.supportsTransition) {
  9009. var timer;
  9010. var animatedImg;
  9011. var duration = zoomSt.duration;
  9012. var getElToAnimate = function(image) {
  9013. var newImg = image.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image");
  9014. var transition = "all " + zoomSt.duration / 1E3 + "s " + zoomSt.easing;
  9015. var cssObj = {
  9016. position : "fixed",
  9017. zIndex : 9999,
  9018. left : 0,
  9019. top : 0,
  9020. "-webkit-backface-visibility" : "hidden"
  9021. };
  9022. var t = "transition";
  9023. return cssObj["-webkit-" + t] = cssObj["-moz-" + t] = cssObj["-o-" + t] = cssObj[t] = transition, newImg.css(cssObj), newImg;
  9024. };
  9025. var showMainContent = function() {
  9026. mfp.content.css("visibility", "visible");
  9027. };
  9028. _mfpOn("BuildControls" + ns, function() {
  9029. if (mfp._allowZoom()) {
  9030. if (clearTimeout(timer), mfp.content.css("visibility", "hidden"), image = mfp._getItemToZoom(), !image) {
  9031. return showMainContent(), void 0;
  9032. }
  9033. animatedImg = getElToAnimate(image);
  9034. animatedImg.css(mfp._getOffset());
  9035. mfp.wrap.append(animatedImg);
  9036. timer = setTimeout(function() {
  9037. animatedImg.css(mfp._getOffset(true));
  9038. timer = setTimeout(function() {
  9039. showMainContent();
  9040. setTimeout(function() {
  9041. animatedImg.remove();
  9042. image = animatedImg = null;
  9043. _mfpTrigger("ZoomAnimationEnded");
  9044. }, 16);
  9045. }, duration);
  9046. }, 16);
  9047. }
  9048. });
  9049. _mfpOn(BEFORE_CLOSE_EVENT + ns, function() {
  9050. if (mfp._allowZoom()) {
  9051. if (clearTimeout(timer), mfp.st.removalDelay = duration, !image) {
  9052. if (image = mfp._getItemToZoom(), !image) {
  9053. return;
  9054. }
  9055. animatedImg = getElToAnimate(image);
  9056. }
  9057. animatedImg.css(mfp._getOffset(true));
  9058. mfp.wrap.append(animatedImg);
  9059. mfp.content.css("visibility", "hidden");
  9060. setTimeout(function() {
  9061. animatedImg.css(mfp._getOffset());
  9062. }, 16);
  9063. }
  9064. });
  9065. _mfpOn(CLOSE_EVENT + ns, function() {
  9066. if (mfp._allowZoom()) {
  9067. showMainContent();
  9068. if (animatedImg) {
  9069. animatedImg.remove();
  9070. }
  9071. image = null;
  9072. }
  9073. });
  9074. }
  9075. },
  9076. _allowZoom : function() {
  9077. return "image" === mfp.currItem.type;
  9078. },
  9079. _getItemToZoom : function() {
  9080. return mfp.currItem.hasSize ? mfp.currItem.img : false;
  9081. },
  9082. _getOffset : function(dataAndEvents) {
  9083. var parent;
  9084. parent = dataAndEvents ? mfp.currItem.img : mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem);
  9085. var offset = parent.offset();
  9086. var paddingTop = parseInt(parent.css("padding-top"), 10);
  9087. var paddingBottom = parseInt(parent.css("padding-bottom"), 10);
  9088. offset.top -= $(window).scrollTop() - paddingTop;
  9089. var obj = {
  9090. width : parent.width(),
  9091. height : (_isJQ ? parent.innerHeight() : parent[0].offsetHeight) - paddingBottom - paddingTop
  9092. };
  9093. return getHasMozTransform() ? obj["-moz-transform"] = obj.transform = "translate(" + offset.left + "px," + offset.top + "px)" : (obj.left = offset.left, obj.top = offset.top), obj;
  9094. }
  9095. }
  9096. });
  9097. var IFRAME_NS = "iframe";
  9098. var path = "//about:blank";
  9099. var _fixIframeBugs = function(isShowing) {
  9100. if (mfp.currTemplate[IFRAME_NS]) {
  9101. var el = mfp.currTemplate[IFRAME_NS].find("iframe");
  9102. if (el.length) {
  9103. if (!isShowing) {
  9104. el[0].src = path;
  9105. }
  9106. if (mfp.isIE8) {
  9107. el.css("display", isShowing ? "block" : "none");
  9108. }
  9109. }
  9110. }
  9111. };
  9112. $.magnificPopup.registerModule(IFRAME_NS, {
  9113. options : {
  9114. markup : '<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',
  9115. srcAction : "iframe_src",
  9116. patterns : {
  9117. youtube : {
  9118. index : "youtube.com",
  9119. id : "v=",
  9120. src : "//www.youtube.com/embed/%id%?autoplay=1"
  9121. },
  9122. vimeo : {
  9123. index : "vimeo.com/",
  9124. id : "/",
  9125. src : "//player.vimeo.com/video/%id%?autoplay=1"
  9126. },
  9127. gmaps : {
  9128. index : "//maps.google.",
  9129. src : "%id%&output=embed"
  9130. }
  9131. }
  9132. },
  9133. proto : {
  9134. initIframe : function() {
  9135. mfp.types.push(IFRAME_NS);
  9136. _mfpOn("BeforeChange", function(dataAndEvents, prevType, newType) {
  9137. if (prevType !== newType) {
  9138. if (prevType === IFRAME_NS) {
  9139. _fixIframeBugs();
  9140. } else {
  9141. if (newType === IFRAME_NS) {
  9142. _fixIframeBugs(true);
  9143. }
  9144. }
  9145. }
  9146. });
  9147. _mfpOn(CLOSE_EVENT + "." + IFRAME_NS, function() {
  9148. _fixIframeBugs();
  9149. });
  9150. },
  9151. getIframe : function(item, template) {
  9152. var embedSrc = item.src;
  9153. var iframeSt = mfp.st.iframe;
  9154. $.each(iframeSt.patterns, function() {
  9155. return embedSrc.indexOf(this.index) > -1 ? (this.id && (embedSrc = "string" == typeof this.id ? embedSrc.substr(embedSrc.lastIndexOf(this.id) + this.id.length, embedSrc.length) : this.id.call(this, embedSrc)), embedSrc = this.src.replace("%id%", embedSrc), false) : void 0;
  9156. });
  9157. var dataObj = {};
  9158. return iframeSt.srcAction && (dataObj[iframeSt.srcAction] = embedSrc), mfp._parseMarkup(template, dataObj, item), mfp.updateStatus("ready"), template;
  9159. }
  9160. }
  9161. });
  9162. var _getLoopedId = function(index) {
  9163. var numSlides = mfp.items.length;
  9164. return index > numSlides - 1 ? index - numSlides : 0 > index ? numSlides + index : index;
  9165. };
  9166. var _replaceCurrTotal = function(text, curr, total) {
  9167. return text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total);
  9168. };
  9169. $.magnificPopup.registerModule("gallery", {
  9170. options : {
  9171. enabled : false,
  9172. arrowMarkup : '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',
  9173. preload : [0, 2],
  9174. navigateByImgClick : true,
  9175. arrows : true,
  9176. tPrev : "Previous (Left arrow key)",
  9177. tNext : "Next (Right arrow key)",
  9178. tCounter : "%curr% of %total%"
  9179. },
  9180. proto : {
  9181. initGallery : function() {
  9182. var gSt = mfp.st.gallery;
  9183. var ns = ".mfp-gallery";
  9184. var supportsFastClick = Boolean($.fn.mfpFastClick);
  9185. return mfp.direction = true, gSt && gSt.enabled ? (cls += " mfp-gallery", _mfpOn(OPEN_EVENT + ns, function() {
  9186. if (gSt.navigateByImgClick) {
  9187. mfp.wrap.on("click" + ns, ".mfp-img", function() {
  9188. return mfp.items.length > 1 ? (mfp.next(), false) : void 0;
  9189. });
  9190. }
  9191. _document.on("keydown" + ns, function(event) {
  9192. if (37 === event.keyCode) {
  9193. mfp.prev();
  9194. } else {
  9195. if (39 === event.keyCode) {
  9196. mfp.next();
  9197. }
  9198. }
  9199. });
  9200. }), _mfpOn("UpdateStatus" + ns, function(dataAndEvents, data) {
  9201. if (data.text) {
  9202. data.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length);
  9203. }
  9204. }), _mfpOn(MARKUP_PARSE_EVENT + ns, function(dataAndEvents, deepDataAndEvents, $scope, item) {
  9205. var l = mfp.items.length;
  9206. $scope.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : "";
  9207. }), _mfpOn("BuildControls" + ns, function() {
  9208. if (mfp.items.length > 1 && (gSt.arrows && !mfp.arrowLeft)) {
  9209. var markup = gSt.arrowMarkup;
  9210. var arrowLeft = mfp.arrowLeft = $(markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, "left")).addClass(PREVENT_CLOSE_CLASS);
  9211. var arg = mfp.arrowRight = $(markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, "right")).addClass(PREVENT_CLOSE_CLASS);
  9212. var eName = supportsFastClick ? "mfpFastClick" : "click";
  9213. arrowLeft[eName](function() {
  9214. mfp.prev();
  9215. });
  9216. arg[eName](function() {
  9217. mfp.next();
  9218. });
  9219. if (mfp.isIE7) {
  9220. _getEl("b", arrowLeft[0], false, true);
  9221. _getEl("a", arrowLeft[0], false, true);
  9222. _getEl("b", arg[0], false, true);
  9223. _getEl("a", arg[0], false, true);
  9224. }
  9225. mfp.container.append(arrowLeft.add(arg));
  9226. }
  9227. }), _mfpOn(CHANGE_EVENT + ns, function() {
  9228. if (mfp._preloadTimeout) {
  9229. clearTimeout(mfp._preloadTimeout);
  9230. }
  9231. mfp._preloadTimeout = setTimeout(function() {
  9232. mfp.preloadNearbyImages();
  9233. mfp._preloadTimeout = null;
  9234. }, 16);
  9235. }), _mfpOn(CLOSE_EVENT + ns, function() {
  9236. _document.off(ns);
  9237. mfp.wrap.off("click" + ns);
  9238. if (mfp.arrowLeft) {
  9239. if (supportsFastClick) {
  9240. mfp.arrowLeft.add(mfp.arrowRight).destroyMfpFastClick();
  9241. }
  9242. }
  9243. mfp.arrowRight = mfp.arrowLeft = null;
  9244. }), void 0) : false;
  9245. },
  9246. next : function() {
  9247. mfp.direction = true;
  9248. mfp.index = _getLoopedId(mfp.index + 1);
  9249. mfp.updateItemHTML();
  9250. },
  9251. prev : function() {
  9252. mfp.direction = false;
  9253. mfp.index = _getLoopedId(mfp.index - 1);
  9254. mfp.updateItemHTML();
  9255. },
  9256. goTo : function(newIndex) {
  9257. mfp.direction = newIndex >= mfp.index;
  9258. mfp.index = newIndex;
  9259. mfp.updateItemHTML();
  9260. },
  9261. preloadNearbyImages : function() {
  9262. var i;
  9263. var p = mfp.st.gallery.preload;
  9264. var preloadBefore = Math.min(p[0], mfp.items.length);
  9265. var preloadAfter = Math.min(p[1], mfp.items.length);
  9266. i = 1;
  9267. for (;(mfp.direction ? preloadAfter : preloadBefore) >= i;i++) {
  9268. mfp._preloadItem(mfp.index + i);
  9269. }
  9270. i = 1;
  9271. for (;(mfp.direction ? preloadBefore : preloadAfter) >= i;i++) {
  9272. mfp._preloadItem(mfp.index - i);
  9273. }
  9274. },
  9275. _preloadItem : function(index) {
  9276. if (index = _getLoopedId(index), !mfp.items[index].preloaded) {
  9277. var item = mfp.items[index];
  9278. if (!item.parsed) {
  9279. item = mfp.parseEl(index);
  9280. }
  9281. _mfpTrigger("LazyLoad", item);
  9282. if ("image" === item.type) {
  9283. item.img = $('<img class="mfp-img" />').on("load.mfploader", function() {
  9284. item.hasSize = true;
  9285. }).on("error.mfploader", function() {
  9286. item.hasSize = true;
  9287. item.loadError = true;
  9288. _mfpTrigger("LazyLoadError", item);
  9289. }).attr("src", item.src);
  9290. }
  9291. item.preloaded = true;
  9292. }
  9293. }
  9294. }
  9295. });
  9296. var RETINA_NS = "retina";
  9297. $.magnificPopup.registerModule(RETINA_NS, {
  9298. options : {
  9299. replaceSrc : function(item) {
  9300. return item.src.replace(/\.\w+$/, function(dataAndEvents) {
  9301. return "@2x" + dataAndEvents;
  9302. });
  9303. },
  9304. ratio : 1
  9305. },
  9306. proto : {
  9307. initRetina : function() {
  9308. if (window.devicePixelRatio > 1) {
  9309. var st = mfp.st.retina;
  9310. var ratio = st.ratio;
  9311. ratio = isNaN(ratio) ? ratio() : ratio;
  9312. if (ratio > 1) {
  9313. _mfpOn("ImageHasSize." + RETINA_NS, function(dataAndEvents, item) {
  9314. item.img.css({
  9315. "max-width" : item.img[0].naturalWidth / ratio,
  9316. width : "100%"
  9317. });
  9318. });
  9319. _mfpOn("ElementParse." + RETINA_NS, function(dataAndEvents, item) {
  9320. item.src = st.replaceSrc(item, ratio);
  9321. });
  9322. }
  9323. }
  9324. }
  9325. }
  9326. });
  9327. (function() {
  9328. var backoff = 1E3;
  9329. var hasTouch = "ontouchstart" in window;
  9330. var unbindTouchMove = function() {
  9331. _window.off("touchmove" + ns + " touchend" + ns);
  9332. };
  9333. var eName = "mfpFastClick";
  9334. var ns = "." + eName;
  9335. $.fn.mfpFastClick = function(callback) {
  9336. return $(this).each(function() {
  9337. var a;
  9338. var elem = $(this);
  9339. if (hasTouch) {
  9340. var tref;
  9341. var x;
  9342. var y;
  9343. var u;
  9344. var touch;
  9345. var position;
  9346. elem.on("touchstart" + ns, function(e) {
  9347. u = false;
  9348. position = 1;
  9349. touch = e.originalEvent ? e.originalEvent.touches[0] : e.touches[0];
  9350. x = touch.clientX;
  9351. y = touch.clientY;
  9352. _window.on("touchmove" + ns, function(e) {
  9353. touch = e.originalEvent ? e.originalEvent.touches : e.touches;
  9354. position = touch.length;
  9355. touch = touch[0];
  9356. if (Math.abs(touch.clientX - x) > 10 || Math.abs(touch.clientY - y) > 10) {
  9357. u = true;
  9358. unbindTouchMove();
  9359. }
  9360. }).on("touchend" + ns, function(types) {
  9361. unbindTouchMove();
  9362. if (!u) {
  9363. if (!(position > 1)) {
  9364. a = true;
  9365. types.preventDefault();
  9366. clearTimeout(tref);
  9367. tref = setTimeout(function() {
  9368. a = false;
  9369. }, backoff);
  9370. callback();
  9371. }
  9372. }
  9373. });
  9374. });
  9375. }
  9376. elem.on("click" + ns, function() {
  9377. if (!a) {
  9378. callback();
  9379. }
  9380. });
  9381. });
  9382. };
  9383. $.fn.destroyMfpFastClick = function() {
  9384. $(this).off("touchstart" + ns + " click" + ns);
  9385. if (hasTouch) {
  9386. _window.off("touchmove" + ns + " touchend" + ns);
  9387. }
  9388. };
  9389. })();
  9390. _checkInstance();
  9391. });
  9392. (function(global, $) {
  9393. function run(args) {
  9394. if (reply) {
  9395. var records = [];
  9396. var i = 0;
  9397. for (;i < args.length;i++) {
  9398. if ("type" in args[i] && "dfpads" != args[i].type) {
  9399. console.log("trying to refresh a non dfp ad. continue");
  9400. } else {
  9401. if (debugads) {
  9402. console.log("DFP: refreshing:" + args[i].data.A);
  9403. }
  9404. records.push(args[i].data);
  9405. }
  9406. }
  9407. if (!(0 >= records.length)) {
  9408. if (!!global.googletag) {
  9409. global.googletag.cmd.push(function() {
  9410. if (g) {
  9411. g = false;
  9412. setTimeout(function() {
  9413. g = true;
  9414. }, 0);
  9415. if (global.googletag) {
  9416. if (global.googletag.pubads) {
  9417. if (global.googletag.pubads().refresh) {
  9418. global.googletag.pubads().refresh(records);
  9419. }
  9420. }
  9421. }
  9422. }
  9423. });
  9424. }
  9425. }
  9426. } else {
  9427. console.log("dfpInitialized=" + reply);
  9428. console.log("queuing refresh");
  9429. typePattern = args;
  9430. }
  9431. }
  9432. function clearMenus() {
  9433. $("#videoContainer").fadeOut(800);
  9434. global.MC.onVideoClose();
  9435. }
  9436. function func(name, i) {
  9437. if (document.querySelector(name)) {
  9438. $(name).append('<div style="position: absolute; right: 10px; top: 4px;"><button type="button" class="close" onclick="closeVideoAd(); return false;">x</button></div>');
  9439. } else {
  9440. setTimeout(function() {
  9441. func(name, i);
  9442. }, i);
  9443. }
  9444. }
  9445. function Sprite(w) {
  9446. return w in wellKnownWords ? wellKnownWords[w] : 0;
  9447. }
  9448. var dst = {};
  9449. (function() {
  9450. var params = global.location.search;
  9451. if ("?" == params.charAt(0)) {
  9452. params = params.slice(1);
  9453. }
  9454. params = params.split("&");
  9455. var i = 0;
  9456. for (;i < params.length;i++) {
  9457. var src = params[i].split("=");
  9458. dst[src[0]] = src[1];
  9459. }
  9460. })();
  9461. var debugads = "debugads" in dst;
  9462. var wellKnownWords = {};
  9463. var g = true;
  9464. var self = {
  9465. aa : [],
  9466. ab : [],
  9467. ac : []
  9468. };
  9469. global.adSlots = self;
  9470. var reply = false;
  9471. var typePattern = null;
  9472. var context = function(opt_attributes) {
  9473. opt_attributes.defineSlot = function(name, opt_attributes, deepDataAndEvents) {
  9474. var jQuery = global.googletag;
  9475. return{
  9476. type : "dfpads",
  9477. data : jQuery.defineSlot(name, opt_attributes, deepDataAndEvents).addService(jQuery.pubads())
  9478. };
  9479. };
  9480. return opt_attributes;
  9481. }({});
  9482. global.googleAdsModule = context;
  9483. var previousKey = false;
  9484. global.supersonicAds = function(opt_attributes) {
  9485. opt_attributes.BrandConnectDoneEvent = function() {
  9486. global.hasEngagement = false;
  9487. global.MC.checkVideoAds();
  9488. };
  9489. opt_attributes.BrandConnectOpenEvent = function() {
  9490. };
  9491. opt_attributes.BrandConnectCloseEvent = function() {
  9492. clearMenus();
  9493. SSA_CORE.BrandConnect.close();
  9494. };
  9495. opt_attributes.BrandConnectCompletedEvent = function() {
  9496. };
  9497. opt_attributes.BrandConnectReadyEvent = function(value) {
  9498. previousKey = "undefined" !== typeof value && value.length ? true : false;
  9499. global.hasEngagement = previousKey;
  9500. };
  9501. return opt_attributes;
  9502. }({});
  9503. global.openOfferwall = function() {
  9504. if (null != SSA_CORE) {
  9505. $("#offerwallIframe").attr("src", "http://www.supersonicads.com/delivery/panel.php?applicationKey=" + EnvConfig.supersonic_app_key + "&applicationUserId=" + global.ssa_json.custom_user_id + "&custom_user_id=" + global.ssa_json.custom_user_id + "&applicationUserIdSignature=optional");
  9506. $("#oferwallContainer").fadeIn(400);
  9507. }
  9508. };
  9509. global.closeOfferwall = function() {
  9510. $("#oferwallContainer").fadeOut(400);
  9511. global.MC.onOffwerwallClose();
  9512. };
  9513. global.openVideoAd = function() {
  9514. if (null != SSA_CORE) {
  9515. if (previousKey) {
  9516. SSA_CORE.BrandConnect.engage();
  9517. func(".ssaInterstitialTopBar", 200);
  9518. }
  9519. }
  9520. };
  9521. global.closeVideoContainer = clearMenus;
  9522. global.closeVideoAd = function() {
  9523. $(".ssaInterstitialClose").click();
  9524. };
  9525. global.TRModule = function() {
  9526. var proto = {};
  9527. var text = null;
  9528. proto.handleHasSurvey = function(textAlt) {
  9529. text = textAlt;
  9530. };
  9531. proto.handleNoSurvey = function() {
  9532. text = null;
  9533. };
  9534. proto.init = function(type) {
  9535. TapResearch.init({
  9536. api_token : global.EnvConfig.tap_research_api_key,
  9537. user_identifier : "" + type,
  9538. has_survey_callback : global.TRModule.handleHasSurvey,
  9539. no_survey_callback : global.TRModule.handleNoSurvey
  9540. });
  9541. };
  9542. proto.hasSurveyData = function() {
  9543. return null != text && text.has_offer;
  9544. };
  9545. proto.openOfferWall = function() {
  9546. $("#offerwallIframe").attr("src", text.offer_url);
  9547. $("#oferwallContainer").fadeIn(400);
  9548. };
  9549. proto.closeOfferWall = function() {
  9550. $("#oferwallContainer").fadeOut(400);
  9551. global.MC.onOffwerwallClose();
  9552. };
  9553. return proto;
  9554. }();
  9555. global.getABGroup = Sprite;
  9556. global.refreshAd = function(count) {
  9557. run(count);
  9558. };
  9559. global.destroyAd = function(packs) {
  9560. var params = [];
  9561. var i = 0;
  9562. for (;i < packs.length;i++) {
  9563. if (!("type" in packs[i] && "dfpads" != packs[i].type)) {
  9564. if (debugads) {
  9565. console.log("DFP: destroying:" + packs[i].data.A);
  9566. }
  9567. params.push(packs[i].data);
  9568. }
  9569. }
  9570. if (global.googletag) {
  9571. if (global.googletag.pubads) {
  9572. if (global.googletag.pubads().clear) {
  9573. global.googletag.pubads().clear(params);
  9574. }
  9575. }
  9576. }
  9577. };
  9578. var left = {
  9579. a : false
  9580. };
  9581. global.agarAdModule = left;
  9582. wellKnownWords.ABGroupDFP = function() {
  9583. return "AB9" in dst ? +dst.AB9 : global.localStorage ? (null == global.localStorage.AB9 && (global.localStorage.AB9 = 0 + ~~(100 * Math.random())), +global.localStorage.AB9) : 0;
  9584. }();
  9585. global.location.search.indexOf("fb");
  9586. left.a = global.hasBottomAd;
  9587. if (debugads) {
  9588. console.log("Init ads");
  9589. }
  9590. (function() {
  9591. var moduleName = {};
  9592. var paths = null;
  9593. var elem = null;
  9594. var normalizedName = null;
  9595. var attributeName = null;
  9596. var h = -1 != global.location.search.indexOf("fb");
  9597. var a = left.a;
  9598. if (h) {
  9599. moduleName = "/116850162/Agario_FB_300x250";
  9600. normalizedName = "/116850162/Agario_FB_300x250_Stats";
  9601. attributeName = "/116850162/Agario_FB_300x250";
  9602. } else {
  9603. attributeName = "/116850162/300x250_init";
  9604. paths = "/116850162/728x90_init";
  9605. moduleName = "/116850162/300x250_login";
  9606. normalizedName = "/116850162/300x250_stats";
  9607. elem = "/116850162/728x90_login";
  9608. }
  9609. var player = global.googletag;
  9610. player.cmd.push(function() {
  9611. player.pubads().setTargeting("abtest", Sprite("ABGroupDFP") + "");
  9612. self.ac.push(context.defineSlot(attributeName, [300, 250], "g300x250"));
  9613. if (a) {
  9614. self.ac.push(context.defineSlot(paths, [728, 90], "g728x90"));
  9615. }
  9616. self.ab.push(context.defineSlot(normalizedName, [300, 250], "s300x250"));
  9617. self.aa.push(context.defineSlot(moduleName, [300, 250], "a300x250"));
  9618. if (a) {
  9619. self.aa.push(context.defineSlot(elem, [728, 90], "a728x90"));
  9620. }
  9621. player.pubads().enableSingleRequest();
  9622. player.pubads().disableInitialLoad();
  9623. player.enableServices();
  9624. reply = true;
  9625. if (null != typePattern) {
  9626. console.log("refreshing from queue");
  9627. run(typePattern);
  9628. }
  9629. });
  9630. })();
  9631. if (debugads) {
  9632. console.log("Ads initted");
  9633. }
  9634. if (debugads) {
  9635. console.log("Your group: ", "dfp");
  9636. }
  9637. })(window, window.jQuery);
  9638. (function(exports) {
  9639. function TimeSeries(options) {
  9640. this.options = Util.extend({}, TimeSeries.defaultOptions, options);
  9641. this.clear();
  9642. }
  9643. function SmoothieChart(options) {
  9644. this.options = Util.extend({}, SmoothieChart.defaultChartOptions, options);
  9645. this.seriesSet = [];
  9646. this.currentValueRange = 1;
  9647. this.currentVisMinValue = 0;
  9648. this.lastRenderTimeMillis = 0;
  9649. }
  9650. var Util = {
  9651. extend : function() {
  9652. arguments[0] = arguments[0] || {};
  9653. var i = 1;
  9654. for (;i < arguments.length;i++) {
  9655. var key;
  9656. for (key in arguments[i]) {
  9657. if (arguments[i].hasOwnProperty(key)) {
  9658. if (typeof arguments[i][key] === "object") {
  9659. if (arguments[i][key] instanceof Array) {
  9660. arguments[0][key] = arguments[i][key];
  9661. } else {
  9662. arguments[0][key] = Util.extend(arguments[0][key], arguments[i][key]);
  9663. }
  9664. } else {
  9665. arguments[0][key] = arguments[i][key];
  9666. }
  9667. }
  9668. }
  9669. }
  9670. return arguments[0];
  9671. }
  9672. };
  9673. TimeSeries.defaultOptions = {
  9674. resetBoundsInterval : 3E3,
  9675. resetBounds : true
  9676. };
  9677. TimeSeries.prototype.clear = function() {
  9678. this.data = [];
  9679. this.maxValue = Number.NaN;
  9680. this.minValue = Number.NaN;
  9681. };
  9682. TimeSeries.prototype.resetBounds = function() {
  9683. if (this.data.length) {
  9684. this.maxValue = this.data[0][1];
  9685. this.minValue = this.data[0][1];
  9686. var dataIndex = 1;
  9687. for (;dataIndex < this.data.length;dataIndex++) {
  9688. var value = this.data[dataIndex][1];
  9689. if (value > this.maxValue) {
  9690. this.maxValue = value;
  9691. }
  9692. if (value < this.minValue) {
  9693. this.minValue = value;
  9694. }
  9695. }
  9696. } else {
  9697. this.maxValue = Number.NaN;
  9698. this.minValue = Number.NaN;
  9699. }
  9700. };
  9701. TimeSeries.prototype.append = function(timestamp, value, opt_a2) {
  9702. var i = this.data.length - 1;
  9703. for (;i >= 0 && this.data[i][0] > timestamp;) {
  9704. i--;
  9705. }
  9706. if (i === -1) {
  9707. this.data.splice(0, 0, [timestamp, value]);
  9708. } else {
  9709. if (this.data.length > 0 && this.data[i][0] === timestamp) {
  9710. if (opt_a2) {
  9711. this.data[i][1] += value;
  9712. value = this.data[i][1];
  9713. } else {
  9714. this.data[i][1] = value;
  9715. }
  9716. } else {
  9717. if (i < this.data.length - 1) {
  9718. this.data.splice(i + 1, 0, [timestamp, value]);
  9719. } else {
  9720. this.data.push([timestamp, value]);
  9721. }
  9722. }
  9723. }
  9724. this.maxValue = isNaN(this.maxValue) ? value : Math.max(this.maxValue, value);
  9725. this.minValue = isNaN(this.minValue) ? value : Math.min(this.minValue, value);
  9726. };
  9727. TimeSeries.prototype.dropOldData = function(oldestValidTime, maxDataSetLength) {
  9728. var removeCount = 0;
  9729. for (;this.data.length - removeCount >= maxDataSetLength && this.data[removeCount + 1][0] < oldestValidTime;) {
  9730. removeCount++;
  9731. }
  9732. if (removeCount !== 0) {
  9733. this.data.splice(0, removeCount);
  9734. }
  9735. };
  9736. SmoothieChart.defaultChartOptions = {
  9737. name : "",
  9738. millisPerPixel : 20,
  9739. enableDpiScaling : true,
  9740. yMinFormatter : function(str, nDecimalDigits) {
  9741. return parseFloat(str).toFixed(nDecimalDigits);
  9742. },
  9743. yMaxFormatter : function(str, nDecimalDigits) {
  9744. return parseFloat(str).toFixed(nDecimalDigits);
  9745. },
  9746. maxValueScale : 1,
  9747. minValueScale : 1,
  9748. interpolation : "bezier",
  9749. scaleSmoothing : 0.125,
  9750. maxDataSetLength : 2,
  9751. scrollBackwards : false,
  9752. grid : {
  9753. fillStyle : "#000000",
  9754. strokeStyle : "#777777",
  9755. lineWidth : 1,
  9756. sharpLines : false,
  9757. millisPerLine : 1E3,
  9758. verticalSections : 2,
  9759. borderVisible : true
  9760. },
  9761. labels : {
  9762. fillStyle : "#ffffff",
  9763. disabled : false,
  9764. fontSize : 10,
  9765. fontFamily : "monospace",
  9766. precision : 2
  9767. },
  9768. horizontalLines : []
  9769. };
  9770. SmoothieChart.AnimateCompatibility = function() {
  9771. var requestAnimationFrame = function(callback, element) {
  9772. var requestAnimationFrame = window.requestAnimationFrame || (window.webkitRequestAnimationFrame || (window.mozRequestAnimationFrame || (window.oRequestAnimationFrame || (window.msRequestAnimationFrame || function($sanitize) {
  9773. return window.setTimeout(function() {
  9774. $sanitize((new Date).getTime());
  9775. }, 16);
  9776. }))));
  9777. return requestAnimationFrame.call(window, callback, element);
  9778. };
  9779. var cancelAnimationFrame = function(id) {
  9780. var cancel = window.cancelAnimationFrame || function(to) {
  9781. clearTimeout(to);
  9782. };
  9783. return cancel.call(window, id);
  9784. };
  9785. return{
  9786. requestAnimationFrame : requestAnimationFrame,
  9787. cancelAnimationFrame : cancelAnimationFrame
  9788. };
  9789. }();
  9790. SmoothieChart.defaultSeriesPresentationOptions = {
  9791. lineWidth : 1,
  9792. strokeStyle : "#ffffff"
  9793. };
  9794. SmoothieChart.prototype.addTimeSeries = function(timeSeries, options) {
  9795. this.seriesSet.push({
  9796. timeSeries : timeSeries,
  9797. options : Util.extend({}, SmoothieChart.defaultSeriesPresentationOptions, options)
  9798. });
  9799. if (timeSeries.options.resetBounds && timeSeries.options.resetBoundsInterval > 0) {
  9800. timeSeries.resetBoundsTimerId = setInterval(function() {
  9801. timeSeries.resetBounds();
  9802. }, timeSeries.options.resetBoundsInterval);
  9803. }
  9804. };
  9805. SmoothieChart.prototype.removeTimeSeries = function(timeSeries) {
  9806. var valuesLen = this.seriesSet.length;
  9807. var i = 0;
  9808. for (;i < valuesLen;i++) {
  9809. if (this.seriesSet[i].timeSeries === timeSeries) {
  9810. this.seriesSet.splice(i, 1);
  9811. break;
  9812. }
  9813. }
  9814. if (timeSeries.resetBoundsTimerId) {
  9815. clearInterval(timeSeries.resetBoundsTimerId);
  9816. }
  9817. };
  9818. SmoothieChart.prototype.getTimeSeriesOptions = function(timeSeries) {
  9819. var valuesLen = this.seriesSet.length;
  9820. var i = 0;
  9821. for (;i < valuesLen;i++) {
  9822. if (this.seriesSet[i].timeSeries === timeSeries) {
  9823. return this.seriesSet[i].options;
  9824. }
  9825. }
  9826. };
  9827. SmoothieChart.prototype.bringToFront = function(timeSeries) {
  9828. var valuesLen = this.seriesSet.length;
  9829. var i = 0;
  9830. for (;i < valuesLen;i++) {
  9831. if (this.seriesSet[i].timeSeries === timeSeries) {
  9832. var code = this.seriesSet.splice(i, 1);
  9833. this.seriesSet.push(code[0]);
  9834. break;
  9835. }
  9836. }
  9837. };
  9838. SmoothieChart.prototype.streamTo = function(canvas, delayMillis) {
  9839. this.canvas = canvas;
  9840. this.delay = delayMillis;
  9841. this.start();
  9842. };
  9843. SmoothieChart.prototype.resize = function() {
  9844. if (!this.options.enableDpiScaling || (!window || window.devicePixelRatio === 1)) {
  9845. return;
  9846. }
  9847. var ratio = window.devicePixelRatio;
  9848. var width = parseInt(this.canvas.getAttribute("width"));
  9849. var height = parseInt(this.canvas.getAttribute("height"));
  9850. if (!this.originalWidth || Math.floor(this.originalWidth * ratio) !== width) {
  9851. this.originalWidth = width;
  9852. this.canvas.setAttribute("width", Math.floor(width * ratio).toString());
  9853. this.canvas.style.width = width + "px";
  9854. this.canvas.getContext("2d").scale(ratio, ratio);
  9855. }
  9856. if (!this.originalHeight || Math.floor(this.originalHeight * ratio) !== height) {
  9857. this.originalHeight = height;
  9858. this.canvas.setAttribute("height", Math.floor(height * ratio).toString());
  9859. this.canvas.style.height = height + "px";
  9860. this.canvas.getContext("2d").scale(ratio, ratio);
  9861. }
  9862. };
  9863. SmoothieChart.prototype.start = function() {
  9864. if (this.frame) {
  9865. return;
  9866. }
  9867. var observableToAsync = function() {
  9868. this.frame = SmoothieChart.AnimateCompatibility.requestAnimationFrame(function() {
  9869. this.render();
  9870. observableToAsync();
  9871. }.bind(this));
  9872. }.bind(this);
  9873. observableToAsync();
  9874. };
  9875. SmoothieChart.prototype.stop = function() {
  9876. if (this.frame) {
  9877. SmoothieChart.AnimateCompatibility.cancelAnimationFrame(this.frame);
  9878. delete this.frame;
  9879. }
  9880. };
  9881. SmoothieChart.prototype.updateValueRange = function() {
  9882. var chartOptions = this.options;
  9883. var chartMaxValue = Number.NaN;
  9884. var chartMinValue = Number.NaN;
  9885. var d = 0;
  9886. for (;d < this.seriesSet.length;d++) {
  9887. var timeSeries = this.seriesSet[d].timeSeries;
  9888. if (!isNaN(timeSeries.maxValue)) {
  9889. chartMaxValue = !isNaN(chartMaxValue) ? Math.max(chartMaxValue, timeSeries.maxValue) : timeSeries.maxValue;
  9890. }
  9891. if (!isNaN(timeSeries.minValue)) {
  9892. chartMinValue = !isNaN(chartMinValue) ? Math.min(chartMinValue, timeSeries.minValue) : timeSeries.minValue;
  9893. }
  9894. }
  9895. if (chartOptions.maxValue != null) {
  9896. chartMaxValue = chartOptions.maxValue;
  9897. } else {
  9898. chartMaxValue *= chartOptions.maxValueScale;
  9899. }
  9900. if (chartOptions.minValue != null) {
  9901. chartMinValue = chartOptions.minValue;
  9902. } else {
  9903. chartMinValue -= Math.abs(chartMinValue * chartOptions.minValueScale - chartMinValue);
  9904. }
  9905. if (this.options.yRangeFunction) {
  9906. var range = this.options.yRangeFunction({
  9907. min : chartMinValue,
  9908. max : chartMaxValue
  9909. });
  9910. chartMinValue = range.min;
  9911. chartMaxValue = range.max;
  9912. }
  9913. if (!isNaN(chartMaxValue) && !isNaN(chartMinValue)) {
  9914. var targetValueRange = chartMaxValue - chartMinValue;
  9915. var valueRangeDiff = targetValueRange - this.currentValueRange;
  9916. var minValueDiff = chartMinValue - this.currentVisMinValue;
  9917. this.isAnimatingScale = Math.abs(valueRangeDiff) > 0.1 || Math.abs(minValueDiff) > 0.1;
  9918. this.currentValueRange += chartOptions.scaleSmoothing * valueRangeDiff;
  9919. this.currentVisMinValue += chartOptions.scaleSmoothing * minValueDiff;
  9920. }
  9921. this.valueRange = {
  9922. min : chartMinValue,
  9923. max : chartMaxValue
  9924. };
  9925. };
  9926. SmoothieChart.prototype.render = function(canvas, time) {
  9927. var nowMillis = (new Date).getTime();
  9928. if (!this.isAnimatingScale) {
  9929. var maxIdleMillis = Math.min(1E3 / 6, this.options.millisPerPixel);
  9930. if (nowMillis - this.lastRenderTimeMillis < maxIdleMillis) {
  9931. return;
  9932. }
  9933. }
  9934. this.resize();
  9935. this.lastRenderTimeMillis = nowMillis;
  9936. canvas = canvas || this.canvas;
  9937. time = time || nowMillis - (this.delay || 0);
  9938. time -= time % this.options.millisPerPixel;
  9939. var context = canvas.getContext("2d");
  9940. var chartOptions = this.options;
  9941. var dimensions = {
  9942. top : 0,
  9943. left : 0,
  9944. width : canvas.clientWidth,
  9945. height : canvas.clientHeight
  9946. };
  9947. var oldestValidTime = time - dimensions.width * chartOptions.millisPerPixel;
  9948. var valueToYPixel = function(value) {
  9949. var offset = value - this.currentVisMinValue;
  9950. return this.currentValueRange === 0 ? dimensions.height : dimensions.height - Math.round(offset / this.currentValueRange * dimensions.height);
  9951. }.bind(this);
  9952. var timeToXPixel = function(t) {
  9953. if (chartOptions.scrollBackwards) {
  9954. return Math.round((time - t) / chartOptions.millisPerPixel);
  9955. }
  9956. return Math.round(dimensions.width - (time - t) / chartOptions.millisPerPixel);
  9957. };
  9958. this.updateValueRange();
  9959. context.font = chartOptions.labels.fontSize + "px " + chartOptions.labels.fontFamily;
  9960. context.save();
  9961. context.translate(dimensions.left, dimensions.top);
  9962. context.beginPath();
  9963. context.rect(0, 0, dimensions.width, dimensions.height);
  9964. context.clip();
  9965. context.save();
  9966. context.fillStyle = chartOptions.grid.fillStyle;
  9967. context.clearRect(0, 0, dimensions.width, dimensions.height);
  9968. context.fillRect(0, 0, dimensions.width, dimensions.height);
  9969. context.restore();
  9970. context.save();
  9971. context.lineWidth = chartOptions.grid.lineWidth;
  9972. context.strokeStyle = chartOptions.grid.strokeStyle;
  9973. if (chartOptions.grid.millisPerLine > 0) {
  9974. context.beginPath();
  9975. var t = time - time % chartOptions.grid.millisPerLine;
  9976. for (;t >= oldestValidTime;t -= chartOptions.grid.millisPerLine) {
  9977. var gx = timeToXPixel(t);
  9978. if (chartOptions.grid.sharpLines) {
  9979. gx -= 0.5;
  9980. }
  9981. context.moveTo(gx, 0);
  9982. context.lineTo(gx, dimensions.height);
  9983. }
  9984. context.stroke();
  9985. context.closePath();
  9986. }
  9987. var v = 1;
  9988. for (;v < chartOptions.grid.verticalSections;v++) {
  9989. var gy = Math.round(v * dimensions.height / chartOptions.grid.verticalSections);
  9990. if (chartOptions.grid.sharpLines) {
  9991. gy -= 0.5;
  9992. }
  9993. context.beginPath();
  9994. context.moveTo(0, gy);
  9995. context.lineTo(dimensions.width, gy);
  9996. context.stroke();
  9997. context.closePath();
  9998. }
  9999. if (chartOptions.grid.borderVisible) {
  10000. context.beginPath();
  10001. context.strokeRect(0, 0, dimensions.width, dimensions.height);
  10002. context.closePath();
  10003. }
  10004. context.restore();
  10005. if (chartOptions.horizontalLines && chartOptions.horizontalLines.length) {
  10006. var hl = 0;
  10007. for (;hl < chartOptions.horizontalLines.length;hl++) {
  10008. var line = chartOptions.horizontalLines[hl];
  10009. var hly = Math.round(valueToYPixel(line.value)) - 0.5;
  10010. context.strokeStyle = line.color || "#ffffff";
  10011. context.lineWidth = line.lineWidth || 1;
  10012. context.beginPath();
  10013. context.moveTo(0, hly);
  10014. context.lineTo(dimensions.width, hly);
  10015. context.stroke();
  10016. context.closePath();
  10017. }
  10018. }
  10019. var d = 0;
  10020. for (;d < this.seriesSet.length;d++) {
  10021. context.save();
  10022. var timeSeries = this.seriesSet[d].timeSeries;
  10023. var codeSegments = timeSeries.data;
  10024. var seriesOptions = this.seriesSet[d].options;
  10025. timeSeries.dropOldData(oldestValidTime, chartOptions.maxDataSetLength);
  10026. context.lineWidth = seriesOptions.lineWidth;
  10027. context.strokeStyle = seriesOptions.strokeStyle;
  10028. context.beginPath();
  10029. var firstX = 0;
  10030. var lastX = 0;
  10031. var lastY = 0;
  10032. var i = 0;
  10033. for (;i < codeSegments.length && codeSegments.length !== 1;i++) {
  10034. var x = timeToXPixel(codeSegments[i][0]);
  10035. var y = valueToYPixel(codeSegments[i][1]);
  10036. if (i === 0) {
  10037. firstX = x;
  10038. context.moveTo(x, y);
  10039. } else {
  10040. switch(chartOptions.interpolation) {
  10041. case "linear":
  10042. ;
  10043. case "line":
  10044. context.lineTo(x, y);
  10045. break;
  10046. case "bezier":
  10047. ;
  10048. default:
  10049. context.bezierCurveTo(Math.round((lastX + x) / 2), lastY, Math.round(lastX + x) / 2, y, x, y);
  10050. break;
  10051. case "step":
  10052. context.lineTo(x, lastY);
  10053. context.lineTo(x, y);
  10054. break;
  10055. }
  10056. }
  10057. lastX = x;
  10058. lastY = y;
  10059. }
  10060. if (codeSegments.length > 1) {
  10061. if (seriesOptions.fillStyle) {
  10062. context.lineTo(dimensions.width + seriesOptions.lineWidth + 1, lastY);
  10063. context.lineTo(dimensions.width + seriesOptions.lineWidth + 1, dimensions.height + seriesOptions.lineWidth + 1);
  10064. context.lineTo(firstX, dimensions.height + seriesOptions.lineWidth);
  10065. context.fillStyle = seriesOptions.fillStyle;
  10066. context.fill();
  10067. }
  10068. if (seriesOptions.strokeStyle && seriesOptions.strokeStyle !== "none") {
  10069. context.stroke();
  10070. }
  10071. context.closePath();
  10072. }
  10073. context.restore();
  10074. }
  10075. if (!chartOptions.labels.disabled && (!isNaN(this.valueRange.min) && !isNaN(this.valueRange.max))) {
  10076. var maxValueString = chartOptions.yMaxFormatter(this.valueRange.max, chartOptions.labels.precision);
  10077. var minValueString = chartOptions.yMinFormatter(this.valueRange.min, chartOptions.labels.precision);
  10078. var offsetX = chartOptions.scrollBackwards ? 0 : dimensions.width - context.measureText(maxValueString).width - 2;
  10079. context.fillStyle = chartOptions.labels.fillStyle;
  10080. context.fillText(maxValueString, offsetX, chartOptions.labels.fontSize);
  10081. context.fillText(minValueString, offsetX, dimensions.height - 2);
  10082. if (chartOptions.name != "") {
  10083. context.fillText(chartOptions.name, 2, chartOptions.labels.fontSize);
  10084. }
  10085. }
  10086. if (chartOptions.timestampFormatter && chartOptions.grid.millisPerLine > 0) {
  10087. var textUntilX = chartOptions.scrollBackwards ? context.measureText(minValueString).width : dimensions.width - context.measureText(minValueString).width + 4;
  10088. t = time - time % chartOptions.grid.millisPerLine;
  10089. for (;t >= oldestValidTime;t -= chartOptions.grid.millisPerLine) {
  10090. gx = timeToXPixel(t);
  10091. if (!chartOptions.scrollBackwards && gx < textUntilX || chartOptions.scrollBackwards && gx > textUntilX) {
  10092. var tx = new Date(t);
  10093. var ts = chartOptions.timestampFormatter(tx);
  10094. var tsWidth = context.measureText(ts).width;
  10095. textUntilX = chartOptions.scrollBackwards ? gx + tsWidth + 2 : gx - tsWidth - 2;
  10096. context.fillStyle = chartOptions.labels.fillStyle;
  10097. if (chartOptions.scrollBackwards) {
  10098. context.fillText(ts, gx, dimensions.height - 2);
  10099. } else {
  10100. context.fillText(ts, gx - tsWidth, dimensions.height - 2);
  10101. }
  10102. }
  10103. }
  10104. }
  10105. context.restore();
  10106. };
  10107. SmoothieChart.timeFormatter = function(date) {
  10108. function pad2(number) {
  10109. return(number < 10 ? "0" : "") + number;
  10110. }
  10111. return pad2(date.getHours()) + ":" + pad2(date.getMinutes()) + ":" + pad2(date.getSeconds());
  10112. };
  10113. exports.TimeSeries = TimeSeries;
  10114. exports.SmoothieChart = SmoothieChart;
  10115. })(typeof exports === "undefined" ? this : exports);
  10116. var LZString = function() {
  10117. function endsWith(str, i) {
  10118. if (!parent[str]) {
  10119. parent[str] = {};
  10120. var tailPos = 0;
  10121. for (;tailPos < str.length;tailPos++) {
  10122. parent[str][str.charAt(tailPos)] = tailPos;
  10123. }
  10124. }
  10125. return parent[str][i];
  10126. }
  10127. var stringFromCharCode = String.fromCharCode;
  10128. var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
  10129. var response = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$";
  10130. var parent = {};
  10131. var self = {
  10132. compressToBase64 : function(input) {
  10133. if (null == input) {
  10134. return "";
  10135. }
  10136. var output = self._compress(input, 6, function(p) {
  10137. return str.charAt(p);
  10138. });
  10139. switch(output.length % 4) {
  10140. default:
  10141. ;
  10142. case 0:
  10143. return output;
  10144. case 1:
  10145. return output + "===";
  10146. case 2:
  10147. return output + "==";
  10148. case 3:
  10149. return output + "=";
  10150. }
  10151. },
  10152. decompressFromBase64 : function(c) {
  10153. return null == c ? "" : "" == c ? null : self._decompress(c.length, 32, function(n) {
  10154. return endsWith(str, c.charAt(n));
  10155. });
  10156. },
  10157. compressToUTF16 : function(input) {
  10158. return null == input ? "" : self._compress(input, 15, function(dataAndEvents) {
  10159. return stringFromCharCode(dataAndEvents + 32);
  10160. }) + " ";
  10161. },
  10162. decompressFromUTF16 : function(key) {
  10163. return null == key ? "" : "" == key ? null : self._decompress(key.length, 16384, function(n) {
  10164. return key.charCodeAt(n) - 32;
  10165. });
  10166. },
  10167. compressToUint8Array : function(str) {
  10168. var input = self.compress(str);
  10169. var outputBuffer = new Uint8Array(2 * input.length);
  10170. var y = 0;
  10171. var x = input.length;
  10172. for (;x > y;y++) {
  10173. var dataLength = input.charCodeAt(y);
  10174. outputBuffer[2 * y] = dataLength >>> 8;
  10175. outputBuffer[2 * y + 1] = dataLength % 256;
  10176. }
  10177. return outputBuffer;
  10178. },
  10179. decompressFromUint8Array : function(buffer) {
  10180. if (null === buffer || void 0 === buffer) {
  10181. return self.decompress(buffer);
  10182. }
  10183. var employees = new Array(buffer.length / 2);
  10184. var i = 0;
  10185. var l = employees.length;
  10186. for (;l > i;i++) {
  10187. employees[i] = 256 * buffer[2 * i] + buffer[2 * i + 1];
  10188. }
  10189. var output = [];
  10190. return employees.forEach(function(currentValue) {
  10191. output.push(stringFromCharCode(currentValue));
  10192. }), self.decompress(output.join(""));
  10193. },
  10194. compressToEncodedURIComponent : function(i) {
  10195. return null == i ? "" : self._compress(i, 6, function(index2) {
  10196. return response.charAt(index2);
  10197. });
  10198. },
  10199. decompressFromEncodedURIComponent : function(key) {
  10200. return null == key ? "" : "" == key ? null : (key = key.replace(/ /g, "+"), self._decompress(key.length, 32, function(index2) {
  10201. return endsWith(response, key.charAt(index2));
  10202. }));
  10203. },
  10204. compress : function(source) {
  10205. return self._compress(source, 16, function(opt_e) {
  10206. return stringFromCharCode(opt_e);
  10207. });
  10208. },
  10209. _compress : function(string, opt_attributes, require) {
  10210. if (null == string) {
  10211. return "";
  10212. }
  10213. var e;
  10214. var node;
  10215. var i;
  10216. var a = {};
  10217. var scripts = {};
  10218. var length = "";
  10219. var start = "";
  10220. var ch = "";
  10221. var right = 2;
  10222. var val = 3;
  10223. var exponent = 2;
  10224. var rulesets = [];
  10225. var paths = 0;
  10226. var v = 0;
  10227. i = 0;
  10228. for (;i < string.length;i += 1) {
  10229. if (length = string.charAt(i), Object.prototype.hasOwnProperty.call(a, length) || (a[length] = val++, scripts[length] = true), start = ch + length, Object.prototype.hasOwnProperty.call(a, start)) {
  10230. ch = start;
  10231. } else {
  10232. if (Object.prototype.hasOwnProperty.call(scripts, ch)) {
  10233. if (ch.charCodeAt(0) < 256) {
  10234. e = 0;
  10235. for (;exponent > e;e++) {
  10236. paths <<= 1;
  10237. if (v == opt_attributes - 1) {
  10238. v = 0;
  10239. rulesets.push(require(paths));
  10240. paths = 0;
  10241. } else {
  10242. v++;
  10243. }
  10244. }
  10245. node = ch.charCodeAt(0);
  10246. e = 0;
  10247. for (;8 > e;e++) {
  10248. paths = paths << 1 | 1 & node;
  10249. if (v == opt_attributes - 1) {
  10250. v = 0;
  10251. rulesets.push(require(paths));
  10252. paths = 0;
  10253. } else {
  10254. v++;
  10255. }
  10256. node >>= 1;
  10257. }
  10258. } else {
  10259. node = 1;
  10260. e = 0;
  10261. for (;exponent > e;e++) {
  10262. paths = paths << 1 | node;
  10263. if (v == opt_attributes - 1) {
  10264. v = 0;
  10265. rulesets.push(require(paths));
  10266. paths = 0;
  10267. } else {
  10268. v++;
  10269. }
  10270. node = 0;
  10271. }
  10272. node = ch.charCodeAt(0);
  10273. e = 0;
  10274. for (;16 > e;e++) {
  10275. paths = paths << 1 | 1 & node;
  10276. if (v == opt_attributes - 1) {
  10277. v = 0;
  10278. rulesets.push(require(paths));
  10279. paths = 0;
  10280. } else {
  10281. v++;
  10282. }
  10283. node >>= 1;
  10284. }
  10285. }
  10286. right--;
  10287. if (0 == right) {
  10288. right = Math.pow(2, exponent);
  10289. exponent++;
  10290. }
  10291. delete scripts[ch];
  10292. } else {
  10293. node = a[ch];
  10294. e = 0;
  10295. for (;exponent > e;e++) {
  10296. paths = paths << 1 | 1 & node;
  10297. if (v == opt_attributes - 1) {
  10298. v = 0;
  10299. rulesets.push(require(paths));
  10300. paths = 0;
  10301. } else {
  10302. v++;
  10303. }
  10304. node >>= 1;
  10305. }
  10306. }
  10307. right--;
  10308. if (0 == right) {
  10309. right = Math.pow(2, exponent);
  10310. exponent++;
  10311. }
  10312. a[start] = val++;
  10313. ch = String(length);
  10314. }
  10315. }
  10316. if ("" !== ch) {
  10317. if (Object.prototype.hasOwnProperty.call(scripts, ch)) {
  10318. if (ch.charCodeAt(0) < 256) {
  10319. e = 0;
  10320. for (;exponent > e;e++) {
  10321. paths <<= 1;
  10322. if (v == opt_attributes - 1) {
  10323. v = 0;
  10324. rulesets.push(require(paths));
  10325. paths = 0;
  10326. } else {
  10327. v++;
  10328. }
  10329. }
  10330. node = ch.charCodeAt(0);
  10331. e = 0;
  10332. for (;8 > e;e++) {
  10333. paths = paths << 1 | 1 & node;
  10334. if (v == opt_attributes - 1) {
  10335. v = 0;
  10336. rulesets.push(require(paths));
  10337. paths = 0;
  10338. } else {
  10339. v++;
  10340. }
  10341. node >>= 1;
  10342. }
  10343. } else {
  10344. node = 1;
  10345. e = 0;
  10346. for (;exponent > e;e++) {
  10347. paths = paths << 1 | node;
  10348. if (v == opt_attributes - 1) {
  10349. v = 0;
  10350. rulesets.push(require(paths));
  10351. paths = 0;
  10352. } else {
  10353. v++;
  10354. }
  10355. node = 0;
  10356. }
  10357. node = ch.charCodeAt(0);
  10358. e = 0;
  10359. for (;16 > e;e++) {
  10360. paths = paths << 1 | 1 & node;
  10361. if (v == opt_attributes - 1) {
  10362. v = 0;
  10363. rulesets.push(require(paths));
  10364. paths = 0;
  10365. } else {
  10366. v++;
  10367. }
  10368. node >>= 1;
  10369. }
  10370. }
  10371. right--;
  10372. if (0 == right) {
  10373. right = Math.pow(2, exponent);
  10374. exponent++;
  10375. }
  10376. delete scripts[ch];
  10377. } else {
  10378. node = a[ch];
  10379. e = 0;
  10380. for (;exponent > e;e++) {
  10381. paths = paths << 1 | 1 & node;
  10382. if (v == opt_attributes - 1) {
  10383. v = 0;
  10384. rulesets.push(require(paths));
  10385. paths = 0;
  10386. } else {
  10387. v++;
  10388. }
  10389. node >>= 1;
  10390. }
  10391. }
  10392. right--;
  10393. if (0 == right) {
  10394. right = Math.pow(2, exponent);
  10395. exponent++;
  10396. }
  10397. }
  10398. node = 2;
  10399. e = 0;
  10400. for (;exponent > e;e++) {
  10401. paths = paths << 1 | 1 & node;
  10402. if (v == opt_attributes - 1) {
  10403. v = 0;
  10404. rulesets.push(require(paths));
  10405. paths = 0;
  10406. } else {
  10407. v++;
  10408. }
  10409. node >>= 1;
  10410. }
  10411. for (;;) {
  10412. if (paths <<= 1, v == opt_attributes - 1) {
  10413. rulesets.push(require(paths));
  10414. break;
  10415. }
  10416. v++;
  10417. }
  10418. return rulesets.join("");
  10419. },
  10420. decompress : function(value) {
  10421. return null == value ? "" : "" == value ? null : self._decompress(value.length, 32768, function(n) {
  10422. return value.charCodeAt(n);
  10423. });
  10424. },
  10425. _decompress : function(i, opt_attributes, $timeout) {
  10426. var mode;
  10427. var key;
  10428. var text;
  10429. var value;
  10430. var u;
  10431. var n;
  10432. var cfdbname;
  10433. var val;
  10434. var res = [];
  10435. var right = 4;
  10436. var resLength = 4;
  10437. var exponent = 3;
  10438. var source = "";
  10439. var params = [];
  10440. var data = {
  10441. val : $timeout(0),
  10442. position : opt_attributes,
  10443. index : 1
  10444. };
  10445. key = 0;
  10446. for (;3 > key;key += 1) {
  10447. res[key] = key;
  10448. }
  10449. value = 0;
  10450. n = Math.pow(2, 2);
  10451. cfdbname = 1;
  10452. for (;cfdbname != n;) {
  10453. u = data.val & data.position;
  10454. data.position >>= 1;
  10455. if (0 == data.position) {
  10456. data.position = opt_attributes;
  10457. data.val = $timeout(data.index++);
  10458. }
  10459. value |= (u > 0 ? 1 : 0) * cfdbname;
  10460. cfdbname <<= 1;
  10461. }
  10462. switch(mode = value) {
  10463. case 0:
  10464. value = 0;
  10465. n = Math.pow(2, 8);
  10466. cfdbname = 1;
  10467. for (;cfdbname != n;) {
  10468. u = data.val & data.position;
  10469. data.position >>= 1;
  10470. if (0 == data.position) {
  10471. data.position = opt_attributes;
  10472. data.val = $timeout(data.index++);
  10473. }
  10474. value |= (u > 0 ? 1 : 0) * cfdbname;
  10475. cfdbname <<= 1;
  10476. }
  10477. val = stringFromCharCode(value);
  10478. break;
  10479. case 1:
  10480. value = 0;
  10481. n = Math.pow(2, 16);
  10482. cfdbname = 1;
  10483. for (;cfdbname != n;) {
  10484. u = data.val & data.position;
  10485. data.position >>= 1;
  10486. if (0 == data.position) {
  10487. data.position = opt_attributes;
  10488. data.val = $timeout(data.index++);
  10489. }
  10490. value |= (u > 0 ? 1 : 0) * cfdbname;
  10491. cfdbname <<= 1;
  10492. }
  10493. val = stringFromCharCode(value);
  10494. break;
  10495. case 2:
  10496. return "";
  10497. }
  10498. res[3] = val;
  10499. text = val;
  10500. params.push(val);
  10501. for (;;) {
  10502. if (data.index > i) {
  10503. return "";
  10504. }
  10505. value = 0;
  10506. n = Math.pow(2, exponent);
  10507. cfdbname = 1;
  10508. for (;cfdbname != n;) {
  10509. u = data.val & data.position;
  10510. data.position >>= 1;
  10511. if (0 == data.position) {
  10512. data.position = opt_attributes;
  10513. data.val = $timeout(data.index++);
  10514. }
  10515. value |= (u > 0 ? 1 : 0) * cfdbname;
  10516. cfdbname <<= 1;
  10517. }
  10518. switch(val = value) {
  10519. case 0:
  10520. value = 0;
  10521. n = Math.pow(2, 8);
  10522. cfdbname = 1;
  10523. for (;cfdbname != n;) {
  10524. u = data.val & data.position;
  10525. data.position >>= 1;
  10526. if (0 == data.position) {
  10527. data.position = opt_attributes;
  10528. data.val = $timeout(data.index++);
  10529. }
  10530. value |= (u > 0 ? 1 : 0) * cfdbname;
  10531. cfdbname <<= 1;
  10532. }
  10533. res[resLength++] = stringFromCharCode(value);
  10534. val = resLength - 1;
  10535. right--;
  10536. break;
  10537. case 1:
  10538. value = 0;
  10539. n = Math.pow(2, 16);
  10540. cfdbname = 1;
  10541. for (;cfdbname != n;) {
  10542. u = data.val & data.position;
  10543. data.position >>= 1;
  10544. if (0 == data.position) {
  10545. data.position = opt_attributes;
  10546. data.val = $timeout(data.index++);
  10547. }
  10548. value |= (u > 0 ? 1 : 0) * cfdbname;
  10549. cfdbname <<= 1;
  10550. }
  10551. res[resLength++] = stringFromCharCode(value);
  10552. val = resLength - 1;
  10553. right--;
  10554. break;
  10555. case 2:
  10556. return params.join("");
  10557. }
  10558. if (0 == right && (right = Math.pow(2, exponent), exponent++), res[val]) {
  10559. source = res[val];
  10560. } else {
  10561. if (val !== resLength) {
  10562. return null;
  10563. }
  10564. source = text + text.charAt(0);
  10565. }
  10566. params.push(source);
  10567. res[resLength++] = text + source.charAt(0);
  10568. right--;
  10569. text = source;
  10570. if (0 == right) {
  10571. right = Math.pow(2, exponent);
  10572. exponent++;
  10573. }
  10574. }
  10575. }
  10576. };
  10577. return self;
  10578. }();
  10579. if ("function" == typeof define && define.amd) {
  10580. define(function() {
  10581. return LZString;
  10582. });
  10583. } else {
  10584. if ("undefined" != typeof module) {
  10585. if (null != module) {
  10586. module.exports = LZString;
  10587. }
  10588. }
  10589. }
  10590. var cc = {
  10591. version : "1.0.10",
  10592. jqueryversionrequired : "1.4.4",
  10593. initobj : false,
  10594. ismobile : false,
  10595. setupcomplete : false,
  10596. allasked : false,
  10597. checkedlocal : false,
  10598. checkedremote : false,
  10599. remoteresponse : false,
  10600. frommodal : false,
  10601. hassetupmobile : false,
  10602. sessionkey : false,
  10603. noclosewin : false,
  10604. closingmodal : false,
  10605. jqueryattempts : 0,
  10606. reloadkey : false,
  10607. forcereload : false,
  10608. allagree : true,
  10609. checkedipdb : false,
  10610. cookies : {},
  10611. uniqelemid : 0,
  10612. executionblock : 0,
  10613. defaultCookies : {
  10614. social : {},
  10615. analytics : {},
  10616. advertising : {}
  10617. },
  10618. remoteCookies : {},
  10619. approved : {},
  10620. bindfunctions : {},
  10621. checkeddonottrack : false,
  10622. eumemberstates : ["BE", "BG", "CZ", "DK", "DE", "EE", "IE", "EL", "ES", "FR", "IT", "CY", "LV", "LT", "LU", "HU", "MT", "NL", "AT", "PL", "PT", "RO", "SI", "SK", "FI", "SE", "UK"],
  10623. settings : {
  10624. refreshOnConsent : false,
  10625. style : "light",
  10626. bannerPosition : "top",
  10627. clickAnyLinkToConsent : true,
  10628. privacyPolicy : false,
  10629. collectStatistics : false,
  10630. tagPosition : "bottom-right",
  10631. useSSL : false,
  10632. clearprefs : false,
  10633. consenttype : "explicit",
  10634. onlyshowbanneronce : false,
  10635. hideallsitesbutton : true,
  10636. disableallsites : false,
  10637. hideprivacysettingstab : true,
  10638. scriptdelay : 800,
  10639. testmode : false,
  10640. overridewarnings : false,
  10641. onlyshowwithineu : true,
  10642. ipinfodbkey : false,
  10643. ignoreDoNotTrack : false
  10644. },
  10645. strings : {
  10646. jqueryWarning : "Developer: Caution! In order to use Cookie Consent, you need to use jQuery 1.4.4 or higher.",
  10647. noJsBlocksWarning : "Developer: Warning! It doesn't look like you have set up Cookie Consent correctly. You must follow all steps of the setup guide at http://silktide.com/cookieconsent/code. If you believe you are seeing this message in error, you can use the overridewarnings setting (see docs for more information).",
  10648. noKeyWarning : "Developer: Warning! You have set the plugin to only show within the EU, but you have not provided an API key for the IP Info DB. Check the documentation at http://silktide.com/cookieconsent for more information",
  10649. invalidKeyWarning : "Developer: Warning! You must provide a valid API key for IP Info DB. Check the documentation at http://silktide.com/cookieconsent for more information",
  10650. necessaryDefaultTitle : "Strictly necessary",
  10651. socialDefaultTitle : "Social media",
  10652. analyticsDefaultTitle : "Analytics",
  10653. advertisingDefaultTitle : "Advertising",
  10654. defaultTitle : "Default cookie title",
  10655. necessaryDefaultDescription : "Some cookies on this website are strictly necessary and cannot be disabled.",
  10656. socialDefaultDescription : "Facebook, Twitter and other social websites need to know who you are to work properly.",
  10657. analyticsDefaultDescription : "We anonymously measure your use of this website to improve your experience.",
  10658. advertisingDefaultDescription : "Adverts will be chosen for you automatically based on your past behaviour and interests.",
  10659. defaultDescription : "Default cookie description.",
  10660. notificationTitle : "Cookies help us provide, protect and improve our services and to make your experience more fun! Third parties also use cookies on our site to tailor adverts to your interests on third party websites. By scrolling, clicking or navigating our site, you consent to this use of cookies.",
  10661. notificationTitleImplicit : "We use cookies to ensure you get the best experience on our website",
  10662. poweredBy : "Cookie Consent plugin for the EU cookie law",
  10663. privacyPolicy : "Privacy policy",
  10664. learnMore : "Learn more",
  10665. seeDetails : "Know more about it our cookie usage",
  10666. seeDetailsImplicit : "change your settings",
  10667. hideDetails : "hide details",
  10668. savePreference : "Save preference",
  10669. saveForAllSites : "Save for all sites",
  10670. allowCookies : "OK",
  10671. allowCookiesImplicit : "Close",
  10672. allowForAllSites : "Allow for all sites",
  10673. customCookie : "This website uses a custom type of cookie which needs specific approval",
  10674. privacySettings : "Privacy settings",
  10675. privacySettingsDialogTitleA : "Privacy settings",
  10676. privacySettingsDialogTitleB : "for this website",
  10677. privacySettingsDialogSubtitle : "Some features of this website need your consent to remember who you are.",
  10678. closeWindow : "Close window",
  10679. changeForAllSitesLink : "Change settings for all websites",
  10680. preferenceUseGlobal : "Use global setting",
  10681. preferenceConsent : "I consent",
  10682. preferenceDecline : "I decline",
  10683. preferenceAsk : "Ask me each time",
  10684. preferenceAlways : "Always allow",
  10685. preferenceNever : "Never allow",
  10686. notUsingCookies : "This website does not use any cookies.",
  10687. clearedCookies : "Your cookies have been cleared, you will need to reload this page for the settings to have effect.",
  10688. allSitesSettingsDialogTitleA : "Privacy settings",
  10689. allSitesSettingsDialogTitleB : "for all websites",
  10690. allSitesSettingsDialogSubtitle : "You may consent to these cookies for all websites that use this plugin.",
  10691. backToSiteSettings : "Back to website settings"
  10692. },
  10693. onconsent : function(key, tmp) {
  10694. if (cc.isfunction(tmp)) {
  10695. fn = tmp;
  10696. } else {
  10697. scriptname = tmp;
  10698. fn = function() {
  10699. cc.insertscript(scriptname);
  10700. };
  10701. }
  10702. if (cc.cookies && (cc.cookies[key] && cc.cookies[key].approved)) {
  10703. cc.cookies[key].executed = true;
  10704. fn();
  10705. } else {
  10706. if (window.jQuery) {
  10707. jQuery(document).bind("cc_" + key, fn);
  10708. } else {
  10709. if (cc.bindfunctions[key]) {
  10710. cc.bindfunctions[key][cc.bindfunctions[key].length] = fn;
  10711. } else {
  10712. cc.bindfunctions[key] = new Array(fn);
  10713. }
  10714. }
  10715. }
  10716. },
  10717. geturlparameter : function(name) {
  10718. name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
  10719. var regexS = "[\\?&]" + name + "=([^&#]*)";
  10720. var regex = new RegExp(regexS);
  10721. var attrList = regex.exec(window.location.search);
  10722. if (attrList == null) {
  10723. return false;
  10724. } else {
  10725. return decodeURIComponent(attrList[1].replace(/\+/g, " "));
  10726. }
  10727. },
  10728. isfunction : function(elems) {
  10729. var spy = {};
  10730. return elems && spy.toString.call(elems) == "[object Function]";
  10731. },
  10732. setup : function() {
  10733. jQuery.each(cc.bindfunctions, function(pluginName, codeSegments) {
  10734. i = 0;
  10735. for (;i < codeSegments.length;i++) {
  10736. jQuery(document).bind("cc_" + pluginName, codeSegments[i]);
  10737. }
  10738. });
  10739. verstr = jQuery().jquery;
  10740. parts = verstr.split(".");
  10741. versionRequired = cc.jqueryversionrequired.split(".");
  10742. jqueryOk = true;
  10743. i = 0;
  10744. for (;i < parts.length && i < versionRequired.length;i++) {
  10745. currentpart = parseInt(parts[i]);
  10746. requiredpart = parseInt(versionRequired[i]);
  10747. if (currentpart < requiredpart) {
  10748. jqueryok = false;
  10749. break;
  10750. }
  10751. if (currentpart > requiredpart) {
  10752. break;
  10753. }
  10754. }
  10755. if (!jqueryOk) {
  10756. alert(cc.strings.jqueryWarning);
  10757. }
  10758. jQuery.each(cc.defaultCookies, function(index, dataAndEvents) {
  10759. if (index == "necessary") {
  10760. cc.defaultCookies[index].title = cc.strings.necessaryDefaultTitle;
  10761. cc.defaultCookies[index].description = cc.strings.necessaryDefaultDescription;
  10762. } else {
  10763. if (index == "social") {
  10764. cc.defaultCookies[index].title = cc.strings.socialDefaultTitle;
  10765. cc.defaultCookies[index].description = cc.strings.socialDefaultDescription;
  10766. } else {
  10767. if (index == "analytics") {
  10768. cc.defaultCookies[index].title = cc.strings.analyticsDefaultTitle;
  10769. cc.defaultCookies[index].description = cc.strings.analyticsDefaultDescription;
  10770. } else {
  10771. if (index == "advertising") {
  10772. cc.defaultCookies[index].title = cc.strings.advertisingDefaultTitle;
  10773. cc.defaultCookies[index].description = cc.strings.advertisingDefaultDescription;
  10774. }
  10775. }
  10776. }
  10777. }
  10778. });
  10779. jQuery.each(cc.initobj.cookies, function(name, suite) {
  10780. if (!suite.title) {
  10781. if (name == "necessary") {
  10782. cc.initobj.cookies[name].title = cc.strings.necessaryDefaultTitle;
  10783. } else {
  10784. if (name == "social") {
  10785. cc.initobj.cookies[name].title = cc.strings.socialDefaultTitle;
  10786. } else {
  10787. if (name == "analytics") {
  10788. cc.initobj.cookies[name].title = cc.strings.analyticsDefaultTitle;
  10789. } else {
  10790. if (name == "advertising") {
  10791. cc.initobj.cookies[name].title = cc.strings.advertisingDefaultTitle;
  10792. } else {
  10793. cc.initobj.cookies[name].title = cc.strings.defaultTitle;
  10794. }
  10795. }
  10796. }
  10797. }
  10798. }
  10799. if (!suite.description) {
  10800. if (name == "necessary") {
  10801. cc.initobj.cookies[name].description = cc.strings.necessaryDefaultDescription;
  10802. } else {
  10803. if (name == "social") {
  10804. cc.initobj.cookies[name].description = cc.strings.socialDefaultDescription;
  10805. } else {
  10806. if (name == "analytics") {
  10807. cc.initobj.cookies[name].description = cc.strings.analyticsDefaultDescription;
  10808. } else {
  10809. if (name == "advertising") {
  10810. cc.initobj.cookies[name].description = cc.strings.advertisingDefaultDescription;
  10811. } else {
  10812. cc.initobj.cookies[name].description = cc.strings.defaultDescription;
  10813. }
  10814. }
  10815. }
  10816. }
  10817. }
  10818. if (!suite.defaultstate) {
  10819. cc.initobj.cookies[name].defaultstate = "on";
  10820. }
  10821. cc.initobj.cookies[name].asked = false;
  10822. cc.initobj.cookies[name].approved = false;
  10823. cc.initobj.cookies[name].executed = false;
  10824. });
  10825. testmode = cc.geturlparameter("cctestmode");
  10826. if (testmode == "accept" || testmode == "decline") {
  10827. cc.settings.testmode = testmode;
  10828. }
  10829. if (cc.settings.disableallsites) {
  10830. cc.settings.hideallsitesbutton = true;
  10831. }
  10832. var k;
  10833. for (k in cc.initobj.cookies) {
  10834. cc.cookies[k] = cc.initobj.cookies[k];
  10835. if (cc.settings.testmode == "accept") {
  10836. cc.approved[k] = "yes";
  10837. }
  10838. if (cc.settings.testmode == "decline") {
  10839. cc.approved[k] = "no";
  10840. }
  10841. }
  10842. },
  10843. initialise : function(scope) {
  10844. cc.initobj = scope;
  10845. if (scope.settings !== undefined) {
  10846. var i;
  10847. for (i in scope.settings) {
  10848. this.settings[i] = scope.settings[i];
  10849. }
  10850. }
  10851. if (scope.strings !== undefined) {
  10852. for (i in scope.strings) {
  10853. this.strings[i] = scope.strings[i];
  10854. }
  10855. }
  10856. cc.settings.style = "cc-" + cc.settings.style;
  10857. cc.settings.bannerPosition = "cc-" + cc.settings.bannerPosition;
  10858. if (cc.settings.useSSL) {
  10859. }
  10860. if (window.jQuery) {
  10861. cc.setupcomplete = true;
  10862. cc.setup();
  10863. }
  10864. },
  10865. calculatestatsparams : function() {
  10866. params = "c=";
  10867. first = true;
  10868. jQuery.each(cc.initobj.cookies, function(k, dataAndEvents) {
  10869. if (first) {
  10870. first = false;
  10871. } else {
  10872. params += ";";
  10873. }
  10874. params += encodeURIComponent(k) + ":";
  10875. if (cc.approved[k]) {
  10876. params += cc.approved[k];
  10877. } else {
  10878. params += "none";
  10879. }
  10880. if (dataAndEvents.statsid) {
  10881. params += ":" + dataAndEvents.statsid;
  10882. }
  10883. });
  10884. if (cc.ismobile) {
  10885. params += "&m=1";
  10886. } else {
  10887. params += "&m=0";
  10888. }
  10889. params += "&u=" + encodeURIComponent(document.URL);
  10890. return params;
  10891. },
  10892. setsessionkey : function(enableColor) {
  10893. cc.sessionkey = enableColor;
  10894. },
  10895. fetchprefs : function() {
  10896. cc.remoteresponse = false;
  10897. params = "?s=1";
  10898. if (cc.settings.collectStatistics) {
  10899. params = "?s=1&" + cc.calculatestatsparams();
  10900. }
  10901. if (cc.settings.clearprefs) {
  10902. params += "&v=1";
  10903. cc.settings.clearprefs = false;
  10904. }
  10905. setTimeout(function() {
  10906. if (!cc.remoteresponse) {
  10907. cc.checkapproval();
  10908. }
  10909. }, 3E3);
  10910. this.checkedremote = true;
  10911. },
  10912. responseids : function(attributes) {
  10913. jQuery.each(attributes, function(k, dataAndEvents) {
  10914. cc.cookies[k].statsid = dataAndEvents;
  10915. });
  10916. },
  10917. insertscript : function(isXML) {
  10918. var scriptEl = document.createElement("script");
  10919. scriptEl.setAttribute("type", "text/javascript");
  10920. scriptEl.setAttribute("src", isXML);
  10921. document.getElementsByTagName("head")[0].appendChild(scriptEl);
  10922. },
  10923. insertscripttag : function(xhtml) {
  10924. var e = document.createElement("script");
  10925. e.setAttribute("type", "text/javascript");
  10926. e.innerHTML = xhtml;
  10927. document.getElementsByTagName("head")[0].appendChild(e);
  10928. },
  10929. checklocal : function() {
  10930. this.checkedlocal = true;
  10931. jQuery.each(cc.cookies, function(id, dataAndEvents) {
  10932. cookieval = cc.getcookie("cc_" + id);
  10933. if (cookieval) {
  10934. cc.approved[id] = cookieval;
  10935. }
  10936. });
  10937. this.checkapproval();
  10938. },
  10939. response : function(iterable) {
  10940. cc.remoteresponse = true;
  10941. jQuery.each(iterable, function(key, isXML) {
  10942. if (cc.cookies[key] && (!cc.approved[key] || cc.approved[key] && (cc.approved[key] == "always" || cc.approved[key] == "never"))) {
  10943. cc.setcookie("cc_" + key, isXML, 365);
  10944. }
  10945. });
  10946. var key;
  10947. for (key in iterable) {
  10948. cc.remoteCookies[key] = iterable[key];
  10949. if (this.approved[key] != "yes" && this.approved[key] != "no") {
  10950. this.approved[key] = iterable[key];
  10951. }
  10952. }
  10953. jQuery.each(cc.cookies, function(key, dataAndEvents) {
  10954. if (!iterable[key] && (cc.approved[key] == "always" || cc.approved[key] == "never")) {
  10955. cc.cookies[key].approved = false;
  10956. cc.deletecookie(key);
  10957. delete cc.approved[key];
  10958. }
  10959. });
  10960. this.checkapproval();
  10961. },
  10962. deletecookie : function(keepData) {
  10963. date = new Date;
  10964. date.setDate(date.getDate() - 1);
  10965. document.cookie = escape("cc_" + keepData) + "=; path=/; expires=" + date;
  10966. },
  10967. reloadifnecessary : function() {
  10968. if (cc.settings.refreshOnConsent || (cc.ismobile || cc.forcereload)) {
  10969. setTimeout("location.reload(true);", 50);
  10970. }
  10971. },
  10972. onkeyup : function(event) {
  10973. if (event.keyCode == 27) {
  10974. cc.closemodals();
  10975. }
  10976. },
  10977. closemodals : function() {
  10978. if (!cc.closingmodal) {
  10979. if (cc.noclosewin) {
  10980. cc.noclosewin = false;
  10981. } else {
  10982. if (jQuery("#cc-modal").is(":visible")) {
  10983. jQuery("#cc-modal .cc-modal-closebutton a").click();
  10984. }
  10985. if (jQuery("#cc-settingsmodal").is(":visible")) {
  10986. jQuery("#cc-settingsmodal #cc-settingsmodal-closebutton a").click();
  10987. }
  10988. }
  10989. }
  10990. },
  10991. showbanner : function() {
  10992. jQuery("#cc-tag").fadeOut(null, function() {
  10993. jQuery(this).remove();
  10994. });
  10995. jQuery("#cc-notification").remove();
  10996. if (cc.ismobile) {
  10997. cc.setupformobile();
  10998. jQuery("head").append('<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;">');
  10999. jQuery("body").html("").css("margin", 0);
  11000. }
  11001. data = '<div id="cc-notification">' + '<div id="cc-notification-wrapper">' + "<h2><span>" + cc.strings.notificationTitle + "</span></h2>" + '<div id="cc-notification-permissions">' + '<a id="cc-notification-logo" class="cc-logo" target="_blank" href="http://silktide.com/cookieconsent" title="' + cc.strings.poweredBy + '"><span>' + cc.strings.poweredBy + "</span></a> " + "</div>" + '<ul class="cc-notification-buttons">' + "<li>" + '<a class="cc-link" href="http://cookieconsent.silktide.com" id="cc-approve-button-allsites">' +
  11002. cc.strings.allowForAllSites + "</a>" + "</li>" + "<li>" + '<a class="cc-link" href="#" id="cc-approve-button-thissite">' + cc.strings.allowCookies + "</a>" + "</li>" + "</ul>" + '<div class="cc-clear"></div>' + "</div>" + "</div>";
  11003. jQuery("body").prepend(data);
  11004. if (cc.settings.hideallsitesbutton) {
  11005. jQuery("#cc-approve-button-allsites").hide();
  11006. }
  11007. if (cc.settings.consenttype == "implicit") {
  11008. jQuery("#cc-notification h2 span").html(cc.strings.notificationTitleImplicit);
  11009. jQuery("#cc-approve-button-thissite").html(cc.strings.allowCookiesImplicit);
  11010. jQuery("#cc-approve-button-thissite").parent().after(jQuery("#cc-approve-button-allsites").parent());
  11011. jQuery("#cc-approve-button-allsites").hide();
  11012. }
  11013. jQuery("#cc-notification-logo").hide();
  11014. if (cc.settings.privacyPolicy) {
  11015. jQuery("#cc-notification-moreinformation").prepend('<a href="' + cc.settings.privacyPolicy + '">' + cc.strings.privacyPolicy + "</a> | ");
  11016. }
  11017. jQuery("#cc-notification").addClass(cc.settings.style).addClass(cc.settings.bannerPosition);
  11018. bannerh = jQuery("#cc-notification").height();
  11019. jQuery("#cc-notification").hide();
  11020. if (cc.ismobile) {
  11021. jQuery("#cc-notification").addClass("cc-mobile");
  11022. }
  11023. jQuery("#cc-notification-permissions").prepend("<ul></ul>");
  11024. allcustom = true;
  11025. jQuery.each(cc.cookies, function(i, result) {
  11026. if (!result.asked) {
  11027. jQuery("#cc-notification-permissions ul").append('<li><input type="checkbox" checked="checked" id="cc-checkbox-' + i + '" /> <label id="cc-label-' + i + '" for="cc-checkbox-' + i + '"><strong>' + result.title + "</strong> " + result.description + "</label></li>");
  11028. if (result.link) {
  11029. jQuery("#cc-label-" + i).append(' <a target="_blank" href="' + result.link + '" class="cc-learnmore-link">' + cc.strings.learnMore + "</a>");
  11030. }
  11031. if (i == "social" || (i == "analytics" || i == "advertising")) {
  11032. allcustom = false;
  11033. }
  11034. jQuery("#cc-checkbox-" + i).change(function() {
  11035. if (jQuery(this).is(":checked")) {
  11036. jQuery(this).parent().removeClass("cc-notification-permissions-inactive");
  11037. } else {
  11038. jQuery(this).parent().addClass("cc-notification-permissions-inactive");
  11039. }
  11040. });
  11041. if (result.defaultstate == "off") {
  11042. jQuery("#cc-checkbox-" + i).removeAttr("checked").parent().addClass("cc-notification-permissions-inactive");
  11043. }
  11044. if (i == "necessary") {
  11045. jQuery("#cc-checkbox-" + i).attr("disabled", "disabled");
  11046. }
  11047. }
  11048. });
  11049. if (cc.settings.consenttype == "implicit") {
  11050. jQuery("#cc-notification-moreinfo").html(cc.strings.seeDetailsImplicit);
  11051. }
  11052. jQuery("#cc-notification-moreinfo").click(function() {
  11053. if (jQuery(this).html() == cc.strings.seeDetails || jQuery(this).html() == cc.strings.seeDetailsImplicit) {
  11054. if (cc.settings.consenttype == "implicit") {
  11055. if (!cc.settings.hideallsitesbutton) {
  11056. jQuery("#cc-approve-button-allsites").show();
  11057. }
  11058. }
  11059. jQuery("#cc-approve-button-thissite").html(cc.strings.savePreference);
  11060. jQuery("#cc-approve-button-allsites").html(cc.strings.saveForAllSites);
  11061. jQuery(this).html(cc.strings.hideDetails);
  11062. } else {
  11063. jQuery.each(cc.cookies, function(pin, event) {
  11064. if (event.defaultstate == "off") {
  11065. jQuery("#cc-checkbox-" + pin).removeAttr("checked");
  11066. jQuery(this).parent().addClass("cc-notification-permissions-inactive");
  11067. } else {
  11068. jQuery("#cc-checkbox-" + pin).attr("checked", "checked");
  11069. jQuery(this).parent().removeClass("cc-notification-permissions-inactive");
  11070. }
  11071. });
  11072. if (cc.settings.consenttype == "implicit") {
  11073. jQuery(this).html(cc.strings.seeDetailsImplicit);
  11074. jQuery("#cc-approve-button-thissite").html(cc.strings.allowCookiesImplicit);
  11075. jQuery("#cc-approve-button-allsites").hide();
  11076. } else {
  11077. jQuery(this).html(cc.strings.seeDetails);
  11078. jQuery("#cc-approve-button-thissite").html(cc.strings.allowCookies);
  11079. jQuery("#cc-approve-button-allsites").html(cc.strings.allowForAllSites);
  11080. }
  11081. }
  11082. jQuery("#cc-notification-logo").fadeToggle();
  11083. jQuery("#cc-notification-permissions").slideToggle();
  11084. jQuery(this).blur();
  11085. return false;
  11086. });
  11087. if (!cc.ismobile) {
  11088. if (cc.settings.bannerPosition == "cc-push") {
  11089. jQuery("html").animate({
  11090. marginTop : bannerh
  11091. }, 400);
  11092. }
  11093. jQuery("#cc-notification").slideDown();
  11094. } else {
  11095. jQuery("#cc-notification").show();
  11096. }
  11097. jQuery("#cc-approve-button-thissite").click(cc.onlocalconsentgiven);
  11098. if (cc.settings.clickAnyLinkToConsent) {
  11099. jQuery("a").filter(":not(.cc-link)").click(cc.onlocalconsentgiven);
  11100. }
  11101. if (allcustom) {
  11102. jQuery("#cc-notification h2 span").html(cc.strings.customCookie);
  11103. jQuery("#cc-approve-button-allsites").hide();
  11104. } else {
  11105. jQuery("#cc-approve-button-allsites").click(cc.onremoteconsentgiven);
  11106. }
  11107. },
  11108. timestamp : function() {
  11109. return Math.round((new Date).getTime() / 1E3);
  11110. },
  11111. setLocation : function(arg) {
  11112. ineu = "yes";
  11113. if (jQuery.inArray(arg, cc.eumemberstates) == -1) {
  11114. ineu = "no";
  11115. jQuery.each(cc.cookies, function(k, dataAndEvents) {
  11116. cc.approved[k] = "yes";
  11117. });
  11118. cc.settings.hideprivacysettingstab = true;
  11119. }
  11120. cc.setcookie("cc_ineu", ineu, 365);
  11121. cc.checkapproval();
  11122. },
  11123. locationcallback : function(data) {
  11124. if (data.statusCode == "OK" && data.countryCode) {
  11125. ineu = "yes";
  11126. if (jQuery.inArray(data.countryCode, cc.eumemberstates) == -1) {
  11127. ineu = "no";
  11128. jQuery.each(cc.cookies, function(k, dataAndEvents) {
  11129. cc.approved[k] = "yes";
  11130. });
  11131. cc.settings.hideprivacysettingstab = true;
  11132. }
  11133. cc.setcookie("cc_ineu", ineu, 365);
  11134. }
  11135. if (data.statusCode == "ERROR" && data.statusMessage == "Invalid API key.") {
  11136. alert(cc.strings.invalidKeyWarning);
  11137. }
  11138. cc.checkapproval();
  11139. },
  11140. checkdonottrack : function() {
  11141. cc.checkeddonottrack = true;
  11142. if (!cc.settings.ignoreDoNotTrack) {
  11143. if (navigator.doNotTrack == "yes" || (navigator.doNotTrack == "1" || (navigator.msDoNotTrack == "yes" || navigator.msDoNotTrack == "1"))) {
  11144. cc.settings.consenttype = "explicit";
  11145. }
  11146. }
  11147. cc.checkapproval();
  11148. },
  11149. checkapproval : function() {
  11150. if (!cc.checkedipdb && cc.settings.onlyshowwithineu) {
  11151. cc.checkedipdb = true;
  11152. ineu = cc.getcookie("cc_ineu");
  11153. if (ineu) {
  11154. if (ineu == "no") {
  11155. jQuery.each(cc.cookies, function(k, dataAndEvents) {
  11156. cc.approved[k] = "yes";
  11157. });
  11158. cc.settings.hideprivacysettingstab = true;
  11159. }
  11160. } else {
  11161. return;
  11162. }
  11163. }
  11164. cc.allasked = true;
  11165. jQuery.each(cc.cookies, function(i, dataAndEvents) {
  11166. if (cc.approved[i]) {
  11167. if (cc.approved[i] == "yes" || cc.approved[i] == "always" && cc.checkedremote) {
  11168. cc.cookies[i].asked = true;
  11169. cc.cookies[i].approved = true;
  11170. cc.execute(i);
  11171. } else {
  11172. if (cc.approved[i] == "never" && cc.checkedremote || cc.approved[i] == "no") {
  11173. cc.cookies[i].asked = true;
  11174. cc.cookies[i].approved = false;
  11175. } else {
  11176. cc.allasked = false;
  11177. }
  11178. }
  11179. } else {
  11180. cc.allasked = false;
  11181. }
  11182. });
  11183. if (!cc.allasked) {
  11184. if (!cc.checkedlocal) {
  11185. cc.checklocal();
  11186. return;
  11187. }
  11188. if (!cc.checkedremote && !cc.settings.disableallsites) {
  11189. cc.fetchprefs();
  11190. return;
  11191. }
  11192. if (!cc.checkeddonottrack) {
  11193. cc.checkdonottrack();
  11194. return;
  11195. }
  11196. if (cc.settings.consenttype == "implicit") {
  11197. jQuery.each(cc.cookies, function(i, dataAndEvents) {
  11198. if (!cc.cookies[i].asked) {
  11199. if (cc.settings.onlyshowbanneronce) {
  11200. cc.setcookie("cc_" + i, "yes", 365);
  11201. }
  11202. cc.execute(i);
  11203. }
  11204. });
  11205. }
  11206. cc.showbanner();
  11207. } else {
  11208. if (cc.settings.collectStatistics) {
  11209. params = "";
  11210. params += "?s=1&n=1&" + cc.calculatestatsparams();
  11211. cc.insertscript(cc.settings.serveraddr + params);
  11212. }
  11213. cc.showminiconsent();
  11214. }
  11215. },
  11216. execute : function(key) {
  11217. if (key == "necessary") {
  11218. return;
  11219. }
  11220. if (cc.cookies[key].executed) {
  11221. return;
  11222. }
  11223. jQuery(".cc-placeholder-" + key).remove();
  11224. jQuery("script.cc-onconsent-" + key + '[type="text/plain"]').each(function() {
  11225. if (jQuery(this).attr("src")) {
  11226. jQuery(this).after('<script type="text/javascript" src="' + jQuery(this).attr("src") + '">\x3c/script>');
  11227. } else {
  11228. jQuery(this).after('<script type="text/javascript">' + jQuery(this).html() + "\x3c/script>");
  11229. }
  11230. });
  11231. cc.cookies[key].executed = true;
  11232. jQuery(document).trigger("cc_" + key);
  11233. cc.executescriptinclusion(key);
  11234. },
  11235. executescriptinclusion : function(key) {
  11236. timetaken = jQuery("script.cc-onconsent-inline-" + key + '[type="text/plain"]').size() * cc.settings.scriptdelay;
  11237. now = (new Date).getTime();
  11238. if (now < cc.executionblock) {
  11239. setTimeout(cc.executescriptinclusion, cc.executionblock - now, [key]);
  11240. return;
  11241. }
  11242. cc.executionblock = now + timetaken;
  11243. cc.insertscripts(key);
  11244. },
  11245. insertscripts : function(keepData) {
  11246. jQuery("script.cc-onconsent-inline-" + keepData + '[type="text/plain"]').first().each(function() {
  11247. cc.uniqelemid++;
  11248. if (jQuery(this).parents("body").size() > 0) {
  11249. jQuery(this).after('<div id="cc-consentarea-' + cc.uniqelemid + '" class="' + keepData + '"></div>');
  11250. document.write = function(start) {
  11251. jQuery("#cc-consentarea-" + cc.uniqelemid).append(start);
  11252. };
  11253. document.writeln = function(timestamp) {
  11254. jQuery("#cc-consentarea-" + cc.uniqelemid).append(timestamp);
  11255. };
  11256. }
  11257. if (jQuery(this).attr("src")) {
  11258. jQuery(this).after('<script type="text/javascript" src="' + jQuery(this).attr("src") + '">\x3c/script>');
  11259. } else {
  11260. jQuery(this).after('<script type="text/javascript">' + jQuery(this).html() + "\x3c/script>");
  11261. }
  11262. jQuery(this).remove();
  11263. });
  11264. if (jQuery("script.cc-onconsent-inline-" + keepData + '[type="text/plain"]').size() > 0) {
  11265. setTimeout(cc.insertscripts, cc.settings.scriptdelay, [keepData]);
  11266. }
  11267. },
  11268. getcookie : function(className) {
  11269. var i;
  11270. var attr;
  11271. var code;
  11272. var ARRcookies = document.cookie.split(";");
  11273. i = 0;
  11274. for (;i < ARRcookies.length;i++) {
  11275. attr = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
  11276. code = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
  11277. attr = attr.replace(/^\s+|\s+$/g, "");
  11278. if (attr == className) {
  11279. return unescape(code);
  11280. }
  11281. }
  11282. return false;
  11283. },
  11284. setcookie : function(name, value, opt_attributes) {
  11285. var exdate = new Date;
  11286. exdate.setDate(exdate.getDate() + opt_attributes);
  11287. document.cookie = name + "=" + value + "; expires=" + exdate.toUTCString() + "; path=/";
  11288. },
  11289. onremoteconsentgiven : function() {
  11290. if (cc.settings.clickAnyLinkToConsent) {
  11291. jQuery("a").filter(":not(.cc-link)").unbind("click");
  11292. }
  11293. cc.allagree = true;
  11294. jQuery.each(cc.cookies, function(key, dataAndEvents) {
  11295. if (!dataAndEvents.approved && !dataAndEvents.asked) {
  11296. if (jQuery("#cc-checkbox-" + key).is(":checked")) {
  11297. if (key == "social" || (key == "analytics" || key == "advertising")) {
  11298. cc.remoteCookies[key] = "always";
  11299. cc.approved[key] = "always";
  11300. } else {
  11301. cc.approved[key] = "yes";
  11302. }
  11303. cc.cookies[key].asked = true;
  11304. } else {
  11305. if (key == "social" || (key == "analytics" || key == "advertising")) {
  11306. cc.remoteCookies[key] = "never";
  11307. cc.approved[key] = "never";
  11308. } else {
  11309. cc.approved[key] = "no";
  11310. }
  11311. cc.allagree = false;
  11312. cc.cookies[key].asked = true;
  11313. }
  11314. cc.setcookie("cc_" + key, cc.approved[key], 365);
  11315. } else {
  11316. }
  11317. });
  11318. urlx = cc.settings.serveraddr + "?p=1&tokenonly=true&cc-key=" + cc.sessionkey;
  11319. if (cc.remoteCookies["social"]) {
  11320. urlx += "&cc-cookies-social=" + cc.approved["social"];
  11321. }
  11322. if (cc.remoteCookies["analytics"]) {
  11323. urlx += "&cc-cookies-analytics=" + cc.approved["analytics"];
  11324. }
  11325. if (cc.remoteCookies["advertising"]) {
  11326. urlx += "&cc-cookies-advertising=" + cc.approved["advertising"];
  11327. }
  11328. cc.reloadkey = true;
  11329. if (!cc.ismobile) {
  11330. jQuery("#cc-notification").slideUp();
  11331. if (cc.settings.bannerPosition == "cc-push") {
  11332. jQuery("html").animate({
  11333. marginTop : 0
  11334. }, 400);
  11335. }
  11336. }
  11337. cc.checkapproval();
  11338. return false;
  11339. },
  11340. onlocalconsentgiven : function() {
  11341. enableall = false;
  11342. enablejustone = false;
  11343. if (jQuery(this).hasClass("cc-button-enableall") || jQuery(this).hasClass("cc-button-enable-all")) {
  11344. enableall = true;
  11345. jQuery.each(cc.cookies, function(k, dataAndEvents) {
  11346. cc.cookies[k].asked = false;
  11347. });
  11348. }
  11349. elem = this;
  11350. jQuery.each(cc.cookies, function(k, dataAndEvents) {
  11351. if (jQuery(elem).hasClass("cc-button-enable-" + k)) {
  11352. enablejustone = true;
  11353. cc.approved[k] = "yes";
  11354. cc.cookies[k].asked = true;
  11355. cc.setcookie("cc_" + k, cc.approved[k], 365);
  11356. }
  11357. });
  11358. cc.allagree = true;
  11359. if (!enablejustone) {
  11360. if (cc.settings.clickAnyLinkToConsent) {
  11361. jQuery("a").filter(":not(.cc-link)").unbind("click");
  11362. }
  11363. jQuery.each(cc.cookies, function(key, dataAndEvents) {
  11364. if (!dataAndEvents.approved && !dataAndEvents.asked) {
  11365. if (enableall || jQuery("#cc-checkbox-" + key).is(":checked")) {
  11366. cc.approved[key] = "yes";
  11367. cc.cookies[key].asked = true;
  11368. } else {
  11369. cc.approved[key] = "no";
  11370. cc.cookies[key].asked = true;
  11371. cc.allagree = false;
  11372. }
  11373. cc.setcookie("cc_" + key, cc.approved[key], 365);
  11374. } else {
  11375. }
  11376. });
  11377. }
  11378. if (!cc.allagree && cc.settings.consenttype == "implicit") {
  11379. cc.forcereload = true;
  11380. }
  11381. if (!cc.ismobile) {
  11382. jQuery("#cc-notification").slideUp();
  11383. if (cc.settings.bannerPosition == "cc-push") {
  11384. jQuery("html").animate({
  11385. marginTop : 0
  11386. }, 400);
  11387. }
  11388. }
  11389. cc.checkapproval();
  11390. cc.reloadifnecessary();
  11391. return false;
  11392. },
  11393. showminiconsent : function() {
  11394. if (jQuery("#cc-tag").length == 0) {
  11395. data = '<div id="cc-tag" class="cc-tag-' + cc.settings.tagPosition + '"><a class="cc-link" href="#" id="cc-tag-button" title="' + cc.strings.privacySettings + '"><span>' + cc.strings.privacySettings + "</span></a></div>";
  11396. jQuery("body").prepend(data);
  11397. jQuery("#cc-tag").addClass(cc.settings.style);
  11398. if (!cc.settings.hideprivacysettingstab) {
  11399. jQuery("#cc-tag").fadeIn();
  11400. } else {
  11401. jQuery("#cc-tag").hide();
  11402. }
  11403. jQuery(".cc-privacy-link").click(cc.showmodal);
  11404. jQuery("#cc-tag-button").click(cc.showmodal);
  11405. }
  11406. },
  11407. getsize : function(data) {
  11408. var getsize = 0;
  11409. var dataItem;
  11410. for (dataItem in data) {
  11411. if (data.hasOwnProperty(dataItem)) {
  11412. getsize++;
  11413. }
  11414. }
  11415. return getsize;
  11416. },
  11417. settoken : function(enableColor) {
  11418. if (cc.reloadkey) {
  11419. cc.reloadkey = false;
  11420. if (!cc.allagree && cc.settings.consenttype == "implicit") {
  11421. cc.forcereload = true;
  11422. }
  11423. cc.reloadifnecessary();
  11424. }
  11425. cc.sessionkey = enableColor;
  11426. },
  11427. showmodal : function() {
  11428. if (!cc.checkedremote && !cc.settings.disableallsites) {
  11429. cc.fetchprefs();
  11430. }
  11431. jQuery(document).bind("keyup", cc.onkeyup);
  11432. jQuery("body").prepend('<div id="cc-modal-overlay"></div>');
  11433. jQuery(this).blur();
  11434. if (cc.ismobile) {
  11435. cc.setupformobile();
  11436. }
  11437. data = '<div id="cc-modal">' + '<div id="cc-modal-wrapper">' + "<h2>" + cc.strings.privacySettingsDialogTitleA + " <span>" + cc.strings.privacySettingsDialogTitleB + "</span></h2>" + '<p class="cc-subtitle">' + cc.strings.privacySettingsDialogSubtitle + "</p>" + '<div class="cc-content">' + "</div>" + '<div class="cc-clear"></div>' + '<p id="cc-modal-closebutton" class="cc-modal-closebutton"><a class="cc-link" href="#" title="' + cc.strings.closeWindow + '"><span>' + cc.strings.closeWindow +
  11438. "</span></a></p>" + '<div id="cc-modal-footer-buttons">' + '<p id="cc-modal-global"><a class="cc-link" href="#" title="' + cc.strings.changeForAllSitesLink + '"><span>' + cc.strings.changeForAllSitesLink + "</span></a></p></div>" + '<a id="cc-notification-logo" class="cc-logo" target="_blank" href="http://silktide.com/cookieconsent" title="' + cc.strings.poweredBy + '"><span>' + cc.strings.poweredBy + "</span></a> " + '<div class="cc-clear"></div>' + "</div>" + "</div>";
  11439. jQuery("body").prepend(data);
  11440. if (cc.settings.disableallsites) {
  11441. jQuery("#cc-modal-global").hide();
  11442. }
  11443. jQuery("#cc-modal").addClass(cc.settings.style).click(cc.closemodals);
  11444. if (cc.ismobile) {
  11445. jQuery("#cc-modal").addClass("cc-mobile");
  11446. }
  11447. cc.reloadmodal();
  11448. jQuery("#cc-modal").fadeIn();
  11449. jQuery("#cc-modal-overlay").fadeIn();
  11450. jQuery("#cc-modal-wrapper").click(function() {
  11451. cc.noclosewin = true;
  11452. });
  11453. jQuery("#cc-modal .cc-modal-closebutton a").click(function() {
  11454. cc.showhidemodal();
  11455. cc.reloadifnecessary();
  11456. return false;
  11457. });
  11458. jQuery("#cc-modal-global").click(function() {
  11459. cc.frommodal = true;
  11460. cc.gotosettings();
  11461. return false;
  11462. });
  11463. jQuery("#cc-tag-button").unbind("click").click(cc.showhidemodal);
  11464. jQuery(".cc-privacy-link").unbind("click").click(cc.showhidemodal);
  11465. return false;
  11466. },
  11467. closepreferencesmodal : function() {
  11468. jQuery.each(cc.defaultCookies, function(i, offsetPosition) {
  11469. offsetPosition = jQuery("#cc-globalpreference-selector-" + i).val();
  11470. if (cc.approved[i] != "yes" && cc.approved[i] != "no") {
  11471. cc.approved[i] = offsetPosition;
  11472. cc.setcookie("cc_" + i, cc.approved[i], 365);
  11473. }
  11474. cc.remoteCookies[i] = offsetPosition;
  11475. });
  11476. urlx = cc.settings.serveraddr + "?p=1&tokenonly=true&cc-key=" + cc.sessionkey;
  11477. if (cc.remoteCookies["social"]) {
  11478. urlx += "&cc-cookies-social=" + cc.remoteCookies["social"];
  11479. }
  11480. if (cc.remoteCookies["analytics"]) {
  11481. urlx += "&cc-cookies-analytics=" + cc.remoteCookies["analytics"];
  11482. }
  11483. if (cc.remoteCookies["advertising"]) {
  11484. urlx += "&cc-cookies-advertising=" + cc.remoteCookies["advertising"];
  11485. }
  11486. cc.insertscript(urlx);
  11487. jQuery("#cc-notification").hide().remove();
  11488. jQuery(this).blur();
  11489. jQuery("#cc-settingsmodal").fadeOut(null, function() {
  11490. jQuery("#cc-settingsmodal").remove();
  11491. });
  11492. if (!cc.frommodal) {
  11493. cc.checkapproval();
  11494. cc.reloadifnecessary();
  11495. } else {
  11496. cc.frommodal = false;
  11497. cc.showhidemodal();
  11498. }
  11499. return false;
  11500. },
  11501. showhidemodal : function() {
  11502. jQuery(this).blur();
  11503. cc.checkedlocal = false;
  11504. cc.checkedremote = false;
  11505. if (jQuery("#cc-modal").is(":visible") && !cc.frommodal) {
  11506. cc.closingmodal = true;
  11507. jQuery("#cc-modal-overlay").fadeToggle(null, function() {
  11508. cc.closingmodal = false;
  11509. });
  11510. jQuery.each(cc.cookies, function(key, dataAndEvents) {
  11511. thisval = jQuery("#cc-preference-selector-" + key).val();
  11512. if (key == "necessary") {
  11513. thisval = "yes";
  11514. }
  11515. if (thisval == "no") {
  11516. cc.cookies[key].approved = false;
  11517. cc.approved[key] = "no";
  11518. cc.setcookie("cc_" + key, cc.approved[key], 365);
  11519. } else {
  11520. if (thisval == "yes") {
  11521. cc.cookies[key].approved = true;
  11522. cc.approved[key] = "yes";
  11523. cc.setcookie("cc_" + key, cc.approved[key], 365);
  11524. } else {
  11525. cc.cookies[key].approved = false;
  11526. cc.deletecookie(key);
  11527. delete cc.approved[key];
  11528. }
  11529. }
  11530. cc.cookies[key].asked = false;
  11531. });
  11532. cc.checkapproval();
  11533. } else {
  11534. if (!jQuery("#cc-settingsmodal").is(":visible") && !jQuery("#cc-modal").is(":visible")) {
  11535. cc.closingmodal = true;
  11536. jQuery("#cc-modal-overlay").fadeToggle(null, function() {
  11537. cc.closingmodal = false;
  11538. });
  11539. }
  11540. }
  11541. if (cc.ismobile) {
  11542. jQuery("#cc-modal").toggle();
  11543. } else {
  11544. jQuery("#cc-modal").fadeToggle();
  11545. }
  11546. return false;
  11547. },
  11548. reloadmodal : function() {
  11549. jQuery("#cc-modal-wrapper .cc-content").html("");
  11550. if (cc.getsize(cc.cookies) > 0) {
  11551. jQuery("#cc-modal-wrapper .cc-content").append("<ul></ul>");
  11552. jQuery.each(cc.cookies, function(i, d) {
  11553. jQuery("#cc-modal-wrapper ul").append('<li id="cc-preference-element-' + i + '"><label for="cc-preference-selector-' + i + '"><strong>' + d.title + "</strong><span>" + d.description + '</span></label><select id="cc-preference-selector-' + i + '"><option value="yes">' + cc.strings.preferenceConsent + '</option><option value="no">' + cc.strings.preferenceDecline + "</option></select></li>");
  11554. if (d.link) {
  11555. jQuery("#cc-preference-element-" + i + " label span").append(' <a target="_blank" href="' + d.link + '" class="cc-learnmore-link">' + cc.strings.learnMore + "</a>");
  11556. }
  11557. if ((i == "social" || (i == "advertising" || i == "analytics")) && !cc.settings.disableallsites) {
  11558. jQuery("#cc-preference-selector-" + i).append('<option value="global">' + cc.strings.preferenceUseGlobal + "</option>");
  11559. }
  11560. jQuery("#cc-change-button-allsites").unbind("click").click(function() {
  11561. cc.frommodal = true;
  11562. cc.gotosettings();
  11563. return false;
  11564. });
  11565. jQuery("#cc-preference-selector-" + i).change(function() {
  11566. });
  11567. if (i == "necessary") {
  11568. jQuery("#cc-preference-selector-" + i).remove();
  11569. }
  11570. if (cc.approved[i] == "yes") {
  11571. jQuery("#cc-preference-selector-" + i).val("yes");
  11572. } else {
  11573. if (cc.approved[i] == "no") {
  11574. jQuery("#cc-preference-selector-" + i).val("no");
  11575. } else {
  11576. jQuery("#cc-preference-selector-" + i).val("global");
  11577. }
  11578. }
  11579. });
  11580. } else {
  11581. jQuery("#cc-modal-wrapper .cc-content").append("<p>" + cc.strings.notUsingCookies + "</p>");
  11582. }
  11583. jQuery(".cc-content").append('<div class="cc-clear"></div>');
  11584. },
  11585. reloadsettingsmodal : function() {
  11586. jQuery("#cc-settingsmodal-wrapper .cc-content").html("");
  11587. if (cc.getsize(cc.defaultCookies) > 0) {
  11588. jQuery("#cc-settingsmodal-wrapper .cc-content").append("<ul></ul>");
  11589. jQuery.each(cc.defaultCookies, function(i, d) {
  11590. jQuery("#cc-settingsmodal-wrapper ul").append('<li id="cc-globalpreference-element-' + i + '"><label for="cc-globalpreference-selector-' + i + '"><strong>' + d.title + "</strong><span>" + d.description + '</span></label><select id="cc-globalpreference-selector-' + i + '"><option value="ask">' + cc.strings.preferenceAsk + '</option><option value="always">' + cc.strings.preferenceAlways + '</option><option value="never">' + cc.strings.preferenceNever + "</option></select></li>");
  11591. if (d.link) {
  11592. jQuery("#cc-globalpreference-element-" + i + " label span").append(' <a target="_blank" href="' + d.link + '" class="cc-learnmore-link">' + cc.strings.learnMore + "</a>");
  11593. }
  11594. jQuery("#cc-globalpreference-selector-" + i).change(function() {
  11595. });
  11596. if (cc.remoteCookies[i] == "always") {
  11597. jQuery("#cc-globalpreference-selector-" + i).val("always");
  11598. } else {
  11599. if (cc.remoteCookies[i] == "never") {
  11600. jQuery("#cc-globalpreference-selector-" + i).val("never");
  11601. } else {
  11602. jQuery("#cc-globalpreference-selector-" + i).val("ask");
  11603. }
  11604. }
  11605. });
  11606. } else {
  11607. jQuery("#cc-settingsmodal-wrapper .cc-content").append("<p>" + cc.strings.notUsingCookies + "</p>");
  11608. }
  11609. jQuery("#cc-settingsmodal-wrapper .cc-content").append('<div class="cc-clear"></div>');
  11610. },
  11611. approvedeny : function() {
  11612. key = jQuery(this).attr("id").split("-")[2];
  11613. if (cc.cookies[key].approved) {
  11614. cc.cookies[key].approved = false;
  11615. cc.approved[key] = "no";
  11616. } else {
  11617. cc.cookies[key].approved = true;
  11618. cc.approved[key] = "yes";
  11619. }
  11620. cc.setcookie("cc_" + key, cc.approved[key], 365);
  11621. cc.checkapproval();
  11622. cc.reloadmodal();
  11623. return false;
  11624. },
  11625. clearalllocalcookies : function() {
  11626. var codeSegments = document.cookie.split(";");
  11627. var i = 0;
  11628. for (;i < codeSegments.length;i++) {
  11629. var cookie = codeSegments[i];
  11630. var eqPos = cookie.indexOf("=");
  11631. var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
  11632. document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
  11633. }
  11634. },
  11635. clearlocal : function() {
  11636. cc.clearalllocalcookies();
  11637. jQuery(this).before("<p>" + cc.strings.clearedCookies + "</p>");
  11638. },
  11639. getcurrenturl : function() {
  11640. return window.location.protocol + "//" + window.location.host + window.location.pathname;
  11641. },
  11642. gotosettings : function() {
  11643. if (jQuery("#cc-modal").is(":visible")) {
  11644. cc.showhidemodal();
  11645. }
  11646. jQuery(this).blur();
  11647. if (cc.ismobile) {
  11648. cc.setupformobile();
  11649. jQuery("#cc-notification").remove();
  11650. }
  11651. if (cc.frommodal) {
  11652. buttontext = cc.strings.backToSiteSettings;
  11653. } else {
  11654. buttontext = cc.strings.closeWindow;
  11655. }
  11656. data = '<div id="cc-settingsmodal">' + '<div id="cc-settingsmodal-wrapper">' + "<h2>" + cc.strings.allSitesSettingsDialogTitleA + " <span>" + cc.strings.allSitesSettingsDialogTitleB + "</span></h2>" + '<p class="cc-subtitle">' + cc.strings.allSitesSettingsDialogSubtitle + "</p>" + '<div class="cc-content">' + "</div>" + '<div class="cc-clear"></div>' + '<p id="cc-settingsmodal-closebutton" class="cc-settingsmodal-closebutton"><a class="cc-link" href="#" title="' + buttontext + '"><span>' + buttontext +
  11657. "</span></a></p>" + '<div id="cc-settingsmodal-footer-buttons">' + '<p id="cc-settingsmodal-secondclosebutton" class="cc-settingsmodal-closebutton"><a class="cc-link" href="#" title="' + buttontext + '"><span>' + buttontext + "</span></a></p>" + "</div>" + '<a id="cc-notification-logo" class="cc-logo" target="_blank" href="http://silktide.com/cookieconsent" title="' + cc.strings.poweredBy + '"><span>' + cc.strings.poweredBy + "</span></a> " + "</div>" + "</div>";
  11658. jQuery("body").prepend(data);
  11659. cc.reloadsettingsmodal();
  11660. jQuery("#cc-settingsmodal").addClass(cc.settings.style).click(cc.closemodals);
  11661. jQuery("#cc-settingsmodal-wrapper").click(function() {
  11662. cc.noclosewin = true;
  11663. });
  11664. if (cc.ismobile) {
  11665. jQuery("#cc-settingsmodal").addClass("cc-mobile");
  11666. }
  11667. jQuery("#cc-settingsmodal").fadeIn();
  11668. jQuery(".cc-settingsmodal-closebutton").click(cc.closepreferencesmodal);
  11669. return false;
  11670. },
  11671. setupformobile : function() {
  11672. if (!cc.hassetupmobile) {
  11673. cc.hassetupmobile = true;
  11674. jQuery("head").append('<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;">');
  11675. if (cc.settings.style == "cc-light") {
  11676. bgcol = "#e1e1e1";
  11677. } else {
  11678. bgcol = "#1d1d1d";
  11679. }
  11680. jQuery("body").html("").css("margin", 0).css("width", "auto").css("backgroundColor", bgcol).css("backgroundImage", "none");
  11681. }
  11682. },
  11683. onfirstload : function() {
  11684. if (!cc.setupcomplete && cc.initobj) {
  11685. if (!window.jQuery) {
  11686. cc.jqueryattempts++;
  11687. if (cc.jqueryattempts >= 5) {
  11688. return;
  11689. }
  11690. setTimeout(cc.onfirstload, 200);
  11691. return;
  11692. }
  11693. cc.setupcomplete = true;
  11694. cc.setup();
  11695. }
  11696. setTimeout(cc.afterload, 50);
  11697. cc.checkapproval();
  11698. },
  11699. afterload : function() {
  11700. jQuery(".cc-button-enableall").addClass("cc-link").click(cc.onlocalconsentgiven);
  11701. jQuery(".cc-button-enable-all").addClass("cc-link").click(cc.onlocalconsentgiven);
  11702. jQuery.each(cc.cookies, function(pin, dataAndEvents) {
  11703. jQuery(".cc-button-enable-" + pin).addClass("cc-link").click(cc.onlocalconsentgiven);
  11704. });
  11705. }
  11706. };
  11707. if (!window.jQuery) {
  11708. var s = document.createElement("script");
  11709. s.setAttribute("src", "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js");
  11710. s.setAttribute("type", "text/javascript");
  11711. document.getElementsByTagName("head")[0].appendChild(s);
  11712. if (window.onload != null) {
  11713. var oldOnload = window.onload;
  11714. window.onload = function(deepDataAndEvents) {
  11715. oldOnload(deepDataAndEvents);
  11716. cc.onfirstload();
  11717. };
  11718. } else {
  11719. window.onload = cc.onfirstload;
  11720. }
  11721. } else {
  11722. jQuery(document).ready(cc.onfirstload);
  11723. }
  11724. (function(cssText) {
  11725. cc.ismobile = /android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(cssText) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(cssText.substr(0,
  11726. 4));
  11727. })(navigator.userAgent || (navigator.vendor || window.opera));
  11728. WebFontConfig = {
  11729. google : {
  11730. families : ["Open+Sans:400,600:latin"]
  11731. }
  11732. };
  11733. (function() {
  11734. var wf = document.createElement("script");
  11735. wf.src = ("https:" == document.location.protocol ? "https" : "http") + "://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js";
  11736. wf.type = "text/javascript";
  11737. wf.async = "true";
  11738. var insertAt = document.getElementsByTagName("script")[0];
  11739. insertAt.parentNode.insertBefore(wf, insertAt);
  11740. })();
Add Comment
Please, Sign In to add comment