// -----------------------------------------------------------------------------------
//
//	Additional methods for Element added by SU, Couloir
//	- further additions by Lokesh Dhakar (huddletogether.com)
//
Object.extend(Element, {
	getWidth: function(element) {
			element = $(element);
			return element.offsetWidth;
	},
	setWidth: function(element,w) {
			element = $(element);
			element.style.width = w +"px";
	},
	setHeight: function(element,h) {
			element = $(element);
			element.style.height = h +"px";
	},
	getHeight: function(element) {
			element = $(element);
			return element.offsetHeight;
	},
	setTop: function(element,t) {
			element = $(element);
			element.style.top = t +"px";
	},
	setBottom: function(element,t) {
			element = $(element);
			element.style.bottom = t +"px";
	},
	setLeft: function(element,t) {
			element = $(element);
			element.style.left = t +"px";
	},
	setSrc: function(element,src) {
			element = $(element);
			element.src = src;
	},
	setHref: function(element,href) {
			element = $(element);
			element.href = href;
	},
	setInnerHTML: function(element,content) {
		element = $(element);
		element.innerHTML = content;
	},

	getPosition: function(element) {
			element = $(element);
			var display = element.getStyle('display');
			var position = element.getStyle('position');

//		console.info('befor- position:' + position + ' display: ' + display );

		if (position == null && display == 'none') { // Safari bug

				// position give 'undefined' on elements with display none,
				// so enable the element temporarily
			Element.setStyle(element, 'visibility:hidden');
			Element.show(element);
			position = element.getStyle('position');

			Element.hide(element);
			Element.setStyle(element, 'visibility:visible');
		}
			return position;
	}
});


// Adapted from DOM Ready extension by Dan Webb
// http://www.vivabit.com/bollocks/2006/06/21/a-dom-ready-extension-for-prototype
// which was based on work by Matthias Miller, Dean Edwards and John Resig
//
// Usage:
//
// Event.onReady(callbackFunction);
Object.extend(Event, {
	_domReady : function() {
		if (arguments.callee.done) return;
		arguments.callee.done = true;

		if (Event._timer)  clearInterval(Event._timer);

		Event._readyCallbacks.each(function(f) { f() });
		Event._readyCallbacks = null;

	},
	onReady : function(f) {
		if (!this._readyCallbacks) {
			var domReady = this._domReady;

			if (domReady.done) return f();

			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);
	}
});
