// <![CDATA[
/* $Id: lib.input.js 11 2009-01-02 07:57:41Z admin $ */
/**
 * Input value¸¦ Á¦¾îÇÒ ÇÔ¼ö
 *
 * - ¼ýÀÚ           : ¼ýÀÚ¸¸ ÀÔ·Â¹Þ±â, ¼ýÀÚÀÎÁö Ã¼Å©, 3ÀÚ¸®¸¶´Ù ÄÄ¸¶ ºÙÀÌ±â/Á¦°ÅÇÏ±â
 * - ³¯Â¥/½Ã°£      : ³¯Â¥¿¡ ÇÏÀÌÇÂ(-), ½Ã°£¿¡ ÄÝ·Ð(:) ºÙÀÌ±â
 * - TEXT º¯È¯      : ÇÑ/¿µ º¯È¯, ´ë/¼Ò¹®ÀÚ º¯È¯, default value ÁöÁ¤
 * - ÄÁÆ®·Ñ »ö º¯È¯ : background color º¯È¯
 * - ÇÚµåÆù/ÁÖ¹Î/»ç¾÷ÀÚ ¹øÈ£ È®ÀÎ
 * - checkbox       : ¸ðµÎ¼±ÅÃ/¼±ÅÃÃë¼Ò, ¼±ÅÃÇÑ Ç×¸ñÃ³¸®(callback), ¼±ÅÃ¿©ºÎ È®ÀÎ
 */



/******************************************************************************
 * ¼ýÀÚ
 *****************************************************************************/

/**
 *  ¼ýÀÚ¸¸ ÀÔ·Â¹Þ´Â´Ù.
 *
 *  »ç¿ë¹ý : onKeyDown='return onlyNumber(event)'
 *  ¼³ ¸í :  ÇÑ±ÛÀÔ·Â¾ÈµÊ. ¿£ÅÍ¿Í ¹é½ºÆäÀÌ½º,ÅÇÅ°,½ºÆäÀÌ½ºÅ°, (.), (,), -
 *           delete,insert,home/end/¹æÇâÅ°°ª,±×·¹ÀÌÅ°¼ýÀÚ°ª,Å°º¸µåÀ§¼ýÀÚ°ª¸¸ ÀÔ·Â°¡´ÉÇÏ´Ù.
 */
function onlyNumber(evt)/*{{{*/
{
    var e = evt || window.event;
    var ek = (e.keyCode ? e.keyCode : e.which);

    return !( ek != 13 && ek != 9 && ek != 8 && ek != 32 && ek != 46 && ek != 45
            && ek != 110 && ek != 190 && ek != 188
            && (ek < 34 || ek > 40) && (ek < 48 || ek > 57) && (ek < 96 || ek > 105)
            && ek != 109 );
}/*}}}*/


/**
 * ¼ýÀÚÀÎÁö Ã¼Å©
 *
 * @param   string      È®ÀÎÇÒ ¹®ÀÚ¿­/¼ýÀÚ
 *
 * @return  boolean     true: ¼ýÀÚ X / false: ¼ýÀÚ O
 */
function NotNumber(str)/*{{{*/
{
    return (!(Number(str) || str==0)) ? true : false;
}/*}}}*/
/**
 * ¼ýÀÚ
 *
 * @param   string      input data
 * @return  boolean     true: number / false: not number
 */
function isNumber(str) {/*{{{*/
    var re = /^[-]?\d*\.?\d*$/;
    str = str.toString( );
    return (!str.match(re)) ? false : true;
}/*}}}*/


/**
 *  ¼ýÀÚ¿¡ ÄÄ¸¶ ºÙÀÌ±â
 *
 *  usage : number_format(132,3);
 *          number_format(25.37,3);
 *          number_format(3276851,3);
 *          number_format(2768135.3765,3);
 *          number_format("132",3);
 *          number_format("25.37",3);
 *          number_format("3276851",3);
 *          number_format("2768135.3765",3);
 */
function number_format(numstr)/*{{{*/
{
    var numstr = String(erase_comma(numstr));
    var re0 = /(\d+),?(\d{3})($|\..*)/;
    if (re0.test(numstr)) {
        return numstr.replace(
                re0,
                function(str,p1,p2,p3) { return number_format(p1) + "," + p2 + p3; }
                );
    } else {
        return numstr;
    }
}/*}}}*/


function NumFormat(txtObj)/*{{{*/
{
    txtObj.value = number_format(txtObj.value);
}/*}}}*/


/**
 *  ¼ýÀÚ¿¡ ÇüÅÂ¿¡¼­ ÄÞ¸¶ Áö¿ì±â
 */
function erase_comma(numstr)/*{{{*/
{
	var re0	= /,/g;
	var num = String(numstr).replace(re0, '');
	
    return isNumber(num) ? num : numstr; 
}/*}}}*/


function EraseCom(txtObj)/*{{{*/
{
    txtObj.value = erase_comma(txtObj.value);
}/*}}}*/


/**
 * ¼ýÀÚ¸¸ ¸®ÅÏ
 */
function eraseNoNumber(num)/*{{{*/
{
    return String(num).gsub(/[^\d]/, '');   // prototype.js: String.gsub()
} // end of the 'eraseNoNumber()' function/*}}}*/

function EraseNoNum(txtObj)/*{{{*/
{
    if (txtObj.type != 'text') {
        return false;
    } // end if

    txtObj.value = eraseNoNumber(txtObj.value);
} // end of the 'EraseNoNum()' function/*}}}*/





/******************************************************************************
 * ³¯Â¥/½Ã°£
 *****************************************************************************/


function PressSlash(Obj, evt){/*{{{*/
  //Á¤ÀÇ : ³¯Â¥ ÀÚµ¿¿Ï¼º
  //»ç¿ë¹ý ÅØ½ºÆ®ÄÁÆ®·Ñ¿¡´Ù°¡ onKeyUp="PressSlash(this, event)"¸¦ ³ÖÀ¸¸é µÈ´Ù.
    var e = evt || window.event;
    var ek = (e.keyCode ? e.keyCode : e.which);
  	var ReArg = ""; 
  	var ArgVal = Obj.value.replace(/ /g,'');//ºóÄ­ Á¦°Å
  	var ArgLen = ArgVal.length;
  	var ymd = ArgVal.replace(/-/g,'') //ÇÏÀÌÇÂÀÌ ¾ø´Â ¼ø¼öÇÑ ¼ýÀÚ¸¸ÀÇ ±æÀÌ
  	var j = 0;
  	if( (ek != 8 && ek != 46 ) && (ek >= 48 && ek <= 57) || (ek >= 96 && ek <= 105) ){  //¹é½ºÆäÀÌ½º, delete°¡ ¾Æ´Ñ°æ¿ì¿Í ¼ýÀÚÅ°(À­ÀÚÆÇ, ±×·¹ÀÌÅ°)ÀÎ °æ¿ì
	    
	    for (i=1; i<=ArgLen ;i++){
    	    if ((ArgVal.substr(i-1,1) == "-")){
    	    }
    	    else{
      		    if ((i == 5) || (i == 8)){
        		    var ReArg = ReArg + "-";
      		    };
    	    };
        var ReArg = ReArg + ArgVal.substr(i-1,1);
  	    };
  	    Obj.value = ReArg;
  	}
}/*}}}*/


function PressColon(Obj, evt){/*{{{*/
  //Á¤ÀÇ : ½Ã°£ ÀÚµ¿¿Ï¼º
  //»ç¿ë¹ý ÅØ½ºÆ®ÄÁÆ®·Ñ¿¡´Ù°¡ onKeyUp="PressColon(this, event)"¸¦ ³ÖÀ¸¸é µÈ´Ù.
    var e = evt || window.event;
    var ek = (e.keyCode ? e.keyCode : e.which);
    var ReArg = "";
    var ArgVal = Obj.value.replace(/ /g,'');//ºóÄ­ Á¦°Å
    var ArgLen = ArgVal.length;
    var ymd = ArgVal.replace(/:/g,'') //ÄÝ·ÐÀÌ ¾ø´Â ¼ø¼öÇÑ ¼ýÀÚ¸¸ÀÇ ±æÀÌ
    var j = 0;
    if( (ek != 8 && ek != 46 ) && (ek >= 48 && ek <= 57) || (ek >= 96 && ek <= 105) ){  //¹é½ºÆäÀÌ½º, delete°¡ ¾Æ´Ñ°æ¿ì¿Í ¼ýÀÚÅ°(À­ÀÚÆÇ, ±×·¹ÀÌÅ°)ÀÎ °æ¿ì

        for (i=1; i<=ArgLen ;i++){
            if ((ArgVal.substr(i-1,1) == ":")){
            }
            else{
                if (i == 3){
                    var ReArg = ReArg + ":";
                };
            };
        var ReArg = ReArg + ArgVal.substr(i-1,1);
        };
        Obj.value = ReArg;
    }
}/*}}}*/






/******************************************************************************
 * TEXT º¯È¯
 *****************************************************************************/


/**
 * ÇÑ/¿µ º¯È¯
 *
 * @param   object
 */
function chgHan(obj)/*{{{*/
{
    obj.style.imeMode = "active";
}/*}}}*/
function chgEng(obj)/*{{{*/
{
    obj.style.imeMode = "inactive";
}/*}}}*/


/**
 * ´ë/¼Ò¹®ÀÚ º¯È¯
 *
 * @param   object
 */
function chgUpper(obj)/*{{{*/
{
    obj.value = obj.value.toUpperCase();
}/*}}}*/
function chgLower(obj)/*{{{*/
{
    obj.value = obj.value.toLowerCase();
}/*}}}*/


/**
 * default value »èÁ¦
 *
 * usage:
 *  - <input type="text" value="±âº»°ª" onfocus="clearDText(this, '±âº»°ª');" ...>
 * 
 * @param   object
 * @param   string    default value
 * @param   boolean   value ¼±ÅÃ ¿©ºÎ (default: true)
 */
function clearDText(obj, dValue, isSelect)/*{{{*/
{
  isSelect = typeof isSelect == 'undefined' ? true : false;

  obj.value = obj.value == dValue ? '' : obj.value;
  if (isSelect) {
    obj.select();
  } // end if
} // end of the 'clearDText()' function/*}}}*/

/**
 * default value ÁöÁ¤
 *
 * usage:
 *  - <input type="text" value="±âº»°ª" onblur="setDText(this, '±âº»°ª');" ...>
 * 
 * @param   object
 * @param   string    default value
 */
function setDText(obj, dValue)/*{{{*/
{
  obj.value = obj.value.blank() ? dValue : obj.value;
} // end of the 'setDText()' function/*}}}*/





/******************************************************************************
 * ÄÁÆ®·Ñ »ö º¯È¯
 *****************************************************************************/


/**
 * ÀÔ·ÂÆû »ö»ó º¯°æ
 *
 * @param   object      input object
 * @param   string      background color (default: #EFEFEF)
 */
function setIptColor(Obj, bc)/*{{{*/
{
    var bcolor = (typeof bc == "undefined")
		            ? "#EFEFEF"
								: (!bc ? '' : bc);

    Obj.style.backgroundColor= bcolor;
} // end of the 'setIptColor()' function/*}}}*/
function initIptColor(Obj)/*{{{*/
{
    Obj.style.backgroundColor="";
} // end of the 'initIptColor()' function/*}}}*/






/******************************************************************************
 * ÇÚµåÆù / ÁÖ¹Î / »ç¾÷ÀÚ µî·Ï¹øÈ£ È®ÀÎ
 *****************************************************************************/


/**
 * ÇÚµåÆù ¹øÈ£
 * 
 * @param	string			ÇÚµåÆù¹øÈ£
 * 
 * @return	boolean
 */
function isHandphone(str)/*{{{*/
{
	str = str.replace(/((^\s+)|(\s+$)|-)/g,'');
	
	return /^01(0|1|6|7|8|9)(\d{7,8})$/.test(str);	
} // end of the 'isHandphone()' function/*}}}*/


/**
 * ÀüÈ­¹øÈ£: [http://phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=38318]
 *
 * @param   integer     ÀüÈ­¹øÈ£
 * @param   string      ¾Õ ±¸ºÐÀÚ (default: '-')
 * @param   string      µÚ ±¸ºÐÀÚ (default: '-')
 *
 * @return  string
 */
function getPhone(telNo, delimiter1, delimiter2)
{
    var temp1, ex_num, telNum, l2, l3, exacLen, l_code;

    // prototype.js: String.empty()
    if (typeof delimiter1 == 'undefined' || delimiter1.empty()) {
        delimiter1="-";
    } // end if
    if (typeof delimiter2 == 'undefined' || delimiter2.empty()) {
        delimiter2="-";
    } // end if

    telNo = eraseNoNumber(telNo);
    if (NotNumber(telNo) || telNo.empty()) {
        return false;
    } // end if

    temp1 = telNo.length;
    if (temp1 == 8) {
        ex_num = telNo.substr(0, 4);
        telNum = telNo.substr(4); // telNo.substr(-4);    // IE¿¡¼­ Á¦´ë·Î ÀÔ·Â¾È µÊ.

        return ex_num + delimiter2 + telNum;
    }
    else if (temp1 < 9) {
        return telNo;
    } // end if

    // check l-code for split
    l2 = telNo.substr(0, 2);
    l3 = telNo.substr(0, 3);

    exacLen = 3;
    if (l2 == "02") {
        exacLen = 2;
    } // end if
    if (l3 == "050") {
        exacLen = 4;
    } // end if

    l_code = telNo.substr(0, exacLen);
    ex_num = telNo.substr(exacLen, (temp1-exacLen-4));
    telNum = telNo.substr(temp1-4); // telNo.substr(-4);  // IE¿¡¼­ Á¦´ë·Î ÀÔ·Â¾È µÊ.

    return l_code + delimiter1 + ex_num + delimiter2 + telNum;
} // end of the 'getPhone()' function


/**
 * ÀüÈ­¹øÈ£
 *
 * usage: onblur="setPhone(this);"
 *
 * @param   object      dom element
 * @param   string      ¾Õ ±¸ºÐÀÚ (default: '-')
 * @param   string      µÚ ±¸ºÐÀÚ (default: '-')
 */
function setPhone(element, delimiter1, delimiter2)
{
    var phone;

    if (element.type != 'text') {
        return false;
    } // end if

    if (!(phone = getPhone(element.value, delimiter1, delimiter2))) {
        return false;
    } // end if

    element.value = phone;
} // end of the 'setPhone()' function



/**
 * ÁÖ¹Î¹øÈ£ (inicis Âü°í)
 * 
 * @param	string			ÁÖ¹Î¹øÈ£
 * 
 * @return	boolean
 */
function isJumin(str)/*{{{*/
{
	var i, sum = 0;
	str = str.replace(/((^\s+)|(\s+$)|-)/g,'');

	if (str.length != 13) {
		return false;
	}
	 	
	for(i=0;i<8;i++) {
		sum+=str.substring(i,i+1)*(i+2);
	}
	
	for(i=8;i<12;i++) {
		sum+=str.substring(i,i+1)*(i-6);
	}
	
	sum=11-(sum%11);
		
	if (sum>=10) {
		sum-=10;
	}
	
	return (str.substring(12,13) == sum && (str.substring(6,7) == 1 || str.substring(6,7) == 2));
} // end of the 'isJumin()' function/*}}}*/


/**
 * »ç¾÷ÀÚ ¹øÈ£(inicis Âü°í)
 * 
 * @param	string			»ç¾÷ÀÚ ¹øÈ£
 * 
 * @return	boolean
 */
function isBizNo(str)/*{{{*/
{
	var i, sum = 0;
	var sidliy, sidchk; 
   	var getlist =new Array(10); 
   	var chkvalue =new Array("1","3","7","1","3","7","1","3","5");
	 	
	str = str.replace(/((^\s+)|(\s+$)|-)/g,'');

	if (!/^[1-9](\d{9})$/.test(str)) {
		return false;
	}

	for(i=0; i<10; i++) {
		getlist[i] = str.substring(i, i+1);
	} 
   	for(i=0; i<9; i++) {
		sum += getlist[i]*chkvalue[i];
	}
	
	sum += parseInt((getlist[8]*5)/10);  
	sidliy = sum % 10; 
	sidchk = (sidliy != 0) ? 10 - sidliy : 0;

	return (sidchk == getlist[9]);	
} // end of the 'isBizNo()' function/*}}}*/






/******************************************************************************
 * checkbox
 *****************************************************************************/
var _CZ_IsAllChecked = false;

function _getElement(cssRule)/*{{{*/
{
  var element = $(cssRule);

  if (element == null) {
    $$(cssRule).each(function(ele) {
      element = ele;
      throw $break;
    });
  } // end if

  return element;
} // end of the '_getElement()' function/*}}}*/

/**
 * ¸ðµÎ ¼±ÅÃ
 *
 * usage:
 *  <TAG id="container_id">
 *          ~~~~~~~~~~~~~~
 *      <input type="checkbox" ...>
 *      <input type="checkbox" ...>
 *      ...
 *  </TAG>
 *  <TAG onclick="markAll('container_id')">¸ðµÎ¼±ÅÃ</TAG>
 *       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *
 * @param   string      DOM element / cssRule
 * @param   string      className
 */
function markAll(container_id, className)/*{{{*/
{
    var element = _getElement(container_id);
    var inputs;

    if (element == null) {
        return false;
    } // end if

    inputs = element.getElementsByTagName('input');

    $A(inputs).each(function(checkbox) {
        if (checkbox && checkbox.type.toLowerCase() == 'checkbox') {
            checkbox.checked = true;
        } // end if
    });

    if (typeof className != 'undefined') {
      element.childElements().each(function(child) {
        if (!child.hasClassName(className)) {
          child.addClassName(className);
        } // end if
      });
    } // end if

    _CZ_IsAllChecked = true;
} // end of the 'markAll()' function/*}}}*/
/**
 * ¸ðµÎ ¼±ÅÃ ¾È ÇÔ
 *
 * usage:
 *  <TAG id="container_id">
 *          ~~~~~~~~~~~~~~
 *      <input type="checkbox" ...>
 *      <input type="checkbox" ...>
 *      ...
 *  </TAG>
 *  <TAG onclick="unMarkAll('container_id')">¸ðµÎ¼±ÅÃÃë¼Ò</TAG>
 *       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *
 * @param   string      DOM element / cssRule
 * @param   string      className
 */
function unMarkAll(container_id, className)/*{{{*/
{
    var element = _getElement(container_id);
    var inputs;

    if (element == null) {
        return false;
    } // end if

    inputs = element.getElementsByTagName('input');

    $A(inputs).each(function(checkbox) {
        if (checkbox && checkbox.type.toLowerCase() == 'checkbox') {
            checkbox.checked = false;
        } // end if
    });

    if (typeof className != 'undefined') {
      element.childElements().each(function(child) {
        if (child.hasClassName(className)) {
          child.removeClassName(className);
        } // end if
      });
    } // end if

    _CZ_IsAllChecked = false;
} // end of the 'unMarkAll()' function/*}}}*/


/**
 * toggle
 */
function toggleMarkAll(container_id, className)/*{{{*/
{
  if (_CZ_IsAllChecked) {
    unMarkAll(container_id, className);
  }
  else {
    markAll(container_id, className);
  } // end if
} // end of the 'toggleMarkAll()' function/*}}}*/




/**
 * ¼±ÅÃÇ×¸ñ Ã³¸®
 *
 * usage:
 *  <TAG id="container_id">
 *          ~~~~~~~~~~~~~~
 *      <input type="checkbox" ...>
 *      <input type="checkbox" ...>
 *      ...
 *  </TAG>
 *  <TAG onclick="doChecked('container_id', callBack)">¼±ÅÃÇ×¸ñÃ³¸®</TAG>
 *       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *
 * @param   string      DOM element
 * @param   call back function
 */
function doChecked(container_id, callBack)/*{{{*/
{
    if ($(container_id) == null) {
        return false;
    } // end if

    var inputs = $(container_id).getElementsByTagName('input');

    $A(inputs).each(function(checkbox) {
        if (checkbox && checkbox.type.toLowerCase() == 'checkbox' && checkbox.checked
            && Object.isFunction(callBack)
        ) {
            try {
                callBack.apply(this, [checkbox.value]);
            } catch (e) { }
        } // end if
    });
} // end of the 'doChecked()' function/*}}}*/


/**
 * ÇÏ³ª ÀÌ»óÀÇ Ç×¸ñ ¼±ÅÃ ¿©ºÎ
 *
 * usage:
 *  <TAG cssRule>
 *       ~~~~~~~
 *      <input type="checkbox" ...>
 *      <input type="checkbox" ...>
 *      ...
 *  </TAG>
 *  ...
 *
 * @param   string      cssRule
 * @return  boolean
 */
function isCheckedOne(cssRule)/*{{{*/
{
  var flag = false;

  $$(cssRule + ' input').each(function(checkbox) {
    if (checkbox && checkbox.type.toLowerCase() == 'checkbox' && checkbox.checked) {
      flag = true;
      throw $break;
    } // end if
  });

  return flag;
} // end of the 'isCheckedOne()' function/*}}}*/

// ]]>