/***********************************************

Yag : This is a program that follows GPL.
Copyright (C) 2006 Miengine Inc.  www.miengine.com,  www.yagne.com

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.



Yag : 이 프로그램은 GPL을 따르는 프로그램입니다.  
Copyright (C) 2006년 (주)마이엔진,  www.miengine.com, www.yagne.com
 
이 프로그램은 자유 소프트웨어입니다. 소프트웨어의 피양도자는 자유 소프트웨어 재단이 공표한 GNU 일반 공중 사용 허가서 2판 또는 그 이후 판을 임의로 선택해서, 그 규정에 따라 프로그램을 개작하거나 재배포할 수 있습니다. 

이 프로그램은 유용하게 사용될 수 있으리라는 희망에서 배포되고 있지만, 특정한 목적에 맞는 적합성 여부나 판매용으로 사용할 수 있으리라는 묵시적인 보증을 포함한 어떠한 형태의 보증도 제공하지 않습니다. 보다 자세한 사항에 대해서는 GNU 일반 공중 사용 허가서를 참고하시기 바랍니다. 

GNU 일반 공중 사용 허가서는 이 프로그램과 함께 제공됩니다. 만약, 이 문서가 누락되어 있다면 자유 소프트웨어 재단으로 문의하시기 바랍니다. (자유 소프트웨어 재단: Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA) 

GPL에 대해서 더 자세한 사항은 www.gnu.org 를 참조하십시오.

***********************************************/

function UFN_YagInit()
{
	UFN_YagRequest(UFN_ClientView);
}

function UFN_YagRequest(argFunction)
{
	UFN_CheckCookie();

	var mainCook	= UFN_GetCookie("MAIN");
	var subCook		= UFN_GetCookie("SUB");
	var nick		= UFN_GetCookie("YAG_NICK");
	var referUrl	= UFN_GetReferUrl();
	var curUrl		= UFN_GetCurUrl();
	var getPost		= "POST";
	var urlAppl		= YGV_PluginURL + "/start.php";
	var trueFalse	= true;
	var sendData	= "";
	sendData += "OWNER=" + YGV_Owner + "&USER=" + YGV_User + "&CNT=" + YGV_InitCnt + "&MID=" + mainCook + "&SID=" + subCook;
	sendData += "&URL=" + encodeURIComponent(curUrl) + "&REFER=" + encodeURIComponent(referUrl);
	sendData += "&NICK=" + encodeURIComponent(nick);

	if (YGV_InitCnt == 0)
	{
		UFN_ListShow("A");
	}

	YGV_InitCnt = 1;

	UFN_XmlHttpOpenSend(getPost, urlAppl, trueFalse, sendData, argFunction);
}

function UFN_ClientView(argXmlHttp)
{
	var xmlout = argXmlHttp.responseXML;
	var display = xmlout.getElementsByTagName("display")[0].firstChild.nodeValue;

	if (display == "N")
	{
		document.getElementById("div_yag").style.display = "none";
		document.getElementById("div_yag_memo").style.display = "none";
	}
	else if (display == "Y")
	{
		document.getElementById("div_yag").style.display = "block";
		document.getElementById("div_yag_memo").style.display = "block";

		UFN_FillupAdmin(xmlout);
		UFN_FillupSelf(xmlout);
		UFN_FillupList(xmlout);
		UFN_MemoReceiveShow(xmlout);
	}

	YGV_TimeId = setTimeout("UFN_YagInit()", YGV_InitInterval);
}

function UFN_FillupList(argXml)
{
	var totList		= argXml.getElementsByTagName("yag_totlist");
	var curList		= argXml.getElementsByTagName("yag_curlist");
	var totListCnt	= totList.length;
	var curListCnt	= curList.length;

	document.getElementById("span_yag_totcnt").innerHTML = totListCnt + 1;
	document.getElementById("span_yag_curcnt").innerHTML = curListCnt + 1;

	UFN_FillupListSub(totList, "tot");
	UFN_FillupListSub(curList, "cur");
}

function UFN_FillupListSub(argList, argTarget)
{
	var str = "";
	var u_mid, u_sid, u_nick;
	var cnt = argList.length;

	for (var i = 0; i < cnt; i++)
	{
		u_mid	= argList[i].childNodes[0].firstChild.nodeValue;
		u_sid	= argList[i].childNodes[1].firstChild.nodeValue;
		u_nick	= argList[i].childNodes[2].firstChild.nodeValue;

		str += "<div>";
		str += "<a href=\"javascript:UFN_MemoWriteShow(\'" + u_mid + "\', \'" + u_sid + "\', \'" + u_nick + "\');\">";

		if (YGV_AdmMid != "" && u_mid == YGV_AdmMid)
		{
			str += "<img src=\"" + YGV_PluginURL + "/images/yag_sysop.gif\" width=\"9\" height=\"9\" border=\"0\" alt=\"사이트지기\" />&nbsp;";
		}
		else
		{
			str += "<img src=\"" + YGV_PluginURL + "/images/yag_guest.gif\" width=\"9\" height=\"9\" border=\"0\" alt=\"접속자\" />&nbsp;";
		}

		str += u_nick + " (" + u_mid.substr(0, 4) + ")&nbsp;";
		str += "<img src=\"" + YGV_PluginURL + "/images/yag_say.gif\" width=\"11\" height=\"11\" border=\"0\" alt=\"쪽지보내기\" /> ";
		str += "</a>";
		str += "</div>";
	}

	if (argTarget == "tot")
	{
		document.getElementById("div_yag_list_tot").innerHTML = str;
	}
	else if (argTarget == "cur")
	{
		document.getElementById("div_yag_list_cur").innerHTML = str;
	}
}

function UFN_FillupAdmin(argXml)
{
	var str = "";
	var u_mid, u_sid, u_nick;
	var admList = argXml.getElementsByTagName("yag_admlist");

	if (admList[0].childNodes[0].firstChild.nodeValue == "Y")
	{
		u_mid	= admList[0].childNodes[1].firstChild.nodeValue;
		u_sid	= admList[0].childNodes[2].firstChild.nodeValue;
		u_nick	= admList[0].childNodes[3].firstChild.nodeValue;

		if (UFN_GetCookie("MAIN") != u_mid)
		{
			str += "<a href=\"javascript:UFN_MemoWriteShow(\'" + u_mid + "\', \'" + u_sid + "\', \'" + u_nick + "\');\">";
			str += "접속중&nbsp;";
			str += "<img src=\"" + YGV_PluginURL + "/images/yag_say.gif\" width=\"11\" height=\"11\" border=\"0\" alt=\"쪽지보내기\" />";
			str += "</a>";
		}
		else
		{
			str += "접속중";
		}

		YGV_AdmMid = u_mid;
		document.getElementById("span_yag_adming").innerHTML = str;
	}
	else
	{
		YGV_AdmMid = "";
		document.getElementById("span_yag_adming").innerHTML = "자리비움";
	}
}

function UFN_FillupSelf(argXml)
{
	var str = "";
	var u_mid, u_sid, u_nick;
	var selfList = argXml.getElementsByTagName("yag_selflist");

	if (YGV_MyNickChanging == "N")
	{
		u_mid	= selfList[0].childNodes[0].firstChild.nodeValue;
		u_sid	= selfList[0].childNodes[1].firstChild.nodeValue;
		u_nick	= selfList[0].childNodes[2].firstChild.nodeValue;

		document.getElementById("span_yag_mynick").innerHTML = u_nick + " (" + u_mid.substr(0, 4) + ")";
	}
}

function UFN_ListShow(argFlag)
{
	if (argFlag == "A")
	{
		document.getElementById("div_yag_list").style.display = "block";
		document.getElementById("div_yag_list_cur").style.display = "none";
		document.getElementById("div_yag_list_tot").style.display = "block";
		document.getElementById("span_yag_list_title").innerHTML = "사이트 접속자";
	}
	else if (argFlag == "P")
	{
		document.getElementById("div_yag_list").style.display = "block";
		document.getElementById("div_yag_list_tot").style.display = "none";
		document.getElementById("div_yag_list_cur").style.display = "block";
		document.getElementById("span_yag_list_title").innerHTML = "페이지 접속자";
	}
	else if (argFlag == "C")
	{
		document.getElementById("div_yag_list").style.display = "none";
	}
}

function UFN_NickChangeShow(argFlag)
{
	if (argFlag == "Y")
	{
		document.getElementById("div_yag_mynick_show").style.display = "none";
		document.getElementById("div_yag_mynick_ctrl").style.display = "block";
		document.getElementById("input_yag_mynick").focus();
		YGV_MyNickChanging = "Y";

	}
	else if (argFlag == "N")
	{
		document.getElementById("div_yag_mynick_show").style.display = "block";
		document.getElementById("div_yag_mynick_ctrl").style.display = "none";
		YGV_MyNickChanging = "N";
	}
}

function UFN_NickKeypress(argEvent)
{
	if (argEvent.keyCode == 13)
	{
		UFN_NickChangeAction();
	}
}

function UFN_NickChangeAction()
{
	var chkStr = document.getElementById("input_yag_mynick").value;
	var strLen = chkStr.length;
	var notAllow = " ~!@#$%^&*()_+|`-={}:<>?[];,.\/\"\'\\\b\f\n\r\t";

	if (strLen >= 2 && strLen <= 6)
	{
		for (var i = 0; i < strLen; i++)
		{
			if (notAllow.indexOf(chkStr.substr(i, 1)) != -1)
			{
				alert("특수문자 및 공백이 포함된 이름은 사용할 수 없습니다.");
				return;
			}
		}
	}
	else
	{
		alert("이름은 2자 이상, 6자 이하이어야 합니다.");
		return;
	}

	UFN_CheckCookie();

	var mainCook	= UFN_GetCookie("MAIN");
	var subCook		= UFN_GetCookie("SUB");
	var getPost		= "POST";
	var urlAppl		= YGV_PluginURL + "/nick_proc.php";
	var trueFalse	= true;
	var sendData	= "OWNER=" + YGV_Owner + "&MID=" + mainCook + "&SID=" + subCook + "&NICK=" + encodeURIComponent(chkStr);

	UFN_XmlHttpOpenSend(getPost, urlAppl, trueFalse, sendData, null);

	document.getElementById("span_yag_mynick").innerHTML = chkStr + " (" + mainCook.substr(0, 4) + ")";

	UFN_SetCookie("YAG_NICK", chkStr, "/", 30);
	UFN_NickChangeShow("N");
}

function UFN_MemoReceiveShow(argXml)
{
	var newmemo = argXml.getElementsByTagName("newmemo")[0].firstChild.nodeValue;

	if (newmemo != "Y")
	{
		UFN_ReceiveMemoClear();
		return;
	}

	var memoList	= argXml.getElementsByTagName("memolist");
	var memoCnt		= memoList.length;
	var plus_memo	= "";
	var receiveShow	= "N";
	var style		= "";
	var sn, mid, sid, send_mid, send_sid, send_nick, msg, s_time;
	var i_sn, i_sendmid, i_sendsid, i_sendnick, i_msg;

	for (var i = 0; i < memoCnt; i++)
	{
		sn			= memoList[i].childNodes[0].firstChild.nodeValue;
		mid			= memoList[i].childNodes[1].firstChild.nodeValue;
		sid			= memoList[i].childNodes[2].firstChild.nodeValue;
		send_mid	= memoList[i].childNodes[3].firstChild.nodeValue;
		send_sid	= memoList[i].childNodes[4].firstChild.nodeValue;
		send_nick	= memoList[i].childNodes[5].firstChild.nodeValue;
		msg			= memoList[i].childNodes[6].firstChild.nodeValue;
		s_time		= memoList[i].childNodes[7].firstChild.nodeValue;

		if (YGV_PlusMemoCurSn == "")
		{
			YGV_PlusMemoCurSn = sn;

			receiveShow	= "Y";
			i_sn		= sn;
			i_sendmid	= send_mid;
			i_sendsid	= send_sid;
			i_sendnick	= send_nick;
			i_msg		= msg;
		}

		if (YGV_PlusMemoCurSn == sn)
		{
			style = "display:block;";
		}
		else
		{
			style = "display:none;";
		}

		plus_memo += "<div id=\"div_yag_plus_" + sn + "\" style=\"" + style + "\">";
		plus_memo += "<form class=\"yag_hide\">";
		plus_memo += "<input type=\"hidden\" id=\"hidden_yag_receive_sn_" + sn + "\" value=\""+ sn + "\">";
		plus_memo += "<input type=\"hidden\" id=\"hidden_yag_receive_send_mid_" + sn + "\" value=\""+ send_mid + "\">";
		plus_memo += "<input type=\"hidden\" id=\"hidden_yag_receive_send_sid_" + sn + "\" value=\""+ send_sid + "\">";
		plus_memo += "<input type=\"hidden\" id=\"hidden_yag_receive_send_nick_" + sn + "\" value=\""+ send_nick + "\">";
		plus_memo += "<textarea id=\"textarea_yag_receive_msg_" + sn + "\" style=\"display:none;\">"+ msg + "</textarea>";
		plus_memo += "</form>";
		plus_memo += "<div id=\"div_yag_plus_from\">From. " + send_nick + "&nbsp;(" + send_mid.substr(0, 4) + ")</div>";
		plus_memo += "<div id=\"div_yag_plus_time\">" +  s_time.substr(11) + "&nbsp;&nbsp;</div>";
		plus_memo += "</div>";
	}

	UFN_MemoPlusShow(memoCnt, plus_memo);

	if (receiveShow == "Y")
	{
		UFN_MemoReceiveFillup(i_sn, i_sendmid, i_sendsid, i_sendnick, i_msg);
	}

	if (YGV_ReceiveMemoCnt < memoCnt)
	{
		YGV_ReceiveMemoCnt = memoCnt;
		setTimeout("UFN_MemoReceiveFlash()", 300);
	}
}

function UFN_MemoReceiveFillup(argSn, argSendMid, argSendSid, argSendNick, argMsg)
{
	document.getElementById("hidden_yag_receive_sn").value			= argSn;
	document.getElementById("hidden_yag_receive_send_mid").value	= argSendMid;
	document.getElementById("hidden_yag_receive_send_sid").value	= argSendSid;
	document.getElementById("textarea_yag_receive_msg").value		= argMsg;

	if (YGV_ShowWriteMemo != "Y")
	{
		document.getElementById("textarea_yag_receive_reply").focus();
	}
}

function UFN_MemoWriteShow(argMid, argSid, argNick)
{
	YGV_ShowWriteMemo = "Y";

	UFN_MemoMagicShow();

	var obj = document.getElementById("div_yag_write");
	obj.style.width		= YGV_MemoWidth + "px";
	obj.style.height	= YGV_WriteMemoHeight + "px";
	obj.style.display	= "block";

	document.getElementById("hidden_yag_write_to_mid").value = argMid;
	document.getElementById("hidden_yag_write_to_sid").value = argSid;
	document.getElementById("span_yag_write_to").innerHTML = argNick + " (" + argMid.substr(0, 4) + ")";
	document.getElementById("textarea_yag_write").value = "";
	document.getElementById("textarea_yag_write").focus();
}

function UFN_MemoPlusShow(argCnt, argStr)
{
	UFN_MemoMagicShow();

	var obj = document.getElementById("div_yag_receive");
	obj.style.width		= YGV_MemoWidth + "px";
	obj.style.height	= YGV_ReceiveMemoHeight + "px";
	obj.style.display	= "block";

	document.getElementById("span_yag_plus_cnt").innerHTML = argCnt;
	document.getElementById("span_yag_plus_tot").innerHTML = argCnt;
	document.getElementById("span_yag_plus_cur").innerHTML = YGV_PlusMemoCurRank;

	if (argCnt > 1)
	{
		document.getElementById("span_yag_plus_paging").style.display = "inline";
	}

	var objList = document.getElementById("div_yag_plus_list");
	objList.innerHTML = argStr;
}

function UFN_MemoPlusPrevNext(argFlag)
{
	var obj = document.getElementById("div_yag_plus_list");
	var cnt = obj.childNodes.length;

	for (var i = 0; i < cnt; i++)
	{
		if (obj.childNodes[i].style.display == "block")
		{
			if (argFlag == "P")
			{
				if ((i - 1 > -1) && obj.childNodes[i - 1])
				{
					obj.childNodes[i].style.display = "none";
					obj.childNodes[i - 1].style.display = "block";

					YGV_PlusMemoCurRank--;
					YGV_PlusMemoCurSn = obj.childNodes[i - 1].id.replace("div_yag_plus_", "");
					UFN_MemoViewChange(YGV_PlusMemoCurSn);

					return;
				}
				else
				{
					return;
				}
			}
			else if (argFlag == "N")
			{
				if (obj.childNodes[i + 1])
				{
					obj.childNodes[i].style.display = "none";
					obj.childNodes[i + 1].style.display = "block";
					
					YGV_PlusMemoCurRank++;
					YGV_PlusMemoCurSn = obj.childNodes[i + 1].id.replace("div_yag_plus_", "");
					UFN_MemoViewChange(YGV_PlusMemoCurSn);

					return;
				}
				else
				{
					return;
				}
			}
		}
	}
}

function UFN_MemoReceiveFlash()
{
	var objStyle = document.getElementById("div_yag_plus_title").style;
	var borderColor1 = "#ff018c";
	var borderColor2 = "#ff6600";
	var bgColor1 = "#fcc6e4";
	var bgColor2 = "#ffffcc";

	if (YGV_MemoFlashCnt > 6)
	{
		YGV_MemoFlashCnt = 0;
		objStyle.borderColor = borderColor1;
		objStyle.backgroundColor = bgColor1;
		return;
	}
	else
	{
		if (YGV_MemoFlashCnt % 2 == 0)
		{
			objStyle.borderColor = borderColor2;
			objStyle.backgroundColor = bgColor2;
		}
		else
		{
			objStyle.borderColor = borderColor1;
			objStyle.backgroundColor = bgColor1;
		}

		YGV_MemoFlashCnt++;
		setTimeout("UFN_MemoReceiveFlash()", 500);
	}
}

function UFN_MemoMagicShow()
{
	if (YGV_ShowWriteMemo == "Y" || YGV_PlusMemoCurSn != "")
	{
		UFN_InnerWidth();
		UFN_PageHeight();
		UFN_ScrollingOffset();

		var top, left;

		top = YGV_WinInnerHeight + YGV_ScrollTop - YGV_CrossY;

		if (YGV_ShowWriteMemo == "Y")
		{
			top -= YGV_WriteMemoHeight;
		}

		if (YGV_PlusMemoCurSn != "")
		{
			top -= YGV_ReceiveMemoHeight;
		}

		left = YGV_WinInnerWidth + YGV_ScrollLeft - YGV_MemoWidth - YGV_CrossX;

		var container = document.getElementById("div_yag_memo");
		container.style.top			= top + "px";
		container.style.left		= left + "px";
		container.style.position	= "absolute";
	}
}

function UFN_MemoViewChange(argSn)
{
	var new_sn, new_send_mid, new_send_sid, new_send_nick, new_msg;

	new_sn			= document.getElementById("hidden_yag_receive_sn_" + argSn).value;
	new_send_mid	= document.getElementById("hidden_yag_receive_send_mid_" + argSn).value;
	new_send_sid	= document.getElementById("hidden_yag_receive_send_sid_" + argSn).value;
	new_send_nick	= document.getElementById("hidden_yag_receive_send_nick_" + argSn).value;
	new_msg			= document.getElementById("textarea_yag_receive_msg_" + argSn).value;

	YGV_PlusMemoCurSn = new_sn;

	document.getElementById("span_yag_plus_cur").innerHTML = YGV_PlusMemoCurRank;

	UFN_MemoReceiveFillup(new_sn, new_send_mid, new_send_sid, new_send_nick, new_msg);
}

function UFN_MemoAction(argFlag)
{
	UFN_CheckCookie();

	var objTextarea, valTextarea, toMid, toSid, msn;
	var sendMid	= UFN_GetCookie("MAIN");
	var sendSid	= UFN_GetCookie("SUB");

	if (argFlag == "W")
	{
		msn			= "";
		toMid		= document.getElementById("hidden_yag_write_to_mid").value;
		toSid		= document.getElementById("hidden_yag_write_to_sid").value;
		objTextarea	= document.getElementById("textarea_yag_write");
		valTextarea = UFN_MemoContent(objTextarea);
	}
	else if (argFlag == "R" || argFlag == "C")
	{
		msn			= document.getElementById("hidden_yag_receive_sn").value;
		toMid		= document.getElementById("hidden_yag_receive_send_mid").value;
		toSid		= document.getElementById("hidden_yag_receive_send_sid").value;
		objTextarea	= document.getElementById("textarea_yag_receive_reply");
		valTextarea = UFN_MemoContent(objTextarea);
	}

	if (argFlag == "W" || argFlag == "R")
	{
		if (valTextarea == "")
		{
			alert("내용을 입력하십시오.");
			objTextarea.focus();
			return;
		}
	}

	var getPost		= "POST";
	var urlAppl		= YGV_PluginURL + "/memo_proc.php";
	var trueFalse	= true;
	var sendData	= "";
	sendData += "OWNER=" + YGV_Owner + "&STATUS=" + argFlag;
	sendData += "&MID=" + toMid + "&SID=" + toSid;
	sendData += "&SENDERMID=" + sendMid + "&SENDERSID=" + sendSid;
	sendData += "&TYPE=1&SN=" + msn + "&MSG=" + encodeURIComponent(valTextarea);

	UFN_XmlHttpOpenSend(getPost, urlAppl, trueFalse, sendData, null);

	objTextarea.value = "";
	if (argFlag == "W" || argFlag == "R")
	{
		objTextarea.value = "쪽지가 전송되었습니다.";
	}
	else if (argFlag == "C")
	{
		objTextarea.value = "쪽지를 닫습니다.";
	}

	setTimeout("UFN_MemoClose('" + argFlag + "')", 400);
}

function UFN_MemoClose(argFlag)
{
	if (argFlag == "W")
	{
		document.getElementById("hidden_yag_write_to_mid").value	= "";
		document.getElementById("hidden_yag_write_to_sid").value	= "";
		document.getElementById("span_yag_write_to").innerHTML		= "";
		document.getElementById("textarea_yag_write").value			= "";
		document.getElementById("div_yag_write").style.display		= "none";

		YGV_ShowWriteMemo = "N";
	}
	else if (argFlag == "R" || argFlag == "C")
	{

		UFN_ReceiveMemoClear();
		UFN_MemoRefresh();
	}
}

function UFN_ReceiveMemoClear()
{
	document.getElementById("hidden_yag_receive_sn").value			= "";
	document.getElementById("hidden_yag_receive_send_mid").value	= "";
	document.getElementById("hidden_yag_receive_send_sid").value	= "";
	document.getElementById("textarea_yag_receive_msg").value		= "";
	document.getElementById("textarea_yag_receive_reply").value		= "";
	document.getElementById("span_yag_plus_cnt").innerHTML			= "";
	document.getElementById("div_yag_plus_list").innerHTML			= "";
	document.getElementById("span_yag_plus_paging").style.display	= "none";
	document.getElementById("div_yag_receive").style.display		= "none";

	YGV_PlusMemoCurSn = "";
	YGV_ReceiveMemoCnt--;
	YGV_PlusMemoCurRank = 1;

	if (YGV_ReceiveMemoCnt < 0)
	{
		YGV_ReceiveMemoCnt = 0;
	}
}

function UFN_MemoContent(argObject)
{
	var con = "";

	if (argObject)
	{
		con = argObject.value;
		con = con.replace(/(^\s*)|(\s*$)/g, "");
	}

	return con;
}

function UFN_MemoLocationCheck()
{
	UFN_MemoMagicShow();
	setTimeout("UFN_MemoLocationCheck()", 500);
}

function UFN_MemoRefresh()
{
	UFN_YagRequest(UFN_MemoXmlToReceiveShow);
}

function UFN_MemoXmlToReceiveShow(argXmlHttp)
{
	var xmlout = argXmlHttp.responseXML;
	UFN_MemoReceiveShow(xmlout);
}

function UFN_MemoKeypress(argEvent, argFlag)
{
	if (argEvent.keyCode == 13)
	{
		UFN_MemoAction(argFlag);
	}
}