package com.dadam.board;

/**
 * 
 * @since 2008.07.01
 * @author ±èÁ¾ÈÆ
 * @version 1.0
 * @see 
 */

public class Pager {
	private int numPerPage = 7;	// ÆäÀÌÁö´ç º¸ÀÏ ·¹ÄÚµå ¼ö( ÀÌ º¯¼ö´Â ÄíÅ°°¡ ¼¼¼Ç¿¡ ´ãÀ» ¼öµµ ÀÖÀ½ )
	private int pagePerBlock = 10;	// ÆäÀÌÁö ÇÏ´ÜÀÇ ÆäÀÌÁö Á÷Á¢ ÀÌµ¿ ¸µÅ© ¼ö 
	private int startRecord;		// °¢ ÆäÀÌÁö¿¡¼­ º¸ÀÏ ·¹ÄÚµå¸¦  fetch ÇÏ´Â Äõ¸®¿¡¼­ »ç¿ëÇÒ  Ã¹¹øÂ° ·¹ÄÚµå ¹øÁö
	private int endRecord;			// °¢ ÆäÀÌÁö¿¡¼­ º¸ÀÏ ·¹ÄÚµå¸¦ fetch ÇÏ´Â Äõ¸®¿¡¼­ »ç¿ëÇÒ ¸¶Áö¸· ·¹ÄÚµå ¹øÁö
	private int block;				// ÆäÀÌÁö ¸µÅ© ±×·ì ¹øÈ£¸¦ ´ã´Â º¯¼ö
	private int totalBlock;			// ÃÑ ºí·Ï
	private int totalPage;			// ÃÑ ÆäÀÌÁö ¼ö
	private int firstPage;			// Ã¹¹øÂ° ÆäÀÌÁö ¹øÈ£
	private int lastPage;			// ¸¶Áö¸· ÆäÀÌÁö ¹øÈ£
	private int prev;				// ÀÌÀü ºí·ÏÀ¸·Î ÀÌµ¿ÇÏ±â À§ÇÑ ÀÌÀüºí·ÏÀÇ ¸¶Áö¸· ÆäÀÌÁö ¹øÈ£
	private int next;				// ´ÙÀ½ ºí·ÏÀ¸·Î ÀÌµ¿ÇÏ±â À§ÇÑ ´ÙÀ½ºí·ÏÀÇ Ã¹¹øÂ° ÆäÀÌÁö ¹øÈ£
	private int articleNo;			// °Ô½Ã±Û¿¡ ºÙ¿©ÁÙ ¹øÈ£(P.K·Î ¹øÈ£¸¦ ºÙÀÌ¸é ÀÌ°¡ ºüÁö¹Ç·Î)
	
	public Pager ( int page, int totalRecord ) {
		startRecord = ( page - 1 ) * numPerPage + 1;
		endRecord = startRecord + numPerPage - 1;
		
		if ( page % pagePerBlock == 0 ) {
	 		block = page / pagePerBlock;
	 	} else {
	 		block = page / pagePerBlock + 1;
	 	}
		
		if ( totalRecord % numPerPage == 0 ) {
			totalPage = totalRecord / numPerPage;
		} else {
			totalPage = totalRecord / numPerPage + 1; 
		}
		
		if ( totalPage % pagePerBlock == 0 ) {
			totalBlock = totalPage / pagePerBlock;
		} else {
			totalBlock = totalPage / pagePerBlock + 1;
		}
	 	firstPage = ( block - 1 ) * pagePerBlock + 1;
		lastPage = block * pagePerBlock;
		if ( block >= totalBlock ) lastPage = totalPage;
		
		if ( block > 1 ) prev = firstPage - 1;
		if ( block < totalBlock ) next = lastPage + 1;
		
		articleNo = totalRecord - ( page - 1 ) * numPerPage;
	}
	
	public int getStartRecord () {
		return startRecord;
	}

	public int getEndRecord () {
		return endRecord;
	}

	public int getFirstPage () {
		return firstPage;
	}
	
	public int getLastPage () {
 		return lastPage;
	}
	
	public int getPrev () {
		return prev;
	}
	
	public int getNext () {
		return next;
	}
	
	public int getArticleNo () {
		return articleNo;
	}
}
