function parseAjax(element)
{
	if(!element) element = 'body';
	$$(element + ' *[clickrewriteform],' + element + ' *[clickrewriteid],' + element + ' *[clickrewriteurl]').each(function(e, i){
		var url = e.getAttribute('clickrewriteurl', '');
		e.removeAttribute('clickrewriteurl');
		var update = $(e.getAttribute('clickrewriteid'));
		e.removeAttribute('clickrewriteid');
		var form = $(e.getAttribute('clickrewriteform'));
		e.removeAttribute('clickrewriteform');
		if(form) {
			if(!update) update = form;
			if(!url) url = form.getAttribute?form.getAttribute('action'):form.get('action');
			e.addEvent('click', function(e) {
				e.stop(); //Prevents the browser from following the link.
				var action = form.getAttribute?form.getAttribute('action'):form.get('action');
				form.setAttribute('action', url);
				form.set('send',{
					update: update,
					onRequest: function() {
						update.empty().addClass('ajax-loading');
					},
					onSuccess: function(responseText, responseXML) {
						form.setAttribute('action', action);
						update.removeClass('ajax-loading');
						update.set('html', responseText);
						parseAjax('#' + update.id);
					}
				}).send();
			});
		}
		else if(update) {
			e.addEvent('click', function(e) {
				e.stop(); //Prevents the browser from following the link.
				new Request({
					url : url,
					onRequest: function() {
						update.empty().addClass('ajax-loading');
					},
					onSuccess: function(responseText, responseXML) {
						update.removeClass('ajax-loading');
						update.set('html', responseText);
						parseAjax('#' + update.id);
					}
				}).send();
			});
		}
		else {
			e.addEvent('click', function(e) {
				e.stop(); //Prevents the browser from following the link.
				new Request({url:url}).send();
			});
		}
	});
	
	
	function nextEvent(e, lastevent) {
		var eventsorder = e.getAttribute('eventsorder');
		eventsorder = eventsorder.split(',');
		if(!lastevent) 
			for(var i=0; i<eventsorder.length; i++){
				if(e.hasEvent(eventsorder[i]))	{
					e.fireEvent(eventsorder[i]);
					break;
				}
			}
		else
			for(var i=0; i<=eventsorder.length-2; i++){
				if(eventsorder[i] == lastevent){
					i++
					for(; i<eventsorder.length; i++)
						if(e.hasEvent(eventsorder[i]))	{
							e.fireEvent(eventsorder[i]);
							break;
						}
					break;
				}
			}
	}
	
	
	var effects = Array('toggle','hide','disappear','reduce','show','appear','grow');
	var effect_css_selector = new Array();
	effects.each(function(effect){
		effect_css_selector.push(element + ' *[clickto' + effect + ']');
	});
	$$(effect_css_selector.join(',')).each(function(e, i){
		if(!e.getAttribute('eventsorder')) e.setAttribute('eventsorder', effects.join(','));
		e.setAttribute('parsed', '1');
		e.addEvent('click', function(event) {
			event.stop(); //Prevents the browser from following the link.
			nextEvent(e, null);
		});
	});
	
	effects.each(function(effect){
		$$(element + ' *[clickto' + effect + ']').each(function(e, i){
			var elements = e.getAttribute('clickto' + effect);
			e.removeAttribute('clickto' + effect);
			elements = elements.split(',');
			e.addEvent(effect, function() {
				elements.each(function(element){
					var element = $(element);
					if(element && element[effect]) 
						element[effect](function(){nextEvent(e, effect)});
				});
			});
		});
	});
	
	
}


