//-------------------------------------------------
//		Quick Pager jquery plugin
//		Created by dan and emanuel @geckonm.com
//		www.geckonewmedia.com
// 
//		v1.1
//-------------------------------------------------
//Modified by Scott Wilkin 09/04/2009 to add indexing to the pager nav.
(function($) {
	    
	$.fn.quickPager = function(options) {
	
		var defaults = {
			pageSize: 10,
			currentPage: 1,
			holder: null,
			pagerLocation: "after"
		};
		
		var options = $.extend(defaults, options);
		
		
		return this.each(function() {
	
						
			var selector = $(this);	
			var pageCounter = 1;
			
			//elector.parent.children('.simplePagerContainer').remove();
			
			selector.wrap("<div class='simplePagerContainer'></div>");
			
			selector.children().each(function(i){ 
					
				if(i < pageCounter*options.pageSize && i >= (pageCounter-1)*options.pageSize) {
				$(this).addClass("simplePagerPage"+pageCounter);
				}
				else {
					$(this).addClass("simplePagerPage"+(pageCounter+1));
					pageCounter ++;
				}	
				
			});
			
			// show/hide the appropriate regions 
			selector.children().hide();
			selector.children(".simplePagerPage"+options.currentPage).show();
			
			if(pageCounter <= 1) {
				return;
			}
			
            //alert('build nav');                
	        //total number of items
	        var totalItems = selector.children().length; 
	        //number of items per page
	        var numPerPage = options.pageSize;
	        //determine starting index
	        var startIndex = ((options.currentPage - 1)*numPerPage) + 1;
	        //determine end index
	        var endIndex = Math.min(startIndex + numPerPage - 1, totalItems);                
            
            var pageNav = "<div class='simplePagerNav'><div style=\"float:left;\">Showing Results <span class=\"index1\"> "+ startIndex +"</span>-<span class=\"index2\">"+ endIndex +"</span> of " + totalItems + "</div>";
	        
			
		    for (i=pageCounter;i>=1;i--){
			    if (i==options.currentPage) {
				    pageNav += "<div class=currentPage simplePageNav"+i+"'><a rel='"+i+"' href='#'>"+i+"</a></div>";	
			    }
			    else {
				    pageNav += "<div class='simplePageNav"+i+"'><a rel='"+i+"' href='#'>"+i+"</a></div>";
			    }
		    }
		    pageNav += "</div><div class=\"clear\" style=\"height:1px;\">&nbsp;</div>";
			
		    if(!options.holder) {
			    switch(options.pagerLocation)
			    {
			    case "before":
				    selector.before(pageNav);
			    break;
			    case "both":
				    selector.before(pageNav);
				    selector.after(pageNav);
			    break;
			    default:
				    selector.after(pageNav);
			    }
		    }
		    else {
			    $(options.holder).append(pageNav);
		    }			
			
		

			
			//pager navigation behaviour
			selector.parent().find(".simplePagerNav a").click(function() {
					
				//grab the REL attribute 
				var clickedLink = $(this).attr("rel");
				options.currentPage = clickedLink;
				
			    //total number of items
			    var totalItems = selector.children().length; 
			    //number of items per page
			    var numPerPage = options.pageSize;
			    //determine starting index
			    var startIndex = ((options.currentPage - 1)*numPerPage) + 1;
			    //determine end index
			    var endIndex = Math.min(startIndex + numPerPage - 1, totalItems);
				
				if(options.holder) {
					$(this).parent("div").parent("div").parent(options.holder).find("div.currentPage").removeClass("currentPage");
					$(this).parent("div").parent("div").parent(options.holder).find("a[rel='"+clickedLink+"']").parent("div").addClass("currentPage");
					
					$(this).parent("div").parent("div").parent(options.holder).find("span[class='index1']").empty().append(startIndex);
					$(this).parent("div").parent("div").parent(options.holder).find("span[class='index2']").empty().append(endIndex);									
				}
				else {
					//remove current current (!) page
					$(this).parent("div").parent("div").parent(".simplePagerContainer").find("div.currentPage").removeClass("currentPage");
					//Add current page highlighting
					$(this).parent("div").parent("div").parent(".simplePagerContainer").find("a[rel='"+clickedLink+"']").parent("div").addClass("currentPage");
					
					$(this).parent("div").parent("div").parent(options.holder).find("span[class='index1']").empty().append(startIndex);
					$(this).parent("div").parent("div").parent(options.holder).find("span[class='index2']").empty().append(endIndex);				
				}
				
				//hide and show relevant links
				selector.children().hide();			
				selector.find(".simplePagerPage"+clickedLink).show();
				
				return false;
			});
		});
	}
	

})(jQuery);
