jQuery.fn.pager = function(clas, options) {

	var settings = {
		navId: 'nav',
		navClass: 'nav',
		navAttach: 'append',
		highlightClass: 'highlight',
		prevText: '&laquo;',
		nextText: '&raquo;',
		linkText: null,
		linkWrap: null,
		height: null
	}
	if(options) jQuery.extend(settings, options);


	return this.each( function () {

		var me = jQuery(this);
		var size;
	  	var i = 0;
		var navid = '#'+settings.navId;

		function init () {
			size = jQuery(clas, me).not(navid).size();
			if(settings.height == null) {
				settings.height = getHighest();
			}
			if(size > 1) {
				makeNav();
				show();
				highlight();
			}
			sizePanel();
			//if(settings.linkWrap != null) {
				//linkWrap();
			//}
		}
		function makeNav () {
			var str = '<div id="'+settings.navId+'" style="width:513px;" class="right '+settings.navClass+'">';
			var j=0;

			str += '<span><a href="#" rel="prev">'+settings.prevText+'</a></span>&nbsp; ';
			
			for(var i = size-1; i >= 0 ; i--) {
				j++;
				str += '<span><a href="#" rel="'+j+'">';
				str += (settings.linkText == null) ? j : unescape(settings.linkText[j-1]);
				str += '</a></span>&nbsp; ';
			}

						str += '<span><a href="#" rel="next">'+settings.nextText+'</a></span>&nbsp; ';
			
			str += '</div>';
			
			
			//jQuery(me).wrap(str);
			
			switch (settings.navAttach) {
				case 'before':
					jQuery(me).before(str);
					break;
				case 'after':
					jQuery(me).after(str);
					break;
				case 'prepend':
					jQuery(me).prepend(str);
					
					break;
				default:
					jQuery(me).append(str);
					break;
			}
		}
		function show () {
			jQuery(me).find(clas).not(navid).hide();
			var show = jQuery(me).find(clas).not(navid).get(i);
			jQuery(show).show();
		}
		function highlight () {
			jQuery(me).find(navid).find('a').removeClass(settings.highlightClass);
			var show = jQuery(me).find(navid).find('a').get(i+1);
			jQuery(show).addClass(settings.highlightClass);
		}

		function sizePanel () {
			if(jQuery.browser.msie) {
				jQuery(me).find(clas).not(navid).css( {
					height: settings.height
				});
			} else {
				jQuery(me).find(clas).not(navid).css( {
					minHeight: settings.height
				});
			}
		}
		function getHighest () {
			var highest = 0;
			jQuery(me).find(clas).not(navid).each(function () {

				if(this.offsetHeight > highest) {
					highest = this.offsetHeight;
				}
			});
			highest = highest + "px";
			return highest;
		}
		function getNavHeight () {
			var nav = jQuery(navid).get(0);
			return nav.offsetHeight;
		}
		function linkWrap () {
			jQuery(me).find(navid).find("a").wrap(settings.linkWrap);
		}
		init();
		jQuery(this).find(navid).find("a").click(function () {

			if(jQuery(this).attr('rel') == 'next') {
				if(i + 1 < size) {
					i = i+1;
				}
			} else if(jQuery(this).attr('rel') == 'prev') {
				if(i > 0) {
					i = i-1;
				}
			} else {
				var j = jQuery(this).attr('rel');
				i = j-1;
			}
			show();
			highlight();
			return false;
		});
	});
}