/* ============================================================================
 * File Name	: utilString.js
 * Description	: ¼ýÀÚ/¹®ÀÚ °ü·Ã ÇÔ¼ö
 * Author		: ±èÇö¼ö
 * Create Date	: 2004-03-03
 * History		:
 *	- 2004-03-03, ±èÇö¼ö	 : ÃÊ±âÀÛ¼º
 ============================================================================*/


String.prototype.trim = proto_trim;		// trim ¸Þ¼Òµå Ãß°¡

function proto_trim() { return this.replace(/^\s*/ ,"").replace(/\s*$/ ,""); }

/* -----------------------------------------------------------------------------
 * removeChar	: ¹®ÀÚ¿­¿¡¼­ ¿øÇÏ´Â ¹®ÀÚ¸¦ Á¦°Å
 * Parameter
	- str 			: [STRING] ´ë»ó ¹®ÀÚ¿­
	- delim			: [STRING] Á¦°ÅÇÒ ¹®ÀÚ¿­
 * return			: [STRING] Á¦°ÅÇÒ ¹®ÀÚ¿­À» Á¦°ÅÇÑ ¹®ÀÚ¿­
 ------------------------------------------------------------------------------ */
function removeChar(str, delim){ // str¿¡¼­ ¹®ÀÚ(delim)À» Á¦°Å
	if(	str	== null	|| str == '' ) return '';
	var	temp = '';
	for(var	i=0; i<str.length;i++){
		if(str.charAt(i) !=	delim){
			temp +=	str.charAt(i);
		}
	}
	return temp;
}

function replaceChar(str, orgChrs, chr, all){
	var exp = new RegExp("[" + orgChrs + "]", (all ? "gi" : ""));
	str = str.replace(exp, chr);
	return str;
}

/* -----------------------------------------------------------------------------
 * removeString	: ¹®ÀÚ¿­¿¡¼­ ¿øÇÏ´Â ¹®ÀÚ¸¦ Á¦°Å
 * Parameter
	- str 			: [STRING] ´ë»ó ¹®ÀÚ¿­
	- removeString	: [STRING] Á¦°ÅÇÒ ¹®ÀÚ¿­
 * return			: [STRING] Á¦°ÅÇÒ ¹®ÀÚ¿­À» Á¦°ÅÇÑ ¹®ÀÚ¿­
 ------------------------------------------------------------------------------ */
function removeString(str, removeString) {
	var	returnString = str;
	var	pos			 = 0;

	pos	= returnString.indexOf(removeString);

	if(pos < 0) return str;

	if(pos == 0){
		return returnString.substring(0, removeString.length);
	} else {
		return returnString.substring(0, pos)	+ returnString.substring(pos+removeString.length);
	}
}

/* -----------------------------------------------------------------------------
 * removeSpace	: ´ë»ó(str)¿¡¼­ °ø¹éÁ¦°Å
 * Parameter
	- str		: [STRING] ¿ø½Ã ¹®ÀÚ¿­
 * return		: [STRING] º¯È¯µÈ ¹®ÀÚ¿­À» ¹ÝÈ¯
 ------------------------------------------------------------------------------ */
function removeSpace(str){
	if(	 str == null || str == '' ) return '';
	var	temp = '';
	for(var	i=0; i<str.length;i++){
		if(str.charAt(i) !=	' '){
			temp +=	str.charAt(i);
		}
	}
	return temp;
}

/* -----------------------------------------------------------------------------
 * igetInt		: Á¤¼öÈ­
 * Parameter
	- val		: [STRING] Á¤¼ö_»ó¼ö
 * return		: [NUMBER] Á¤¼ö
 ------------------------------------------------------------------------------ */
function igetInt(val){
	return isNumeric(val)? parseInt(val,10) : 0;
}

/* -----------------------------------------------------------------------------
 * isNumeric	: Á¤¼öÇüÀÎÁö ¿©ºÎ
 * Parameter
	- val		: [STRING] Á¤¼öÇü ¹®ÀÚ
 * return		: [BOOLEAN] ÇØ´ç¿©ºÎ
 ------------------------------------------------------------------------------ */
function isNumeric(val){
	return !isNaN(parseInt(val,10));
}

/* -----------------------------------------------------------------------------
 * getAmt		: ±Ý¾×¿¡ 3ÀÚ¸® ¸¶´Ù "," »ðÀÔ
 * Parameter
	- amt		: [NUMERIC] ±Ý¾×
 * return		: [STRING] "," »ðÀÔ ±Ý¾×
 ------------------------------------------------------------------------------ */
function getAmt(obj){
	var src = obj.value;

//	if(parseInt(src) == 0) obj.value = "";
	while(src.charAt(0) == "0" && src.length > 1){
		src = src.substring(1, src.length);
		obj.value = src;
	}
	src = src.replace(/,/gi, "");
	var str = "";
	if(src.length > 3){
		for (var i=0; i<=src.length; i++){
			if (i%3 == 0 && i >= 3  && i != src.length){
				str = "," + str;
			}
			str = src.charAt((src.length - 1) - i) + str;
		}
		obj.value = str;
	} else {
		obj.value = src;
	}
}

/* -----------------------------------------------------------------------------
 * onlyNumeric	: text field ³»¿¡ ¼ýÀÚ¸¸ ÀÔ·Â
 * Parameter	: none
 * return		: none
 * notice
	- event ¹ß»ýÇÑ °÷ÀÇ °ªÀÌ 0~9ÀÏ°æ¿ì¸¸ ´ÙÀ½À¸·Î ³Ñ±ä´Ù.
 ------------------------------------------------------------------------------ */
function onlyNumeric(){
	var args = onlyNumeric.arguments;
	var key = event.keyCode;
	if(!key) return;

	var str = "0123456789";
	var eventKey = unescape('%' + key.toString(16));

	for(var i=0; i < args.length; i++){
		str += args[i];
	}

	if(str.indexOf(eventKey) < 0){
		event.returnValue = false;
	}
}

/* -----------------------------------------------------------------------------
 * onlyCode		: text field ³»¿¡ ÄÚµå¸¸ ÀÔ·Â
 * Parameter	: none
 * return		: none
 ------------------------------------------------------------------------------ */
function onlyCode(){
	var args = onlyCode.arguments;
	var key = event.keyCode;
	if(!key) return;

	var str = "0123456789abcdefghijklmnopqrstuvwxyz-";
	var eventKey = unescape('%' + key.toString(16));

	for(var i=0; i < args.length; i++){
		str += args[i];
	}

	if(str.indexOf(eventKey.toLowerCase()) < 0){
		event.returnValue = false;
	}
}

// ±ÛÀÚÀÇ width¸¦ ±¸ÇÑ´Ù
function getStrWidth(str, isBold){
	var i, nCode;
	var nWidth = 0;
	var wEng = isBold ? 8 : 7;		// <b></b> tag°¡ ÀÖÀ»°æ¿ì
	var wKor = isBold ? 13 : 12;

	if(!str) return 0;

	for(i=0; i<str.length; i++){
		nCode = str.charCodeAt(i);
		if((nCode < 0) || ( nCode > 127 ))
			nWidth += wKor;
		else
			nWidth += wEng;
	}

	return nWidth;
}

function addQuote(str){
	var nDouble = 0;
	var ch;
	var i;

	ch = str.charCodeAt(0);
	if((ch == 34) || (ch == 39))
		return str;

	for(i = 1; i < str.length - 1; i++){
		ch = str.charCodeAt(i);
		if(ch == 39){
			nDouble = 1;
			break;
		}
	}

	strQuote = (nDouble) ? "\"" : "'";

	return (strQuote + str + strQuote);
}

function getBool2Char(bBool){
	return bBool ? "T" : "F";
}

function getChar2Bool(cBool){
	return (toUpperCase(cBool) == "T" || toUpperCase(cBool) == "TRUE");
}

function getTextNotLike(str, word){
	if(str.indexOf(word) > -1){
		return "";
	}

	return str;
}

function getTextBytes(obj, nMax){ 
    var curText; 
    var byteIs; 
    var lastByte; 
    var thisChar; 
    var escChar; 
    var curTotalMsg; 
    var okMsg; 

    var curText = new String(obj.value); 
    byteIs = 0; 

    for(i=0; i<curText.length; i++) { 
		thisChar = curText.charAt(i); 
		escChar = escape(thisChar); 

		// ¢¥,¡§, ¢¬ : 2byte ÀÓ¿¡µµ ºê¶ó¿ìÁ®¿¡¼­ 1byte·Î °è»ê 
		if (thisChar == "¢¥" || thisChar == "¡§" || thisChar == "¢¬" || thisChar == "¡×" ){ 
			byteIs++; 
		} 

        if (escChar.length > 4) { 
            byteIs += 2;  //Æ¯¼ö¹®ÀÚ ÇÑ±ÛÀÎ °æ¿ì. 
        }else if(thisChar != '\r') {  //°³ÇàÀ» Á¦¿ÜÇÑ ÀÌ¿ÜÀÇ °æ¿ì 
            byteIs += 1; 
        } 
         
		if(byteIs > nMax){ // 3ÆäÀÌÁö±îÁö 
			thisText = curText.substring(0, i); 
			obj.value = thisText; 
			event.returnValue = false;
			return nMax;
		} 
    } 

	return byteIs; 
}