var myPaging = new Class({
 
	Implements: [Events],
 
	initialize: function(side){
		this.side = side;
		this.pages = 0;
		this.current = 1;
		this.controller = '';
		this.showpages = true;
	},
	
	goto: function(el)
	{
		if (this.pages)
		{
			this.changePage(el.id);
			$('content-navi-' + this.side).getElements('a').dispose();
			
			if (this.showpages)
			{
				for (var page = 1; page <= this.pages; page++)
				{
					if (
						(
							page != 1 && page != this.pages
						) && (
							(page >= this.current - 2 && page <= this.current + 2)
							||
							(
								(this.current < 5 && page < 5)
								||
								(this.current > this.pages - 4 && page > this.pages - 4)
							)
						)
					)
					{
						var a = el.clone();
						a.id = this.side + 'page-' + page;
						a.rel = this.controller + '/page.' + page;
						a.getElement('.content-navi-link').set('html', page);
						a.inject($('content-navi-' + this.side), 'bottom');
						side = this.side;
						a.addEvent('click', function() {
							$('content-' + side).innerHTML = '<div id="loading"></div>';
							$('content-' + side).load(this.rel);
							
							if (this.id != 'leftprev' && this.id != 'leftnext')
							{
								$(this.id).getParent().getElements('a').removeClass('active');
								$(this.id).addClass('active');
							}
							
							if (side == 'left' && leftpaging.pages)
							{
								leftpaging.goto(this);
							}
							if (side == 'right' && rightpaging.pages)
							{
								rightpaging.goto(this);
							}
						});
						if (page == this.current)
						{
							a.addClass('active');
						}
					}
				}
				
				var first = el.clone();
				first.id = this.side + 'page-1';
				first.rel = this.controller + '/page.1';
				first.getElement('.content-navi-link').set('html', '1' + ((this.current > 4) ? '...' : ''));
				first.inject($('content-navi-' + this.side), 'top');
				side = this.side;
				first.addEvent('click', function() {
					$('content-' + side).innerHTML = '<div id="loading"></div>';
					$('content-' + side).load(this.rel);
					
					if (this.id != 'leftprev' && this.id != 'leftnext')
					{
						$(this.id).getParent().getElements('a').removeClass('active');
						$(this.id).addClass('active');
					}
					
					if (side == 'left' && leftpaging.pages)
					{
						leftpaging.goto(this);
					}
					if (side == 'right' && rightpaging.pages)
					{
						rightpaging.goto(this);
					}
				});
				
				var last = el.clone();
				last.id = this.side + 'page-' + this.pages;
				last.rel = this.controller + '/page.' + this.pages;
				last.getElement('.content-navi-link').set('html', ((this.current < this.pages - 3) ? '...' : '') + this.pages);
				last.inject($('content-navi-' + this.side), 'bottom');
				side = this.side;
				last.addEvent('click', function() {
					$('content-' + side).innerHTML = '<div id="loading"></div>';
					$('content-' + side).load(this.rel);
					
					if (this.id != 'leftprev' && this.id != 'leftnext')
					{
						$(this.id).getParent().getElements('a').removeClass('active');
						$(this.id).addClass('active');
					}
					
					if (side == 'left' && leftpaging.pages)
					{
						leftpaging.goto(this);
					}
					if (side == 'right' && rightpaging.pages)
					{
						rightpaging.goto(this);
					}
				});
			}
			
			if (this.current > 1)
			{
				var prev = el.clone();
				prev.id = this.side + 'prev';
				prev.rel = this.controller + '/page.' + (this.current - 1);
				prev.getElement('.content-navi-link').set('html', '&laquo;');
				prev.inject($('content-navi-' + this.side), 'top');
				side = this.side;
				prev.addEvent('click', function() {
					$('content-' + side).innerHTML = '<div id="loading"></div>';
					$('content-' + side).load(this.rel);
					
					if (this.id != 'leftprev' && this.id != 'leftnext')
					{
						$(this.id).getParent().getElements('a').removeClass('active');
					}
					
					if (side == 'left' && leftpaging.pages)
					{
						leftpaging.goto(this);
					}
					if (side == 'right' && rightpaging.pages)
					{
						rightpaging.goto(this);
					}
				});
			}
			
			if (this.current < this.pages)
			{
				var next = el.clone();
				next.id = this.side + 'next';
				next.rel = this.controller + '/page.' + (this.current + 1);
				next.getElement('.content-navi-link').set('html', '&raquo;');
				next.inject($('content-navi-' + this.side), 'bottom');
				side = this.side;
				next.addEvent('click', function() {
					$('content-' + side).innerHTML = '<div id="loading"></div>';
					$('content-' + side).load(this.rel);

					if (this.id != 'leftprev' && this.id != 'leftnext')
					{
						$(this.id).getParent().getElements('a').removeClass('active');
					}
					
					if (side == 'left' && leftpaging.pages)
					{
						leftpaging.goto(this);
					}
					if (side == 'right' && rightpaging.pages)
					{
						rightpaging.goto(this);
					}
				});
			}
			
			$(this.side + 'page-' + this.current).getParent().getElements('a').removeClass('active');
			if (this.showpages)
			{
				$(this.side + 'page-' + this.current).addClass('active');
			}
		}
	},
	
	changePage : function(id)
	{
		if (id == this.side + 'prev')
		{
			var page = this.current - 1;
		}
		else if (id == this.side + 'next')
		{
			var page = this.current + 1;
		}
		else
		{
			var page = parseInt(id.replace(/leftpage-|rightpage-/, ''));
		}
		
		this.current = page;
	}
});

window.addEvent('domready', function() {

	leftpaging = new myPaging('left');
	rightpaging = new myPaging('right');
	
	$('content-navi-left').getElements('a').addEvents({
		'click': function() {
			if (this.rel.length > 0)
			{
				$('content-left').innerHTML = '<div id="loading"></div>';
				$('content-left').load(this.rel);
				
				if (!this.id || (this.id != 'leftprev' && this.id != 'leftnext'))
				{
					this.getParent().getElements('a').removeClass('active');
					this.addClass('active');
				}
				
				if (leftpaging.pages)
				{
					leftpaging.goto(this);
				}
			}
		}
	});
	
	$('content-navi-right').getElements('a').addEvents({
		'click': function() {
			if (this.rel.length > 0)
			{
				$('content-right').innerHTML = '<div id="loading"></div>';
				$('content-right').load(this.rel);
				
				if (!this.id || (this.id != 'rightprev' && this.id != 'rightnext'))
				{
					this.getParent().getElements('a').removeClass('active');
					this.addClass('active');
				}
				
				if (rightpaging.pages)
				{
					rightpaging.goto(this);
				}
			}
		}
	});
});

function loadContent(side, request, active, complete)
{
	$('content-navi-' + side).getElements('a').removeClass('active');
	if ($chk($(active)))
	{
		$(active).addClass('active');
	}
	$('content-' + side).innerHTML = '<div id="loading"></div>';
	$('content-' + side).set('load', {onComplete: complete ? complete : function() {}});
	$('content-' + side).load(request); 
}
