(function($){

// Creating the sweetPages jQuery plugin:
$.fn.sweetPages = function(opts, sliderNumber){
	// If no options were passed, create an empty opts object
	if(!opts) opts = {};
	
	var resultsPerPage = opts.perPage || 3;
	
	// The plugin works best for unordered lists, althugh ols would do just as well:
	var ul = this;
	var li = ul.find('li');
	
	li.each(function(){
		// Calculating the height of each li element, and storing it with the data method:
		var el = $(this);
		el.data('height',el.outerHeight(true));
	});
	
	// Calculating the total number of pages:
	var pagesNumber = Math.ceil(li.length/resultsPerPage);
	
	// If the pages are less than two, do nothing:
	if(pagesNumber<2) return this;

	// Creating the controls div:
	var swControls = $('<div class="swControls">');
	
	for(var i=0;i<pagesNumber;i++)
	{
		// Slice a portion of the list, and wrap it in a swPage div:
		li.slice(i*resultsPerPage,(i+1)*resultsPerPage).wrapAll('<div class="swPage" />');
		
	}
	swControls.append('<a id="PrevButton'+sliderNumber+'" class="PrevButton">&laquo; Prev</a>');
	swControls.append('<a id="NextButton'+sliderNumber+'" class="NextButton">Next &raquo;</a>');
	ul.append(swControls);
	
	
	var maxHeight = 0;
	var totalWidth = 0;
	
	var swPage = ul.find('.swPage');
	swPage.each(function(){
		
		// Looping through all the newly created pages:
		
		var elem = $(this);

		var tmpHeight = 0;
		elem.find('li').each(function(){tmpHeight+=$(this).data('height');});

		if(tmpHeight>maxHeight)
			maxHeight = tmpHeight;

		totalWidth+=elem.outerWidth();
		
		elem.css('float','left').width(ul.width());
	});
		
	swPage.wrapAll('<div class="swSlider swSlider'+sliderNumber+'" />');
	
	// Setting the height of the ul to the height of the tallest page:
	ul.height('100%');
	
	var swSlider = ul.find('.swSlider');
	swSlider.append('<div class="clearBoth" />').width(totalWidth);
	
	var hyperLinkNext = ul.find('a#NextButton'+sliderNumber);
	var hyperLinkPrev = ul.find('a#PrevButton'+sliderNumber);
	var slideNumber = 1;
	
	hyperLinkNext.click(function(e){
		// Move slider to the left when Next button is clicked
		$('.swSlider'+sliderNumber).animate({left:'-=100%'},'slow');
		e.preventDefault();
		slideNumber++;
		if (slideNumber <= pagesNumber) {
		$('a#PrevButton'+sliderNumber).fadeIn();
		}
		if (slideNumber == pagesNumber) {
		$('a#NextButton'+sliderNumber).fadeOut();
		}
		});
		
	hyperLinkPrev.click(function(e){
		// Move slider to the right when Prev button is clicked
		$('.swSlider'+sliderNumber).animate({left:'+=100%'},'slow');
		e.preventDefault();
		slideNumber--;
		if (slideNumber < pagesNumber) {
		$('a#NextButton'+sliderNumber).fadeIn();
		}
		if (slideNumber == 1) {
		$('a#PrevButton'+sliderNumber).fadeOut();
		}
	});
	
	return this;
	
}})(jQuery);
