var req;
var userKeyword = "";
var oldUserKeyword = "";
var useSuggestFunction = true;
var curCursorPos = -1;
var guideDisplayFlag = true;
var buildListComplete = true;
var virtualValue = "";
var oldValue = "";
var g_oConvert = "";

var itemHeight = 18; //리스트가 있을 때 iframe의 Height
var footerHeight = 30; //리스트가 있을 때 iframe의 Layer Height
var txtHeight = 18; //리스트가 있을 때 하단의 여백 조절
var noListGuideHeight = '28px'; //결과값이 없을 때 가이드의 Height
var noListIframeHeight = '55px'; //결과값이 없을 때 iframe의 Height

var query = "query"; //쿼리 <input> 의 name을 설정한다
var form = "f";
var target = "total"; //ARK 웹서버 설정파일의 목록에 있는 추천어 서비스 대상을 지정한다.

var totalKeywordCount = 0;
var totalrKeywordCount = 0;

document.body.onmouseup = eventHandlerBody;

function setCookie(name, value, expire) {
    var expire_date = new Date(expire)
    document.cookie = name + "=" + escape(value) + "; path=/; expires=" + expire_date.toGMTString();
}

function getCookie(name) {
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) {
		begin = dc.indexOf(prefix);
		if (begin != 0) 
			return null;
	} else {
		begin += 2;
	}

	var end = document.cookie.indexOf(";", begin);
	if (end == -1)
		end = dc.length;
	return unescape(dc.substring(begin + prefix.length, end));
}

/***********************************************   
현재 입력창의 값의 변화를 체크한다.
**********************************************/
function checkChangeValue() {
	var newValue = getObject(query, "").value;	

	if(newValue=="") {
		oldValue = "";
		oldUserKeyword = "";

		if(guideDisplayFlag) {
			setQueryDisplayOff();
		}
	}

	if(useSuggestFunction && newValue!=oldValue && newValue!=virtualValue) {
		g_oConvert = "fw";
		setQueryValue();
	}

	setTimeout("checkChangeValue()",5);

}

/***********************************************     
자동완성 iframe의 div를 화면에서 감춘다.
**********************************************/
function setQueryDisplayOff() {
	getObject("SchSug", "").style.display = "none";
	getObject("set_sugicn", "").style.display = "block";
	getObject("set_sugicnUP", "").style.display = "none";
}

/** 객체 얻기 */
function getObject(objectId, nodeObject){ 
	// checkW3C DOM, then MSIE 4, then NN 4.
	var doc = document;
	if(nodeObject=="parent"){
		doc = parent.document;
	}
	if(doc.getElementById && doc.getElementById(objectId)){ 
		return doc.getElementById(objectId); // 대부분의 브라우저 
	}else if (doc.all && doc.all(objectId)){
		return doc.all(objectId); // IE4와 5.0 
	}else if (doc.layers && doc.layers[objectId]){
		return doc.layers[objectId];  // Netscape 4.x 
	}else{ 
		return false; 
	} 
}

function getBrowserType() {
	if (navigator.appName == "Microsoft Internet Explorer")
		return 1;  
	else if (navigator.appName == "Netscape")
		return 2;	
	else 
		return 0;
}

function getIeBrowserVer() {
	var ieVer = 0;
	if(getBrowserType()==1)
		ieVer = navigator.appVersion.match(/MSIE \d+.\d+/)[0].split(" ")[1];

	return ieVer;
}

/***********************************************   
입력된 키 값을 loadXMLDoc 메소드로 보낸다.
**********************************************/
function setQueryValue() {
	var q = getObject(query, "").value;
	
	if(q == " "){
		return;
	}

	if(!isAvailableStr(q)) {
		return;
	}

	if(q.length < 20) {
		buildListComplete = false;
		loadXMLDoc(q);
		userKeyword = q;
		oldUserKeyword = q;
		oldValue = q;
	}
}

/***********************************************   
입력된 키워드를 체크한다.
 **********************************************/
function isAvailableStr(str) {
	// ark reserved keyword
	if(service == "ark" && str.toLowerCase()=="l ") {
		userKeyword = str;
		oldUserKeyword = str;
		oldValue = str;

		setQueryDisplayOff();
		return false;
	}
	return true;
}

/**********************************************
* 입력된 키워드를 WNSimple서버로 전송하고 req객체에서
*   결과를 전달 받는다.
**********************************************/
function loadXMLDoc(_str) {	
	imgtilt = 0;
	var param = "xml=";	
	var str = checkStr(_str);
	var convert = "";
	if(g_oConvert == ""){
		convert = "fw";
	}else{
		convert = g_oConvert;
	}
	url = SUG_URL +"?target="+target+"&query="+ encodeURI(str) + "&convert="+convert;
	req = getXMLHttpRequest();
	if (req) {
		req.open("GET", url, true);		// false는 결과가 나오기전까지 대기
		req.onreadystatechange = function() {
			if (req.readyState == 4) {
				// 정상 응답이라면				
				if (req.status == 200) {
					clearQueryList();
					buildQueryList();
				} 
			}
		}
		req.send(null);
	} 
}

/**********************************************
*   입력된 키워드 체크
**********************************************/
function checkStr(str) {
	var ch;
	var returnStr = "";
	for (var i=0;i<str.length;i++) {
		ch = str.charAt(i);
		if(ch==" ")
			returnStr += " ";
		else
			returnStr +=ch;
	}
	return returnStr;
}

/***********************************************  
XMLHTTPRequest 객체를 생성해서 url에 parameter와 함께 post 방식으로 보낸다.
결과는 processReqChange를 통해서 확인
**********************************************/
var XMLHttp = null;   
function getXMLHttpRequest() {   
	if (XMLHttp == null) {   
		var tryThese = [   
		                function () { 
		                	var obj = new XMLHttpRequest()
		                	obj.overrideMimeType('text/xml');
		                	return obj; 
		                },
		                function () { return new ActiveXObject('Microsoft.XMLHTTP'); },
		                function () { return new ActiveXObject('Msxml2.XMLHTTP'); },
		                ];

		for (var i = 0; i < tryThese.length; i++) {   
			XMLHttp = tryThese[i];   
			var func = tryThese[i];   
			try {   
				return func();   
			} catch (e) {   
				// pass   
			}   
		}   
	}else {   
		return XMLHttp();   
	}
} 

function clearQueryList() {
	var q_list = getObject("querylist","");
	q_list.innerHTML = "";
//	setSugfooter("ark_footer", "");
}

/**********************************************
 *   결과로 받은 추천어 리스트를 출력한다.
 **********************************************/
function buildQueryList() {
	var q = getObject(query, "").value;

	if(getObject(query, "").value == "") return;

	var q_list = getObject("querylist","");
	
	xmlRet = req.responseXML;
	
	var returnValue = "";
	
	if (req.responseText == "\n\n") {
		returnValue = -1;
	} else {
		returnValue = firstChildValue(xmlRet, 0, "Return");
	}
	
	if(returnValue < 0) {
		totalKeywordCount = 0;
		setQueryDisplayOff();
		return;
	}else{
		var ark = xmlRet.getElementsByTagName("ARKList");
		var items = ark[0].getElementsByTagName("ARK");
		var arkR = xmlRet.getElementsByTagName("ARKRList");
		var ritems = arkR[0].getElementsByTagName("ARK");
		totalKeywordCount = items.length;
		totalrKeywordCount = ritems.length;
		if(totalKeywordCount+totalrKeywordCount < 1) {
			setQueryDisplayOff();
			return;
		} else {
			var str = "<table border='0' cellpadding='0' cellspacing='0' width='100%' style='BACKGROUND-COLOR: #EDF5FA;'>";
			
			//상단 키워드 리스트 출력
			for (var i=0;i<totalKeywordCount;i++) {
				var strKeyword  = items[i].getAttribute("HKeyword");
				str += "<tr height='18' id='bg"+ i +"' onmouseover='onMouseOverKeyword("+i+")'";
				str += "	onmouseout='onMouseOutKeyword("+i+")' onMouseDown='onMouseDownKeyword("+i+")'>";
				str += "		<td onmousedown='onClickKeyword("+i+")' width='200px' ><span id='f"+ i +"' style=display:none;>";
				str += 				items[i].getAttribute("keyword")+"</span>";
				//str +=				dispcolor(items[i].getAttribute("type"))+"&nbsp;&nbsp;";
				str += strKeyword;
				str += "        </td>";
				if(items[i].getAttribute("linkname") != ""){
					str += "	<td id='over"+ i +"' onclick='onClickLink("+i+")' ";
					str += "        onmouseover='onMouseOverQuickName("+i+")' style='padding:0 0 0 8' width='*' align='right'>";
					str +="		<font style='font-size:11px;color:#0066CC'; title='";
					str += items[i].getAttribute("linkname")+"'><span id='link"+ i +"' style=display:none;>";
					str += items[i].getAttribute("linkurl")+"</span><u>";
					str += suggest_cutString(items[i].getAttribute("linkname"), 10)+"</u></font>&nbsp;&nbsp;</td>";
				}else{
					str += "	<td style='padding:0 0 0 8' width='*' align='right'>";
					str += disprank(items[i].getAttribute("count"))+"&nbsp;</td>";
				}
				str +="	</tr>";
			}
			
			if(totalrKeywordCount > 0 && totalKeywordCount > 0) str += "<tr><td colspan='3'><div id='dotLine' style='border-bottom:#D2DADA 1px dotted;'></div></td></tr>";
			
			//하단 키워드 리스트 출력
			for (var j=totalKeywordCount;j<(totalKeywordCount+totalrKeywordCount);j++) {
				var rKeyword = ritems[j-totalKeywordCount];
				var strRKeyword  = rKeyword.getAttribute("HKeyword");
				str += "<tr height='18' id='bg"+ j +"' onmouseover='onMouseOverKeyword("+j+")'";
				str += "	onmouseout='onMouseOutKeyword("+j+")' onMouseDown='onMouseDownKeyword("+j+")'>";
				str += "		<td onmousedown='onClickKeyword("+j+")' width='200px' ><span id='f"+ j +"' style=display:none;>";
				str += 				rKeyword.getAttribute("keyword")+"</span>";
				//str +=				dispcolor(rKeyword.getAttribute("type"))+"&nbsp;&nbsp;";
				str += strRKeyword+ "</td>";
				if(rKeyword.getAttribute("linkname") != ""){
					str += "	<td id='over"+ j +"' onclick='onClickLink("+j+")' ";
					str += "        onmouseover='onMouseOverQuickName("+j+")' style='padding:0 0 0 8' width='*' align='right'>";
					str +="		<font style='font-size:11px;color:#0066CC'; title='";
					str += rKeyword.getAttribute("linkname")+"'><span id='link"+ j +"' style=display:none;>";
					str += rKeyword.getAttribute("linkurl")+"</span><u>";
					str += suggest_cutString(rKeyword.getAttribute("linkname"), 10)+"</u></font>&nbsp;&nbsp;</td>";
				}else{
					str += "	<td style='padding:0 0 0 8' width='*' align='right'>";
					str += disprank(rKeyword.getAttribute("count"))+"&nbsp;</td>";
				}
				str += "</tr>";
			}
			str +="</table>";
		}
		
		if(!isFirstBuild){
			setQueryDisplayOn();
		}
		
		isFirstBuild = false;
	}
	
	q_list.innerHTML = str;
	
//	getObject("guidelist","").style.display = 'none';
	
	if(totalrKeywordCount > 0 ){
		if(g_oConvert == "rw" ){
			setSugHeader("ark_header", "qlist", "mrFront");
		}else if(g_oConvert == "fw" || g_oConvert == ""){
			setSugHeader("ark_header", "qlist", "mrRear");
		}
	}else{
		setSugHeader("ark_header", "qlist", "mrNone");
	}
	
//	setSugfooter("ark_footer", "");

	curCursorPos = -1;
	buildListComplete = true;
}

/**********************************************
* 추천어 XML 파싱
**********************************************/
function firstChildValue(xml, idx, tagname) {
	return xml.getElementsByTagName(tagname)[idx].firstChild.nodeValue;
}

/***********************************************   
자동완성 iframe의 div를 화면에 출력한다.
**********************************************/
function setQueryDisplayOn() {
    if((totalKeywordCount+totalrKeywordCount) > 0) {
		setResizeLayer();
//        getObject("querylist_border","").style.display = "block";
//        getObject("hFrame","parent").style.display = "block";
//		
//		getObject("set_sugicn","parent").style.display = "block";
//		if(getObject("set_sugicnUP","parent"))
//			getObject("set_sugicnUP","parent").style.display = "none";
//        setSugfooter("ark_footer", "");
		
		getObject("SchSug", "").style.display = "block";
		
		getObject("set_sugicn","").style.display = "none";
		
		if(getObject("set_sugicnUP",""))
			getObject("set_sugicnUP","").style.display = "block";
    }
}

/**********************************************
*  검색어 자동완성 div의 사이즈를 결정한다.
**********************************************/
function setResizeLayer() {
	var arkMax = QLIST_COUNT;
	var sugItemHeight = itemHeight;
	
	if(getBrowserType()==1){
		sugItemHeight = itemHeight-2;
	}
	
//	var hFrameObject = getObject("hFrame","parent");
    
	var q_list = getObject("querylist","");
	
//    var hFrameHeight = itemHeight*(totalKeywordCount+totalrKeywordCount) + 12 + footerHeight + txtHeight+"px";
    if((totalKeywordCount+totalrKeywordCount) > (QLIST_COUNT)){	
		q_list.style.height = (itemHeight * arkMax) + 108 + "px";
//		getObject("hFrame","parent").style.height = (itemHeight * arkMax + 12 + footerHeight)+"px";
	}else{
		if(totalKeywordCount > 0 && totalrKeywordCount > 0){
			q_list.style.height = itemHeight*(totalKeywordCount+totalrKeywordCount) + 24 + txtHeight+"px";
//			hFrameObject.style.height = hFrameHeight;
		}else{
			q_list.style.height = (itemHeight*(totalKeywordCount+totalrKeywordCount) + 24 )+"px";
//			getObject("hFrame","parent").style.height = (itemHeight*(totalKeywordCount+totalrKeywordCount) + 12 + footerHeight)+"px";
		}
	}
}

function setSugHeader(obj, flag, mr){
//	var q_listheader = getObject(obj,"");
//	var str = "<div style='float:left'>";
//	if(mr == "mrRear"){
//		str += "&nbsp;<img src='./img/ark_end_icon.gif' width='16' height='14' style='vertical-align:-2px'> <a href='#' onclick='scrollUp();onConvert(\"rw\");return false;'>End with</a>";		
//	}else if(mr == "mrFront"){
//		str += "&nbsp;<img src='./img/ark_start_icon.gif' width='16' height='14' style='vertical-align:-2px'> <a href='#' onclick='scrollUp();onConvert(\"fw\");return false;'>Start with</a>";
//	}else if(mr == "mrNone"){
//		str += "";
//	}else{
//		if(flag != 'guide') str += "&nbsp;<img src='../img/ark_end_icon.gif' width='8' height='9' style='vertical-align:-2px'> <a href='#' onclick='scrollUp();buildQueryList();return false;'>End with</a>";
//	}
//	str += "</div>";
//	str += "<div style='float:right'>";
//	str += "<a href='#' onClick='openHelp()'>Help</a>&nbsp;<img src='./img/ark_bar.gif'>&nbsp;";	
//	if(flag == 'guide') {
//		str += "<a href='#' onClick='showSugGuide()'>Close</a>&nbsp;";
//	} else if(flag == 'qlist') {
//        if(useSuggestFunction)
//    		str += "<a href='javascript:setSuggestOff()'>Off</a>&nbsp;";
//        else
//            str += "<a href='javascript:setSuggestOn()'>On</a>&nbsp;";
//    }	
//	str += "</div><br style='clear:both'>";
//	q_listheader.innerHTML = str;
//	q_listheader.style.display = 'block';
}

/**********************************************
*  추천어 리스트 우측에 Ranking Bar 출력
**********************************************/
function disprank(str){ 
	//v1.2부터는 텍스트로 출력
	if(str >= 0 && str <= 20){
		str = "<font style='font-size:9px;color:#CC6633'>|</font><font style='font-size:9px;color:#C0C0C0'>||||</font>";
	}else if(str > 20 && str <= 40){
		str = "<font style='font-size:9px;color:#CC6633'>||</font><font style='font-size:9px;color:#C0C0C0'>|||</font>";
	}else if(str > 40 && str <= 60){
		str = "<font style='font-size:9px;color:#CC6633'>|||</font><font style='font-size:9px;color:#C0C0C0'>||</font>";
	}else if(str > 60 && str <= 80){
		str = "<font style='font-size:9px;color:#CC6633'>||||</font><font style='font-size:9px;color:#C0C0C0'>|</font>";
	}else if(str > 80 && str <= 100){
		str = "<font style='font-size:9px;color:#CC6633'>|||||</font>";
	}else{
		str = "<font style='font-size:9px;color:#CC6633'>|||||</font>";
	}
  return str; 
}

//limitByte 의 byte 만큼 str 을 자른 후 반환한다.                                                                  
function suggest_cutString( str , limitByte)
{
    var inc = 0;
    var nbytes = 0;
    var msg = "";
    var msglen = str.length;

    for (i=0; i<msglen; i++) {
      
        var ch = str.charAt(i);
        if (escape(ch).length > 4) {
            inc = 2;
        } else if (ch == '') {
            if (str.charAt(i-1) != '') {
                inc = 1;
            }
        } else if (ch == '<' || ch == '>') {
            inc = 4;
        } else {
            inc = 1;
        }
        if ((nbytes + inc) > limitByte ) {
            break;
        }
        nbytes += inc;
        msg += ch;
        
    }
    
    if( i != msglen ) msg = msg + "..";
    
    return msg;
}

function onMouseOutKeyword(curSorNum){
    curCursorPos = curSorNum;
    if(getObject("bg"+curCursorPos,"")) {
//	    getObject("bg"+curCursorPos,"").style.cursor = 'arrow';
    	getObject("bg"+curCursorPos,"").style.backgroundColor = '#EDF5FA';
    }
}

function onMouseOverKeyword(curSorNum){ 
    clearCursorPos();
    curCursorPos = curSorNum;
	getObject("bg"+curSorNum,"").style.backgroundColor = '#C5DFEF';
	getObject("bg"+curSorNum,"").style.cursor = 'pointer';
}

function onMouseOverQuickName(curCursorPos){
	getObject("over"+curCursorPos,"").style.cursor = 'pointer';
}

/***********************************************  
커서 위치가 움질일때마다 선택되지 않은 부부은 초기화한다.
*********************************************
*/
function clearCursorPos() {
    for(var i=0; i<(totalKeywordCount+totalrKeywordCount); i++){
		if(getObject("bg"+i,"")){
			getObject("bg"+i,"").style.backgroundColor="#EDF5FA";
		}
    }
}

function onClickKeyword(curCursorPos) {
	getObject(query, "").value = getObject("f"+curCursorPos,"").innerHTML;
    setQueryDisplayOff();
    getObject("f", "").submit();
}

function onClickLink(curCursorPos) {
    var url = getObject("link"+curCursorPos,"").innerHTML;
	window.open(url);
	setQueryDisplayOff();
}

function onMouseDownKeyword(curCursorPos){
	getObject("bg"+curCursorPos,"").style.cursor = 'pointer';
}

/***********************************************
브라우저에서 일어나는 이벤트를 체크한다.
**********************************************/
function eventHandlerBody(e) {
	//if(getBrowserType()==1){
	if("undefined"==typeof(e)){
		evt = window.event;
	}else{
		evt = e;
	}
	var elemId;
	if(getBrowserType()==1){
		elemId = evt.srcElement.id;
	}else{
		elemId = evt.target.id;
	}

	if(elemId==query) {
		setSugBox();
	} else if(elemId=="sugicn") {   // icon
		setSugBox();
		showSugGuide();
	} else {
		setQueryDisplayOff();
		//setGuideDisplayOff();
	}   
	//}
}

/***********************************************  
자동완성 이벤트 핸들러를 받는다.
**********************************************/
function eventHandler(e) {
    if("undefined"==typeof(e)){
        evt = window.event;
	}else{
        evt = e;
	}
    if(useSuggestFunction) {
        setFrameEvent(evt);
    }
}

function setSugBox() {
    q = userKeyword;
    
    var curQ = getObject(query,"").value;
    
    if(!checkLayerDisplay("SchSug") && useSuggestFunction && q!="" && curQ !="") {

        if(totalKeywordCount >0 || totalrKeywordCount >0){
            setQueryChange();
            setQueryDisplayOn();
        }else{
            getObject(query, "").focus();
            setQueryDisplayOff();

//            noSugList();
        }
    }else {
        setQueryDisplayOff();
//        setGuideDisplayOff();
    }
}

function checkLayerDisplay(obj) {
    if(getObject(obj, "").style.display=='block'){
        return true;
    }else{
        return false;
	}
}

/***********************************************   
입력창의 값을 체크
**********************************************/
function setQueryChange() {
    //clearQueryList();
	buildQueryList();
    setTimeout("setQueryValue()",10);
}

//function noSugList() {
//	setSugHeader("ark_header", "qlist", "");
//    getObject("guidelist","").innerHTML = '';
//    getObject("guidelist","").style.height = noListGuideHeight;
//    getObject("hFrame","parent").style.height = noListIframeHeight;
//    getObject("guidelist","").style.overflow = 'hidden';
//    var str;
//    str = '<div id="sugGuide">';
//    str += 'There is no result.';
//    str += '</div>'		
//    getObject("guidelist","").innerHTML = str;
//    setSugfooter("ark_footer", "");
//}

function showSugGuide(){
	if(guideDisplayFlag){
		//setSugHeader("ark_header", "none", "guide")
		getObject("SchSug", "").style.display = "block";
	} else{
		getObject("SchSug", "").style.display = "none";
    }
}

/***********************************************  
입력된 키 이벤트값에 따라서 자동완성 여부를 체크한다.
**********************************************/
function setFrameEvent(evt) {
	if (evt && useSuggestFunction) {
        var key = evt.keyCode;
        
        if(!isAvailableKeyCode(key)) {
            return;
        }else {
            if(key==27) {
                setQueryDisplayOff();
            }else if(key==38) {
                moveFocusToSelect(key);
            }else if(key==40) {				
				if(getObject(query,"").value != '') {
                    if(!checkLayerDisplay("SchSug")) {										
                        setQueryDisplayOn();
                    }else {
                    	setTimeout("moveFocusToSelect(40)", 10);
                    }
				}
            } else {
				//특별한 이벤트 처리는 없다
            }
        }

    }
}

/*********************************************** 
키보드 입력키를 체크한다.
**********************************************/
function isAvailableKeyCode(key) {
    /**
    * 37~40 : 방향키
    * 112 ~ 123 : F1~F12, 
    * alt : 18
    * ctl : 17
    * 116 : F5
    * 27 : esc
    */
    var keyArr = new Array(17,18,37,39,116);

    for(var i=0;i<keyArr.length;i++) {
        if(keyArr[i]==key)
            return false;
    }
    return true;
}

/***********************************************  
추천된 단어 리스트를 방향키로 선택할 경우
**********************************************/
function moveFocusToSelect(key) {
    clearCursorPos();

    if(key==38) {
        if(curCursorPos==-1 || curCursorPos==0) {
            setQueryDisplayOff();
            getObject(query, "").value = userKeyword;
			return;
		}else {
            curCursorPos = curCursorPos - 1;
//	        if((curCursorPos+QLIST_COUNT) < (totalKeywordCount+totalrKeywordCount)) {
//                getObject("querylist","").doScroll("scrollbarUp");
//                getObject("querylist","").doScroll("scrollbarUp");
//            }
        }
    }else if(key==40) {
        if(curCursorPos!=(totalKeywordCount+totalrKeywordCount-1)) {
            onMouseOutKeyword(curCursorPos);
            curCursorPos = curCursorPos + 1;

//            if(curCursorPos > (QLIST_COUNT-1)) {
//                getObject("querylist","").doScroll("scrollbarDown");
//                getObject("querylist","").doScroll("scrollbarDown");
//            }
        }
    }
    setTimeout("setCursorPos()",10);
}

/*********************************************** 
추천된 리스트의 포커스에 색을 입힌다.
**********************************************/
function setCursorPos(num) {
    if(!buildListComplete) {
        // 이벤트가 두번발생되는 경우
        setTimeout("setCursorPos()",10);
    }
    
    if(checkLayerDisplay("SchSug")) {
        var pos = curCursorPos;
        if(num==0)
            pos = 0;

        if(getObject("f"+pos,"")) {
        	getObject(query, "").value = getObject("f"+pos,"").innerHTML;
			//alert(qObj.value);
            getObject("bg"+pos,"").style.backgroundColor="#C5DFEF";
            virtualValue = getObject(query, "").value;
        }
        return;
    }
}