$(function() { 
	jQuery.fn.EventListener = function(event, func, options)
	{
		var defaultOptions = {
			beforeSend: function(data, event) {},
			onSuccess: function(data, textStatus) {},
			onDataError: function(XMLHttpRequest, textStatus, errorThrown) {},
			preventDefault: true,
			useLive: false,
			dataType: 'json'
		};
	
		var settings = jQuery.extend(defaultOptions, options);
		
		var bindEvent = function(e, element)
		{
			var data = {};
	
			settings.beforeSend.apply(element, [data, e]);
	
			for(var i in data)
			{
				if(typeof(data[i]) == 'object') data[i] = $.toJSON(data[i]);
			}
			
			$.ajax({
				type: 'POST',
				url: $('meta[name=imano-page-url]').attr('content') + func,
				data: data,
				success: settings.onSuccess,
				error: settings.onDataError,
				dataType: settings.dataType
			});
	
			if(settings.preventDefault) e.preventDefault();
		};
		
		if(settings.useLive)
		{
			$(this).live(event, function(e) {
				bindEvent(e, this);
			});
		}
		else
		{
			$(this).bind(event, function(e) {
				bindEvent(e, this);
			});
		}
	}; 
});
