<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://kodi.wiki/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-JSL.js</id>
	<title>MediaWiki:Gadget-JSL.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://kodi.wiki/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-JSL.js"/>
	<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=MediaWiki:Gadget-JSL.js&amp;action=history"/>
	<updated>2026-07-16T12:34:31Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://kodi.wiki/index.php?title=MediaWiki:Gadget-JSL.js&amp;diff=39074&amp;oldid=prev</id>
		<title>Ned Scott: 1 revision</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=MediaWiki:Gadget-JSL.js&amp;diff=39074&amp;oldid=prev"/>
		<updated>2011-10-30T22:33:53Z</updated>

		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:33, 30 October 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Ned Scott</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=MediaWiki:Gadget-JSL.js&amp;diff=39073&amp;oldid=prev</id>
		<title>&gt;TheDJ@en.wikipedia.org: Update JSL gadget to version 1.8. Drops support for IE4, but works better in general.</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=MediaWiki:Gadget-JSL.js&amp;diff=39073&amp;oldid=prev"/>
		<updated>2010-06-16T13:12:24Z</updated>

		<summary type="html">&lt;p&gt;Update JSL gadget to version 1.8. Drops support for IE4, but works better in general.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* (C) Andrea Giammarchi - JSL 1.8+ - 2007/11/03&lt;br /&gt;
&lt;br /&gt;
Permission is hereby granted, free of charge, to any person&lt;br /&gt;
obtaining a copy of this software and associated documentation&lt;br /&gt;
files (the &amp;quot;Software&amp;quot;), to deal in the Software without&lt;br /&gt;
restriction, including without limitation the rights to use,&lt;br /&gt;
copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;br /&gt;
copies of the Software, and to permit persons to whom the&lt;br /&gt;
Software is furnished to do so, subject to the following&lt;br /&gt;
conditions:&lt;br /&gt;
&lt;br /&gt;
The above copyright notice and this permission notice shall be&lt;br /&gt;
included in all copies or substantial portions of the Software.&lt;br /&gt;
&lt;br /&gt;
THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND,&lt;br /&gt;
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES&lt;br /&gt;
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND&lt;br /&gt;
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT&lt;br /&gt;
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,&lt;br /&gt;
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING&lt;br /&gt;
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR&lt;br /&gt;
OTHER DEALINGS IN THE SOFTWARE.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
(function(prototype){&lt;br /&gt;
	var	key, value, tmp;&lt;br /&gt;
	if(!Object.prototype.hasOwnProperty) Object.prototype.hasOwnProperty = function(key){&lt;br /&gt;
		var	result = false,&lt;br /&gt;
			value;&lt;br /&gt;
		key = String(key);&lt;br /&gt;
		if(/constructor|toString|valueOf/.test(key))&lt;br /&gt;
			result = Object.prototype[key] !== this[key];&lt;br /&gt;
		else{&lt;br /&gt;
			for(value in this){&lt;br /&gt;
				if(value === key){&lt;br /&gt;
					result = this === Object.prototype ? false : Object.prototype[key] !== this[key];&lt;br /&gt;
					break;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		return	result;&lt;br /&gt;
	};&lt;br /&gt;
	for(key in prototype){&lt;br /&gt;
		if(prototype.hasOwnProperty(key)){&lt;br /&gt;
			switch(typeof prototype[key]){&lt;br /&gt;
				case	&amp;quot;function&amp;quot;:&lt;br /&gt;
					if(!this[key])&lt;br /&gt;
						this[key] = prototype[key];&lt;br /&gt;
				break;&lt;br /&gt;
				case	&amp;quot;object&amp;quot;:&lt;br /&gt;
					for(value in prototype[key]){&lt;br /&gt;
						if(prototype[key].hasOwnProperty(value)){&lt;br /&gt;
							if(!this[key].prototype[value] || (prototype[key][value].test &amp;amp;&amp;amp; prototype[key][value].test()))&lt;br /&gt;
								this[key].prototype[value] = prototype[key][value].callback;&lt;br /&gt;
						}&lt;br /&gt;
					};&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
	try{&lt;br /&gt;
		prototype = key = value = undefined;&lt;br /&gt;
	}&lt;br /&gt;
	catch(e){&lt;br /&gt;
		this.undefined = prototype = key = value = tmp;&lt;br /&gt;
	};&lt;br /&gt;
	/*@cc_on&lt;br /&gt;
	(function(callback){&lt;br /&gt;
		this.setTimeout = callback(this.setTimeout);&lt;br /&gt;
		this.setInterval = callback(this.setInterval);&lt;br /&gt;
	})(function(value){&lt;br /&gt;
		return	function(callback, i){&lt;br /&gt;
			var	tmp = Array.prototype.slice.call(arguments, 2);&lt;br /&gt;
			if(typeof callback != &amp;quot;function&amp;quot;)&lt;br /&gt;
				callback = new Function(callback);&lt;br /&gt;
			return	value(function(){callback.apply(this, tmp);}, i);&lt;br /&gt;
		};&lt;br /&gt;
	});&lt;br /&gt;
	XMLHttpRequest = (function(XMLHttpRequest){&lt;br /&gt;
		function init(XMLHttpRequest){&lt;br /&gt;
			if(!XMLHttpRequest){&lt;br /&gt;
				var	tmp = [&amp;quot;MSXML2.XMLHTTP.3.0&amp;quot;, &amp;quot;MSXML2.XMLHTTP&amp;quot;, &amp;quot;Microsoft.XMLHTTP&amp;quot;];&lt;br /&gt;
				while(!XMLHttpRequest &amp;amp;&amp;amp; tmp.length){&lt;br /&gt;
					try{XMLHttpRequest = new ActiveXObject(tmp.shift())}&lt;br /&gt;
					catch(e){}&lt;br /&gt;
				};&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
				XMLHttpRequest = new XMLHttpRequest;&lt;br /&gt;
			return	XMLHttpRequest;&lt;br /&gt;
		};&lt;br /&gt;
		return	function(){&lt;br /&gt;
			var	Object = this;&lt;br /&gt;
			(this[&amp;quot;class&amp;quot;] = init(XMLHttpRequest)).onreadystatechange = function(){&lt;br /&gt;
				var	XMLHttpRequest = Object[&amp;quot;class&amp;quot;];&lt;br /&gt;
				if(Object[&amp;quot;synchronized&amp;quot;]()){&lt;br /&gt;
					Object.responseText = XMLHttpRequest.responseText;&lt;br /&gt;
					Object.responseXML = XMLHttpRequest.responseXML;&lt;br /&gt;
					Object.status = XMLHttpRequest.status;&lt;br /&gt;
					Object.statusText = XMLHttpRequest.statusText;&lt;br /&gt;
				};&lt;br /&gt;
				if(Object.onreadystatechange)&lt;br /&gt;
					Object.onreadystatechange.call(Object.onreadystatechange);&lt;br /&gt;
			};&lt;br /&gt;
		};&lt;br /&gt;
	})(this.XMLHttpRequest);&lt;br /&gt;
	XMLHttpRequest.prototype = {&lt;br /&gt;
		abort:function(){&lt;br /&gt;
			this[&amp;quot;class&amp;quot;].abort();&lt;br /&gt;
		},&lt;br /&gt;
		getAllResponseHeaders:function(){&lt;br /&gt;
			return	this[&amp;quot;synchronized&amp;quot;]() ? this[&amp;quot;class&amp;quot;].getAllResponseHeaders() : [];&lt;br /&gt;
		},&lt;br /&gt;
		getResponseHeader:function(key){&lt;br /&gt;
			return	this[&amp;quot;synchronized&amp;quot;]() ? this[&amp;quot;class&amp;quot;].getResponseHeader(key) : null;&lt;br /&gt;
		},&lt;br /&gt;
		open:function(){&lt;br /&gt;
			this[&amp;quot;class&amp;quot;].open(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);&lt;br /&gt;
		},&lt;br /&gt;
		send:function(value){&lt;br /&gt;
			this[&amp;quot;class&amp;quot;].send(value || null);&lt;br /&gt;
		},&lt;br /&gt;
		setRequestHeader:function(key, value){&lt;br /&gt;
			return	this[&amp;quot;class&amp;quot;].setRequestHeader(key, value);&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;synchronized&amp;quot;:function(){&lt;br /&gt;
			return	(this.readyState = this[&amp;quot;class&amp;quot;].readyState) == 4;&lt;br /&gt;
		},&lt;br /&gt;
		readyState:0,&lt;br /&gt;
		status:0,&lt;br /&gt;
		responseText:&amp;quot;&amp;quot;,&lt;br /&gt;
		statusText:&amp;quot;&amp;quot;,&lt;br /&gt;
		responseXML:null&lt;br /&gt;
	};&lt;br /&gt;
	@*/&lt;br /&gt;
})({&lt;br /&gt;
	Array:{&lt;br /&gt;
		every:{callback:function(callback){&lt;br /&gt;
			for(var&lt;br /&gt;
				i = 0,&lt;br /&gt;
				result = true,&lt;br /&gt;
				scope = arguments[1] || null,&lt;br /&gt;
				value = this instanceof Array;&lt;br /&gt;
				i &amp;lt; this.length &amp;amp;&amp;amp; result;&lt;br /&gt;
				i++&lt;br /&gt;
			){&lt;br /&gt;
				if(value ? this.hasOwnProperty(i) : this[i] !== undefined)&lt;br /&gt;
					result = callback.call(scope, this[i], i, this);&lt;br /&gt;
			};&lt;br /&gt;
			return	result;&lt;br /&gt;
		}},&lt;br /&gt;
		filter:{callback:function(callback){&lt;br /&gt;
			for(var&lt;br /&gt;
				i = 0,&lt;br /&gt;
				result = [],&lt;br /&gt;
				scope = arguments[1] || null,&lt;br /&gt;
				value = this instanceof Array;&lt;br /&gt;
				i &amp;lt; this.length;&lt;br /&gt;
				i++&lt;br /&gt;
			){&lt;br /&gt;
				if((value ? this.hasOwnProperty(i) : this[i] !== undefined) &amp;amp;&amp;amp; callback.call(scope, this[i], i, this))&lt;br /&gt;
					result[result.length] = this[i];&lt;br /&gt;
			};&lt;br /&gt;
			return	result;&lt;br /&gt;
		}},&lt;br /&gt;
		forEach:{callback:function(callback){&lt;br /&gt;
			for(var&lt;br /&gt;
				i = 0,&lt;br /&gt;
				scope = arguments[1] || null,&lt;br /&gt;
				value = this instanceof Array;&lt;br /&gt;
				i &amp;lt; this.length;&lt;br /&gt;
				i++&lt;br /&gt;
			){&lt;br /&gt;
				if(value ? this.hasOwnProperty(i) : this[i] !== undefined)&lt;br /&gt;
					callback.call(scope, this[i], i, this);&lt;br /&gt;
			};&lt;br /&gt;
		}},&lt;br /&gt;
		indexOf:{callback:function(value, i){&lt;br /&gt;
			for(var&lt;br /&gt;
				j = this.length,&lt;br /&gt;
				i = i &amp;lt; 0 ? i + j &amp;lt; 0 ? 0 : i + j : i || 0;&lt;br /&gt;
				i &amp;lt; j &amp;amp;&amp;amp; this[i] !== value;&lt;br /&gt;
				i++&lt;br /&gt;
			);&lt;br /&gt;
			return	j &amp;lt;= i ? -1 : i;&lt;br /&gt;
		}},&lt;br /&gt;
		lastIndexOf:{callback:function(value, i){&lt;br /&gt;
			return	Array.prototype.slice.call(this).reverse().indexOf(value, i);&lt;br /&gt;
		}},&lt;br /&gt;
		map:{callback:function(callback){&lt;br /&gt;
			for(var&lt;br /&gt;
				i = 0,&lt;br /&gt;
				result = new Array(this.length),&lt;br /&gt;
				scope = arguments[1] || null,&lt;br /&gt;
				value = this instanceof Array;&lt;br /&gt;
				i &amp;lt; this.length;&lt;br /&gt;
				i++&lt;br /&gt;
			){&lt;br /&gt;
				if(value ? this.hasOwnProperty(i) : this[i] !== undefined)&lt;br /&gt;
					result[i] = callback.call(scope, this[i], i, this);&lt;br /&gt;
			};&lt;br /&gt;
			return	result;&lt;br /&gt;
		}},&lt;br /&gt;
		pop:{callback:function(callback){&lt;br /&gt;
			var	length = this.length,&lt;br /&gt;
				result;&lt;br /&gt;
			if(length)&lt;br /&gt;
				result = this[--length];&lt;br /&gt;
			this.length = length;&lt;br /&gt;
			return	result;&lt;br /&gt;
		}},&lt;br /&gt;
		push:{callback:function(){&lt;br /&gt;
			for(var&lt;br /&gt;
				i = 0;&lt;br /&gt;
				i &amp;lt; arguments.length;&lt;br /&gt;
				i++&lt;br /&gt;
			)&lt;br /&gt;
				this[this.length] = arguments[i];&lt;br /&gt;
			return	this.length;&lt;br /&gt;
		}},&lt;br /&gt;
		shift:{callback:function(){&lt;br /&gt;
			var	result = Array.prototype.reverse.call(this).pop();&lt;br /&gt;
			Array.prototype.reverse.call(this);&lt;br /&gt;
			return	result;&lt;br /&gt;
		}},&lt;br /&gt;
		some:{callback:function(callback){&lt;br /&gt;
			for(var&lt;br /&gt;
				i = 0,&lt;br /&gt;
				result = false,&lt;br /&gt;
				scope = arguments[1] || null,&lt;br /&gt;
				value = this instanceof Array;&lt;br /&gt;
				i &amp;lt; this.length &amp;amp;&amp;amp; !result;&lt;br /&gt;
				i++&lt;br /&gt;
			){&lt;br /&gt;
				if(value ? this.hasOwnProperty(i) : this[i] !== undefined)&lt;br /&gt;
					result = callback.call(scope, this[i], i, this);&lt;br /&gt;
			};&lt;br /&gt;
			return	result;&lt;br /&gt;
		}},&lt;br /&gt;
		splice:{callback:function(){&lt;br /&gt;
			var	result = [],&lt;br /&gt;
				tmp = [],&lt;br /&gt;
				i = 0, j = this.length, k = 0, length = arguments.length;&lt;br /&gt;
			switch(length) {&lt;br /&gt;
				case	0:break;&lt;br /&gt;
				case	1:arguments[1] = !length++ || this.length - arguments[0];&lt;br /&gt;
				default:&lt;br /&gt;
					k = arguments[0] + arguments[1];&lt;br /&gt;
					for(; i &amp;lt; j; i++){&lt;br /&gt;
						if(i &amp;lt; arguments[0] || i &amp;gt;= k){&lt;br /&gt;
							if(i === k &amp;amp;&amp;amp; length &amp;gt; 2){&lt;br /&gt;
								for(i = 2; i &amp;lt; length; i++)&lt;br /&gt;
									tmp[tmp.length] = arguments[i];&lt;br /&gt;
								i = k;&lt;br /&gt;
							};&lt;br /&gt;
							tmp[tmp.length] = this[i];&lt;br /&gt;
						}&lt;br /&gt;
						else&lt;br /&gt;
							result[result.length] = this[i];&lt;br /&gt;
					};&lt;br /&gt;
					for(i = 0, j = tmp.length; i &amp;lt; j; i++)&lt;br /&gt;
						this[i] = tmp[i];&lt;br /&gt;
					this.length = i;&lt;br /&gt;
					break;&lt;br /&gt;
			};&lt;br /&gt;
			return	result;&lt;br /&gt;
		}},&lt;br /&gt;
		unshift:{&lt;br /&gt;
		test:function(){&lt;br /&gt;
			var	Array = [4,5];&lt;br /&gt;
			return	!(Array.unshift(1,2,3) === 5 &amp;amp;&amp;amp; Array.join(&amp;quot;-&amp;quot;) === &amp;quot;1-2-3-4-5&amp;quot;);&lt;br /&gt;
		},&lt;br /&gt;
		callback:function(){&lt;br /&gt;
			var	length = arguments.length;&lt;br /&gt;
			Array.prototype.reverse.call(this);&lt;br /&gt;
			while(length--)&lt;br /&gt;
				this[this.length] = arguments[length];&lt;br /&gt;
			return	Array.prototype.reverse.call(this).length&lt;br /&gt;
		}}&lt;br /&gt;
	},&lt;br /&gt;
	Date:{&lt;br /&gt;
		getYear:{&lt;br /&gt;
		test:function(){&lt;br /&gt;
			return	String((new Date).getYear()).length === 4;&lt;br /&gt;
		},&lt;br /&gt;
		callback:function(){&lt;br /&gt;
			return	this.getFullYear() - 1900;&lt;br /&gt;
		}},&lt;br /&gt;
		setYear:{&lt;br /&gt;
		test:function(){&lt;br /&gt;
			return	String((new Date).getYear()).length === 4;&lt;br /&gt;
		},&lt;br /&gt;
		callback:function(setYear){&lt;br /&gt;
			return	this.setFullYear(setYear + 1900);&lt;br /&gt;
		}}&lt;br /&gt;
	},&lt;br /&gt;
	Function:{&lt;br /&gt;
		apply:{callback:function(scope, arguments){&lt;br /&gt;
			var	i = arguments ? arguments.length : 0,&lt;br /&gt;
				result = new Array(i),&lt;br /&gt;
				call;&lt;br /&gt;
			switch(typeof scope){&lt;br /&gt;
				case	&amp;quot;boolean&amp;quot;:	scope = new Boolean(scope);break;&lt;br /&gt;
				case	&amp;quot;number&amp;quot;:	scope = new Number(scope);break;&lt;br /&gt;
				case	&amp;quot;string&amp;quot;:	scope = new String(scope);break;&lt;br /&gt;
				default:		scope = scope || (function(){return this})();break;&lt;br /&gt;
			};&lt;br /&gt;
			do call = &amp;quot;*&amp;quot; + Math.random();&lt;br /&gt;
			while(scope[call] !== undefined);&lt;br /&gt;
			while(i--)&lt;br /&gt;
				result[i] = &amp;quot;arguments[&amp;quot; + i + &amp;quot;]&amp;quot;;&lt;br /&gt;
			scope[call] = this;&lt;br /&gt;
			result = eval(&amp;quot;scope[call](&amp;quot; + result.join(&amp;quot;,&amp;quot;) + &amp;quot;)&amp;quot;);&lt;br /&gt;
			try{delete scope[call]}&lt;br /&gt;
			catch(e){scope[call] = undefined};&lt;br /&gt;
			return	result;&lt;br /&gt;
		}},&lt;br /&gt;
		call:{callback:function(scope){&lt;br /&gt;
			for(var	i = 1, result = []; i &amp;lt; arguments.length; i++)&lt;br /&gt;
				result[result.length] = arguments[i];&lt;br /&gt;
			return	this.apply(scope, result);&lt;br /&gt;
		}}&lt;br /&gt;
	},&lt;br /&gt;
	Number:{&lt;br /&gt;
		toFixed:{callback:function(max){&lt;br /&gt;
			var	result = Math.pow(10, parseInt(max)),&lt;br /&gt;
				tmp = new Array(2);&lt;br /&gt;
			result = String(Math.round(this * result) / result);&lt;br /&gt;
			if(max &amp;gt; 0){&lt;br /&gt;
				tmp = result.split(&amp;quot;.&amp;quot;);&lt;br /&gt;
				tmp[1] = (tmp[1] || &amp;quot;&amp;quot;) + new Array(++max - (tmp[1] ? tmp[1].length : 0)).join(&amp;quot;0&amp;quot;);&lt;br /&gt;
				result = tmp.join(&amp;quot;.&amp;quot;);&lt;br /&gt;
			};&lt;br /&gt;
			return	result;&lt;br /&gt;
		}}&lt;br /&gt;
	},&lt;br /&gt;
	String:{&lt;br /&gt;
		lastIndexOf:{callback:function(tmp, i){&lt;br /&gt;
			var	value = String(this),&lt;br /&gt;
				result = value.split(&amp;quot;&amp;quot;).reverse().join(&amp;quot;&amp;quot;).indexOf(String(tmp).split(&amp;quot;&amp;quot;).reverse().join(&amp;quot;&amp;quot;), i || 0);&lt;br /&gt;
			return	result &amp;lt; 0 ? result : value.length - result;&lt;br /&gt;
		}},&lt;br /&gt;
		replace:{&lt;br /&gt;
		test:function(){&lt;br /&gt;
			return	&amp;quot;aa&amp;quot;.replace(/a/g,function(a,b){return b + &amp;quot; &amp;quot;}) != &amp;quot;0 1 &amp;quot;;&lt;br /&gt;
		},&lt;br /&gt;
		callback:(function(replace){return function(key, callback){&lt;br /&gt;
			var	value = String(this),&lt;br /&gt;
				result = value;&lt;br /&gt;
			if(typeof callback != &amp;quot;function&amp;quot;)&lt;br /&gt;
				result = replace.apply(value, arguments);&lt;br /&gt;
			else {&lt;br /&gt;
				var	k = !/\/.*g.*$/.test(key),&lt;br /&gt;
					i = 0,&lt;br /&gt;
					tmp = [];&lt;br /&gt;
				while(arguments = key.exec(result)){&lt;br /&gt;
					tmp[tmp.length] = result.substr(0, arguments.index);&lt;br /&gt;
					tmp[tmp.length] = callback.apply(null, arguments.concat([value.indexOf(arguments[0], i), value]));&lt;br /&gt;
					result = value.substring(i += (arguments.index + arguments[0].length));&lt;br /&gt;
					if(k)&lt;br /&gt;
						break;&lt;br /&gt;
				};&lt;br /&gt;
				result = tmp.join(&amp;quot;&amp;quot;) + result;&lt;br /&gt;
			};&lt;br /&gt;
			return	result&lt;br /&gt;
		}})(String.prototype.replace)&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	decodeURIComponent:function(value){&lt;br /&gt;
		return	String(value).replace(&lt;br /&gt;
			/(%F[0-9A-F]%E[0-9A-F]%[A-B][0-9A-F]%[8-9A-B][0-9A-F])|(%E[0-9A-F]%[A-B][0-9A-F]%[8-9A-B][0-9A-F])|(%[C-D][0-9A-F]%[8-9A-B][0-9A-F])|(%[0-9A-F]{2})/g,&lt;br /&gt;
			function(value, key, k, j, i){return String.fromCharCode(&lt;br /&gt;
				i ? parseInt(i.substr(1, 2), 16) :&lt;br /&gt;
				j ? ((parseInt(j.substr(1, 2), 16) - 0xC0) &amp;lt;&amp;lt; 6) + (parseInt(j.substr(4, 2), 16) - 0x80) :&lt;br /&gt;
				k ? ((parseInt(k.substr(1, 2), 16) - 0xE0) &amp;lt;&amp;lt; 12) + ((parseInt(k.substr(4, 2), 16) - 0x80) &amp;lt;&amp;lt; 6) + (parseInt(k.substr(7, 2), 16) - 0x80) :&lt;br /&gt;
				((parseInt(key.substr(1, 2), 16) - 0xF0) &amp;lt;&amp;lt; 18) + ((parseInt(key.substr(4, 2), 16) - 0x80) &amp;lt;&amp;lt; 12) + ((parseInt(key.substr(7, 2), 16) - 0x80) &amp;lt;&amp;lt; 6) + (parseInt(key.substr(10, 2), 16) - 0x80)&lt;br /&gt;
			)}&lt;br /&gt;
		);&lt;br /&gt;
	},&lt;br /&gt;
	encodeURIComponent:function(value){&lt;br /&gt;
		function charCodeAt(i, length){&lt;br /&gt;
			var	result = i.toString(16).toUpperCase();&lt;br /&gt;
			length = (length || 2) - result.length;&lt;br /&gt;
			return	length == 0 ? result : new Array(++length).join(&amp;quot;0&amp;quot;).concat(result);&lt;br /&gt;
		};&lt;br /&gt;
		return	String(value)&lt;br /&gt;
			.replace(/[\x00-\x20]|[\x25|\x3C|\x3E|\x5B|\x5D|\x5E|\x60|\x7F]|[\x7B-\x7D]|[\x80-\uFFFF]/g, function(value){&lt;br /&gt;
				var	i = value.charCodeAt(0),&lt;br /&gt;
					tmp = [];&lt;br /&gt;
				if(i &amp;lt; 128)&lt;br /&gt;
					tmp[tmp.length] = charCodeAt(i);&lt;br /&gt;
				else if(i &amp;lt; 2048){&lt;br /&gt;
					tmp[tmp.length] = charCodeAt(0xC0 + (i &amp;gt;&amp;gt; 6));&lt;br /&gt;
					tmp[tmp.length] = charCodeAt(0x80 + (i &amp;amp; 0x3F));&lt;br /&gt;
				}&lt;br /&gt;
				else if(i &amp;lt; 65536){&lt;br /&gt;
					tmp[tmp.length] = charCodeAt(0xE0 + (i &amp;gt;&amp;gt; 12));&lt;br /&gt;
					tmp[tmp.length] = charCodeAt(0x80 + (i &amp;gt;&amp;gt; 6 &amp;amp; 0x3F));&lt;br /&gt;
					tmp[tmp.length] = charCodeAt(0x80 + (i &amp;amp; 0x3F));&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					tmp[tmp.length] = charCodeAt(0xF0 + (i &amp;gt;&amp;gt; 18));&lt;br /&gt;
					tmp[tmp.length] = charCodeAt(0x80 + (i &amp;gt;&amp;gt; 12 &amp;amp; 0x3F));&lt;br /&gt;
					tmp[tmp.length] = charCodeAt(0x80 + (i &amp;gt;&amp;gt; 6 &amp;amp; 0x3F));&lt;br /&gt;
					tmp[tmp.length] = charCodeAt(0x80 + (i &amp;amp; 0x3F));&lt;br /&gt;
				};&lt;br /&gt;
				return	&amp;quot;%&amp;quot; + tmp.join(&amp;quot;%&amp;quot;);&lt;br /&gt;
			})&lt;br /&gt;
			.replace(/[\x23|\x24|\x26|\x2B|\x2C|\x2F|\x3A|\x3B|\x3D|\x3F|\x40]/g, function(value){&lt;br /&gt;
				return	&amp;quot;%&amp;quot; + charCodeAt(value.charCodeAt(0));&lt;br /&gt;
			})&lt;br /&gt;
			.replace(/&amp;quot;/g, &amp;quot;%22&amp;quot;)&lt;br /&gt;
			.replace(/\\/g, &amp;quot;%5C&amp;quot;);&lt;br /&gt;
	},&lt;br /&gt;
	execScript:function(value){&lt;br /&gt;
		var	tmp = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
		tmp.type = &amp;quot;text/javascript&amp;quot;;&lt;br /&gt;
		tmp.appendChild(document.createTextNode(value));&lt;br /&gt;
		with(document.documentElement)&lt;br /&gt;
			removeChild(appendChild(tmp));&lt;br /&gt;
	}&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>&gt;TheDJ@en.wikipedia.org</name></author>
	</entry>
</feed>