/******************************************************************************
 * Filename     : Input.js
 * Function     : JavaScript function to check input value
 * Comment      :
 * History      : 2004/05/21, v1.0, Created
 * Version      : 1.0
 *****************************************************************************/

	/**
	 * Function      : Check Email Format
	 *               :
	 * @param        : obj  - Target Object
	 *               : msg  - Message String
	 * @return       : boolean
	 */
	function isEmail(obj, msg)
	{
		var value = trimmed(obj.value);

		// regular expression...
		var supported = 0;
		if (window.RegExp)
		{
			var tempStr = "a";
			var tempReg = new RegExp(tempStr);
			if (tempReg.test(tempStr)) supported = 1;
		}

		if (!supported)
			return (value.indexOf(".") > 2) && (value.indexOf("@") > 0);

		var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
		var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");

		if (obj.value.length>0 && !(!r1.test(value) && r2.test(value)))
		{
			alert(obj.alt + " : " + msg);
			obj.focus();
			return false;
		}

		return true;
	}

	/**
	 * Function      : Check Mandatory Item
	 * @param        : obj  - Target Object
	 *               : msg  - Message String
	 * @return       : boolean
	 */
	function checkMandatory(obj, msg)
	{
		if (trimmed(obj.value) == "")
		{
			alert(obj.alt + " : " + msg);
			obj.focus();
			return false;
		}

		return true;
	}


      /**
	 * Function      : ¹è¿­ type ÀÇ Object Mandatory Ã¼Å©
	 * @param        : obj  - Target Object
	 *               : msg  - Message String
	 * @return       : boolean
	 * @author		 :  È²¼±ÁÖ
	 */
	function checkArrMandatory(obj, msg)
	{
		for(var _i = 0; _i<obj.length; _i++){
	        if(obj[_i].checked){
	        	return true;
	        }
	    }
	    alert(msg);
		return false;
	}


	/**
	 * Function      : Check Date Item (Ex:20040625)
	 * @param        : obj  - Target Object
	 *               : msg  - Message String
	 * @return       : boolean
	 */
	function checkDate(obj, msg)
	{
		if (obj.value.length>0 && !isValidDate(obj.value))
		{
			alert(obj.alt + " : " + msg);
			obj.focus();
			return false;
		}

		return true;
	}

	/**
	 * Function      : Check Date Item (Ex:2004/06/25)
	 * @param        : obj  - Target Object
	 *               : msg  - Message String
	 * @return       : boolean
	 */
	function checkSlashDate(obj, msg)
	{
		if (obj.value.length>0 && !isValidSlashDate(obj.value))
		{
			alert(obj.alt + " : " + msg);
			obj.focus();
			return false;
		}

		return true;
	}

	/**
	 * Function      : Check Number Item (¼Ò¼öÁ¡ ¾ø´Â ¼ýÀÚ¸¸ Çã¿ë)
	 * @param        : obj  - Target Object
	 *               : msg  - Message String
	 * @return       : boolean
	 */
	function checkNumber(obj, msg)
	{
		var decimalIdx = (obj.value).indexOf(".");
		if (decimalIdx != -1)
		{
			alert(obj.alt + " : " + msg);
			obj.focus();
			return false;
		}

		if (obj.value.length>0 && isNaN(obj.value))
		{
			alert(obj.alt + " : " + msg);
			obj.focus();
			return false;
		}

		return true;
	}
    /**
	 * Function      : Check Money Item
	 * @param        : obj  - Target Object
	 *               : msg  - Message String
	 * @return       : boolean
	 */
	function checkMoney(obj, msg)
	{
		var pattern = /\d,*/;

        if(obj.value.length>0 && !pattern.test(trimmed(obj.value))){
	  	  	alert(obj.alt + " : " + msg);
			obj.focus();
			return false;
	  	}
        return true;
	}
	/**
	 * Function      : Check Decimal Number Item (¼Ò¼öÁ¡ Çã¿ë)
	 * @param        : obj  - Target Object
	 *               : msg  - Message String
	 * @return       : boolean
	 */
	function checkDecimal(obj, msg)
	{
		if (obj.value.length>0 && isNaN(obj.value))
		{
			alert(obj.alt + " : " + msg);
			obj.focus();
			return false;
		}

		return true;
	}

	/**
	 * Function		: Check Length of TextArea
	 * @param		: formName	- Form name
	 * @param		: maxlen	- Max Length of TextArea
	 * @param		: msg		- Notice message about over length
	 * @return		: boolean
	 */
	function checkInputLen(obj, maxLen, msg)
	{
		if (getByteLen(obj.value) > maxLen)
		{
			alert(obj.alt + " : " + msg + " (ÃÖ´ë: " + maxLen + "ÀÚ¸®)");
			obj.focus();
			return false;
		}

		return true;
	}

	/**
	 * Function      : Check restricted special charactor (' and ")
	 * @param        : obj  - Target Object
	 *               : msg  - Message String
	 * @return       : boolean
	 */
	function checkSpecialChar(obj, msg)
	{
		if (obj.value.search("\['\"\]") >= 0)
		{
			alert(obj.alt + " : " + msg);
			obj.focus();
			return false;
		}

		return true;
	}

	/**
	 * Function      : Replace restricted special charactor (' and " ==> `)
	 * @param        : value  - String
	 * @return       : replaced string
	 */
	function replaceSpecialChar(value)
	{
		value = value.replace(/\"|\'/g, "`");
		return value;
	}


	/**
	 * Function      : Check Dash("-")Number
	 * @param        : value  - Check data
	 * @return       : boolean
	 */
	function isValidDashNum(value)
	{
		var tmp = "0123456789-";
		var cnt = value.length;

		for (var _i=0; _i < cnt; _i++)
		{
			if (tmp.indexOf(value.charAt(_i)) < 0) return false;
		}

		return true;
	}

	/**
	 * Function      : Check Slash("/")Number
	 * @param        : value  - Check data
	 * @return       : boolean
	 */
	function isValidSlashNum(value)
	{
		var tmp = "0123456789/";
		var cnt = value.length;

		for (var _i=0; _i < cnt; _i++)
		{
			if (tmp.indexOf(value.charAt(_i)) < 0) return false;
		}

		return true;
	}

	/**
	 * Function      : Check Number & English Character
	 * @param        : value  - Check data
	 * @return       : boolean
	 */
	function isValidNumEngChar(value)
	{
		var tmp = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		var cnt = value.length;

		for (var _i=0; _i<cnt; _i++)
		{
			if (tmp.indexOf(value.charAt(_i)) < 0) return false;
		}

		return true;
	}

	/**
	 * Function      : Check Valid Date Type
	 * @param        : sDate  - Date String
	 * @return       : boolean
	 */
	function isValidDate(sDate)
	{
		var year, month, day;

		if (sDate.length < 8) return false;
		if (isNaN(sDate)) return false;

		year    = sDate.substring(0,4);
		month   = sDate.substring(4,6);
		day     = sDate.substring(6);

		if (month <= 0 || month > 12) return false;
		if (day <= 0 || day > getDaysInMonth(year, month)) return false;

		return true;
	}

	/**
	 * Function      : Check if the Date value input is fall between certain range 
	 * @param        : sDate  - Start Date String range
	 *                 eDate  - End Date String range
	 *                 vDate  - Date value compared
	 * @return       : boolean
	 */
	function compareDate(sDate, eDate, vDate)
	{
		if(sDate.length==0&&eDate.length==8)
		{
			if(isValidDate(eDate)&&isValidDate(vDate))
			{
				if(vDate<=eDate) return true ;
				else return false ;
			}			
		}
		else if(sDate.length==8&&eDate.length==0)
		{
			if(isValidDate(sDate)&&isValidDate(vDate))
			{
				if(sDate<=vDate) return true ;
				else return false ;
			}			
		}
		else if(sDate.length==8&&eDate.length==8)
		{
			if(isValidDate(sDate)&&isValidDate(eDate)&&isValidDate(vDate))
			{
				if(sDate<=vDate&&vDate<=eDate) return true ;
				else return false ;
			}			
		}
		else
		{
			return false ;
		}
	}

	/**
	 * Function      : Check if the Date value input is fall between certain range 
	 * @param        : sDate  - Start Date String range
	 *                 eDate  - End Date String range
	 *                 vDate  - Date value compared
	 * @return       : boolean
	 */
	function compareSlashDate(sDate, eDate, vDate)
	{
		return compareDate(removeChar(sDate,'/'), removeChar(eDate,'/'), removeChar(vDate,'/'));
	}
	
	/**
	 * Function      : Check Valid Date Type
	 * @param        : sDate  - Date String (Slash Type 2004/06/25)
	 * @return       : boolean
	 */
	function isValidSlashDate(sDate)
	{
		var year, month, day;

		if (sDate.length < 10) return false;
		if (!isValidSlashNum(sDate)) return false;

		year    = sDate.substring(0,4);
		month   = sDate.substring(5,7);
		day     = sDate.substring(8);

		if (month <= 0 || month > 12) return false;
		if (day <= 0 || day > getDaysInMonth(year, month)) return false;

		return true;
	}

	/**
	 * Function      : Get Days in the month
	 * @param        : sYear
	 *               : sMon
	 * @return       : days
	 */
	function getDaysInMonth(sYear, sMon)
	{
		var days = 0;

		if (sMon==1 || sMon==3 || sMon==5 || sMon==7 || sMon==8 || sMon==10 || sMon==12) days = 31;
		else if (sMon==4 || sMon==6 || sMon==9 || sMon==11) days = 30;
		else if (sMon==2)
		{
			if (isLeafYear(sYear)) days = 29;
			else days = 28;
		}

		return (days);
	}

	/**
	 * Function      : Check Yun(leaf) Year
	 * @param        : year String
	 * @return       : boolean
	 */
	function isLeafYear(sYear)
	{
		if (((sYear % 4)==0) && ((sYear % 100)!=0) || ((sYear % 400)==0)) return true;

		return false;
	}

	/**
	 * Function      : Erase left and right spaces.
	 * @param        : str  - Target String.
	 * @return       : String
	 */
	function trimmed(str)
	{
		// remove left spaces.
		str = str.replace(/^\s+/, "");

		// remove right spaces.
		str = str.replace(/\s+$/g, "");

		return str;
	}

	/**
	 * Function      : Get input character size (by Byte)
	 * @param        : str  - Target String.
	 * @return       : int  - Byte Length.
	 */
	function getByteLen(str)
	{
		var byteLen = 0;

		for (var _i=0; _i<str.length; _i++)
		{
			var oneChar = escape(str.charAt(_i));

			if (oneChar.length == 1)
			{
				byteLen++;
			}
			else if (oneChar.indexOf("%u") != -1)
			{
				byteLen += 2;
			}
			else if (oneChar.indexOf("%") != -1)
			{
				byteLen += oneChar.length/3;
			}
		}

		return byteLen;
	}

	/**
	 * Function      : Remove Character.
	 *               : Ex) ('2004/08/02', '/') -> '20040802'
	 * @param        : str  - Target String.
	 * @param        : ch   - Char Type.
	 * @return       : String
	 */
	function removeChar(str, ch)
	{
		var dest = "";

		for(_i = 0; _i < str.length; _i++)
		{
			var tmp = str.charAt(_i)
			if(tmp != ch)
			{
				dest += tmp;
			}
		}

		return dest;
	}

	/**
	 * Function     : ÀÔ·Â±æÀÌ°ª È®ÀÎ..ÁÖ¾îÁø ±æÀÌ°ªÀÌ ¾Æ´Ï¸é false.
	 * @param       : obj  - Target Object
	 * @return      : boolean
	 */

    function checkInputLength(obj, len, msg)
    {
    	if (obj == null) return false;
  		if(eval(obj.value.length) == eval(len))
  		{
  		    return true;
  		}
  		else
  		{
  		    alert(msg);
  		    return false ;
  		}
    }


	/**
	 * Function     : ¸®½ºÆ®¿¡¼­ ¼±ÅÃµÈ Ã¼Å© ¹Ú½ºÇÏ³ªÀÎÁö ±×ÀÌ»óÀÎÁö Ã¼Å©¿©ºÎ.
	 * @param       : obj  - Target Object
	 * @return      : boolean
	 */

    function singleChecked(obj, msg)
    {
    	if (obj == null) return false;

    		var cnt = 0;
    		for (i=0; i<obj.length; i++)
    		{
    			if (obj[i].checked) cnt++;
    		}

    		if (cnt > 1)
    		{
    			alert(msg);
    			return false;
    		}

    	return true;
    }


	/**
	 * Function     : ÀÔ·Â±æÀÌ°ª È®ÀÎ..ÁÖ¾îÁø ±æÀÌ°ªÀÌ ¾Æ´Ï¸é false.
	 * @param       : obj  - Target Object
	 * @return      : boolean
	 */

    function nextFocus(cur_obj, len, next_obj)
    {
    	if (cur_obj == null) return false;

  		var len = 0;

  		if(getByteLen(cur_obj.value) == len)
  		{
  		    next_obj.focus();
  		    return true;
  		}
  		else
  		{
  		    return false ;
  		}
    }



	/**
	 * ¼ýÀÚ Å¸ÀÔÀ» ¹Þ¾Æ¼­ µ· Çü½Ä¿¡ ¸Â´Â Ä¿¸¶¸¦ ³Ö¾î ÁÖ´Â ÇÔ¼ö
	 
	 * @param	µ·À¸·Î Ç¥½ÃÇØ¾ß ÇÒ °´Ã¼
	 * @author	°­¼ºÇö
	 * @since	2004-11-18
	 */
	function setComma(_obj) { 
		var num = _obj.value;

		if(num.length > 15)
		{
			alert('1000¾ï¹Ì¸¸ÀÇ °¡°ÝÀ» ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù.');
			_obj.value="";
			_obj.focus();
			return;
		} 		
				
		re = /^$|,/g; 
		num = num.replace(re, ""); 
		if(isNaN(num)) { 
			alert("¹®ÀÚ´Â »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.");
			_obj.value="";
			_obj.focus();
			return;
		} 		
		if (_obj.value.length >= 4) {

			fl=""; 
			if(num==0) 
				return num; 

			if(num<0){ 
				num=num*(-1); 
				fl="-"; 
			}else{ 
				num=num*1; //Ã³À½ ÀÔ·Â°ªÀÌ 0ºÎÅÍ ½ÃÀÛÇÒ¶§ ÀÌ°ÍÀ» Á¦°ÅÇÑ´Ù. 
			} 

			num = new String(num) ;
			temp="" ;
			co=3 ;
			num_len=num.length ;

			while (num_len>0){ 
				num_len=num_len-co ;
				if(num_len<0){
					co=num_len+co;
					num_len=0;
				} 
				temp=","+num.substr(num_len,co)+temp ;
			} 
			_obj.value =  fl+temp.substr(1);
			_obj.style.textAlign='right';
		}
		else
		{
			_obj.style.textAlign='right';
		}

	} 

	/**
	 * ÇÑÀÚ¸®¼ö ÀÌÇÏÀÇ ¼ýÀÚ¸¦ 0À¸·Î ¸¸µé¾îÁÖ´Â ÇÔ¼ö.
	 * 12345 --> 12340	 »ç¿ë¹ý onblur="makeZero(this)"
	 * @param	text °´Ã¼
	 * @author	°­¼ºÇö
	 * @since	2004-12-02
	 */
	/**
	 * ¼ýÀÚ Å¸ÀÔÀ» ¹Þ¾Æ¼­ µ· Çü½Ä¿¡ ¸Â´Â Ä¿¸¶¸¦ ³Ö¾î ÁÖ´Â ÇÔ¼ö
	 
	 * @param	µ·À¸·Î Ç¥½ÃÇØ¾ß ÇÒ °´Ã¼
	 * @author	°­¼ºÇö
	 * @since	2004-11-18
	 */
	function setCommaHaveDot(_obj,_dotSize) { 
		var splNum = _obj.value.split(".");
		var idxDot = _obj.value.indexOf(".");
		var isDot = false;
		if(idxDot>0)
			isDot = true;
		
		var num = splNum[0];
		var downNum = null;
		if(isDot)
			downNum = splNum[1];
		
		if(isDot == true && downNum.length>_dotSize) {
			alert("¼Ò¼öÁ¡ ÀÌÇÏ "+_dotSize+" ÀÚ¸® ÀÌ»óÀº ÀÔ·ÂÇÏ½Ç ¼ö ¾ø½À´Ï´Ù.");
		}
			
		
		re = /^$|,/g; 
		num = num.replace(re, ""); 
		if(isNaN(num)) { 
			alert("¹®ÀÚ´Â »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.");
			_obj.value="";
			_obj.focus();
			return;
		} 	
		if (num.length >= 4) {

			fl=""; 
			if(num==0) 
				return num; 

			if(num<0){ 
				num=num*(-1); 
				fl="-"; 
			}else{ 
				num=num*1; //Ã³À½ ÀÔ·Â°ªÀÌ 0ºÎÅÍ ½ÃÀÛÇÒ¶§ ÀÌ°ÍÀ» Á¦°ÅÇÑ´Ù. 
			} 

			num = new String(num) ;
			temp="" ;
			co=3 ;
			num_len=num.length ;

			while (num_len>0){ 
				num_len=num_len-co ;
				if(num_len<0){
					co=num_len+co;
					num_len=0;
				} 
				temp=","+num.substr(num_len,co)+temp ;
			}

			if(isDot)
				_obj.value =  fl+temp.substr(1)+"."+downNum.substr(0,2);
			else
				_obj.value =  fl+temp.substr(1);
			_obj.style.textAlign='right';
		}
		else
		{
			_obj.style.textAlign='right';
		}

	} 
	function makeZero(_obj){
		var val = _obj.value;
		var _idx = 1;
		var retVal = "";
		var valLength = val.length;
		if(valLength >= _idx)
		{
			retVal += val.substring(0,valLength - _idx);
			for(var i = 0 ; i < _idx ; i++)
				retVal += "0";	
		}
		_obj.value =  retVal;
	}
	/**
	 * ÇÑÀÚ¸®¼ö ÀÌÇÏÀÇ ¼ýÀÚ¸¦ 0À¸·Î ¸¸µé¾îÁÖ´Â ÇÔ¼ö.
	 * 12345 --> 12340	 »ç¿ë¹ý onblur="makeZero(this.value)"
	 * @param	text °´Ã¼
	 * @author	°­¼ºÇö
	 * @since	2004-12-02
	 */

	function returnZero(_obj){
		var val = _obj;
		var _idx = 1;
		var splitVal = val.split(".");
		val = splitVal[0];
		var retVal = "";
		var valLength = val.length;
		if(valLength >= _idx)
		{
			retVal += val.substring(0,valLength - _idx);
			for(var i = 0 ; i < _idx ; i++)
				retVal += "0";	
		}
		return  retVal;
	}

    /************************************************************************************
     * checkAreaPrcForZ - Àü±¹±Ç Ã¼Å© ½Ã ´Ù¸¥ Áö¿ªÀº disable ÇÏ°í °¡°ÝÀ» ÃÊ±âÈ­ ÇÑ´Ù.
     *                    Áö¿ª Ã¼Å© ½Ã Àü±¹±ÇÀ» disable ÇÏ°í °¡°ÝÀ» ÃÊ±âÈ­ ÇÑ´Ù.
     *
     * param    objForm             - FORM object
     * param    objCb               - checkbox object
     * param    strCbFormName       - Áö¿ªÄÚµå¸¦ »« checkbox name (ex : "CB_AREA_PRC_"
     * param    strAreaPrcFormName  - Áö¿ªÄÚµå¸¦ »« text name (ex : "AREA_PRC_"
     */
    function checkAreaPrcForZ(objForm, objCb, strCbFormName, strAreaPrcFormName)
    {
        var strAlphabet     = "ABCDEFGHIJKLMNOPQRSTUVWXY";  // Àü±¹±Ç(Z)À» »« Áö¿ª.
        var strAllArea      = "Z";  // Àü±¹±Ç

        // Àü±¹±Ç/±âÅ¸Áö¿ª Ã¼Å© ±¸ºÐ
        if(objCb.name == strCbFormName + strAllArea) // Àü±¹±Ç Ã¼Å© ½Ã
        {
            // ±âÅ¸ Áö¿ªÀÇ checkbox¸¦ disable ½ÃÅ°°í, ¿£Åõºñ¸ÅÃâ°¡¸¦ ÃÊ±âÈ­ ÇÑ´Ù.
            for(var i = 0; i < strAlphabet.length; i++)
            {
                // ÇöÀç X, Y µîÀÇ Áö¿ªÀÌ ¾ø±â ¶§¹®¿¡ try/catch Ã³¸® ÇÑ´Ù.
                try
                {
                    objForm[strAreaPrcFormName + strAlphabet.charAt(i)].value       = "";
                    objForm[strAreaPrcFormName + strAlphabet.charAt(i)].disabled    = true;

                    // ±âÅ¸Áö¿ªÀÇ Ã¼Å©¹Ú½º¸¦ uncheck ·Î ¸¸µç´Ù.
                    objForm[strCbFormName + strAlphabet.charAt(i)].checked   = false;
                }
                catch (e)
                {
                    //alert(e);
                }
            }

            // Àü±¹±ÇÀÇ ¿£Åõºñ¸ÅÃâ°¡¿¡ °¡°ÝÀ» ÀÔ·Â°¡´ÉÅä·Ï ÇÑ´Ù.
            objForm[strAreaPrcFormName + strAllArea].disabled    = false;
        }
        else // ±âÅ¸Áö¿ª Ã¼Å© ½Ã
        {
            // Àü±¹±Ç º¯¼ö°¡ ¾øÀ» ¶§¸¦ ´ëºñÇØ try/catch Ã³¸® ÇÑ´Ù.
            try
            {
                // Àü±¹±ÇÀÇ checkbox¸¦ disable ½ÃÅ°°í, ¿£Åõºñ¸ÅÃâ°¡¸¦ ÃÊ±âÈ­ ÇÑ´Ù.
                objForm[strAreaPrcFormName + strAllArea].value       = "";
                objForm[strAreaPrcFormName + strAllArea].disabled    = true;

                // Àü±¹±ÇÀÇ Ã¼Å©¹Ú½º¸¦ uncheck ·Î ¸¸µç´Ù.
                objForm[strCbFormName + strAllArea].checked   = false;
            }
            catch (e)
            {
                //alert(e);
            }
            
            // ¼±ÅÃµÈ Áö¿ªÀÇ ¿£Åõºñ¸ÅÃâ°¡ ÀÔ·ÂÀÌ °¡´ÉÇÏµµ·Ï ÇÑ´Ù.
            objForm[strAreaPrcFormName + objCb.name.charAt(objCb.name.length - 1)].disabled    = false;
        }
    }