var GRID_HEIGHT = '300px';

var DATE_DELIMETER  = "-";         //날짜 구분자 정의
var gMsgFormat = new Array();

//sample
gMsgFormat[1] = '#{1} (을)를 입력하여 주십시오.';
gMsgFormat[2] = '#{1}, #{2} (을)를 입력하여 주십시오.';
gMsgFormat[3] = '#{1}에 제한된 자릿수를 초과하였습니다.';
gMsgFormat[4] = '#{1}의 형식이 잘못 되었습니다.';
gMsgFormat[5] = '#{1}은(는) 숫자만 입력 가능합니다.';
gMsgFormat[6] = '개인정보 수집 및 이용에 동의 후 등록이 가능합니다.';
gMsgFormat[7] = '기간 조회 시 종료 일자가 시작 일자 보다 작으면 안됩니다.';

gMsgFormat[8] = '#{1} 의 길이가 맞지 않습니다.\n\n해당 항목의 길이는 #{2}자 입니다.';
gMsgFormat[9] = '#{1} 의 길이가 너무 깁니다.\n\n해당 항목의 길이는 #{2} 바이트를 초과할 수 없습니다.\n(한글은 2바이트 영문은 1바이트로 계산됩니다.';
gMsgFormat[10] = '#{1} 를(을) 선택하세요 !!!';
/*---------------------------------------------- 
Function name : getMsg
Description   : 메세지 내용을 반환한다. 가변내용은 동적으로 처리된다.
Programmer    : 최선덕
First Write   : 2011/08/12
Parameters    : Message code
Return Value  : Message content
Remark        : 
Example       : alert(getMsg(1, '이름'));
                alert(getMsg(2, '이름', '주소'));
----------------------------------------------*/
function getMsg() {
	var args = arguments;
	var msg = gMsgFormat[args[0]];

	for ( var i = 1; i < args.length; i++) {
		msg = msg.replace(eval("/#{(" + i.toString() + ")}/g"), args[i]
				.toString());
	}
	return msg;
}

/*---------------------------------------------- 
Function name : checkFileExtension
Description   : 첨부파일 업로드시에 허용 확장자를 체크함.
Programmer    : 박국번
First Write   : 2011/09/02
Parameters    : objFile - file object, pNotImg  - 이미지 파일 허용 여부. ('image' : 이미지만)
Return Value  : true / false
Remark        : 
Example       : checkFileExtension(frm.uploadedFiles, true)                
----------------------------------------------*/
function checkFileExtension(objFile, pNotImg) {
	
	var fileExt = '';
	
	try {
    	fileExt =objFile.value.substring(objFile.value.lastIndexOf('.')+1);
    } catch(e) { }    
    
	//확장자 Check    
		if (pNotImg == null || pNotImg == undefined || pNotImg == false) {
			if (fileExt.toUpperCase() == 'JSP' || fileExt.toUpperCase() == 'PHP' || fileExt.toUpperCase() == 'JS' 
			  	|| fileExt.toUpperCase() == 'HTM' || fileExt.toUpperCase() == 'HTML' 
				|| fileExt.toUpperCase() == 'XML' || fileExt.toUpperCase() == 'XLT' 
				|| fileExt.toUpperCase() == 'JAVA' || fileExt.toUpperCase() == 'JAR' 
				|| fileExt.toUpperCase() == 'CSS' || fileExt.toUpperCase() == 'TLD') {
				alert('지원하지 않는 파일형식입니다.');
				return false;
			}		
		}else if(pNotImg == 'image'){
	    	if(fileExt.toUpperCase() != 'GIF' && fileExt.toUpperCase() != 'JPG'
				&& fileExt.toUpperCase() != 'BMP' && fileExt.toUpperCase() != 'PNP'
				&& fileExt.toUpperCase() != 'PNG'){
	    		alert('지원하지 않는 파일형식입니다.');
	    		return false;
	    	}
	    }else if(pNotImg == 'xls'){
	    	if(fileExt.toUpperCase() != 'XLS'){
	    		alert('지원하지 않는 파일형식입니다.');
	    		return false;
	    	}
		}else {
			if (fileExt.toUpperCase() == 'JSP' || fileExt.toUpperCase() == 'PHP' || fileExt.toUpperCase() == 'JS' 
			  	|| fileExt.toUpperCase() == 'HTM' || fileExt.toUpperCase() == 'HTML' 
				|| fileExt.toUpperCase() == 'XML' || fileExt.toUpperCase() == 'XLT' 
				|| fileExt.toUpperCase() == 'JAVA' || fileExt.toUpperCase() == 'JAR' 
				|| fileExt.toUpperCase() == 'CSS' || fileExt.toUpperCase() == 'TLD'
				|| fileExt.toUpperCase() == 'GIF' || fileExt.toUpperCase() == 'JPG'
				|| fileExt.toUpperCase() == 'BMP' || fileExt.toUpperCase() == 'PNP'
				|| fileExt.toUpperCase() == 'TXT' ) {
				alert('지원하지 않는 파일형식입니다.');
				return false;
			}
		}    
	return true;
}






//2011-09-07추가

function MM_swapImgRestore() { //v3.0
	  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
	}

	function MM_preloadImages() { //v3.0
	  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
	}

	function MM_findObj(n, d) { //v4.01
	  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	  if(!x && d.getElementById) x=d.getElementById(n); return x;
	}

	function MM_swapImage() { //v3.0
	  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
	}


	function MM_showHideLayers() { //v6.0
	  var i,p,v,obj,args=MM_showHideLayers.arguments;
	  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
	    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
	    obj.visibility=v; }
	}

	function MM_openBrWindow(theURL,winName,features) { //v2.0
	  window.open(theURL,winName,features);
	}

	function bluring(){ 
	if(event.srcElement.tagName=="A"||event.srcElement.tagName=="IMG") document.body.focus(); 
	} 
	document.onfocusin=bluring; 



	/*---------------------------------------------- 
	Function name : addOption
	Description   : Option 객체를 생성한다.
	                select 의 Option 을 가변으로 처리할때 사용
	Programmer    : 최선덕
	First Write   : 2011/09/16
	Parameters    : text - Option 텍스트
	                value - Option Value
	                isSelected - selected 여부
	Return Value  : optionNode - Option 객체.
	Remark        :                 
	----------------------------------------------*/
	function addOption(text, value, isSelected) {
		var optionNode = document.createElement("OPTION");
		optionNode.setAttribute("value", value);
		if (isSelected) {
			optionNode.setAttribute("selected", "selected");
		}
		var textNode = document.createTextNode(text);
		optionNode.appendChild(textNode);
		return optionNode;
	}
	
	/*---------------------------------------------- 
	Function name : CheckEmail
	Description   : email 양식 체크	                
	Programmer    : 박국번
	First Write   : 2011/09/122
	Parameters    : obj - 입력객체
	Return Value  : boolean
	Remark        :                 
	----------------------------------------------*/
	function CheckEmail(obj) {
		 /** 체크사항 
	     - @가 2개이상일 경우 
	     - .이 붙어서 나오는 경우 
	     -  @.나  .@이 존재하는 경우 
	     - 맨처음이.인 경우 
	     - @이전에 하나이상의 문자가 있어야 함 
	     - @가 하나있어야 함 
	     - Domain명에 .이 하나 이상 있어야 함 
	     - Domain명의 마지막 문자는 영문자 2~4개이어야 함 **/
		var check1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;  

	    var check2 = /^[a-zA-Z0-9\-\.\_]+\@[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4})$/; 
	     
	    if ( !check1.test(obj.value) && check2.test(obj.value) ) { 
	        return true; 
	    } else { 
	    	obj.focus();
	        return false; 
	    } 		

	}
	/*---------------------------------------------- 
	Function name : isNumberCheck
	Description   : 숫자만 있는지 체크	                
	Programmer    : 박국번
	First Write   : 2011/09/122
	Parameters    : value - 필드값
	Return Value  : boolean
	Remark        :                 
	----------------------------------------------*/
	function isNumberCheck(value)
	{
		var strr = "0123456789";		
		for (i = 0; i < value.length; i++) {
			if (strr.indexOf(value.charAt(i)) == -1) {				
				return false;
			}
		}
		return true;
	}
	
	/*---------------------------------------------- 
	Function name : isNumberCheckDash
	Description   : 숫자 만 있는지 체크(-포함)	                
	Programmer    : 박국번
	First Write   : 2011/09/122
	Parameters    : value - 필드값
	Return Value  : boolean
	Remark        :                 
	----------------------------------------------*/
	function isNumberCheckDash(value)
	{
		var strr = "0123456789-";		
		for (i = 0; i < value.length; i++) {
			if (strr.indexOf(value.charAt(i)) == -1) {				
				return false;
			}
		}
		return true;
	}
	

	/*---------------------------------------------- 
	Function name : roundXL
	Description   : 지정한 소수점 이하를 반올림 처리
	                
	Programmer    : 최선덕
	First Write   : 2011/09/16
	Parameters    : n 처리대상 
	                digits 소수점 자리수
	Return Value  : 소수점 처리된 데이터
	Remark        :                 
	----------------------------------------------*/
	function roundXL(n, digits) {
		if (digits >= 0) return parseFloat(n.toFixed(digits)); 
		digits = Math.pow(10, digits); // 정수부 반올림
		var t = Math.round(n * digits) / digits;
		return parseFloat(t.toFixed(0));
	}
	
	/*---------------------------------------------- 
	Function name : comma
	Description   : 천단위로 "," 처리
	                
	Programmer    : 최선덕
	First Write   : 2011/09/16
	Parameters    : n 처리대상 
	                
	Return Value  : ","처리된 데이터
	Remark        :                 
	----------------------------------------------*/
	function comma(n){
		var reg = /(^[+-]?\d+)(\d{3})/;   // 정규식
		n += '';
		while (reg.test(n)) {
			n = n.replace(reg, '$1' + ',' + '$2');
		}
		return n;
	}
	
	/*---------------------------------------------- 
	 Function name : textCounter
	 Description   : 글자수 제한 체크
	 Programmer    : 박국번
	 First Write   : 2011/08/31
	 Parameters    : content - 내용, maxChars - 제한 글자 크기  
	 Return Value  : true, false
	 ----------------------------------------------*/	
	function textCounter(content, maxChars)
	{
      var strCharCounter = 0;
      var intLength = content.length;

      for (var i = 0; i < intLength; i++)
      {
          var charCode = content.charCodeAt(i);
			//한글일 경우
          if (charCode > 128)        {
				strCharCounter += 2;
          } else {
				strCharCounter++;
          }

          if(strCharCounter > (maxChars)) {
				//eval("alert('한글" + maxChars/2 + ", 영문" + maxChars+ "자 제한입니다.')");				
				return false;
      	}
      }        
      return true;
	}
	
	/*----------------------------------------------
	 Event name    : dateCompare
	 Description   : 날짜 비교  
	 Programmer    : 박국번
	 First Write   : 2011/09/22
	 Parameters    : (string) fromDate : dd/MM/yyyy
	 				 (string) toDate   : dd/MM/yyyy	 
	 Return Value  : (boolean) true, false 
	 Remark        : - 
	 ----------------------------------------------*/
	function dateCompare(fromDate, toDate) {
		if (toDate < fromDate) {			
			return false;
		}
		return true;
	}
	/*----------------------------------------------
	 Event name    : checkDate
	 Description   : 날짜체크  
	 Programmer    : 박국번
	 First Write   : 2011/09/22
	 Parameters    : (string) fromDate : yyyyMMdd
	 				 (string) toDate   : yyyyMMdd	 
	 Return Value  : (boolean) true, false 
	 Remark        : - 
	 ----------------------------------------------*/
	function checkDate(dateStr, fieldName, isEmptyCheck, size) {
		/* 항목명이 없으면 "일자"을 사용. */		

		// 아무값도 없을때 처리를 isEmptyCheck값에 따라 다르게 처리한다.
		if (trim(dateStr) == "") {
			if(isEmptyCheck == true) {				
				alert(getMsg(1, fieldName));
				return false;
			}
			else return true;
		}

		dateStr = removeChar(dateStr, DATE_DELIMETER);

		// 숫자로만 구성되었는지 확인한다.
		if (isNaN(dateStr)) {			
			alert(getMsg(5, fieldName));			
			return false;
		}

		if(size == null || size==""){
			size = "8";
		}
		
		// 구별자를 제거한 나머지 자릿수가 size 만큼의 자리수인지 검사한다.
		if (dateStr.length != size) {
			if(size==8) alert(fieldName + "YYYYMMDD 의 형식으로 입력해 주십시오.");			
			return false;
		}
		

		// 연도 4자리, 월 2자리, 일 2자리로 자른다.
		var yearStr;
		var monthStr;
		var dayStr;
				
		yearStr = dateStr.substring(0, 4);			

		// 연도 값이 1900 ~ 2100 사이인지 점검한다.
		if (yearStr < 1900 || yearStr > 2100) {
			alert(fieldName + "의 연도는 1900년 ~ 2100년 사이의 값을 입력해야 주십시오.");
			return false;
		}		
					
		monthStr = dateStr.substring(4, 6);			

		// 월이 1~12월 사이인지 점검한다.
		if (monthStr < 1 || monthStr > 12) {
			alert(fieldName + "의 월을 01 ~ 12월 사이의 값으로 입력해 주십시오.");
			return false;
		}
		
		
		
		dayStr = dateStr.substring(6,8);

		// 일자가 해당월의 유효한 일자인지 검검한다.
		// Date 객체 생성시 날짜가 유효범위를 넘어서면
		// 달이 변하는 원리를 이용했다.
		var date = new Date(yearStr, monthStr - 1, dayStr);

		if (yearStr != date.getFullYear() || monthStr != (date.getMonth() + 1)) {
			alert(monthStr + "월에는 " + dayStr + "일이 없습니다.");
			return false;
		}		

		return true;
	}
	/*----------------------------------------------
	 Event name    : trim
	 Description   : 문자의 공백제거
	 Programmer    : 박국번
	 First Write   : 2011/09/22
	 Parameters    : (String)src	 
	 Return Value  : string  
	 Remark        : - 
	 ----------------------------------------------*/
	function trim(src) {
	    var search = 0;
	    
	    while ( src.charAt(search) == " ") {
	        search = search + 1;
	    }

	    src = src.substring(search, (src.length));

	    search = src.length - 1;

	    while (src.charAt(search) ==" ") {
	        search = search - 1;
	    }

	    return src.substring(0, search + 1);
	}
	
	// trim
	String.prototype.trim = function() {
		return this.replace(/^\s+|\s+$/g, "");
	}
	
	/*----------------------------------------------
	 Event name    : replaceStr
	 Description   : 문자의 공백제거
	 Programmer    : 송선미
	 First Write   : 2011/09/22
	 Parameters    : pStr	- 문자열, pFind	- 찾을 문자열 ,pReplace- 바꿀문자열
	 Return Value  : string
	 Remark        : - 
	 ----------------------------------------------*/
	function replaceStr(pStr, pFind, pReplace)	{

		// 패턴 선언(해당 문자를 모두 찾아서 변환해줌).
		var newPattern = new RegExp(pFind, "gi");

		return pStr.replace(newPattern, pReplace);

	}
	
	String.prototype.replaceAll = function( str1, str2 ){
		var temp_str = this.trim();
		temp_str = temp_str.replace(eval("/" + str1 + "/gi"), str2);
		return temp_str;
	}
	
	/*----------------------------------------------
	 Event name    : removeChar
	 Description   : 문자의 공백제거
	 Programmer    : 박국번
	 First Write   : 2011/09/22
	 Parameters    : dateStr - 날짜 데이터, delim - 구분문자	 
	 Return Value  : string
	 Remark        : - 
	 ----------------------------------------------*/
	function removeChar(dateStr, delim) {
		var v_length = dateStr.length;

		var retVal = "";
		if(dateStr == "") return "";
		for(var i = 0; i < v_length; i++) {
			var chr = dateStr.substr(i,1);
			if (chr != delim) {
				retVal += chr;
			}
		}

		return retVal;
	}
	/*---------------------------------------------- 
	 Function name : applyDateFormat
	 Description   : 날짜 포맷 적용 ex) yyyy-MM-dd
	 Programmer    : 박국번
	 First Write   : 2011/09/23
	 Parameters    : date - 날짜, delim, size - 날짜사이즈
	 Return Value  : 
	 ----------------------------------------------*/
	function applyDateFormat(date, delim,size){
		if(date.length == size){
			if(size == 8){
				date = date.substring(0,4)+delim+date.substring(4,6)+delim+date.substring(6,8);
			}else if(size == 6){
				date = date.substring(0,4)+delim+date.substring(4,6);
			}			
		}	
		
		return date;
	}
	
	/*---------------------------------------------- 
	 Function name : chkRequired
	 Description   : 필수필드 값 체크
	 Programmer    : 최선덕
	 First Write   : 2011/10/14
	 Parameters    : obj - 
	                 objDesc
	                 isfocus
	                 msgNum
	                 div_id : alert 을 사용하지 않고  div에 표시하는 경우
	                 msg_id : 메세지가 표시되는 div(또는 span id)
	 Return Value  : 
	 ----------------------------------------------*/
	function chkRequired(obj, objDesc, isfocus, msgNum, div_id, msg_id) { 
		isfocus = (isfocus==undefined) ? true : isfocus;
		if( msgNum == undefined ) msgNum = 1;
		if (obj.value.trim() == "") {
			if( div_id == null || div_id == undefined ) {
				alert(getMsg(msgNum,objDesc));
			}else {
				var layer = document.getElementById(div_id);
				var message = document.getElementById(msg_id);

				message.innerHTML = getMsg(msgNum, objDesc);
				layer.style.display = "block";
			}
			if (isfocus) {
				try {
				obj.focus();
				} catch(e) {}
			}
			return false;
		} 
		
		return true;
	}
	
	
	//------------------------------------------------------
	//2008.03.08
	//base64 암호화 (한글안됨) : Admin의 로그인 화면에 적용할 목적으로 임시로 만들어짐
	//------------------------------------------------------
	function initBase64() {
	    enc64List = new Array();
	    dec64List = new Array();
	    var i;
	    for (i = 0; i < 26; i++) {
	        enc64List[enc64List.length] = String.fromCharCode(65 + i);
	    }
	    for (i = 0; i < 26; i++) {
	        enc64List[enc64List.length] = String.fromCharCode(97 + i);
	    }
	    for (i = 0; i < 10; i++) {
	        enc64List[enc64List.length] = String.fromCharCode(48 + i);
	    }
	    enc64List[enc64List.length] = "+";
	    enc64List[enc64List.length] = "/";
	    for (i = 0; i < 128; i++) {
	        dec64List[dec64List.length] = -1;
	    }
	    for (i = 0; i < 64; i++) {
	        dec64List[enc64List[i].charCodeAt(0)] = i;
	    }
	}
	
	/*---------------------------------------------- 
	 Function name : base64Encode
	 Description   : 관리자 로그인시 암호화
	 Programmer    : 박국번
	 First Write   : 2011/09/26
	 Parameters    : str - id, password	                 
	 Return Value  : string
	 ----------------------------------------------*/
	function base64Encode(str) {
	    var c, d, e, end = 0;
	    var u, v, w, x;
	    var ptr = -1;
	    var input = str.split("");
	    var output = "";
	    while(end == 0) {
	        c = (typeof input[++ptr] != "undefined") ? input[ptr].charCodeAt(0) : 
	            ((end = 1) ? 0 : 0);
	        d = (typeof input[++ptr] != "undefined") ? input[ptr].charCodeAt(0) : 
	            ((end += 1) ? 0 : 0);
	        e = (typeof input[++ptr] != "undefined") ? input[ptr].charCodeAt(0) : 
	            ((end += 1) ? 0 : 0);
	        u = enc64List[c >> 2];
	        v = enc64List[(0x00000003 & c) << 4 | d >> 4];
	        w = enc64List[(0x0000000F & d) << 2 | e >> 6];
	        x = enc64List[e & 0x0000003F];
	        if (end >= 1) {x = "=";}
	        if (end == 2) {w = "=";}
	        if (end < 3) {output += u + v + w + x;}
	    }
	    var formattedOutput = "";
	    var lineLength = 76;
	    while (output.length > lineLength) {
	     formattedOutput += output.substring(0, lineLength) + "\n";
	     output = output.substring(lineLength);
	    }
	    formattedOutput += output;
	    return formattedOutput;
	}
	
	/*---------------------------------------------- 
	 Function name : base64Decode
	 Description   : 관리자 로그인시 복호화
	 Programmer    : 박국번
	 First Write   : 2011/09/26
	 Parameters    : str - id, password	                 
	 Return Value  : string
	 ----------------------------------------------*/
	function base64Decode(str) {
	    var c=0, d=0, e=0, f=0, i=0, n=0;
	    var input = str.split("");
	    var output = "";
	    var ptr = 0;
	    do {
	        f = input[ptr++].charCodeAt(0);
	        i = dec64List[f];
	        if ( f >= 0 && f < 128 && i != -1 ) {
	            if ( n % 4 == 0 ) {
	                c = i << 2;
	            } else if ( n % 4 == 1 ) {
	                c = c | ( i >> 4 );
	                d = ( i & 0x0000000F ) << 4;
	            } else if ( n % 4 == 2 ) {
	                d = d | ( i >> 2 );
	                e = ( i & 0x00000003 ) << 6;
	            } else {
	                e = e | i;
	            }
	            n++;
	            if ( n % 4 == 0 ) {
	                output += String.fromCharCode(c) + 
	                          String.fromCharCode(d) + 
	                          String.fromCharCode(e);
	            }
	        }
	    }
	    while (typeof input[ptr] != "undefined");
	    output += (n % 4 == 3) ? String.fromCharCode(c) + String.fromCharCode(d) : 
	              ((n % 4 == 2) ? String.fromCharCode(c) : "");
	    return output;
	}
		
	/*---------------------------------------------- 
	 Function name : dateFormatCheck
	 Description   : 날짜 포맷 체크
	 Programmer    : 박국번
	 First Write   : 2011/09/23
	 Parameters    : date - 날짜, field - 해당항목명
	 Return Value  : 
	 ----------------------------------------------*/
	function dateFormatCheck(date,field,size){		 
		if(!checkDate(date.value,field,true,size)){
			date.value = "";
			return;
		}else{
			if(date.value.length == size){
				date.value = applyDateFormat(date.value,"-",size);
			}
		}
	}
	
	/*---------------------------------------------- 
	 Function name : focusDate
	 Description   : 날짜 input에 focus event 처리
	 Programmer    : 박국번
	 First Write   : 2011/09/23
	 Parameters    : date - 날짜
	 Return Value  : 
	 ----------------------------------------------*/
	function focusDate(date,delim){
		if(date.value != null && date.valeu != ""){
			date.value = removeChar(date.value, delim);		
		}
	}
	
	/*===========================================================================*/
	// 설    	명 : 글자수를 Return(한글:2Byte, 그 외:1Byte)
	// 매개변수 : input - Object(Text Or TextArea)
	// 반 환 값  : byte
	/*===========================================================================*/
	function getByteLength(input) {
	    var byteLength = 0;
	    for (var inx = 0; inx < input.value.length; inx++) {
	        var oneChar = escape(input.value.charAt(inx));
	        if ( oneChar.length == 1 ) {
	            byteLength ++;
	        } else if (oneChar.indexOf("%u") != -1) {
	            byteLength += 2;
	        } else if (oneChar.indexOf("%") != -1) {
	            byteLength += oneChar.length/3;
	        }
	    }
	    return byteLength;
	}
	
	/*===========================================================================*/
	// 설    명 :값이 비어있는지를 체크하여 비어있으면 해당 메세지를 보여준다.
	// 		   값이 비어있을 경우 true를 반환한다.
	// 매개변수 : pObject - form object
	//			pMsg	  - Message
	//			pLen	  - Data Length
	//			pLenFlag- FM : 필수입력이고 data길이가 fix된 경우
	//					   M : 필수입력이고 data길이가 초과된 경우
	//					  NM : data길이가 초과된 경우만
	/*===========================================================================*/
	function isEmpty(pObject, pMsg, pLen, pLenFlag)	{		//
		if (pLenFlag == null) pLenFlag = "";

		if (pObject.tagName.toUpperCase() == "INPUT" || pObject.tagName.toUpperCase() == "TEXTAREA")	{
			if ( pLenFlag =="" && pObject.value=="")	{
				if (pMsg){
					alert(getMsg("1",pMsg));
				}

				if(pObject.disabled==false) pObject.focus();
				return true;
			}
			else if (pLenFlag=="FM" && pLen && getByteLength(pObject) !=pLen )	{
				alert(getMsg("8",pMsg,pLen));
				pObject.focus();
				return true;
			}
			else if (pLenFlag=="M" && pLen && getByteLength(pObject) == 0 )	{
				alert(getMsg("1",pMsg));
				if(pObject.disabled==false){
					pObject.focus();
				}
				return true;
			}
			else if (pLenFlag=="M" && pLen && getByteLength(pObject) > pLen )	{
				alert(getMsg("9",pMsg,pLen));
				pObject.focus();
				return true;
			}
			else if (pLenFlag=="NM" && pLen && getByteLength(pObject) > pLen )	{				
				alert(getMsg("9",pMsg,pLen));
				pObject.focus();
				return true;
			}

		}
		else if (pObject.tagName.toUpperCase() == "SELECT")	{
			if (pObject.selectedIndex == 0 && pObject.value=="")	{
				if (pMsg)	{
					alert(getMsg("10",pMsg,pLen));					
				}

				pObject.focus();
				return true;
			}
		}
		else	{
			alert("매개변수로 넘어온 객체가 INPUT 타입이 아닙니다.");
			return true;
		}

		return false;
	}
	
	
	/*---------------------------------------------- 
	 Function name : focusOut
	 Description   : 포커스 제거
	 Programmer    : 박국번
	 First Write   : 2011/08/29
	 Parameters    :
	 Return Value  : 
	 ----------------------------------------------*/
	function focusOut(obj){
		obj.blur();
	}
	
	/*---------------------------------------------- 
	Function name : focusMove
	Description   : 실명확인번호 포커스 다음 칸으로 이동
	Programmer    : 
	First Write   : 2011/09/26
	Parameters    : strFrom(obj), strtTo(obj), size(strFrom의 사이즈)
	Return Value  : 
	----------------------------------------------*/	

	function focusMove(strFrom,strTo,size){
		if(strFrom.value.length == size){
			strTo.focus();
		}
	}
	
	/*---------------------------------------------- 
	Function name : numberCheck
	Description   : 숫자만 입력 가능하도록 체크
	Programmer    : 
	First Write   : 2011/09/26
	Parameters    : 
	Return Value  : 
	----------------------------------------------*/
	function numberCheck(obj,objNm) {
		if(!isNumberCheck(obj.value)){
			alert(getMsg("5",objNm));
			obj.value = "";
			obj.focus();
		}		
	}
	
	
	var ZEROS = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
	// 문자열 왼쪽에 '0' 을 채운다.
	function fillZero(str, len) {

		str = str.toString();

		var zerolen = len - str.length;

		// alert( 'str [' + str + '] len [' + len + '] zerolen [' + zerolen + ']');

		if (zerolen > 0) {
			return ZEROS.substring(0, zerolen) + str;
		} else if (zerolen == 0) {
			return str;
		} else {
			return str;
		}

	}
	
	/**
	 * 소숫점 이하 길이만큼 '0' 을 체운다.
	 * 
	 * @param value 처리할 숫자
	 * @param size  자리수
	 * @return
	 */
	function numFillZero(value, size){
		
		return value.toFixed(size);
		
	}
	
	/*---------------------------------------------- 
	Function name : getTranseCalPrice
	Description   : 가격 --> 진법 변환 처리 (시뮬레이션에서 사용)
	Programmer    : 
	First Write   : 2011/09/26
	Parameters    : 
	Return Value  : 
	----------------------------------------------*/
	function getTranseCalPrice(price, hUnitPos, sTransCal){
		
		var transCal = 0; 
		var dTmp = 0;
		//alert(price);
		var tmp = numFillZero(parseFloat(price), parseInt(hUnitPos));
		var price1 = tmp.substring(0, tmp.indexOf("."));
		var sosu = "0." + tmp.substring(tmp.indexOf(".")+1);
		

		
		if( sTransCal != null && sTransCal != "") { 
			
			var lastT = "";
			
			if( sTransCal == "8"){
								
				transCal = parseInt(sTransCal);
				//alert(transCal);

				//alert('price1 --->' + price1);
				//alert('sosu   --->' + sosu);
				dTmp = parseFloat(sosu) * transCal / 10;
				dTmp = dTmp * 10;
				//alert('dTmp   --->' + dTmp);
				
				dTmp = dTmp + "";
				var tail = "";
				if( dTmp.indexOf(".") > 0 ){
					tail = dTmp.substring(0, dTmp.indexOf(".")); // 소숫점 앞까지 잘라냄
				}else {
					tail = dTmp;
				}
				//alert(tail);
				
				//var tailTmp1 = tail.substring(0, tail.indexOf(".")); 
				var tailTmp1 = tail;
				    	    	
				tailTmp1 = fillZero(tailTmp1, 1);
				//alert('tailTmp1   --->' + tailTmp1);
				lastT = price1 + "'" + tailTmp1 ;
				//alert('lastT   --->' + lastT);
			}else if( sTransCal == "32" || sTransCal == "64" || sTransCal == "128"){
				sTransCal = "32";
				
				transCal = parseInt(sTransCal);
				
				dTmp = parseFloat(sosu) * transCal / 10;
				dTmp = dTmp * 10;
				//alert(dTmp);
				
				dTmp = dTmp + "";
				
				var tail = "";
				var tailTmp1 = "";
				var tailTmp2 = "";
				
				if( dTmp.indexOf(".") > 0 ){
					tail = dTmp.substring(0, dTmp.indexOf(".")+2);
					//alert(tail);
					
					tailTmp1 = tail.substring(0, tail.indexOf(".")); 
					tailTmp2 = tail.substring(tail.indexOf(".")+1); 
				}else {
					tailTmp1 = dTmp;
					tailTmp2 = "0";
				}
				
    	    	
				//alert(tailTmp1);
				//alert(tailTmp2);
				
				tailTmp1 = fillZero(tailTmp1, 2);
				
				lastT = price1 + "'" + tailTmp1 + "." + tailTmp2;
				//alert(lastT);
				
			}
			//alert(lastT);
			return lastT;
		}else {
			return price;
		}
	}
	
	
	function replpaceQute(value){
		alert(value);
		var result = value.replace(/'/gi, '\'');
		alert(result);
		return result;
	}
	
