Object.extend(Event, {

	_domReady : function() {
		if (arguments.callee.done) return;
		arguments.callee.done = true;

		if (this._timer)  clearInterval(this._timer);
		
		this._readyCallbacks.each(function(f) { f() });
		this._readyCallbacks = null;
	},

	onDOMReady : function(f) {
		if (!this._readyCallbacks) {
		  var domReady = this._domReady.bind(this);
		  
		  if (document.addEventListener)
			document.addEventListener("DOMContentLoaded", domReady, false);
			
			
			if (/WebKit/i.test(navigator.userAgent)) { 
			  this._timer = setInterval(function() {
				if (/loaded|complete/.test(document.readyState)) domReady(); 
			  }, 10);
			}
			
			Event.observe(window, 'load', domReady);
			Event._readyCallbacks =  [];
		}
		Event._readyCallbacks.push(f);
	}
});

String.prototype.trim = function() {  
    return this.replace(/^\s+|\s+$/g,'');  
}

function GetWidth()
{
	var x = 0;
	if (self.innerHeight)
	{
		x = self.innerWidth;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
	{
		x = document.documentElement.clientWidth;
	}
	else if (document.body)
	{
		x = document.body.clientWidth;
	}
	return x;
}

function GetHeight()
{
	var y = 0;
	if (self.innerHeight)
	{
		y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
	{
		y = document.documentElement.clientHeight;
	}
	else if (document.body)
	{
		y = document.body.clientHeight;
	}
	return y;
}
