$.fn.pager = function(clas, pager, options) {
	
	var settings = {		
		navClass: 'nav',
		navAttach: 'append',
		highlightClass: 'highlight',
		prevText: '&laquo;',
		nextText: '&raquo;',
		linkText: null,
		linkWrap: null,
		height: null,
		pageClass : "page-",
		paginationName : "default"
	}
	if(options) $.extend(settings, options);
	
	return this.each( function () {
		
		var me = $(this);
		var size;
		if ($.cookie(settings.paginationName+"_last_page") > 0) {
			i = parseInt($.cookie(settings.paginationName+"_last_page"));	
		}
		else {
	  		var i = 0;		
		}
		var navClass = '.'+settings.navClass;
		
		function init () {
			//size = $(clas, me).not(navid).size();
			var items = 4; // HOTFIX setearlo
			var total = $(clas, me).not(navClass).size();
			size = Math.ceil(total / items);
			if(settings.height == null) {			
				settings.height = getHighest();
			}
			$(clas, me).not(navClass).each(function(i) {
				$(this).addClass(settings.pageClass+Math.ceil((i+1)/items));							 
			});
			if(size > 1) {
				makeNav();
				show();
				highlight();
			}			
			//sizePanel();
			if(settings.linkWrap != null) {
				linkWrap();
			}
		}
		function makeNav () {		
			var str = '<div class="'+settings.navClass+'">';
			str += '<a href="#" rel="prev" class="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" class="next">'+settings.nextText+'</a>';
			str += '</div>';
			switch (settings.navAttach) {		
				case 'before':
					$(pager).before(str);
					break;
				case 'after':		
					$(pager).after(str);
					break;
				case 'prepend':
					$(pager).prepend(str);
					break;
				default:
					$(pager).append(str);
					break;
			}
		}
		function show () {
			$(me).find(clas).not(navClass).hide();
			//var show = $(me).find(clas).not(navClass).get(i);
			var show = $("."+settings.pageClass+(i+1));
			$.cookie(settings.paginationName+"_last_page", i);
			$(show).fadeIn();							   			
		}		
		function highlight () {
			$(pager).find('a').removeClass(settings.highlightClass);
			$(pager).each(function() {
				var show = $(this).find('a').get(i+1);			
				$(show).addClass(settings.highlightClass);
			});
		}

		function sizePanel () {
			if($.browser.msie) {
				$(me).find(clas).not(navClass).css( {
					height: settings.height
				});	
			}
			else {
				$(me).find(clas).not(navClass).css( {
					minHeight: settings.height
				});
			}
		}
		function getHighest () {
			var highest = 0;
			$(me).find(clas).not(navClass).each(function () {
				
				if(this.offsetHeight > highest) {
					highest = this.offsetHeight;
				}
			});
			highest = highest + "px";
			return highest;
		}
		function getNavHeight () {
			var nav = $(pager).find(navClass).get(0);
			return nav.offsetHeight;
		}
		function linkWrap () {
			$(pager).find(navClass).find("a").wrap(settings.linkWrap);
		}
		init();
		$(pager).find(navClass).find("a").click(function () {

			if($(this).attr('rel') == 'next') {
				if(i + 1 < size) {
					i = i+1;
				}
			}
			else if($(this).attr('rel') == 'prev') { 
				if(i > 0) {	
					i = i-1;
				}
			}
			else {		
				var j = $(this).attr('rel');	
				i = j-1;		
			}
			show();
			highlight();
			return false;
		});
	});	
}