package itn.com.cmm.util;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException;

import javax.servlet.http.HttpServletRequest;

import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import itn.com.cmm.ComDefaultVO;

public class WebUtil {
	
	
	/**
	 * MD5
	 * @return
	 */	
	public String convertToHex(byte[] data ){
		StringBuffer buf = new StringBuffer();

		for( int i=0; i< data.length; i++){
			int halfbyte = (data[i] >>> 4 ) & 0x0F;
			int two_halfs =0;

			do{
				if((0 <= halfbyte) && (halfbyte <= 9))
					buf.append((char)('0' + halfbyte));
				else
					buf.append((char)('a' + ( halfbyte - 10)));
					halfbyte =data[i]  & 0x0F;

			}while(two_halfs++ < 1);
		}


		return buf.toString();
	}

	//private static String MD5(String text ) throws NoSuchAlgorithmException, UnsupportedEncodingExecption {
	public String MD5(String text ) throws NoSuchAlgorithmException, UnsupportedEncodingException {
		MessageDigest md;  
		md = MessageDigest.getInstance("MD5");
		byte[] md5hash=new byte[32];
		md.update(text.getBytes("iso-8859-1"),0,text.length());
		md5hash=md.digest();
		return convertToHex(md5hash);
	}	
	
	public boolean isMobile(HttpServletRequest request){ 
		String userAgent = request.getHeader("user-agent"); 
		boolean mobile1 = userAgent.matches(".*(iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson).*"); 
		boolean mobile2 = userAgent.matches(".*(LG|SAMSUNG|Samsung).*"); 
		if(mobile1 || mobile2) { return true; }
		return false; 
	}
		
	
	/**
	 * 페이징 객체 생성
	 * @param tmpVO - extends ComDefaultVO
	 * @param paginationInfo
	 * @param searchListCnt - 목록 건수
	 * @param totCnt - 전체 건수
	 */
	public static PaginationInfo getPageing(Object tmpVO, int searchListCnt) {
		PaginationInfo paginationInfo = new PaginationInfo();
		ComDefaultVO vo = (ComDefaultVO) tmpVO;
		vo.setPageUnit(searchListCnt);
		paginationInfo.setCurrentPageNo(vo.getPageIndex());
		paginationInfo.setRecordCountPerPage(vo.getPageUnit());
		paginationInfo.setPageSize(vo.getPageSize());
		vo.setFirstIndex(paginationInfo.getFirstRecordIndex());
		vo.setLastIndex(paginationInfo.getLastRecordIndex());
		vo.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());

		return paginationInfo;
	}
}

