/**
 * alertMsg(ErrCode,ErrMsg) 입력받은 메세지 코드의 메세지를 alert으로 화면에 표시
 * @param       ErrMsg          앞에 붙일 메세지내용
 * @param       MsgCode         메세지 코드
 * @return      N/A
 * @histroy    2008.01.15 김정원  
 */
function alertMsg(ErrCode,ErrMsg){

	if((ErrCode !='')&&(isNumber(ErrCode))){	//에러메시지가 숫자형 인지 확인한다.
		if(ErrCode == "50014"){
			alert("데이타 로딩시 포멧에 오류가 있읍니다.");
			return;
		}else if(ErrCode == "50018"){
			if((ErrMsg != null)&&(ErrMsg != "")){
		//		alert(ErrMsg+"은(는) 필수입력항목입니다.");	
				alert(ErrMsg+" is required.");
			}else{	
				alert("필수입력항목을 모두 입력하십시오.");
			}
			return;		
		}else if(ErrCode == "50019"){
			alert("KEY값이 중복되었습니다.");
			return;				
		}else if(ErrCode == "50030"){
			alert("해당하는 ColumnID를 찾을 수 없읍니다.");
			return;				
		}else{
			alert(ErrCode);
			return;			
		}
	}

	//에러코드의 타입을 구분한다. 1차로 에러 메시지와 코드를 분리한다.
	var codeMsgYN;
	var defYN;
	var msgRead = "";
	
	//2차로 정의된 에러메시지 인지 구분한다.
	var defValue 	= ErrCode.split("_");
	if(defValue[1] == null){
		defYN = "N";		
	}else{	
		defYN =  "Y";
	}	
	//정의된 에러 메시지 이면 정의된 항목을 가져와서 리턴한다.
	if(defYN == "Y"){
	//	var read1 = ErrMsg+" "+msg;
	//	var read2 = msg+" "+ErrMsg;
		switch( ErrCode ){
			case	"NO_UPLOAD"	:
		//	msg	= "업로드할 자료가 없습니다.";
			msg	= "There is no data to upload.";
			break;
			case	"SAVE_OK"	:
		//	msg	= "성공적으로 저장되었습니다.";
			msg	= "Save process is completed.";
			break;
			case	"DELETE_OK"	:
		//	msg	= "성공적으로 삭제되었습니다.";
			msg	= "Process Deleted.";
			break;
			case	"CANCEL_OK"	:
		//	msg	= "성공적으로 취소되었습니다.";
			msg	= "Process Canceled.";
			break;
			case	"PROCESS_OK":
		//	msg	= "성공적으로 처리되었습니다.";
			msg	= "Process Completed.";
			break;
			case	"NO_ACCEPT":
		//	msg	= "허용하지 않는 문자열 입니다.";
			msg	= "The code is not available.";
			break;
			case	"AY_CREATE"	:
		//	msg	= "기 등록 자료입니다."; 
			msg	= "already registered data.";
			break;
			case	"AY_PROCESS":
		//	msg	= "기 처리 자료입니다.";
			msg	= "already processed data.";
			break;
			case	"QF_SAVE"	:
		//	msg	= "조회후 저장하십시오.";
			msg	= "Do you want to save?";
			break;
			case	"QF_UPDATE"	:
			msg	= "Do you want to update?";
			break;
			case	"QF_DELETE"	:
		//	msg	= "조회후 삭제하십시오.";
			msg	= "Do you want to delete?";
			break;
			case	"DPKEY_CHK"	:
		//	msg	= "기본KEY가 중복되었습니다.";
			msg	= "Primary key is overlap.";
			break;
			case	"NO_DATA"	:
		//	msg	= "조회할 자료가 없습니다.";
			msg	= "Here's no data to search.";
			break;
			case	"NO_UPDATE"	:
		//	msg	= "수정할 자료가 없습니다.";
			msg	= "There is no data to update.";
			break;
			case	"NO_DELETE"	:
		//	msg	= "삭제할 자료가 없습니다.";
			msg	= "There is no data to delete.";
			break;
			case	"NO_CHG"		:
		//	msg	= "변경된 자료가 없습니다.";
			msg	= "There is no data modified.";
			break;
			case	"NO_SAVE"	:
		//	msg	= "저장할 자료가 없습니다.";
			msg	= "There is no data to save.";
			break;
			case	"CRCODE_ERR":
		//	msg	= "코드생성에 실패했습니다.";
			msg	= "There is no generated code.";
			break;
			case	"NO_RIGHT"	:
		//	msg	= "권한이 없습니다.";
			msg	= "There is no Athority";
			break;
			case	"EXCEED_LIMIT":
			msg	= "한도를 초과했습니다.";
			break;
			case	"NOT_EXCEL":
			msg	= "EXCEL출력 Tab이 아닙니다.";
			break;
			case	"NO_SESSION":
		//	msg	= "세션이 종료되었습니다. 다시로그인해 주십시오.";
			msg	= "세션이 종료되었습니다. Please, log in.";
			break;
			case	"FT_PROCESS":
			msg	= "를(을) 먼저 진행하십시오.";
			break;
			case	"MUST_CHK"	:
		//	msg	= "(은)는 필수 입력 항목입니다.";
			msg	= " is required.";
			break;
			case	"VALUE_CHK"	:
		//	msg	= "가(이) 없습니다.";
			msg	= "There is no ";
			break;
			case	"PARAM_CHK"	:
		//	msg	= "을(를) 입력하십시오.";
			msg	= "Please, input ";
			break;
			case	"SELECT_CHK"	:
			msg	= "Please, select ";
			break;				
			case	"PRINT_CHK"	:
		//	msg	= "출력할데이타가 없습니다 ";
			msg	= "no data to print.";
			break;							
			case	"CHANG_CHK"	:
		//	msg	= "수정할수없습니다 ";
			msg	= "You can not modified.";	
			break;
			case	"SUMMARY_CHK"	:
		//	msg	= "입력한값의 합계가 큽니다. 다시확인해주세요";
			msg	= "The summary is larger than limit. Check once more.";
			break;
			case	"IMPOSSIBLE"	:
		//	msg	= "";
			msg	= "Mission Impossible... Please call to system manager.";
			break;
			case	"SUM_INPUT"	:
		//	msg	= "입력한값의 합계가 큽니다. 다시확인해주세요 ";
			msg	= "The summary is larger than limit. Check once more.";
			break;
			
			default:
			msg = ErrCode;
		}
	
	}else{
		msg = ErrCode;		
	}
//	alert(ErrMsg+" "+msg);
	alert(msg+" "+ErrMsg);
}

/**
 * alertMsg(ErrCode,ErrMsg) 입력받은 메세지 코드의 메세지를 alert으로 화면에 표시
 * @param       ErrMsg          앞에 붙일 메세지내용
 * @param       ErrCode         뒤에 붙일 메세지내용
 * @return      N/A
 * @histroy    2008.01.21 ZardLover  
 */
function alertMsg2(ErrCode,ErrMsg){

	if((ErrCode !='')&&(isNumber(ErrCode))){	//에러메시지가 숫자형 인지 확인한다.
		if(ErrCode == "50014"){
			alert("데이타 로딩시 포멧에 오류가 있읍니다.");
			return;
		}else if(ErrCode == "50018"){
			if((ErrMsg != null)&&(ErrMsg != "")){
		//		alert(ErrMsg+"은(는) 필수입력항목입니다.");	
				alert(ErrMsg+" is required.");
			}else{	
				alert("필수입력항목을 모두 입력하십시오.");
			}
			return;		
		}else if(ErrCode == "50019"){
			alert("KEY값이 중복되었습니다.");
			return;				
		}else if(ErrCode == "50030"){
			alert("해당하는 ColumnID를 찾을 수 없읍니다.");
			return;				
		}else{
			alert(ErrCode);
			return;			
		}
	}


	switch( ErrCode ){
		case	">=ZERO"	:
	//	msg	= "";
		msg	= "must be greater than or equal to Zero.";
		break;	
	
		case	">ZERO"	:	
	//	msg	= "";
		msg	= "must be greater than Zero.";
		break;	

		case	"<=ZERO"	:	
	//	msg	= "";
		msg	= "";
		break;
		
		default:
		msg = ErrCode;
	}

	alert(ErrMsg + " " + msg);

}

/**
 * isNumber(numValue) 숫자 체크 루틴 
 * @param       numValue              숫자
 * @return      allValid
 * @histroy     2008.01.15 김정원 
 */  
function isNumber(numValue)
{
      var checkOK = "-0123456789";
      var checkStr = numValue;
      var allValid = true;
      var decPoints = 0;
      var allNum = "";
      
      /* 숫자인가? */
      for (i = 0;  i < checkStr.length;  i++)
      {
        ch = checkStr.charAt(i);
        for (j = 0;  j < checkOK.length;  j++)
          if (ch == checkOK.charAt(j))
            break;
        if (j == checkOK.length)
        {
          allValid = false;
          break;
        }
      }
      return allValid;
}

/**
*  MCMS 엑셀다운로드시 헤드에 default로 붙는 값 
*/
var HMCS_MSG ="";
//var HMCS_MSG ="Hanwha Material Control System Main Module for Version 1.0 ";

function openWin(url, width, height, scroll) {    
    
	var result = "false";
		
    inWidth = width; 	
	inHeight = height;
	x = screen.availWidth;	
	y = screen.availHeight;
	xtop = Number((y - inHeight)/2);	
	xleft = Number((x - inWidth)/2);

    window.open(url, "search","top="+xtop+",left="+xleft+",width="+inWidth+",height="+inHeight+",SCROLLBARS=" + scroll);
}

/**
 * 객체의 tabIndex를 지정한다.
 * 파라미터로 받는 Array개체에 들어 오는 순서대로 tabIndex를 지정한다.
 * 사용예)
 *          var f = document.form1;
 *          var indexObj = [ f.ccc, f.ddd, f.bbb, f.aaa ];
 *          setTabIndex(indexObj);
 */
function setTabIndex(indexObj) {
	try {
		if( indexObj != null && indexObj.length != null ) {
			for( var i = 0 ; i < indexObj.length ; i++ ) {
				var obj = indexObj[i];
				if( obj.length != null ) {
					for( var j = 0 ; j < obj.length ; j++ ) {
						obj[j].tabIndex = i + 1;
					}
				}
				else {
					obj.tabIndex = i + 1;
				}
				if( i == indexObj.length - 1 ) {
					obj.tabStop = true;
				}
			}
			indexObj[0].focus();
		}
	}
	catch(errorObject) {
		showErrorDlg("common_js.setTabIndex()", errorObject);
	}
}

/**	
 * 화면에서 help버튼을 클릭할때 도움말 화면을 보여준다.
 *  파라미터 ) 화면의 screen명
 *  사용예 ) setHelpName("PURRFQList.screen");
 */
function setHelpName(helpName) {
try {
  	if( document.all['HELP_NAME'] != null ) {
  
  		document.all['HELP_NAME'].innerText = helpName;
  	}
  	else if( parent.document.all['HELP_NAME'] != null ) {
  
  		parent.document.all['HELP_NAME'].innerText = helpName;
  	}
  	else if( parent.parent.document.all['HELP_NAME'] != null ) {
  
  		parent.parent.document.all['HELP_NAME'].innerText = helpName;
  	}
  	else if( parent.parent.parent.document.all['HELP_NAME'] != null ) {
  
  		parent.parent.parent.document.all['HELP_NAME'].innerText = helpName;
  	}
  	else if( parent.parent.parent.parent.document.all['HELP_NAME'] != null ) {
  
  		parent.parent.parent.parent.document.all['HELP_NAME'].innerText = helpName;
  	}
  	else if( parent.parent.parent.parent.parent.document.all['HELP_NAME'] != null ) {
  
  		parent.parent.parent.parent.parent.document.all['HELP_NAME'].innerText = helpName;
  	}
  } catch(e) {}
}



/**
 * ##############################################################################
 * Event 관련 function
 */

/**
 * 객체에 Event에 지정되어 있는 함수에 Event를 추가한다.
 * 사용예) form.input_field.onblur = addEvent( form.input_field.onblur, "calAmt()");
 * 설명  ) input_field 에 onblur event에 calAmt() 라는 함수를 추가한다.
 */
function addEvent(objEvent, addFunctionName) {

	if( objEvent == null )
		objEvent = "";

	var eventScript = objEvent + "";

	if( eventScript == "" ) {	
		eventScript = "\n" + addFunctionName + ";" + "\n";
	}
	else if( eventScript.substring(0, 8) == "function" ) {
		var startIndex = eventScript.indexOf("{");
		var endIndex   = eventScript.lastIndexOf("}");
		eventScript = eventScript.substring(startIndex + 1, endIndex - 1);
		eventScript += "\n" + addFunctionName + ";" + "\n";
	}
	else {	
		eventScript = "";
	}
	return new Function( eventScript );
}

/**
 * 정수 입력필도로 제어
 * 사용예) <INPUT type="text" name="number" value="" onKeyPress="JavaScript:numChk();">
 */
function useNumberKey() {
    if( (event.keyCode < 48) || (event.keyCode > 57) ) {
     	 if((event.keyCode < 96) || (event.keyCode > 105) ){
     		   event.returnValue = false;
     	 }	   
    }
}

/**
 * 소숫점 숫자 입력필드로 제어
 * 사용예) <INPUT type="text" name="number" value="" onKeyPress="JavaScript:useFloatNumberKey();">
 */
function useFloatNumberKey(){
    if( ( (event.keyCode < 48) || (event.keyCode > 57) ) && (event.keyCode != 46) ) {
        event.returnValue = false;
    }
}

/**
 * 팝업 원도우 ESC Key로 닫기
 * 사용예)> document.onkeydown = closePopupWindow;
 */
function closePopupWindow(e) {
    if( event.keyCode == 27 ) {
        self.close();
    }
    return true;
}



/**
 * ##############################################################################
 * FORM Field Array 관련 function
 */

/**
 * Array의 length구하기
 * 파라미터)> obj: Array객체
 * 사용예)> getObjLength(f.checkbox)
 */
function getObjLength(obj) {
	if( obj == null ) {
		return 0;
	}
	else {
		return obj.length == null ? 1 : obj.length;
	}
}

/**
 * index에 해당하는 Object를 리턴
 * 파라미터)> obj: Array객체,index: Array 순번 
 * 사용예)> getObj(f.checkbox,i)
 */
function getObj(obj, index) {
	if( obj.length == null ) {
		return obj;		
	}
	else {
		return obj[index];
	}
}

/**
 * Array에 들어있는 값과 파라미터 값과 같은 값을 가지고 있는 객체를 리턴  
 * 파라미터)> obj: Array객체,value: Array안의 값과 비교될 값 
 * 사용예)> getObjByValue(f.checkbox,'aa')
 */
function getObjByValue(obj, value) {
	for( var i = 0 ; i < getObjLength(obj) ; i++ ) {
		if( getObj(obj, i).value == value ) {
			return getObj(obj, i);
		}
	}
}

/**
 * Array에 파라미터 값을 넣는다.  
 * 파라미터)> obj: Array객체,value: Array안에 들어갈 값 
 * 사용예)> setObjValue(f.checkbox,'aa')
 */
function setObjValue(obj, value) {
	if( obj.length == null ) {
		obj.value = value;
	}
	else {
		for( var i = 0 ; i < obj.length ; i++ ) {
			obj[i].value = value;
		}
	}
}

/**
 * 중복되는 Value를 가지는지 여부를 리턴
 * 리턴값 : null => 중복값 없음
 *         Object Array => 중복하는 객체 Array
 */
function getDuplicatedObjValue(obj) {
	if( obj.length == null ) {
		return null;
	}
	else {
		for( var i = 0 ; i < obj.length ; i++ ) {
    		for( var j = i + 1 ; j < obj.length ; j++ ) {
				if( obj[i].value == obj[j].value ) {
					return new Array(obj[i], obj[j]);;
				}
			}
		}
		return null;
	}
}

/**
 * ##############################################################################
 * FORM 관련 function
 */
var IS_SUBMIT = false;
function formSubmit( formObject, varShowLayer ) {

	var isShowLayer = false;
	
	if( varShowLayer != null && varShowLayer != false ) {
		isShowLayer = true;
	}

    try {
		if( isShowLayer ) {
	        showFormSubmitLayer();
		}
		
		
		//alert("formObject.isSubmit==> "+formObject.isSubmit);
		
		if( formObject.isSubmit == null )
			formObject.issubmit = false;
		
        if( !formObject.isSubmit ) {

            formObject.issubmit = true;

			if( formObject.method.toLowerCase() == "get" )
				formObject.action = getDummyUrl(formObject.action);

            formObject.submit();
        }
        else {
        	setWindowStatus(window, "전송중입니다. 잠시만 기다려 주십시요.", 5);
        }
    }
    catch(errorObject) {

        showErrorDlg(errorObject);
    }
}

/**
 * 전송중 메세지 이미지 레이어 나타나게 함.
 */
function showFormSubmitLayer(){

    try {

        if( document.all.FormSendLayer != null ) {

            var xPos = document.body.clientWidth  / 2 + document.body.scrollLeft - 145;
            var yPos = document.body.clientHeight / 2 + document.body.scrollTop  -  44;

            document.all.FormSendLayer.style.posLeft = xPos;
            document.all.FormSendLayer.style.posTop  = yPos;
            document.all.FormSendLayer.style.visibility = "visible";
            document.all.FormSendLayer.style.zIndex = 100;
        }
    }
    catch(errorObject) {

        showErrorDlg(errorObject);
    }
}


/**
 * 폼전송시 중복 전송 방지기능 초기화
 */
function resetFormSubmit(){

    try {

        if( IS_SUBMIT ) {

            IS_SUBMIT = false;
            window.status = "";
			hideFormSubmitLayer();
        }
    }
    catch(errorObject) {

        showErrorDlg(errorObject);
    }
}

/**
 * 전송중 메세지 이미지 레이어 숨김.
 */
function hideFormSubmitLayer() {

    try {

        if( document.all.FormSendLayer != null ) {

            document.all.FormSendLayer.style.visibility = "hidden";
        }
    }
    catch(errorObject) {

        showErrorDlg(errorObject);
    }
}


/**
 * Form안에 속하는 필수항목(Object)들이 모두 입력되었는지를 체크
 * return true : 필수 항목이 입력되지 않은 항목이 존재
 * return false : 필수 항목이 입력되지 않은 항목이 없음
 */
function doValidFormRequired(formObject) {
	var firstValidatedElement = null;
	var isExistValidatedElement = false;
	var msg = "필수항목을 입력 바랍니다.\n\n항목명 : ";
	var ischk = "";
	try {
	    for( var i = 0 ; i < formObject.elements.length ; i++ ) {
	        var formElement = formObject.elements[i];
			var formElementValue = "";
	        switch(formElement.type) {
				case 'text' :
					formElementValue = formElement.value;
					ischk = doCheckMaxSize(formElement);
					break;
	            case 'hidden' :
	            case 'password' :
	            case 'textarea' :
	            	formElementValue = formElement.value;
	            	break;
	            case 'select-one' :
	            	formElementValue = getSelectedValue(formElement);
	            	break;
	            case 'radio' :
	            	formElementValue = getCheckedValue(formElement);
	            	break;
	            case 'checkbox' :
	            	formElementValue = isChecked(formElement);
	            	break;
	            case 'select-multiple' :
	            	formElementValue = isSelected(formElement);
	            	break;
	        }
	        if( formElement.getAttribute("requiredChk") != '' && formElement.getAttribute("required") != null) {
				if( formElementValue == "" ){
					isExistValidatedElement = true;
					msg = "필수항목을 입력 바랍니다.\n\n항목명 : ";
		       		if( formElement.desc == null )
		       			msg += formElement.name;
		       		else
		       			msg += formElement.desc;
		       		
		       		alert(msg);
		       		formElement.focus();
			    	return false;	
				}
	        }
	        if(ischk != ""){
	        	msg = "항목의 길이를 확인 바랍니다.\n\n항목명 : ";
	        	isExistValidatedElement = true;
	        	if( firstValidatedElement == null )
	        		firstValidatedElement = formElement;
	        	
	        	if( formElement.desc == null )
	       			msg += formElement.name;
	       		else
	       			msg += formElement.desc;
	        	
	        	msg += ischk;
	        	alert(msg);
	        	formElement.focus();
	        	return false;
	        }
	        
	    }
	    
	    return true;
	}
	catch(errorObject) {
        showErrorDlg("common_js.doValidFormRequired()", errorObject);
    }
}
function doCheckMaxSize(obj){
	var max_length = obj.getAttribute("maxlength");
	var real_length = doValidLength(obj.value);
	var msg = "";
	
	if(real_length > max_length){
		msg = "\n   => 최대: " + max_length + "\n   => 현재: " +real_length;
	}
	return msg;
}

/**
 * 한글, 영문 포함해서 byte수 계산
 */
function doValidLength(str) {

	var i = 0;
	var li_byte = 0;
	var ls_one_char = "";

	for(i=0 ; i<str.length ; i++) {
		ls_one_char = str.charAt(i);
		if(escape(ls_one_char).length > 4)
			li_byte += 3;
		else
			li_byte += 1;
	}

	return li_byte;
}


/**
 * URL에 "dummy=[날짜 + 시간]"에 파라미터를 붙여서 리턴한다.
 */
function getDummyUrl(url) {

	var checkExt = [ ".screen?", ".jsp?" ];

	var isExistParameter = false;
	for( var i = 0 ; i < checkExt.length ; i++ ) {

		if( url.indexOf(checkExt[i]) != -1 ) {

			isExistParameter = true;
			break;
		}
	}

	if( !isExistParameter )
		url = url + "?dummy=" + getDateTime();
	else
		url = url + "&dummy=" + getDateTime();

	return url;
}


/**
 * ##############################################################################
 * WINDOW 관련 function
 */

function setWindowStatus(win, msg, timeout) {
	try {
		setTimeout("clearWindowStatus()", (timeout * 1000));
		windowObject.status = msg;
	}
	catch(errorObject) {
	}
}

function clearWindowStatus() {
	window.status = "";
}

/**
 * 윈도우를 띄울때 화면의 중앙에 위치시킨다.
 * 파라미터)> url: 주소, windowName: 윈도우 이름, windowWidth: 팝업 윈도우의 가로 크기, windowHeight: 팝업 윈도우의 세로 크기, windowFeatures: 상태값)
 * 사용예)> openWindowCenter( getDummyUrl("/cop/COPSPInputNewJipCodeForm.screen?dept_cd="+f.dept_cd.value), "compare_table_view", 410, 270, "toolbar=no,directories=no,status=no,scrollbars=no,resize=no,menubar=no" );
 */
function openWindowCenter(url, windowName, windowWidth, windowHeight, windowFeatures) {

	try {
		if( windowFeatures == null || windowFeatures == "" )
			windowFeatures = "toolbar=no,directories=no,status=no,scrollbars=yes,resize=no,menubar=no";

	    var xPos = (screen.availWidth  - windowWidth) / 2;
	    var yPos = (screen.availHeight - windowHeight) / 2;
	
		var win = window.open( url , windowName, "top=" + yPos + ",left=" + xPos + ",width=" + windowWidth + ",height=" + windowHeight + "," + windowFeatures);
		//win.moveTo(xPos, yPos);
	    win.focus();
		return win;
	}
	catch(errorObject) {
		showErrorDlg("common_js.opwnWindowCenter()", errorObject);
	}
}

/**
 * ##############################################################################
 * 날짜 관련 function
 */

/**
 * 년월일 시분초 를 얻는다.
 * 사용예)> var timeval = getDateTime();
 */
function getDateTime() {

	return getDate() + "" + getTime();
}

/**
 * 년월일을 얻는다.
 * 사용예)> var timeval = getDate();
 */
function getDate() {

	var date = new Date();

	var year  = date.getYear();
	var month = date.getMonth() + 1;
	var day   = date.getDate();

	if( year < 1000 ) {
		year += 1900;
	}

	if( month < 10 ) {
		month = "0" + month;
	}
	
	if( day < 10 ) {
		day = "0" + day;
	}

	return "" + year + month+ day;
}

/**
 * 현재 년을  얻는다. 
 */
function get_year()
{
	var date = new Date();
	var year  = date.getYear();
	if( year < 1000 ) 
	{
		year += 1900;
	}
	return year ;
}

/**
 * 현재 월을  얻는다. 
 */
function get_month()
{
	var date = new Date();
	var month = date.getMonth() + 1;
	if( month < 10 ) {
		month = "0" + month;
	}
	return month ;
}

/**
 * 현재 일을  얻는다. 
 */
function get_day()
{
	var date = new Date();
	var day   = date.getDate();
	if( day < 10 ) {
		day = "0" + day;
	}
	return day; 
}

/**
 * 시분초를 얻는다.
 * 사용예)> var timeval = getDate();
 */
function getTime() {

	var date = new Date();

	var hour   = date.getHours();
	var minute = date.getMinutes();
	var second = date.getSeconds();   

	if( hour < 10 )
		hour = "0" + hour;

	if( minute < 10 )
		minute = "0" + minute;

	if( second < 10 )
		second = "0" + second;

	return "" + hour + minute + second;
}

/**
 * 날자를 입력받아 입력받은 포맷으로 바꿔준다.
 * 사용예)>getFormatDateTime(saveDate, "symbol")
 */
function getFormatDateTime(dateTime, format) {

	var KOREAN = [ "년 ", "월 ", "일 ", "시 ", "분 ", "초 " ];
	var SYMBOL = [ "-", "-", " ", ":", ":", "" ];

	var useArray;
	
	if( format.toUpperCase() == "KOREAN" )
		useArray = KOREAN;
	else if( format.toUpperCase() == "SYMBOL" )
		useArray = SYMBOL;


	var str = "";
	if( dateTime.length == 8 || dateTime.length == 14 ) {

		str += dateTime.substring(0, 4) + useArray[0];
		str += dateTime.substring(4, 6) + useArray[1];
		str += dateTime.substring(6, 8) + useArray[2];

		if( dateTime.length == 14 ) {

			str += dateTime.substring( 8, 10) + useArray[3];
			str += dateTime.substring(10, 12) + useArray[4];
			str += dateTime.substring(12, 14) + useArray[5];
		}
	}
	return str;
}

/**
 * 해당 년월의 마지막 일자를 리턴
 */
function getLastDay(year, month) {
    var Last_DAY = new Array(  31,            // 1?
                               28,            // 2?
                               31,            // 3?
                               30,            // 4?
                               31,            // 5?
                               30,            // 6?
                               31,            // 7?
                               31,            // 8?
                               30,            // 9?
                               31,            // 10?
                               30,            // 11?
                               31        );   // 12?

	 // 윤년
	 var a_leap_year;
	 if( year % 4 == 0 && year % 100 != 0 )
	      a_leap_year = true;
	 else
	      a_leap_year = false;
	 if( year % 1000 == 0 )
	      MONTH = true;
	 // 2월의 값을 윤년여부에 따라 변환.
	 Last_DAY[1] = (a_leap_year) ? 29 : 28 ;
	 return Last_DAY[month];
}

/**
/**
 * ##############################################################################
 * 문자열 관련 function
 */


/**
 * Object의 문자열 byte 길이를 리턴.
 * 파라미터)> object: 객체이름
 * 사용예)> getObjectByteLength(f.text)
 */
function getObjectByteLength(object) {
	
    var len = 0;

    if( object == null || object.value == null )
        return 0;
        
	return getByteLength(object.value);

}
/**YMI 2007-09-19 추가
 * Object의 문자열 byte 길이를 리턴.
 * 파라미터)> str: String 값
 * 사용예)> getStringByteLength(str)
 */
function getStringByteLength(object) {
	
    var len = 0;

    if( object == null)
        return 0;
        
	return getByteLength(object);

}

/**
 * 문자열을 입력받아 byte 길이를 리턴.
 * 파라미터)> str: 문자열
 * 사용예)> getByteLength("우리나라") 
 */
function getByteLength(str) {

    var len = 0;
    for( var i = 0 ; i < str.length ; i++ ) {

        var c = escape(str.charAt(i));
        if ( c.length == 1 )
            len ++;
        else if( c.indexOf("%u") != -1 )
            len += 2;
        else if( c.indexOf("%") != -1 )
            len += c.length/3;
    }
    return len;
}

/**
 *  사업자번호를 입력받아 체크
 * 파라미터)> str: 사업자번호
 * 사용예)> chkVenderNum("123-81-23456") 
 */
function chkVenderNum(str) {
	var strNumb = str;
    if( strNumb.length != 10 ) {
      	return false;
   	}
    sumMod  =   0;
    sumMod  +=  parseInt(strNumb.substring(0,1));
    sumMod  +=  parseInt(strNumb.substring(1,2)) * 3 % 10;
    sumMod  +=  parseInt(strNumb.substring(2,3)) * 7 % 10;
    sumMod  +=  parseInt(strNumb.substring(3,4)) * 1 % 10;
    sumMod  +=  parseInt(strNumb.substring(4,5)) * 3 % 10;
    sumMod  +=  parseInt(strNumb.substring(5,6)) * 7 % 10;
    sumMod  +=  parseInt(strNumb.substring(6,7)) * 1 % 10;
    sumMod  +=  parseInt(strNumb.substring(7,8)) * 3 % 10;
    sumMod  +=  Math.floor(parseInt(strNumb.substring(8,9)) * 5 / 10);
    sumMod  +=  parseInt(strNumb.substring(8,9)) * 5 % 10;
    sumMod  +=  parseInt(strNumb.substring(9,10));
        
  	if( sumMod % 10 != 0 ) {
		return false;
  	}
    return true;
}

/**
 * 주민등록번호 체크
 */
function chkRegNum(str) {
	if( str.length != 13 ) {
		return false;
	}
	var reg_str = str.substring(0, 6) + "-" + str.substring( 6, 13);

    var sum      = 0;
    var mod      = 0;
    var yearIn   = 0;
    var monthIn  = 0;
    var sex      = 0;
    var dateIn   = 0;

    for( i = 0 ; i < 13 ; i++ ) {
        if( i == 0 )
            yearIn += parseInt(reg_str.charAt(i)) * 10;
        if( i == 1 )
            yearIn += parseInt(reg_str.charAt(i));
        if( i == 2 )
            monthIn += parseInt(reg_str.charAt(i)) * 10;
        if( i == 3 )
            monthIn += parseInt(reg_str.charAt(i));
        if( i == 4 )
            dateIn += parseInt(reg_str.charAt(i)) * 10;
        if( i == 5 )
            dateIn += parseInt(reg_str.charAt(i));
        if( i == 7 )
            sex = parseInt(reg_str.charAt(i));
        if( i < 6 )
            sum += parseInt(reg_str.charAt(i)) * (i + 2);
        if( i > 6 && i < 9 )
            sum += parseInt(reg_str.charAt(i)) * (i + 1);
        if( i > 8 )
            sum += parseInt(reg_str.charAt(i)) * (i - 7);
    }

    mod = 11 - (sum % 11);

    if( (11 - (sum % 11)) >= 10 ) {
        mod -= 10;
    }
    if( mod != parseInt(reg_str.charAt(13)) ) {
        return false;
    }
    if( monthIn < 1 || monthIn > 12 || dateIn < 1 || dateIn > 31 ) {
        return false;
    }
    if( (monthIn == 4 || monthIn == 6 || monthIn == 9 || monthIn == 11 ) && dateIn > 30 ) {
        return false;
    }
    if( monthIn == 2 && dateIn > 29 ) {
        return false;
    }
    if( sex != 1 && sex != 2 && sex != 3 && sex != 4 ) { // 1, 3:??  2, 4:??
    	return false;
    }
    return true;
}

/**
 *  전화번호 필드의 숫자여부와 사이즈 체크
 * 파라미터)> form1.tel_1: 객체이름, size: 체크될 size
 * 사용예) checkTel(form1.tel_1, 3);
 */
function checkTel(obj, size) {

    if( isDigitValue(obj.value) && getByteLength(obj.value) >= size )
        return true;

    return false;
}

/**
 * Input 폼 필드의 내용이 비어 있는지 체크
 * 파라미터)>obj: 객체이름
 * 사용예) if( !isEmpty(form1.message) )
 *             Error 처리
 */
function isEmpty( obj ) {
	var temp = obj.value;
	if( temp.trim() == "" ) {
		return true;
	}
	return false;
}


/**
 * String의 특성별 유효성 체크
 * 파라미터)>str: 입력된 값, type: 유형
 * 사용예) chkString( f.loginname.value, "ID") : 로그인아이디가 영문자/숫자만 입력되었는지 확인
 * 사용예) chkString( f.age.value, "DIGIT") : 나이가 숫자로만 입력되었는지 확인
 */
function chkString( str , type ) {

    if( str != "" ) {
        type = type.toUpperCase();
        count = 0;
        roof  = 0;
        if( type == "DIGIT" ) {
            cp_string = "1234567890";
            roof = 10;
        }
        else if( type = "ID" ) {
            cp_string = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
            roof = 26 + 26 + 10;
        }
        for( i = 0 ; i < roof ; i++ ) {
            for( j = 0 ; j < str.length ; j++ ) {
                if( cp_string.charAt(i) == str.charAt(j) ) {
                    count++;
                }
            }
        }

        if( count == str.length ) {
            return true;
        }
        else {
            return false;
        }
    }
    return false;
}

/**
 * Object의 value가 숫자로만 되어있는지 체크한다.
 * 파라미터)>obj: 객체이름
 * 사용예) if( isDigitObject(form1.num) )
 */
function isDigitObject(obj){

	return isDigitValue(obj.value);
}

/**
 * value가 숫자로만 되어있는지 체크한다.
 * 파라미터)>value: 입력된 값
 * 사용예) if( isDigitValue(form1.num.value) )
 */
function isDigitValue(value) {

    try {

        inputStr = value;

        for( var i = 0 ; i < inputStr.length ; i++ ) {

            var oneChar = inputStr.charAt(i)

            if (oneChar < "0" || oneChar > "9") {
                return false;
            }
        }
        return true;
    }
    catch(errorObject) {

		showErrorDlg("common_js.isDigitValue()", errorObject);
        return false;
    }
}

/**
 * 메일형식 체크
 * 파라미터)>strEmail: 입력된 메일
 * 사용예) if( isDigitValue(form1.num.value) )
 */
function checkEmail(strEmail) {

	var arrMatch = strEmail.match(/^(\".*\"|[A-Za-z0-9_-]([A-Za-z0-9_-]|[\+\.])*)@(\[\d{1,3}(\.\d{1,3}){3}]|[A-Za-z0-9][A-Za-z0-9_-]*(\.[A-Za-z0-9][A-Za-z0-9_-]*)+)$/);

	if( arrMatch == null ) {

		return false;
	}

	var arrIP = arrMatch[2].match(/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/);

	if( arrIP != null ) {

		for( var i = 1 ; i <= 4 ; i++ ) {

			if( arrIP[i] > 255 ) {

				return false;
     		}
   		}
	}
	return true;
}

/**
 * 전화번호 형식 체크 20040707 @monoeye : Submit용 전화번호 체크 루틴
 * 파라미터)>strTelno: 입력된 전화번호
 * 사용예) if( checkTelno(form1.telnum.value) )
 */
function checkTelno(strTelno) {
	for (var i = 0 ; i < strTelno.length ; i++){
		if(isNaN(parseInt(strTelno.charAt(i))) && strTelno.charAt(i)!='-'){
			return false;
	   	}
	}
	return true;
}

/**
 * String이 한글로만 되어있는지 검사
 * 파라미터)>str: 입력된 값
 * if( isKoreanValue(form1.num.value) )
 */
function isKoreanValue( str ) {

	if( str == null )
		return false ;

	for( var i = 0 ; i < str.length ; i++ ) {

     	var c = str.charCodeAt(i);

     	//( 0xAC00 <= c && c <= 0xD7A3 ) 초중종성이 모인 한글자
     	//( 0x3131 <= c && c <= 0x318E ) 자음 모음

     	if( !( ( 0xAC00 <= c && c <= 0xD7A3 ) || ( 0x3131 <= c && c <= 0x318E ) ) ) {
        	return false ;
     	}
   	}
   	return true;
}

/**
 * String Object에 trim() 메서드 추가
 * 사용예) str.trim();
 */
String.prototype.trim = function() {

    return this.replace(/(^\s*)|(\s*$)/g, "");
}

String.prototype.bytes = function() {
    var str = this;
    var l = 0;
    for (var i=0; i<str.length; i++) l += (str.charCodeAt(i) > 128) ? 2 : 1;
    return l;
}

function replaceStr(str,out,add) {
    var temp = "" + str;
    while (temp.indexOf(out)>-1) {
        pos= temp.indexOf(out);
        temp = "" + (temp.substring(0, pos) + add + 
        temp.substring((pos + out.length), temp.length));
    }
    return temp;
}

/**
 * 공백을 지워서 obj 값을 반환한다.
 * 파라미터)>obj: 객체이름 
 * 사용예) set_removeAllSpace(f.tel_no);
 */
function set_removeAllSpace(obj)
{
    var position;
    position = obj.value.indexOf(" ");
    while (position != -1){
        obj.value = obj.value.replace(" ", "");
        position  = obj.value.indexOf(" ");
    }
    return obj.value;
}

/**
 * 공백을 지워서 str 반환한다.
 * 파라미터)>str: 문자열 
 * 사용예) set_removeAllSpace("abc d");
 */
function get_removeAllSpace(str)
{
    var position;
    position = str.indexOf(" ");
    while (position != -1){
        str = str.replace(" ", "");
        position  = str.indexOf(" ");
    }
    return str;
}

/*-------------------------------------------------------------------------
 parseInt_isNaN()
 Spec     : parseInt?? NaN?? 0? ???? ??? ?? ????
 Argument : ('123')
 Return   : int
 Example  : var intVal = parseInt_isNaN("1234");
-------------------------------------------------------------------------*/
function parseInt_isNaN(str) {
	if( isNaN( parseInt(str) ) ) {
		return 0;
	}
	else {
		return parseInt(str);
	}
}

/**
 * URLDecode
 * http://www.ietf.org/rfc/rfc2396.txt
 */
function URLDecode(encoded)
{
   // Replace + with ' '
   // Replace %xx with equivalent character
   // Put [ERROR] in output if %xx is invalid.
   var HEXCHARS = "0123456789ABCDEFabcdef"; 
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
	   if (ch == "+") {
	       plaintext += " ";
		   i++;
	   } else if (ch == "%") {
			if (i < (encoded.length-2) 
					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} else {
				alert( 'Bad escape combination near ...' + encoded.substr(i) );
				plaintext += "%[ERROR]";
				i++;
			}
		} else {
		   plaintext += ch;
		   i++;
		}
	} // while
    return plaintext;
}

/**
 * ##############################################################################
 * 숫자 관련
 */

/**
 * Float 숫자의 곱셈 처리에 JavaScript 버그를 피하기 위해서 사용하는 함수
 * 파라미터)>num_1: 곱하게 될 수,  num_2: 곱하게 될 수
 * 사용예) multiplyFloat(0.1, 0.1);
 */
function multiplyFloat(num_1, num_2) {

	var f_num_1 = "";
	var f_num_2 = "";
	var l_num_1 = "";
	var l_num_2 = "";
	var r_num_1 = "";
	var r_num_2 = "";
	var dotIndex_1;
	var dotIndex_2;
	var point = 0;
	var result = "";

    try {

		f_num_1 = parseFloat(num_1, 10) + "";
		f_num_2 = parseFloat(num_2, 10) + "";

		if( f_num_1 < 0 )
			minus_1 = true;

		if( f_num_2 < 0 )
			minus_2 = true;

		dotIndex_1 = f_num_1.indexOf('.');
		dotIndex_2 = f_num_2.indexOf('.');

		if( dotIndex_1 > 0 ) {
			l_num_1 = f_num_1.substring(0, dotIndex_1);
			r_num_1 = f_num_1.substring(dotIndex_1 + 1, f_num_1.length);
		}
		else {
			l_num_1 = f_num_1;
		}
		if( dotIndex_2 > 0 ) {
			l_num_2 = f_num_2.substring(0, dotIndex_2);
			r_num_2 = f_num_2.substring(dotIndex_2 + 1, f_num_2.length);
		}
		else {
			l_num_2 = f_num_2;
		}

		point = r_num_1.length + r_num_2.length;

		var temp = (parseInt(l_num_1 + r_num_1, 10) * parseInt(l_num_2 + r_num_2, 10)) + "";

/*
alert(l_num_1 + r_num_1);
alert(l_num_2 + r_num_2);
alert(temp);
alert(temp.length);
alert(point);
*/

		if( temp.length > point ) {
			result = parseFloat(temp.substring(0, temp.length - point) + "." + temp.substring(temp.length - point, temp.length), 10);
		}
		else if( temp.length == point ) {
			result = parseFloat("0." + temp, 10);
		}
		else {
			var size = point - temp.length;
			for( var i = 0 ; i < size ; i++ ) {
				temp = "0" + temp;
			}
			result = parseFloat("0." + temp, 10);
		}
    
    	return result;
    }
    catch(errorObject) {

		showErrorDlg("common_js.multiplyFloat()", errorObject);
        return Nan;
    }	
}

/**
 * 숫자를 한글로 변환한다.
 * 파라미터)>num: 숫자
 * 사용예) numberToHangul(1234);
 */
function numberToHangul(num) {

	bigUnitArray = new Array( "", "?", "?", "?");
	unitArray    = new Array( "", "?", "?", "?");
	hanArray     = new Array( "", "?", "?", "?", "?", "?", "?", "?", "?", "?" );
	
	splitedNum = new Array();
	pos= num.length;
	idx = 0;
	while(true) {

		if( pos - 4 > 0 ) {

			splitedNum[idx] = num.substring(pos-4, pos);
		}
		else {

			splitedNum[idx] = num.substring(0, pos);
			break;
		}
		pos = pos-4;
		idx++;
	}

	han = "";
	splietedNumSize = splitedNum.length;
	for( j = splietedNumSize -1 ; j >= 0 ; j-- ) {

		tmp = splitedNum[j]; 
		tmplen = splitedNum[j].length;
		for( i = tmplen ; i > 0 ; i-- ) {

			n = tmp.charAt(tmplen - i);
			if( n == "0" )
				continue;
			if( n == "1" && i != 1 && !(j == splietedNumSize-1 && i == tmplen) ) {

				han += unitArray[i-1];
			}
			else {

				han +=  hanArray[n]+ unitArray[i-1];
			}
		}
		if( eval(tmp) != 0 )
			han += bigUnitArray[j];
	}
	return han;
}

/**
 * 숫자를 반올림한다.
 * 파라미터)>num: 반올림할 숫자, pos:반올림 할 위치
 * 사용예)> doRound(12.23,1);
 */
function doRound(num, pos) {

	var posV ;
	
	if ( pos == 0 ) {
		posV = 1 ;
	} else {		
		posV = Math.pow(10, (pos ? pos : 3)) ;
	}		
	return Math.round(multiplyFloat(num,posV))/posV;
}

function doFloor(num, pos) {
	var posV ;
	if ( pos == 0 ) {
		posV = 1 ;
	}
	else {		
		posV = Math.pow(10, (pos ? pos : 3)) ;
	}		
	return Math.floor(multiplyFloat(num,posV))/posV;
}

function addStr(s, cnt) {
    var i = 0;
    var rst = "";
    while(++i <= cnt) {
        rst = rst+s;
    }
    return rst;
}



/**
 * ##############################################################################
 * 콤보박스 관련 function
 */

/**
 * ValueObject Binding
 * objects.js ??
 */
function bindValueObject(obj, vo) {
	removeAllOptions(obj);		
	for( var i = 0 ; i < vo.getSize() ; i++ ) {
		addOption(obj, vo.getKey(i), vo.getValue(i));
	}
}

/**
 * 선택된 콤보박스의 값을 리턴한다.
 * 파라미터)>obj: 객체 이름
 * 사용예)> getSelectedValue(f.selected);
 */
function getSelectedValue(obj) {
    if( obj != null && obj.options != null && obj.selectedIndex != -1 ) {
		return obj.options[obj.selectedIndex].value;
    }
    else {
    	return "";
    }
}

/**
 * 선택된 콤보박스의 Text를  리턴한다.
 * 파라미터)>obj: 객체 이름
 * 사용예)> getSelectedText(f.selected);
 */
function getSelectedText(obj) {
    if( obj != null ) {
		return obj.options[obj.selectedIndex].text;
    }
}

 /**
 * 콤보박스의 특정 Value를 선택
 * 파라미터)>obj: 객체 이름, val:값 
 * 사용예)> setSelect(f.selected,'123');
 */
function setSelect(obj, val) {
    if( obj != null && val != null ) {
        for( var i = 0 ; i < obj.length ; i++ ) {
            if( obj.options[i].value == val ) {
                obj.options[i].selected = true;
                fireEvent(obj, "change");
                break;
            }
        }
    }
}

/**
 * 스크립트로 value변경시 이벤트 실행.
 * @param element object
 * @param event on을 제외한 이벤트 명
 * @returns
 */
function fireEvent(element,event){
    if (document.createEventObject){
        // dispatch for IE
        var evt = document.createEventObject();
        return element.fireEvent('on'+event,evt);
    }
    else{
        // dispatch for firefox + others
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(event, true, true ); // event type,bubbling,cancelable
        return !element.dispatchEvent(evt);
    }
}

/**
 * 
 */
function addOption(obj, value, desc) {
	var option = new Option( desc , value , false );
    obj.options[obj.options.length] = option;
}

/**
 * SELECTBOX?? TOOLTIP ??
 */
function addOptionTooltip(obj, value, desc) {
	var option = new Option( desc , value , false );
	option.title = value;
    obj.options[obj.options.length] = option;       
}


 /**
 * 콤보박스에 항목 입력
 * 파라미터)>index:순번, obj:객체이름 , flag:구분 , min:최소 , max:최대
 * 사용예)> putSelects(2,f.selected,'YEAR', '5','10');
 */
function putSelects(index, obj , flag , min , max) {
    if( obj.length != null && obj.length != 0 ) {
        for( var i = 0 ; i < obj.length ; i++ ) {
            if( i == index ) {
                putSelect( obj[i] , flag , min , max );
            }
        }
    }
    else {
        putSelect( obj , flag , min , max );
    }
}

 /**
 * 콤보박스에 항목 입력
 * 파라미터)> obj:객체이름 , flag:구분 , min:최소 , max:최대
 * 사용예)> putSelects(f.selected,'YEAR', '5','10');
 */
function putSelect( obj , flag , min , max ) {
    if( obj == null )
        return;

    var isType = false;

    if( obj.length == 0 ) {
        if( flag == "YEAR" ) {
            isType = true;
        }
        else if( flag == "MONTH" ) {
            min = 1;
            max = 12;
            isType = true;
        }
        else if( flag == "DAY" ) {
            min = 1;
            max = 31;
            isType = true;
        }

        obj.options[0] = new Option("", "", false);
        if( isType )
        {
            var index = 1;
            for( var i = min ; i <= max ; i++ )
            {
                var temp = i + "";
                temp = ( temp.length == 1 ) ? "0" + temp : temp ;

                var option = new Option( temp , temp , false );
                obj.options[index] = option;
                index++;
            }
        }
    }
}

 /**
 * 선택된 항목만 읽게
 * 파라미터)> obj:객체이름
 * 사용예)> setReadOnlySelect(f.selected);
 */
function setReadOnlySelect(obj) {

    if( obj != null ) {
		var options = obj.options[obj.selectedIndex];
        for( var i = obj.length - 1 ; i >= 0 ; i-- ) {
			obj.options[i] = null;
        }
        obj.options[0] = options;
    }
}

 /**
 * 모든 항목을 삭제한다.
 * 파라미터)> obj:객체이름
 * 사용예)> removeAllOptions(f.selected);
 */
function removeAllOptions(obj) {
    if( obj != null ) {
        for( var i = obj.length - 1 ; i >= 0 ; i-- ) {
			obj.options[i] = null;
        }
    }
}

/**
 * 최상위 항목 제외한 모든 항목을 삭제한다.
 * 파라미터)> obj:객체이름
 * 사용예)> removeAllOptionsExceptTop(f.selected);
 */
function removeAllOptionsExceptTop(obj) {
    if( obj != null ) {
        for( var i = obj.length - 1 ; i >= 1 ; i-- ) {
			obj.options[i] = null;
        }
    }
}

 /**
 * 선택된 항목을 삭제한다.
 * 파라미터)> obj:객체이름, val: 삭제될 순번
 * 사용예)> removeOption(f.selected,5);
 */
function removeOption(obj, val) {
    if( obj != null && val != null ) {
        for( var i = 0 ; i < obj.length ; i++ ) {
            if( obj.options[i].value == val ) {
                obj.options[i] = null;
                break;
            }
        }
    }
}

function isSelected(obj) {
    if( obj != null ) {
        for( var i = 0 ; i < obj.length ; i++ ) {
            if( obj.options[i].selected == true ) {
				return true;
            }
        }
    }
    return false;
}

 /**
 * 선택된 항목을 위로 이동시킨다.
 * 파라미터)> obj:객체이름
 * 사용예)> moveUpOption(f.selected,5);
 */
function moveUpOption(obj) {

	if( obj.options.length == null )
		return;

	for( var i = 0 ; i < obj.options.length ; i++ ) {

		obj.options[i].isSelected = obj.options[i].selected;

		if( obj.options[i].selected && obj.options[i] != "" && obj.options[i] != obj.options[0] ) {

			var tmpval  = obj.options[i].value;
			var tmpval2 = obj.options[i].text;
			var tmpval3 = obj.options[i].isSelected;

			obj.options[i].value      = obj.options[i - 1].value;
			obj.options[i].text       = obj.options[i - 1].text
			obj.options[i].isSelected = obj.options[i - 1].isSelected

			obj.options[i-1].value      = tmpval;
			obj.options[i-1].text       = tmpval2;
			obj.options[i-1].isSelected = tmpval3;
      	}
   	}

	for( var i = 0 ; i < obj.options.length ; i++ ) {

		obj.options[i].selected = obj.options[i].isSelected;
	}
}

 /**
 * 선택된 항목을 아래로 이동시킨다.
 * 파라미터)> obj:객체이름
 * 사용예)> moveDownOption(f.selected);
 */
function moveDownOption(obj) {

	if( obj.options.length == null )
		return;

	for( var i = obj.options.length - 1 ; i >= 0 ; i-- ) {

		obj.options[i].isSelected = obj.options[i].selected;

		if( obj.options[i].selected && obj.options[i] != "" && obj.options[i+1] != obj.options[obj.options.length] ) {

			var tmpval  = obj.options[i].value;
			var tmpval2 = obj.options[i].text;
			var tmpval3 = obj.options[i].isSelected;

			obj.options[i].value      = obj.options[i+1].value;
			obj.options[i].text       = obj.options[i+1].text
			obj.options[i].isSelected = obj.options[i+1].isSelected

			obj.options[i+1].value      = tmpval;
			obj.options[i+1].text       = tmpval2;
			obj.options[i+1].isSelected = tmpval3;
      	}
   	}

	for( var i = 0 ; i < obj.options.length ; i++ ) {

		obj.options[i].selected = obj.options[i].isSelected;
	}
}

//##############################################################################
// 라디오 버튼 관련 function

/**
 * 선택된 라디오 버튼값을 리턴한다.
 * 파라미터)> obj:객체이름
 * 사용예)> getCheckedValue(f.radiobt);
 */
function getCheckedValue(obj) {
    if( obj != null ) {
        for( var i = 0 ; i < obj.length ; i++ ) {
            if( obj[i].checked == true ) {
				return obj[i].value;
            }
        }
        return "";
    }
    return "";
}

/**
 * 라디오 버튼 선택한다.
 * 파라미터)> obj:객체이름, val:값
 * 사용예)> getCheckedValue(f.radiobt,5);
 */
function setRadio(obj, val) {
    if( obj != null && val != null ) {
        for( var i = 0 ; i < obj.length ; i++ ) {
            if( obj[i].value == val ) {
                obj[i].checked = true;
                break;
            }
        }
    }
}

/**
 * 라디오 버튼 Disabled 속성 조정
 * 파라미터)> obj:객체이름, val:값, disValue: true,false
 * 사용예)> setRadioDisabled(f.radiobt,5,true);
 */
function setRadioDisabled(obj, val, disValue)
{
    if( obj != null && val != null )
    {
		if( obj.length == null ) {

			if( obj.value == val )
				obj.disabled = disValue;
		}
		else {
		
	        for( var i = 0 ; i < obj.length ; i++ )
	        {
	            if( obj[i].value == val )
	            {
	                obj[i].disabled = disValue;
	            }
	        }
		}
    }
}

/**
 * 모든 라디오 버튼 Disabled 속성 조정
 * 파라미터)> obj:객체이름, disValue: true,false
 * 사용예)> setRadioDisabledAll(f.radiobt,true);
 */
function setRadioDisabledAll(obj, disValue) {

	setCheckDisabledAll(obj, disValue);
}


function setInitRadio(obj) {
    if( obj != null) {
        for( var i = 0 ; i < obj.length ; i++ ) {
            obj[i].checked = false;
        }
    }
}


//##############################################################################
// CheckBox 버튼 관련 function

// CheckBox 버튼 선택
function setCheckBox(obj, arrayObj)
{
    if( arrayObj != null && arrayObj.length != null )
    {
        for( var i = 0 ; i < arrayObj.length ; i++ )
        {
            for( var j = 0 ; j < obj.length ; j++ )
            {
                if( obj[j].value == arrayObj[i] )
                {
                    obj[j].checked = true;
                    break;
                }
            }
        }
    }
}

/**
 * check설정
 * 파라미터)> obj:객체이름, isCheck: true,false
 * 사용예)> cvtCheckBox(f.checkbt,true);
 */
function cvtCheckBox(obj, isCheck)
{
	if( obj != null )
	{
        if( obj.length != null )
        {
            for( var i = 0 ; i < obj.length ; i++ )
            {
       	        if (!obj[i].disabled) obj[i].checked = isCheck;
      	    }
        }
        else
        {
            if (!obj.disabled) obj.checked = isCheck;
        }
    }
}

/**
 * 같은 체크박스를 타이틀별로 체크하거나 하는데 disabled은 무시한다.
 * 파라미터)> obj, row개수(화면상의 타이틀), row위치
 * 사용예)> company/PURReqSupplyProductView.jsp참조하세요.
 */
function multi_cvtCheckBox(obj, row_cnt, row_position)
{		
	var remain;
	var chk = 0;
	var isCheck;
			
	for( var i = 0 ; i < getObjLength(obj) ; i++ )
	{
		remain = i%row_cnt;

		if(row_position == remain)
		{				
			if(getObj(obj, i).disabled == false)
				if(getObj(obj, i).checked ==  true)
				{
					chk++;
				}
		}
	}				

	if(chk>0)	isCheck = false;
	else        isCheck = true;				

	if( obj != null )
	{			
		for( var i = 0 ; i < getObjLength(obj) ; i++ )
		{
			remain = i%row_cnt;
			if(row_position == remain)
				if(getObj(obj, i).disabled == false)
					getObj(obj, i).checked = isCheck;
		}			
	}		
}

/**
 * 체크박스에 체크된 항목이 있는지 여부를 리턴한다.
 * 파라미터)> obj, row개수(화면상의 타이틀), row위치
 * 사용예)> isChecked(f.checked);
 */
function isChecked(obj) {

	try {

		if( obj == null )
			return false;

		var isChecked = false;
	
		if( obj.length == null ) {
	
			isChecked = obj.checked;	
		}
		else {
	
			for( var i = 0 ; i < obj.length ; i++ ) {
	
				if( obj[i].checked ) {
	
					isChecked = true;
					break;
				}
			}
		}

		return isChecked;
	}
	catch(errorObject) {

		showErrorDlg(errorObject);
	}
}

/**
 * 체크박스 Disabled 속성 조정
 * 파라미터)> obj:객체이름, val:값 , disValue: true,false
 * 사용예)> isChecked(f.checked);
 */
function setCheckDisabled(obj, val, disValue)
{
    if( obj != null && val != null )
    {
		if( obj.length == null ) {

			if( obj.value == val )
				obj.disabled = disValue;
		}
		else {
		
	        for( var i = 0 ; i < obj.length ; i++ )
	        {
	            if( obj[i].value == val )
	            {
	                obj[i].disabled = disValue;
	                break;
	            }
	        }
		}
    }
}

/**
 * 모든 체크박스 Disabled 속성 조정
 * 파라미터)> obj:객체이름, disValue: true,false
 * 사용예)> setCheckDisabledAll(f.checked, true);
 */
function setCheckDisabledAll(obj, disValue)
{
    if( obj != null )
    {
		if( obj.length == null ) {

			obj.disabled = disValue;
		}
		else {
		
	        for( var i = 0 ; i < obj.length ; i++ )
	        {
                obj[i].disabled = disValue;
	        }
		}
    }
}

function copyTableRow(destTableID, srcTableID) {

    var destStr = "document.all." + destTableID;
    var srcStr  = "document.all." + srcTableID;

	var destTableBody = eval(destStr + ".children[0]");
	var srcTableBody  = eval(srcStr + ".children[0].children[0]");

    // ??
	var srcCopy = eval(srcStr + ".innerHTML");

	var size = eval(srcStr + ".children[0].children[0].children.length");

	for( var i = 0 ; i < size ; i++ ) {
	    destTableBody.appendChild(srcTableBody.children[0]);
	}
	eval(srcStr + ".innerHTML = srcCopy");
}


//##############################################################################
// 메세지전달 관련 function

/**
 * 페이지를 이동하는 메세지창
 * 파라미터)> msg:메시지, url:주소
 * 사용예)> showMoveDlg("이동합니다.", "/com/calljsp.screen");
 */
function showMoveDlg(msg, url)
{
    if( confirm(msg) )
    {
    	self.location = url;
    }
}


/**
 * 메세지를 출력하고, Object로 focus를 돌려준다.
 * 파라미터)> obj:객체명, msg:메시지
 * 사용예)> ErrMsg(f.gets, "전화번호를 입력하세요");
 */
function ErrMsg( obj, msg ) {
    try {
        //alert( msg );
        dlgAlert(msg);
		try {
            obj.focus();
        }
        catch(errorObject) {
        }
		try {
            obj.select();
        }
        catch(errorObject) {
        }
        return false;
    }
    catch(errorObject) {
        showErrorDlg("common_js.ErrMsg()", errorObject);
    }
}


// Explorer Exception 처리
function showErrorDlg(methodName, errorObject) {
	try {
		if( errorObject == null ) {
			errorObject = methodName;
			methodName = "unknowned method";
		}
		var msg = "";
		msg += "Method Name : " + methodName + "\n\n";
		if( errorObject.description != null ) {
	        msg += errorObject.description + "\n\n"
	             + "Error Number : " + (errorObject.number>>16 & 0x1FFF) + "\n\n";
	    }
	    else {
	        msg += "Error Number : " + (errorObject.number>>16 & 0x1FFF) + "\n\n";
	    }
	    alert(msg);
	}
	catch(eo) {
		alert(eo);
	}
}



















//2004-05-13추가 sukjin chang
/*
	내    용 : 파라미터로 받은 일자의 요일 리턴
	파라미터 : pDate - 일자 (8자리 숫자로 이루어진 문자열)
	Return값 : 요일 (일,월,화,수,목,금,토 => 0,1,2,3,4,5,6)
*/
function fGetDay(pDate)
{
	try {
		var vDate = pDate.toString();
		
	//	var vDayArray = ["일", "월", "화", "수", "목", "금", "토"];
		var vTempDate = new Date();
		vTempDate.setYear(vDate.substring(0, 4));
		vTempDate.setMonth(eval(vDate.substring(4, 6))-1);
		vTempDate.setDate(vDate.substring(6, 8));

		var vDay  = vTempDate.getDay();
		return vDay;
	}
	catch(errorObject) {

		showErrorDlg(errorObject);
	}
}

/*
	내    용 : 시작일자와 기간을 받아 종료일자를 리턴
	파라미터 : pStartDate - 시작일자
			   pDateTerm  - 기간
	Return값 : 종료 일자
*/
function fGetEndDate(pStartDate, pDateTerm)
{
	try {
		// 파라미터로 받은 날짜로 Date 객체 초기화
		var vStartDate  = new Date(eval(pStartDate.toString(10).substring(0, 4)), eval(pStartDate.toString(10).substring(4, 6)) - 1, eval(pStartDate.toString(10).substring(6, 8)));

			 // 파라미터로 받은 숫자만큼 이후 일자로 setting
			vStartDate.setDate(vStartDate.getDate() + eval(pDateTerm));

		// 년도 문자열화
		var vTempYear   = vStartDate.getFullYear();
			vTempYear   = vTempYear.toString(10);

		// 월 문자열화
		var vTempMonth  = vStartDate.getMonth()+1;
			vTempMonth  = vTempMonth.toString(10);

		// 일 문자열화
		var vTempDate   = vStartDate.getDate();
			vTempDate   = vTempDate.toString(10);

		if(vTempMonth.length == 1) vTempMonth = "0" + vTempMonth;
		if(vTempDate.length == 1)  vTempDate = "0" + vTempDate;

		// 날짜 포맷으로 변환
		var vReturnDate = vTempYear + vTempMonth + vTempDate;
		
		return vReturnDate;
	}
	catch(errorObject) {

		showErrorDlg(errorObject);
	}	
}

//2004-05-28 추가 sukjin chang

/*-------------------------------------------------------------------------
 fDisplayDiv()
 Spec     : //파라미터로 받은 DIV 영역에 새로운 HTML Code 를 삽입
 Example  : fDisplayDiv(tdivid,html);
-------------------------------------------------------------------------*/
function fDisplayDiv(pDivName, pHtml)
{									
	// 파라미터로 받은 DIV 영역에 새로운 HTML Code 를 삽입	
	//alert ('[' + parent.document.getElementById(pDivName).innerHTML + ']');
	parent.document.getElementById(pDivName).innerHTML = pHtml;	
	//pHtml = "";
	// vHtml Clear   
}

/*-------------------------------------------------------------------------
 f_chkJumin()
 Spec     : //수량형식으로 변환한다. 12345 -> 12345.000
 Example  : formatQty(this);
-------------------------------------------------------------------------*/
	//수량형식으로 변환한다. 12345 -> 12345.000
	function formatQty(obj){
	    obj.value = getQty(obj.value);
	}
	
	function getQty(str){
	    var value = str == ""? "0": str;
	    var num1, num2;
	
	    var len = value.length;
	    var off = value.indexOf(".");
	    if( off != -1){
	        num1 = value.substring(0, off); 
	        num2 = value.substring(off+1);
	        if(num2.length<3){
	            num2 = rpad(num2, 3, '0');
	        } else {
	            num2 = num2.substring(0, 3);
	        }
	        value = plusComma(num1.replace(/,/g, "")) + "." + num2;
	
	    } else {
	        value = plusComma(value.replace(/,/g, "")) +".000";
	    }
	    return value;
	}
/*-------------------------------------------------------------------------
 Spec     : //수량형식으로 변환한다. 12345 -> 12345.0000
 Example  : formatQty4Hous(this);
-------------------------------------------------------------------------*/

	// Left 빈자리 만큼 padStr 을 붙인다.
	function lpad(src, len, padStr){
	 var retStr = "";
	 var padCnt = Number(len) - String(src).length;
	 for(var i=0;i<padCnt;i++) retStr += String(padStr);
	 return retStr+src;
	}

	// Right 빈자리 만큼 padStr 을 붙인다.
	function rpad(src, len, padStr){
		 var retStr = "";
		 var padCnt = Number(len) - String(src).length;
		 for(var i=0;i<padCnt;i++) retStr += String(padStr);
		 return src+retStr;
	}
	
	
	//수량형식으로 변환한다. 12345 -> 12345.0000
	function formatQty4Hous(obj){
	    obj.value = getQty4Hous(obj.value);
	}
	
	function getQty4Hous(str){
	    var value = str == ""? "0": str;
	    var num1, num2;
	    var len = value.length;
	    var off = value.indexOf(".");
	    
	    if( off != -1){
	        num1 = value.substring(0, off); 
	        num2 = value.substring(off+1);

	        if(num2.length<4){
	            num2 = rpad(num2, 4, '0')+"";
	        } else {
	            num2 = num2.substring(0, 4);
	        }
	        value = plusComma(num1.replace(/,/g, "")) + "." + num2;
	
	    } else {
	        value = plusComma(value.replace(/,/g, "")) +".0000";
	    }
	    return value;
	}
	
	//수량형식으로 변환한다. 12345 -> 12345.000
	function formatQty3Hous(obj){
	    obj.value = getQty4Hous(obj.value);
	}
	
	function getQty3Hous(str){
	    var value = str == ""? "0": str;
	    var num1, num2;
	    var len = value.length;
	    var off = value.indexOf(".");
	    
	    if( off != -1){
	        num1 = value.substring(0, off); 
	        num2 = value.substring(off+1);

	        if(num2.length<3){
	            num2 = rpad(num2, 3, '0')+"";
	        } else {
	            num2 = num2.substring(0, 3);
	        }
	        value = plusComma(num1.replace(/,/g, "")) + "." + num2;
	
	    } else {
	        value = plusComma(value.replace(/,/g, "")) +".000";
	    }
	    return value;
	}

/*-------------------------------------------------------------------------
 f_chkJumin()
 Spec     : 주민등록번호 Check
 Argument : (document.form_name.input_name,document.form_name.input_name)
 Return   : boolean
 Example  : if(f_chkJumin(document.form.Jumin1,document.form.Jumin2) == false) return;
-------------------------------------------------------------------------*/
function f_chkJumin(jumin1,jumin2)
{

    var jumin_1 = jumin1.value;
    var jumin_2 = jumin2.value;

    var number = jumin_1 + jumin_2;
    var sum=0;    
    var mod=0;    
    var yearin=0; 
    var monthin=0;
    var datein=0; 

    // 외국인 일때....
    //if((jumin_2.substring(0,1) == "7") || (jumin_2.substring(0,1) == "8")) {
    //   if ((jumin_2.substring(1,2) == "1") || (jumin_2.substring(1,2) == "2") || 
	//	   (jumin_2.substring(1,2) == "3") || (jumin_2.substring(1,2) == "4")
	//	  )
    //   return true;
    //}

    // 외국인 일때....2005.06.21수정
    if((jumin_2.substring(0,1) == "5") || (jumin_2.substring(0,1) == "6")) {

		var fgsum = 0;
		var odd   = 0;
		buf = new Array(13);

		for (i=0;i<13;i++ )
		{
			buf[i] = parseInt(number.charAt(i));
		}
		
		if ((buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9)) {
			ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
			jumin1.value = "";
			jumin2.value = "";
			jumin1.focus();
			return false;
		}

		multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
		
		for (i=0,fgsum=0;i<12;i++)
		{
			fgsum += (buf[i] *= multipliers[i]);
		}

		fgsum = 11-(fgsum%11);

		if (fgsum>=10)	fgsum -= 10;
		fgsum += 2;
		if (fgsum>=10)	fgsum -= 10;

		if (fgsum!=buf[12])	{
			ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
			jumin1.value = "";
			jumin2.value = "";
			jumin1.focus();
			return false;
		}
		return true;
	}

	//내국인일때
	else {
		for ( var i=0; i<12; i++ ) {
			if (i==0)     yearin  += parseInt(number.charAt(i),10)*10;
			if (i==1)     yearin  += parseInt(number.charAt(i),10);
			if (i==2)     monthin += parseInt(number.charAt(i),10)*10;
			if (i==3)     monthin += parseInt(number.charAt(i),10);
			if (i==4)     datein  += parseInt(number.charAt(i),10)*10;
			if (i==5)     datein  += parseInt(number.charAt(i),10);
			if (i<6)      sum     += parseInt(number.charAt(i),10)*(i+2);
			if (i>5&&i<8) sum     += parseInt(number.charAt(i),10)*(i+2);
			if (i>7)      sum     += parseInt(number.charAt(i),10)*(i-6);
		}

		mod = 11 - (sum%11);

		if ((11-(sum%11)) >= 10)   mod -= 10;
	
		if(mod!=parseInt(number.charAt(12),10)) {
			//alert("【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
			ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
			jumin1.value = "";
			jumin2.value = "";
			jumin1.focus();
			return false;
		}
		if(monthin < 1 || monthin > 12 || datein < 1 || datein > 31) {
			//alert("【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
			ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
			jumin1.value = "";
			jumin2.value = "";
			jumin1.focus();
			return false;
		}
		if((monthin ==4 || monthin == 6 || monthin == 9 || monthin ==11 ) && datein > 30) {
			//alert("【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
			ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
			jumin1.value = "";
			jumin2.value = "";
			jumin1.focus();
			return false;
		}
		if(monthin ==2 && datein > 29) {
			//alert("【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
			ErrMsg2("","【 입력오류 】: 사용되지않는 주민등록번호입니다. 다시 입력하여 주십시오.");
			jumin1.value = "";
			jumin2.value = "";
			jumin1.focus();
			return false;
		}
	}
    return true;
}




/*-------------------------------------------------------------------------
 f_dayLaborChkJumin()
 Spec     : 노무관리 - 일용직 주민등록번호 Check
 Argument : (document.form_name.input_name,document.form_name.input_name)
 Return   : boolean
 Example  : if(f_chkJumin(document.form.Jumin1,document.form.Jumin2) == false) return;
-------------------------------------------------------------------------*/
function f_dayLaborChkJumin(jumin1,jumin2)
{

    var jumin_1 = jumin1.value;
    var jumin_2 = jumin2.value;

    // 외국인 일때....
    if((jumin_2.substring(0,1) == "7") || (jumin_2.substring(0,1) == "8")) {

       if ((jumin_2.substring(1,2) == "1") || (jumin_2.substring(1,2) == "2") || 
		   (jumin_2.substring(1,2) == "3") || (jumin_2.substring(1,2) == "4")
		  )
       return true;
    }

    var number = jumin_1 + jumin_2;
    var sum=0;    
    var mod=0;    
    var yearin=0; 
    var monthin=0;
    var datein=0; 

    for ( var i=0; i<12; i++ ) {
        if (i==0)     yearin  += parseInt(number.charAt(i),10)*10;
        if (i==1)     yearin  += parseInt(number.charAt(i),10);
        if (i==2)     monthin += parseInt(number.charAt(i),10)*10;
        if (i==3)     monthin += parseInt(number.charAt(i),10);
        if (i==4)     datein  += parseInt(number.charAt(i),10)*10;
        if (i==5)     datein  += parseInt(number.charAt(i),10);
        if (i<6)      sum     += parseInt(number.charAt(i),10)*(i+2);
        if (i>5&&i<8) sum     += parseInt(number.charAt(i),10)*(i+2);
        if (i>7)      sum     += parseInt(number.charAt(i),10)*(i-6);
    }

    mod = 11 - (sum%11);

    if ((11-(sum%11)) >= 10)   mod -= 10;

    if(mod!=parseInt(number.charAt(12),10)) {
        if ( ! dlgConfirm("규정에 맞지않는 주민등록번호입니다.<br>무시하고 그냥 입력하시겠습니까?") ) {
    
			jumin1.value = "";
	        jumin2.value = "";
	        jumin1.focus();
	        return false;
	    }
        return true;
    }
    if(monthin < 1 || monthin > 12 || datein < 1 || datein > 31) {
        if ( ! dlgConfirm("규정에 맞지않는 주민등록번호입니다.<br>무시하고 그냥 입력하시겠습니까?") ) {
    
			jumin1.value = "";
	        jumin2.value = "";
	        jumin1.focus();
	        return false;
	    }
        return true;
    }
    if((monthin ==4 || monthin == 6 || monthin == 9 || monthin ==11 ) && datein > 30) {
        if ( ! dlgConfirm("규정에 맞지않는 주민등록번호입니다.<br>무시하고 그냥 입력하시겠습니까?") ) {
    
			jumin1.value = "";
	        jumin2.value = "";
	        jumin1.focus();
	        return false;
	    }
        return true;
    }
    if(monthin ==2 && datein > 29) {
        if ( ! dlgConfirm("규정에 맞지않는 주민등록번호입니다.<br>무시하고 그냥 입력하시겠습니까?") ) {
    
			jumin1.value = "";
	        jumin2.value = "";
	        jumin1.focus();
	        return false;
	    }
        return true;
    }
    return true;
}



	//2004-08-05
	var vLastSelectedTabID = "";   // 마지막으로 선택된 탭 ID 를 저장할 전역변수
	
	function fSelectTab(pDivID)
	{
		// 처음 display 되는 경우가 아니라면(기존에 선택된 탭이 있다면) display 영역의 내용을 해당 탭 영역에 저장
		if(vLastSelectedTabID != "") document.getElementById(vLastSelectedTabID).innerHTML = document.all.tabDiv.innerHTML;

		// 새로 선택한 탭 영역의 내용을 display 영역에 copy
		document.all.tabDiv.innerHTML = document.getElementById(pDivID).innerHTML;

		// 코드중복방지를 위해 원본 소스를 삭제
		document.getElementById(pDivID).innerHTML = "";

		// 새로 선택한 탭 ID 를 전역변수에 저장
		vLastSelectedTabID = pDivID;
	}

//2004-08-24 sukjin chang
/*----------------------------------------------------------------------------*/
/* FUNCTION ID : setEditMark                                                  */
/* 기       능 :                                                              */
/*               정해진 데이터 입력 형식(사업자번호, 주민등록번호, 날짜 등    */
/*               구분자)을 설정해서 사용자가 쉽게 데이터를 입력하게 한다.     */
/* 인       수 :                                                              */
/*               obj (문자)                                              */
/*               as_format(형식)                                              */
/* 반  환   값 :                                                              */
/*               편집한 문자                                                  */
/* 특 이 사 항 :                                                              */
/*               <a href="javascript: getRow('<%=                             */
/*               setEditMark(rs.getString("MV_NO"), "0000-000")%>')">         */
/*----------------------------------------------------------------------------*/
function setEditMark(as_value, as_format)
{
    /*------------------------------------------------------------------------*/
    /* 변수선언 및 초기화.                                                    */
    /*------------------------------------------------------------------------*/
    var i = 0, j = 0, k = 0;                               /* Index           */
    var ls_value = "";                                     /* Value           */
    /*------------------------------------------------------------------------*/
    /* 숫자만 입력가능하게 처리.                                              */
    /*------------------------------------------------------------------------*/
    for(i = 0; i < as_value.value.length; i++)
    {
        /*--------------------------------------------------------------------*/
        /* 숫자가 아닌것은 제거.                                              */
        /*--------------------------------------------------------------------*/
        if (!IsDecimal(as_value.value.charAt(i)))
        {
            as_value.value = as_value.value.substring(0, i)
                           + as_value.value.substring(i + 1, as_value.value.length);
        }
    }
    /*------------------------------------------------------------------------*/
    /* 문자를 원하는 형식으로 편집.                                           */
    /*------------------------------------------------------------------------*/
    for(i = 0; i < as_value.value.length; i++)
    {
        /*--------------------------------------------------------------------*/
        /* 지정한 형식이 존재한 경우.                                         */
        /*--------------------------------------------------------------------*/
        if (as_format.length > j)
        {
            /*----------------------------------------------------------------*/
            /* 구분자가 아닌 경우.                                            */
            /*----------------------------------------------------------------*/
            if ((as_format.substring(j, j + 1) >= "0") && (as_format.substring(j, j + 1) <= "9"))
            {
                /*------------------------------------------------------------*/
                /* 문자 Edit.                                                 */
                /*------------------------------------------------------------*/
                ls_value = ls_value + as_value.value.substring(i, i + 1);
            }
            /*----------------------------------------------------------------*/
            /* 구분자인 경우.                                                 */
            /*----------------------------------------------------------------*/
            else
            {
                /*------------------------------------------------------------*/
                /* 구분자 추가.                                               */
                /*------------------------------------------------------------*/
                ls_value = ls_value + as_format.substring(j, j + 1);
                j = j + 1;
                /*------------------------------------------------------------*/
                /* 문자 Edit.                                                 */
                /*------------------------------------------------------------*/
                ls_value = ls_value + as_value.value.substring(i, i + 1);
            }
        }
        j = j + 1;
    }
    /*------------------------------------------------------------------------*/
    /* 편집한 문자 Setting.                                                   */
    /*------------------------------------------------------------------------*/
    as_value.value = ls_value;
    return;
}

/*----------------------------------------------------------------------------*/
/* FUNCTION ID : IsDecimal                                                    */
/* 기       능 :                                                              */
/*               지정한 문자열이 유효한 숫자 값인지를 검사한다.               */
/* 인       수 :                                                              */
/*               ad_decimal(숫자)                                             */
/* 반  환   값 :                                                              */
/*               True or False                                                */
/* 특 이 사 항 :                                                              */
/*----------------------------------------------------------------------------*/
function IsDecimal(ad_decimal)
{
    /*------------------------------------------------------------------------*/
    /* Decimal type validation check.                                         */
    /*------------------------------------------------------------------------*/
    if ((ad_decimal >= 0) && (ad_decimal <= 9))
    {
        return true;
    }
    else
    {
        return false;
    }
}

/*-------------------------------------------------------------------------
 onlyNumber()
 Spec     : 숫자만 입력가능하게처리
 Argument : (document.form_name.input_name, 6)
 Return   : string
 Example  : var val = onlyNumber(document.form.Jumin1,document.form.Jumin2);
-------------------------------------------------------------------------*/
function onlyNumber(obj,default_value)
{    	
	var i = 0, j = 0, k = 0;                               /* Index           */
    var ls_value = "";                                     /* Value           */
    /*------------------------------------------------------------------------*/
    /* 숫자만 입력가능하게 처리.                                              */
    /*------------------------------------------------------------------------*/
    for(i = 0; i < obj.value.length; i++)
    {
        /*--------------------------------------------------------------------*/
        /* 숫자가 아닌것은 제거.                                              */
        /*--------------------------------------------------------------------*/
       //alert(IsDecimal(obj.value.charAt(i)));
       //alert(obj.value.charAt(i));
		if (IsDecimal(obj.value.charAt(i)))
        {
            ls_value += obj.value.substring(i, i+1);
                           
        }
    }    

    /*------------------------------------------------------------------------*/
    /* 편집한 문자 Setting.                                                   */
    /*------------------------------------------------------------------------*/
	var position;
    position = ls_value.indexOf(" ");
    while (position != -1){
        ls_value = ls_value.replace(" ", "");
        position  = ls_value.indexOf(" ");
    }		

	if(ls_value == '') ls_value = default_value;
    obj.value = ls_value;	
    return;
}

/*-------------------------------------------------------------------------
 f_chk_DDiff()
 Spec     : 시작일자와 끝 일자를 비교하여 시작일자가 크면 true, 시작일자가 작으면 false를 리턴한다.
 Argument : (document.form_name.input_name, 6)
 Return   : boolean
 Example  : if( f_chk_DDiff("20050101","20050301") );
-------------------------------------------------------------------------*/
function f_chk_DDiff(Start,End) {
	
	//i_Start = removeMaskForString(Start.value);
	//i_End = removeMaskForString(End.value);

	i_Start = Start;
	i_End   = End;
	
        if(i_End == "")
           i_End = 99999999;

	num = i_End - i_Start;

	if ( num < 0 )     
        return false;
    else
		return true;
}

//sukjin chang 2004-10-07 추가
/*-------------------------------------------------------------------------
 parseInt_isNaN()
 Spec     : parseInt해서 NaN이면 0을 리턴하고 아니면 값을 리턴한다
 Argument : ('123')
 Return   : int
 Example  : var intVal = parseInt_isNaN("1234");
-------------------------------------------------------------------------*/
function parseInt_isNaN(str)
{
	if( isNaN( parseInt(str) ) )
	{
		return 0;
	} else {
		return parseInt(str);
	}
}

//sukjin chang 2005-05-03 추가
/*-------------------------------------------------------------------------
 parseFloat_isNaN()
 Spec     : parseFloat해서 NaN이면 0을 리턴하고 아니면 값을 리턴한다
 Argument : ('123.12')
 Return   : float
 Example  : var floatVal = parseInt_isNaN("1234");
-------------------------------------------------------------------------*/
function parseFloat_isNaN(str)
{
	if( isNaN( parseFloat(str) ) )
	{
		return 0;
	} else {
		return parseFloat(str);
	}
}

//sukjin chang 2004-10-14 추가
/*-------------------------------------------------------------------------
 fDivScroll()
 Spec     : 리스트에서 상단타이틀과 리스트 목록이 같이 이동 Scroll
 Argument : ('123.12')
 Return   : float
 Example  : fDivScroll(f.div1, f.div2)
-------------------------------------------------------------------------*/
function fDivScroll( obj1, obj2 )
{
    // 스크롤바 따라가기 스크립트
    // obj2 가 obj1 을 따라합니다.
    obj2.scrollLeft = obj1.scrollLeft;
}


//sukjin chang 2004-11-05 추가
/**
 * 문자길이를 체크
 * 파라미터)> obj:객체이름, field_name:입력할 제목, max_len:허용할 최대길이
 * 사용예)> if(f_check_len( obj, "필드명", 길이 ) == false) return;
 */
function f_check_len( obj, field_name, max_len )
{		
	len = getObjectByteLength(obj);									

	if (len > max_len) {
		dlgAlert(field_name + "는(은) 숫자 영문은" +  max_len + "자 까지 한글은 " + max_len/2 + "자 까지 가능합니다.");
		obj.focus();
		return false;
	}
	return true;
}
/**
 * YMI 2007-09-19 추가
 * 문자길이를 체크(소수점표현식)  -- 소수점 뒤는 DB에서 자동으로 해당 자릿수 만큼만 저장한다.
 * 파라미터)> obj:객체이름, field_name:입력할 제목, max_len:허용할 최대길이, str:소수점(.) 앞에 값 [ex: 123.432 -> str= 123]
 * 사용예)> if(f_check_len( obj, "필드명", 길이 ) == false) return;
 */
function f_float_len( obj, field_name, max_len, str)
{		
	len = getStringByteLength(str);									

	if (len > max_len) {
		dlgAlert(field_name + "는(은) 소수점 앞자리는 " +  max_len + "자 까지 가능합니다.");
		obj.focus();
		return false;
	}
	return true;
}

//onblur
/**
 * 문자길이를 체크
 * 파라미터)> obj:객체이름, max_len:허용할 최대길이
 * 사용예)> if(f_check_limit(this, this.maxLength) == false) return;
 */
function f_check_limit( obj, max_len )
{
	len = getObjectByteLength(obj);									
	
	if (len > max_len) {
		dlgAlert("숫자 영문은" +  max_len + "자 까지 한글은 " + max_len/2 + "자 까지 가능합니다.");
		obj.focus();
		return false;
	}
	return true;
}

//onkeyup
/**
 * 문자길이를 체크
 * 파라미터)> obj:객체이름, max_len:허용할 최대길이
 * 사용예)> if(f_check_limit2(this, this.maxLength) == false) return;
 */
function f_check_limit2(obj, max_len)
{	
	var strCount = 0;
	var tempStr, tempStr2;	
	
	for(i = 0;i < obj.value.length;i++)
	{
		tempStr = obj.value.charAt(i);
		if(escape(tempStr).length > 4) strCount += 2;
      	else strCount += 1 ;
    }
	

	if (strCount > max_len){
		
		alert("숫자 영문은" +  max_len + "자 까지 한글은 " + max_len/2 + "자 까지 가능합니다.");	
		
		strCount = 0;		
		tempStr2 = "";
		
		for(i = 0; i < obj.value.length; i++) 
		{
			tempStr = obj.value.charAt(i);	
			if(escape(tempStr).length > 4) strCount += 2;
	      	else strCount += 1 ;
	      	if (strCount > max_len)
	      	{
	      		if(escape(tempStr).length > 4) strCount -= 2;
	      		else strCount -= 1 ;	
	      		break;	      		
	      	}
	      	else tempStr2 += tempStr;
	    }	    
		obj.value = tempStr2;
	}		
	
	//return true;	
}

/*-------------------------------------------------------------------------
 function f_chkDate() 
 Example  : if(f_chkDate(obj, "필드명") == false) return;
-------------------------------------------------------------------------*/
/**
 * 날자타입 체크
 * 파라미터)> stObj:객체이름, alertMSG:에러 발생시 띄울 메시지
 * 사용예)> if(f_check_limit2(this, this.maxLength) == false) return;
 */
function f_chkDate(stObj,alertMSG)
{	
	
	var st = removeMaskForString(stObj.value);
	var d_yy = st.substr(0,4);
	var d_mm = st.substr(4,2);
	var d_dd = st.substr(6,2);

	if ((st == "") || (st == null)) return true;	
	
	if (st == "00000000" || st == "0000-00-00") 
	{
		stObj.value = ''
		return true;
	}

	if (st.length != 8) {
		dlgAlert(alertMSG + "의 문자형식은 YYYYMMDD로 입력하여 주십시오.");
		stObj.focus();
		return false;
	}

	if ((st.charAt(0) < "1")  || (st.charAt(0) > "2")) {
		dlgAlert(alertMSG + "의 년도를 올바르게 입력하여 주십시오.");
		stObj.focus();
		return false;
	}

	for(j=0; j < 3; j++)
	if ((st.charAt(j) < "0") || (st.charAt(j) > "9")) {
		dlgAlert(alertMSG + "의 년도를 숫자로 입력하여 주십시오.");
		stObj.focus();
		return false;
	}
	

	for(j=4; j < 6; j++)
	if ((st.charAt(j) < "0") || (st.charAt(j) > "9"))
	{
		dlgAlert(alertMSG + "의 월을 숫자로 입력하여 주십시오.");
		stObj.focus();
		return false;
	}


	for(j=6; j < 8; j++)
	if ((st.charAt(j) < "0") || (st.charAt(j) > "9"))
	{
		dlgAlert(alertMSG + "의 일자를 숫자로 입력하여 주십시오.");
		stObj.focus();
		return false;
	}


	if (st.charAt(4) == "0") // parseInt가 "08"을 0으로 인식하여 할 수없이 자리수를 나누어 처리...
	d_mm = st.charAt(5);


	if (((parseInt(d_mm)) < 1) || ((parseInt(d_mm)) > 12))
	{
		
		dlgAlert(alertMSG + "의 월은 01부터12까지 입니다");
		stObj.focus();
		return false;
	}
	
	if (st.substr(6,2) == "08") {
		d_dd = st.charAt(8);
	}

	if (st.substr(6,2) == "09") {
		d_dd = st.charAt(8);
	}

	num = Number(d_mm);
	if ((0 < num) && (num < 8)) {


// 윤달체크 시작

	year = Number(d_yy);

	if (parseInt(d_mm) == 2) {

		if (year%4 == 0)
		{

			if (((parseInt(d_dd)) < 0) || ((parseInt(d_dd)) > 29)) 
			{
				dlgAlert(alertMSG + "의 일자는 01부터 29일까지 입니다.");
				stObj.focus();
				return false;
			}
		}else
		{
			if (((parseInt(d_dd)) < 0) || ((parseInt(d_dd)) > 28))
			{
			dlgAlert(alertMSG + "의 일자는 01부터 28일까지 입니다.");
			stObj.focus();
			return false;
			}

		}
		
	}

//윤달체크 끝.

	if (num%2 == 0)
	{
	

		if (((parseInt(d_dd)) < 1) || ((parseInt(d_dd)) > 30)) {
			
			dlgAlert(alertMSG + "의 일자는 01부터30까지 입니다.");
			stObj.focus();
			return false;
		}
	}
	else {

		if (((parseInt(d_dd)) < 1) || ((parseInt(d_dd)) > 31)) {
			
			dlgAlert(alertMSG + "의 일자는 01부터31까지 입니다.");
			stObj.focus();
			return false;
		}
	}

	} // 여기까지가 01-07월까지 일계산 입니다... 

	else {
	if (num%2 == 0)
	{
	

		if (((parseInt(d_dd)) < 1) || ((parseInt(d_dd)) > 31)) {
			
			dlgAlert(alertMSG + "의 일자는 01부터31까지 입니다.");
			stObj.focus();
			return false;
		}
	}
	else {

		if (((parseInt(d_dd)) < 1) || ((parseInt(d_dd)) > 30)) {
			
			dlgAlert(alertMSG + "의 일자는 01부터30까지 입니다.");
			stObj.focus();
			return false;
		}
	}

	}
	return true;
}
/*-------------------------------------------------------------------------
 function upArrowClik(obj) 
 Example  : upArrowClik(obj);
-------------------------------------------------------------------------*/
/**
 * obj의 값을 +1시킨다.
 * 파라미터)> Obj:객체이름
 * 사용예)> upArrowClik(obj);
 */
 function upArrowClik(obj){
	obj.value = (obj.value*1)+1;
}
/*-------------------------------------------------------------------------
 function downArrowClik(obj) 
 Example  : downArrowClik(obj);
-------------------------------------------------------------------------*/
/**
 * obj의 값을 -1시킨다.
 * 파라미터)> Obj:객체이름
 * 사용예)> upArrowClik(obj);
 */
function downArrowClik(obj){
	obj.value = (obj.value*1)-1;
}

/**
 * 자릿수에 따른 포맷형식
 * 파라미터)> strDigit : 소수점 자릿수
 * 설명)> Report Designer 에 자릿수 형식 표현을 위해 JSP 단에서 파라미터 값을 미리 형식변환 하여 보낸다.
 */

function getFormatDigit(strDigit){ // 자릿수에 따른 포맷형식
    var strFormat = "";

    if(strDigit == "0")	      strFormat = "#,###";
    else if(strDigit == "1")  strFormat = "#,###.#";
    else if(strDigit == "2")  strFormat = "#,###.##";
    else if(strDigit == "3")  strFormat = "#,###.###";
    else if(strDigit == "4")  strFormat = "#,###.####";
    else if(strDigit == "5")  strFormat = "#,###.#####";
    else if(strDigit == "6")  strFormat = "#,###.######";

	return strFormat;
    }
/**	
 * Textarea 크기 조절
 *  파라미터 ) imgObj: 사이즈 변화를 주고싶어 클릭할 image, textObj:사이즈 변화를 주고싶은 TEXTAREA, minRows:최저 Row 라인 갯수, maxRows:최대 Row 라인 갯수
 *  사용예 )<IMG src="/images/temp/plus.gif" alt="통지사항의 크기를 조절합니다." border="0" align="top" onClick="JavaScript:toggleTextarea(this, document.form1.req_etc, 2, 10);" style="cursor:hand;">
 */
function toggleTextarea(imgObj, textObj, minRows, maxRows) {

	var maxImgSrc = "/img/buyer/icon/icon_minus.gif";
	var minImgSrc = "/img/buyer/icon/icon_plus.gif";
	try {

		if( textObj.rows >= maxRows ) { // 축소
			imgObj.src = minImgSrc;
			textObj.rows = minRows;
		}
		else if( textObj.rows < maxRows ) { // 확대
			imgObj.src = maxImgSrc;
			textObj.rows = maxRows;
		}
	}
	catch(errorObject) {
	}
}

  /**
     * 두 날짜의 차이를 true false로 반환한다 (조회 종료일 - 조회 시작일)
     * 두 월의 차이를 true false로 반환한다 (조회 종료월 - 조회 시작월)
     * @param fromDate 	- 조회 시작일 or 조회 시작월 (날짜 ex.2002-01-01 or 2002-01)
     * @param toDate 	- 조회 종료일 or 조회 종료월 (날짜 ex.2002-01-01 or 2002-02)
     * @param delim 	- 날짜 구분자
     * @param isMonth 	- 달체크 여부 true인 경우 달로 체크한다
     * @param msgChk 	- 메시지  출력여부 ( true or false )
     * @return boolean
     */
    function compareDate( fromDate, toDate, delim, isMonth, msgChk ){
    
        var delimeter = delim;
		var from_dt;
		var to_dt; 
		
		if( msgChk == undefined || msgChk == null ){
		
			msgChk = true;
		}
		
        // delimeter가 있는 경우 
       	if( delimeter != null && delimeter != undefined && delimeter != "" ){
       		
       		//년월일체크 
	        if (  !isMonth && (fromDate.length != 10 || toDate.length != 10) ){
	        	alert("올바른 날짜 값이 아닙니다.")
				return false;
	        }
	        //년월 체크
	        else if (  isMonth && (fromDate.length != 7 || toDate.length != 7) ){
	        	alert("올바른 년월 값이 아닙니다.")
				return false;
	        }
	        
	        if( fromDate.indexOf(delimeter) < 0 || toDate.indexOf(delimeter) < 0 ){
	        	alert("날짜 구분자가 맞지 않습니다.")
				return false;	        
	        }
       		
       		// 년도, 월, 일로 분리
	        var start_dt 	= fromDate.split(delimeter);
	        var end_dt 		= toDate.split(delimeter);
	
	        // 월 - 1(자바스크립트는 월이 0부터 시작하기 때문에...)
	        // Number()를 이용하여 08, 09월을 10진수로 인식하게 함.
	        start_dt[1] = (Number(start_dt[1]) - 1) + "";
	        end_dt[1] = (Number(end_dt[1]) - 1) + "";
			
			//달체크인 경우 
			if( isMonth ){
		        from_dt = new Date(start_dt[0], start_dt[1], "01");
		        to_dt = new Date(end_dt[0], end_dt[1], "01");
	        }
	        else{
				from_dt = new Date(start_dt[0], start_dt[1], start_dt[2]);
		        to_dt = new Date(end_dt[0], end_dt[1], end_dt[2]);
	        }
       	
       	}
       	// delimeter가 없지만 자릿수가 8자리인 경우 
       	else if( fromDate.length == 8 && toDate.length == 8 ){
       		
       		from_dt = new Date(fromDate.substring(0,4), fromDate.substring(4,6), fromDate.substring(6,8));
	        to_dt = new Date(toDate.substring(0,4), toDate.substring(4,6), toDate.substring(6,8));
       	
       	}
       	// delimeter가 없고 년월 체크이면서  자릿수가 6자리인 경우 
       	else if( isMonth && (fromDate.length == 6 && toDate.length == 6) ){
       		
       		from_dt = new Date(fromDate.substring(0,4), fromDate.substring(4,6), "01");
	        to_dt = new Date(toDate.substring(0,4), toDate.substring(4,6), "01");
       	}
       	
       	else{
       		alert("올바른 날짜 값이 아닙니다.")
			return false;
       	}
		
		/*
 		if( ( to_dt.getTime() - from_dt.getTime() ) == 0 ){
 			if( isMonth ){
	 			alert("조회기간의 시작월과 종료월이 같습니다.");
 			}
 			else{
	 			alert("조회기간의 시작날짜와 종료날짜가 같습니다.");
 			}
 			return false;
 			
 		}
		else 
		*/
		
		if( ( to_dt.getTime() - from_dt.getTime() ) < 0 ){

 			if( isMonth && msgChk ){
 				
	 			alert("조회기간의 종료월이 시작월보다 작습니다.");
	 			
 			}else if( msgChk ){
 				
	 			alert("조회기간의 종료날짜가 시작날짜보다 작습니다.");
	 			
 			}
 			return false; 			
 		}
 		else {
 		
 			return true;
 		}
 		
 		
    }

	
    
	function doDownExcel(sheetObj){
		sheetObj.SpeedDown2Excel(-1);		
	}
	

/**
 * 엑셀 다운로드
 * 파라미터  > sheetObj 쉬트Object, exceltitle 엑셀 타이틀
 * 사용예     > doDownExcel4sheet(document.all.sheet1,"Project NO")
 * 작성일자  > 2007-12-12
 */
	function doDownExcel4Sheet(sheetObj,exceltitle) {
		   if (sheetObj.RowCount <= 0){
	           dlgAlert("There is no data to download.");
	           return;
	       }
	    var param = "exceltitle=" + HMCS_MSG+"Project ["+sheetObj.UrlEncoding(exceltitle)+"]";
	    
	    // 엑셀 다운로드
	    sheetObj.SpeedDown2Excel(-1, false, false, "", "/lib/excel_download.screen?"+param);
	}
	
		//현재 자식노드인 경우   부모노드의 Row를 반환한다.
	function getParentRow( childRow ){
	
		var parentRow = 0;
		var sheetObj = document.all.sheet1;
		
		
		for ( var i = childRow; i > 0; i-- ) {
		
			if( sheetObj.RowLevel(i) == 0 ){
			
				parentRow = i;
				break;
			}
		}
		
		return parentRow;
	}

/**
 * PassWord Validation Check
 * 패스워드는 8~16자리 이내, 생일, 주민등록번호, 전화번호 같지 않게 ,영문혼용 사용, ID와 4자이상 중복, 연속된 문자, 순차적인 숫자 4개이상 입력 안됨.
 */
function doValidPassWord(Object) {

	var minLength = 6;     //비밀번호 최소 자리수 
	var maxLength = 20;    //비밀번호 최대 자리수
	var msg = "";
	
	try {
	
		 if(Object.passwd01 != Object.passwd02){
        	msg = "입력하신 비밀번호가 다릅니다.";        	
        	return msg;
        }   	    
	    if(Object.passwd01.length < minLength || Object.passwd01.length > maxLength){
	    	msg = "비밀번호는  "+minLength+"자 이상 ~"+maxLength+" 자 이내로 입력하세요!";	   
	    	return msg; 	   	
	    }
	    
	    
	    if(chkPassword(Object.passwd01) == false ){
	    	msg = "비밀번호는 영문, 숫자의 조합으로 입력하세요!";
	    	return msg;
	    }
	   
	    if(chkNumber(Object.passwd01, Object.tel_no) == false
	    		||chkNumber(Object.passwd01, Object.hand_tel) == false){
	    	msg = "전화번호, 휴대폰번호 등은 비밀번호로 사용할 수 없습니다!"
	    	return msg;	    
	    }
	  
	    var cnt=0,cnt2=1,cnt3=1;
        var temp="";

        for(i=0;i < Object.user_id.length;i++){
                temp_id =Object.user_id.charAt(i);               
                for(j=0;j < Object.passwd01.length;j++){
                        if (cnt >0)
                                j=tmp_pass_no+1;

                        if (temp == "r"){
                                j=0;
                                temp="";
                        }

                        temp_pass = Object.passwd01.charAt(j);

                        if (temp_id == temp_pass){
                            cnt = cnt + 1;
                            tmp_pass_no = j;
                            break;
                        }else if(cnt > 0 && j > 0){
                                temp="r";
                                cnt = 0;
                        }else
                                cnt = 0;
                }
                //alert("4-cnt="+cnt);
                if (cnt > 3) break;
        }
        if (cnt > 3){
                msg = "비밀번호가 ID와 4자 이상 중복되거나, \n연속된 문자나 순차적인 숫자를 4개이상 사용해서는 안됩니다.";
                return msg;               
        }
        for(i=0;i < Object.passwd01.length;i++){
                temp_pass1 = Object.passwd01.charAt(i);


                next_pass = (parseInt(temp_pass1.charCodeAt(0)))+1;
                temp_p = Object.passwd01.charAt(i+1);
                temp_pass2 = (parseInt(temp_p.charCodeAt(0)));
                if (temp_pass2 == next_pass)
                    cnt2 = cnt2 + 1;
                else
                    cnt2 = 1;
                if (temp_pass1 == temp_p)
                    cnt3 = cnt3 + 1;
                else
                    cnt3 = 1;
                if (cnt2 > 3) break;
                if (cnt3 > 3) break;
        }
        if (cnt2 > 3){
                msg = "비밀번호에 연속된 문자나 순차적인 숫자를 4개이상 사용해서는 안됩니다.";  
                return msg;              
        }
        else if (cnt3 > 3){
                msg = "비밀번호에 반복된 문자/숫자를 4개이상 사용해서는 안됩니다.";
                return msg;                
        }
	    
	}
	catch(errorObject) {
        showErrorDlg("common_js.doValidPassWord()", errorObject);
        return msg = errorObject ;
    } 
    return msg;  
}


function chkPassword(pass) { 
   chk1 = /^[a-z\d]{6,20}$/i;  							//a-z와 0-9이외의 문자가 있는지 확인
   chk2 = /[a-z]/i; 									//적어도 한개의 a-z 확인
   chk3 = /\d/; 										//적어도 한개의 0-9 확인
   return chk1.test(pass) && chk2.test(pass) && chk3.test(pass); 
} 

function chkNumber(pass, Num){

	var check = false;
	
	var comp  = Num.substring(Num.length-4);  

    if(pass.match(comp)== null || Num == ""){
    	return true;    
    }
    
    return check;	

}


/**
 * Random PassWord Generator
 * 랜덤 패스워드 생성
 */
 
function randomPassWord() {

	var pass = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234507890abcdefghijklmnopqrstuvwxyz";
	
	var n = 0 ;
	var i = 0 ;
	var s = "" ;
	var len = 8;
	
	for(k=1; k<=len; k++){		
		n = Math.random()*62;		
		i = Math.round(n);		
		s += pass.charAt(i); 		
	}	
	return s;
}

function changePasswd(Obj){ 

		var url = "/sycs/user/ChangePwd.screen?user_id="+Obj.user_id.value;	
		
		var argObj = new Object();
		
		argObj.user_id 	= Obj.user_id.value;
		argObj.tel_no 	= Obj.tel_no.value;
		argObj.fax_no 	= Obj.fax_no.value;
		argObj.hand_tel = Obj.hand_tel.value;
	
		var result = window.showModalDialog(getDummyUrl(url), argObj ,'dialogWidth:430px;dialogHeight:140px; center:yes; help:no; status:no; scroll:no; resizable:no');			 
    
}

function deciHistoryView(bizCode, linkTable, docGB, processStatus, keyId, chasu) {
	    var url = "/common/his/DeciHistoryView.screen"
	    		+ "?biz_code=" + bizCode
	    		+ "&link_table=" + linkTable
	            + "&doc_gb=" + docGB
   	            + "&process_status=" + processStatus
   	    		+ "&key_id=" + keyId;
	    if(linkTable == "WEEK"){
	    	url += "&chasu=" + chasu;
	    }        
	
		var dlgWidth   = 980;
		var dlgHeight  = 400;
	
		window.showModalDialog(getDummyUrl(url), this.window,'dialogWidth:' + dlgWidth + 'px;dialogHeight:' + dlgHeight + 'px; center:yes; help:no; status:no; scroll:yes; resizable:no');
	}


/*
 * Tab 이미지를 마우스 over/out에 따라 설정한다.
 */
function setTabImage(obj){
	if(obj.style.backgroundImage == '' || obj.style.backgroundImage == 'url(/img/tab/tab_off.gif)'){
		obj.style.backgroundImage =  "url(/img/tab/tab_on.gif)";
		obj.style.setAttribute("color", "white"); 
	}else{
		obj.style.backgroundImage =  "url(/img/tab/tab_off.gif)";
		obj.style.setAttribute("color", "#5e5e5e"); 
	}
}


var isIE = (navigator.appName.indexOf("Microsoft") != -1) ? 1 : 0;

function trueBody(){ 
	return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement: document.body; 
} 
function trueBodyParent(){ 
	return (parent.document.compatMode && parent.document.compatMode!="BackCompat")? parent.document.documentElement: parent.document.body; 
} 
//Layer Popup 오픈
function fLayerPop(layerID, htmlSrc, width, height, xPos, yPos, scroll)
{
	fLayerPop(layerID, htmlSrc, width, height, xPos, yPos, scroll, '200');

}

function fLayerPop(layerID, htmlSrc, argwidth, argheight, xPos, yPos, scroll, z_index){
	var div1 = document.createElement("DIV");
	div1.id = layerID;
	div1.style.display = "none";
	div1.innerHTML = "<div id='"+layerID+"_divcontent'></div>";
	document.body.appendChild(div1);
	
	$('#'+layerID).width(argwidth);
	$('#'+layerID).height(argheight+25);
	$('#'+layerID+ '_divcontent').width(argwidth);
	$('#'+layerID+ '_divcontent').height(argheight+25);
	
	
	if(scroll== 'y' || scroll == 'yes' || scroll == 'YES'){
		scroll = 'scrolling="yes"';
	}else{
		scroll = 'scrolling="no"';
	}
	
	//테스트중
	$('#'+layerID).bPopup({
    	modalClose: false,
    	escClose: true,
    	opacity: 0.5,
    	iframeAttr: scroll,
        content:'iframe', //'ajax', 'iframe' or 'image'
        contentContainer:"#"+layerID+"_divcontent",
        loadUrl: htmlSrc //Uses jQuery.load()
    });
}


function fLayerPopBack(layerID, htmlSrc, width, height, xPos, yPos, scroll, z_index)
{
	var yScroll = document.all ? (!document.documentElement.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop) : (window.pageYOffset ? window.pageYOffset : window.scrollY);
	if(yScroll<width){
		yScroll = 0 ;
	}
	adjX = xPos ? xPos : (document.documentElement.scrollWidth/2 - width/2);
	adjY = yPos ? yPos : (window.screen.height /2 + (isIE?document.body.scrollTop:document.documentElement.scrollTop) - height/2 - 100)+yScroll;		
	nowY = document.all ?  (!document.documentElement.scrollTop ?  document.body.scrollTop : document.documentElement.scrollTop) : (window.pageYOffset ?  window.pageYOffset : window.scrollY);
	if(z_index == undefined){z_index = 1000;}
	if(nowY == undefined){nowY = 0;}
	nowY += (trueBody().clientHeight - height) / 2;
	
	// 배경이 되는 반투명 레이어를 생성한다.
	var div1 = document.createElement("DIV");
	div1.id = layerID;
	//div1.onclick = function () {fLayerPopClose(layerID);};
	div1.style.zIndex= z_index;
	div1.style.position = "absolute";
	div1.style.height = document.documentElement.scrollHeight+"px";
//	div1.style.width = document.documentElement.scrollWidth+ "px";
	div1.style.width = "100%";
	div1.style.top = "0";
	div1.style.left = "0";
	div1.style.background = "#000000";
	div1.style.opacity = "0.3";
	div1.style.filter = "alpha(opacity=30)";
	div1.style.display = "none";

	
	var	iframe = document.createElement('iframe');
	iframe.style.zIndex= (z_index+10);
	iframe.style.position	= "absolute";
	iframe.style.border = "3px solid #2b81d9";
	iframe.style.width		= width+"px";
	iframe.style.height		= (parseInt(height,10)+30)+"px";
	//iframe.style.top		= adjY+"px";
	iframe.style.top		=nowY+"px";
	iframe.style.left		= adjX+"px";


	
	
	// 오른쪽 경계 넘어가면 위치 조정
	var xMax = parseInt(document.body.clientWidth);
	if( (parseInt(adjX)+parseInt(iframe.style.width)) > xMax)
		iframe.style.left = xMax - parseInt(iframe.style.width) - 20;
	
	if(scroll == null || scroll.length == 0){
		scroll = "yes"
	}
	
	iframe.id				=	layerID + "_iframe";
	iframe.marginwidth		=	"0px";
	iframe.marginheight		=	"0px";
	iframe.scrolling		=	scroll;
	iframe.frameBorder		=	"0px";
	iframe.src				=	htmlSrc;
	
	
	//document.body.appendChild(iframe);
	
	document.body.appendChild(div1);
	//document.body.appendChild(iframe);
	
	document.body.insertBefore(iframe, div1);
	
	$('#'+layerID).fadeIn();
	
	
}

// Layer Popup 닫기
function fLayerPopClose(layerID)
{

	var	oNode	=	document.getElementById(layerID);
	if(oNode != null)
	{
		$('#'+layerID+ '_divcontent').empty();
		$('#'+layerID).bPopup().close();
		document.body.removeChild(oNode);
	}
}

//시간 호출
function dpTime(){
    var now = new Date();
     hours = now.getHours();
     minutes = now.getMinutes();
     seconds = now.getSeconds();

     if (hours > 12){
         hours -= 12;
     	ampm = "오후 ";
     }else{
         ampm = "오전 ";
     }
     if (hours < 10)
         hours = "0" + hours;
     
     if (minutes < 10)
         minutes = "0" + minutes;
     
     if (seconds < 10)
         seconds = "0" + seconds;
     
		document.getElementById("dpTime").innerHTML = ampm + hours + ":" + minutes + ":" + seconds;
 }

// 숫자 3자리수마다 콤마(,) 찍기
function formatComma(num, pos) {
	if (!pos) pos = 0;  //소숫점 이하 자리수
	var re = /(-?\d+)(\d{3}[,.])/;

	var strNum = stripComma(num.toString());
	var arrNum = strNum.split(".");
	if(arrNum.length > 1 && pos > 0){
		arrNum[0] += ".";
	}	
	while (re.test(arrNum[0])) {
		arrNum[0] = arrNum[0].replace(re, "$1,$2");
	}
	if (arrNum.length > 1) {
		if (arrNum[1].length > pos) {
			arrNum[1] = arrNum[1].substr(0, pos);
		}
		return arrNum.join("");
	}
	else {
		return arrNum[0].split(".")[0];
	}
}

// 콤마(,) 제거
function stripComma(str) {
    var re = /,/g;
    return str.replace(re, "");
}

/**
 * Sheet1 List 엑셀 다운로드 
 */
function sheetExcelDown(obj,Name){
	var DownCol = "";
	var ColEnd = "|";
	for(var i=0;i < 99;i++){
		var ColName = obj.ColSaveName(0, i);
		if(ColName == -1){
			i = 100;
		}else{
			if(obj.GetColHidden(ColName) == 0){
				DownCol = DownCol + ColName + ColEnd;
			}
		}
	}
	DownCol = DownCol.substring(0,DownCol.length-1);
	var params = { FileName : Name+".xls",  SheetName : Name, SheetDesign:1 , DownCols:DownCol , AutoSizeColumn : 1, Merge : 1} ;
	obj.Down2Excel(params);
}

//중복 요청을 막기 위하여 로딩바 추가 2019.08.23
function showLoadingBar() { 
	var maskHeight = $(document).height(); 
	var maskWidth = window.document.body.clientWidth; 
	
	var mask = "<div id='mask' style='position:absolute; z-index:9000; background-color:#000000; display:none; left:0; top:0;'></div>"; 
	var loadingImg = ''; 
	
	loadingImg += "<div id='loadingImg' style='position:absolute; left:50%; top:40%; display:none; z-index:10000;'>"; 
	loadingImg += " <img src='/img/com/loading.gif'/>"; 
	loadingImg += "</div>"; 
	
	$('body').append(mask).append(loadingImg); 
	
	$('#mask').css({ 
		'width' : maskWidth 
		, 'height': maskHeight 
		, 'opacity' : '0.3' 
	}); 
	
	$('#mask').show(); 
	$('#loadingImg').show(); 
}

//중복 요청을 막기 위하여 로딩바 추가 2019.08.23
function hideLoadingBar() { 
	$('#mask, #loadingImg').hide(); 
	$('#mask, #loadingImg').remove(); 
}