Paging = Class.create();
Paging.prototype = {
  initialize: function(p_totalRows, p_currentPage, p_rowsPerPage, p_pagesPerBlock) {
    this.totalRows = p_totalRows;         // 전체 게시물 개수
    this.currentPage = p_currentPage;     // 현재 페이지 번호
    this.rowsPerPage = p_rowsPerPage;     // 페이지당 게시물 출력 개수
    this.pagesPerBlock = p_pagesPerBlock; // 페이지 출력 개수

    this.firstPage = 1;                  // 첫 페이지 번호
    this.lastPage = this.totalPages;     // 마지막 페이지 번호

    // 전체 페이지 개수
    if (this.totalRows > 0) {
      this.totalPages = Math.ceil(this.totalRows / this.rowsPerPage);
    } else {
      this.totalPages = 1;
    }

    this.startBlock = 1;
    this.endBlock = Math.ceil(this.totalPages / this.pagesPerBlock);

    // 현재 페이지 블럭
    this.currentBlock = Math.ceil(this.currentPage / this.pagesPerBlock);
    // 현재 페이지 블럭의 시작 페이지 번호
    this.startPage = (this.currentBlock - 1) * this.pagesPerBlock + 1;
    // 현재 페이지 블럭의 끝 페이지 번호
    this.endPage = this.currentBlock * this.pagesPerBlock;
    if (this.currentBlock * this.pagesPerBlock > this.totalPages) {
      this.endPage = this.totalPages;
    }

    this.tmplHtml;
  },

  // 페이징 출력
  setTmplHtml: function(p_innerHtml) {
    this.tmplHtml = new Template(unescape(p_innerHtml));
  },

  // 페이징 출력
  setPaging: function(p_prtPagingTr) {
    var objTbody = $(p_prtPagingTr);

    $A(objTbody.childNodes).each(
      function(obj) {
        objTbody.removeChild(obj);
      }
    );

    new Insertion.Bottom(objTbody, this.tmplHtml.evaluate({}));
  }
}


/*
 * ======================================================================
 * 페이징 출력
 * ======================================================================
 */
function setPaging(p_totalRows, p_currentPage, p_rowsPerPage, p_pagesPerBlock, layer_id, callBackFnName) {

  // 페이징 관련 변수
  var totalRows = p_totalRows;
  var currentPage = p_currentPage;
  var rowsPerPage = p_rowsPerPage;
  var pagesPerBlock = p_pagesPerBlock;
  
  if(layer_id == null || layer_id.length <= 0){
  	layer_id = "prtPagingTr";
  }
  
  if(callBackFnName == null || callBackFnName.length <= 0){
  	callBackFnName = "goPageNum";
  }

  // 페이지 객체
  var objPaging = new Paging(totalRows, currentPage, rowsPerPage, pagesPerBlock);

  var prtHtml = '<tr>';
  // 맨처음으로 이동 버튼
  //alert('objPaging.currentBlock :' + objPaging.currentBlock);
  //alert('objPaging.startBlock :' + objPaging.startBlock);
  if (objPaging.currentBlock == objPaging.startBlock) {
    //prtHtml += '<td width="18"><img src="/atlas/client/images/search/btn_leftnum2.gif"';
    //prtHtml += ' width="14" height="11" border="0"> </td>';
  } else {
    prtHtml += '<td width="18" onclick="javascript:'+ callBackFnName +'(\'' + (parseInt(objPaging.startPage) - 1) + '\');" style="cursor: pointer;"><img "';
    prtHtml += ' src="/atlas/client/images/search/btn_leftnum2.gif"';
    prtHtml += ' width="14" height="11" border="0"> </td>';
  }

  // 출력 페이지 링크만큼 이전으로 이동 버튼
  if (objPaging.currentPage == objPaging.startBlock) {
    //prtHtml += '<td width="20"><img src="/atlas/client/images/search/btn_leftnum.gif"';
    //prtHtml += ' width="10" height="11" border="0"> </td>';
  } else {
    prtHtml += '<td width="20" onclick="javascript:'+ callBackFnName +'(\'' + (objPaging.currentPage - 1) + '\');" style="cursor: pointer;">';
    prtHtml += '<img src="/atlas/client/images/search/btn_leftnum.gif"';
    prtHtml += ' border="0" width="10" height="11"> </td>';
  }

  //================================================================================
  // 페이지 번호 출력
  //================================================================================
  for (i = objPaging.startPage; i <= objPaging.endPage; i++) {
    if (objPaging.currentPage == i) {
      prtHtml += '<td align="center"><span style="font-weight:bold; font-size:11pt;">' + i + '</span></td>';
    } else {
      prtHtml += '<td align="center" onclick="javascript:'+ callBackFnName +'(\'' + i + '\');" style="cursor: pointer;">';
      prtHtml += ' ' + i + '</td>';
    }
    if (i < objPaging.endPage) {
      prtHtml += '<td width="10"><img src="/atlas/client/images/search/numline.gif"';
      prtHtml += 'width="10" height="4"></td>';
    } else {
      prtHtml += '<td width="10">&nbsp;</td>';
    }
  }

  // 출력 페이지 링크만큼 이후로 이동 버튼
	  if (objPaging.currentBlock == objPaging.endBlock && objPaging.currentPage >= objPaging.endPage) {
	    //prtHtml += '<td width="14"><img src="/atlas/client/images/search/btn_rightnum.gif"';
	    //prtHtml += ' width="10" height="11"></td>';
	  } else {
	    prtHtml += '<td width="14" onclick="javascript:'+ callBackFnName +'(\'' + (parseInt(objPaging.currentPage) + 1) +  '\');" style="cursor: pointer;">';
	    prtHtml += '<img src="/atlas/client/images/search/btn_rightnum.gif"';
	    prtHtml += ' border="0" width="10" height="11"></td>';
	  }

  // 맨끝으로 이동 버튼
	  if (objPaging.currentBlock >= objPaging.endBlock) {
	    //prtHtml += '<td width="18"><img src="/atlas/client/images/search/btn_rightnum2.gif"';
	    //prtHtml += ' width="14" height="11"></td>';
	  } else {
	    prtHtml += '<td width="18" onclick="javascript:'+ callBackFnName +'(\'' + (parseInt(objPaging.endPage) + 1) + '\');" style="cursor: pointer;">';
	    prtHtml += '<img src="/atlas/client/images/search/btn_rightnum2.gif"';
	    prtHtml += ' border="0" width="14" height="11"></td>';
	  }
  prtHtml += '</tr>';

  objPaging.setTmplHtml(prtHtml);

  // 페이징 출력
  objPaging.setPaging(layer_id);
}
