/*
 * @(#)String.Validation.js
 *
 * ¹®ÀÚ¿­ Ã¼Å© °ü·Ã ÇÔ¼ö ¸ðÀ½
 *
 * Copyright 2002 HelloPHP.COM All rights reserved.
 * 
 * @author ´«ÀÌ¿À¸é, ifsnow@korea.com
 * @version 1.0.000, 2002/07/15
 */


/**
 * ÇÑ±Û ¸¶Áö¸· ±ÛÀÚÀÇ Áß¼º À¯¹«¸¦ Ã¼Å©ÇÕ´Ï´Ù.
 *
 * ex ) var str = "»çÅÁ";
 *        if (CheckFinalConsonant(str)) {
 *           window.alert(str+"À» ¸Ô¾ú½À´Ï´Ù.");
 *        }
 *        else {
 *           window.alert(str+"¸¦ ¸Ô¾ú½À´Ï´Ù.");
 *        }
 */
function CheckFinalConsonant(str) 
{
	var strTemp = str.substr(str.length-1);
	if ((strTemp.charCodeAt(0)-16)%28!=0) return true;
	else return false;
}

/**
 * ¹®ÀÚ¿­¿¡ »ç¿ëÇØ¼­´Â ¾ÈµÇ´Â HTMLÅÂ±×°¡ ÀÖ´ÂÁö Ã¼Å©ÇÕ´Ï´Ù.
 */
function isValidHTML(str) 
{
	var re = new RegExp("<[\/]{0,1}[^\f\n\r\t\v]*(html|table|tr|td|script|form|xmp|!|iframe|textarea|input|meta)[^\f\n\r\t\v]*","gi");
	var matchArray = str.match(re);
	if (matchArray) return false;
	else return true;
}

/**
 * ¿Ã¹Ù¸¥ ¸ÞÀÏÇü½ÄÀÎÁö Ã¼Å©ÇÕ´Ï´Ù.
 */
function isValidEmail(str) 
{
	var re=new RegExp("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$","gi");
	var matchArray=str.match(re);
	if (matchArray) return true;
	else return false;
}

/**
 * ¿Ã¹Ù¸¥ È¨ÆäÀÌÁöÇü½ÄÀÎÁö Ã¼Å©ÇÕ´Ï´Ù.
 */
function isValidHomepage(str) 
{
	var re=new RegExp("^((ht|f)tp:\/\/)((([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3}))|(([0-9]{1,3}\.){3}([0-9]{1,3})))((\/|\\?)[a-z0-9~#%&'_\+=:\?\.-]*)*)$","gi");
	var matchArray=str.match(re);
	if (matchArray) return true;
	else return false;
}

/**
 * ¿Ã¹Ù¸¥ ÀüÈ­¹øÈ£ Çü½Ä(¼ýÀÚ-¼ýÀÚ-¼ýÀÚ)ÀÎÁö Ã¼Å©ÇÕ´Ï´Ù.
 */
function isValidPhone(str) 
{
	if (str.search(/^(\d+)-(\d+)-(\d+)$/g)!=-1) return true;
	else return false;
}

/**
 * ¾ËÆÄºª¸¸À¸·Î ±¸¼ºµÈ ¹®ÀÚ¿­ÀÎÁö Ã¼Å©ÇÕ´Ï´Ù.
 */
function isAlphabet(str) 
{
	if (str.search(/[^a-zA-Z]/g)==-1) return true;
	else return false;
}

/**
 * ´ë¹®ÀÚ·Î¸¸ ±¸¼ºµÈ ¹®ÀÚ¿­ÀÎÁö Ã¼Å©ÇÕ´Ï´Ù.
 */
function isUpperCase(str) 
{
	if (str.search(/[^A-Z]/g)==-1) return true;
	else return false;
}

/**
 * ¼Ò¹®ÀÚ·Î¸¸ ±¸¼ºµÈ ¹®ÀÚ¿­ÀÎÁö Ã¼Å©ÇÕ´Ï´Ù.
 */
function isLowerCase(str) 
{
	if (str.search(/[^a-z]/g)==-1) return true;
	else return false;
}

/**
 * ÇÑ±Û·Î¸¸ ±¸¼ºµÈ ¹®ÀÚ¿­ÀÎÁö Ã¼Å©ÇÕ´Ï´Ù.
 */
function isKorean(str) 
{
	var strLength = str.length;
	var i;
	var Unicode;

	for (i=0;i<strLength;i++) 
	{
		Unicode = str.charCodeAt(i);
		if ( !(44032 <= Unicode && Unicode <= 55203) ) return false;	
	}
	return true;
}

/**
 * ¼ýÀÚ¸¸À¸·Î ±¸¼ºµÈ ¹®ÀÚ¿­ÀÎÁö Ã¼Å©ÇÕ´Ï´Ù.
 */
function isDigit(str) 
{
	if (str.search(/[^0-9]/g)==-1) return true;
	else return false;
}

/**
 * ¹®ÀÚ¿­ÀÌ NULLÀÎÁö Ã¼Å©ÇÕ´Ï´Ù.
 */
function isNull(str) 
{
    if (str == null || str == "") return true;
    else return false;
}

/**
 * ¹®ÀÚ¿­¿¡ ÇÑÄ­ÀÌ»óÀÇ ½ºÆäÀÌ½º ÀÔ·ÂÀÌ ÀÖ´ÂÁö¸¦ Ã¼Å©ÇÕ´Ï´Ù.
 */
function isValidSpace(str) 
{
	if (isNull(str)) return false;
	else
	{
		if (str.search(/[\s]{2,}/g)!=-1) return false;
		else return true;
	}
}


/*
 * @(#)String.StringBuffer.js
 *
 * ½ºÅ©¸³Æ®·Î ±¸ÇöÇÑ StringBuffer
 *
 * Copyright 2002 HelloPHP.COM All rights reserved.
 * 
 * @author ´«ÀÌ¿À¸é, ifsnow@korea.com
 * @version 1.0.000, 2002/07/15
 */


/**
 * StringBuffer °´Ã¼ »ý¼º ÇÔ¼ö
 * Ex) var sb = new StringBuffer();
 */
function StringBuffer() 
{
	var buffer;
	this.buffer = new Array();
}

/**
 * ¹öÆÛ¿¡ ¹®ÀÚ¿­À» Ãß°¡½ÃÅµ´Ï´Ù.
 */
StringBuffer.prototype.append = function(str) 
{
	if (str!=null) this.buffer.push(str);
}

/**
 * ¹öÆÛÀÇ ÇØ´ç ÀÎµ¦½º(idx)¸¦ »èÁ¦ÇÕ´Ï´Ù.
 */
StringBuffer.prototype.del = function(idx) 
{
	var arrayCount = this.size();
	if (idx<0 || idx>arrayCount) return false;
	
	var tempBuffer = new Array;

	for (var i=0;i<arrayCount;i++)
	{
		if (i!=idx) 
		{
			tempBuffer.push(this.buffer[i])
		}
	}
	this.buffer = tempBuffer;
}

/**
 * ¹öÆÛÀÇ ÇØ´ç ÀÎµ¦½º(idx)¿¡ ¹®ÀÚ¿­À» »ðÀÔÇÕ´Ï´Ù.
 */
StringBuffer.prototype.insert = function(idx,str) 
{
	var arrayCount = this.size();
	if (idx<0 || idx>arrayCount) return false;
	
	var tempBuffer = new Array;

	for (var i=0;i<arrayCount;i++)
	{
		if (i==idx) 
		{
			tempBuffer.push(str)
		}
		tempBuffer.push(this.buffer[i])
	}
	this.buffer = tempBuffer;
}

/**
 * ¹öÆÛÀÇ ÇØ´ç ÀÎµ¦½º(idx)ÀÇ ¹®ÀÚ¿­À» ¼öÁ¤ÇÕ´Ï´Ù.
 */
StringBuffer.prototype.replace = function(idx,str) 
{
	var arrayCount = this.size();
	if (idx<0 || idx>arrayCount) return false;
	
	var tempBuffer = new Array;

	for (var i=0;i<arrayCount;i++)
	{
		if (i==idx) 
		{
			tempBuffer.push(str)
		}
		else 
		{
			tempBuffer.push(this.buffer[i])
		}
	}
	this.buffer = tempBuffer;
}

/**
 * ¹öÆÛ »çÀÌÁî¸¦ ¹ÝÈ¯ÇÕ´Ï´Ù.
 */
StringBuffer.prototype.size = function() 
{
	return this.buffer.length;
}

/**
 * ¹öÆÛ¿¡ ÀÔ·ÂµÈ ¹®ÀÚ¿­ÀÇ ±æÀÌ¸¦ ¹ÝÈ¯ÇÕ´Ï´Ù.
 */
StringBuffer.prototype.length = function() 
{
	// ÇÑ±ÛÀ» Æ÷ÇÔÇÑ ±æÀÌµµ Ã¼Å©ÇÏ·Á¸é String.Util.js ºÎºÐÀ» Âü°í
	return this.toString().length;
}

/**
 * ¹öÆÛ¿¡ ÀÔ·ÂµÈ ¼ø¼­¸¦ ²¨²Ù·Î ¹Ù²ß´Ï´Ù.
 */
StringBuffer.prototype.reverse = function() 
{
	return this.buffer.reverse();
}

/**
 * ¹öÆÛ¿¡ ÀÔ·ÂµÈ °ªÀ» ÇÏ³ªÀÇ ¹®ÀÚ¿­·Î ¹ÝÈ¯ÇÕ´Ï´Ù.
 */
StringBuffer.prototype.toString = function() 
{
	return this.buffer.join("");
}


/*
 * @(#)String.Util.js
 *
 * ¹®ÀÚ¿­ Á¦¾î À¯Æ¿¸®Æ¼ ÇÔ¼ö ¸ðÀ½
 *
 * Copyright 2002 HelloPHP.COM All rights reserved.
 * 
 * @author ´«ÀÌ¿À¸é, ifsnow@korea.com
 * @version 1.0.000, 2002/07/15
 */


/**
 * ¹®ÀÚ¿­À» Ä¡È¯ÇÕ´Ï´Ù. (º¹¼ö °¡´É)
 *
 * ex ) var str = "¾È³çÇÏ¼¼¿ä. ÀúÀÇ ÀÌ¸§Àº ´«ÀÌ¿À¸éÀÔ´Ï´Ù.";
 *        str.MultiReplace("ÀÌ¸§","¾ÆÀÌµð"); // ÀÌ¸§ => ¾ÆÀÌµð
 *        str.MultiReplace("ÀÌ¸§","¾ÆÀÌµð",".","!"); // ÀÌ¸§ => ¾ÆÀÌµð , . => !
 */
String.prototype.MultiReplace = function() 
{
	var i;
	var argCount = arguments.length;
	if (argCount==0 || argCount%2!=0) return this;
	var strOutput = "";
	var strTemp = this;
	var strTemp2 = "";

	for(i=0; i<argCount; i+=2) 
	{
		strTemp2=arguments[i].replace(/([\^\\\$\*\+\?\.])/g,"\\$1");
		strTemp=strTemp.replace(eval("/("+strTemp2+")/g"),arguments[i+1]);
	}
	return strTemp;
}

/**
 * ¹®ÀÚ¿­¿¡¼­ Æ¯Á¤ ¹®ÀÚ¿­À» »èÁ¦ÇÕ´Ï´Ù. (º¹¼ö °¡´É)
 */
String.prototype.Remove = function() 
{
	var i;
	var argCount = arguments.length;
	if (argCount==0) return this;
	var regStr = "";

	for(i=0; i<argCount; i++) 
	{
		regStr+="("+arguments[i].replace(/([\^\\\$\*\+\?\.])/g,"\\$1")+")|";
	}
	return this.replace(eval("/"+regStr.replace(/\|$/g,"")+"/g"),"");
}

/**
 * ¹®ÀÚ¿­ÀÌ Æ¯Á¤ ¹®ÀÚ¿­·Î ½ÃÀÛµÇ´ÂÁö Ã¼Å©ÇÕ´Ï´Ù.
 */
String.prototype.startsWith = function(str) 
{
	if (this.substr(0,str.length)==str) return true;
	else return false;
}

/**
 * ¹®ÀÚ¿­ÀÌ Æ¯Á¤ ¹®ÀÚ¿­·Î ³¡³ª´ÂÁö Ã¼Å©ÇÕ´Ï´Ù.
 */
String.prototype.endsWith = function(str) 
{
	if (this.substr(this.length-str.length)==str) return true;
	else return false;
}

/**
 * ¹®ÀÚ¿­ÀÇ ½ÃÀÛºÎºÐ¿¡¼­ °ø¹éÀ» Á¦°ÅÇÕ´Ï´Ù.
 */
String.prototype.LTrim = function()
{
	return this.replace(/(^\s*)/g, "");
}
/**
 * ¹®ÀÚ¿­ÀÇ ³¡¿¡¼­ °ø¹éÀ» Á¦°ÅÇÕ´Ï´Ù.
 */
String.prototype.RTrim = function() 
{
	return this.replace(/(\s*$)/g, "");
}

/**
 * ¹®ÀÚ¿­ÀÇ Ã³À½°ú ³¡¿¡ ÀÖ´Â °ø¹éÀ» Á¦°ÅÇÕ´Ï´Ù.
 */
String.prototype.Trim = function() 
{
	return this.replace(/(^\s*)|(\s*$)/g, "");
}

/**
 * ¹®ÀÚ¿­ÀÇ ¿ÞÂÊºÎÅÍ ÁöÁ¤ÇÑ ¼ö¸¸Å­ÀÇ ¹®ÀÚ¿­¸¦ ¹ÝÈ¯ÇÕ´Ï´Ù.
 */
String.prototype.Left = function(len) 
{
	if (this==null || this=="") return this;
	var strLength=this.length;
	if (strLength<1 || len>=strLength) return this;
	else return this.substr(0,len);
}

/**
 * ¹®ÀÚ¿­ÀÇ ¿À¸¥ÂÊºÎÅÍ ÁöÁ¤ÇÑ ¼ö¸¸Å­ÀÇ ¹®ÀÚ¿­¸¦ ¹ÝÈ¯ÇÕ´Ï´Ù.
 */
String.prototype.Right = function(len) 
{
	if (this==null || this=="") return this;
	var strLength=this.length;
	if (len<=0 || len>=strLength) return this;
	else return this.substr(strLength-len);
}

/**
 *  ÇÑ±ÛÀ» Æ÷ÇÔÇÑ ¹®ÀÚ¿­ ±æÀÌ ¹ÝÈ¯ÇÕ´Ï´Ù.
 */
String.prototype.ByteLength = function() 
{
	var i,ch;
	var strLength = this.length;
	var count = 0;

	for(i=0;i<strLength;i++)
	{
		ch = escape(this.charAt(i));

		if(ch.length > 4)
			count += 2;
		else if(ch!='\r') 
			count++;
	}
	return count;
}

/**
 *  ¹®ÀÚ¿­À» Æ¯Á¤ ¹®ÀÚ¿­À» ³ª´² ¹è¿­ÇüÅÂÀÇ °ªÀ¸·Î ¹ÝÈ¯ÇÕ´Ï´Ù.
 */
function StringTokenizer(str,separator) 
{
	arrayOfStrings = str.split(separator);
	return arrayOfStrings;
}

/**
 * ¹®ÀÚ¿­À» Çü½ÄÈ­(3ÀÚ¸®¸¶´Ù ÄÞ¸¶ »ðÀÔ)µÈ ½ÄÀ¸·Î ¹ÝÈ¯ÇÕ´Ï´Ù.
 */
String.prototype.NumberFormat = function() 
{
	var str = this.replace(/,/g,"");
	var strLength = str.length;

	if (strLength<=3) return str;
	
    var strOutput = "";
    var mod = 3 - (strLength % 3);
	var i;

    for (i=0; i<strLength; i++) 
	{
		strOutput+=str.charAt(i); 
        if (i < strLength - 1) 
		{
			mod++; 
            if ((mod % 3) == 0) 
			{ 
				strOutput +=","; 
                mod = 0; 
			}
		} 
	} 
	return strOutput;
}

/**
 * Æ¯Á¤ ¹®ÀÚ¿­À» ¿øÇÏ´Â ¸¸Å­ ¹Ýº¹½ÃÅ² °ªÀ» ¹ÝÈ¯ÇÕ´Ï´Ù.
 */
function StrRepeat(str, multiplier)
{
	var strOutput = "";
	var i;

	for (i=1; i<=multiplier; i++)
	{
		strOutput+=str;
	}

	return strOutput;
}

/**
 * ¹®ÀÚ¿­ÀÇ ¿øÇÏ´Â À§Ä¡¿¡ ÁöÁ¤ÇÑ ±æÀÌÀÇ ´Ù¸¥ ¹®ÀÚ¿­À» Ãß°¡½ÃÅµ´Ï´Ù.
 * pad_type : 1 => ¿ÞÂÊ , 2 => ¿À¸¥ÂÊ , 3 => ¾çÂÊ
**/
String.prototype.Pad = function(pad_string, pad_length, pad_type) 
{
	var i;
	if (pad_type==null) pad_type=2;
	var strOutput = "";

	strOutput = StrRepeat(pad_string,pad_length);

	if (pad_type==1)
	{
		return strOutput+this;
	}
	else if (pad_type==2)
	{
		return this+strOutput;
	}
	else if (pad_type==3)
	{
		return strOutput+this+strOutput;
	}	
}

/**
 * ¹®ÀÚ¿­¿¡¼­ ÅÂ±×¸¦ »èÁ¦ÇÕ´Ï´Ù.
 */
String.prototype.Strip_Tags = function() {
	return this.replace(/<[^<|>]*>/g,"");
}

/**
 * ´º¶óÀÎÀ» HTML ¶óÀÎ ºê·¹ÀÌÅ©(<BR>)·Î º¯È¯ÇÑ´Ù.
 */
String.prototype.Nl2Br = function() {
	return this.replace(/\r\n/g,"<br>");
}