/**
 * @author Jan Jun Young (gmgjy@lycos.co.kr)
 * include file : prototype.js
 * charset : euc-kr
 */

//Ajax·Îµù È­¸é Ç¥½Ã (»ç¿ë¾ÈÇÒ½Ã ÁÖ¼®Ã³¸®)
/*
var myGlobalHandlers = {
	onCreate: function(){
		Element.show('systemWorking');
		$('systemWorking').style.top=Event.pointerY(event);
		$('systemWorking').style.left=Event.pointerX(event);
	},

	onComplete: function() {
		if (Ajax.activeRequestCount == 0){
			Element.hide('systemWorking');
		}
	}
};
Ajax.Responders.register(myGlobalHandlers);
MSG = "<img src='http://211.115.213.155/wingstudy_cms/img/loading.gif' />";
document.write("<div id='systemWorking' style='position:absolute;display:none;z-index:999'>"+MSG+"</div>");
*/

var SC	=  new Object();
/****************************************************************************/
// url·Î paramÀ» Àü´ÞÇÏ¿© °á°ú ÆäÀÌÁö¸¦ ELementId¿¡ ³ªÅº³½´Ù.
/****************************************************************************/
//Input : URL, ÆÄ¶ó¸ÞÅÍ, º¯°æ½ÃÅ³ DIVÅÂ±×id, Àü¼ÛÅ¸ÀÔ, eval½ÇÇà ¿©ºÎ
SC.Ajax	= function(url, param, ElementId, $reqType, $evalScripts)
{
	if (!$reqType || $reqType == "")		{ $reqType	= 'GET';}
	if (!$evalScripts || $evalScripts == "")	{ $evalScripts	= false;}

	var myAjax	= new Ajax.Updater(
			{success: ElementId}, 				//¼º°ø½Ã È­¸é º¯°æ
			url, 						//URL
			{
				method : $reqType.toUpperCase(), 	//Àü¼Û¹æ½Ä  ±âº»°ª POST
				parameters : param, 			//ÆÄ¶ó¸ÞÅÍ
				onFailure : reportError,		//½ÇÆä½Ã ¿¡·¯ Ãâ·Â
				evalScripts: $evalScripts
			});
}
//¿¡·¯¹ß»ý½Ã
function reportError()
{
	alert('¿¡·¯¹ß»ý. Àá½ÃÈÄ ´Ù½Ã ½ÃµµÇÏ¿© ÁÖ¼¼¿ä.');
}


//url ÀÇ ³»¿ëÀ» $frequency °£°Ý¸¶´Ù ElementId¾÷µ¥ÀÌÆ® ÇØ¼­ º¸¿©ÁÖ±â
SC.PeriodicalUpdater = function(url, ElementId, $frequency, $decay, $reqType)
{
	if (!$frequency || $frequency == "")	{ $frequency	= 3.0; }
	if (!$decay || $decay =="")		{ $decay 	= 1; }				//reqType¹ÌÁöÁ¤½Ã ±âº»°ª POST
	if (!$reqType || $reqType == "")	{ $reqType 	= 'post';}

	var myAjax	= new Ajax.PeriodicalUpdater(
			ElementId,
			url,
			{
				method: 'post',
				frequency: $frequency,
				decay: $decay
			}
			);
}


//responseText·Î ¹Þ¾Æ¿À±â
/*
SC.getText	= function(url, param, $reponseType, $reqType)
{
	var reponseType	= ($reponseType) ? $reponseType : "TEXT";
	var reqType	= ($reqType) ? $reqType : "POST";
	var req	= Ajax.getTransport();
	req.open(reqType, url, true);
	req.onreadystatechange = function(){
		if (req.readyState == 4)
		{
			if (req.status == 200)
			{
				if (reponseType.toUpperCase() == "TEXT") {
					return req.responseText;
				} else {
					return req.responseXML;
				}

			}
		}
	}
	if (reqType.toUpperCase() == "POST") {
		req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		req.send(param);
	}
}
*/
/***************************************¼¼ºÎÀû Æû°ª Ã¼Å©***************************************************
*
* chk °ªÀÌ y ÀÏ°æ¿ì ¹«Á¶°Ç Ã¼Å©, n ÀÏ°æ¿ì °ªÀÌ ÀÖÀ¸¸é Ã¼Å©
------------------------------------------------------------------------
* @objform    : ÆûÀÌ¸§(this È¤Àº document.formname)
------------------------------------------------------------------------
* »ç¿ë¹ý ¿¹Á¦ (¿µ¾î,¼ýÀÚ¸¸ 4~12±ÛÀÚ·Î ¹Þ´Â´Ù)
<table border="1">
<form name="member_form" method="post" action="" onsubmit="return JY.checkForm(this)">
<tr>
    <td>ºñ¹Ð¹øÈ£</td>
    <td><input type="password" name="passwd" chk="y" msg="ºñ¹Ð¹øÈ£¸¦" kind="eng+num" len="4-12">
    	<input type='submit'>
    	</td>
</tr>
</form>
</table>
****************************************************************************************/
SC.checkForm = function(objform)
{
	var obj		= objform;
	var count	= obj.length;
	var chk		= '';
	var msg		= '';
	var kind	= '';
	var from	= '';
	var item	= '';
	var len		= '';
	var ex_len	= '';
	var len_chk	= '';
	var len_text	= '';
	var min		= '';
	var max		= '';
	var result	= '';
	var first	= '';
	var ret_chk	= false;

	for (var x = 0; x < count; x++)
	{
		item = obj.elements[x];
		if (item.name)
		{
		    if (item.getAttribute('chk'))
		    {
		    	chk	= item.getAttribute('chk');	//value ÀÖÀ»½Ã °Ë»çn   ÀÖ°Å³ª ¾ø°Å³ª °Ë»çy
		        msg	= item.getAttribute('msg');	//alert¸Þ¼¼Áö ¾ÕºÎºÐ ÇÑ±Û
		        kind	= item.getAttribute('kind');	//value¿¡ Çã¿ëÁ¶°Ç (num,eng,kor)
		        from	= item.getAttribute('from');	//value°ª ÀÏÄ¡½ÃÅ³ name°ª
		        len	= item.getAttribute('len');	//textbox value Çã¿ë ¹üÀ§

		        if (chk == 'y' || chk == 'Y')	{ first = "item.value == '' || ("; }
		        else				{ first = "item.value && ("; }

		        if (len)
		        {
		            ex_len	= len.split('-');
		            min		= ex_len[0];
		            max		= ex_len[1];

		            if (min == max)	//±æÀÌ°¡ Á¤ÇØÁ®ÀÖ´Ù¸é ÇØ´ç±ÛÀÚ Ç¥½Ã
		            {
		                len_chk 	= " || item.value.length != "+min;
		                len_text	= " ["+min+" ±ÛÀÚ]";
		            }
		            else
		            {			//¹üÀ§°¡ Á¤ÇØÁ®ÀÖ´Ù¸é ¹üÀ§Ç¥½Ã  (n ~ n)
		                len_chk		= " || item.value.length < "+min+" || item.value.length > "+max;
		                len_text 	= " ["+min+" ~ "+max+" ±ÛÀÚ]";
		            }
		        }

		        //°Ë»ç Ç×¸ñ
		        switch (kind)
		        {
		        	//¼ýÀÚ·Î¸¸
				case 'num':
					result  = "var num_pattern = /(^[0-9]+$)/gi;";
					result += "if ("+first+"!num_pattern.test(item.value)"+len_chk+")) {";
					result += "alert('"+msg+" ¼ýÀÚ·Î¸¸ ÀÔ·ÂÇÏ¼¼¿ä."+len_text+"');";
					result += "item.focus();";
					result += "ret_chk = true;";
					result += "}";
					eval(result);
					if (ret_chk == true) return false;
					break;
				//¿µ¾î·Î¸¸
				case 'eng':
					result  = "var eng_pattern = /(^[a-zA-Z]+$)/gi;";
					result += "if ("+first+"!eng_pattern.test(item.value)"+len_chk+")) {";
					result += "alert('"+msg+" ¿µ¾î·Î¸¸ ÀÔ·ÂÇÏ¼¼¿ä."+len_text+"');";
					result += "item.focus();";
					result += "ret_chk = true;";
					result += "}";
					eval(result);
					if (ret_chk == true) return false;
				break;
				//ÇÑ±Û·Î¸¸
				case 'kor':
					result  = "var kor_pattern = /(^[¤¡-ÆR]+$)/gi;";
					result += "if ("+first+"!kor_pattern.test(item.value)"+len_chk+")) {";
					result += "alert('"+msg+" ÇÑ±Û·Î¸¸ ÀÔ·ÂÇÏ¼¼¿ä."+len_text+"');";
					result += "item.focus();";
					result += "ret_chk = true;";
					result += "}";
					eval(result);
					if (ret_chk == true) return false;
					break;
				//from='ÇÊµå'  ¿Í ÀÏÄ¡°Ë»ç½Ã
				case 'like':
					result  = "var obj_from = document.getElementsByName('"+from+"')[0];";
					result += "if (obj_from.value && (obj_from.value !== item.value"+len_chk+")) {";
					result += "alert('"+msg+" ÀÏÄ¡ ÇÏÁö ¾Ê½À´Ï´Ù."+len_text+"');";
					result += "item.focus();";
					result += "ret_chk = true;";
					result += "}";
					eval(result);
					if (ret_chk == true) return false;
					break;
				//¿µ¾î ÇÑ±Û
				case 'kor+eng':
				case 'eng+kor':
					result  = "var eng_kor_num_pattern = /(^[a-zA-Z¤¡-ÆR]+$)/gi;";
					result += "if ("+first+"!eng_kor_num_pattern.test(item.value)"+len_chk+")) {";
					result += "alert('"+msg+" ¿µ¹® ¹× ÇÑ±Û·Î¸¸ ÀÔ·ÂÇÏ¼¼¿ä."+len_text+"');";
					result += "item.focus();";
					result += "ret_chk = true;";
					result += "}";
					eval(result);
					if (ret_chk == true) return false;
					break;
				//¿µ¾î ÇÑ±Û ¼ýÀÚ
				case 'num+eng+kor':
				case 'kor+num+eng':
				case 'eng+num+kor':
				case 'num+kor+eng':
				case 'kor+eng+num':
				case 'eng+kor+num':
					result  = "var eng_kor_num_pattern = /(^[a-zA-Z0-9¤¡-ÆR]+$)/gi;";
					result += "if ("+first+"!eng_kor_num_pattern.test(item.value)"+len_chk+")) {";
					result += "alert('"+msg+" ¿µ¹®,ÇÑ±Û ¹× ¼ýÀÚ·Î¸¸ ÀÔ·ÂÇÏ¼¼¿ä."+len_text+"');";
					result += "item.focus();";
					result += "ret_chk = true;";
					result += "}";
					eval(result);
					if (ret_chk == true) return false;
					break;
				//¿µ¾î ¼ýÀÚ
				case 'num+eng':
				case 'eng+num':
					result  = "var eng_num_pattern = /(^[a-zA-Z0-9]+$)/gi;";
					result += "if ("+first+"!eng_num_pattern.test(item.value)"+len_chk+")) {";
					result += "alert('"+msg+" ¼ýÀÚ ¹× ¿µ¾î·Î¸¸ ÀÔ·ÂÇÏ¼¼¿ä."+len_text+"');";
					result += "item.focus();";
					result += "ret_chk = true;";
					result += "}";
					eval(result);
					if (ret_chk == true) return false;
					break;
				//ÀÌ¸ÞÀÏ
				case 'email':
					result  = "var email_pattern = /(^[a-zA-Z0-9]+@[a-zA-Z0-9]+[a-zA-Z0-9-]+[a-zA-Z0-9]+\.[a-zA-Z]+[.a-zA-Z]+$)/gi;";
					result += "if ("+first+"!email_pattern.test(item.value)"+len_chk+")) {";
					result += "alert('"+msg+" Á¤È®È÷ ÀÔ·ÂÇÏ¼¼¿ä."+len_text+"');";
					result += "item.focus();";
					result += "ret_chk = true;";
					result += "}";
					eval(result);
					if (ret_chk == true) return false;
					break;
				//ÁÖ¹Îµî·Ï¹øÈ£(»ç¿ë¹ý : ÁÖ¹Î¹øÈ£ µÞºÎºÐ ÇÊµå¿¡ kind='jumin_number' from='¾ÕºÎºÐÇÊµå' chk='y' msg='¾Æ¹«°Å³ª')
				case 'jumin':
				case 'jumin_number':
					var jumin_number_chk	= false;
					var obj_from		= document.getElementsByName(from)[0];
					if (chk == 'y' || chk == 'Y')
					{
						jumin_number_chk = true;
					}
					else
					{
						if (obj_from.value || item.value) jumin_number_chk = true;
					}

					if (jumin_number_chk == true)
					{
						result  = "var jumin_number_check = juminNumberChk('"+obj_from.value+"-"+item.value+"');";
						result += "if (jumin_number_check == false) {";
						result += "alert('"+msg+" Á¤È®È÷ ÀÔ·ÂÇÏ¼¼¿ä."+len_text+"');";
						result += "item.focus();";
						result += "ret_chk = true;";
						result += "}";
						eval(result);
						if (ret_chk == true) return false;
					}
					break;

				default:
					result  = "if ("+first+"item.value.trim() == ''"+len_chk+")) {";
					result += "alert('"+msg+" ÀÔ·ÂÇÏ¼¼¿ä."+len_text+"');";
					result += "item.focus();";
					result += "ret_chk = true;";
					result += "}";
					eval(result);
					if (ret_chk == true) return false;
					break;

		        }//switch Á¾·á
		    }
		}
		chk		= '';
		msg		= '';
		kind		= '';
		from		= '';
		item		= '';
		len		= '';
		ex_len		= '';
		len_chk		= '';
		len_text	= '';
		min		= '';
		max		= '';
		result		= '';
		first		= '';
		ret_chk		= false;
	}//for Á¾·á

	function juminNumberChk(jumin_number)
	{
		jumin_number	= jumin_number.replace('-', '');
		if (jumin_number.length > 13) return false;
		var last	= jumin_number.substring(13, 12);
		var arr		= new Array(2,3,4,5,6,7,8,9,2,3,4,5);
		var val		= 0;

		for (var i = 0; i < 12; i++)
		{
	   	 	val += arr[i] * jumin_number.substring(i, i+1);
		}

		val	= val%11;
		if (11 - val == last)
		{
			return true;
		}
		else
		{
			return false;
		}
	}

       return true;
}



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,'');
}



//textÇÊµå Æû°Ë»ç
function checkForm(form)
{
	var e = form.elements;

	for (k = 0; k < e.length; k++)
	{
		var checkAttr	= e[k].getAttribute('required');
		if (checkAttr == null)	{ continue; }
		if (e[k].value != '')	{ continue; }
		alert(checkAttr + 'À»(¸¦) ÀÔ·ÂÇÏ¼¼¿ä');
		if (e[k].type != 'hidden')	{ e[k].focus(); }
		else				{ e[(k - 1)].focus(); }
		return false;
	}
}

//
function numCheck(s)
{
	var acceptCode	= new Array(8, 13, 46, 9, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 37, 38, 39, 40);
	var ck		= true;

	for (i = 0; i < acceptCode.length; i++)
	{
		if (event.keyCode == acceptCode[i])	{ ck = false; break; }
	}

	if (ck)		{ event.returnValue = false; return false; }
}


//url º¹»çÇÏ±â
function ClipBoard(url)
{
	window.clipboardData.setData('Text',url);
	window.alert("ÁÖ¼Ò°¡ º¹»çµÇ¾ú½À´Ï´Ù.");
}


//ÀÎ¼âÇÏ±â
var initBody;
function beforePrint()
{
	initBody = document.body.innerHTML;
	document.body.innerHTML = document.getElementById('main').innerHTML;
}
function afterPrint()
{
	document.body.innerHTML = initBody;
}
function printArea()
{
	window.print();
}
window.onbeforeprint = beforePrint;	//ÀÎ¼âÁ÷Àû¿¡ body¹é¾÷
window.onafterprint = afterPrint;	//ÀÎ¼âÈÄ ´Ù½Ã µÇµ¹¸²

/*
±×·³ ´ÙÀ½¿¡ Ãâ·ÂÀ» ¿øÇÏ´Â ºÎºÐÀ» <div id="idPrint"> ¿Í </div>¸¦ ÀÌ¿ëÇØ °¨½Î ÁÝ´Ï´Ù.
¿¹¸¦ µé¾î Å×ÀÌºíÀÇ Ãâ·ÂÇÏ°íÀÚ ÇÑ´Ù¸é <div id="idPrint"><table.....> ...... </table></div>
ÀÌ·± ½ÄÀ¸·Î °¨½ÎÁÖ¸é div·Î µÑ·¯½Î¿©Áø ºÎºÐ¸¸ Ãâ·ÂÀÌ µÇ°Ô µË´Ï´Ù.

ÀÎ¼âÇÏ±â ¹öÆ°Àº <input type="button" value="ÀÎ¼âÇÏ±â" onclick="printArea();"> ¿Í °°ÀÌ
ÇÏ½Ã¸é µË´Ï´Ù. ½ÇÁ¦·Î °Ô½ÃÆÇ ³»¿ë Ãâ·Â ºÎºÐ¿¡ Àû¿ëÀ» Çß´Âµ¥ Àß Ãâ·ÂÀÌ µÇ¾ú½À´Ï´Ù.

ÃâÃ³ : Tong - ¹Îµ­´ÔÀÇ javascriptÅë
*/


/**
  * ÄíÅ°°ª ÃßÃâ
  * @param cookieName ÄíÅ°¸í
  */
function getCookie( cookieName )
{
	var search = cookieName + "=";
	var cookie = document.cookie;

// ÇöÀç ÄíÅ°°¡ Á¸ÀçÇÒ °æ¿ì
	if ( cookie.length > 0 )
	{
		// ÇØ´ç ÄíÅ°¸íÀÌ Á¸ÀçÇÏ´ÂÁö °Ë»öÇÑ ÈÄ Á¸ÀçÇÏ¸é À§Ä¡¸¦ ¸®ÅÏ.
		startIndex = cookie.indexOf( cookieName );

		// ¸¸¾à Á¸ÀçÇÑ´Ù¸é
		if ( startIndex != -1 )
		{
			// °ªÀ» ¾ò¾î³»±â À§ÇØ ½ÃÀÛ ÀÎµ¦½º Á¶Àý
			startIndex += cookieName.length;
			// °ªÀ» ¾ò¾î³»±â À§ÇØ Á¾·á ÀÎµ¦½º ÃßÃâ
			endIndex = cookie.indexOf( ";", startIndex );
			// ¸¸¾à Á¾·á ÀÎµ¦½º¸¦ ¸øÃ£°Ô µÇ¸é ÄíÅ° ÀüÃ¼±æÀÌ·Î ¼³Á¤
			if ( endIndex == -1) endIndex = cookie.length;
			// ÄíÅ°°ªÀ» ÃßÃâÇÏ¿© ¸®ÅÏ
			return unescape( cookie.substring( startIndex + 1, endIndex ) );
		}
		else
		{
			// ÄíÅ° ³»¿¡ ÇØ´ç ÄíÅ°°¡ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì
			return false;
		}
	}
	else
	{
		// ÄíÅ° ÀÚÃ¼°¡ ¾øÀ» °æ¿ì
		return false;
	}
}



 /**
  * ÄíÅ° ¼³Á¤
  * @param cookieName ÄíÅ°¸í
  * @param cookieValue ÄíÅ°°ª
  * @param expireDay ÄíÅ° À¯È¿³¯Â¥
  */

function setCookie( name, value, expiredays )
{
	var todayDate = new Date();
	todayDate.setDate( todayDate.getDate() + expiredays );
	document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + ";"
}



 /**
  * ÄíÅ° »èÁ¦
  * @param cookieName »èÁ¦ÇÒ ÄíÅ°¸í
  */
 function deleteCookie( cookieName )
 {
	var expireDate = new Date();
	//¾îÁ¦ ³¯Â¥¸¦ ÄíÅ° ¼Ò¸ê ³¯Â¥·Î ¼³Á¤ÇÑ´Ù.
	expireDate.setDate( expireDate.getDate() - 1 );
	document.cookie = cookieName + "= " + "; expires=" + expireDate.toGMTString() + "; path=/";
 }


 /**
  * ÀüÃ¼ ÄíÅ° Ãâ·Â
  */
function viewCookie()
{
	var ckval;
	if ( document.cookie.length > 0 )
		ckval	= document.cookie;
	else
		ckval	= "ÀúÀåµÈ ÄíÅ°°¡ ¾ø½À´Ï´Ù.";
	alert(ckval);
}

/****************************************************************************************
//objformÀÇ objary¼¿·ºÆ®¹Ú½ºÀÇ °ªÀ» txtboxÅØ½ºÆ® ¹Ú½º·Î ÀÔ·Â

<select onchange=selectEmail(Æû(this.form), ¼¿·ºÆ®¹Ú½º(this), ÅØ½ºÆ®¹Ú½ºid)>
****************************************************************************************/
function selectEmail(objform, objary, txtbox)
{  					//¼¿·ºÆ® ¹Ú½º ¼±ÅÃÈÄ ÀÌº¥Æ®
	var form	= objform;
	var opts	= objary.options;
	var sIndex	= objary.selectedIndex; 		//¼±ÅÃÇÑoption
	if (opts[sIndex].value!="s" && opts[sIndex].value!="w")
	{  							//¸ÞÀÏ¼±ÅÃ, Á÷Á¢ÀÔ·ÂÀ» Á¦¿ÜÇÑ ³ª¸ÓÁö selectedIndex°ª textbox·Î ÀÌµ¿
		$(txtbox).value		= opts[sIndex].text;
		$(txtbox).readOnly	= true;  		//ÁÖ¼Ò Á÷Á¢ÀÔ·ÂÇÒ¼ö ¾øÀ½
	}
	else if (opts[sIndex].value=="w")
	{   							//Á÷Á¢ÀÔ·ÂÀÎ °æ¿ì´Â readOnlyÇØÁ¦, focusÀÌµ¿ÈÄ Á÷Á¢ÀÔ·Â
		$(txtbox).value		= "";
		$(txtbox).readOnly	= false;   		//ÁÖ¼Ò Á÷Á¢ÀÔ·Â °¡´É
		$(txtbox).focus();
	}
}


// {{{ mktime
function mktime() {
    // Get Unix timestamp for a date
    //
    // +    discuss at: http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_mktime/
    // +       version: 804.1914
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: baris ozdil
    // +      input by: gabriel paderni
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: FGFEmperor
    // *     example 1: mktime( 14, 10, 2, 2, 1, 2008 );
    // *     returns 1: 1201871402

    var no, ma = 0, mb = 0, i = 0, d = new Date(), argv = arguments, argc = argv.length;
    d.setHours(0,0,0); d.setDate(1); d.setMonth(1); d.setYear(1972);

    var dateManip = {
        0: function(tt){ return d.setHours(tt); },
        1: function(tt){ return d.setMinutes(tt); },
        2: function(tt){ set = d.setSeconds(tt); mb = d.getDate() - 1; return set; },
        3: function(tt){ set = d.setMonth(parseInt(tt)-1); ma = d.getFullYear() - 1972; return set; },
        4: function(tt){ return d.setDate(tt+mb); },
        5: function(tt){ return d.setYear(tt+ma); }
    };

    for( i = 0; i < argc; i++ )
    {
        no = parseInt(argv[i]);
        if(no && isNaN(no))
        {
            return false;
        }
        else if(no)
        {
            // arg is number, let's manipulate date object
            if(!dateManip[i](no)){
                // failed
                return false;
            }
        }
    }

    return Math.floor(d.getTime()/1000);
}// }}}

// {{{ date
function date ( format, timestamp ) {
    // Format a local time/date
    //
    // +    discuss at: http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_date/
    // +       version: 804.1712
    // +   original by: Carlos R. L. Rodrigues (http://www.jsfromhell.com)
    // +      parts by: Peter-Paul Koch (http://www.quirksmode.org/js/beat.html)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: MeEtc (http://yass.meetcweb.com)
    // +   improved by: Brad Touesnard
    // +   improved by: Tim Wiel
    // *     example 1: date('H:m:s \\m \\i\\s \\m\\o\\n\\t\\h', 1062402400);
    // *     returns 1: '09:09:40 m is month'
    // *     example 2: date('F j, Y, g:i a', 1062462400);
    // *     returns 2: 'September 2, 2003, 2:26 am'

    var a, jsdate=((timestamp) ? new Date(timestamp*1000) : new Date());
    var pad = function(n, c){
        if( (n = n + "").length < c ) {
            return new Array(++c - n.length).join("0") + n;
        } else {
            return n;
        }
    };
    var txt_weekdays = ["Sunday","Monday","Tuesday","Wednesday",
        "Thursday","Friday","Saturday"];
    var txt_ordin = {1:"st",2:"nd",3:"rd",21:"st",22:"nd",23:"rd",31:"st"};
    var txt_months =  ["", "January", "February", "March", "April",
        "May", "June", "July", "August", "September", "October", "November",
        "December"];

    var f = {
        // Day
            d: function(){
                return pad(f.j(), 2);
            },
            D: function(){
                t = f.l(); return t.substr(0,3);
            },
            j: function(){
                return jsdate.getDate();
            },
            l: function(){
                return txt_weekdays[f.w()];
            },
            N: function(){
                return f.w() + 1;
            },
            S: function(){
                return txt_ordin[f.j()] ? txt_ordin[f.j()] : 'th';
            },
            w: function(){
                return jsdate.getDay();
            },
            z: function(){
                return (jsdate - new Date(jsdate.getFullYear() + "/1/1")) / 864e5 >> 0;
            },

        // Week
            W: function(){
                var a = f.z(), b = 364 + f.L() - a;
                var nd2, nd = (new Date(jsdate.getFullYear() + "/1/1").getDay() || 7) - 1;

                if(b <= 2 && ((jsdate.getDay() || 7) - 1) <= 2 - b){
                    return 1;
                } else{

                    if(a <= 2 && nd >= 4 && a >= (6 - nd)){
                        nd2 = new Date(jsdate.getFullYear() - 1 + "/12/31");
                        return date("W", Math.round(nd2.getTime()/1000));
                    } else{
                        return (1 + (nd <= 3 ? ((a + nd) / 7) : (a - (7 - nd)) / 7) >> 0);
                    }
                }
            },

        // Month
            F: function(){
                return txt_months[f.n()];
            },
            m: function(){
                return pad(f.n(), 2);
            },
            M: function(){
                t = f.F(); return t.substr(0,3);
            },
            n: function(){
                return jsdate.getMonth() + 1;
            },
            t: function(){
                var n;
                if( (n = jsdate.getMonth() + 1) == 2 ){
                    return 28 + f.L();
                } else{
                    if( n & 1 && n < 8 || !(n & 1) && n > 7 ){
                        return 31;
                    } else{
                        return 30;
                    }
                }
            },

        // Year
            L: function(){
                var y = f.Y();
                return (!(y & 3) && (y % 1e2 || !(y % 4e2))) ? 1 : 0;
            },
            //o not supported yet
            Y: function(){
                return jsdate.getFullYear();
            },
            y: function(){
                return (jsdate.getFullYear() + "").slice(2);
            },

        // Time
            a: function(){
                return jsdate.getHours() > 11 ? "pm" : "am";
            },
            A: function(){
                return f.a().toUpperCase();
            },
            B: function(){
                // peter paul koch:
                var off = (jsdate.getTimezoneOffset() + 60)*60;
                var theSeconds = (jsdate.getHours() * 3600) +
                                 (jsdate.getMinutes() * 60) +
                                  jsdate.getSeconds() + off;
                var beat = Math.floor(theSeconds/86.4);
                if (beat > 1000) beat -= 1000;
                if (beat < 0) beat += 1000;
                if ((String(beat)).length == 1) beat = "00"+beat;
                if ((String(beat)).length == 2) beat = "0"+beat;
                return beat;
            },
            g: function(){
                return jsdate.getHours() % 12 || 12;
            },
            G: function(){
                return jsdate.getHours();
            },
            h: function(){
                return pad(f.g(), 2);
            },
            H: function(){
                return pad(jsdate.getHours(), 2);
            },
            i: function(){
                return pad(jsdate.getMinutes(), 2);
            },
            s: function(){
                return pad(jsdate.getSeconds(), 2);
            },
            //u not supported yet

        // Timezone
            //e not supported yet
            //I not supported yet
            O: function(){
               var t = pad(Math.abs(jsdate.getTimezoneOffset()/60*100), 4);
               if (jsdate.getTimezoneOffset() > 0) t = "-" + t; else t = "+" + t;
               return t;
            },
            P: function(){
                var O = f.O();
                return (O.substr(0, 3) + ":" + O.substr(3, 2));
            },
            //T not supported yet
            //Z not supported yet

        // Full Date/Time
            c: function(){
                return f.Y() + "-" + f.m() + "-" + f.d() + "T" + f.h() + ":" + f.i() + ":" + f.s() + f.P();
            },
            //r not supported yet
            U: function(){
                return Math.round(jsdate.getTime()/1000);
            }
    };

    return format.replace(/[\\]?([a-zA-Z])/g, function(t, s){
        if( t!=s ){
            // escaped
            ret = s;
        } else if( f[s] ){
            // a date function exists
            ret = f[s]();
        } else{
            // nothing special
            ret = s;
        }

        return ret;
    });
}// }}}






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

String.prototype.strip_tags = function(){
	var t = this.replace(/<[^>]+[^>]*|\n*>/gm,'');
	return t;
}
function strip_tags(str){
	return str.strip_tags();
}





// banner_roll("divÅÂ±× id", ¹è³Ê1°³³ôÀÌ, µô·¹ÀÌ, 1Ä­ÀÌµ¿¼Óµµ, 0);/
var js_rolling = function(this_s){
    // ½Ã°£´ÜÀ§´Â ms·Î 1000ÀÌ 1ÃÊ
    if(this_s.nodeType==1){
        this.this_s = this_s;
    }else{
        this.this_s = document.getElementById(this_s);
    }
    this.is_rolling = false;
    this.direction = 1; //1:top, 2:right, 3:bottom, 4:left (½Ã°è¹æÇâ) // 1¹ø°ú 4¹ø¸¸ µÊ
    this.children =    null;
    this.move_gap = 1;    //¿òÁ÷ÀÌ´Â ÇÈ¼¿´ÜÀ§
    this.time_dealy = 100; //¿òÁ÷ÀÌ´Â Å¸ÀÓµô·¹ÀÌ
    this.time_dealy_pause = 1000;//ÇÏ³ªÀÇ ´ë»óÀÌ »õ·Î ½ÃÀÛÇÒ ¶§ ¸ØÃß´Â ½Ã°£, 0 ÀÌ¸é Àû¿ë ¾ÈÇÔ
    this.time_timer=null;
    this.time_timer_pause=null;
    this.set_direction(this.direction);
    this.init_event();
}
js_rolling.prototype.set_direction = function(direction){
    this.direction=direction;
    this.get_element_children();
}
js_rolling.prototype.init_event = function(){
    var this_s=this;
    this.this_s.onmouseover=function(){
        if(!this_s.time_timer_pause){
            this_s.pause();
        }
    }
    this.this_s.onmouseout=function(){
        if(!this_s.time_timer_pause){
            this_s.resume();
        }
    }
}
js_rolling.prototype.get_element_children = function(){
    this.this_s.style.position='relative';
    this.this_s.style.overflow='hidden';
    var children = this.this_s.childNodes;
    this.children = children;
    for(var i=(children.length-1);0<=i;i--){
        if(children[i].nodeType==1){
            children[i].style.position='relative';
            if(this.direction==1){
                children[i].style.top='0px';
            }else if(this.direction==4){
                children[i].style.left='0px';
                this.this_s.style.whiteSpace='nowrap';
            }
        }else{
            this.this_s.removeChild(children[i]);
        }
    }
}
js_rolling.prototype.act_move_up = function(){
    for(var i = 0,m=this.children.length;i<m;i++){
        var child = this.children[i];
        child.style.top=(parseInt(child.style.top)-this.move_gap)+'px';
    }
    if((this.children[0].offsetHeight+parseInt(this.children[0].style.top))<=0){
        this.this_s.appendChild(this.children[0]);
        this.get_element_children();
        if(this.time_dealy_pause){
            var this_s = this;
            var act = function(){this_s.resume();this_s.time_timer_pause=null;}
            this.time_timer_pause = setTimeout(act,this.time_dealy_pause);
            this.pause();
        }
    }
}
js_rolling.prototype.act_move_left = function(){
    for(var i = 0,m=this.children.length;i<m;i++){
        var child = this.children[i];
        child.style.left=(parseInt(child.style.left)-this.move_gap)+'px';
    }
    if((this.children[0].offsetWidth+parseInt(this.children[0].style.left))<=0){
        this.this_s.appendChild(this.this_s.firstChild);
        this.get_element_children();
        if(this.time_dealy_pause){
            var this_s = this;
            var act = function(){this_s.resume();this_s.time_timer_pause=null;}
            this.time_timer_pause = setTimeout(act,this.time_dealy_pause);
            this.pause();
        }
    }
}
js_rolling.prototype.start = function(){ //·Ñ¸µ ½ÃÀÛ
    var this_s = this;
    this.stop();
    this.is_rolling = true;
    var act = function(){
        if(this_s.is_rolling){
            if(this_s.direction==1){this_s.act_move_up();}
            else if(this_s.direction==4){this_s.act_move_left();}
        }
    }
    this.time_timer = setInterval(act,this.time_dealy);
}
js_rolling.prototype.pause = function(){ //ÀÏ½Ã ¸ØÃã
    this.is_rolling = false;
}
js_rolling.prototype.resume = function(){ //ÀÏ½Ã ¸ØÃã ÇØÁ¦
    this.is_rolling = true;
}
js_rolling.prototype.stop = function(){ //·Ñ¸µÀ» ³¡³¿
    this.is_rolling = false;
    if(!this.time_timer){
        clearInterval(this.time_timer);
    }
    this.time_timer = null
}

