/*
 * jQuery Paginator plugin
 *
 * 
 * Licensed under the MIT License:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Copyright (c) 2009 Isaac Roca Escoda (iroca@pragma.cat)
 * 
 */
;(function($) {
	
	document.write('<style type="text/css">.pgact{ background-color:#85894E; font-weight:bold; color:white; border:1px solid #85894E; !important;}</style>');

	var ver = 'paginador-0.1';
	var paginadors = [];
	
	$.gagopage = function(idpag,pg) {
		paginadors[idpag].goto(pg);
	}

	var defaults = {
		topPagerOn: false,
		bottomPagerOn: true,
		nextPageBttn: 'Següent &rsaquo;',
		prevPageBttn: '&lsaquo; Anterior'
	};

	$.fn.paginador = function(settings) {
		//  Extend Paginator Object
	
		$.extend(this, {
				 
			ver: function() {
				return ver;
			},
			
			idpaginador: 0,
			numpags: 0,
			pagact: 1,
	
			drawPager: function () {
				
				var p = this;
				
				if (p.numpags>1) {
				
					$(this).find('div.pggr')
						.css({ width:'100%', display:'block',float:'right',paddingBottom:'10px'})
						.each(function (i,o) {
							
								htmlPager = '';
								pagerWidth = 6;
								
								if (p.pagact>1) 
									htmlPager += '<div class="pgn" onclick="jQuery.gagopage('+p.idpaginador+','+(p.pagact-1)+');">'+p.settings.prevPageBttn+'</div>';
									
								if (p.numpags<=pagerWidth) {
									
									for (i=1;i<=p.numpags;i++) 
										if (i==p.pagact) 
											htmlPager += '<div class="pgact">'+i+'</div>';
										else
											htmlPager += '<div class="pgn" onclick="jQuery.gagopage('+p.idpaginador+','+i+');">'+i+'</div>';
									
									
								} else {
									
									centerWidth = pagerWidth-4;
									
									preCenter = p.pagact-Math.floor(centerWidth/2);
									postCenter = p.pagact+Math.floor(centerWidth/2);
									
									switch(true) {
										
										case (preCenter<=2):
											preEtc = 2;
											preCenter = 3;
											postCenter = centerWidth+preCenter;
											postEtc = Math.floor((p.numpags+postCenter)/2);
										break;
										
										case (postCenter>=p.numpags-1):
											postEtc = p.numpags-1;
											postCenter = p.numpags-2;
											preCenter = postCenter-centerWidth;
											preEtc = Math.floor((1+preCenter)/2);
										break;
										
										default:
											preEtc = Math.floor((1+preCenter)/2);
											postEtc = Math.floor((p.numpags+postCenter)/2);
										break;
									}
									
									if (1==p.pagact) 
										htmlPager += '<div class="pgact">1</div>';
									else
										htmlPager += '<div class="pgn" onclick="jQuery.gagopage('+p.idpaginador+',1);">1</div>';
									
						
									if ((preEtc == preCenter-1)&&(preEtc==2))  {
										
										if (preEtc==p.pagact) 
											htmlPager += '<div class="pgact">'+preEtc+'</div>';
										else
											htmlPager += '<div class="pgn" onclick="jQuery.gagopage('+p.idpaginador+','+preEtc+');">'+preEtc+'</div>';
										
									} else {
										
										if (preEtc==p.pagact) 
											htmlPager += '<div class="pgact pgdots">...</div>';
										else
											htmlPager += '<div class="pgn pgdots" onclick="jQuery.gagopage('+p.idpaginador+','+preEtc+');">...</div>';
									}
										
									
									
									for (i=preCenter;i<=postCenter;i++) 
										if (i==p.pagact) 
											htmlPager += '<div class="pgact">'+i+'</div>';
										else
											htmlPager += '<div class="pgn" onclick="jQuery.gagopage('+p.idpaginador+','+i+');">'+i+'</div>';
						
									
									if ((postEtc == postCenter+1)&&(postEtc == p.numpags-1))  {
										
										if (postEtc==p.pagact) 
											htmlPager += '<div class="pgact">'+postEtc+'</div>';
										else
											htmlPager += '<div class="pgn" onclick="jQuery.gagopage('+p.idpaginador+','+postEtc+');">'+postEtc+'</div>';
										
									} else {
										
										if (postEtc==p.pagact) 
											htmlPager += '<div class="pgact pgdots">...</div>';
										else
											htmlPager += '<div class="pgn pgdots" onclick="jQuery.gagopage('+p.idpaginador+','+postEtc+');">...</div>';
									}
			
									
									
									if (p.numpags==p.pagact) 
										htmlPager += '<div class="pgact">'+p.numpags+'</div>';
									else
										htmlPager += '<div class="pgn" onclick="jQuery.gagopage('+p.idpaginador+','+p.numpags+');">'+p.numpags+'</div>';
								}
								
								if (p.pagact<p.numpags) 
									htmlPager += '<div class="pgn" onclick="jQuery.gagopage('+p.idpaginador+','+(p.pagact+1)+');">'+p.settings.nextPageBttn+'</div>';
								
								$(o).html(htmlPager);  
								
							});
					
					$(this).find('div.pggr div').css({fontSize:'12px',float:'left',border:'1px solid #ccc',padding:'5px 8px',margin:'0 2px',cursor:'pointer',textAlign:'center'});
					
					$(this).find('div.pggr div.pgdots').css({border:'0'});
						
					$(this).find('div.pggr div.pgn').hover(
							function () { $(this).css({ backgroundColor:'#ccc' }); }, 
							function () { $(this).css({ backgroundColor:'transparent' }); });
				}
			},
			
			goto: function(pg) {
				$(this).find('.part').each(function (i,o) {
					if ($(o).is('.pgg'+pg)) 
						$(o).css('display','block');
					else 
						$(o).css('display','none');
				});
				
				this.pagact = pg;
				
				this.drawPager();
			},
			
			initialize: function () {
				
				paginadors.push(this);
				var p = this;
				
				p.idpaginador = paginadors.length-1;
				
				$(this).find('.part')
					
					.each(function (i,o) {
						ioffset = i+1;
						$(o).addClass('pgg'+ioffset);
						p.numpags = ioffset;
						
						if (ioffset==p.pagact) 
							$(o).css({display:'block'});	
						else 
							$(o).css({display:'none'});	
							
					}); 
				
				if (p.settings.topPagerOn) $(this).prepend('<div class="pggr"></div>');
				if (p.settings.bottomPagerOn) $(this).append('<div class="pggr"></div>');
				
				this.drawPager();
				
			}

		});

		// initialize the paginator
		this.settings = $.extend({}, defaults, settings);
		
		this.initialize();
	
		return this;
	};
})(jQuery);
