 /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + getByte
    Author         + Youn Kyung Kang 
    Parameter      + str
    Description    + 바이트를 체크하여 반환한다. (일반용)
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function getByte(str) {
        str = new String(str);
        var tmp = 0;
        for(var i = 0; i < str.length; i++) {
            var uniCode = str.charCodeAt(i);
            if(uniCode <= 127)
                tmp++;
            else
                tmp = tmp + 2;
        }
        return tmp;
    } 
    
   /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + isOverByte
    Author         + Youn Kyung Kang 
    Parameter      + obj, maxbyte
    Description    + byte 를 체크하여 maxbyte 보다 큰 경우 true 를 반환한다.
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function isOverByte(obj, maxbyte) {
        if(getByte(obj.value) > maxbyte)
            return true;
        return false;
    }
      
  /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + getFormatDate1
    Author         + Youn Kyung Kang 
    Parameter      + obj (예 : 20080101)
    Description    + 유효날짜를 반환한다. (예 : 2008-01-01)
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function getFormatDate1(obj) {
        var strDate = new Date();
        var strYear;
        var strMonth;
        var strDay;
        if(obj.value.length == 8) {
            strYear = (obj.value).substr(0, 4) + "-";
            strMonth = (obj.value).substr(4, 2) + "-";
            strDay = (obj.value).substr(6, 2)
            obj.value = strYear + strMonth + strDay;
        }
        else {
            obj.value = strDate.getYear() + "-" + strDate.getMonth() + "-" + strDate.getDay();
        }
    }

    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + getFormatDate2
    Author         + Youn Kyung Kang 
    Parameter      + obj (예 : 2008-01-01)
    Description    + 유효날짜를 반환한다. (예 : 20080101)
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function getFormatDate2(obj) {
        obj.value = getRemoveHyphen(obj.value);
    }
    
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + isNullMsg
    Author         + Youn Kyung Kang 
    Parameter      + obj, msg
    Description    + 공백을 체크하여 공백인 경우 메시지를 출력한다.
                     true 를 반환한다.
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function isNullMsg(obj, msg) {
        if(getTrim(obj.value) == "") {
            alert(msg + Js_utillmanager_001); ////입력하세요.
            obj.focus();
            return true;
        }
        return false;
    }
    
      /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + isNotSelectedMsg
    Author         + Youn Kyung Kang 
    Parameter      + obj, msg
    Description    + 셀렉트 박스의 첫번째가 선택된 경우 메시지를 출력한다.
                     true 를 반환한다.
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function isNotSelectedMsg(obj, msg) {
        if(obj.selectedIndex == 0) {
            alert(msg + Js_utillmanager_002); ////선택하세요.
            obj.focus();
            return true;
        }
        return false;
    }

    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + isNotChecked
    Author         + Youn Kyung Kang 
    Parameter      + obj
    Description    + 체크 박스나 라디오 버튼이 선택되지 않았을 경우 true 를 반환한다.
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function isNotChecked(obj) {
        var tmp = 0;
        if(obj.length > 1) {
            for(var i = 0; i < obj.length; i++) {
                if(obj[i].checked)
                    tmp++;
            }
            if(tmp == 0)
                return true;
        }
        else {
            if(!obj.checked)
                return true;
        }
        return false;
    }
    
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + isNotCheckedMsg
    Author         + Youn Kyung Kang 
    Parameter      + obj, msg
    Description    + 체크 박스나 라디오 버튼이 선택되지 않았을 경우 메시지를 출력한다.
                     true 를 반환한다.
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function isNotCheckedMsg(obj, msg) {
        var tmp = 0;
        if(obj.length > 1) {
            for(var i = 0; i < obj.length; i++) {
                if(obj[i].checked)
                    tmp++;
            }
            if(tmp == 0) {
                alert(msg + Js_utillmanager_002); ////선택하세요.
                obj[0].focus();
                return true;
            }
        }
        else {
            if(!obj.checked) {
                alert(msg + Js_utillmanager_002); ////선택하세요.
                obj.focus();
                return true;
            }
        }
        return false;
    }
    
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + isNotNumeral
    Author         + Youn Kyung Kang 
    Parameter      + obj
    Description    + 숫자인지 체크하여 숫자가 아닌 경우 true 를 반환한다.
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function isNotNumeral(obj) {
        for(var i = 0; i < obj.value.length; i++) {
            var uniCode = obj.value.charCodeAt(i);
            if(!(uniCode >= 48 && uniCode <= 57))
                return true;
        }
        return false;
    }
  
  	 /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + isNotNumeralMsg
    Author         + Youn Kyung Kang 
    Parameter      + obj, msg
    Description    + 숫자인지 체크하여 숫자가 아닌 경우 메시지를 출력한다.
                     true 를 반환한다
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function isNotNumeralMsg(obj) { 
		
        for(var i = 0; i < obj.value.length; i++) {
            var uniCode = obj.value.charCodeAt(i);			
            if(!(uniCode >= 48 && uniCode <= 57)) {
                alert(Js_utillmanager_003); ////숫자만 입력하세요.
                obj.value="";
                obj.focus();
                return true;
            }
        }
        return false;
    }
    
	function isComma(obj) { 
		if(obj.value == "") return; 
		var str = obj.value.replace(/,/g,"");
		//var length = str.length;
        var str1 = "";
		var str2 = new Array();
		var returnValue = new Array();
		var before = 0;
		var after = 0;
		var len=0;
		var fileName = "";
		returnValue = str.split(".");		
		
		if(returnValue.length > 1){		
			if(obj.name == "TOT_GRS_WT" || obj.name == "GRS_WT"){
				if(returnValue[1].length > 3){
					alert(Js_utillmanager_013); ////소수점이하 3자리까지만 가능합니다.
					obj.value="";
					obj.focus();
					return true;
				}	
			}else if(obj.name == "PKG_QTY" || obj.name == "TOT_PKG_QTY"){
				 if(!(uniCode >= 48 && uniCode <= 57) && uniCode != 45 && uniCode != 0) {
					alert(Js_utillmanager_003); ////숫자만 입력하세요.
					obj.value="";
					obj.focus();
					return true;
				}
			}else if(returnValue[1].length > 4){
				alert(Js_utillmanager_004); ////소수점이하 4자리까지만 가능합니다.
				 obj.value="";
				 obj.focus();
				 return true;
			}

		}						
							
		if(obj.name == "TOT_GRS_CBM"){
			if(returnValue[0].length > 4){
				alert("정수는 4자리까지 입력가능합니다."); ////정수는 4자리까지 입력가능합니다.
				obj.value="";
				obj.focus();
				return true;
			}	
		}

		var length = returnValue[0].length;
		if(length > 10){
			alert(Js_utillmanager_015); ////정수는 10자리까지 입력가능합니다.
			obj.value="";
			obj.focus();
			return;
		}
		str = returnValue[0];
		 for(var i = 0; i < str.length; i++) {
            var uniCode = str.charCodeAt(i);			
			
            if(!(uniCode >= 48 && uniCode <= 57) && uniCode != 44 && uniCode != 0 && uniCode != 45) {
                alert(Js_utillmanager_003); ////숫자만 입력하세요.
                obj.value="";
                obj.focus();
                return true;
            }
        }

		if(length > 3){
			if(length%3 == 0){
				str1 = str.substring(0,3);
			}else{
				str1 = str.substring(0,length%3);
			}
			var count = str1.length;
			for(var i=0; i<Math.floor(length/3); i++){				
				str2[i] = str.substring(count,count+3);
				count = count+3;
				if(str2[i] != null && str2[i] != ""){
					str1 = str1+","+str2[i];	
				}
			}									
		}else{
			str1 = str;
		}
		if(returnValue.length > 1){
			obj.value= str1+"."+returnValue[1];
		}else{
			obj.value= str1;
		}
		obj.onChange = fnSumValue(obj.name);
        return false;
    }
	
	function isComma1(obj) { 
		var str = obj.value.replace(/,/g,"");
		//var length = str.length;
        var str1 = "";
		var str2 = new Array();
		var returnValue = new Array();
		var before = 0;
		var after = 0;
		var len=0;
		var fileName = "";
		
		if(obj.value == null || obj.value.replace(/ /,"") == "") return false;
		
		returnValue = str.split(".");			
		if(returnValue.length > 1){		
			
			if(returnValue[1].length > 3){
				alert(Js_utillmanager_013); ////소수점이하 3자리까지만 가능합니다.
				obj.value="";
				obj.focus();
				return true;
			}
		}						
	
		var length = returnValue[0].length;
		if(length > 10){
			alert(Js_utillmanager_016); ////소수점 포함 10자리까지 입력가능합니다.
			obj.value="";
			obj.focus();
			return;
		}
			  str = returnValue[0];
		 for(var i = 0; i < str.length; i++) {
            var uniCode = str.charCodeAt(i);			
			
            if(!(uniCode >= 48 && uniCode <= 57) && uniCode != 44 && uniCode != 0 && uniCode != 45) {
                alert(Js_utillmanager_003); ////숫자만 입력하세요.
                obj.value="";
                obj.focus();
                return true;
            }
        }

		if(length > 3){
			if(length%3 == 0){
				str1 = str.substring(0,3);
			}else{
				str1 = str.substring(0,length%3);
			}
			var count = str1.length;
			for(var i=0; i<Math.floor(length/3); i++){				
				str2[i] = str.substring(count,count+3);
				count = count+3;
				if(str2[i] != null && str2[i] != ""){
					str1 = str1+","+str2[i];	
				}
			}									
		}else{
			str1 = str;
		}
		if(returnValue.length > 1){
			obj.value= str1+"."+returnValue[1];
		}else{
			obj.value= str1;
		}
		//obj.onChange = fnSumValue(obj.name);
        return false;
    }
	
	function isCommaTmp(obj) { 
		var str = obj.value.replace(/,/g,"");
		//var length = str.length;
        var str1 = "";
		var str2 = new Array();
		var returnValue = new Array();
		var before = 0;
		var after = 0;
		var len=0;
		var fileName = "";
		
		 for(var i = 0; i < str.length; i++) {
            var uniCode = str.charCodeAt(i);						
            if(!(uniCode >= 48 && uniCode <= 57) && uniCode != 44 && uniCode != 0 && uniCode != 45) {
                alert(Js_utillmanager_003); ////숫자만 입력하세요.
                obj.value="";
                obj.focus();
                return true;
            }
        }
    }
    
    //SR(67866) 2011.11.02  jjh add
    function isTelValidation(obj) { 	
		var str = obj.value.replace(/,/g,"");
		if(str != ""){
			var strcheck = str.substring(0,1); 		
            if(strcheck != "0") {
                alert("지역번호,FAX번호,휴대폰번호는 0으로 시작합니다."); //숫자만 입력하세요.
                obj.value="";
                obj.focus();
                return true; 
            }  	
        }else{
          return true; 
        }
    }
    
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + isNotAlphabetMsg
    Author         + Youn Kyung Kang
    Parameter      + obj, msg
    Description    + 알파벳인지 체크하여 알파멧이 아닌 경우 메시지를 출력한다.
                     true 를 반환한다.
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function isNotAlphabetMsg(obj, msg) {
        for(var i = 0; i < obj.value.length; i++) {
            var uniCode = obj.value.charCodeAt(i);
            if(!((uniCode >= 65 && uniCode <= 90) || (uniCode >= 97 && uniCode <= 122))) {
                alert(msg + Js_utillmanager_005); ////알파벳만 입력하세요.
                obj.focus();
                return true;
            }
        }
        return false;
    }

    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + isNotNumeralOrAlphabet
    Author         + Youn Kyung Kang
    Parameter      + obj
    Description    + 알파벳과 숫자인지 체크하여 알파벳과 숫자가 아닌 경우 true 를 반환한다.
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function isNotNumeralOrAlphabet(obj) {
        for(var i = 0; i < obj.value.length; i++) {
            var uniCode = obj.value.charCodeAt(i);
            if(!((uniCode >= 48 && uniCode <= 57) || (uniCode >= 65 && uniCode <= 90) || (uniCode >= 97 && uniCode <= 122)))
                return true;
        }
        return false;
    }

    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + isNotNumeralOrAlphabetMsg
    Author         + Youn Kyung Kang
    Parameter      + obj, msg
    Description    + 알파벳과 숫자인지 체크하여 알파벳과 숫자가 아닌 경우 메시지를 출력한다.
                     true 를 반환한다.
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function isNotNumeralOrAlphabetMsg(obj, msg) {
        for(var i = 0; i < obj.value.length; i++) {
            var uniCode = obj.value.charCodeAt(i);
            if(!((uniCode >= 48 && uniCode <= 57) || (uniCode >= 65 && uniCode <= 90) || (uniCode >= 97 && uniCode <= 122))) {
                alert(msg + Js_utillmanager_006); ////알파벳과 숫자만 입력하세요.
                obj.focus();
                return true;
            }
        }
        return false;
    }
    
     /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + checkNumeralInputLengthMsg
    Author         + Youn Kyung Kang
    Parameter      + obj, msg, maxlen
    Description    + 유효자리수의 숫자인지 체크하여 그렇지 않은 경우 메시지를 출력한다.
                     true 를 반환한다
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function checkNumeralInputLengthMsg(obj, msg, maxlen) {
        if(isNotNumeral(obj)) {
            alert(msg + Js_utillmanager_007); ////숫자로 입력하세요.
            obj.focus();
            return true;
        }
        if(obj.value.length != maxlen) {
            alert(msg + " " + maxlen + Js_utillmanager_008); ////자리로 입력하세요.
            obj.focus();
            return true;
        }
        return false;
    }

    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + checkNumeralInputNoMsg
    Author         + Youn Kyung Kang
    Parameter      + obj, msg, maxno
    Description    + 유효 숫자인지 체크하여 그렇지 않은 경우 메시지를 출력한다.
                     true 를 반환한다
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function checkNumeralInputNoMsg(obj, msg, maxno) {
        if(isNotNumeral(obj.value)) {
            alert(msg + Js_utillmanager_007); ////숫자로 입력하세요.
            obj.focus();
            return true;
        }
        if(obj.value > maxno) {
            alert(msg + " " + maxno + Js_utillmanager_009); ////이하의 숫자로 입력하세요.
            obj.focus();
            return true;
        }
        return false;
    }
    
    function CheckStrLength(obj,maxLen)
	{
		var temp; 
		var f = "";  
		var msglen = 256; //최대 길이
		var tmpstr = "";
		var enter = 1;
		var strlen = 0;
		var max_cnt = maxLen; 
		var tn=obj;
		var borderH=(tn.offsetHeight-tn.clientHeight)/2;
		var lineC=(tn.scrollHeight-borderH)/((tn.clientHeight-borderH)/tn.rows);	 

		f = obj.value.length; 
		 
		// 초기 최대길이를 텍스트 박스에 뿌려준다.
		if(f != 0){
			  for(k=0;k<f;k++)
			  {
			   		temp = obj.value.charAt(k); 
				   	if(temp == '\n')
				   	{
				    	enter++;
				   	}  
				   	if(escape(temp).length > 4)
				    	msglen -= 2;
				   	else
				    	msglen--; 
				 
					if(enter > max_cnt){ 
					   	alert(maxLen+Js_utillmanager_010) ////줄 까지 이벽 가능합니다.
						enter = 0;
						strlen = tmpstr.length - 1;  
						obj.value = tmpstr.substring(0,strlen);
						break;
					}
					else{
					 	tmpstr += temp;
					} 
			  }
		}
	}
	
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + changeDayOfMonth
    Author         + Youn Kyung Kang
    Parameter      + objFrm
    Description    + 년, 월에 따른 일을 리턴한다
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function getDayOfMonth(objFrm) {
        var arraymonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
        var year = objFrm.common_year.options[objFrm.common_year.selectedIndex].value;
        var month = objFrm.common_month.options[objFrm.common_month.selectedIndex].value; 

        if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
            arraymonth[1] = "29";

        return arraymonth[month - 1]; 
    }

    function changeDayOfMonth(objFrm) {
        for(i = objFrm.common_day.length; i >- 1; i--)
            objFrm.common_day.options[i] = null; 

        for(i = 1; i <= getDayOfMonth(objFrm); i++) {
            value = i; 
            text = i; 
            optionDay = new Option(value, text);
            objFrm.common_day.options[objFrm.common_day.length] = optionDay;
        } 
        objFrm.common_day.selectedIndex = 0; 
    }
    
     /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + doWindowOpen
    Author         + Youn Kyung Kang
    Parameter      + windowUrl, windowName, intWidth, intHeight, intTop, intLeft, windowProp
    Description    + Window 를 원하는 위치에 띄운다
                     doWindowOpen("windowOpen.htm", "windowOpen", 800, 600, 0, 0, "toolbar=0,menubar=0,resizable=no,scrollbars=no");
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function doWindowOpen(windowUrl, windowName, intWidth, intHeight, intTop, intLeft, windowProp) {
        return window.open(windowUrl, windowName, "width="+intWidth+",height="+intHeight+",top="+intTop+",left="+intLeft+","+windowProp);
    }
    
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + emailCheck
    Author         + Youn Kyung Kang
    Parameter      + emailStr
    Description    + Email check
        소스 출처: http://javascript.internet.com/forms/email-address-validation.html               
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    function emailCheck(emailStr) {
		var checkTLD = 1;
		var knownDomsPat = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
		var emailPat = /^(.+)@(.+)$/;
		var specialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
		var validChars = "\[^\\s" + specialChars + "\]";
		var quotedUser = "(\"[^\"]*\")";
		var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
		var atom = validChars + '+';
		var word = "(" + atom + "|" + quotedUser + ")";
		var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
		var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$");
		var matchArray = emailStr.match(emailPat);		
		var str = new Array();
		
		if(emailStr.indexOf(";")>= 0){
			str = emailStr.split(";");
			for(var i=0; i<str.length; i++){
				matchArray = str[i].match(emailPat);
				if (matchArray == null) {
					return false;
				}
				var user = matchArray[1];
				var domain = matchArray[2];
			
				for (i = 0; i < user.length; i++) {
					if (user.charCodeAt(i) > 127) {
						return false;
					}
				}
			
				for (i = 0; i < domain.length; i++) {
					if (domain.charCodeAt(i) > 127) {
						return false;
					}
				}
			
				if (user.match(userPat) == null) {
					return false;
				}
			
				var IPArray = domain.match(ipDomainPat);
				if (IPArray != null) {
					for (var i = 1; i <= 4; i++) {
						if (IPArray[i] > 255) {
							return false;
						}
					}
			
					return true;
				}
			
				var atomPat = new RegExp("^" + atom + "$");
				var domArr = domain.split(".");
				var len = domArr.length;
				for (i = 0; i < len; i++) {
					if (domArr[i].search(atomPat) == -1) {
						return false;
					}
				}
			
				if (checkTLD && domArr[domArr.length - 1].length != 2 &&
					domArr[domArr.length - 1].search(knownDomsPat) == -1) {
			
					return false;
				}
			
				if (len < 2) {
					return false;
				}
			
				return true;
			}
		}else{
			if (matchArray == null) {
				return false;
			}
		
			var user = matchArray[1];
			var domain = matchArray[2];
		
			for (i = 0; i < user.length; i++) {
				if (user.charCodeAt(i) > 127) {
					return false;
				}
			}
		
			for (i = 0; i < domain.length; i++) {
				if (domain.charCodeAt(i) > 127) {
					return false;
				}
			}
		
			if (user.match(userPat) == null) {
				return false;
			}
		
			var IPArray = domain.match(ipDomainPat);
			if (IPArray != null) {
				for (var i = 1; i <= 4; i++) {
					if (IPArray[i] > 255) {
						return false;
					}
				}
		
				return true;
			}
		
			var atomPat = new RegExp("^" + atom + "$");
			var domArr = domain.split(".");
			var len = domArr.length;
			for (i = 0; i < len; i++) {
				if (domArr[i].search(atomPat) == -1) {
					return false;
				}
			}
		
			if (checkTLD && domArr[domArr.length - 1].length != 2 &&
				domArr[domArr.length - 1].search(knownDomsPat) == -1) {
		
				return false;
			}
		
			if (len < 2) {
				return false;
			}
		
			return true;
		}
	}
	
	/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + chkAllSelect
    Author         + Youn Kyung Kang
    Parameter      + form
    Description    + 체크박스에 모두 체크
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
	function chkAllSelect(form){  
	 if(  form.checkFlag.checked == true )  {
	    if( document.all['check'] == '[object]'){
	        for ( var i = 0 ; i < form.check.length ; i++ ){
	            form.check[i].checked = true;}
	         form.check.checked = true;
	        return false;
	    }else{
	        alert(Js_utillmanager_011); ////리스트를 선택하세요.
	        return false;
	    }
	  }else if( form.checkFlag.checked == false ) {
	  	if( document.all['check'] == '[object]'){
	        for ( var i = 0 ; i < form.check.length ; i++ ){
	            form.check[i].checked = false;}
	         form.check.checked = false;   
	        return false;
	    }else{
	        alert(Js_utillmanager_011); ////리스트를 선택하세요.
	        return false;
	    }
	  }
	  
	}

	/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + chkAllUnSelect
    Author         + Youn Kyung Kang
    Parameter      + form
    Description    + 체크박스선택 모두 해제
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
	function chkAllUnSelect(form){
	    if( document.all['check'] == '[object]'){
	        for ( var i = 0 ; i < form.check.length ; i++ )
	            form.check[i].checked = false;
	        return false;
	    }else{
	        alert(Js_utillmanager_011); ////리스트를 선택하세요.
	        return false;
	    }
	}
	
	/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + chkRevSelect
    Author         + Youn Kyung Kang
    Parameter      + form
    Description    + 체크박스 선택반전
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
	function chkRevSelect(form){   
	    var value;
	    if( document.all['check'] == '[object]'){
	        for ( var i = 0 ; i < form.check.length ; i++ ){
	            var select_mode = form.check[i].checked;
	            if ( select_mode == 0 ){
	                value = true;
	                select_mode = 1;
	            }else{
	                value = false;
	                select_mode = 0;
	            }
	            form.check[i].checked = value;
	        }
	        return false;
	    }else{
	        alert(Js_utillmanager_011); ////리스트를 선택하세요.
	        return false;
	    }
	}
	
	/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + getBetweenDays
    Author         + Youn Kyung Kang
    Parameter      + startYear,startMonth,startDay,endYear,endMonth,endDay
    Description    + 날짜 간격 구하기 
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
	function getBetweenDays(startYear,startMonth,startDay,endYear,endMonth,endDay){
		var chk1 = new Date(startYear,startMonth,startDay);
    	var chk2 = new Date(endYear,endMonth,endDay);
		days = Math.floor((chk2.getTime() - chk1.getTime()) / (60*60*24*1000));
    	
    	return days;
		
	}
	
	/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + fnConvertNull
    Author         + Youn Kyung Kang
    Parameter      + str
    Description    + null을 공백으로 바꾸기 
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
	function fnConvertNull(str){
		if(str == "null" || str =="NULL"){str = "";}
		return str;
	}
   
	/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + getDayInterval,toTimeObject
    Author         + sunghoia
    Parameter      + fromDate, toDate
    Description    + fromDate와 toDate의 날짜 간격 구하기
    example.
       	
       	if((getDayInterval(fromDate,to_dt)>30)||(to_dt-fromDate<0)){
				alert('조회기간은 최대 30일간 가능합니다.');
				return;
		}
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
	function getDayInterval(time1,time2){
		var date1 = toTimeObject(time1);
		var date2 = toTimeObject(time2);
		var day = 1000 * 3600 * 24;
		return parseInt((date2-date1)/day,10);
	}
	function toTimeObject(time){
		var year = time.substr(0,4);
		var month = time.substr(4,2);
		var day = time.substr(6,2);
		return new Date(year,month,day);
	}
	/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + fnScheduleModalDialog
    Author         + Youn Kyung Kang
    Input Parameter      + type,key1,key2,key3,key4
    			     	*  type :  List에서 A, pol/pod로 조회할경우 B(부킹 수정할때)
    			     	*  key1 :  type이 A일경우 year, type이 B일경우 startPlcCd(출발 지역 코드)
    			     	*  key2 :  type이 A일경우 month, type이 B일경우 destPlcCd (도착 지역 코드 )
    			     	*  key3 :  type이 B일경우  startCstCode (출발 국가  코드)
    			     	*  key4 :  type이 B일경우  destCstCode (도착 국가  코드 )
    			     	*  result = fnScheduleModalDialog('A','2008','03');
    			     	*  result = fnScheduleModalDialog('B','PUS','AXT','KR','JP');
	Output Parameter      + result : 구분자 ';'로 연결해서 String으로 리턴 
				     	*  type A : VSL_CD;VOY_NO 
				     	*  type B : 
				     	*          선명 코드(VSL_CD);항차코드(VOY_CD);선박명(화면);선적항,인수지명(화면);양하항,목적지명(화면);
				     	* 		   최초 출항 일자(화면);최초 출항 시간(화면);마지막 입항 일자(화면);마지막 입항 시간(화면);
				     	* 		   선적항 포트 코드(POL_PORT_CD,POR_PLC_CD);양하항 포트 코드(POD_PORT_CD,DLY_PLC_CD);
				     	* 		   출발국가코드(POL_CTR_CD,POR_CTR_CD);도착국가코드(POD_CTR_CD,DLY_CTR_CD);
				     	* 		   서류마감(화면);반입마감(화면);EDI신고 마감(화면);
				     	*          pol터미널코드(POL_TRML_CD,DLY_CY_CD);pod터미널코드(POD_TRML_CD);
				     	* 		   MRN(화면);CALLSIANG(화면)
				     	*        
				     	*          
    Description    + 스케줄 조회 공통 팝업창 
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    
		
    function fnScheduleModalDialog(type,key1,key2,key3,key4){ 
    	var strURL = "/VOSD100/popSearchScheduleResult.do?type="+type+"&key1="+key1+"&key2="+key2+"&key3="+key3+"&key4="+key4; 
     	var strPos = "dialogTop:10px;dialogLeft:10px;dialogWidth:800px;dialogHeight:600px;scrollbars:yes;menubar=no,status=no";
  		var result = new Array(); 
		result = window.showModalDialog(strURL,'',strPos);  
		
    	return result;
 
    }
    
     function fnScheduleModalDialog_bkg(type,key1,key2,key3,key4,date){ 			
    	var strURL = "/VOSD100/popSearchScheduleResult_bkg.do?type="+type+"&key1="+key1+"&key2="+key2+"&key3="+key3+"&key4="+key4+"&pickupDate="+date; 
     	var strPos = "dialogTop:10px;dialogLeft:10px;dialogWidth:800px;dialogHeight:600px;scrollbars:yes;menubar=no,status=no";
  		var result = new Array(); 
		result = window.showModalDialog(strURL,'',strPos);  
		
    	return result;
 
    }
    
    
    function CheckboxToHidden(f,ele) {
    var ele_h;
    var val;
    
    if (typeof(ele.length) != "undefined") {// checkbox가 배열일경우
        for (var i = 0; i < ele.length; i++) {
            // hidden객체생성, 이름은 checkbox와 같게한다.
            ele_h = document.createElement("input");
            ele_h.setAttribute("type","hidden");
            ele_h.setAttribute("name",ele[i].name);
            ele[i].checked ? val = ele[i].value : val = "";
            ele_h.setAttribute("value",val);
            f.appendChild(ele_h);
    
            // 기존 checkbox의 이름을 이름_dummy로 변경한후 checked = false해준다.
            ele[i].checked = false;
            ele[i].setAttribute("name",ele[i].name + "_dummy");
        }
    } else {// checkbox가 한개
            ele_h = document.createElement("input");
            ele_h.setAttribute("type","hidden");
            ele_h.setAttribute("name",ele.name);
            ele.checked ? val = ele.value : val = "";
            ele_h.setAttribute("value",val);
            f.appendChild(ele_h);
    
            ele.checked = false;
            ele.setAttribute("name",ele.name + "_dummy");   
    }
 
    }
    
	/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Function       + setCookie,deleteCookie,getCookie
    Author         + sunghoia
    Parameter      + cookieName 쿠키명,cookieValue 쿠키값,expireDay 쿠키 유효날짜
    Description    + 쿠키 설정
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/    
	function setCookie( cookieName, cookieValue, expireDate ) {
		var today = new Date();
		today.setDate( today.getDate() + parseInt( expireDate ) );
		document.cookie = cookieName + "=" + escape( cookieValue ) + "; path=/; expires=" + today.toGMTString() + ";";
	}
	
	/**
	* 쿠키 삭제
	* @param cookieName 삭제할 쿠키명
	*/
	function deleteCookie( cookieName ) {
		var expireDate = new Date();
	
		//어제 날짜를 쿠키 소멸 날짜로 설정한다.
		expireDate.setDate( expireDate.getDate() - 1 );
		document.cookie = cookieName + "= " + "; expires=" + expireDate.toGMTString() + "; path=/";
	}
	
	function getCookie( cookieName ) {

		var search = cookieName + "=";
		var cookie = document.cookie;
	
		// 현재 쿠키가 존재할 경우
		if( cookie.length > 0 )	{
		// 해당 쿠키명이 존재하는지 검색한 후 존재하면 위치를 리턴.
		startIndex = cookie.indexOf( cookieName );
	
			// 만약 존재한다면
			if( startIndex != -1 ) {
				// 값을 얻어내기 위해 시작 인덱스 조절
				startIndex += cookieName.length;
	
				// 값을 얻어내기 위해 종료 인덱스 추출
				endIndex = cookie.indexOf( ";", startIndex );
	
				// 만약 종료 인덱스를 못찾게 되면 쿠키 전체길이로 설정
				if( endIndex == -1) endIndex = cookie.length;
	
				// 쿠키값을 추출하여 리턴
				return unescape( cookie.substring( startIndex + 1, endIndex ) );
			} else {
				// 쿠키 내에 해당 쿠키가 존재하지 않을 경우
				return false;
			}
		} else {
			// 쿠키 자체가 없을 경우
			return false;
		}
	}

	
	/**
	* 공백 없애기
	* Author     : sunghoia.
	* Description: 화주들이 데이터를 조회할 때에 습관적으로 kmtc를 앞에 입력하고 데이터를 조회하는 것에 대한 대책으로,
	*              kmtc가 입력이 되면 자동으로 kmtc 문자열을 substring으로 빼고 서블릿으로 데이터를 request 하며.
	*              공백을 없애기 위함이다.
	* Example: document.form.text.value = document.form.text.value.trim();
	*/
	String.prototype.trim = function() {
		var tmpStr=this;
		if(tmpStr.substring(0,4).toUpperCase().indexOf('KMTC') > -1){
			tmpStr = tmpStr.substring(4,tmpStr.length);
		}
		
	    return tmpStr.replace(/(^ *)|( *$)/g, "");
	}
	String.prototype.ltrim = function() {
	    return this.replace(/(^ *)/g, "");
	}
	String.prototype.rtrim = function() {
	    return this.replace(/( *$)/g, "");
	}

	/**
	** 글자수 제한 스크립트
	**/
	function setMaxlength(obj,maxlength){
		if((event.keyCode == 229) || ((event.keyCode > 47) && (event.keyCode < 100))){
			if(obj>maxlength){
				event.returnValue = false;
				alert(maxlength + Js_utillmanager_012); ////글자 미만으로 입력하세요.
			}
		}	
	}

	function setMaxlength1(obj,maxlength){
		var cnt = 0;
		var returnValue = "";
		for(i=0; i<obj.value.length; i++) {
			if(obj.value.charCodeAt(i)>=0 && obj.value.charCodeAt(i)<=127) {				
				returnValue += obj.value.charAt(i); 
			} else {
				// not ascii				
				//break;
				cnt++;
			}
			if(cnt!=0) {
				//alert('한글이나 특수문자가 포함되어 있어요.'); 
				//return;
			}
		} 
		if(cnt > 0){
			alert(Js_utillmanager_017); ////영어로 입력하세요.
			obj.value = returnValue;
			obj.focus();
		}				
	}

	var PrintPage;

	function fnPrint (Obj) {  
		var W = Obj.offsetWidth;        
		var H = Obj.offsetHeight;       
		var X = window.screen.width/2-Obj.offsetWidth/2;
		var Y = window.screen.height/2-Obj.offsetHeight/2;
		var features = "menubar=no,toolbar=no,location=no,directories=no,status=yes,scrollbars=yes,resizable=yes,width=" + W-40 + ",height=" + H-40 + ",left="+X+",top="+Y; 

		var objArray = Obj.id.split("_")[1];
		
		var htmlPrint = "";
		
		if(objArray != null){
		
			// 2011.08.24  kwhong add  SR.58754 부킹 Print시 상태 표시하기
			var bkg_sts_nm = "Booking Status : ";
			var bkg_sts_cd = document.getElementById("vsrBkg_sts_cd").value;
			
			if ( bkg_sts_cd == '01' || bkg_sts_cd == '04' ) {
				bkg_sts_nm += Js_utillmanager_018;
			} else if ( bkg_sts_cd == '00' || bkg_sts_cd == '02' || bkg_sts_cd == '05' ) {
				bkg_sts_nm += Js_utillmanager_019;
			} else if ( bkg_sts_cd == '03' ) {
				bkg_sts_nm += Js_utillmanager_020;
			} else {
				bkg_sts_nm = "Code [" + document.getElementById("vsrBkg_sts_cd").value + "]";
			}
		
			htmlPrint +='<br><br>';
			htmlPrint +='<table border=0 cellpadding=0 cellspacing=0 width=700>';
			htmlPrint +='<tr>';
			htmlPrint +='    <td align="center" style="font-family:Courier New" colspan="2"><font size="4" ><Strong>Booking Detail</Strong></font></td></tr>';
			htmlPrint +='<tr><td height="50" colspan="2"></td></tr>';
			htmlPrint +='<tr><td align="left"  style="font-family:Courier New"><font size="3" ><Strong>Booking No.</Strong>'+document.getElementById("bookingNo").value+'</font></td>';
			htmlPrint +='    <td align="right" style="font-family:Courier New"><font size="3" >'+bkg_sts_nm+'</font></td></tr>';
			htmlPrint +='</tr>';
			htmlPrint +='</table>';		
		}
		PrintPage = window.open('',Obj.id,features); 
		
		PrintPage.document.open(); 
		
		PrintPage.document.write("<html>");
		PrintPage.document.write("<head>");
		//PrintPage.document.write("<title></title>");
		PrintPage.document.write("<link rel='stylesheet' type='text/css' href='/css/css_common.css'>"+ "\n");
		PrintPage.document.write('<link rel="stylesheet" type="text/css" href="/css/css_admin.css">'+ "\n");
		PrintPage.document.write('<link rel="stylesheet" type="text/css" href="/css/css_info.css">'+ "\n");
		PrintPage.document.write('<link rel="stylesheet" type="text/css" href="/css/css_intro.css">'+ "\n");
		PrintPage.document.write('<link rel="stylesheet" type="text/css" href="/css/css_route.css">'+ "\n");
		PrintPage.document.write('<link rel="stylesheet" type="text/css" href="/css/css_support.css">'+ "\n");		
		PrintPage.document.write('<link rel="stylesheet" type="text/css" href="/css/css_font_kor.css">'+ "\n");				
		PrintPage.document.write("</head>");
		PrintPage.document.write("<body style='background:#FFFFFF;'>");								
		PrintPage.document.write(htmlPrint);		
		PrintPage.document.write(Obj.innerHTML);	
		PrintPage.document.write("\n</body>");	
		PrintPage.document.write("</html>"); 
		PrintPage.document.close(); 
		PrintPage.document.title = document.domain; 		
		//PrintPage.document.execCommand('Print');
		PrintPage.print(PrintPage.location.reload()); 		
		//PrintPage.onbeforeprint = hideDivs;
		//PrintPage.onafterprint = showDivs;
		
	}
//	dhtml += '<select name="CGO_TYP_CD" style="width:50px;" onChange="javascript:fnChangeDGType(this,'+cotnCount+');" id="CGO_TYP_CD_'+cotnCount+'">';
	function fnPrintInvoice (Obj) {  

	    var W = 700;        
		var H = 600;     
		var X = window.screen.width/2-Obj.offsetWidth/2;
		var Y = window.screen.height/2-Obj.offsetHeight/2;
		var features = "menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,width=" + W + ",height=" + H + ",left="+X+",top="+(Y-20); 

		var objArray = Obj.id.split("_")[1];
		
		var htmlPrint = "";
		
		if(objArray != null){
			htmlPrint +='<br>';
	        htmlPrint +='<h1>  외상매출금명세서 </h1>';	
			htmlPrint +='<br>';
		}
		PrintPage = window.open('',Obj.id,features); 
		
		PrintPage.document.open(); 
		
		PrintPage.document.write("<html>");
		PrintPage.document.write("<head>");
		//PrintPage.document.write("<title></title>");
		PrintPage.document.write("<link rel='stylesheet' type='text/css' href='/css/css_common.css'>"+ "\n");
		PrintPage.document.write('<link rel="stylesheet" type="text/css" href="/css/css_admin.css">'+ "\n");
		PrintPage.document.write('<link rel="stylesheet" type="text/css" href="/css/css_info.css">'+ "\n");
		PrintPage.document.write('<link rel="stylesheet" type="text/css" href="/css/css_intro.css">'+ "\n");
		PrintPage.document.write('<link rel="stylesheet" type="text/css" href="/css/css_route.css">'+ "\n");
		PrintPage.document.write('<link rel="stylesheet" type="text/css" href="/css/css_support.css">'+ "\n");		
		PrintPage.document.write('<link rel="stylesheet" type="text/css" href="/css/css_font_kor.css">'+ "\n");				
		PrintPage.document.write("</head>");
		PrintPage.document.write("<body style='background:#FFFFFF;'>");								
		PrintPage.document.write(htmlPrint);		
		PrintPage.document.write(Obj.innerHTML);	
		PrintPage.document.write("\n</body>");	
		PrintPage.document.write("</html>"); 
		PrintPage.document.close(); 
		PrintPage.document.title = document.domain; 		
		//PrintPage.document.execCommand('Print');
		PrintPage.print(PrintPage.location.reload()); 		
		//PrintPage.onbeforeprint = hideDivs;
		//PrintPage.onafterprint = showDivs;
		
	}

	//년월 입력시 마지막 일자
	function  getEndOfMonthDay( yy, mm )
	{
		var max_days=0;
		if(mm == 1)
		{
			max_days = 31 ;
		}
		else if(mm == 2)
		{
			if ((( yy % 4 == 0) && (yy % 100 != 0)) || (yy % 400 == 0))  max_days = 29;
			else                                                         max_days = 28;
		}
		else if (mm == 3)   max_days = 31;
		else if (mm == 4)   max_days = 30;
		else if (mm == 5)   max_days = 31;
		else if (mm == 6)   max_days = 30;
		else if (mm == 7)   max_days = 31;
		else if (mm == 8)   max_days = 31;
		else if (mm == 9)   max_days = 30;
		else if (mm == 10)  max_days = 31;
		else if (mm == 11)  max_days = 30;
		else if (mm == 12)  max_days = 31;
		else                return '';

		return max_days;
	}

	//*********************************************************************
	//날짜 유효성 검증하는 함수
	//parameter : value,length

	function isValidDate(value, maxLength)
	{

		if(value == '') return false;		
		if(value.length > 8) return false;
		if(value.length < 8) return false;

		var retVal = true;
		var msg    = Js_restriction_019; ////필드는 날짜여야 합니다. 날짜를 입력해주세요.

		var inputDate = value;
		
		if( maxLength != 4 && maxLength != 6 && maxLength != 8 && maxLength != 14) return false;
		if(inputDate.length == 14) inputDate = inputDate.substring(0, 8); 

		var yyyy = inputDate.substring(0, 4);
		var mm   = (maxLength >= 6)?inputDate.substring(4, 6):"01";
		var dd   = (maxLength == 8)?inputDate.substring(6, 8):"01";

		if (isNaN(yyyy) || parseInt(yyyy) < 1000) return false;
		if (isNaN(mm) || parseFloat(mm) > 12 || parseFloat(mm) < 1) return false;
		if (isNaN(dd) || parseFloat(dd) < 1 || (parseFloat(dd) > getEndOfMonthDay(parseFloat(yyyy.substring(2,4)), parseFloat(mm))) ) return false;

		return true;
	}
	
	function isValidDateCompare(startDate, endDate,maxLength)
	{

		if(startDate == '') return false;
		if(endDate == '') return false;
		if(startDate.length > 8) return false;
		if(startDate.length < 8) return false;
		if(endDate.length > 8) return false;
		if(endDate.length < 8) return false;

		var retVal = true;
		var msg    = Js_restriction_019; ////필드는 날짜여야 합니다. 날짜를 입력해주세요.

		

		
		var inputDate = startDate;		
		if( maxLength != 4 && maxLength != 6 && maxLength != 8 && maxLength != 14) return false;
		if(inputDate.length == 14) inputDate = inputDate.substring(0, 8); 

		var yyyy = inputDate.substring(0, 4);
		var mm   = (maxLength >= 6)?inputDate.substring(4, 6):"01";
		var dd   = (maxLength == 8)?inputDate.substring(6, 8):"01";

		if (isNaN(yyyy) || parseInt(yyyy) < 1000) return false;
		if (isNaN(mm) || parseFloat(mm) > 12 || parseFloat(mm) < 1) return false;
		if (isNaN(dd) || parseFloat(dd) < 1 || (parseFloat(dd) > getEndOfMonthDay(parseFloat(yyyy.substring(2,4)), parseFloat(mm))) ) return false;

		inputDate = endDate;
		if( maxLength != 4 && maxLength != 6 && maxLength != 8 && maxLength != 14) return false;
		if(inputDate.length == 14) inputDate = inputDate.substring(0, 8); 

		var yyyy = inputDate.substring(0, 4);
		var mm   = (maxLength >= 6)?inputDate.substring(4, 6):"01";
		var dd   = (maxLength == 8)?inputDate.substring(6, 8):"01";

		if (isNaN(yyyy) || parseInt(yyyy) < 1000) return false;
		if (isNaN(mm) || parseFloat(mm) > 12 || parseFloat(mm) < 1) return false;
		if (isNaN(dd) || parseFloat(dd) < 1 || (parseFloat(dd) > getEndOfMonthDay(parseFloat(yyyy.substring(2,4)), parseFloat(mm))) ) return false;


		var startDateFormat = new Date(startDate.substring(0,4),startDate.substring(4,6),startDate.substring(6,8));
		var endDateFormat = new Date(endDate.substring(0,4),endDate.substring(4,6),endDate.substring(6,8));
		
		if(startDateFormat > endDateFormat) return false;
		
		
		return true;
	}


