$.fn.pager = function(clas, options) {

	var settings = {
		navId: 'nav',
		navClass: 'nav',
		navAttach: 'append',
		highlightClass: 'highlight',
		nextText: '&laquo;',
		prevText: '&raquo;',
		linkText: null,
		linkWrap: null,
		height: null,
		perPage: 4,
		constant: 0,
		hideNav: 'true'
	}
	if(options) $.extend(settings, options);

	return this.each( function () {

		var me = $(this);
		var size;
		var iFromParam = GetUrlParam('page') ? (GetUrlParam('page') - 1) + settings.perPage : 0;
	  	var i = iFromParam || 0;

		var navid = '#'+settings.navId;

		function init () {
			size = $(clas, me).not(navid).size();
			if(settings.height == null) {
				settings.height = getHighest();
			}
			if(size > 1) {
				if(settings.hideNav == 'true'){
					makeNav();
				}
				show();
				highlight();
			}
			sizePanel();
			if(settings.linkWrap != null) {
				linkWrap();
			}
		}
		function makeNav () {
			var str = '<div id="'+settings.navId+'" class="'+settings.navClass+' arrows">';
			str += '<a href="#" rel="prev" class="prev ">'+settings.prevText+'</a>';

			var max = document.createElement('a');
			max.setAttribute('href','#');
			max.setAttribute('rel',size);
			max.setAttribute('class','max');
			var text = document.createTextNode(size);
			max.appendChild(text);
			$(".counter").append(max);

			var curr = document.createElement('a');
			curr.setAttribute('href','#');
			curr.setAttribute('rel',i+1);
			curr.setAttribute('class','current');
			var text = document.createTextNode(i+1);
			curr.appendChild(text);
			$(".counter").append(curr);

			var u = document.createTextNode('/');
			$(".counter").append(u);

			/*
			for(var i = 0; i < size; i++) {
				var j = i+1;
				var link = document.createElement('a');
				link.setAttribute('href','#');
				link.setAttribute('rel',j);
				if (i < size-1){
					//var
				}
				var text = document.createTextNode(j);
				link.appendChild(text);
				//str += '<a href="#" rel="'+j+'">';
				//str += (settings.linkText == null) ? j : settings.linkText[j-1];
				//str += '</a>';
				$(".counter").append(link);
			}
			*/
			str += '<a href="#" rel="next" class="next hiddenNav ">'+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 show () {
			$(me).find(clas).not(navid).hide();
			for(j = i; j < (i + settings.perPage) ; j++ ){
				var show = $(me).find(clas).not(navid).get(j);
				$(show).show();
			}

		}

		function highlight () {
			$(me).find(navid).find('a').removeClass(settings.highlightClass);
			var show = $(me).find(navid).find('a').get(i+1);
			$(show).addClass(settings.highlightClass);
		}

		function sizePanel () {
			if($.browser.msie) {
				$(me).find(clas).not(navid).css( {
					height: settings.height
				});
			} else {
				$(me).find(clas).not(navid).css( {
					// minHeight: settings.height
				});
			}
		}

		function GetUrlParam( paramName )
		{
			var oRegex = new RegExp( '[\?&]' + paramName + '=([^&]+)', 'i' ) ;
			var oMatch = oRegex.exec( window.top.location.search ) ;

			if ( oMatch && oMatch.length > 1 )
				return decodeURIComponent( oMatch[1] ) ;
			else
				return null;
		}

		function getHighest () {
			var highest = 0;
			$(me).find(clas).not(navid).each(function () {

				if(this.offsetHeight > highest) {
					highest = this.offsetHeight;
				}
			});
			highest = highest + "px";
			return highest;
		}
		function getNavHeight () {
			var nav = $(navid).get(0);
			return nav.offsetHeight;
		}
		function linkWrap () {
			$(me).find(navid).find("a").wrap(settings.linkWrap);
		}
		init();
		$(this).find(navid).find("a").click(function () {
			if($(this).attr('rel') == 'prev') {
				if(i  + 1 < size - settings.constant) {
					i = i +1;
					$('.current').html(i+1);
					$("a[rel=next]").removeClass('hiddenNav');
					if(i + 1 == size-settings.constant){
						$(this).addClass('hiddenNav');
					};
				}
			} else
				if($(this).attr('rel') == 'next') {
					if(i > 0) {
						i = i-1;
						$('.current').html(i+1);
						$("a[rel=prev]").removeClass('hiddenNav');
						if(i == 0 ){
							$(this).addClass('hiddenNav');
						}
					}
				}
			show();
			highlight();
			return false;
		});
	});
}
