
function roundNumber( original, digit ) {
	
	var decimal = Math.pow( 10, digit );	
	var result = Math.round(original * decimal)/decimal;		
	return result;
}
	
	
var Paging = Class.create({

	initialize:function (parentId,currentPage,totalRow,requestURL,pagingId) {
	
		this.parentId = parentId;		
		this.currentPage = currentPage;
		this.totalRow = totalRow;
		this.requestURL = requestURL;
		this.pagingId = pagingId;
		
		this.formId = '';
		this.submitForm = false;
		this.params = '';
		this.rowPerPage = 20;
		this.lotSize = 10;
		
		this.PAGE_PARAM_NAME = "?page=";
		
		if( this.requestURL.indexOf("?") != -1 ) {
			this.PAGE_PARAM_NAME = "&page=";
		}
				
	},
	
	setRowPerPage:function (rowPerPage) {
		this.rowPerPage = rowPerPage;
	},
	
	setLotSize: function( lotSize ) {
		this.lotSize = lotSize;
	},
	
	setSubmitForm: function( formId ) {
		this.formId = formId;
		if( $(formId) != null ) {
			this.submitForm = true;
		}
	},
	
	setParams: function( params ) {
		this.params = params
	},

	generate:function () {
		
		var pagingObj = this;
		var requestURL = pagingObj.requestURL;
		var parentDiv = $(pagingObj.parentId);
		
		parentDiv.className = 'pagerDRUPAL';

		if( pagingObj.totalRow == 0 ) {		
			this.emptyPaging();
			return;
		}		
		
		var totalPage = Math.floor( pagingObj.totalRow / pagingObj.rowPerPage );
		var precision = pagingObj.totalRow % pagingObj.rowPerPage;
		if( precision > 0 ) {
    		totalPage += 1;
    	}
    	
    	var pLot = Math.floor( pagingObj.currentPage / pagingObj.lotSize );
    	if( (pagingObj.currentPage % pagingObj.lotSize) == 0 ) {
	     	pLot -=1;
	    }
	    if( pLot < 0 ) {
	     	pLot = 0;
	    }
	    
	    var startLot = (pLot * pagingObj.lotSize) + 1;
	    
	    var endPage = startLot + pagingObj.lotSize;
	    if( endPage > totalPage ) {
	    	endPage = totalPage;
	    }
	    
     	var endLot = (pLot * pagingObj.lotSize ) + pagingObj.lotSize;
	    if( endLot > totalPage ) {
	    	endLot = totalPage;
	    }
	    
	    //parentDiv.innerHTML = '<div class="pager-list">';
	    parentDiv.innerHTML = '';
	    var pagerList = new Element('div', { 'class': 'pager-list' });
	    
	    if( pagingObj.currentPage != 1 && pLot != 0) {
	   		//var a = new Element('a', { 'class': 'pager-next active', href: ''+requestURL+'?page='+'1' }).update('หน้าแรก');
	   		var a = new Element('a', { 'class': 'pager-next active', href: ''+requestURL+''+pagingObj.PAGE_PARAM_NAME+''+'1' }).update('หน้าแรก');
	   		if( pagingObj.params != '' ) {	   			
	   			a.href = a.href + pagingObj.params;
	   				a.href = a.href.replace(/&amp;/g,'&'); //replace &amp; to &	   			
	   		}
	   		if( pagingObj.submitForm ) {
	   			a = transformAtoSubmit( a, 1 );
	   		}
	   		pagerList.appendChild(a);
     		
     	}
     	
     	if( pLot > 0 ) {
     		//var aPrev = new Element('a', { 'class': 'pager-next active', href: ''+requestURL+'?page='+(startLot-1) }).update( ''+(startLot-1) );
     		var aPrev = new Element('a', { 'class': 'pager-next active', href: ''+requestURL+''+pagingObj.PAGE_PARAM_NAME+''+(startLot-1) }).update( ''+(startLot-1) );
     		
     		if( pagingObj.params != '' ) {
	   			aPrev.href = aPrev.href + pagingObj.params;
	   			aPrev.href = aPrev.href.replace(/&amp;/g,'&'); //replace &amp; to &
	   		}
     		if( pagingObj.submitForm ) {
	   			aPrev = transformAtoSubmit( aPrev, (startLot-1) );
	   		}
	   		
     		pagerList.appendChild(aPrev);
     		var sp = new Element( 'span' ).update('...');
     		pagerList.appendChild(sp);
     		
     	}
	    
	    for( i = startLot ; i <= endLot ; i++ ) {
	     		
   			if( pagingObj.currentPage == i ) {
 				var a = new Element('text').update('<strong>'+i+'</strong>');
 				pagerList.appendChild(a);
 			} else {
 				//var a = new Element('a', { 'class': 'pager-next active', href: ''+requestURL+'?page='+i }).update(''+i+'');
 				var a = new Element('a', { 'class': 'pager-next active', href: ''+requestURL+''+pagingObj.PAGE_PARAM_NAME+''+i }).update(''+i+'');
 				
 				if( pagingObj.params != '' ) {
	   				a.href = a.href + pagingObj.params;
	   				a.href = a.href.replace(/&amp;/g,'&'); //replace &amp; to &
	   			}
 				if( pagingObj.submitForm ) {
	   				a = this.transformAtoSubmit( a, i );
	   			}
	   			
 				pagerList.appendChild(a);

 			}
	    }
	    
	     
		if( endPage < totalPage ) {
			//var aNext = new Element('a', { 'class': 'pager-next active', href: ''+requestURL+'?page='+(endPage) }).update(''+(endLot+1));
			var aNext = new Element('a', { 'class': 'pager-next active', href: ''+requestURL+''+pagingObj.PAGE_PARAM_NAME+''+(endPage) }).update(''+(endLot+1));
			
			if( pagingObj.params != '' ) {
   				aNext.href = aNext.href + pagingObj.params;
   				aNext.href = aNext.href.replace(/&amp;/g,'&'); //replace &amp; to &
	   		}
			if( pagingObj.submitForm ) {
   				aNext = transformAtoSubmit( aNext, endPage );
   			}
   			var sp = new Element('span').update('...');
   			pagerList.appendChild(sp);
			pagerList.appendChild(aNext);
		}
	     
	     
		if( endPage != totalPage) {
			//var aLast = new Element('a', { 'class': 'pager-next active', href: ''+requestURL+'?page='+(totalPage) }).update('สุดท้าย');
			var aLast = new Element('a', { 'class': 'pager-next active', href: ''+requestURL+''+pagingObj.PAGE_PARAM_NAME+''+(totalPage) }).update('สุดท้าย');
			
			if( pagingObj.params != '' ) {
   				aLast.href = aLast.href + pagingObj.params;
   				aLast.href = aLast.href.replace(/&amp;/g,'&'); //replace &amp; to &
	   		}
	   		
			if( pagingObj.submitForm ) {
   				aLast = transformAtoSubmit( aLast, totalPage );
   			}
			pagerList.appendChild(aLast);
		}
		
		parentDiv.appendChild(pagerList);
	},
	
	emptyPaging: function() {
		var pagingObj = this;
		var parentDiv = $(pagingObj.parentId);		
		parentDiv.innerHTML = '';
	},
	
	transformAtoSubmit: function( aLinkElement, pageNo ) {
	
		var pagingObj = this;
		
		aLinkElement.href = 'javascript:;';
		aLinkElement.formId = pagingObj.formId;
		aLinkElement.pageNo = pageNo;
		aLinkElement.params = pagingObj.params
		
		aLinkElement.onclick = function() {
			var pageNo = this.pageNo
			var form = $(pagingObj.formId);
			var hiddenPageValue = new Element( 'input' ,{'type':'hidden','name':'page','value':''+pageNo} );
			form.appendChild( hiddenPageValue );
			var params = this.params;
			if( params != '' ) {
				var hiddenParamsValue = new Element( 'input' ,{'type':'hidden','name':'params','value':''+params} );
				form.appendChild( hiddenParamsValue );	
			}
			form.submit();
		}
		//var hiddenPageValue = new Element( 'hidden' ,{'name':'page'} ).update( pageNo );
		//$(pagingObj.formId).appendChild( hiddenPageValue );
		
		//aLinkElement.onclick = $(pagingObj.formId).submit();
		
		return aLinkElement;
	}
});

