String.prototype.Replace = function () { 
var str = this.replace(/,/g, ""); 
return str; 
} 

/*======================================================
trim() : 양옆 공백을 제거한다
rtrim() : 문자열의 끝(왼쪽) 공백을 제거한다
ltrim() : 문자열의 시작(오른쪽) 공백을 제거한다

========================================================*/
String.prototype.trim = function(){
	return this.replace(/^\s+|\s+$/g,'');
}
String.prototype.rtrim = function(){
	return this.replace(/\s+$/g,'');
}
String.prototype.ltrim = function(){
	return this.replace(/^\s+/g,'');
}

/*======================================================
number_format()
PHP의 number_format과 똑같은 효과를 낸다.

decimals : 표시할 소수점 자리수(버림으로 처리됨)
dec_point : 소수점 표시단어
thousands_sep : 1000자리 표시단어

ex>
"123456.98765".number_format(4,'.',',');
String("123456.98765").number_format(4);
number_format("123456.98765");
-> 123,456.9876

123456.98765.number_format(4);
-> 123,456.9876
-123456.98765.number_format(4);
-> NaN
Number('-123456.98765').number_format(4);
-> -123,456.9876
========================================================*/
String.prototype.number_format = function(decimals,dec_point,thousands_sep){
	if(decimals==null){decimals=999;}	
	if(dec_point==null){dec_point='.';}if(thousands_sep==null){thousands_sep=',';}
	var temp = this.toString().replace(/[^-\.\+\d]/g,'');
	var arr = temp.split(dec_point);
	
	if(arr[1] && arr[1].length>0){arr[1] = arr[1].substr(0,decimals);}
	arr[0] = arr[0].replace(/(\d)(?=(?:\d{3})+(?!\d))/g,'$1'+thousands_sep);
	temp = temp.replace(/(\d)(?=(?:\d{3})+(?!\d))/g,'$1'+thousands_sep)
	if(arr[1] && decimals>0 && arr[1].length>0){return arr[0] + dec_point + arr[1];}
	else {return temp;}
}
Number.prototype.number_format = function(decimals,dec_point,thousands_sep){
	return this.toString().number_format(decimals,dec_point,thousands_sep)
}
function number_format(str,decimals,dec_point,thousands_sep){
	return str.toString(decimals,dec_point,thousands_sep);
}


/*======================================================
limit_string(limit,point);
지정된 아규멘트에 따라서 글자를 제한한다(본 .js문서는 꼭 utf-8로 저장되어야 한글 등의 처리에서 올바르게 동작한다)

limit : 제한 정규식을 생성 인자
point : 구분자(기본값 : , )

limit
/e:알파벳소문자
/E:알파벳대문자
/E:알파벳
/d:숫자
/!d:숫자가 아닌것
/number : 숫자,-,+,.
/s:빈칸인것(일반적으로 같이 사용하면 빈칸이 포함됨)
/!s:빈칸이 아닌것
/ascii:보여질 수 있는 아스키문자
/eng,/kor,/jpn : 각 나라글자
/cjk :한중일 한자
그외 문자열 : 따로 포함되는 한글자(문자열이라도 각각 한글자로 처리된다)

#유니코드는 20000여개 이상의 세계 대부분의 글자가 포함되어있습니다.
그걸 다 제한 처리하는건...힘들죠.
http://www.unicode.org/charts/
이곳에서 원하는 언어를 체크해서 옵션을 만들어서 처리하세요.
limit_string('[시작글자]-[끝글자]') 처럼 해도 됩니다.

ex>
"text TEST 한글 !@#$ ".limit_string('/e') 
-> text
"text TEST 한글 !@#$ ".limit_string('/eng,/s')
-> text TEST 
"text TEST 한글 !@#$ ".limit_string('/kor')
-> 한글
"text TEST 한글 !@#$ ".limit_string('/ascii,/s')
-> text TEST !@#$ 
"text TEST 한글 !@#$ ".limit_string('한,st,/s') //st에서 s라는 글자는 없다
-> tt 한 
========================================================*/
String.prototype.limit_string = function(limit,point){
	if(point==null){point=',';}
	var inv = limit.split(point);
	var inc = inv.length;	
	var regexp=null //new RegExp('pattern',['flags']);
	var reg_str = '';	
	for(var i = 0;i<inc;i++){
		switch(inv[i]){
			//----------- 예외처리
			case '':;
			case null:;
			case false:;
			case undefined:break;
			//----------- 알파벳처리
			case '/e':reg_str+='a-z';break; //알파벳 소문자
			case '/E':reg_str+='A-Z';break; //알파벳 대문자
			case '/eE':reg_str+='a-zA-Z';break; //모든 알파벳
			//----------- 숫자처리
			case '/d':reg_str+='\\d';break; //숫자인것
			case '/!d':reg_str+='\\D';break; //숫자가 아닌 것
			//----------- 숫자형 처리(정확하게 구분하는 것이 아닌, 숫자와 -,+,. 만 구분함)
			case '/number':reg_str+='\\-\\+\\.\\d';break; //숫자가 아닌 것
			//----------- 공백처리
			case '/s':reg_str+='\\s';break; //빈칸인것
			case '/!s':reg_str+='\\S';break;	//빈칸이 아닌것
			//----------- 아스키코드(특수문자 허용)
			case '/ascii':reg_str+='!-~';break;
			//-----------기호만처리
			case '/symbol':reg_str+='!-\\/\\:-@\\{-~';break;
			//----------- 영어글자처리		
			case '/eng':reg_str+='a-zA-Z';break;			
			//----------- 한글글자처리
			case '/kor':reg_str+=
			String.fromCharCode(0x1100)+'-'+String.fromCharCode(0x11FF)
			+String.fromCharCode(0x3130)+'-'+String.fromCharCode(0x318F)
			+String.fromCharCode(0xAC00)+'-'+String.fromCharCode(0xD7AF);break; //모든 한글(반각,전각 자모는 제외)
			case '/kor_jamo':reg_str+=String.fromCharCode(0x1100)+'-'+String.fromCharCode(0x11FF)
			+String.fromCharCode(0x3130)+'-'+String.fromCharCode(0x318F);break; //한글 자모만
			//----------- 얼본어글자처리
			case '/jpn':reg_str+=
			String.fromCharCode(0x3040)+'-'+String.fromCharCode(0x309F)
			+String.fromCharCode(0x30A0)+'-'+String.fromCharCode(0x30FF)
			+String.fromCharCode(0x31F0)+'-'+String.fromCharCode(0x31FF);break; // 모든 일어(반각 일어 제외)
			case '/jpn_hira':reg_str+=String.fromCharCode(0x3040)+'-'+String.fromCharCode(0x309F);break;//히라가나
			case '/jpn_kata':reg_str+=String.fromCharCode(0x30A0)+'-'+String.fromCharCode(0x30FF);break;//카타가나
			case '/jpn_kata_e':reg_str+=String.fromCharCode(0x31F0)+'-'+String.fromCharCode(0x31FF);break;//카타가나확장
			//----------- 한자 글자처리
			//호환,확장 한자의 경우 폰트에따라서 안보일 수 있음.(사용을 추천안함)
			case '/cjk':reg_str+=
			String.fromCharCode(0x4E00)+'-'+String.fromCharCode(0x9FBF)
			+String.fromCharCode(0x3400)+'-'+String.fromCharCode(0x4DBF)
//			+String.fromCharCode(0x020000)+'-'+String.fromCharCode(0x02A6DF)//한중일 공용 한자 확장B 포함안시킴(보통 사용안됨)
			+String.fromCharCode(0xF900)+'-'+String.fromCharCode(0xFAFF)
			+String.fromCharCode(0x3190)+'-'+String.fromCharCode(0x319F)
			+String.fromCharCode(0x2E80)+'-'+String.fromCharCode(0x2EFF) //CJK Radicals (부수?)
			+String.fromCharCode(0x2F00)+'-'+String.fromCharCode(0x2FDF) //KangXi Radicals
			+String.fromCharCode(0x31C0)+'-'+String.fromCharCode(0x31EF); //CJK Strokes
			break;	//모든 한자
			case '/cjk_uni':reg_str+=
			String.fromCharCode(0x4E00)+'-'+String.fromCharCode(0x9FBF);break; //한중일 공용 한자
			case '/cjk_uni_ea':reg_str+=
			String.fromCharCode(0x3400)+'-'+String.fromCharCode(0x4DBF);break; //한중일 공용 한자 확장A
			case '/cjk_uni_eb':reg_str+=
			String.fromCharCode(0x020000)+'-'+String.fromCharCode(0x02A6DF);break; //한중일 공용 한자 확장B
			case '/cjk_com':reg_str+=
			String.fromCharCode(0xF900)+'-'+String.fromCharCode(0xFAFF);break; //한중일 호환 한자
			case '/cjk_com_s':reg_str+=
			String.fromCharCode(0x2F800)+'-'+String.fromCharCode(0x2FA1F);break; //한중일 호환 한자 추가
			case '/cjk_kan':reg_str+=
			String.fromCharCode(0x3190)+'-'+String.fromCharCode(0x319F);break; //Kanbun
			//----------- 그외 글자
			default :
					reg_str+=inv[i];
				break;
		}
	}
	regexp=new RegExp('[^'+reg_str+']','g');
//	alert(regexp);
	return this.toString().replace(regexp,'');
}


/*======================================================
input_limit_string(ta,limit,poin);
지정된 input 객체에 입력값을 제한하도록 한다.
ta : 적용한 input(textarea 등) 대상
limit : 제한 정규식을 생성 인자
point : 구분자(기본값 : , )

추천 limit
'/kor,/symbol,/s':한글+특수기호+빈칸
'/eng,/d' : 영어+숫자 : 아이디용
'/number' : 숫자와 -,+,. 만

ex>
<input type="text" name="textfield" onfocus="input_limit_string(this,'/eng,/n,/s');"/>
========================================================*/
function input_limit_string(ta,limit,point){
	var fn = function(){
		var t = ta.value.limit_string(limit,point);
		if(t != ta.value){
			ta.value=t;
		}
	}
	ta.onclick = fn;
	ta.onblur = fn;
	ta.onkeydown = fn;
	ta.onkeyup = fn;
	ta.onchange = fn;
	ta.onmouseover = fn;
	ta.onmousemove = fn;
	ta.onfocus = null;
	ta.onfocus = fn;
}


/*======================================================
htmlspecialchars([quote_style])
특수 문자를 HTML 엔터티로 변환합니다.
quote_style 
 0:" 만 변환
 1:",' 둘다 변환
 2:변환하지 않음
========================================================*/
String.prototype.htmlspecialchars = function(quote_style){
	if(quote_style==null){quote_style = 0;}
	var t = this;
	t = t.replace(/\&/g,'&amp;');
	if(quote_style<=1){t = t.replace(/\"/g,'&quot;');}
	if(quote_style==1){t = t.replace(/\'/g,'&#039;');}
	t = t.replace(/</g,'&lt;');
	t = t.replace(/>/g,'&gt;');
	return t;
}
function htmlspecialchars(str,quote_style){
	return str.htmlspecialchars(quote_style);
}
/*======================================================
nl2br()
문자열의 모든 줄바꿈 앞에 HTML 줄바꿈 태그를 삽입합니다. 
========================================================*/
String.prototype.nl2br = function(){
	var t = this.replace(/\r\n/g,'\n');
	t = t.replace(/\r/g,'\n');
	t = t.replace(/\n/g,'<br />\n');
	return t;
}
function nl2br(str){
	return str.nl2br();
}
/*======================================================
nl2nl()
\n를 \\n으로 바꾼다(문자열이 한줄로 만들어진다.)
========================================================*/
String.prototype.nl2nl = function(){
	var t = this.replace(/\r\n/g,'\\n');
	t = t.replace(/\r/g,'\\n');
	t = t.replace(/\n/g,'\\n');
	return t;
}
function nl2nl(str){
	return str.nl2nl();
}
/*======================================================
strip_tags()
문자열에서 HTML 태그를 제거합니다.
<xx yy zz> 처럼 된 것을 제거합니다. 짝을 체크하거나 하지는 않습니다.
<xx
yy
zz> 도 제거합니다.
========================================================*/
String.prototype.strip_tags = function(){
	var t = this.replace(/<[^>]+[^>]*|\n*>/gm,'');
	return t;
}
function strip_tags(str){
	return str.strip_tags();
}

/*======================================================
wordwrap()
정해진 문자를 이용해 주어진 수 만큼의 문자를 래핑한다. 
========================================================*/
String.prototype.wordwrap = function(width,break_str,cut){
	if(width==null) width=75;
	if(break_str==null) break_str="\n";
	if(cut==null) cut=1; //0이면 마지막에 단어가 걸리면 자른다. 1이면 단어를 밑으로 내린다.
	var arr = this.split(break_str);
	var arr2 = new Array();
	var arr3 = new Array();
	var temp = ''
	var ol='',ne='',t='';
	if(cut==0){
		var reg = new RegExp('(.{'+width+'})','gm');
		var t = this.replace(reg,'$1\n');
		return t;
	}else{
		for(i=0,m=arr.length;i<m;i++){
			arr3=arr[i].split(' ');
			ne = '';
			for(j=0,mj=arr3.length;j<mj;j++){
				if(ne==''){
					ne+=arr3[j];
				}else if(ne.length+1+arr3[j].length<=width){
					ne+=' '+arr3[j];
				}else{
					arr2.push(ne);ne = arr3[j];
				}
			}
			if(ne!=''){arr2.push(ne);}
		}		
		return arr2.join(break_str);
	}
}
function wordwrap(str,break_str,cut){
	return str.wordwrap(break_str,cut);
}
/*======================================================
autolink()
문자열에서 URL에 해당되는 문자열을 하이퍼링크로 만든다

참고링크
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=14253&sca=&sfl=wr_subject%7C%7Cwr_content&stx=js+%C0%DA%B5%BF%B8%B5%C5%A9&sop=and
========================================================*/
String.prototype.autolink = function(){
	var str = this;
	var regURL = new RegExp("(http|https|ftp|telnet|news|irc)(://)([-/.a-zA-Z0-9_~#%$?&;=:200-377()]+)","gi");
	var regEmail = new RegExp("([xA1-xFEa-z0-9_-]+@[xA1-xFEa-z0-9-]+\.[a-z0-9-]+)","gi");
	var result = str.replace(regURL,"<a href='$1$2$3' target='_blank'>$1$2$3</a>").replace(regEmail,"<a href='mailto:$1'>$1</a>");
	return result;
}
function autolink(str){
	return str.autolink();
}