jQuery.fn.simplePagination = function(config) 
{
	config = config || {};

	var defaults = 
	{
		disabledClass: 'viewmore-disabled',
		loadingClass: '.loading',
		totalField: 'total',
		dataListIndex: '',
		perPage: 10,
		limitParam: 'limit',
		offsetParam: 'offset',
		requestUrl: '',	
		requestType: 'POST',
		dataType: 'json',
		params: {},
		onSuccess: function(data){},
		onComplete: function(data){},
		onError: function(data){}
	};

	config = jQuery.extend(defaults, config);
	
	var $self = $(this);
	var self = this;
	var $more = $self;
	var $nomore = $(config.nomoreButton);
	var total = 0;
	this.current = 0;
	
	this.init = function() 
	{
		$more.click(self.doRequest);
	};
	
	this.update = function()
	{
		
	};
	
	this.doRequest = function()
	{
		$more.unbind('click', self.doRequest).addClass(config.loadingClass).fadeTo(0, 0.5);
		
		var params = config.params;
		
		params[config.limitParam] = config.perPage;
		params[config.offsetParam] = self.current;
		
		$.ajax(
	    {
	        type: 		config.requestType,
	        dataType: 	config.dataType,
	        url: 		config.requestUrl,
	        data:		params,
	        success: 	self.onAfterRequest,
	        error: 		config.onError,
	        complete: 	config.onComplete
	    });
		
		return false;
	};
	
	this.onAfterRequest = function(data)
	{
		$more.click(self.doRequest).removeClass(config.loadingClass).fadeTo(0, 1);
		
		if(data[config.dataListIndex])
		{
			self.current += data[config.dataListIndex].length;
	
			if(self.current == data[config.totalField])
			{
				$more.unbind('click', self.doRequest)
				.click(self.returnVoid)
				.addClass(config.disabledClass)
				.fadeTo(0, 0.3);
			}
			
			config.onSuccess(data);
		}
	};
	
	this.returnVoid = function(){ return false; };
	
	this.alert = function(){ alert('!'); };
	
	this.init();
	
	return this;
};

