var LightboxOptions = {
    fileLoadingImage:        '/js/lightbox/images/loading.gif',
    fileBottomNavCloseImage: '/js/lightbox/images/closelabel.gif',

    overlayOpacity: 0.2,   // controls transparency of shadow overlay

    animate: false,         // toggles resizing animations
    resizeSpeed: 10,        // controls the speed of the image resizing animations (1=slowest and 10=fastest)

    borderSize: 10,         //if you adjust the padding in the CSS, you will need to update this variable

	// When grouping images this is used to write: Image # of #.
	// Change it for non-english localization
	labelImage: "ÀÌ¹ÌÁö",
	labelOf: "/"
}

// ##########################################################
// º» .js¹®¼­´Â ²À utf-8·Î ÀúÀåµÇ¾î¾ß ÇÑ±Û µîÀÇ Ã³¸®¿¡¼­ ¿Ã¹Ù¸£°Ô µ¿ÀÛÇÑ´Ù
// ´Ù¸¥ ÀÎÄÚµù¿¡¼­ »ç¿ëÇÏ·Á¸é ÀÌ ÆÄÀÏÀ» utf-8·Î ÀúÀåÇÏ°í
// <script charset="utf-8" language="JavaScript" src="util.js"></script>
// ·Î html ¹®¼­¿¡ »ðÀÔÇÑ´Ù.

//window.onerror = function(a,b,c) {return true;}

// ¿À¹ö·¹ÀÌ ·¹ÀÌ¾î¿Í ·ÎµùÁß.... ¸Þ¼¼Áö¸¦ Ãâ·ÂÇÏ°í ÆûÀ» Submit ÇÔ
// option.msgStr : ·ÎµùÁß Ç¥½ÃºÎºÐ¿¡ Ç¥½ÃÇÒ ¹®ÀÚ¿­
// option.msgElement : È­¸é¿¡ Ç¥½ÃÇÒ ³»¿ë (msgElement.innerHtmlÀ» »ç¿ë)
// option.width : Æø
// option.height : ³ôÀÌ
// LYG : FIX: show overlay div is BLACK in IE7 (IE7¿¡¼­ ¿À¹ö·¹ÀÌ ·¹ÀÌ¾î°¡ °Ë°Ô ³ª¿À´Â °Í ¹æÁö)
// ·¹ÀÌ¾î ³ôÀÌ°¡ 2048 ÀÌ»óÀÌ¸é filter : filter: alpha(opacity=50) °¡ ¾È¸ÔÀ½
overlaySubmitForm = function (frm, option) {
	var option = option || {};
	var pageSize = getPageSize();
	var overlayHeight = pageSize[1]>2000 ? 2000 : pageSize[1];

	var arrayPageScroll = document.viewport.getScrollOffsets();
	var yTop = arrayPageScroll[1]+pageSize[3]/2 - overlayHeight/2;
	if(yTop<0) yTop = 0;
	if(yTop+overlayHeight>pageSize[1]) yTop = pageSize[1]-overlayHeight;

	var objBody = document.getElementsByTagName("body").item(0);
	if(document.getElementById('overlay') == null) {
		var objOverlay = document.createElement("div");
		objOverlay.setAttribute('id','overlay');
		objBody.appendChild(objOverlay);
	} else {
		objOverlay = document.getElementById('overlay');
	}
	objOverlay.style.display = 'none';
	objOverlay.style.position = 'absolute';
	objOverlay.style.top = yTop;
	objOverlay.style.left = 0;
	objOverlay.style.width = pageSize[0] + 'px';
	objOverlay.style.height = overlayHeight + 'px';

	var loadingWidth = option.width || 200;
	var loadingHeight = option.height || 80;
	var msgStr = option.msgStr || "·ÎµùÁß ...";
	var msgHtml = option.msgElement || "<table width=100% height=100% bgcolor=white style=\"border:1px solid #444444\"><tr><td align=center><img src=\""+LightboxOptions.fileLoadingImage+"\"></td></tr><tr><td align=center><span style=\"font-weight:bold; font-size:10pt\">"+msgStr+"</span></td></tr></table>";
	if(typeof msgHtml == 'object') msgHtml = msgHtml.innerHtml;

	var objLoading = document.createElement("div");
	objLoading.setAttribute('id','objFormLoading');
	objLoading.style.position = 'absolute';
	objLoading.style.width = loadingWidth;
	objLoading.style.height = loadingHeight;
	objLoading.style.zIndex = 91;
	objBody.appendChild(objLoading);
	var el = Ext.get('objFormLoading');
	el.update(msgHtml);
	center(el.dom);
	//Element.show('objFormLoading');

	ShowHideSelect(false);	// ¼¿·ºÆ®¹Ú½º ¼û±è
	ShowHideFlash(false);	// ÇÃ·¡½¬ ¼û±è

	//frm.submit();
	new Effect.Appear('overlay', { duration: 0.0, from: 0.0, to: LightboxOptions.overlayOpacity, afterFinish: function(){frm.submit();} });
}
getPageSize = function() {
	var xScroll, yScroll;

	if (window.innerHeight && window.scrollMaxY) {
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}

	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}

	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else {
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
	return arrayPageSize ;
};

center  = function (element){
    try{
		if( typeof element == 'string' )
			element = document.getElementById(element);
		if( typeof element == 'undefined')
			return;
    }catch(e){
        return;
    }

    var my_width  = 0;
    var my_height = 0;

    if ( typeof( window.innerWidth ) == 'number' ){
        my_width  = window.innerWidth;
        my_height = window.innerHeight;
    }else if ( document.documentElement &&
             ( document.documentElement.clientWidth ||
               document.documentElement.clientHeight ) ){
        my_width  = document.documentElement.clientWidth;
        my_height = document.documentElement.clientHeight;
    }
    else if ( document.body &&
            ( document.body.clientWidth || document.body.clientHeight ) ){
        my_width  = document.body.clientWidth;
        my_height = document.body.clientHeight;
    }

    element.style.position = 'absolute';
    element.style.zIndex   = 99;

    var scrollY = 0;

    if ( document.documentElement && document.documentElement.scrollTop ){
        scrollY = document.documentElement.scrollTop;
    }else if ( document.body && document.body.scrollTop ){
        scrollY = document.body.scrollTop;
    }else if ( window.pageYOffset ){
        scrollY = window.pageYOffset;
    }else if ( window.scrollY ){
        scrollY = window.scrollY;
    }

    var elementDimensions = Element.getDimensions(element);

    var setX = ( my_width  - elementDimensions.width  ) / 2;
    var setY = ( my_height - elementDimensions.height ) / 2 + scrollY;

    setX = ( setX < 0 ) ? 0 : setX;
    setY = ( setY < 0 ) ? 0 : setY;

    element.style.left = setX + "px";
    element.style.top  = setY + "px";

    element.style.display  = 'block';
}


// ---------------------------------------------------
// layer µîÀ» À§ÇÑ selectbox, flash ¾÷¾Ö°í º¸¿©ÁÖ±â À§ÇÑ ÇÔ¼ö
// ex) ShowHideFlash(false); // ÆäÀÌÁö³» ¸ðµç ÇÃ·¡½¬ ¼û±è
ShowHideSelect = function(show){
	var visibility = show ? 'visible' : 'hidden';
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = visibility;
	}
}
ShowHideFlash = function(show){
	var visibility = show ? 'visible' : 'hidden';
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = visibility;
	}

	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = visibility;
	}
}

// form¿¡¼­ aaa[] Çü½ÄÀÇ ¹è¿­·Î µÈ input °ªµéÀÇ validation check
// frm : Ã¼Å©ÇÒ form
// name : Ã¼Å©ÇÒ formÀÇ ÀÌ¸§
// minLen : 0º¸´Ù Å¬ °æ¿ì ÃÖ¼Ò ¹®ÀÚ¿­ ±æÀÌ
// maxLen : 0º¸´Ù Å¬ °æ¿ì ÃÖ´ë ¹®ÀÚ¿­ ±æÀÌ
// reg : limit_string À¸·Î Ã¼Å© (limit_string Âü°í)
// point : regÀÇ ±¸ºÐÀÚ (limit_string Âü°í)
// minVal : ¼ýÀÚÀÏ°æ¿ì ÃÖ¼Ò°ª
// maxVal : ¼ýÀÚÀÏ°æ¿ì ÃÖ´ë°ª
// checkHidden : trueÀÌ¸é type=hiddenÇÊµå´Â Ã¼Å©ÇÏÁö ¾ÊÀ½
//
checkFormArray = function(frm, name, minLen, maxLen, reg, point, minVal, MaxVal, checkHidden)
{
	for (var i=0;i<frm.elements.length;i++)
	{
		var e = frm.elements[i];
		if(e.name==name) {
			var value = null;
			if(!checkHidden && e.type == 'hidden') continue;
			if(e.type == 'text' || e.type == 'hidden') value=e.value;
			if(e.type == 'select-one') value=e.options[e.selectedIndex];
			if(minLen && minLen>0 && value.ByteCount()<minLen) {e.focus(); return false;}
			if(maxLen && maxLen>0 && value.ByteCount()>maxLen) {e.focus(); return false;}
			if(reg && !value.limit_string(reg, point)) {e.focus(); return false;}
			if(minVal && (!value.limit_string('/d') || Number(value,10)<minVal)) { e.focus(); return false; }
			if(MaxVal && (!value.limit_string('/d') || Number(value,10)>MaxVal)) { e.focus(); return false; }
		}
	}
	return true;
}

is_available_element = function (el)
{
	try
	{
		el = ""+el+"";
		if(typeof(el)!='string') {
			alert("argument is not string type.");
			return false;
		}

		var arr = el.split(".");
		var elname='';
		for(var i=0;i<arr.length;i++) {
			if(i==0) elname = arr[i];
			else elname = elname+'.'+arr[i];
			var atype = typeof(eval(elname));
			if(atype=='undefined' || atype=='unkown')
				return false;
		}
		return true;
	}
	catch (e)
	{
		return false;
	}
}

// Check if numeric key
IsDigit = function () {
	// onkeydown="IsDigit()" style="ime-mode:disabled"
	if(
		((event.keyCode >= 48) && (event.keyCode <= 57)) ||	// keyboard
		((event.keyCode >= 96) && (event.keyCode <= 105)) ||	// keypad
		(event.keyCode == 9) ||	// tab
		(event.keyCode == 10)||	// enter
		((event.keyCode >= 35) && (event.keyCode <= 40)) ||	// arrow and home,end
		(event.keyCode == 45)||	(event.keyCode == 46)||	// insert, delete
		(event.keyCode == 8) ||	(event.keyCode == 144)	// BS, NumLock
		)
		event.returnValue = true;
	else event.returnValue = false;
}


// Save cookie value
// sName : Variable name of cookie
// sValue : Cookie value
// nDays : expire date
setCookie = function ( sName, sValue, nDays ) {
	var expires = "";
	if ( nDays ) {
		var d = new Date();
		d.setTime( d.getTime() + nDays * 24 * 60 * 60 * 1000 );
		expires = "; expires=" + d.toGMTString();
	}

	document.cookie = sName + "=" + sValue + expires + "; path=/";
};


// Get cookie value
// sName : Variable name of cookie
getCookie = function (sName) {
	var re = new RegExp( "(\;|^)[^;]*(" + sName + ")\=([^;]*)(;|$)" );
	var res = re.exec( document.cookie );
	return res != null ? res[3] : null;
};

// Delete cookie value
// sName : Variable name of cookie
removeCookie = function ( name ) {
	setCookie( name, "", -1 );
};




// <select> ÅÂ±×ÀÇ °ªÀ» ¼±ÅÃ
PutSelValue = function(oselect, value) {
	for(i=0; i<oselect.options.length; ++i) {
		if(oselect.options[i].value==value) {
			oselect.selectedIndex = i;
			return;
		}
	}
}

// <select> ÅÂ±×¿¡¼­ ¼±ÅÃµÈ °ªÀ» °¡Á®¿È
GetSelValue = function (oSel) {
	return oSel.options[oSel.selectedIndex].value;
}





/*========================================================
js_string
--------------------------------=-------
¹®ÀÚ¿­ Á¦¾î ÇÔ¼ö,ÇÁ·ÎÅäÅ¸ÀÔ ¸ðÀ½
========================================================*/

/*======================================================
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,'');
}
trim = function(s) {s.toString().trim();}
rtrim = function(s) {s.toString().rtrim();}
ltrim = function(s) {s.toString().ltrim();}
/*======================================================
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 arr = this.toString().replace(/[^-\.\+\d]/g,'').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);
	if(arr[1] && decimals>0 && arr[1].length>0){return arr[0] + dec_point + arr[1];}
	else {return arr[0];}
}
Number.prototype.number_format = function(decimals,dec_point,thousands_sep){
	return this.toString().number_format(decimals,dec_point,thousands_sep)
}
number_format = function(str,decimals,dec_point,thousands_sep){
	return str.toString().number_format(decimals,dec_point,thousands_sep);
}

// value ¾Õ¿¡ len ±æÀÌ°¡ µÇµµ·Ï '0'À» ºÙÀÎ´Ù.
// ¸®ÅÏ Å¸ÀÔÀº ¸ðµÎ String
String.prototype.fillzero = function (len) {
	var ret="";
	var value = Number(this.toString());  len = Number(len);

	for(var i=0; i<len; ++i) {
		ret = ( value % 10 ) +""+ ret;
		value = Math.floor(value/10);
	}
	return(ret);
}
Number.prototype.fillzero = function(len){
	return this.toString().fillzero(len);
}
fillzero = function(str,len){
	return str.toString().fillzero(len);
}


// URLEncoding
String.prototype.urlencode = function () {
	return encodeURIComponent(this);
}
urlencode = function(str)  { return str.toString().urlencode(); }

//ÁöÁ¤µÈ ¹ÙÀÌÆ® ±æÀÌ¸¸Å­ÀÇ length¸¦ ¹ÝÈ¯, È¦¼ö·Î Â©¸®¸é -1ÀÇ ±æÀÌ¹ÝÈ¯
String.prototype.SubStrByteCount = function(limit_byte) {
	var str=this.toString();
	var i,m=str.length, re_count=0,val = 0;;
	var len_count = 0;
	for(i=0;re_count<limit_byte ;i++) {
		val = escape(str.charAt(i)).length;
		len_count++;
		if(val>3) re_count++;
		re_count++;
	}
	if(re_count%2 == 1)  return (len_count-1);
	else  return (len_count);
}

// Byte count
// Korean is 2 bytes
String.prototype.ByteCount = function () {
	var str=this.toString();
	var i,m=str.length,re_count=0,val=0;
	for(i=0;i<m;i++) {
		val = escape(str.charAt(i)).length;
		if(val>3) re_count++;
		re_count++;
	}
	return re_count;
}
ByteCount = function(str) { return str.toString().ByteCount(); };

// check space is included in string
String.prototype.checkspace = function ()
{
	var str = this.toString();
	if (str.indexOf(" ") >= 0) return false;
	return true;
}

checkspace = function(str) { return str.toString().checkspace(); };

/*======================================================
number_to_hangul()
¼ýÀÚ¸¦ ÇÑ±ÛÇ¥Çö½ÄÀ¸·Î º¸¿©ÁØ´Ù.
st_postion : Á¤¼ö ºÎºÐ¿¡¼­ ÀÚ¸¦ºÎºÐ(4´ÜÀ§·Î ²÷À½)
decimals : ¼Ò¼ö ÀÚ¸¦ºÎºÐ(¹ö¸²À¸·Î Ã³¸®)
type_number : ¼ýÀÚÃâ·ÂÇü½Ä(1:ÇÑ±Û·Î,0:¼ýÀÚ·Î);
type_thousands : °¢¼ýÀÚ´ÜÀ§(½Ê¹éÃµ,¼Ò¼ö´ÜÀ§) Ãâ·Â¼³Á¤(1:Ãâ·ÂÇÔ,0:Ãâ·Â¾ÈÇÔ), 1ÀÏ°æ¿ì ¼Ò¼öÁ¡Àº ' '·Î ´ëÃ¼µÊ
ex)
"-123,456,789.123456".number_to_hangul();
	-> À½¼ö ÀÏ¾ïÀÌÃµ»ï¹é»ç½Ê¿À¸¸À°ÃµÄ¥¹éÆÈ½Ê±¸ ÀÏÇÒÀÌºÐ»ï¸®»ç¸ð¿À»çÀ°È¦
"-123,456,789.123456".number_to_hangul(8,0,1,0);
	-> À½¼ö ÀÏ¾ï
"-123,456,789.123456".number_to_hangul(4,2,0,0);
	-> -1¾ï2345¸¸.12
"-123,456,789.123456".number_to_hangul(4,0,0,0);
	-> -1¾ï2345¸¸
========================================================*/
String.prototype.number_to_hangul = function(st_postion,decimals,type_number,type_thousands){
//¼ýÀÚ¸¦ ¿Ïº®ÇÏ°Ô ÇÑ±Û·Î ¹Ù²ãÁØ´Ù.
	if(type_number==null){type_number=1;} if(type_thousands==null){type_thousands=1;}
	if(st_postion==null){st_postion=0;}	st_postion = (Math.floor(st_postion/4)-1);
	if(decimals==null){decimals=22;}

	var this_arr = this.toString().replace(/[^-\.\+\d]/g,'').split('.');
	if(type_number==1){
		var k = Array("", "ÀÏ","ÀÌ","»ï","»ç","¿À","À°","Ä¥","ÆÈ","±¸"); // ¼ýÀÚÀÇ ÇÑ±Û¹ßÀ½
	}else{
		var k = Array("", "1","2","3","4","5","6","7","8","9");
	}
	if(type_number==1 || type_thousands==1){
		var j1 = Array("","½Ê","¹é","Ãµ"); // ÀÚ¸®¼öÀÇ ÇÑ±Û¹ßÀ½(4ÀÚ¸¶´Ù ¹Ýº¹)
		var j3 = Array("ÇÒ","ºÐ","¸®","¸ð","»ç","È¦","¹Ì","¼¶","»ç","Áø","¾Ö","¹¦","¸·","¸ðÈ£","ÁØ¼ø","¼öÀ¯","¼ø½Ä","ÅºÁö","Âû³ª","À°´ö","Çã°ø","Ã»Á¤"); // ´ÜÀ§ÀÇ ÇÑ±Û¹ßÀ½(4ÀÚ¸¶´Ù)
	}else{
		var j1 = Array("","","",""); // ÀÚ¸®¼öÀÇ ÇÑ±Û¹ßÀ½(4ÀÚ¸¶´Ù ¹Ýº¹)
		var j3 = Array("","","","","","","","","","","","","","","","","","","","","",""); // ´ÜÀ§ÀÇ ÇÑ±Û¹ßÀ½(4ÀÚ¸¶´Ù)
	}
	var j2 = Array("","¸¸","¾ï","Á¶","°æ","ÇØ","ÀÚ","¾ç","±¸","°£","Ã»","Àç","±Ø","Ç×ÇÏ»ç","¾Æ½Â±â","³ªÀ¯Å¸","ºÒ°¡»çÀÇ","¹«·®´ë¼ö"); // ´ÜÀ§ÀÇ ÇÑ±Û¹ßÀ½(4ÀÚ¸¶´Ù)
	//---------±âÈ£Ã³¸®
	if((/[^\d]/).test(this_arr[0].substr(0,1))){var n0 = this_arr[0].substr(0,1);} //±âÈ£Ã³¸®
	else{var n0 = '';}
	if(type_number==1){
		if(n0=='-'){n0='À½¼ö ';}
		else if(n0=='+'){n0='¾ç¼ö ';}
	}
	//--------- Á¤¼öÃ³¸®
	var n1 = this_arr[0].replace(/[^\d]/,'');
	var arr = Array(Math.ceil(n1.length/4));
	var c_count = 0;
	for(var i = (n1.length-1);i>=0;i--){
		var x = Math.floor(c_count/4);
		if(!arr[x]){arr[x]='';}
		arr[x]=k[n1.substr(i,1)]+j1[c_count%4]+arr[x];
		c_count++;
	}
	for(var i = 0,m=arr.length;i<m;i++){
		if(st_postion<i){
			if(j2[i]!='' && !j2[i]){
				//arr[i]+='_ERROR_'; //´ÜÀ§±ÛÀÚ°¡ ¾ø´Â ³Ê¹« Å« ¼öÀÏ °æ¿ì ¿©±â¼­ ¿¡·¯
			}else{arr[i]+=j2[i];}
		}else{arr[i]='';}
	}
	arr.reverse();
	n1 = arr.join('');
	//--------¿©±â±îÁö Á¤¼ö Ã³¸®
	//-------- ¼Ò¼ö Ã³¸®
	var n2 = '';
	if(this_arr[1] && this_arr[1].length>0){
		n2 = this_arr[1].substr(0,decimals);
		var n2_t = String('');
		for(var i=0,m=n2.length;i<m;i++){
			if(j3[i]!=''&&!j3[i]){	break;
				//n2_t+='_ERROR_'; //´ÜÀ§±ÛÀÚ°¡ ¾ø´Â ³Ê¹« ÀÛÀº ¼Ò¼öÀÏ °æ¿ì ¿©±â¼­ ¿¡·¯
			}else{n2_t+=k[n2.substr(i,1)]+j3[i];}
		}
		if(decimals==0){n2='';}
		else if(type_thousands==1){n2 = " "+n2_t;}
		else{n2 = "."+n2_t;	}
	}
	//------- ¸®ÅÏ
	return n0+n1+n2;
}
Number.prototype.number_to_hangul = function(st_postion,decimals,type_number,type_thousands){
	return this.toString().number_to_hangul();
}
function number_to_hangul(str,st_postion,decimals,type_number,type_thousands){
	return str.toString().number_to_hangul();
}

/*======================================================
limit_string(limit,point);

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();
}

/*======================================================
han_split()
ÇÑ±ÛÀ» ÃÊ,Áß,Á¾ À¸·Î ³ª´²ÁØ´Ù.
°á°ú°ªÀº ¹è¿­
ÇÑ±ÛÀÌ ¾Æ´Ñ°Ç ±×³É ±×´ë·Î Ãâ·Â
ex>
ÇÏ´Ã AbC
->
Array(
	Array('¤¾','¤¿',''),
	Array('¤¤','¤Ñ','¤©'),
	' ',
	'A',
	'b',
	'C'
);

========================================================*/
function han_split(str){
	return str.han_split();
}
String.prototype.han_split = function(){
	return this.han_split_han();
}
String.prototype.han_split_int = function(){
	var str = this;
	var char_st = 44032 ;
	var char_ed = 55203 ;
	var str_arr = Array(str.length);

	for(var i=0,m=str.length;i<m;i++){
		var char = str.charAt(i);
		var uninum = char.charCodeAt(0);
		if(uninum < char_st || uninum > char_ed){
			str_arr[i]=char; //ÇÑ±ÛÀÌ ¾Æ´Ô
			continue;
		}
		var uninum2 = uninum-char_st;
		var arr_1st_v = Math.floor(uninum2/588);
		uninum2 = uninum2%588;
		var arr_2nd_v = (Math.floor(uninum2/28));
		uninum2 = (uninum2%28);
		var arr_3th_v = uninum2;
		str_arr[i] = Array(arr_1st_v,arr_2nd_v,arr_3th_v);
	}
	return str_arr;
}
String.prototype.han_split_han = function(){
	var str_arr = this.han_split_int();
	var arr_1st= Array('¤¡','¤¢','¤¤','¤§','¤¨','¤©','¤±','¤²','¤³','¤µ','¤¶','¤·','¤¸','¤¹','¤º','¤»','¤¼','¤½','¤¾');//ÃÊ¼º 19°³
	var arr_2nd= Array('¤¿','¤À','¤Á','¤Â','¤Ã','¤Ä','¤Å','¤Æ','¤Ç','¤È','¤É','¤Ê','¤Ë','¤Ì','¤Í','¤Î','¤Ï','¤Ð','¤Ñ','¤Ò','¤Ó');//Áß¼º 21°³
	var arr_3th= Array('','¤¡','¤¢','¤£','¤¤','¤¥','¤¦','¤§','¤©','¤ª','¤«','¤¬','¤­','¤®','¤¯','¤°','¤±','¤²','¤´','¤µ','¤¶','¤·','¤¸','¤º','¤»','¤¼','¤½','¤¾');//Á¾¼º 28°³
	for(var i =0,m=str_arr.length;i<m;i++){
		var arr = str_arr[i];
		if(arr.length<2) continue;
		str_arr[i] = Array(arr_1st[arr[0]],arr_2nd[arr[1]],arr_3th[arr[2]]);
	}
	return str_arr;
}

// °´Ã¼°¡ À§Ä¡ÇÑ Àý´ë top °è»ê
function getAbsoluteTop(obj) {

    var iTop=0;
    while(obj.tagName != 'BODY') {
        iTop += obj.offsetTop;
        obj = obj.offsetParent;
    }
    return iTop;
}

// °´Ã¼°¡ À§Ä¡ÇÑ Àý´ë left °è»ê
function getAbsoluteLeft(obj) {

    var iLeft=0;
    while(obj.tagName != 'BODY'){
        iLeft += obj.offsetLeft;
        obj = obj.offsetParent;
    }
    return iLeft;
}


var browserPos = {
/*
Browser: MSIE7, Firefox3, Safari3, Opera9
DTD: Quirks, Strict XHTML 1.0, Strict HTML 4.01
Update: 2008-09-02
Ex)
 browserPos.get_width(string)
 browserPos.set_width(string,integer)
*/
	 get_left  : function(idntty) { return parseInt(document.getElementById(idntty).style.left  ); }
	,get_top  : function(idntty) { return parseInt(document.getElementById(idntty).style.top  ); }
	,get_width  : function(idntty) { return parseInt(document.getElementById(idntty).style.width ); }
	,get_height  : function(idntty) { return parseInt(document.getElementById(idntty).style.height); }
	,set_left  : function(idntty,nmbr) { document.getElementById(idntty).style.left  = nmbr+"px"; }
	,set_top  : function(idntty,nmbr) { document.getElementById(idntty).style.top    = nmbr+"px"; }
	,set_width  : function(idntty,nmbr) { document.getElementById(idntty).style.width  = nmbr+"px"; }
	,set_height  : function(idntty,nmbr) { document.getElementById(idntty).style.height = nmbr+"px"; }

	,get_scroll_left : function(idntty) {
		if(document.body.scrollLeft) return document.body.scrollLeft;
		else return document.documentElement.scrollLeft;
	}
	,get_scroll_top : function(idntty) {
		if(document.body.scrollTop) return document.body.scrollTop;
		else return document.documentElement.scrollTop;
	}
	,set_scroll_left : function(nmbr) {
		document.body.scrollLeft = nmbr;
		document.documentElement.scrollLeft = nmbr;
	}
	,set_scroll_top : function(nmbr) {
		document.body.scrollTop = nmbr;
		document.documentElement.scrollTop = nmbr;
	}
	,client_width : function() {
		if(typeof(document.compatMode)=='undefined' ) return document.documentElement.clientWidth;
		else if(document.compatMode  =='BackCompat') return document.body.clientWidth;
		else if(document.compatMode  =='CSS1Compat') return document.documentElement.clientWidth;
	}
	,client_height : function() {
		if(typeof(document.compatMode)=='undefined' ) return document.documentElement.clientHeight;
		else if(document.compatMode  =='BackCompat') return document.body.clientHeight;
		else if(document.compatMode  =='CSS1Compat') return document.documentElement.clientHeight;
	}
	,client_x : function(e) {
		if(e) return e.clientX; else  return event.clientX;
	}
	,client_y : function(e) {
		if(e) return e.clientY; else  return event.clientY;
	}
};


// Å©·Î½º ºê¶ó¿ìÀú¿ë ÀÌº¥Æ® ÁöÁ¤
// ex) bindEvent(document, 'load', documentOnLoadFunction);
function bindEvent(element, event, callback){
  if (element.addEventListener)
    element.addEventListener(event, callback, false);
  else if (element.attachEvent)
    element.attachEvent("on" + event, callback);
}
// window.onload, window.onunload ´ë½Å »ç¿ë
// addLoadEvent( onloadÇÒ ÇÔ¼ö1 );
// addLoadEvent( onloadÇÒ ÇÔ¼ö2 );
// prototype »ç¿ë½Ã¿¡´Â Event.observe(window, 'load', function() {}); ÇÏ¸é µÊ
var addLoadEvent = function (func) {   var oldonload = window.onload;      if (typeof window.onload != 'function') {        window.onload = func;      } else {        window.onload = function() {          if (oldonload) {            oldonload();          }          func();        }      }   }
var addUnLoadEvent = function (func) {   var oldonunload = window.onunload;      if (typeof window.onunload != 'function') {        window.onunload = func;      } else {        window.onunload = function() {          if (oldonunload) {            oldonunload();          }          func();        }      }   }

// »ç¾÷ÀÚ µî·Ï¹øÈ£ °Ë»ç('-'»« ¼ýÀÚ 12ÀÚ¸®)
is_binNo = function (num) {
	var reg = /([0-9]{3})-?([0-9]{2})-?([0-9]{5})/;
	if (!reg.test(num)) return false;
	num = RegExp.$1 + RegExp.$2 + RegExp.$3;
	var cVal = 0;
	for (var i=0; i<8; i++) {
		var cKeyNum = parseInt(((_tmp = i % 3) == 0) ? 1 : ( _tmp  == 1 ) ? 3 : 7);
		cVal += (parseFloat(num.substring(i,i+1)) * cKeyNum) % 10;
	}
	var li_temp = parseFloat(num.substring(i,i+1)) * 5 + '0';
	cVal += parseFloat(li_temp.substring(0,1)) + parseFloat(li_temp.substring(1,2));
	return (parseInt(num.substring(9,10)) == 10-(cVal % 10)%10);
}

// ÁÖ¹Îµî·Ï¹øÈ£,¿Ü±¹ÀÎ µî·Ï¹øÈ£ °Ë»ç(-»« ¼ýÀÚ 13ÀÚ¸®)
checkPersonalNo = function(personal_no)
{
    personal_no = personal_no.replace(/[^\d]+/g, '');
    pattern = /^[0-9]{6}[1-8][0-9]{6}$/;

    if(!pattern.test(personal_no)) {
        return false;
    }
    var birth = new Array();
    birth[0] = personal_no.substr(0, 2);
    switch(personal_no.charAt(6)) {
    case '1':
    case '2':
        birth[0] = ('19' + birth[0]) * 1;
        birth[3] = false;
        break;
    case '3':
    case '4':
        birth[0] = ('20' + birth[0]) * 1;
        birth[3] = false;
        break;
    case '5':
    case '6':
        birth[0] = ('19' + birth[0]) * 1;
        birth[3] = true;
        break;
    case '7':
    case '8':
        birth[0] = ('20' + birth[0]) * 1;
        birth[3] = true;
        break;
    /*case '9': // ÀÌ·¸°Ô ´ÄÀº »ç¶÷Àº ÀÖ¾îµµ ¾È¹Þ¾Æ¿ä. À§ÀÇ Á¤±Ô½Ä¿¡¼­ ¾È¹ÞÀ½.
    case '0':
        birth[0] = ('18' + birth[0]) * 1;
        birth[3] = true;
        break;*/
    }

    birth[1] = personal_no.substr(2, 2) * 1;
    birth[2] = personal_no.substr(4, 2) * 1;

    if(birth[1] < 1 || birth[1] > 12) {
        return false;
    }
    if(birth[2] < 1 || birth[2] > 31) {
        return false;
    }
    var check = 0;
    var mul = 2;

    if(birth[3]) {
        if(((personal_no.charAt(7) * 10 + personal_no.charAt(8)) % 2) != 0) {
            return false;
        }
    }
    for(i = 0; i < 12; i ++) {
        check += personal_no.charAt(i) * mul;
        mul ++;
        if(mul > 9) {
            mul = 2;
        }
    }

    check = 11 - (check % 11);

    if(check > 9) {
        check %= 10;
    }
    if(birth[3]) {
        check += 2;
        if(check > 9) {
            check %= 10;
        }
    }
    if(check != personal_no.charAt(12)) {
        return false;
    }
    return birth;
}