(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;
			var controller=Math.floor(Math.random()*100000)
			
			
			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;
			}
			
			//Build pager navigation
			
			var pageNav = "<a href='#' class='pag-previous' title='pagina precedenta'></a>";
			pageNav += "<ul class='simplePagerNav' id='"+controller+"'>";
				
			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><a rel='"+i+"' href='#'>"+i+"</a></li>";
				}
			}
			
			pageNav += "</ul>";
    		pageNav += "<a href='#' class='pag-next' title='pagina urmatoare'></a>";

			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;
				//alert('pagina curenta='+options.currentPage+'\n pagina urmatoare='+(++options.currentPage));
				//alert('>>>'+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();
				
				return false;
			});

			selector.parent().find(".pag-next").click(function() {
				//var clickedLink = $(this).attr("rel");
				
				var clickedLink = $("#"+controller+" .currentPage a").attr("rel");
				if(pageCounter == clickedLink)
					return;
					
				options.currentPage = ++clickedLink;
					
				//alert('pagina selectata= '+options.currentPage+ ' numar pagini='+pageCounter);
				
				if(options.holder) {
					$('#'+controller+' a').parent("li").parent("ul").parent(options.holder).find("li.currentPage").removeClass("currentPage");
					$('#'+controller+' a').parent("li").parent("ul").parent(options.holder).find("a[rel='"+clickedLink+"']").parent("li").addClass("currentPage");
					
				}
				else {
					//remove current current (!) page
					$('#'+controller+' a').parent("li").parent("ul").parent(".simplePagerContainer").find("li.currentPage").removeClass("currentPage");
					//Add current page highlighting
					$('#'+controller+' a').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();
				
				return false;
			});
			
			selector.parent().find(".pag-previous").click(function() {
				//var clickedLink = $(this).attr("rel");
					
				var clickedLink = $("#"+controller+" .currentPage a").attr("rel");
				options.currentPage = --clickedLink;
				
				if(options.currentPage < 1)
					return;
				
				//alert('pagina selectata= '+options.currentPage+ ' numar pagini='+pageCounter);
				
				if(options.holder) {
					$('#'+controller+' a').parent("li").parent("ul").parent(options.holder).find("li.currentPage").removeClass("currentPage");
					$('#'+controller+' a').parent("li").parent("ul").parent(options.holder).find("a[rel='"+clickedLink+"']").parent("li").addClass("currentPage");
					
				}
				else {
					//remove current current (!) page
					$('#'+controller+' a').parent("li").parent("ul").parent(".simplePagerContainer").find("li.currentPage").removeClass("currentPage");
					//Add current page highlighting
					$('#'+controller+' a').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();
				
				return false;
			});

		});
	}

})(jQuery);




