var PAGING = function(varName,pageNum,numberOfPages){
	this.varName=varName;
	this.centerElementsID=[];
	this.pagingElementsID=[];
	this.numberOfPages=numberOfPages;
	this.selectedPage=pageNum;
	this.numberOfDisplayedPages=20;
	this.centerElementsID[0]='pagingList1';
	//this.centerElementsID[1]='pagingList2';
	this.pagingElementsID[0]='paging1';
	//this.pagingElementsID[1]='paging2';
	this.hideLastPage=false;
	this.hideFirstPage=false;

	this.pagingHTML=					'<div class="paging">'+
											'<div class="pagingLeft">'+
												'{pagingLeft}'+
											'</div>'+
											'<div class="pagingRight">'+
												'{pagingRight}'+
											'</div>'+
											'<div id="{centerElementID}" class="pagingCenter">'+
												'{pagingCenter}'+
											'</div>'+
											'<div style="font-size:0px;line-height:0px;clear:both">&nbsp;</div>'+
										'</div>';
	this.pagingLeftDisabledHTML=		'<div class="firstDisabled">&nbsp;</div>'+
										'<div class="previousDisabled">&nbsp;</div>';
	this.pagingLeftHTML=				'<div class="firstEnabled" onclick="{actionFirst}">&nbsp;</div>'+
										'<div class="previousEnabled" onclick="{actionPrevious}">&nbsp;</div>';
	this.pagingRightDisabledHTML=		'<div class="nextDisabled">&nbsp;</div>'+
										'<div class="lastDisabled">&nbsp;</div>';
	this.pagingRightHTML=				'<div class="nextEnabled" onclick="{actionNext}">&nbsp;</div>'+
										'<div class="lastEnabled" onclick="{actionLast}">&nbsp;</div>';
	this.pagingElementHTML=				'<div class="page {className}" onclick="{action}">{number}</div>';
	this.pagingDotsHTML=				'<div class="page dots selected">...</div>';

	this.collapse=function(id){
		var width=0;
		var children=document.getElementById(id).childNodes;
		for (var i = 0; i < children.length; i++){
			width+=children[i].offsetWidth;
		}
		document.getElementById(id).style.width=width+'px';
	}

	this.actionFunction=function(number){
		var pageNumber=number-1;

		return "alert("+pageNumber+")";
	}

	this.replaceContent=function(text,vars){
		returnText=text;
		for (var key in vars){
			returnText=returnText.replace('{'+key+'}',vars[key]);
		}
		return returnText;
	}

	this.generatePagingHTML=function(){
		var listHTML=this.pagingElementHTML;
		var vars;
		if(this.numberOfPages<=this.numberOfDisplayedPages){
			for(i=1;i<=this.numberOfPages;i++){
				vars=[];
				vars['number']=i;
				vars['action']='';

				if(i==this.selectedPage){
					if(i==1){
						vars['className']='selected first';
					}else if(i==this.numberOfPages){
						vars['className']='selected last';
					}else{
						vars['className']='selected';
					}
				}else{
					if(i==1){
						vars['className']='first';
					}else if(i==this.numberOfPages){
						vars['className']='last';
					}else{
						vars['className']='';
					}
					vars['action']=this.actionFunction(i);
				}
				if(this.numberOfPages==1){
					vars['className']="selected first last";
				}
				listHTML=this.replaceContent(listHTML,vars);
				if(i<this.numberOfPages){
					listHTML+=this.pagingElementHTML;
				}
			}
		}else{
			if(this.selectedPage<=(this.numberOfDisplayedPages-4)){
				for(i=1;i<=(this.numberOfDisplayedPages-3);i++){
					vars=[];
					vars['number']=i;
					vars['action']='';
					if(i==this.selectedPage){
						if(i==1){
							vars['className']='selected first';
						}else if(i==this.numberOfPages){
							vars['className']='selected last';
						}else{
							vars['className']='selected';
						}
					}else{
						if(i==1){
							vars['className']='first';
						}else if(i==this.numberOfPages){
							vars['className']='last';
						}else{
							vars['className']='';
						}
						vars['action']=this.actionFunction(i);
					}
					listHTML=this.replaceContent(listHTML,vars);
					if(i<(this.numberOfDisplayedPages-3)){
						listHTML+=this.pagingElementHTML;
					}else{
						if(!this.hideLastPage){
							listHTML+=this.pagingDotsHTML+this.pagingElementHTML;
						}else{
							listHTML+=this.pagingDotsHTML;
						}
					}
				}

				vars=[];
				vars['number']=this.numberOfPages;
				vars['className']='last';
				vars['action']=this.actionFunction(this.numberOfPages);
				listHTML=this.replaceContent(listHTML,vars);
			} else if(this.selectedPage>=(this.numberOfPages-(this.numberOfDisplayedPages-5))){
				vars=[];
				vars['number']=1;
				vars['action']='';

				if(1==this.selectedPage){
					vars['className']='selected first';
				}else{
					vars['className']='first';
					vars['action']=this.actionFunction(1);
				}

				if(!this.hideFirstPage){
					listHTML=this.replaceContent(listHTML,vars);
				}else{
					listHTML='';
				}
				listHTML+=this.pagingDotsHTML+this.pagingElementHTML;

				for(i=(this.numberOfPages-(this.numberOfDisplayedPages-4));i<=this.numberOfPages;i++){
					vars=[];
					vars['number']=i;
					vars['action']='';
					if(i==this.selectedPage){
						if(i==this.numberOfPages){
							vars['className']='selected last';
						}else{
							vars['className']='selected';
						}
					}else{
						if(i==this.selectedPage){
							vars['className']='last';
						}else{
							vars['className']='';
						}
						vars['action']=this.actionFunction(i);
					}
					listHTML=this.replaceContent(listHTML,vars);
					if(i<this.numberOfPages){
						listHTML+=this.pagingElementHTML;
					}
				}

			}else{
				vars=[];
				vars['number']=1;
				vars['action']='';

				if(1==this.selectedPage){
					vars['className']='selected first';
				}else{
					vars['className']='first';
					vars['action']=this.actionFunction(1);
				}
				if(!this.hideFirstPage){
					listHTML=this.replaceContent(listHTML,vars);
				}else{
					listHTML='';
				}
				listHTML+=this.pagingDotsHTML+this.pagingElementHTML;

				var margin=Math.floor(((this.numberOfDisplayedPages-6)/2));
				if(margin<0)margin=0;
				i=0;
				for(i=(this.selectedPage-margin);i<=(this.selectedPage+margin);i++){
					vars=[];
					vars['number']=i;
					vars['action']='';
					if(i==this.selectedPage){
						vars['className']='selected';
					}else{
						vars['className']='';
						vars['action']=this.actionFunction(i);
					}
					listHTML=this.replaceContent(listHTML,vars);
					if(i<(this.selectedPage+margin)){
						listHTML+=this.pagingElementHTML;
					}else{
						if(!this.hideLastPage){
							listHTML+=this.pagingDotsHTML+this.pagingElementHTML;
						}else{
							listHTML+=this.pagingDotsHTML;
						}
					}
				}

				vars=[];
				vars['number']=this.numberOfPages;
				if(this.numberOfPages==this.selectedPage){
					vars['className']='selected last';
				}else{
					vars['className']='last';
					vars['action']=this.actionFunction(this.numberOfPages);
				}
				listHTML=this.replaceContent(listHTML,vars);


			}
		}
		return listHTML;
	}


	this.displayPaging=function(){
		if(this.numberOfPages>1){
			var vars=[];
			/* vars['argsFirst']=1;
			vars['argsPrevious']=this.selectedPage-1;
			vars['argsLast']=this.numberOfPages;
			vars['argsNext']=this.selectedPage+1;*/
			if(this.selectedPage==1)
				vars['pagingLeft']=this.replaceContent(this.pagingLeftDisabledHTML,vars);
			else{
				vars['actionFirst']=this.actionFunction(1);
				vars['actionPrevious']=this.actionFunction(this.selectedPage-1);
				vars['pagingLeft']=this.replaceContent(this.pagingLeftHTML,vars);
			}

			if(this.selectedPage==this.numberOfPages)
				vars['pagingRight']=this.replaceContent(this.pagingRightDisabledHTML,vars);
			else{
				vars['actionLast']=this.actionFunction(this.numberOfPages);
				vars['actionNext']=this.actionFunction(this.selectedPage+1);
				vars['pagingRight']=this.replaceContent(this.pagingRightHTML,vars);
			}
			vars['pagingCenter']=this.generatePagingHTML();

			var pagingDest=null;
			var i=0;
			for(i=0;i<this.centerElementsID.length;i++){
				vars['centerElementID']=this.centerElementsID[i];
				pagingDest=document.getElementById(this.pagingElementsID[i]);
				pagingDest.innerHTML=this.replaceContent(this.pagingHTML,vars);
				this.collapse(this.centerElementsID[i]);
			}
		}
	}
}
