(function($){

	$.fn.hpagination = function(p) {
		return this.each( function() {				
			$.implPagination(this, p);
		});
	}; 	
		  
	$.implPagination = function(t, p) {
	
		if (t.impl) return false; 
		
		p = $.extend({
			 display:	10, 
			 pages:		0,
			 selpage:	1,
			 href: false
		  }, p);	

		p = $.metadata ? $.extend({}, p, $(t).metadata()) : p;
			 
		p.selpage = p.selpage > 0 ? p.selpage : 1;
		p.selpage = p.selpage < p.pages ? p.selpage : p.pages;

		p.display = p.display > 0 ? p.display : 1;
		p.display = p.display < p.pages ? p.display : p.pages;

		var g = {	
			draw: function () { 				
							
				if (p.pages == 0) {
					$(t).empty();
					g._draw_empty();
					return false;
				}

				g._draw_back();			
				g._draw_pages();
				g._draw_front();
				
				if (p.href) {		
					pre_url = p.href + '&page=';

					$('a.jPag-first', t).attr('href', pre_url + '1');					
					$('a.jPag-sprevious', t).attr('href', pre_url + (p.selpage - 1));					
		
					$('.jPag-pages ul a', t).each( function() {
						url = pre_url + $(this).text();
						$(this).attr('href', url);
					});

					$('a.jPag-snext', t).attr('href', pre_url + (p.selpage + 1));						
					$('a.jPag-last', t).attr('href', pre_url + p.pages);					
				}
			},
			_draw_back: function() {
				if (p.selpage != 1) {				
					var first		= $(document.createElement('a')).addClass('jPag-first').html('首页');	
				}
				else {
					var first		= $(document.createElement('span')).addClass('jPag-first').html('首页');
				}
				
				if (p.selpage - 1 > 0) {
					var rotleft	= $(document.createElement('a')).addClass('jPag-sprevious').html('&laquo;');
				}
				else {
					var rotleft	= $(document.createElement('span')).addClass('jPag-sprevious').html('&laquo;');
				}
		
				var divwrapleft	= $(document.createElement('div')).addClass('jPag-control-back');
				divwrapleft.append(first).append(rotleft);

				$(t).addClass('jPagination').append(divwrapleft);
			},
			_draw_pages: function() {
				var ulwrapdiv	= $(document.createElement('div')).addClass('jPag-pages');
				var ul			= $(document.createElement('ul'));

				var back = 1;
				var front = 1;
				var count = 1;

				var tmp = $(document.createElement('li')).html('<span class="jPag-current">'+ p.selpage +'</span>');
				ul.append(tmp);
				
				while(1) {		
					if (count >= p.display) {
						break;
					}
					if (p.selpage + front <= p.pages) {
						var tmp = $(document.createElement('li')).html('<a>'+ (p.selpage + front) +'</a>');
						ul.append(tmp);						
						front++;
						count++;
					}						

					if (count >= p.display) {
						break;
					}
					if (p.selpage - back > 0) {
						var tmp = $(document.createElement('li')).html('<a>'+ (p.selpage - back) +'</a>');
						ul.prepend(tmp);		
						back++;
						count++;
					}				
				}				

				ulwrapdiv.append(ul);				

				$(t).append(ulwrapdiv);
			},
			_draw_front: function() {
				if (p.selpage + 1 <= p.pages) {
					var rotright	= $(document.createElement('a')).addClass('jPag-snext').html('&raquo;');	
				}
				else {
					var rotright	= $(document.createElement('span')).addClass('jPag-snext').html('&raquo;');	
				}

				if (p.selpage != p.pages) {
					var last		= $(document.createElement('a')).addClass('jPag-last').html('末页');
				}
				else {
					var last		= $(document.createElement('span')).addClass('jPag-last').html('末页');
				}

				var divwrapright	= $(document.createElement('div')).addClass('jPag-control-front');
				divwrapright.append(rotright).append(last);
		
				$(t).append(divwrapright);
			},
			_draw_empty: function() {
				var str = '当前没有记录';
				var empty	= $(document.createElement('span')).addClass('empty').html(str);				
		
				$(t).append(empty);
			}
		};	

		t.p = p;
		t.impl = g;

		g.draw();
		
		return t;				
	};	

	$.fn.pluginOptions = function(p) {
		return this.each( function() {
			if (this.impl) $.extend(this.p, p);
		});
	}; 
		
})(jQuery);

