/**
	String prototype
*/
	//-----------------------------------------------------------------------------
	// ¹®ÀÚÀÇ ÁÂ¿ì °ø¹é Á¦°Å
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.trim = function() {
		return this.replace(/^\s+|\s+$/g, "");
	}

	//-----------------------------------------------------------------------------
	// ¹®ÀÚÀÇ ¿ÞÂÊ °ø¹é Á¦°Å
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.ltrim = function() {
		return this.replace(/^\s+/g, "");
	}

	//-----------------------------------------------------------------------------
	// ¹®ÀÚÀÇ ¿À¸¥ÂÊ °ø¹é Á¦°Å
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.rtrim = function() {
		return this.replace(/\s+$/g, "");
	}

	//-----------------------------------------------------------------------------
	// ¹®ÀÚ¿­ Replace
	// str.replaceAll(regex, replacement)
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.replaceAll = function() {
		return this.replace(new RegExp(arguments[0],"ig"), arguments[1]);
	}

	//-----------------------------------------------------------------------------
	// ¹®ÀÚ¿­ÀÇ byte ±æÀÌ ¹ÝÈ¯
	// @return : int
	//-----------------------------------------------------------------------------
	String.prototype.byte = function() {
		var cnt = 0;

		for (var i = 0; i < this.length; i++) {
			if ( this.charCodeAt(i) > 127 ) {
				cnt += 2;
			} else {
				cnt++;
			}
		}

		return cnt;
	}

	//-----------------------------------------------------------------------------
	// Á¤¼öÇüÀ¸·Î º¯È¯
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.int = function() {
		if ( !isNaN(this) ) {
			return parseInt(this);
		} else {
			return null;
		}
	}

	//-----------------------------------------------------------------------------
	// ¼ýÀÚ¸¸ °¡Á® ¿À±â
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.number = function() {
		return (this.trim().replace(/[^0-9]/g, ""));
	}

	//-----------------------------------------------------------------------------
	// ¼ýÀÚ¿¡ 3ÀÚ¸®¸¶´Ù , ¸¦ Âï¾î¼­ ¹ÝÈ¯
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.currency = function() {
		var formatNum = this.trim();

		while ( (/(-?[0-9]+)([0-9]{3})/).test(formatNum) ) {
			formatNum = formatNum.replace((/(-?[0-9]+)([0-9]{3})/), "$1,$2");
		}

		return formatNum;
	}

	//-----------------------------------------------------------------------------
	// ¼ýÀÚÀÇ ÀÚ¸®¼ö(cnt)¿¡ ¸Âµµ·Ï ¹ÝÈ¯ (¾Õ ÀÚ¸®¿¡ 0 À» Ã¤¿öÁÜ)
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.digits = function(cnt) {
		var digit = "";

		if ( this.length < cnt ) {
			for ( var i = 0; i < cnt - this.length; i++ ) {
				digit += "0";
			}
		}

		return digit + this;
	}

	//-----------------------------------------------------------------------------
	// URL¿¡¼­ ÆÄ¶ó¸ÞÅÍ Á¦°ÅÇÑ ¼ø¼öÇÑ url ¾ò±â
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.uri = function() {
		var arr = this.split("?");
		arr = arr[0].split("#");

		return arr[0];
	}

	//-----------------------------------------------------------------------------
	// ´Ü¾îÀÇ Ã¹ ±ÛÀÚ¸¦ ´ë¹®ÀÚ·Î ¹Ù²ãÁØ´Ù
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.capitalize = function() {
		return this.replace(/\b([a-z])/g, function($1) {
			return $1.toUpperCase();
		}) ;
	}


/**
	°¢Á¾ Ã¼Å© ÇÔ¼öµé
*/

	//-----------------------------------------------------------------------------
	// Á¤±Ô½Ä¿¡ ¾²ÀÌ´Â Æ¯¼ö¹®ÀÚ¸¦ Ã£¾Æ¼­ ÀÌ½ºÄÉÀÌÇÁ ÇÑ´Ù.
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.meta = function() {
		var str = this;
		var result = ""

		for ( var i = 0; i < str.length; i++ ) {
			if ( (/([\$\(\)\*\+\.\[\]\?\\\^\{\}\|]{1})/).test(str.charAt(i)) ) {
				result += str.charAt(i).replace((/([\$\(\)\*\+\.\[\]\?\\\^\{\}\|]{1})/), "\\$1");
			} else {
				result += str.charAt(i);
			}
		}

		return result;
	}

	//-----------------------------------------------------------------------------
	// Á¤±Ô½Ä¿¡ ¾²ÀÌ´Â Æ¯¼ö¹®ÀÚ¸¦ Ã£¾Æ¼­ ÀÌ½ºÄÉÀÌÇÁ ÇÑ´Ù.
	// @return : String
	//-----------------------------------------------------------------------------
	String.prototype.remove = function(pattern) {
		return (pattern == null) ? this : eval("this.replace(/[" + pattern.meta() + "]/g, \"\")");
	}

	//-----------------------------------------------------------------------------
	// ÃÖ¼Ò ÃÖ´ë ±æÀÌÀÎÁö °ËÁõ
	// str.isLength(min [,max])
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isLength = function() {
		var min = arguments[0];
		var max = arguments[1] ? arguments[1] : null;
		var success = true;

		if ( this.length < min ) {
			success = false;
		}

		if ( max && this.length > max ) {
			success = false;
		}

		return success;
	}

	//-----------------------------------------------------------------------------
	// ÃÖ¼Ò ÃÖ´ë ¹ÙÀÌÆ®ÀÎÁö °ËÁõ
	// str.isByteLength(min [,max])
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isByteLength = function() {
		var min = arguments[0];
		var max = arguments[1] ? arguments[1] : null;

		var success = true;

		if ( this.byte() < min ) {
			success = false;
		}

		if ( max && this.byte() > max ) {
			success = false;
		}

		return success;
	}

	//-----------------------------------------------------------------------------
	// °ø¹éÀÌ³ª ³ÎÀÎÁö È®ÀÎ
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isEmpty = function() {
		var str = this.trim();

		for ( var i = 0; i < str.length; i++ ) {
			if ( (str.charAt(i) != "\t") && (str.charAt(i) != "\n") && (str.charAt(i)!="\r") ) {
				return false;
			}
		}

		return true;
	}

	//-----------------------------------------------------------------------------
	// ¼ýÀÚ·Î ±¸¼ºµÇ¾î ÀÖ´ÂÁö ÇÐÀÎ
	// arguments[0] : Çã¿ëÇÒ ¹®ÀÚ¼Â
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isNum = function() {
		return (/^[0-9]+$/).test(this.remove(arguments[0])) ? true : false;
	}

	//-----------------------------------------------------------------------------
	// ¿µ¾î¸¸ Çã¿ë - arguments[0] : Ãß°¡ Çã¿ëÇÒ ¹®ÀÚµé
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isEng = function() {
		return (/^[a-zA-Z]+$/).test(this.remove(arguments[0])) ? true : false;
	}

	//-----------------------------------------------------------------------------
	// ¼ýÀÚ¿Í ¿µ¾î¸¸ Çã¿ë - arguments[0] : Ãß°¡ Çã¿ëÇÒ ¹®ÀÚµé
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isEngNum = function() {
		return (/^[0-9a-zA-Z]+$/).test(this.remove(arguments[0])) ? true : false;
	}

	//-----------------------------------------------------------------------------
	// ¾ÆÀÌµð Ã¼Å© ¿µ¾î¿Í ¼ýÀÚ¸¸ Ã¼Å© Ã¹±ÛÀÚ´Â ¿µ¾î·Î ½ÃÀÛ - arguments[0] : Ãß°¡ Çã¿ëÇÒ ¹®ÀÚµé
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isUserID = function() {
		return (/^[a-zA-z]{1}[0-9a-zA-Z]+$/).test(this.remove(arguments[0])) ? true : false;
	}

	//-----------------------------------------------------------------------------
	// ÇÑ±Û Ã¼Å© - arguments[0] : Ãß°¡ Çã¿ëÇÒ ¹®ÀÚµé
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isKor = function() {
		return (/^[°¡-ÆR]+$/).test(this.remove(arguments[0])) ? true : false;
	}

	//-----------------------------------------------------------------------------
	// ÁÖ¹Î¹øÈ£ Ã¼Å© - arguments[0] : ÁÖ¹Î¹øÈ£ ±¸ºÐÀÚ
	// XXXXXX-XXXXXXX
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isJumin = function() {
		var arg = arguments[0] ? arguments[0] : "";
		var jumin = eval("this.match(/[0-9]{2}[01]{1}[0-9]{1}[0123]{1}[0-9]{1}" + arg + "[1234]{1}[0-9]{6}$/)");

		if ( jumin == null ) {
			return false;
		} else {
			jumin = jumin.toString().num().toString();
		}

		// »ý³â¿ùÀÏ Ã¼Å©
		var birthYY = (parseInt(jumin.charAt(6)) == (1 ||2)) ? "19" : "20";
		birthYY += jumin.substr(0, 2);

		var birthMM = jumin.substr(2, 2) - 1;
		var birthDD = jumin.substr(4, 2);
		var birthDay = new Date(birthYY, birthMM, birthDD);

		if ( birthDay.getYear() % 100 != jumin.substr(0,2) || birthDay.getMonth() != birthMM || birthDay.getDate() != birthDD ) {
			return false;
		}

		var sum = 0;
		var num = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5]
		var last = parseInt(jumin.charAt(12));

		for( var i = 0; i < 12; i++ ) {
			sum += parseInt(jumin.charAt(i)) * num[i];
		}

		return ((11 - sum % 11) % 10 == last) ? true : false;
	}

	//-----------------------------------------------------------------------------
	// ¿Ü±¹ÀÎ µî·Ï¹øÈ£ Ã¼Å© - arguments[0] : µî·Ï¹øÈ£ ±¸ºÐÀÚ
	// XXXXXX-XXXXXXX
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isForeign = function() {
		var arg = arguments[0] ? arguments[0] : "";
		var jumin = eval("this.match(/[0-9]{2}[01]{1}[0-9]{1}[0123]{1}[0-9]{1}" + arg + "[5678]{1}[0-9]{1}[02468]{1}[0-9]{2}[6789]{1}[0-9]{1}$/)");

		if ( jumin == null ) {
			return false;
		} else {
			jumin = jumin.toString().num().toString();
		}

		// »ý³â¿ùÀÏ Ã¼Å©

		var birthYY = (parseInt(jumin.charAt(6)) == (5 || 6)) ? "19" : "20";
		birthYY += jumin.substr(0, 2);

		var birthMM = jumin.substr(2, 2) - 1;
		var birthDD = jumin.substr(4, 2);
		var birthDay = new Date(birthYY, birthMM, birthDD);

		if ( birthDay.getYear() % 100 != jumin.substr(0,2) || birthDay.getMonth() != birthMM || birthDay.getDate() != birthDD ) {
			return false;
		}

		if ( (parseInt(jumin.charAt(7)) * 10 + parseInt(jumin.charAt(8))) % 2 != 0 ) {
			return false;
		}

		var sum = 0;
		var num = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5]
		var last = parseInt(jumin.charAt(12));

		for ( var i = 0; i < 12; i++ ) {
			sum += parseInt(jumin.charAt(i)) * num[i];
		}

		return (((11 - sum % 11) % 10) + 2 == last) ? true : false;
	}

	//-----------------------------------------------------------------------------
	// »ç¾÷ÀÚ¹øÈ£ Ã¼Å© - arguments[0] : µî·Ï¹øÈ£ ±¸ºÐÀÚ
	// XX-XXX-XXXXX
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isBiznum = function() {
		var arg = arguments[0] ? arguments[0] : "";
		var biznum = eval("this.match(/[0-9]{3}" + arg + "[0-9]{2}" + arg + "[0-9]{5}$/)");

		if ( biznum == null ) {
			return false;
		} else {
			biznum = biznum.toString().num().toString();
		}

		var sum = parseInt(biznum.charAt(0));
		var num = [0, 3, 7, 1, 3, 7, 1, 3];

		for ( var i = 1; i < 8; i++ ) {
			sum += (parseInt(biznum.charAt(i)) * num[i]) % 10;
		}

		sum += Math.floor(parseInt(parseInt(biznum.charAt(8))) * 5 / 10);
		sum += (parseInt(biznum.charAt(8)) * 5) % 10 + parseInt(biznum.charAt(9));

		return (sum % 10 == 0) ? true : false;
	}

	//-----------------------------------------------------------------------------
	// ¹ýÀÎ µî·Ï¹øÈ£ Ã¼Å© - arguments[0] : µî·Ï¹øÈ£ ±¸ºÐÀÚ
	// XXXXXX-XXXXXXX
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isCorpnum = function() {
		var arg = arguments[0] ? arguments[0] : "";
		var corpnum = eval("this.match(/[0-9]{6}" + arg + "[0-9]{7}$/)");

		if ( corpnum == null ) {
			return false;
		} else {
			corpnum = corpnum.toString().num().toString();
		}

		var sum = 0;
		var num = [1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
		var last = parseInt(corpnum.charAt(12));

		for ( var i = 0; i < 12; i++ ) {
			sum += parseInt(corpnum.charAt(i)) * num[i];
		}

		return ((10 - sum % 10) % 10 == last) ? true : false;
	}

	//-----------------------------------------------------------------------------
	// ÀÌ¸ÞÀÏÀÇ À¯È¿¼ºÀ» Ã¼Å©
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isEmail = function() {
		return (/^[a-zA-Z0-9._-]+@[a-zA-Z0-9_-]([\.]?[a-zA-Z0-9_-])*\.[a-zA-Z]{2,3}$/i).test(this.trim());
	}

	//-----------------------------------------------------------------------------
	// ÀüÈ­¹øÈ£ Ã¼Å© - arguments[0] : ÀüÈ­¹øÈ£ ±¸ºÐÀÚ
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isPhone = function() {
		var arg = arguments[0] ? arguments[0] : "";
		return eval("(/(02|0[3-9]{1}[0-9]{1})" + arg + "[1-9]{1}[0-9]{2,3}" + arg + "[0-9]{4}$/).test(this)");
	}

	//-----------------------------------------------------------------------------
	// ÇÚµåÆù¹øÈ£ Ã¼Å© - arguments[0] : ÇÚµåÆù ±¸ºÐÀÚ
	// @return : boolean
	//-----------------------------------------------------------------------------
	String.prototype.isMobile = function() {
		var arg = arguments[0] ? arguments[0] : "";
		return eval("(/01[016789]" + arg + "[1-9]{1}[0-9]{2,3}" + arg + "[0-9]{4}$/).test(this)");
	}
