var xmlns = 'http://www.w3.org/1999/xhtml';

if(!window.DOMInitialised)
{
	Event.onDOMReady(init);
}
else
{
	window.setTimeout(init, 1);
}

function init()
{
	document.getElementsByClassName('popup').each(function (obj) { Event.observe(obj, 'click', popup, false); });
	window.DOMInitialised = true;
	
	// Create Ajax abortionist
	Ajax.Responders.register(
		{ 'onCreate' : function(request) {
				request.timeoutId = window.setTimeout(function()
					{
						if(request.transport.readyState === 1 ||
							request.transport.readyState == 2 ||
							request.transport.readyState == 3)
						{
							request.transport.abort();
	
							if(request.options.onFailure)
							{
								request.options.onFailure(request.transport, request.json);
							}
						}
					}, (request.options.abortTime ? request.options.abortTime : 7000)
				);
			},
			'onComplete' : function(request) { window.clearTimeout(request.timeoutId); }
		}
	);
};

/**
 * Pop up a link in a new window.
 * @param evt Event
 */
function popup(evt)
{
	var el = Event.element(evt);
	
	do
	{
		if(/^a$/i.test(el.tagName))
		{
			window.open(el.href, null);
			Event.stop(evt);
			break;
		}
	}
	while(el = el.up());
};

Element.addMethods({
	/**
	 * This method removes all child nodes.
	 * @param Element el
	 */
	clear: function(el)
	{
		el = $(el);
		$A(el.childNodes).each(function(obj) { Element.remove(obj); });
	},
	
	/**
	 * This method imports all child nodes from another document.
	 * @param Element el
	 * @param Element to
	 */
	importXML: function(to, el)
	{
		to = $(to);
	
		$A(document.importNode(el, true).childNodes).each(function(obj)
		{
			to.appendChild(obj.cloneNode(true));
		});
	}
});