﻿var dir = 0;
/* autokeyword 잠시 중단 */
var enable = false;
var maxCount = 0;
var curSel = -1;
var selColor = "#E0E0E0";
var noneSelColor = "#ffffff";
var wordiemId = "worditem";

function processQuery()
{
    if (!(event.keyCode == 40 || event.keyCode == 38)) {
        //40 : 아래화살표, 38 : 윗화살표
        sendQuery();
    }
}

function getXMLHttpRequest() 
{
    var xmlreq = false;

    // FF일 경우 window.XMLHttpRequest 객체가 존재
    if (window.XMLHttpRequest) {
        xmlreq = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        try {
            xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e1) {
            try {
                // IE 경우 객체 선언 
                xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e2) {
                // Unable to create an XMLHttpRequest with ActiveX
            }
        }
    }

    return xmlreq;
}

function getReadyStateHandler(req, responseXmlHandler)
{
    return function ()
    {
        // readyState가 4고 status가 200일 경우 올바르게 가져옴
        if (req.readyState == 4) {
            if (req.status == 200) {
                responseXmlHandler(req.responseXML);
            }
            else {
                alert("HTTP error: "+req.status);
            }
        }
    }
}

function sendQuery()
{
    //var f = document.forms[0];
    //var keyword = f.sq_keywd.value;
    var keyword = document.getElementById("sq_keywd").value;

    if (keyword != '' && enable) {
        var req = getXMLHttpRequest();
        var handlerFunction = getReadyStateHandler(req, updateKeyword);

        req.onreadystatechange = handlerFunction;
        req.open("POST", "/searchq/sqwebui/HttpAutoCompKeyword.php", true);
        req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        keyword = encodeURIComponent(keyword);
        req.send("dir=" + dir + "&keyword=" + keyword);
    }

    return true;
}

function updateKeyword(keywordXML)
{
    var words = keywordXML.getElementsByTagName("words");
    var org = "";
    var forwardContent = "";
    var backwardContent = "";

    if (enable) {
        if (words != null && words.length > 0) {
            var forward = words[0].getElementsByTagName("forward");
            var backward = words[0].getElementsByTagName("backward");

            org = words[0].getAttribute("org");
            //alert(org);

            maxCount = 0;
            curSel = -1;

            if (forward != null && forward.length > 0) {
                var len = forward[0].childNodes.length;

                forwardContent += "<table width='100%' cellpadding='0' cellspacing='0' border='0'>";

                for (var i = 0; i < len; i++) {
                    var item = forward[0].childNodes[i];
                    var keyword = item.getAttribute("keyword");

                    forwardContent += "<tr width='100%'>";
                    forwardContent += "<td align='left' id='" + wordiemId + maxCount + "' width='100%' onclick=\"AutoSearch('" + keyword + "')\" onmouseover='cellMouseOver()' onmouseout='cellMouseOut()'>";
                    forwardContent += "<a style='color : #000000' href='#' onclick=\"AutoSearch('" + keyword + "')\">";

                    if (dir == 0) {
                        forwardContent += "<span class=\"org_9\">" + keyword.substring(0, org.length) + "</span>";
                        forwardContent += keyword.substring(org.length);
                    }
                    else {
                        forwardContent += keyword.substring(0, keyword.length-org.length);
                        forwardContent += "<span class=\"org_9\">" + keyword.substring(keyword.length-org.length) + "</span>";
                    }

                    forwardContent += "</a>";
                    forwardContent += "</td></tr>";

                    //alert(keyword);

                    maxCount++;
                }

                forwardContent += "</table>";
            }

            //alert("end");

            if (backward != null && backward.length > 0) {
                var len = backward[0].childNodes.length;

                backwardContent += "<table width='100%' cellpadding='0' cellspacing='0' border='0'>";

                for (var i = 0; i < len; i++) {
                    var item = backward[0].childNodes[i];
                    var keyword = item.getAttribute("keyword");

                    backwardContent += "<tr width='100%'>";
                    backwardContent += "<td align='left' id='" + wordiemId + maxCount + "' width='100%' onclick=\"AutoSearch('" + keyword + "')\" onmouseover='cellMouseOver()' onmouseout='cellMouseOut()'>";
                    backwardContent += "<a style='color : #000000' href='#' onclick=\"AutoSearch('" + keyword + "')\">";

                    if (dir == 0) {
                        backwardContent += keyword.substring(0, keyword.length-org.length);
                        backwardContent += "<span class=\"org_9\">" + keyword.substring(keyword.length-org.length) + "</span>";
                    }
                    else {
                        backwardContent += "<span class=\"org_9\">" + keyword.substring(0, org.length) + "</span>";
                        backwardContent += keyword.substring(org.length);
                    }

                    backwardContent += "</a>";
                    backwardContent += "</td></tr>";

                    //alert(keyword);

                    maxCount++;
                }

                backwardContent += "</table>";
            }
        }

        var autoForward = document.getElementById("autoForward");
        var autoBackward = document.getElementById("autoBackward");

        if (forwardContent == "")
            forwardContent = "검색된 단어가 없습니다.";

        if (backwardContent == "")
            backwardContent = "검색된 단어가 없습니다.";

        autoForward.innerHTML = forwardContent;
        autoBackward.innerHTML = backwardContent;

        showAutoComplete();
    }
}

function processKey()
{
    if (event.keyCode == 40 || event.keyCode == 38) {
        //40:아래화살표, 38:윗화살표

        showAutoComplete();

        if (maxCount > 0) {
            if (event.keyCode == 40) {
                curSel++;
            }
            else {
                curSel--;
            }
            if (curSel >= maxCount) {
                curSel = 0;
            }
            if (curSel < 0) {
                curSel = maxCount - 1;
            }

            var worditemCur = document.getElementById(wordiemId + curSel);

            for (var i = 0; i < maxCount; i++) {
                var worditemPrev = document.getElementById(wordiemId + i);
                worditemPrev.style.backgroundColor = noneSelColor;
            }
            worditemCur.style.backgroundColor = selColor;

            var search = document.getElementById("sq_keywd");
            if( worditemCur.innerText != '' ) {
                search.value = worditemCur.innerText;
            }

        }
    }
}

function showAutoComplete()
{
    var autocomplete = document.getElementById("autocomplete");
    var toggleshow = document.getElementById("toggleshow");

    autocomplete.style.display = "block";

	if (toggleshow == null)
		return;

    toggleshow.src = "/searchq/images/autokeyword/up.gif";
    toggleshow.alt = "감추기";
}

function hideAutoComplete()
{
    var autocomplete = document.getElementById("autocomplete");
    var toggleshow = document.getElementById("toggleshow");

    autocomplete.style.display = "none";

	if (toggleshow == null)
		return;

    toggleshow.src = "/searchq/images/autokeyword/down.gif";
    toggleshow.alt = "보이기";

    curSel = -1;
}

function ToggleShow()
{
    var autocomplete = document.getElementById("autocomplete");

    if (autocomplete.style.display == "block")
        hideAutoComplete();
    else
        showAutoComplete();
}	

function getAbsoluteLeft(node)
{
    var curNode = node;
    var left = 0;

    while(curNode.tagName != "BODY") {
        left += curNode.offsetLeft;
        curNode = curNode.offsetParent;
    }

    return left;
}

function getAbsoluteTop(node)
{
    var curNode = node;
    var top = 0;

    while(curNode.tagName != "BODY") {
        top += curNode.offsetTop;
        curNode = curNode.offsetParent;
    }

    return top;
}

function hideAutoCompleteFromDoc()
{
    if (event.srcElement.id == "toggleshow")
        return;
    hideAutoComplete();
}

function ToggleEnable()
{
    var enableauto = document.getElementById("enableauto");
    var autoForward = document.getElementById("autoForward");
    var autoBackward = document.getElementById("autoBackward");

    if (enable) {
        enable = false;
        enableauto.innerText = "기능켜기";
        autoForward.innerHTML = "기능켜기를 눌러 주십시오.";
        autoBackward.innerHTML = "";
    }
    else {
        enable = true;
        enableauto.innerText = "기능끄기";
        autoForward.innerHTML = "";
        autoBackward.innerHTML = "";

        sendQuery();
    }
}

function ToggleDir()
{
    var toggledir = document.getElementById("toggledir");

    if (dir == 0) {
        toggledir.innerText = "앞단어더보기";
        dir = 1;
    }
    else {
        toggledir.innerText = "끝단어더보기";
        dir = 0;
    }

    sendQuery();
}

function cellMouseOver()
{
    var td = null;

    if (event.srcElement.tagName == "TD") {
        td = event.srcElement;
    }
    else if (event.srcElement.tagName == "A") {
        td = event.srcElement.parentElement;
    }
    else if (event.srcElement.tagName == "SPAN") {
        td = event.srcElement.parentElement.parentElement;
    }

    if (td != null) {
        td.style.backgroundColor = selColor;
        td.style.cursor = "hand";
    }
}

function cellMouseOut()
{
    var td = null;

    if (event.srcElement.tagName == "TD") {
        td = event.srcElement;
    }
    else if (event.srcElement.tagName == "A") {
        td = event.srcElement.parentElement;
    }
    else if (event.srcElement.tagName == "SPAN") {
        td = event.srcElement.parentElement.parentElement;
    }

    if (td != null) {
        var mouseSel = parseInt(td.id.substring(wordiemId.length));
        if (mouseSel != curSel) {
            td.style.backgroundColor = noneSelColor;
        }
    }
}

function setSearchFocus()
{
    var search = document.getElementById("sq_keywd");
    search.focus();
}

/*
function AutoSearch(keyword)
{
    var f = document.forms[0];
    f.sq_keywd.value = keyword;
    DoSearch();
}
*/

function DoSearch()
{
    var searchform = document.getElementById("sq_searchfrm");
    var search = document.getElementById("sq_keywd");

    if (curSel != -1) {
        var worditem = document.getElementById(wordiemId + curSel);

        curSel = -1;
        worditem.onclick();
    }

    if (search.value == '') {
        alert ('검색어를 입력하십시오.');
        search.focus();
        return false;
    }

    searchform.action = 'test_search.php';
    searchform.submit();

    return false;
}

document.onclick = hideAutoCompleteFromDoc;
