// Quick Dic Search source code// Namespace : Net.Lnisoft.Web.JScript.Client.Dic.DicSearch// Author : kang byung joon// IE onlyvar NLWJCDD_m_strText="";var NLWJCDD_m_nTimeID=0;var NLWJCDD_m_bProcQM=false;var NLWJCDD_m_bPreM=false;var NLWJCDD_m_bPreMove=false;var NLWJCDD_m_strCookieName="QuickDicSearchState";function /*public class*/ NLWJCC_Cookie(){	// Each cookie is stored in a name=value pair	// Properties	// protected	this.m_Name = new Array();	this.m_Value = new Array();	this.m_Path = "/";	this.m_Domain = "";	this.m_Expires = "";	this.m_Count = 0;	// Method	// public	this.AddInfo = function /*public bool*/ NLWJCC_AddInfo(/*string*/strName,/*string*/Value)	{		if(strName=="" || Value=="")			return false;		if(this.FindNameIndex(strName)<0)		{			this.m_Name[this.m_Count] = strName;			this.m_Value[this.m_Count] = escape(Value);			this.m_Count++;			return true;		}		return false;	}	this.FindName = function /*public string*/ NLWJCC_FindName(/*string*/strName)	{		var nIndex = this.FindNameIndex(strName);		if(nIndex<0)			return "";		return this.GetValue(nIndex);	}	this.SetExpireDate = function /*public void*/ NLWJCC_SetExpireDate(/*int*/nDays)	{		var ToDay = new Date();		ToDay.setDate(ToDay.getDate() + nDays);		this.m_Expires = ToDay.toGMTString();		delete ToDay;	}	this.SetExpireDateEx = function /*public void*/ NLWJCC_SetExpireDateEx(/*object*/objDate)	{		var ToDay = new Date();		if(ToDay > objDate)			this.m_Expires = ToDay.toGMTString();		else			this.m_Expires = objDate.toGMTString();		delete ToDay;	}	this.SetDomain = function /*public void*/ NLWJCC_SetDomain(/*string*/strDomain)	{		this.m_Domain=strDomain;	}	this.SetPath = function /*public void*/ NLWJCC_SetPath(/*string*/strPath)	{		this.m_Path = strPath;	}	this.Read = function /*public void*/ NLWJCC_Read()	{		var strItem="", ItemName="", ItemValue="", nSPos=0;		var strBuffer = document.cookie + ";";		var nStartPos=0, nCurrentPos=0;		while((nCurrentPos=strBuffer.indexOf(";",nStartPos))>0)		{			strItem=strBuffer.substring(nStartPos,nCurrentPos);			nSPos = strItem.indexOf("=",-1);			if(nSPos>0)			{				ItemName = strItem.substring(0,nSPos);				ItemValue = strItem.substring(nSPos+1,strItem.length);				this.AddInfo(ItemName,ItemValue);			}			nStartPos = nCurrentPos + 1;			nStartPos = strBuffer.indexOf(" ",nStartPos) + 1;			if(nStartPos==0)				break;		}	}	this.Write = function /*public void*/ NLWJCC_Write()	{		if(this.m_Count>0 && this.m_Expires=="")			this.SetExpireDate(1); //default 1day		for(var nIndex=0; nIndex<this.m_Count; nIndex++)		{			var strBuffer = this.m_Name[nIndex] + "=" + this.m_Value[nIndex] + ";";			strBuffer += " expires=" + this.m_Expires + ";"; // requisite			if(this.m_Domain!="")				strBuffer += " domain=" + this.m_Domain + ";";			strBuffer += " path=" + this.m_Path + ";"; // requisite			document.cookie = strBuffer;		}	}	this.Close = function /*public void*/ NLWJCC_Close()	{		delete this.m_Name;		delete this.m_Value;		return true;	}		this.FindNameIndex = function /*protected int*/ NLWJCC_FindNameIndex(/*string*/strName)	{		var nRIndex = -1; // NoFind		for(var nIndex=0; nIndex<this.m_Count; nIndex++)		{			if(this.m_Name[nIndex] == strName)			{				nRIndex = nIndex; // Find				break;			}		}		return nRIndex;	}	this.GetName = function /*protected string*/ NLWJCC_GetName(/*int*/nIndex)	{		if(nIndex<0 || nIndex>this.m_Count)			return "";		return this.m_Name[nIndex];	}	this.GetValue = function /*protected string*/ NLWJCC_GetValue(/*int*/nIndex)	{		if(nIndex<0 || nIndex>this.m_Count)			return "";		return unescape(this.m_Value[nIndex]);	}}function NLWJCDD_QuickDicSearchPreMove(){	var objSrcEvent = window.event.srcElement;	if(objSrcEvent.tagName=="INPUT" || objSrcEvent.tagName=="A" || objSrcEvent.tagName=="TEXTAREA" || objSrcEvent.tagName=="IMG"	|| objSrcEvent.tagName=="SELECT" || objSrcEvent.tagName=="OPTION")	{		NLWJCDD_m_bPreMove=true;		return;	}}function NLWJCDD_QuickDicSearchPreHit(){	if(document.selection!=null)	{		var objSR = document.selection.createRange();		if(objSR!=null)		{			if(objSR.text.length>0)				document.selection.empty();		}	}	NLWJCDD_m_bPreMove=false;	NLWJCDD_m_bPreM=false;	var objSrcEvent = window.event.srcElement;	if(objSrcEvent.tagName=="INPUT" || objSrcEvent.tagName=="A" || objSrcEvent.tagName=="TEXTAREA" || objSrcEvent.tagName=="IMG"	|| objSrcEvent.tagName=="SELECT" || objSrcEvent.tagName=="OPTION")	{		NLWJCDD_m_bPreM=true;		return;	}}function NLWJCDD_QuickDicSearchHit(){	if(event.button!=1 || NLWJCDD_m_bProcQM || NLWJCDD_m_bPreM || NLWJCDD_m_bPreMove)		return;	var strValue="";	// Get Cookie	var objCookie = new NLWJCC_Cookie();	objCookie.Read();	strValue=objCookie.FindName(NLWJCDD_m_strCookieName);	objCookie.Close();	delete objCookie;	//		if(strValue=="off")		return;	// Menu Click	var objSrcEvent = window.event.srcElement;	if(objSrcEvent.tagName=="INPUT" || objSrcEvent.tagName=="A" || objSrcEvent.tagName=="TEXTAREA" || objSrcEvent.tagName=="IMG"	|| objSrcEvent.tagName=="SELECT" || objSrcEvent.tagName=="OPTION")		return;	var oSource = objSrcEvent.id;	if(oSource!="")	{		if(oSource.substring(0,8)=="QDSQMenu")		{			NLWJCDD_hiddenQM();			return;		}	}		NLWJCDD_viewQM();}function NLWJCDD_SetQuickDicSearchState(strState/*on,off*/){	var objCookie = new NLWJCC_Cookie();	objCookie.AddInfo(NLWJCDD_m_strCookieName,strState);	objCookie.SetExpireDate(10);	objCookie.Write();	objCookie.Close();	delete objCookie;}function NLWJCDD_viewQM(){	var objQM = document.all.QDSQuickDicMenu;	var strText ="";	if(document.selection!=null)	{		var objCR = document.selection.createRange();		if(objCR!=null)			strText = objCR.text;	}	if(strText == null || strText == "")	{		NLWJCDD_m_strText="";		objQM.style.visibility = "hidden";		return;	}	strText = strText.replace(/(^\s*)|(\s*$)/g, ""); 		var bWhiteChar=false;	if(strText.length>0)	{		var strTemp="";		var strExc="\r\n\t ";		for(var nIndex=0; nIndex<strText.length; nIndex++)		{			var strSpell = strText.substr(nIndex,1);			var nPos = strExc.indexOf(strSpell);			if(nPos>=0)			{				bWhiteChar=true;				break;			}		}	}	if(bWhiteChar)		return;		NLWJCDD_m_bProcQM=true;	clearTimeout(NLWJCDD_m_nTimeID);		var nCX = event.clientX;	var nCY = event.clientY;		var nLeft = document.body.scrollLeft;	var nTop = document.body.scrollTop;	var nWidth = document.body.clientWidth;	var nHeight = document.body.clientHeight;	var nImgX = 73;	var nImgY = 25;	var nQMLeft = nCX;	var nQMTop = nCY;	if(nQMLeft+nImgX >= nWidth)		nQMLeft = nWidth - nImgX - 10;	else		nQMLeft += 10; 	if(nQMTop <= nImgY)		nQMTop = nImgY;	else if(nQMTop+nImgY >= nHeight)		nQMTop = nHeight - nImgY - 10;	else		nQMTop += 10; 		objQM.style.left = nQMLeft + nLeft;	objQM.style.top = nQMTop + nTop;		objQM.innerHTML=NLWJCDD_GetQuickDicMenu(strText);		objQM.style.visibility = "visible";	NLWJCDD_m_strText=strText;	NLWJCDD_m_nTimeID=setTimeout("NLWJCDD_hiddenQM();",2000);	NLWJCDD_m_bProcQM=false;}function NLWJCDD_hiddenQM(){	clearTimeout(NLWJCDD_m_nTimeID);	NLWJCDD_m_strText="";	var objQM = document.all.QDSQuickDicMenu;	objQM.style.visibility = "hidden";}function NLWJCDD_GetQuickDicMenu(strAlt){	var strQuickDicMenu="";	if(strAlt.length>0)	{		var strTemp="";		var strExc="(){}[]<>.,!?_'\\\"\r\n\t ";		for(var nIndex=0; nIndex<strAlt.length; nIndex++)		{			var strSpell = strAlt.substr(nIndex,1);			var nPos = strExc.indexOf(strSpell);			if(nPos<0)				strTemp += strSpell;			else				break;		}		strAlt = strTemp;		//strAlt = NLWJCDD_GetString(strAlt,30);		strAlt = NLWJCDD_Replace(strAlt);		strQuickDicMenu = "<a id=\"QDSQMenuA1\" href=\"javascript:;\" onclick=\"NLWJCDD_OnQMProc('" + strAlt + "');NLWJCDD_hiddenQM();\" onfocus=\"this.blur()\">";		strQuickDicMenu += "<img id=\"QDSQMenuI1\" alt=\"'" + strAlt + "'단어 사전 검색하기\" src=\"/ebs/images/bdz/common/pop_menu1.gif\" width=\"73\" height=\"18\" border=\"0\"></a>";	}	return strQuickDicMenu;}function NLWJCDD_OnQMProc(strAlt){	if(strAlt.length>0)	{		var popupWinType="toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,scrollbars=no,width=520,height=400";		var objDicWordSpellView = window.open("/ebs/jsp/bdz/bdd/dicview.jsp?sp=" + encodeURIComponent(strAlt), "DicWordSpellView", popupWinType);		objDicWordSpellView.focus();	}}function NLWJCDD_OnQuickMenuState(strState){	NLWJCDD_SetQuickDicSearchState(strState);	var strHTML="<a href=\"javascript:NLWJCDD_OnQuickMenuState('off');\" onfocus=\"this.blur()\"><img src=\"/ebs/images/bdz/common/pop_on.gif\" border=\"0\" width=\"48\" height=\"11\" alt=\"사전on\"></a>";	if(strState=="off")		strHTML="<a href=\"javascript:NLWJCDD_OnQuickMenuState('on');\" onfocus=\"this.blur()\"><img src=\"/ebs/images/bdz/common/pop_off.gif\" border=\"0\" width=\"48\" height=\"11\" alt=\"사전off\"></a>"	document.all.QDSQuickMenuButton.innerHTML=strHTML;	NLWJCDD_hiddenQM();}document.onmouseup=NLWJCDD_QuickDicSearchHit;//document.onmousedown=NLWJCDD_QuickDicSearchPreHit;//document.onmousemove=NLWJCDD_QuickDicSearchPreMove;var NLWJCDD_m_strQuickDicMenu = "<div id=\"QDSQuickDicMenu\" style=\"position:absolute; visibility:hidden; z-index:1; top: 370px; height: 20px;\"></div>";document.write(NLWJCDD_m_strQuickDicMenu);// Get Cookievar objCookie = new NLWJCC_Cookie();objCookie.Read();strValue=objCookie.FindName(NLWJCDD_m_strCookieName);objCookie.Close();delete objCookie;var NLWJCDD_m_strQuickDicMenuPanel="";if(strValue=="off")	NLWJCDD_m_strQuickDicMenuPanel = "<div id=\"QDSQuickMenuButton\" style=\"position:absolute; z-index:1; left:expression(eval(__topNavigation.offsetLeft+925)); top:58px;\"><a href=\"javascript:NLWJCDD_OnQuickMenuState('on');\" onfocus=\"this.blur()\"><img src=\"/ebs/images/bdz/common/pop_off.gif\" border=\"0\" width=\"48\" height=\"11\"></a></div>";else	NLWJCDD_m_strQuickDicMenuPanel = "<div id=\"QDSQuickMenuButton\" style=\"position:absolute; z-index:1; left:expression(eval(__topNavigation.offsetLeft+925)); top:58px;\"><a href=\"javascript:NLWJCDD_OnQuickMenuState('off');\" onfocus=\"this.blur()\"><img src=\"/ebs/images/bdz/common/pop_on.gif\" border=\"0\" width=\"48\" height=\"11\"></a></div>";document.write(NLWJCDD_m_strQuickDicMenuPanel);function NLWJCDD_Replace(nodeString){	// 조사 처리	var Auxiliary = new Array(							"이라기보다는","까지만해도","라기보다는","으로부터의",														"내에서의","대로라면","든지간에","라기보다","로하여금","에서만이","에서부터","에서조차","에서처럼","으로서는",							"으로서의","으로부터","이라든지","이상으로","이야말로","하에서와",							"까지가","께서는","께서도","까지를","까지에","까지의","께부터","는커녕","동안에","든간에",							"때문에","라거나","라든가","로부터","로서는","를망정","만큼은","보다는","보다도","사이의",							"속에서","속으로","야말로","에게로","에게서","에다가","에라야","에로의","에서는","에서만",							"에서야","에서와","여만에","와함께","으로서","으로선","으로써","으로의","은커녕","이라야",							"을망정","이나마","이내에","이라니","이라도","이로되","이외의","인지라","한테로","한테서",							"조차도","치고는","하에서",														"적으로","하도록",														"들은",							"간에","간의","같은","같이","거나","까지","께서","나마","내내","내에",							"내지","대로","더러","동안","든지","따라","라구","라는","라니","라도",							"라서","로서","로선","로써","마다","마저","만큼","만한","말고","밖에",							"밖엔","밖의","보고","보다","부로","부터","뿐만","삼아","서껀","속에",							"안에","없이","에게","에겐","에다","에도","에만","에서","에선","에야",							"에의","와도","외에","으로","이나","이랑","이자","인즉","전에","전의",							"조차","중에","처럼","치고","치곤","하고","하구","하에","한테","후에",							"후의","하는",														"적인","에는","만은","들에","들이","들의","들을","들과",							"가","건","겸","경","께","나","는","당","도","두",							"든","라","란","랑","로","루","를","마","만","며",							"및","별","뿐","서","야","씩","아","에","엔","엘",							"여","와","은","을","의","이","전","후",														"과","인","시"														);								// 동사 처리	var Verb = new Array("이다", "했다", "이었다");	var replaceString=nodeString, changeString="";		var apply=false;	var pos=0;	for(var nIndex=0; nIndex<Auxiliary.length; nIndex++)	{		pos = nodeString.lastIndexOf(Auxiliary[nIndex]);		if(pos>0)		{			var auxiliary = Auxiliary[nIndex];			// 예외 처리			if(NLWJCDD_Exception(nodeString,auxiliary,pos))				continue;							// 처리			if(nodeString.length==(pos + auxiliary.length))			{				changeString=nodeString.substring(0,pos);				changeString=changeString.replace(/'/g,"");							if(changeString=="\"")					changeString="\\\"";								replaceString = changeString;				apply=true;				break;			}		}	}		if(!apply)	{		for(var nIndex=0; nIndex<Verb.length; nIndex++)		{			pos = nodeString.lastIndexOf(Verb[nIndex]);			if(pos>0)			{				var verb = Verb[nIndex];									// 처리				if(nodeString.length==(pos + Verb.length))				{					changeString=nodeString.substring(0,pos);					changeString=changeString.replace(/'/g,"");									if(changeString=="\"")						changeString="\\\"";										replaceString = changeString;					break;				}			}		}	}		return replaceString;}// 예외 처리function  NLWJCDD_Exception(nodeString,auxiliaryString,pos){	var result=false;	switch(auxiliaryString)	{		case "들의":			if(nodeString.substring(0,pos)=="그")				result=true;			break;		defalut:			break;	}	return result;}function NLWJCDD_GetStringLen(str){	var nStrLen=0;	var temp="";	for(var nIndex=0; nIndex<str.length; nIndex++)	{		temp = str.charAt(nIndex);		if(escape(temp).length > 4)			nStrLen += 2;		else			nStrLen++;	}	return nStrLen;}function NLWJCDD_GetString(str,nCutLen){	var strBuffer="";	var nStrLen=0;	var nLen = str.length;	var temp="";	for(var nIndex=0; nIndex<nLen; nIndex++)	{		temp = str.charAt(nIndex);		if(escape(temp).length > 4)			nStrLen += 2;		else			nStrLen++;		strBuffer = strBuffer + temp;		if(nStrLen >= nCutLen)			break;	}	return strBuffer;}