$.fn.pager = function(scrollTo, scrollParam, size, options, callback, templName, type, category, searchText, page) {

	var settings = {
		navId: 'nav',
		navClass: 'nav',
		navAttach: 'append',
		highlightClass: 'highlight',
		prevText: '&laquo;',
		nextText: '&raquo;',
		linkText: null
	}
	if(options) $.extend(settings, options);

	return this.each( function () {

		if(size <= 1)
			return;

		var me = $(this);
		var navid = '#'+settings.navId;

		makeNav();
		highlight();

		$(this).find(navid).find("a").click(function () {

			var rel = $(this).attr('rel');
			switch(rel) {
				case 'next':
					if (page < size) {
						callback( templName, type, category, searchText, page+1 );
						$.scrollTo($(scrollTo), scrollParam );
					}
					break;
				case 'prev':
					if (page > 1) {
						callback( templName, type, category, searchText, page-1 );
						$.scrollTo($(scrollTo), scrollParam );
					}
					break;
				default:
					var i = parseInt(rel);
					if (page != i) {
						callback( templName, type, category, searchText, i );
						$.scrollTo($(scrollTo), scrollParam );
					}
			}
			return false;
		});

		function makeNav () {
			var str = '<div id="'+settings.navId+'" class="'+settings.navClass+'">';
			str += '<a href="#" rel="prev">'+settings.prevText+'</a>';
			for(var i = 0; i < size; i++) {
				var j = i+1;
				str += '<a href="#" rel="'+j+'">';
				str += (settings.linkText == null) ? j : settings.linkText[j-1];
				str += '</a>';
			}
			str += '<a href="#" rel="next">'+settings.nextText+'</a>';
			str += '</div>';
			switch (settings.navAttach) {
				case 'before':
					$(me).before(str);
					break;
				case 'after':
					$(me).after(str);
					break;
				case 'prepend':
					$(me).prepend(str);
					break;
				default:
					$(me).append(str);
					break;
			}
		}
		function highlight () {
			$(me).find(navid).find('a').removeClass(settings.highlightClass);
			$(me).find(navid).find('a[rel="'+page+'"]').addClass(settings.highlightClass);
		}
	});
}
