/* protoload reloaded 
 * Terence Johnson, Scribendi.com 
 * Based on protoload 0.2 by Andreas Kalsch
 * 
 * $Id$
 */
if (window.Prototype) {
	var Protoload = {
		options: {
			image: '/images/waiting_32.gif',
			small: '/images/waiting.gif', 
			delay: 100, 
			style: {backgroundColor: '#FFF', color: '#000', textAlign: 'center'}
		}
	};
	Element.addMethods({
		showLoading: function(el) {
			el = $(el).hideLoading();
			var options = Object.extend(Protoload.options, arguments[1] || {});
			if ((el.getHeight() <= 48) || (el.getWidth() <= 48)) {
				options.image = Protoload.options.small;
			}
			el._waiting = true;
			if (!el._loading) {
				var img = new Element('img', {src: options.image}).setStyle({verticalAlign: 'middle'});
				var e = new Element('div').setStyle(Object.extend(options.style, {position: 'absolute'})).hide().update(img);
				el.getOffsetParent().appendChild(el._loading = e);
				if (!!options.message) {
					e.insert('&nbsp;' + options.message);
				}
			}
			window.setTimeout((function() {
				if (this._waiting) {
					this._loading.clonePosition(this);
					this._loading.setStyle({lineHeight: this._loading.getHeight() + "px"});
					this._loading.show().setOpacity(0.8);
				}
			}).bind(el), options.delay);
			return el;
		},		
		// Stop waiting status - hide loading element
		hideLoading: function(el) {
			el = $(el);
			if (el._waiting) {
				el._waiting = false;
				el._loading.parentNode.removeChild(el._loading);
				el._loading = null;
			}
			return el;
		}
	});
	Event.observe(window, 'load', function() {
		new Image().src = Protoload.options.image;
		new Image().src = Protoload.options.small;
	});
}

