PageSourceSearch

https://milestonerunning.com/assets/admin/scripts/context.js?v=1.2.0

js milestonerunning.com collected 2026-09-26 11:19:10 UTC 10,572 bytes, 212 lines download raw bytes

1
2var LZString=function(){function o(o,r){if(!t[o]){t[o]={};for(var n=0;n<o.length;n++)t[o][o.charAt(n)]=n}return t[o][r]}var r=String.fromCharCode,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",t={},i={compressToBase64:function(o){if(null==o)return"";var r=i._compress(o,6,function(o){return n.charAt(o)});switch(r.length%4){default:case 0:return r;case 1:return r+"===";case 2:return r+"==";case 3:return r+"="}},decompressFromBase64:function(r){return null==r?"":""==r?null:i._decompress(r.length,32,function(e){return o(n,r.charAt(e))})},compressToUTF16:function(o){return null==o?"":i._compress(o,15,function(o){return r(o+32)})+" "},decompressFromUTF16:function(o){return null==o?"":""==o?null:i._decompress(o.length,16384,function(r){return o.charCodeAt(r)-32})},compressToUint8Array:function(o){for(var r=i.compress(o),n=new Uint8Array(2*r.length),e=0,t=r.length;t>e;e++){var s=r.charCodeAt(e);n[2*e]=s>>>8,n[2*e+1]=s%256}return n},decompressFromUint8Array:function(o){if(null===o||void 0===o)return i.decompress(o);for(var n=new Array(o.length/2),e=0,t=n.length;t>e;e++)n[e]=256*o[2*e]+o[2*e+1];var s=[];return n.forEach(function(o){s.push(r(o))}),i.decompress(s.join(""))},compressToEncodedURIComponent:function(o){return null==o?"":i._compress(o,6,function(o){return e.charAt(o)})},decompressFromEncodedURIComponent:function(r){return null==r?"":""==r?null:(r=r.replace(/ /g,"+"),i._decompress(r.length,32,function(n){return o(e,r.charAt(n))}))},compress:function(o){return i._compress(o,16,function(o){return r(o)})},_compress:function(o,r,n){if(null==o)return"";var e,t,i,s={},p={},u="",c="",a="",l=2,f=3,h=2,d=[],m=0,v=0;for(i=0;i<o.length;i+=1)if(u=o.charAt(i),Object.prototype.hasOwnProperty.call(s,u)||(s[u]=f++,p[u]=!0),c=a+u,Object.prototype.hasOwnProperty.call(s,c))a=c;else{if(Object.prototype.hasOwnProperty.call(p,a)){if(a.charCodeAt(0)<256){for(e=0;h>e;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++),s[c]=f++,a=String(u)}if(""!==a){if(Object.prototype.hasOwnProperty.call(p,a)){if(a.charCodeAt(0)<256){for(e=0;h>e;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++)}for(t=2,e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;for(;;){if(m<<=1,v==r-1){d.push(n(m));break}v++}return d.join("")},decompress:function(o){return null==o?"":""==o?null:i._decompress(o.length,32768,function(r){return o.charCodeAt(r)})},_decompress:function(o,n,e){var t,i,s,p,u,c,a,l,f=[],h=4,d=4,m=3,v="",w=[],A={val:e(0),position:n,index:1};for(i=0;3>i;i+=1)f[i]=i;for(p=0,c=Math.pow(2,2),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(t=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 2:return""}for(f[3]=l,s=l,w.push(l);;){if(A.index>o)return"";for(p=0,c=Math.pow(2,m),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(l=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 2:return w.join("")}if(0==h&&(h=Math.pow(2,m),m++),f[l])v=f[l];else{if(l!==d)return null;v=s+s.charAt(0)}w.push(v),f[d++]=s+v.charAt(0),h--,s=v,0==h&&(h=Math.pow(2,m),m++)}}};return i}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module&&(module.exports=LZString);
3
4var cookies = {
5	get: function(id) {
6		var cname = id+"=";
7		var ca = document.cookie.split(';');
8		for (var i=0; i < ca.length; i++) {
9			var c = ca[i];
10			while (c.charAt(0)==' ') c = c.substring(1,c.length);
11			if (c.indexOf(cname) == 0) {
12				return c.substring(cname.length, c.length);
13			}
14		} 
15		return null;
16	},
17	remove: function(id) {
18  		document.cookie = id+'=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
19	},
20	set: function(id, val) {
21		var date = new Date();
22		date.setTime(date.getTime()+(1*24*60*60*1000));
23    	document.cookie = id+"="+val+";expires="+date.toUTCString()+";path=/";
24	},
25	setObject: function(id, obj) {
26		cookies.set(id, JSON.stringify(obj));
27	},
28	getObject: function(id) {
29		try {
30			return JSON.parse(cookies.get(id));
31		} catch (e) {
32			return "";
33		} 
34	}
35}
36$.param = function(name){
37	var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
38	if (results!=null&&results.length>1) return results[1];
39	else return "";
40}
41
42var context = {
43	items: [],
44	watchers: [],
45	eventWatchers: [],
46	init: function() {
47		context.poll();
48		setInterval(context.poll, 1000);
49	},
50	remove: function(id) {
51		var keys = "";
52		var index = 0;
53		for (var key in context.items) {
54			if (key!=id) {
55				keys += ((index>0)?",":"")+key;
56				index++;
57			}
58		}
59		context.items[id] = null;
60		try {
61			localStorage.setItem("smpl-context", JSON.stringify(keys));
62			localStorage.removeItem("smpl-"+id+"-value");
63			localStorage.removeItem("smpl-"+id+"-updated");
64		} catch (e) {
65			console.log("Context got too long", keys);
66		}
67	},
68	removeAll: function() {
69		var contextData = localStorage.getItem("smpl-context");
70		if (contextData) {
71			var keys = contextData.split(',');
72			for (var i=0; i<keys.length; i++) {
73				key = keys[i];
74				context.items[key] = null;
75				localStorage.removeItem("smpl-"+key+"-value");
76			}
77			localStorage.setItem("smpl-context",[]);
78		}
79	},
80	set: function(id, obj) {
81		context.items[id] = {
82			time: (new Date()).getTime(),
83			data: obj
84		}
85		var keys = "";
86		var index = 0;
87		for (var key in context.items) {
88			keys += ((index>0)?",":"")+key;
89			index++;
90		}
91		localStorage.setItem("smpl-context", keys);
92		try {
93			var value = JSON.stringify(obj); 
94			localStorage.setItem("smpl-"+id+"-value", value);
95		} catch (e) {}
96		localStorage.setItem("smpl-"+id+"-updated", context.items[id].time);
97		context.update(id, obj);
98	},
99	fireCalls: function(id) {
100		var obj = context.get(id);
101		if (context.watchers[id]&&obj!=null) {
102			var calls = context.watchers[id];
103			for (var i=0; i<calls.length; i++) {
104				try {
105					calls[i](obj);
106				} catch (e) {}
107			}
108		}
109	},
110	isDirty: function(id) {
111		var age = localStorage.getItem("smpl-"+id+"-updated");
112		if (age!=null&&!isNaN(age)) {
113			var now = (new Date()).getTime();
114			var ageLimit = 1200000; // 20 Min 
115			var diff = now-age;
116			var dirty = diff>ageLimit;
117			if (!dirty) context.fireCalls(id);
118			return dirty;
119		} else return true;
120	},
121	get: function(id) {
122		context.poll();
123		var val = "";
124		if (context.items[id]&&context.items[id].data) val = context.items[id].data;
125		return val;
126	},
127	update: function(id, obj) {
128		if (context.watchers[id]&&obj!=null) {
129			var calls = context.watchers[id];
130			for (var i=0; i<calls.length; i++) {
131				try {
132					calls[i](obj);
133				} catch (e) {}
134			}
135		}
136		$("*[data-context^='"+id+"']").each(function(index, element) {
137            var propName = $(element).attr("data-context");
138            var propTo = $(element).attr("data-contextSet");
139			var val = "";
140			var propTree = propName.split('.');
141			var obj = context.items[propTree[0]].data;
142			var index = 1;
143			while (index<propTree.length) obj = obj[propTree[index++]];
144           });
145		$("*[data-context='"+id+"']").each(function(index, element) {
146            var propName = $(element).attr("data-context");
147			val = context.items[id].data;
148			context.assign($(element), val);
149        });
150	},
151	addListener: function(id, func) {
152		if (!context.watchers[id]) context.watchers[id] = [];
153		context.watchers[id].push(func);
154	},
155	addEventListener: function(id, func) {
156		if (!context.eventWatchers[id]) context.eventWatchers[id] = [];
157		context.eventWatchers[id].push(func);
158	},
159	fire: function(id, obj) {
160		if (context.eventWatchers[id]) {
161			var events = context.eventWatchers[id];
162			for (var i=0; i<events.length; i++) {
163				events[i].call(obj);
164			}
165		}
166	},
167	poll: function() {
168		var contextData = localStorage.getItem("smpl-context");
169		if (contextData) {
170			var keys = contextData.split(',');
171			for (var i=0; i<keys.length; i++) {
172				var key = keys[i];
173				var val = {};
174				try {
175					var value = localStorage.getItem("smpl-"+key+"-value");
176					val = JSON.parse(value);
177				} catch (e) {
178		
179				}
180				var lastUpdates = localStorage.getItem("smpl-"+key+"-updated");
181				if (!context.items[key]) {
182
183					context.items[key] = {
184						time: Number(lastUpdates),
185						data: val
186					}
187					context.update(key, context.items[key].data);
188				} else {
189					if (!isNaN(lastUpdates)) {
190						if (Number(lastUpdates)>context.items[key].time) {
191							context.items[key].time = Number(lastUpdates);
192							context.items[key].data = val;
193							context.update(key, context.items[key].data);
194						}
195					}
196				}
197			}
198		}
199	},
200	assign: function(element, val, what) {
201		if (what) {
202			if (what.toLowerCase()=="background-image") $(element).css(what, "url("+val+")");
203			else $(element).css(what, val);				
204		} else {
205			if (element.is("input")) element.val(val);
206			else if (element.is("div")) element.html(val);
207			else if (element.is("span")) element.html(val);
208			else if (element.is("video")) element.attr("src", val);
209			else element.html(val);
210		}
211	}
212}

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.