PageSourceSearch

https://www.crossbordershopping.ca/sites/default/files/js/js_TdSbVLp9DCpzD5_5e6PrWrtbUOQRShDfpFwWnseVqgk.js

js crossbordershopping.ca collected 2026-10-04 12:25:20 UTC 8,329 bytes, 318 lines download raw bytes

1/**
2 * jQuery JSON plugin 2.4.0
3 *
4 * @author Brantley Harris, 2009-2011
5 * @author Timo Tijhof, 2011-2012
6 * @source This plugin is heavily influenced by MochiKit's serializeJSON, which is
7 *         copyrighted 2005 by Bob Ippolito.
8 * @source Brantley Harris wrote this plugin. It is based somewhat on the JSON.org
9 *         website's http://www.json.org/json2.js, which proclaims:
10 *         "NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.", a sentiment that
11 *         I uphold.
12 * @license MIT License <http://www.opensource.org/licenses/mit-license.php>
13 */
14(function ($) {
15	'use strict';
16
17	var escape = /["\\\x00-\x1f\x7f-\x9f]/g,
18		meta = {
19			'\b': '\\b',
20			'\t': '\\t',
21			'\n': '\\n',
22			'\f': '\\f',
23			'\r': '\\r',
24			'"' : '\\"',
25			'\\': '\\\\'
26		},
27		hasOwn = Object.prototype.hasOwnProperty;
28
29	/**
30	 * jQuery.toJSON
31	 * Converts the given argument into a JSON representation.
32	 *
33	 * @param o {Mixed} The json-serializable *thing* to be converted
34	 *
35	 * If an object has a toJSON prototype, that will be used to get the representation.
36	 * Non-integer/string keys are skipped in the object, as are keys that point to a
37	 * function.
38	 *
39	 */
40	$.toJSON = typeof JSON === 'object' && JSON.stringify ? JSON.stringify : function (o) {
41		if (o === null) {
42			return 'null';
43		}
44
45		var pairs, k, name, val,
46			type = $.type(o);
47
48		if (type === 'undefined') {
49			return undefined;
50		}
51
52		// Also covers instantiated Number and Boolean objects,
53		// which are typeof 'object' but thanks to $.type, we
54		// catch them here. I don't know whether it is right
55		// or wrong that instantiated primitives are not
56		// exported to JSON as an {"object":..}.
57		// We choose this path because that's what the browsers did.
58		if (type === 'number' || type === 'boolean') {
59			return String(o);
60		}
61		if (type === 'string') {
62			return $.quoteString(o);
63		}
64		if (typeof o.toJSON === 'function') {
65			return $.toJSON(o.toJSON());
66		}
67		if (type === 'date') {
68			var month = o.getUTCMonth() + 1,
69				day = o.getUTCDate(),
70				year = o.getUTCFullYear(),
71				hours = o.getUTCHours(),
72				minutes = o.getUTCMinutes(),
73				seconds = o.getUTCSeconds(),
74				milli = o.getUTCMilliseconds();
75
76			if (month < 10) {
77				month = '0' + month;
78			}
79			if (day < 10) {
80				day = '0' + day;
81			}
82			if (hours < 10) {
83				hours = '0' + hours;
84			}
85			if (minutes < 10) {
86				minutes = '0' + minutes;
87			}
88			if (seconds < 10) {
89				seconds = '0' + seconds;
90			}
91			if (milli < 100) {
92				milli = '0' + milli;
93			}
94			if (milli < 10) {
95				milli = '0' + milli;
96			}
97			return '"' + year + '-' + month + '-' + day + 'T' +
98				hours + ':' + minutes + ':' + seconds +
99				'.' + milli + 'Z"';
100		}
101
102		pairs = [];
103
104		if ($.isArray(o)) {
105			for (k = 0; k < o.length; k++) {
106				pairs.push($.toJSON(o[k]) || 'null');
107			}
108			return '[' + pairs.join(',') + ']';
109		}
110
111		// Any other object (plain object, RegExp, ..)
112		// Need to do typeof instead of $.type, because we also
113		// want to catch non-plain objects.
114		if (typeof o === 'object') {
115			for (k in o) {
116				// Only include own properties,
117				// Filter out inherited prototypes
118				if (hasOwn.call(o, k)) {
119					// Keys must be numerical or string. Skip others
120					type = typeof k;
121					if (type === 'number') {
122						name = '"' + k + '"';
123					} else if (type === 'string') {
124						name = $.quoteString(k);
125					} else {
126						continue;
127					}
128					type = typeof o[k];
129
130					// Invalid values like these return undefined
131					// from toJSON, however those object members
132					// shouldn't be included in the JSON string at all.
133					if (type !== 'function' && type !== 'undefined') {
134						val = $.toJSON(o[k]);
135						pairs.push(name + ':' + val);
136					}
137				}
138			}
139			return '{' + pairs.join(',') + '}';
140		}
141	};
142
143	/**
144	 * jQuery.evalJSON
145	 * Evaluates a given json string.
146	 *
147	 * @param str {String}
148	 */
149	$.evalJSON = typeof JSON === 'object' && JSON.parse ? JSON.parse : function (str) {
150		/*jshint evil: true */
151		return eval('(' + str + ')');
152	};
153
154	/**
155	 * jQuery.secureEvalJSON
156	 * Evals JSON in a way that is *more* secure.
157	 *
158	 * @param str {String}
159	 */
160	$.secureEvalJSON = typeof JSON === 'object' && JSON.parse ? JSON.parse : function (str) {
161		var filtered =
162			str
163			.replace(/\\["\\\/bfnrtu]/g, '@')
164			.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
165			.replace(/(?:^|:|,)(?:\s*\[)+/g, '');
166
167		if (/^[\],:{}\s]*$/.test(filtered)) {
168			/*jshint evil: true */
169			return eval('(' + str + ')');
170		}
171		throw new SyntaxError('Error parsing JSON, source is not valid.');
172	};
173
174	/**
175	 * jQuery.quoteString
176	 * Returns a string-repr of a string, escaping quotes intelligently.
177	 * Mostly a support function for toJSON.
178	 * Examples:
179	 * >>> jQuery.quoteString('apple')
180	 * "apple"
181	 *
182	 * >>> jQuery.quoteString('"Where are we going?", she asked.')
183	 * "\"Where are we going?\", she asked."
184	 */
185	$.quoteString = function (str) {
186		if (str.match(escape)) {
187			return '"' + str.replace(escape, function (a) {
188				var c = meta[a];
189				if (typeof c === 'string') {
190					return c;
191				}
192				c = a.charCodeAt();
193				return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);
194			}) + '"';
195		}
196		return '"' + str + '"';
197	};
198
199}(jQuery));
200;
201/*!
202 * jQuery Cookie Plugin v1.4.0
203 * https://github.com/carhartl/jquery-cookie
204 *
205 * Copyright 2013 Klaus Hartl
206 * Released under the MIT license
207 */
208(function (factory) {
209	if (typeof define === 'function' && define.amd) {
210		// AMD. Register as anonymous module.
211		define(['jquery'], factory);
212	} else {
213		// Browser globals.
214		factory(jQuery);
215	}
216}(function ($) {
217
218	var pluses = /\+/g;
219
220	function encode(s) {
221		return config.raw ? s : encodeURIComponent(s);
222	}
223
224	function decode(s) {
225		return config.raw ? s : decodeURIComponent(s);
226	}
227
228	function stringifyCookieValue(value) {
229		return encode(config.json ? JSON.stringify(value) : String(value));
230	}
231
232	function parseCookieValue(s) {
233		if (s.indexOf('"') === 0) {
234			// This is a quoted cookie as according to RFC2068, unescape...
235			s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
236		}
237
238		try {
239			// Replace server-side written pluses with spaces.
240			// If we can't decode the cookie, ignore it, it's unusable.
241			s = decodeURIComponent(s.replace(pluses, ' '));
242		} catch(e) {
243			return;
244		}
245
246		try {
247			// If we can't parse the cookie, ignore it, it's unusable.
248			return config.json ? JSON.parse(s) : s;
249		} catch(e) {}
250	}
251
252	function read(s, converter) {
253		var value = config.raw ? s : parseCookieValue(s);
254		return $.isFunction(converter) ? converter(value) : value;
255	}
256
257	var config = $.cookie = function (key, value, options) {
258
259		// Write
260		if (value !== undefined && !$.isFunction(value)) {
261			options = $.extend({}, config.defaults, options);
262
263			if (typeof options.expires === 'number') {
264				var days = options.expires, t = options.expires = new Date();
265				t.setDate(t.getDate() + days);
266			}
267
268			return (document.cookie = [
269				encode(key), '=', stringifyCookieValue(value),
270				options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
271				options.path    ? '; path=' + options.path : '',
272				options.domain  ? '; domain=' + options.domain : '',
273				options.secure  ? '; secure' : ''
274			].join(''));
275		}
276
277		// Read
278
279		var result = key ? undefined : {};
280
281		// To prevent the for loop in the first place assign an empty array
282		// in case there are no cookies at all. Also prevents odd result when
283		// calling $.cookie().
284		var cookies = document.cookie ? document.cookie.split('; ') : [];
285
286		for (var i = 0, l = cookies.length; i < l; i++) {
287			var parts = cookies[i].split('=');
288			var name = decode(parts.shift());
289			var cookie = parts.join('=');
290
291			if (key && key === name) {
292				// If second argument (value) is a function it's a converter...
293				result = read(cookie, value);
294				break;
295			}
296
297			// Prevent storing a cookie that we couldn't decode.
298			if (!key && (cookie = read(cookie)) !== undefined) {
299				result[name] = cookie;
300			}
301		}
302
303		return result;
304	};
305
306	config.defaults = {};
307
308	$.removeCookie = function (key, options) {
309		if ($.cookie(key) !== undefined) {
310			// Must not alter options, thus extending a fresh object...
311			$.cookie(key, '', $.extend({}, options, { expires: -1 }));
312			return true;
313		}
314		return false;
315	};
316
317}));
318;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.