//-------------------------------------------------
//		Quick Pager jquery plugin
//		Created by dan and emanuel @geckonm.com
//		www.geckonewmedia.com
// 
//		v1.1
//		18/09/09 * bug fix by John V - http://blog.geekyjohn.com/
//-------------------------------------------------

(function($) {
	    
	$.fn.quickPager = function(options) {
	
		var defaults = {
			pageSize: 10,
			currentPage: 1,
			holder: null,
			pagerLocation: "after",
			pageCounter: 1,
			selector: null,
			microsite: false
		};
		
		var options = $.extend(defaults, options);
		
		var methods = {
			render: function() {
				var selector = options.selector;
				var page = parseInt(options.currentPage);
				var total_pages = options.pageCounter;
				var max_pages = 9;
				var max_pages_side = Math.ceil((max_pages -1) / 2);
				
				var start = (total_pages > max_pages_side && (page - max_pages_side > 0) ? (page - max_pages_side) : 1);
				var end   = (total_pages > max_pages_side && (page + max_pages_side < total_pages) ? (page + max_pages_side) : total_pages);

				if ((end - start +1) < max_pages)
				{
					if (start == 1)
						end = start + max_pages -1;
					else
						start = end - max_pages +1;
				}
				
				if (end > total_pages)
					end = total_pages;
				
				//Build pager navigation
				var pageNav = "<ul class='simplePagerNav'>";	

				if (page == 1)
				{
					if (options.microsite == false)
					{
						pageNav += '<li>&laquo; Primeira</li>';
						pageNav += '<li>&laquo; Anterior</li>';
					}
				} else {
					if (options.microsite == false)
					{
						pageNav += '<li class="simplePageNav1"><a rel="1" href="#">&laquo; Primeira</a></li>';
						pageNav += '<li class="simplePageNav'+(page-1)+'"><a rel="'+(page-1)+'" href="#">&laquo; Anterior</a></li>';
					}
				}
				
				for (i=start;i<=end;i++){
					if (i==options.currentPage) {
						pageNav += "<li class='currentPage simplePageNav"+i+"'><a rel='"+i+"' href='#'>"+i+"</a></li>";	
					}
					else {
						pageNav += "<li class='simplePageNav"+i+"'><a rel='"+i+"' href='#'>"+i+"</a></li>";
					}
				}
				
				if (page == end)
				{
					if (options.microsite == false)
					{
						pageNav += '<li>Próxima &raquo;</li>';
						pageNav += '<li>Última &raquo;</li>';
					}
				} else {
					if (options.microsite == false)
					{
						pageNav += '<li class="simplePageNav'+(page+1)+'"><a rel="'+(page+1)+'" href="#">Próxima &raquo;</a></li>';
						pageNav += '<li class="simplePageNav'+total_pages+'"><a rel="'+total_pages+'" href="#">Última &raquo;</a></li>';
					}
				}
				
				pageNav += "</ul>";
				
				$(options.holder).html(pageNav);
				
				$(options.holder).parent().find(".simplePagerNav a").click(function() {
					
					//grab the REL attribute 
					var clickedLink = $(this).attr("rel");
					options.currentPage = clickedLink;
					
					if(options.holder) {
						$(this).parent("li").parent("ul").parent(options.holder).find("li.currentPage").removeClass("currentPage");
						$(this).parent("li").parent("ul").parent(options.holder).find("a[rel='"+clickedLink+"']").parent("li").addClass("currentPage");
					}
					else {
						//remove current current (!) page
						$(this).parent("li").parent("ul").parent(".simplePagerContainer").find("li.currentPage").removeClass("currentPage");
						//Add current page highlighting
						$(this).parent("li").parent("ul").parent(".simplePagerContainer").find("a[rel='"+clickedLink+"']").parent("li").addClass("currentPage");
					}
					
					//hide and show relevant links
					selector.children().hide();			
					selector.find(".simplePagerPage"+clickedLink).show();
					methods.render(this);
					
					return false;
				});
			}
		}
		
		
		return this.each(function() 
		{
			var selector = $(this);	
			options.selector = $(this);
			selector.wrap("<div class='simplePagerContainer'></div>");
			
			selector.children().each(function(i)
			{ 
				if(i < options.pageCounter*options.pageSize && i >= (options.pageCounter-1)*options.pageSize) 
					$(this).addClass("simplePagerPage"+options.pageCounter);
				else {
					$(this).addClass("simplePagerPage"+(options.pageCounter+1));
					options.pageCounter ++;
				}

//				if (i != 0 && parseInt(i) % options.pageSize == 0)
//					options.pageCounter++;
//
//				$(this).addClass("simplePagerPage"+options.pageCounter);
			});
			
			// show/hide the appropriate regions 
			selector.children().hide();
			selector.children(".simplePagerPage"+options.currentPage).show();
			
			if(options.pageCounter <= 1) 
				return;
			
			
			methods.render(this);
		});
	}
	

})(jQuery);


