//-------------------------------------------------
//		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: 4,
                        pageNav: false,
			currentPage: 1,
			holder: null,
			pagerLocation: "after"
		};
		
		var options = $.extend(defaults, options);
		
		
		return this.each(function() {
				
			var selector = $(this);	
			var pageCounter = 1;
			
			selector.wrap("<div class='simplePagerContainer'></div>");
			
			selector.children("li").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;
			}
			
			//Build pager navigation
                        var pageNav = "<div class='navContainer'>";
			pageNav += "<ul class='simplePagerNav'>";
                        if (options.pageNav != false) {
                            pageNav += "<li class='simplePagerPrev'><a href='#' rel="+(options.currentPage-1)+" id='pagePrev'>Page précédente</a></li>";
                        }
			for (i=1;i<=pageCounter;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 (options.pageNav != false) {
                            pageNav += "<li class='simplePagerNext'><a href='#' rel="+options.currentPage+" id='pageNext'>Page suivante</a></li>";
                        }
			pageNav += "</ul>";
                        pageNav += "</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").not("a#pagePrev").not("a#pageNext").click(function() {

				//grab the REL attribute 
				var clickedLink = parseInt($(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+"']").not("a#pagePrev").not("a#pageNext").parent("li").addClass("currentPage");
				}
				else {
					//remove current current (!) page
					$(this).parent("li").parent("ul").parent(".navContainer").find("li.currentPage").removeClass("currentPage");
					//Add current page highlighting
					$(this).parent("li").parent("ul").parent(".navContainer").find("a[rel='"+clickedLink+"']").not("a#pagePrev").not("a#pageNext").parent("li").addClass("currentPage");
				}
				
				//hide and show relevant links
//				selector.children().hide();
//				selector.find(".simplePagerPage"+clickedLink).show();
                                selector.children().fadeOut();
                                $(this).parent().parent().fadeOut();
				selector.find(".simplePagerPage"+clickedLink).delay(600).fadeIn();
                                $(this).parent().parent().delay(200).fadeIn();

				
				return false;
			});

                        // pager navigation behavior for prev link
                        selector.parent().find("a#pagePrev").click(function() {
                            
                                //grab the REL attribute
                                var currentpage = parseInt($(this).attr("rel"));

                                if (currentpage > 0) {

                                    
                                    var next = $(this).parent("li").parent("ul").parent(".navContainer").find("a#pageNext");
                                    next.attr('rel', parseInt((next.attr('rel'))-1));
                                    
                                    if (parseInt($(this).attr('rel')) > 0) {
                                        $(this).attr("rel", (currentpage-1));
                                        options.currentPage = options.currentPage-1;
                                    }

                                    if(!options.holder) {
                                    //remove current current (!) page
                                        $(this).parent("li").parent("ul").parent(".navContainer").find("li.currentPage").removeClass("currentPage");
                                        //Add current page highlighting
                                        $(this).parent("li").parent("ul").parent(".navContainer").find("a[rel='"+(currentpage)+"']").not("a#pageNext").not("a#pagePrev").parent("li").addClass("currentPage");
                                        //$(this).parent("li").removeClass("currentPage");
                                        //$(this).parent("li").parent("ul").find("a#pageNext").removeClass("currentPage");
                                    }


                                    selector.children().fadeOut();
                                    $('.simplePagerContainer').fadeOut();
                                    selector.find(".simplePagerPage"+currentpage).delay(600).fadeIn();
                                    $('.simplePagerContainer').delay(200).fadeIn();  

                                }

                                return false;


                        });

                        // pager navigation behavior for next link
                        selector.parent().find("a#pageNext").click(function() {
                            //grab the REL next link attribute and MAJ
                             var currentpage = parseInt($(this).attr("rel"));

                            if (currentpage < pageCounter) {

                                   
                                    if ((currentpage+1) <= pageCounter) {
                                        $(this).attr("rel", (currentpage+1));
                                    }

                                    //grab the REL prev link attribute and MAJ
                                    var prev = $(this).parent("li").parent("ul").parent(".navContainer").find("a#pagePrev");

                                    if (parseInt(prev.attr('rel')) >= 0) {
                                        prev.attr('rel', (parseInt(prev.attr('rel'))+1));
                                    }
                          
                                    options.currentPage = options.currentPage+1;

                                    if(!options.holder) {
                                    //remove current current (!) page
                                        $(this).parent("li").parent("ul").parent(".navContainer").find("li.currentPage").removeClass("currentPage");
                                        //Add current page highlighting
                                        $(this).parent("li").parent("ul").parent(".navContainer").find("a[rel='"+(currentpage+1)+"']").not("a#pageNext").not("a#pagePrev").parent("li").addClass("currentPage");
                                        //$(this).parent("li").removeClass("currentPage");

                                    }

                                    

                                    selector.children().fadeOut();
                                    $('.simplePagerContainer').fadeOut();
                                    selector.find(".simplePagerPage"+(currentpage+1)).delay(600).fadeIn();
                                    $('.simplePagerContainer').delay(200).fadeIn();


                                }

                               return false;

                        });

		});
	}
	

})(jQuery);


