var Paging = function(){
	this.pageContainer = Element.get("pageContainer");
	this.pagingContainer = Element.get("pagingContainer");
	this.pageOn = 0;
	this.prevPage = -1;
	this.blockLimit = 5;
	this.bookendLimit = 2;
	this.activePages = [];
	if(this.pagingContainer){
		this.pages = Element.parseSelector(".pages", this.pageContainer);
		this.lastPage = this.pages.length - 1;
		for(var i = 0; i < this.pages.length; i++){
			if(this.pages[i].style.display == "block"){this.pageOn = i; break;}
		}
		this.Draw();
	}
}
Paging.prototype.TurnPage = function(evt, el){
	if(el){
		if(el.id){
			this.prevPage = this.pageOn;
			this.pageOn = parseInt(el.id.split('_')[1]);
			if(this.prevPage != this.pageOn){
				this.pages[this.pageOn].style.display = "block";
				this.pages[this.prevPage].style.display = "none";
				if(this.activePages['p_' + this.pageOn]){
					Element.get('p_' + this.prevPage).className = '';
					Element.get('p_' + this.pageOn).className = "currentPage";
				} else {
					this.Draw();
				}
				scroll(0,0);
			}
		}
	}
}
Paging.prototype.Draw = function(){
	if(!this.activePages['p_' + this.pageOn] || !this.activePages['p_' + this.prevPage]){
		this.activePages = [];
	  var totalPages = this.lastPage + 1;
	  var limit = this.blockLimit;
	  if(totalPages < this.blockLimit){limit = totalPages;}
	  Element.removeChildNodes(this.pagingContainer);
    var pageBox = Element.create('div',{className:"paging"},'',this.pagingContainer);
	  if(totalPages < (this.blockLimit + 2)){
	  	for(var i = 0; i < limit; i++){
	  		var a = Element.create('a', {href:"javascript:void(0)", id:"p_" + i}, i + 1,pageBox);
	  		if(i == this.pageOn){a.className = "currentPage";}
	      Events.add({element:a,type:"click",handler:this.TurnPage,context:this});
	      this.activePages['p_' + i] = true;
	  	}
	  }else{
	  	if(this.pageOn >= (this.blockLimit - 1)){
		  	var a = Element.create('a', {href:"javascript:void(0)", id:"p_0"}, 1,pageBox);
		    Events.add({element:a,type:"click",handler:this.TurnPage,context:this});
		    var a = Element.create('a', {href:"javascript:void(0)", id:"p_1"}, 2,pageBox);
		    Events.add({element:a,type:"click",handler:this.TurnPage,context:this});
		    Element.create('span',{className:'floatLft'}, '... ',pageBox);
		  }else{
		  	for(var i = 0; i < limit; i++){
		  		var a = Element.create('a', {href:"javascript:void(0)", id:"p_" + i}, i + 1,pageBox);
		  		if(i == this.pageOn){a.className = "currentPage";}
		      Events.add({element:a,type:"click",handler:this.TurnPage,context:this});
		      if(totalPages <= this.blockLimit){if(i <= limit){this.activePages['p_' + i] = true;}}
		  	}
		  	Element.create('span',{className:'floatLft'}, '...',pageBox);
		  }
		  if(this.pageOn >= (this.blockLimit - 1) && this.pageOn <= (totalPages - this.blockLimit)){
		  	var i = this.pageOn;
		  	var a = Element.create('a', {href:"javascript:void(0)", id:"p_" + (i - 2)}, (i - 1), pageBox);
	      Events.add({element:a,type:"click",handler:this.TurnPage,context:this});
	      var a = Element.create('a', {href:"javascript:void(0)", id:"p_" + (i - 1)}, i, pageBox);
	      Events.add({element:a,type:"click",handler:this.TurnPage,context:this});
	      var a = Element.create('a', {href:"javascript:void(0)", id:"p_" + i}, (i + 1), pageBox);
	      a.className = "currentPage";
	      Events.add({element:a,type:"click",handler:this.TurnPage,context:this});
	      var a = Element.create('a', {href:"javascript:void(0)", id:"p_" + (i + 1)}, (i + 2), pageBox);
	      Events.add({element:a,type:"click",handler:this.TurnPage,context:this});
	      var a = Element.create('a', {href:"javascript:void(0)", id:"p_" + (i + 2)}, (i + 3), pageBox);
	      Events.add({element:a,type:"click",handler:this.TurnPage,context:this});
	      this.activePages['p_' + i] = true;
		  }
		  if(this.pageOn <= (totalPages - this.blockLimit)){
		  	Element.create('span', {className:'floatLft alignR'},'...',pageBox);
		    var a = Element.create('a',{href:'javascript:void(0)', id:"p_" + (totalPages - 2)},(totalPages - 1),pageBox);
		    Events.add({element:a,type:"click",handler:this.TurnPage,context:this});
		    var a = Element.create('a',{href:'javascript:void(0)', id:"p_" + (totalPages - 1)},totalPages,pageBox);
		    Events.add({element:a,type:"click",handler:this.TurnPage,context:this});
		  }else{
		  	Element.create('span', {className:'floatLft alignR'},'...',pageBox);
		  	var startPage = (totalPages - 1) - this.blockLimit;
		  	for(var i = startPage; i < totalPages; i++){
		  		var a = Element.create('a', {href:"javascript:void(0)", id:"p_" + i}, i + 1,pageBox);
		  		if(i == this.pageOn){a.className = "currentPage";}
		      Events.add({element:a,type:"click",handler:this.TurnPage,context:this});
		      if(totalPages <= this.blockLimit){if(i <= limit){this.activePages['p_' + i] = true;}}
		  	}
		  }
	  }
	}
}
function InitPaging(){var pg = new Paging();}
Events.add({element:window,type:"load",handler:InitPaging});