document.domain = "daum.net";

var req;
var userKeyword = "";
var oldUserKeyword = "";
var useSuggestFunction = true;
var totalKeywordCount = 0;
var curCursorPos = -1;
var guideDisplayFlag = true;
var buildListComplete = true;
var virtualValue = "";
var oldValue = "";
var revertQuery = "";

var qObj = getObject("search_keyword","parent");
function checkChangeValue() {
    var newValue = qObj.value;

    if(newValue=="") {
        oldValue = "";
        oldUserKeyword = "";

        if(guideDisplayFlag) {
            setQueryDisplayOff();
        }
    }
    if(useSuggestFunction && newValue!=oldValue && newValue!=virtualValue) {
        setQueryValue();
    }
    setTimeout("checkChangeValue()",100);
}
function eventHandlerBody(e){
	if("undefined"==typeof(e)){
		var evt = parent.window.event;
	}else{
		var evt = e;
	}

	var elemId;
	if(getBrowserType()==1)
		elemId = evt.srcElement.id;
	else
		elemId = evt.target.id;

	if(elemId=="search_keyword"){
		getObject("imgArea","").innerHTML = '<img src="http://img-contents.daum-img.net/book/2008_home/gnb/img_s.gif" width="110" height="160" alt="">';
		setSugBox();
	}else if(elemId=="sugicn"){
		showSugGuide();
	}else{
		setQueryDisplayOff();
		setGuideDisplayOff();
	}
}
function eventHandler(e){
    if("undefined"==typeof(e))
        evt = parent.window.event;
    else
        evt = e;

	var elemId;
	if(getBrowserType()==1)
		elemId = evt.srcElement.id;
	else
		elemId = evt.target.id;

    if(elemId == "search_keyword" && useSuggestFunction){
        setFrameEvent(evt);
    }
}
function setQueryDisplayOn(){
     if(totalKeywordCount >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("footer", "qlist");
    }
}
function setQueryDisplayOff(){
//    getObject("querylist","").innerHTML = "";
    getObject("querylist_border","").style.display = "none";
    getObject("hFrame","parent").style.display = "none";
	
	getObject("set_sugicn","parent").style.display = "block";
	if(getObject("set_sugicnUP","parent"))
		getObject("set_sugicnUP","parent").style.display = "none";
    curCursorPos = -1;
}
function setGuideDisplayOn(){
	guideDisplayFlag = false;
    getObject("guidelist","").style.display = "block";
    getObject("hFrame","parent").style.display = "block";
	
	getObject("set_sugicn","parent").style.display = "none";
	if(getObject("set_sugicnUP","parent")){
		getObject("set_sugicnUP","parent").style.display = "block";
	}else{
		getObject("sugicn","parent").src = arrowUpImg;	
		getObject("set_sugicn","parent").style.display = "block";
	}
    setSugfooter("footer", "guide");
}
function setGuideDisplayOff(){
	guideDisplayFlag = true;
    getObject("guidelist","").innerHTML = "";
    getObject("guidelist","").style.display = "none";
    
    getObject("set_sugicn","parent").style.display = "block";
	if(getObject("set_sugicnUP","parent")){
		getObject("set_sugicnUP","parent").style.display = "none";
	}else{
		getObject("sugicn","parent").src = arrowDownImg;
	}
    getObject("hFrame","parent").style.display = "none";
}
function setNoResultDisplayOn(){
	guideDisplayFlag = false;
    getObject("guidelist","").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";
	}else{
		getObject("sugicn","parent").src = arrowDownImg;	
	}	
    setSugfooter("footer", "guide");
}
function setQueryChange(){
//  clearQueryList();
	buildQueryList();
    setTimeout("setQueryValue()",10);
}
function checkLayerDisplay(obj){
    if(getObject(obj,"").style.display=='block')
        return true;
    else
        return false;
}
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 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("search_keyword","parent").value != ''){
                    if(!checkLayerDisplay("querylist_border")){										
                        setQueryDisplayOn();
                    }else{
                        setTimeout("moveFocusToSelect(40)", 10);
                    }
				}
            }else{
                setTimeout("setQueryValue()",10);
            }
        }
    }
}
function setQueryValue(){
    var q = qObj.value;

	if(q == " "){
		return;
	}

    if(!isAvailableStr(q)){
        return;
    }

    if(q==oldUserKeyword){
        return;
    }

    if(q.length < 20){
        buildListComplete = false;
        loadXMLDoc(q);

        userKeyword = q;
        oldUserKeyword = q;
        oldValue = q;
    }
}
function isAvailableStr(str){
    // daumtop reserved keyword
    if(service=="daumtop" && str.toLowerCase()=="l "){
        userKeyword = str;
        oldUserKeyword = str;
        oldValue = str;

        setQueryDisplayOff();
        return false;
    }
    return true;
}
function imgClickDisp(idx){
	var res = eval('(' + req.responseText + ')');
	var items = res.items;
	imgDisp(""+ items[idx] +"",idx);
}
function moveFocusToSelect(key){
    clearCursorPos();

    if(key==38){
        if(curCursorPos==-1 || curCursorPos==0){
            setQueryDisplayOff();
//          curCursorPos = -1;
            qObj.value = userKeyword;
			imgHide();
            return;
        }else{
            curCursorPos = curCursorPos - 1;
			imgClickDisp(curCursorPos);

            if((curCursorPos+QLIST_COUNT) < totalKeywordCount){
                if(getBrowserType() == "1") getObject("querylist","").doScroll("scrollbarUp");
                if(getBrowserType() == "1") getObject("querylist","").doScroll("scrollbarUp");
            }
        }
    }else if(key==40){
        if(curCursorPos!=(totalKeywordCount-1)){
            onMouseOutKeyword(curCursorPos);
            curCursorPos = curCursorPos + 1;
			getObject("imgArea","").innerHTML = '<img src="http://img-contents.daum-img.net/book/2008_home/gnb/img_s.gif" width="110" height="160" alt="">';
			imgClickDisp(curCursorPos);

            if(curCursorPos > (QLIST_COUNT-1)){
                if(getBrowserType() == "1") getObject("querylist","").doScroll("scrollbarDown");
                if(getBrowserType() == "1") getObject("querylist","").doScroll("scrollbarDown");
            }
        }
    }
    setTimeout("setCursorPos()",10);
}
function setCursorPos(num){
    if(!buildListComplete){
        // ÀÌº¥Æ®°¡ µÎ¹ø¹ß»ýµÇ´Â °æ¿ì
        setTimeout("setCursorPos()",10);
    }
    if(checkLayerDisplay("querylist_border")){
        var pos = curCursorPos;
        if(num==0)
            pos = 0;

        if(getObject("f"+pos,"")){
			if(getBrowserType() == "1"){
				qObj.value = getObject("f"+pos,"").innerText;
			}else{
				var fObj = getObject("f"+pos,"").innerHTML;
				if(fObj.indexOf('<font color="#eb550c">') > -1){
					var temp1 = fObj.replace('<font color="#eb550c">','');
					var temp2 = temp1.replace('</font>','');
					qObj.value = temp2;
				}else{
					qObj.value = getObject("f"+pos,"").innerHTML;
				}
			}

            getObject("f"+pos,"").style.backgroundColor = onMouseOverColor;
            virtualValue = qObj.value;
        }
        return;
    }
}
function clearCursorPos(){
    for(var i=0; i<totalKeywordCount; i++){
		if(getObject("f"+i,"")){
			getObject("f"+i,"").style.backgroundColor=onMouseOutColor;
		}
    }
}
function loadXMLDoc(_str){
	var str = encodeURIComponent(checkStr(_str));
	str = str.replace(/%2520/g,"%20");
	str = str.replace(/%2526/g,"%26");
    url = SUG_URL +"?q="+ str +"&mod=json&code=utf_in";
    if(window.XMLHttpRequest){
        req = new XMLHttpRequest();
        try{
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send(null);
        }catch(e){
            //alert(e);
        }
    }else if(window.ActiveXObject){
        req = new ActiveXObject("Microsoft.XMLHTTP");

        if(req){
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    } 
}
function checkStr(str){
    var ch;
    var returnStr = "";
    for (var i=0;i<str.length;i++){
        ch = str.charAt(i);
        if(ch==" "){
            returnStr += "%20";
		}else if(ch=="&"){
			returnStr += "%26";
		}else{
            returnStr +=ch;
		}
    }
    return returnStr;
}
function processReqChange(){
    // only if req shows "loaded"
    if(req.readyState == 4){
        // only if "OK"
        if(req.status == 200){
            clearQueryList();
            buildQueryList();
         }else{
            //alert(req.statusText);
         }
    }
}
function kwdSplit(val){
	var kwd = val.split("|");
	kwd = kwd[0];
	return kwd;
}
function imgSplit(val){
	var imgUrl = val.split("|");
	imgUrl = imgUrl[1];
	imgUrl = imgUrl.replace("KOR","");
	return imgUrl;
}
function imgDisp(url,idx){
	var fname = "";
	var bid = "";
	var imgUrl = imgSplit(url);
	bid = url.split("|")[1];
	fname = imgUrl.substring(imgUrl.length-3,imgUrl.length);
	if(url != ""){
		getObject("imgArea","").innerHTML = "<a href='http://book.daum.net/detail/book.do?bookid="+ bid +"' target='_parent'><img src='http://photo-book.daum-img.net/images/nbook/large/"+ fname +"/l"+ imgUrl +".jpg' width='110' height='160' onerror='imgHide();' class='oline'></a>";
	}else{
		getObject("imgArea","").innerHTML = "<img src='http://img-contents.daum-img.net/book/2008_home/gnb/img_s.gif' width='110' heihgt='160'>";
	}
}
function imgHide(){
	getObject("imgArea","").innerHTML = "";
}
function buildQueryList(){
	var kwd = "";
    var q_list = getObject("querylist","");
	var res = eval('(' + req.responseText + ')');
    var items = res.items;
	var _revertQuery = res.rq;
	if(_revertQuery.length > 0){
		revertQuery = res.rq;
	}
	var str = "";

	if(items.length > 9){
		totalKeywordCount = items.length - 1;
	}else{
		totalKeywordCount = items.length;
	}

    if(totalKeywordCount < 1){
        setQueryDisplayOff();
        return;
    }else{
		getObject("imgArea","").innerHTML = '<img src="http://img-contents.daum-img.net/book/2008_home/gnb/img_s.gif" width="110" height="160" alt="">';
        for(var i=0;i<totalKeywordCount;i++){
			kwd = kwdSplit(items[i]);
            highlightVal = highlightCheck(kwd);
            str += "<div class='kwArea' id='f"+i+"' onclick='onClickKeyword("+i+")' onmouseover='onMouseOverKeyword("+i+"); imgDisp(\""+ items[i] +"\","+ i +");' onmouseout='onMouseOutKeyword("+i+")' onMouseDown='onMouseDownKeyword("+i+")'>" + highlightVal + "</div>";
		}

        // ÃÖÃÊ °Ë»ö½Ã¿¡´Â È­¸é º¸¿©ÁÖÁö ¾Ê´Â´Ù.
        if(!isFirstBuild){
			setQueryDisplayOn();
            //isFirstBuild = false;
        }
		isFirstBuild = false;
    }
	q_list.innerHTML = str;

	getObject("guidelist","").style.display = "none";
	setSugfooter("footer", "qlist");

    curCursorPos = -1;
    buildListComplete = true;
}
function setResizeLayer(){
	var DaumTopMax = QLIST_COUNT;
	var itemHeight = 21;
	var footerHeight = 38;
	var txtHeight = 17;

	if(getBrowserType() == "1"){
		getObject("hFrame","parent").style.width = '418px';
		getObject("footer","").style.width = '418px';
		getObject("QL","").style.width = '418px';
	}else{
		getObject("hFrame","parent").style.width = '418px';
		getObject("footer","").style.width = '394px';
		getObject("QL","").style.width = '416px';
	}

    var q_list = getObject("querylist","");
    if(totalKeywordCount > QLIST_COUNT){		
		q_list.style.height = itemHeight * DaumTopMax;
		if(totalKeywordCount > 0){
			getObject("hFrame","parent").style.height = (itemHeight * DaumTopMax) + footerHeight + txtHeight + "px";
		}else{
			getObject("hFrame","parent").style.height = (itemHeight * DaumTopMax) + footerHeight + "px";
		}
	}else{
		if(getBrowserType() == "1"){
			q_list.style.height = "199px";
		}else{
			q_list.style.height = "189px";
		}
		getObject("hFrame","parent").style.height = "227px";
	}
}
function clearQueryList(){
    var q_list = getObject("querylist","");
    q_list.innerHTML = "";
    setSugfooter("footer", "qlist");
}
function setSuggestOff(){
    qObj.setAttribute("autocomplete","on");
    setQueryDisplayOff();
    useSuggestFunction = false;
    guideDisplayFlag = true;

    if(getIeBrowserVer() >= 5.5){
        // IE5.5 ÀÌ»ó Áö¿ø
        qObj.setActive();
    }

    var today = new Date();
    var expire_date = new Date(today.getTime() + 365*60*60*24*1000);
    setCookie(cookieName,"off",expire_date);
	getObject("set_sugicn","parent").style.display = "block";
}
function setSuggestOn(){
    qObj.setAttribute("autocomplete","off");
    setGuideDisplayOff();
    useSuggestFunction = true;
    guideDisplayFlag = true;
    checkChangeValue();

    var today = new Date();
    var expire_date = new Date(today.getTime() - 60*60*24*1000);
    setCookie(cookieName,"on",expire_date);

    getObject("search_keyword","parent").focus();
    setQueryValue();
	setQueryDisplayOn();
	getObject("set_sugicn","parent").style.display = "none";
}
function setCookie(name, value, expire){
    var expire_date = new Date(expire)
    document.cookie = name + "=" + escape(value) + "; path=/; expires=" + expire_date.toGMTString() + "; domain=.daum.net";
}
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 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;
}
function setSugfooter(obj, flag){
	var q_listfooter = getObject(obj,"");
	var str = "";
	str += "<div style='text-align:right'>";
	str += "<a href='http://blog.daum.net/daumsearch/3099266' target='_blank'>¼­Á¦½ºÆ®¶õ?</a> | ";

	if(flag == 'guide'){
		str += "<a href='#' onClick='showSugGuide()'>´Ý±â</a>";
	}else if(flag == 'qlist'){
        if(useSuggestFunction)
    		str += "<a href='javascript:setSuggestOff()'>±â´É²ô±â</a>";
        else
            str += "<a href='javascript:setSuggestOn()'>±â´ÉÄÑ±â</a>";
    }
	str += "</div>";
	q_listfooter.innerHTML = str;
	q_listfooter.style.display = 'block';
}
function setSugBox(){
    q = userKeyword;
    var curQ = qObj.value;
    if(!checkLayerDisplay("querylist_border") && useSuggestFunction && q != "" && curQ != ""){
        if(totalKeywordCount >0){
            if(checkLayerDisplay("guidelist")){
                setGuideDisplayOff();
            }
			setQueryChange();
            setQueryDisplayOn();
        }else{
            qObj.focus();
            setQueryDisplayOff();

            if(checkLayerDisplay("guidelist")){
                setGuideDisplayOff();
            }else{
                setNoResultDisplayOn();
            }
            noSugList();
        }
    }else{
        setQueryDisplayOff();
        setGuideDisplayOff();
    }
}
function noSugList(){
    getObject("guidelist","").innerHTML = "";
	if(getBrowserType() == "1"){
		getObject("hFrame","parent").style.width = '273px';
		getObject("footer","").style.width = '273px';
		getObject("QL","").style.width = '273px';
	}else{
		getObject("hFrame","parent").style.width = '273px';
		getObject("footer","").style.width = '249px';
		getObject("QL","").style.width = '271px';
	}

    getObject("guidelist","").style.height = "28px";
    getObject("hFrame","parent").style.height = "56px";
    getObject("guidelist","").style.overflow = "hidden";
    var str;
    str = '<div id="sugGuide">';
    str += 'ÇØ´ç ´Ü¾î·Î ½ÃÀÛÇÏ´Â °Ë»ö¾î°¡ ¾ø½À´Ï´Ù.';
    str += '</div>'		
    getObject("guidelist","").innerHTML = str;
    setSugfooter("footer", "qlist");
}
function onMouseOverKeyword(curSorNum){
    clearCursorPos();
    curCursorPos = curSorNum;
//	getObject("f"+curSorNum,"").style.cursor = 'arrow';
	getObject("f"+curSorNum,"").style.backgroundColor = onMouseOverColor;
}
function onMouseOutKeyword(curSorNum){
    curCursorPos = curSorNum;
    if(getObject("f"+curCursorPos,"")){
//	    getObject("f"+curCursorPos,"").style.cursor = 'arrow';
    	getObject("f"+curCursorPos,"").style.backgroundColor = onMouseOutColor;
    }
}
function setFocusEnd(obj){
    if(obj.createTextRange){
        var fieldRange = obj.createTextRange();
        fieldRange.moveStart('character', obj.value.length);
        fieldRange.collapse();
        fieldRange.select();
    }
}
function highlightCheck(str){
	var rtStr = "";
	//var _userKeyword = revertQuery.replace(/ /g, "");
	var _userKeyword = userKeyword;
	_userKeyword = _userKeyword.toLowerCase();
	for(var i=0;i<str.length;i++){
		var kwd = str.substring(i, i+_userKeyword.length);
		if(_userKeyword == kwd.toLowerCase()){
			rtStr = str.substring(0, i);
			rtStr += '<font color="#eb550c">' + str.substring(i, i+_userKeyword.length) + '</font>';
			rtStr += str.substring((i+_userKeyword.length), str.length);
			break;
		}else{
			rtStr = str;
		}
	}
	return rtStr;
}