﻿var xmlHttp;
var objLastActive;	//가장 최근에 입력한 텍스트 엘리먼트에 대한 참조값
var theTextBox;	//텍스트 입력창 엘리먼트에 대한 참조값
var currentValueSelected = -1;	//레이어 창의 샐랙트 인덱스 값이라도 생각하면 됨.
var countForId = 0

function createXMLHttpRequest() {
    if (window.ActiveXObject) {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    else if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();
    }
}
    
function CallAjax() 
{
		currentValueSelected = -1;
	    createXMLHttpRequest();

		var params = "rQuery=" + document.getElementById("rQuery").value.toUpperCase();
		//alert(params);
		xmlHttp.open("POST", "/Search/ResponseXml.asp", true); 
		xmlHttp.onreadystatechange = CalledFunction;
		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlHttp.setRequestHeader("Content-length", params.length);
		xmlHttp.setRequestHeader("Connection", "close");
		
		xmlHttp.send(params);

}
    
function CalledFunction() {

    if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
            var xmlData = xmlHttp.responseXML;
            var itemNode = xmlData.getElementsByTagName("RetriveList");
            var ErrNode = xmlData.getElementsByTagName("ErrorNumber");
			if (ErrNode.length == 0) 
			{

				cnt=itemNode.length; 
				this.text=new Array(cnt); 
				this.code=new Array(cnt); 
				this.sum =new Array(cnt);

				var testDiv = document.getElementById('kwd_box'); // 레이어 ID 정의 
				var boxMain = ''; // 박스 내용 정의 및 초기화 
				var kwd_cnt = 0; 
				// 특수문자 escape 
				sVal = document.getElementById("rQuery").value;
				
				sVal = sVal.replace(/([~`@#$%^&*()|\+=-_;:\-\,\.\'\"\\t\\n\\r<>!?/])/g, '\\$1'); 
				for(i=0;i<cnt;i++)
				{ 
					this.code[i]=xmlData.getElementsByTagName("Keyword").item(i).text;  //a care LCase and Ucase
					this.text[i]=xmlData.getElementsByTagName("Counter").item(i).text;  //a care LCase and Ucase
					this.sum[i] =xmlData.getElementsByTagName("Sum").item(i).text;  //a care LCase and Ucase
					//this.text[i]=xmlDoc.getElementsByTagName("index/@text").item(i).text; 
					//alert(this.code[i]);
				

								//if(this.code[i].match(eval('/^' + sVal + '{1,}/'))) // 일치하는 글자가 있으면 
               // { 
                    // 일치하는 항목 보여주고 글자 하나를 강조합시다. 
                    match_kwd = this.code[i].replace(eval('/(' + sVal + '){1,1}/gi'), '<font color=#FF6666>$1</font>'); 
                    boxMain = boxMain 
                    + "<tr height=23  id='slist_" +i+ "' title='" + this.code[i] + "' onClick=\"click2search(this.getAttribute('title'))\" onMouseOver=\"this.style.backgroundColor='#FFEEDD'\" onMouseOut=\"this.style.backgroundColor=''\">" 
                    + "<td name='_slb' style='cursor:pointer; text-align:left;' nowrap>" 
                    + "<div name='_slb' style='width:167px; height:18px; overflow:hidden;'> " + match_kwd + "</div></td><td width='90' align='right'>" + this.text[i] + "건 </td><td width='30'></td></tr>\n"; 
                    kwd_cnt++; 
               // } 

				}
				countForId = i;
				divH = (kwd_cnt > 10) ? 230 : (kwd_cnt*23); // 스크롤바 조절용 DIV 높이 계산 (10개 이상 무조건 230px, 그 이하는 곱하기 23px)
				tLeft=0;
				tWidth=250;
				iWidth=tWidth-2;
				var boxHead = "<iframe style='position:absoulte; top:0px; width:"+iWidth+"px;height:" + divH + "px; z-index:10; left:"+tLeft+"px; border:0px'></iframe>"
							+ "<table cellpadding=0 cellspacing=0 style='width:"+tWidth+"px;background-Color:#fff; position:absolute; border:1px solid f4f4f4; top:0px; left:"+tLeft+"px; z-index:11'>" 
							+ "<tr><td style='padding-left:5px;'>" 
				+ "<div name='_slb' id='divh' style='width:100%;height:" + divH + "px;overflow-x:hidden;overflow-y:auto;'>"
				+ "<table width=100% cellpadding=0 cellspacing=0>" 
				var boxFoot = "</table></div></td></tr></table>"; 
				if(kwd_cnt)//&& !(blu * mout) ) //결과가 하나 이상 있으면 show 
				{ 
					testDiv.innerHTML = boxHead + boxMain + boxFoot; 
					testDiv.style.visibility = 'visible'; 
				}
				else
				{ 
					//alert('blu'+blu+':mout'+mout);
					testDiv.style.visibility = 'hidden'; 
				}
			} 
			else 
			{	// on error 
				var ErrorSource			= xmlData.getElementsByTagName("ErrorSource").item(0).text; 
				var ErrorDescription	= xmlData.getElementsByTagName("ErrorDescription").item(0).text; 
				var ErrorQuery			= xmlData.getElementsByTagName("ErrorQuery").item(0).text; 
				
				alert("On Error :"  + "\n" + ErrorSource + "\n" + ErrorDescription  + "\n" + ErrorQuery  );
			}

				
            AddHandler(document.mform.rQuery);
        }
    }
}

var isOpera=(navigator.userAgent.toLowerCase().indexOf("opera")!= -1);
function AddHandler(objText) 
{
	objText.onkeyup = GiveOptions;
	if(isOpera)objText.onkeypress = GiveOptions;
}

function GiveOptions(e) 
{
	var intKey = -1;
	if(window.event) 
	{
		intKey = event.keyCode;
		theTextBox = event.srcElement;	//인풋테그의 이름값
	}
	else 
	{	
		intKey = e.which;	//글자값
		theTextBox = e.target;	//인풋태그의 이름값
	}

	if(intKey == 13) {	//엔터키를 눌럿다면
		if(currentValueSelected < 0)
		{
			var keyword = document.getElementById('rQuery').value;
		}
		else
		{
			var keyword = document.getElementById('slist_' + currentValueSelected).getAttribute('title');
		}
		click2search(keyword);
		//document.mform.submit();	//폼을 서브밑 시킨다. 왜? 엔터를 쳤으니간
		//theTextBox.blur();	//텍스트박스에 포커스를 제거한다.
		//return false;
	}
	else if(intKey == 38) {	//위쪽 화살표키를 눌렷다면
		MoveHighlight(-1);	//선택항목의 위치를 -1만큼 이동
		return false;
	}
	else if(intKey == 40) {	//아래쪽 화실표키를 눌럿다면
		MoveHighlight(1);	//선택항목의 위치를 +1만큼 이동
		return false;
	}
	else if(document.getElementById('rQuery').value.length>0)
	{
		CallAjax(); 
	}
	else 
	{	
		autoComplete('hide');
	}



}

//키보드로 위아래 제어
function MoveHighlight(xDir) {
	if(currentValueSelected >= -1) 
	{

		newValue = parseInt(currentValueSelected) + parseInt(xDir);

		if(newValue > -1 && newValue < countForId) 
		{

			document.getElementById('divh').scrollTop = Math.floor(newValue/10)*230;

			currentValueSelected = newValue;
			SetHighColor (null);
		}
	}
}

//키보드의 움직임에 따라서 위아래 움직임 효과를 준당
function SetHighColor() {
	for(i = 0; i < countForId; i++) {
		document.getElementById('slist_' + i).style.backgroundColor = '#FFFFFF';
	}
	
	document.getElementById('slist_' + currentValueSelected).style.backgroundColor = '#FFEEDD';

}

var IE = (navigator.userAgent.indexOf('MSIE') != -1) ? true : false; // IE 체크 

function click2search(sVal) // 클릭해서 바로 폼 전송
{ 
    var frm = document.mform; 
    frm.rQuery.value = sVal; 
    //alert(frm._slb_inp.value); 
    frm.submit(); 
} 

function autoComplete(act, sVal, len) 
{

	if(act == 'show' && len > 0)
	{
		CallAjax();
		//alert(act);
	}
	else
	{
		var testDiv = document.getElementById('kwd_box'); // 레이어 ID 정의 
		testDiv.innerHTML = ''; 
		testDiv.style.visibility = 'hidden'; 
		return false; 

	}
} 

function hide_ctrl(e) // 다른 곳 클릭하면 레이어 안보이게... 
{ 
    if(!e) var e = window.event; 
    var srcEle = (IE) ? event.srcElement : e.target; 
    if(!srcEle.name || srcEle.name.indexOf('_slb') == -1) 
	{
		autoComplete('hide','',''); 
	}
} 


