function installArrayExtensions() {
	if (!Array.prototype.map)
	{
		Array.prototype.map = function(fun /*, thisp*/)
		{
			var len = this.length >>> 0;
			if (typeof fun != "function")
				throw new TypeError();
				
			var res = new Array(len);
			var thisp = arguments[1];
			for (var i = 0; i < len; i++)
			{
				if (i in this)
				res[i] = fun.call(thisp, this[i], i, this);
			}
			
			return res;
		};
	}

	if (!Array.prototype.forEach)
	{
		Array.prototype.forEach = function(fun /*, thisp*/)
		{
			var len = this.length >>> 0;
			if (typeof fun != "function")
				throw new TypeError();
				
			var thisp = arguments[1];
			for (var i = 0; i < len; i++)
			{
				if (i in this)
				fun.call(thisp, this[i], i, this);
			}
		};
	}
}