Request.HTML.implement({
	processHTML: function(text){
		var match = text.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
		text = (match) ? match[1] : text;
	 
		var container = new Element('div');
	 
		return $try(function(){
				var root = '<root>' + text + '</root>', doc;
				if (Browser.Engine.trident){
						doc = new ActiveXObject('Microsoft.XMLDOM');
						doc.async = false;
						doc.loadXML(root);
				} else {
						doc = new DOMParser().parseFromString(root, 'text/html');
				}
				root = doc.getElementsByTagName('root')[0];
				for (var i = 0, k = root.childNodes.length; i < k; i++){
						var child = Element.clone(root.childNodes[i], true, true);
						if (child) container.grab(child);
				}
				return container;
		}) || container.set('html', text);
	}
});

function ajaxSubmit(form, url) {
	var successAction = null;
	if (arguments.length >= 3) successAction = arguments[2];
	
	var triggers = $(form).getElements('[rel=submit]');
	if (arguments.length == 4)
		trigger = triggers[arguments[3] - 1];
	else
		trigger = triggers[0];
	trigger.setStyle('display', 'none');
	var img = new Element('img', { src: '/images/ajax-loader.gif', border: '0' });
	trigger.getParent().grab(img);
	
	$(form).set('send', {
		method: 'post',
		url: url,
		onComplete: function(t) {
			img.dispose();
			trigger.setStyle('display', 'inline');
			
			var status = t.replace(/^\s+|\s+$/g, '');
			if (status == 'ok' && successAction != null) successAction();
			if (status != 'ok') alert(status);
		}
	});
	$(form).send();
}

function preload() {
	preloadImg = new Array();
	for (var i = 0; i < arguments.length; i++) {
		preloadImg[i] = new Image();
		preloadImg[i].src = arguments[i];
	}
}

function leveledHeight(selector) {
	var maxHeight = 0;
	$$(selector).each(function(elem) {
		if (maxHeight < elem.getSize().y)
			maxHeight = elem.getSize().y;
	});
	$$(selector).setStyle('height', maxHeight);
}

function ajaxLoading(id) {
	if ($(id) != null)
		$(id).set('html', '<img src="images/ajax-loader.gif" alt="loading...">');
}
