//-------------------------------------------------
//		Quick Pager jquery plugin
//		Created by dan@geckonm.com
//		www.geckonewmedia.com
// 
//		Add prev and next link to page navigation.
//		modified by wonchan.lee@gmail.com
//		twitter.com/chanlee
//-------------------------------------------------

(function($) {
	    
	$.fn.quickPager = function(options) {
	
		var defaults = {
            pageSize: 10,
            naviSize: 5,
            currentPage: 1,
			holder: ""
    	};
    	var options = $.extend(defaults, options);
	  	
		//leave this

		var selector = $(this);
		var totalRecords = $(this).children().length;
		var pageCounter = 1;

		selector.children().each(function(i){
			if(i < pageCounter*options.pageSize && i >= (pageCounter-1)*options.pageSize) {
				$(this).addClass("page"+pageCounter);
			}
			else {
				$(this).addClass("page"+(pageCounter+1));
				pageCounter ++;
			}	
		});
		 
		//show/hide the appropriate regions 
		selector.children().hide();
		$(".page"+options.currentPage).show();
		if (totalRecords != 0)
		{
		// For the Showing Results tag on Page Load 
		var firstPageLinkPageLength = $("LI.page1").length;			       						
		var endPageResultNumber = (1*options.pageSize) - (options.pageSize - firstPageLinkPageLength);					
		
		}
		
		
		//first check if there is more than one page. If so, build nav
		if(pageCounter > 1) 
		{
			//Build pager navigation
			var pageNav = "<ul class='pageNav'>";	
			pageNav += "<li class=\"prev\" style=\"display:none;\"><a rel=\"prev\" href=\"#\">< Prev</a></li>";
			for (i=1;i<=pageCounter;i++)
			{
				if (i==options.currentPage)
				{
					pageNav += "<li style=\"display:none;\" class=\"currentPage pageNav"+i+"\"'><a rel='"+i+"' href='#'>"+i+"</a></li>";	
				} else
				{
					pageNav += "<li style=\"display:none;\" class='pageNav"+i+"'><a rel='"+i+"' href='#'>"+i+"</a></li>";
				}
			
			}
			pageNav += "<li style=\"display:block;\" class=\"resultsShowingLI\"><div class=\"resultsShowing\"><p>Showing 1-"+endPageResultNumber+" of "+totalRecords+" Parks</p></div></li>";
			pageNav += "<li class=\"next\" style=\"display:block;\"><a rel=\"next\" href=\"#\">Next ></a></li>";

			pageNav += "</ul>";
			
			
			
			
			if(options.holder == "") 
			{
				selector.after(pageNav);
			}
			else 
			{
				$(options.holder).append(pageNav);
			}
			
			var start = 1;
			var end = options.naviSize;
			
			var liSize = ($("UL.pageNav LI").length)/2;
					
			
			liSize = liSize - 3;
			
			// all hide and show start to end page with navigation.
			$('.pageNav').children().hide();
			
			
			
			$("li.prev").css("display", "none");
			$("li.next").css("display", "block");
			
			//pager navigation behaviour
			
			$(".pageNav a").click(function()
			 {			
				
				if($(this).text()=='< Prev')
				 {
					var clickedLink = $("li.currentPage A").attr("rel");

                    var clickedLink = parseInt(clickedLink) - 1;
                    end = Math.ceil(clickedLink / options.naviSize) * options.naviSize;
                    
					start = end - options.naviSize+1;
					
					// For the Showing Results tag on Page Previous Link
					var clickedLinkPagePreviousLength = $("LI.page"+(clickedLink-1)).length;				
					var clickedLinkPageLength = $("LI.page"+clickedLink).length;						
					var startResultNumber = ((clickedLink-1)*clickedLinkPagePreviousLength)+1;							
					var endResultNumber = (clickedLink*options.pageSize) - (options.pageSize - clickedLinkPageLength);									
					$(".resultsShowing").html("<p>Showing "+startResultNumber+"-"+endResultNumber+" of "+totalRecords+" Parks</p>");
				
					$('.pageNav').children().hide();
					
					 for (i=start; i<=end; i++)
					  {
					  
						
						 if (clickedLink > 1 && clickedLink < liSize)
						 {
						 $('.prev').show();
						 $('.prev').css("display", "block");
						 $('.next').show();
						 }
						 else if (clickedLink == liSize)
						 {
						 $('.prev').show();
						 $('.prev').css("display", "block");
						 $('.next').hide();
						 }
						 else
						 {
							$('.prev').hide();
							$('.next').show();
						 }
						
						
						
						
					  }
						
						
					
				} else if ($(this).text() == 'Next >')
				 {
				
				var clickedLink = $("li.currentPage A").attr("rel");
				start = Math.floor(clickedLink / options.naviSize) * options.naviSize + 1;
					
				var clickedLink = parseInt(clickedLink) + 1;
				
				// For the Showing Results tag on Page Next Link
				var clickedLinkPagePreviousLength = $("LI.page"+(clickedLink-1)).length;				
				var clickedLinkPageLength = $("LI.page"+clickedLink).length;					
				var startResultNumber = ((clickedLink-1)*clickedLinkPagePreviousLength)+1;					
				var endResultNumber = (clickedLink*options.pageSize) - (options.pageSize - clickedLinkPageLength);				
				$(".resultsShowing").html("<p>Showing "+startResultNumber+"-"+endResultNumber+" of "+totalRecords+" Parks</p>");
				
					end = start + (options.naviSize-1);
				
					$('.pageNav').children().hide();
					
				    for (i=start; i<=end; i++)
					  {
						if ((clickedLink >= start) && (clickedLink <= end))
						 {
						 if (clickedLink < liSize)
						 {
						 $('.prev').show();
						 $('.prev').css("display", "block");
						 $('.next').show();
						 }
						 else
						 {
							$('.prev').show();
							$('.prev').css("display", "block");
							$('.next').hide();
						  }
						}
					
						
					
					}
					
				}
				
				
				options.currentPage = clickedLink;
				//remove current current (!) page
				$("li.currentPage").removeClass("currentPage");
				//Add current page highlighting
				$("ul.pageNav").find("a[rel='"+clickedLink+"']").parent("li").addClass("currentPage");
				//$(this).parent("li").addClass("currentPage");
				//hide and show relevant links				
				selector.children().hide();			
				selector.find(".page"+clickedLink).show();
				
				
				//return false;
			});
			
		}
		
			  
	}
	
	

})(jQuery);



