function Pager(icInTotal, icPerPage, currentPage, pageCount, HTML, navStrings) {
		this.icInTotal = icInTotal;
		this.icPerPage = icPerPage;
		this.currentPage = currentPage;
		this.pageCount = pageCount;
		this.HTML = HTML;
		this.navStrings = navStrings;
		this.pageCountPattern = "###";
		this.writePager = writePagerFunc;
		
	}
	
function writePagerFunc() {
		var half = parseInt(this.pageCount / 2);
		var start = 1;
		if( this.currentPage > half ){
			start = this.currentPage - half;
		}else{
			half += half - this.currentPage;
		}
		var end = this.currentPage + half;
		var last = parseInt(this.icInTotal / this.icPerPage);
		last = (this.icInTotal%this.icPerPage ==0) ? last : last + 1;
		end = end > last ? last : end;
			
		//return if there is only one page
		if( last < 2 ){ return ""; }
		var pageBuff = ""
		if(this.navStrings.length>3){
			if( this.currentPage > 1 ){
				pageBuff += replaceAll(this.navStrings[3],this.pageCountPattern, "1");
			}else{
				var linkStr = this.navStrings[3].substring(this.navStrings[3].indexOf("<a "), this.navStrings[3].indexOf("</a>") + 4);
				var previous = this.navStrings[3].substring(this.navStrings[3].indexOf(" >")+2, this.navStrings[3].indexOf("</a>"));
				pageBuff += this.navStrings[3].replace(linkStr, previous);
			}
		}
		
		if( this.currentPage > 1 ){
			pageBuff += replaceAll(this.navStrings[0],this.pageCountPattern, (this.currentPage - 1));
		}else{
			var linkStr = this.navStrings[0].substring(this.navStrings[0].indexOf("<a "), this.navStrings[0].indexOf("</a>") + 4);
			var previous = this.navStrings[0].substring(this.navStrings[0].indexOf(" >")+2, this.navStrings[0].indexOf("</a>"));
			pageBuff += this.navStrings[0].replace(linkStr, previous);
		}
		
		for(var i = start; i <= end; i++ ){
			if( i == this.currentPage){
				var linkStr = this.HTML.substring(this.HTML.indexOf("<a"), this.HTML.indexOf("</a>") + 4);
				pageBuff += this.HTML.replace(linkStr, this.currentPage);
			}else{
				pageBuff += replaceAll(this.HTML, this.pageCountPattern, i);
			}
		}
		
		if( this.currentPage < last ){
			pageBuff += replaceAll(this.navStrings[1], this.pageCountPattern,(this.currentPage+1));
		}else{
			var linkStr = this.navStrings[1].substring(this.navStrings[1].indexOf("<a"), this.navStrings[1].indexOf("</a>") + 4);
			var next = this.navStrings[1].substring(this.navStrings[1].indexOf(" >")+2, this.navStrings[1].indexOf("</a>"));
			pageBuff += this.navStrings[1].replace(linkStr, next);
		}
		
		if(this.navStrings.length>2){
			if( this.currentPage < last ){
				pageBuff += replaceAll(this.navStrings[2], this.pageCountPattern, last);
			}else{
				var linkStr = this.navStrings[2].substring(this.navStrings[2].indexOf("<a"), this.navStrings[2].indexOf("</a>") + 4);
				var next = this.navStrings[2].substring(this.navStrings[2].indexOf(" >")+2, this.navStrings[2].indexOf("</a>"));
				pageBuff += this.navStrings[2].replace(linkStr, next);
			}
		}
		return pageBuff;
	}
	