// ********************************************************
//* ½Ã½ºÅÛ¸í : WJBSON(Á¾ÇÕ¹ý·üÁ¤º¸½Ã½ºÅÛ)
//* ÆÄÀÏ¸í : wjbsona.js
//* ¼³¸í : Á¾ÇÕ¹ý·üÁ¤º¸½Ã½ºÅÛ ÀÚµ¿È­ ±â´É ½ºÅ©¸³Æ®
//* ÀÛ¼ºÀÚ : ±èÁßÀÏ
//* ÀÛ¼ºÀÏ : 2007.04.16
//* History : 2007.04.16 ÃÖÃÊÀÛ¼º
//**********************************************************

/**
* °øÅë º¯¼ö
*/
var isFirst = true;
var curIdx = 0;

var httpRequest;
var completeDiv;
var inputField;
var keywordTable;
var keywordTableBody;

var inField;
var autoIcon;
var caseView;
var autoDivObj;
var autoDivR;
var autoDivT;
var autoDivM;
var autoDivP;
var autoDivJ;
var autoDivD;
var keyView;
var keyTable;
var keyBody;
var autoMsg;
var useCheck;
var objCd = '1';

/**
* ÃÊ±âÈ­
*   ÀÚµ¿È­ ¿Ï¼º Object Code
*     °Ë»ö¾î : 1, Á¦¿Ü¾î : 2, ÂüÁ¶Á¶¹® °ü·ÃÁ¶¹® : 3, ¹ý·É¸í : 4, Á¦¸ñ : 5
*/
function initObj(idx) {
    var autoIconStr = "autoIcon" + idx;
    var caseViewStr = "caseView" + idx;
    var keyViewStr = "keyView" + idx;
    var keyTableStr = "keyTable" + idx;
    var keyBodyStr = "keyBody" + idx;
    var autoMsgStr = "autoMsg" + idx;
    var useCheckStr = "useCheck" + idx;
    
    switch(Number(idx)) {
        case 1:
            inField = document.getElementById("keyword");
            break;
        case 2:
            inField = document.getElementById("exWord");
            break;
        case 3:
            inField = document.getElementById("refProv");
            break;
        case 4:
            inField = document.getElementById("lawName");
            break;
        case 5:
            inField = document.getElementById("title");
            break;
    }
    
    autoDivObj = document.getElementById("autoDivT");
    autoDivM  = document.getElementById("autoDivM");
    autoDivR = document.getElementById("autoDivR");
    autoDivP = document.getElementById("autoDivP");
    autoDivJ = document.getElementById("autoDivJ");
    autoDivD = document.getElementById("autoDivD");
    autoIcon = document.getElementById(autoIconStr);
    caseView = document.getElementById(caseViewStr);
    keyView = document.getElementById(keyViewStr);
    keyTable = document.getElementById(keyTableStr);
    document.onclick = function() {
        keyView.style.display = "none";
        selectCtrl() ;
        
    };
    keyBody = document.getElementById(keyBodyStr);
    autoMsg = document.getElementById(autoMsgStr);
    useCheck = document.getElementById(useCheckStr);
    objCd = idx;

}

/**
* XMLHttpRequest ¸ðµâ
*/
function getXMLHttpRequest() {
    if (window.ActiveXObject) {
        try {
            return new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
	        try {
	            return new ActiveXObject("Microsoft.XMLHTTP");
	        } catch(e1) {
	            return null;
	        }
	    }
    } else if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else {
        return null;
    }
}

function sendRequest(url, params, callback, method) {
    httpRequest = getXMLHttpRequest();
    var httpMethod = method ? method : 'GET';
    if (httpMethod != 'GET' && httpMethod != 'POST') {
        httpMethod = 'GET';
    }
    var httpParams = (params == null || params == '') ? null : params;
    var httpUrl = url;
    if (httpMethod == 'GET' && httpParams != null) {
        httpUrl = httpUrl + "?" + httpParams;
    }
//    alert(httpUrl);
    httpRequest.open(httpMethod, httpUrl, true);
    httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    httpRequest.setRequestHeader('Ajax', 'true');
    httpRequest.onreadystatechange = callback;
      httpRequest.send(httpMethod == 'POST' ? httpParams : null);
}

/**
* ¾ÆÀÌÄÜ À§Ä¡ ÁöÁ¤
*/
function setIconPos() {

    var icon = document.getElementsByName("icon");
    
    for(var i=0;i<icon.length;i++) {
        if(i>1 && document.getElementById("autoIcon4")) {
            initObj('4');
        } else if(i>1 && document.getElementById("autoIcon5")) {
            initObj('5');
        } else {
            initObj(i+1);
        }
        
        if(icon.length == 1 && document.getElementById("autoIcon4")) initObj('4');
        
        var left = calOffLeft(inField) + inField.offsetWidth - icon[i].offsetWidth - 2;
        var top = calOffTop(inField) + 2;
        autoIcon.style.left = left + "px";
        autoIcon.style.top = top + "px";
    }

}

/**
* ÀÚµ¿È­ °Ë»ö Ã¢ À§Ä¡ ¹× »çÀÌÁî Á¶Àý
*/
function setPos(){
    var left = "";
    var top = "";
     if(autoDivD) {
        left = -159;
        top = calOffTop(inField) + inField.offsetHeight - 13;
    } else if(autoDivJ) {
        left = -229;
        top = calOffTop(inField) + inField.offsetHeight -126; // 11
    } else if(autoDivP) {
        left = -229;
        top = calOffTop(inField) + inField.offsetHeight;
    } else if(autoDivR) {
        left = -159;
        top = calOffTop(inField) + inField.offsetHeight-91;
    }    else if(autoDivM) {
        left = -25;
        top = inField.offsetHeight +229;
    } else if(autoDivObj) {
        left = -229;
        top = calOffTop(inField) + inField.offsetHeight - 113;
    } else if(caseView) {
        left = 0;
        top = inField.offsetHeight - 5;
    } 
	 else {
        left = 0;
        top = inField.offsetHeight + 1;
    }
    keyView.style.left = left + "px";
    keyView.style.top = top + "px";
    keyTable.style.width = inField.offsetWidth + "px";
}

/**
* ÁÂÃø ½ÃÀÛ À§Ä¡ °è»ê
*/
function calOffLeft(field) {
    return calculateOffset(field, "offsetLeft");
}

/**
* »ó´Ü ½ÃÀÛ À§Ä¡ °è»ê
*/
function calOffTop(field) {
    return calculateOffset(field, "offsetTop");
}

/**
* À§Ä¡ °è»ê
*/
function calculateOffset(field, attr) {
    var offset = 0;
    while(field) {
        offset += field[attr]; 
        field = field.offsetParent;
    }
    return offset;
}


// ¿©±â
/**
* ÀÚµ¿È­ °Ë»ö Ã¢ ÄÁÆ®·Ñ
*/
function ctrlDiv(obCode, event){

    initObj(obCode);
    setPos();
    keyBody.style.height = "";

    if(keyView.style.display == "block") {
        keyView.style.display = "none";
        selectCtrl() ;
    }else{
            //searchKeys(obCode, event);
            keyView.style.display = "block";
	   	selectCtrl(obCode) ;
    }
    stopAllEvent(event);
}

/**
* µ¥ÀÌÅÍ °Ë»ö
*/
function searchKeys(obCode, e) {

    var event = window.event || e;
    if(event.type == 'keyup' && event.keyCode == 229) return;
   
    clKeys(obCode);
    initObj(obCode);
    
    if(useCheck.checked) {
        return;
    }
    
    if((event.keyCode?event.keyCode:event.charCode) == 13) {
        return;
    }

    objCd = obCode;
    
    if (inField.value.length > 0) {
    
//       alert("inField.value=" + inField.value  + "     autoCode=" + obCode);
        getXMLHttpRequest();
        var url = "/jbsonw/wjbsona.do";
        sendRequest(url, "keyword="+encodeURIComponent(inField.value)+"&autoCode="+obCode, retback, 'POST');
    } else {
        clKeys(obCode);
    }
}

/**
* µ¥ÀÌÅÍ °Ë»ö
*/
function searchKeys2(obCode, e) {

    var event = window.event || e;
   
    clKeys(obCode);
    initObj(obCode);
    
    if(useCheck.checked) {
        return;
    }
    
    if((event.keyCode?event.keyCode:event.charCode) == 13) {
        return;
    }

    objCd = obCode;
    
    if (inField.value.length > 0) {
    
//       alert("inField.value=" + inField.value  + "     autoCode=" + obCode);
        getXMLHttpRequest();
        var url = "/jbsonw/wjbsona.do";
        sendRequest(url, "keyword="+encodeURIComponent(inField.value)+"&autoCode="+obCode, retback, 'POST');
    } else {
        clKeys(obCode);
    }
}

/**
* request °´Ã¼ È£Ãâ
*/
function retback() {

    if (httpRequest.readyState == 4) {
        if (httpRequest.status == 200) {
            showKeywords();
        } else if (httpRequest.status == 204){//µ¥ÀÌÅÍ°¡ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì
            clKeys(objCd);
        }
    }
}


// ¿©±â
/**
* °á°ú È­¸é Ãâ·Â
*/
function showKeywords() {

    clKeys(objCd);
    setPos();
//    alert(httpRequest.responseText);
    if(httpRequest) {
        keyBody.innerHTML = httpRequest.responseText;
    }
    
    if (keyBody.firstChild != null) {
        var trLen = keyBody.getElementsByTagName("td").length;
        if(trLen > 0) {
            keyBody.getElementsByTagName("td")[0].width =  inField.offsetWidth + "px";
        }
        if (trLen > 5) {
            keyBody.style.height = "105px";
        } else if(trLen == 1) {
            keyBody.style.height = "50px";
        } else {
            keyBody.style.height=String((22 * trLen)) + "px";
        }
    }

    keyView.style.display = "block";
    
   	selectCtrl() ;
       
}

/**
* °Ë»ö¾î ÀÔ·Â ¹Ú½º Å¬¸¯ Ã¼Å©
*/
function chFirst(obCode){

    initObj(obCode);
    
    if(obCode != '1') return;
    
    if(isFirst){
        //inField.value = "";
        isFirst = false;
    }
    curIdx = 0;
    objCd = obCode;

}

/**
* ÀÚµ¿¿Ï¼º ¸®½ºÆ® »èÁ¦
*/
function  clKeys(obCode) {

    initObj(obCode);

    if (keyBody.firstChild != null) {
        keyBody.removeChild(keyBody.firstChild);
    }
    
    curIdx = 0;
    keyView.style.display = "none";
    selectCtrl() ;

}

/**
* À§ ¾Æ·¡ ÀÌµ¿
*/
function ctrlKey(inFlg, obCode, e) {

    var event = window.event || e;
    
    initObj(obCode);

    var vt = document.getElementById("viewTable"+obCode);
 
     if(vt != null) {
        if(curIdx >= 0 && event.keyCode == 38) {
            if(curIdx == 0) {
                vt.firstChild.childNodes[0].childNodes[0].style.backgroundColor="#FFFFFF";
                inField.focus();
            } else {
                curIdx = curIdx - 1;
                vt.firstChild.childNodes[curIdx+1].childNodes[0].style.backgroundColor="#FFFFFF";
                vt.firstChild.childNodes[curIdx].childNodes[0].style.backgroundColor="#E0FBEB";
                vt.firstChild.childNodes[curIdx].childNodes[0].focus();
            }
        } else if(curIdx <= vt.firstChild.childNodes.length-1 && event.keyCode == 40) {
            if(inFlg == '0') {
                curIdx = 0;
                vt.firstChild.childNodes[curIdx].childNodes[0].style.backgroundColor="#E0FBEB";
                vt.firstChild.childNodes[curIdx].childNodes[0].focus();
            }
             if(inFlg == '1') {
                 var chLen = vt.firstChild.childNodes.length;
                 if(curIdx < chLen-1) {
                     curIdx = curIdx + 1;
                     vt.firstChild.childNodes[curIdx-1].childNodes[0].style.backgroundColor="#FFFFFF";
                     vt.firstChild.childNodes[curIdx].childNodes[0].style.backgroundColor="#E0FBEB";
                     vt.firstChild.childNodes[curIdx].childNodes[0].focus();
                 }
            }
        } else if(inFlg == '1' && event.keyCode == 13) {
            var searchStr = vt.firstChild.childNodes[curIdx].childNodes[0].innerHTML;
            searchStr = searchStr.replace(/<font color=lightblue>/gi, '');
            searchStr = searchStr.replace(/<font color=red>/gi, '');
            searchStr = searchStr.replace(/<\/font>/gi, '');
            inField.value = searchStr;
            clKeys(obCode);
            inField.focus();
            curIdx = 0;
            event.keyCode = 0;    
            event.returnValue = false; 
  		    event.cancelBubble = true;  
  		    keyView.style.height = "";
        } else if(inFlg == '0' && event.keyCode == 40 && vt.firstChild.childNodes.length == 1) {
                vt.firstChild.childNodes[0].childNodes[0].style.backgroundColor="#E0FBEB";
                vt.firstChild.childNodes[0].childNodes[0].focus();
        } else {
            searchKeys(obCode, event);
            inField.focus();

        }

    } else {
        searchKeys(obCode, event);
        inField.focus();
    }
    
    
}

/**
* À§ ¾Æ·¡ ÀÌµ¿
*/
function ctrlKey2(inFlg, obCode, e) {

    var event = window.event || e;
    

    var vt = document.getElementById("viewTable"+obCode);
 
     if(vt != null) {
        if(curIdx >= 0 && event.keyCode == 38) {
            if(curIdx == 0) {
                vt.firstChild.childNodes[0].childNodes[0].style.backgroundColor="#FFFFFF";
                inField.focus();
            } else {
                curIdx = curIdx - 1;
                vt.firstChild.childNodes[curIdx+1].childNodes[0].style.backgroundColor="#FFFFFF";
                vt.firstChild.childNodes[curIdx].childNodes[0].style.backgroundColor="#E0FBEB";
                vt.firstChild.childNodes[curIdx].childNodes[0].focus();
            }
        } else if(curIdx <= vt.firstChild.childNodes.length-1 && event.keyCode == 40) {
            if(inFlg == '0') {
                curIdx = 0;
                vt.firstChild.childNodes[curIdx].childNodes[0].style.backgroundColor="#E0FBEB";
                vt.firstChild.childNodes[curIdx].childNodes[0].focus();
            }
             if(inFlg == '1') {
                 var chLen = vt.firstChild.childNodes.length;
                 if(curIdx < chLen-1) {
                     curIdx = curIdx + 1;
                     vt.firstChild.childNodes[curIdx-1].childNodes[0].style.backgroundColor="#FFFFFF";
                     vt.firstChild.childNodes[curIdx].childNodes[0].style.backgroundColor="#E0FBEB";
                     vt.firstChild.childNodes[curIdx].childNodes[0].focus();
                 }
            }
        } else if(inFlg == '1' && event.keyCode == 13) {
            var searchStr = vt.firstChild.childNodes[curIdx].childNodes[0].innerHTML;
            searchStr = searchStr.replace(/<font color=red>/gi, '');
            searchStr = searchStr.replace(/<\/font>/gi, '');
            inField.value = searchStr;
            clKeys(obCode);
            inField.focus();
            curIdx = 0;
            event.keyCode = 0;    
            event.returnValue = false; 
  		    event.cancelBubble = true;  
  		    keyView.style.height = "";
        } else if(inFlg == '0' && event.keyCode == 40 && vt.firstChild.childNodes.length == 1) {
                vt.firstChild.childNodes[0].childNodes[0].style.backgroundColor="#E0FBEB";
                vt.firstChild.childNodes[0].childNodes[0].focus();
        } else {
            searchKeys(obCode, event);
            inField.focus();

        }

    } else {
        searchKeys(obCode, event);
        inField.focus();
    }
    
    
}
/**
* ÀÚµ¿È­ °Ë»ö »ç¿ë/¹Ì»ç¿ë ÀüÈ¯
*/
function setAutoMode(obCode){
    initObj(obCode);
    setPos();
    clKeys(obCode);

    if (keyBody.firstChild == null) {
        keyBody.style.height="";
    }
    
    if(useCheck.checked){
        keyBody.style.height="";
        autoMsg.innerHTML = "<font color='#FFFFFF'>ÇöÀç ÀÚµ¿¿Ï¼º ±â´ÉÀ» »ç¿ëÇÏ°í ÀÖÁö ¾Ê½À´Ï´Ù.</font>";
    }else{
        autoMsg.innerHTML = "<font color='#FFFFFF'>ÇöÀç ÀÚµ¿¿Ï¼º ±â´ÉÀ» »ç¿ëÁßÀÔ´Ï´Ù.</font>";
        searchKeys(obCode);
    }
}

/**
* °Ë»öµÈ Å°¿öµå ¼±ÅÃ
*/
function selectWord(word, obCode){
    initObj(obCode);
    inField.value = word;
    keyBody.style.height="1px";
    clKeys(obCode);
    inField.focus();
    curIdx = 0;
}

/**
* °Ë»öÃ¢ ¸ðµÎ ´Ý±â
*/
function clAll(){

    for(var i=1; i<6; i++) {
        var tmpObj = document.getElementById("keyView" + i);
        if(tmpObj) {
            clKeys(String(i));
        }
    }
}

/**
* ÀÚµ¿È­ ±â´É »ç¿ë/¹Ì»ç¿ë Àû¿ë
*/
function setAutoFlg(autoFlg){

    for(var i=1; i<6; i++) {
        var tmpCheck = document.getElementById("useCheck" + i);
        var tmpMsg = document.getElementById("autoMsg" + i);
        if(tmpCheck && autoFlg == '1') {
            tmpCheck.checked = true;
            tmpMsg.innerHTML = "<font color='#0F0F0F'>ÇöÀç ÀÚµ¿¿Ï¼º ±â´ÉÀ» »ç¿ëÇÏ°í ÀÖÁö ¾Ê½À´Ï´Ù.</font>";
        }
    }

}

/**
* ÀÌº¥Æ® Áß´Ü
*/
function stopAllEvent(event) {
    stopAllPropagation(event);
    preventAllDefault(event);
}

/**
* ÀÌº¥Æ® ¹ß»ý ¹æÁö
*/
function stopAllPropagation(event) {
    var e = window.event || event;
    if (e.stopPropagation) {
        e.stopPropagation();
    } else {
        e.cancelBubble = true;
    }
}

/**
* ÀÌÀü ÀÌº¥Æ®
*/
function preventAllDefault(event) {
    var e = window.event || event;
    if (e.preventDefault) {
        e.preventDefault();
    } else {
        e.returnValue = false;
    }
}

/**
* ÆäÀÌÁö ·Îµå½Ã Ã³À½ ½ÇÇà
*/
function autoKeyFirst(autoFlg) {
    document.getElementById('keyword').focus();
    setAutoFlg(autoFlg);
}

function autoKeyFirst2(autoFlg) {
    setAutoFlg(autoFlg);
}


/**
* Å°¿öµå ÅØ½ºÆ® ¹Ú½º Å¬¸¯½Ã ½ÇÇà
*/
function onClickKeyword(type, event) {
    clAll();
    chFirst(type);
    searchKeys(type, event);
}

/**
* Å°¿öµå ÅØ½ºÆ® ¹Ú½º keyup ½ÇÇà
*/
function onKeyupKeyword(type, inFlg, event) {
    chFirst(type);
    ctrlKey(inFlg, type, event);
}

/**
* °Ë»ö ¹öÆ° Å¬¸¯½Ã ½ÇÇà
*/
function onClickSearch(keyViewNm) {
    clAll();
}

/**
* Å°¿öµå ÅØ½ºÆ® ¹Ú½º keydown ½ÇÇà
*/
function onKeyDownKeyword(type, inFlg, event) {

    chFirst(type);
    ctrlKey(inFlg, type, event);
}

/**
* Å°¿öµå ÅØ½ºÆ® ¹Ú½º keydown ½ÇÇà
*/
function onKeyDownKeyword2(type, inFlg, event) {
    // "1", "0", event
//    chFirst(type);
    initObj(type); //initObj(idx)
//    ctrlKey(inFlg, type, event);
    ctrlKey2(inFlg, type, event);
     	//initObj(idx)
//    searchKeys2(inFlg, event) ; //searchKeys2(obCode, e) 
}

var setSelCtrl = "";
function selectCtrl()
{
	var arSearchBox = selectCtrl.arguments ;
   	var objSel = document.getElementById("ruleType") ;
   	
	if(objSel != null && objSel+"" != "undefined" && objSel.ishidden)
   	{
		if(keyView.style.display == "none")
		{
			objSel.style.width = 105 ;
		}
		else
		{
			var isSelHidden = false ;
			// sel button click
   		 	if(arSearchBox != null && arSearchBox.length)
   		 	{
   		 		// ÇÏ´ÜÀÇ °Í¸¸ Àû¿ëÇÑ´Ù.
   		 		if(arSearchBox[0]-0 == 2 )
   		 		{
	   		 		isSelHidden = true ;
		   		}
		   		// ¸¸¾à »ó´Üµµ ÇÑ´Ù¸é
				else
				{
					var autoTab = submenu1.offsetHeight ;
					if(autoTab-0 == 0 )
					{
						isSelHidden = true ;
					}
				}
   		 	}
   		 	// input box key
   		 	else
   		 	{
   		 		// ÇÏ´ÜÀÇ °Í¸¸ Àû¿ëÇÑ´Ù.
   		 		if(setSelCtrl == "exWord" )
   		 		{
	   		 		isSelHidden = true ;
		   		}
		   		// ¸¸¾à »ó´Üµµ ÇÑ´Ù¸é
				else
				{
					var autoTab = submenu1.offsetHeight ;
					if(autoTab-0 == 0 )
					{
						isSelHidden = true ;
					}
				}
   		 	}
   		 	
   		 	
   		 	if(isSelHidden)
   		 	{
				var keybodyHeight = (keyBody.style.height+"").replace("px","")-0 ;
	   		 		
   		 		if(keybodyHeight > 25)
	   		 	{
	   		 		objSel.style.width = 0 ;
	   		 	}
   		 	}
		}
   	}
}