//-------------------------------------------------
//		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"
		};

		var options = $.extend(defaults, options);

		return this.each(function() {

			var selector = $(this);
			var pageCounter = 1;

			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 = "<ul class='simplePagerNav'>";
				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>";
					}
				}
				pageNav += "</ul>";

				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;

						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;
					});
			});
	}

})(jQuery);

