/* plaync Suggest 2.0
 * author : yeongun@ncsoft.net
 * last update: 2011.5.3
 * (c) 2008 NCsoft Open UI Development Team */
function suggestKeyword(data){if(ncSuggestCurrentObject===false){return}if(data.front.length==0&&data.back.length==0&&data.mid.length==0){ncSuggestCurrentObject.hideSuggest();return}ncSuggestDataList.keyword=data.keyword.replace(/%20/g,"");ncSuggestDataList.result=data.result;var orgKeyword=data.orgkeyword.replace(/%20/g,"");if(orgKeyword===ncSuggestDataList.lastKeyword.replace(/%20/g,"")){for(var i=0;i<data.front.length;i+=1){ncSuggestDataList.type1[i]=data.front[i][0]}for(var i=0;i<data.back.length;i+=1){ncSuggestDataList.type2[i]=data.back[i][0]}for(var i=0;i<data.mid.length;i+=1){ncSuggestDataList.type3[i]=data.mid[i][0]}ncSuggestCurrentObject.putSuggestWords()}else{return}}var ncSuggestDataList={keyword:0,type1:[],type2:[],type3:[],lastKeyword:0,result:0,value:0};var ncSuggestCurrentObject=false;var ncSuggestDeliv=false;var ncSuggest=Class.create({initialize:function(base,options){this.base=base;this.options=options;this.options.domain=this.options.domain?this.options.domain:".plaync.co.kr";this.start="on"},load:function(){if(this.options.base){ncSuggestInput.base=$(this.base)}this.construct()},construct:function(){var wrapper=this.base+"_wrapper";if(!$(wrapper)){return}if($(wrapper).innerHTML==""){var templeteHTML='			<div id="'+this.base+'_list" class="suggest_list"></div>\n			<div id="'+this.base+'_guide" class="suggest_guide"><div class="off" style="display:none;">검색어 자동완성 기능을 사용하지 않고 계십니다.</div><div class="on" style="display:none;">검색어 자동완성 기능을 사용하고 계십니다.</div><div class="no_result" style="display:none;">검색 결과가 없습니다.</div></div>\n			<div class="footer"><p><span id="'+this.base+'_off" class="suggest_off">검색어 자동완성 끄기</span><span id="'+this.base+'_on" class="suggest_on">검색어 자동완성 켜기</span></p></div>';$(wrapper).update(templeteHTML)}this.control()},control:function(){var SuggestUtils=this.utilities;var options=this.options;var base=this.base;var elements=SuggestUtils.findElement(base);var dbValue="";var setValue;var thisElement=$(base);var currentScrollTop=0;var deliv=ncSuggestDeliv=this;var currentKeyword;function goSearchResult(e){var target=document.getElementsByName(options.form)[0].getAttribute("action");var eventElement;var query;if(e&&e.type=="click"&&Event.element(e).tagName.toUpperCase()!="INPUT"){eventElement=Event.element(e);if(eventElement.tagName.toUpperCase()=="LI"){query=eventElement.innerHTML.stripTags();hideSuggest()}else{if(eventElement.tagName.toUpperCase()=="UL"||eventElement.tagName.toUpperCase()=="DIV"){return}else{if(eventElement.ancestors()[0].tagName.toUpperCase()=="LI"){query=eventElement.ancestors()[0].innerHTML.stripTags()}else{if(eventElement.ancestors()[1].tagName.toUpperCase()=="LI"){query=eventElement.ancestors()[1].innerHTML.stripTags()}else{return}}}}}else{query=$F(thisElement)}thisElement.value=query;if(query.length<=0){return}if(options.type&&options.type=="js"){eval(options.jsfunction+"();")}else{document.getElementsByName(options.form)[0].submit()}}function suggestRequest(el,m){if(SuggestUtils.suggestCheck(base)){hideSuggest();return}var element=el;elements.guide.hide();setTimeout(function(){if($F(element).length<=0){hideSuggest();return}ncSuggestDataList.str=$F(element);var str=$F(element).replace(/ /g,"%20");var params=(deliv.options.params)?deliv.options.params:"";var requestUrl=options.url+"?site="+options.site+"&collection="+options.collection+"&display="+options.display+"&query="+encodeURI($F(element).replace(/ /g,""))+params;ncSuggestDataList.lastKeyword=encodeURI($F(element));function getItemInfo(){ncSuggestDataList.type1=[];ncSuggestDataList.type2=[];ncSuggestDataList.type3=[];url=requestUrl;var script=document.createElement("script");script.setAttribute("type","text/javascript");script.setAttribute("src",url);$$("head")[0].appendChild(script);ncSuggestCurrentObject=deliv}getItemInfo()},10)}this.putSuggestWords=function(){var dataHtml={front:[],back:[],mid:[]};var listHeight,displayCount,displayCount2,finalHtml;displayCount=(options.displayOverCount)?ncSuggestDataList.type1.length:options.showCount;displayCount=(displayCount>ncSuggestDataList.type1.length)?ncSuggestDataList.type1.length:displayCount;displayCount2=(options.displayOverCount)?ncSuggestDataList.type2.length:options.showCount2;displayCount2=(displayCount2>ncSuggestDataList.type2.length)?ncSuggestDataList.type2.length:displayCount2;displayCount3=(options.displayOverCount)?ncSuggestDataList.type3.length:options.showCount3;displayCount3=(displayCount3>ncSuggestDataList.type3.length)?ncSuggestDataList.type3.length:displayCount3;ncSuggestDataList.keyword=decodeURI(ncSuggestDataList.keyword);ncSuggestDataList.keyword=ncSuggestDataList.keyword.toUpperCase();for(i=0;i<displayCount;i++){ncSuggestDataList.value=ncSuggestDataList.type1[i];finalHtml=suggestion(ncSuggestDataList.keyword,ncSuggestDataList.value,2);finalHtml=(finalHtml!=false)?finalHtml:ncSuggestDataList.value;dataHtml.front[i]="<li title='"+ncSuggestDataList.type1[i]+" '>"+finalHtml+"</li>"}for(j=0;j<displayCount3;j++){ncSuggestDataList.value=ncSuggestDataList.type3[j];
finalHtml=suggestion(ncSuggestDataList.keyword,ncSuggestDataList.value,3);finalHtml=(finalHtml!=false)?finalHtml:ncSuggestDataList.value;dataHtml.mid[j]="<li title='"+ncSuggestDataList.type3[j]+" '>"+finalHtml+"</li>";if(j===0){dataHtml.mid[j]=dataHtml.mid[j].replace("<li ",'<li class="startback" ')}}for(j=0;j<displayCount2;j++){ncSuggestDataList.value=ncSuggestDataList.type2[j];finalHtml=suggestion(ncSuggestDataList.keyword,ncSuggestDataList.value,1);finalHtml=(finalHtml!=false)?finalHtml:ncSuggestDataList.value;dataHtml.back[j]="<li title='"+ncSuggestDataList.type2[j]+" '>"+finalHtml+"</li>";if(j===0){dataHtml.back[j]=dataHtml.back[j].replace("<li ",'<li class="startback" ')}}elements.list.update("<ul>"+dataHtml.front.join("")+dataHtml.mid.join("")+dataHtml.back.join("")+"</ul>");if(elements.list.select("li")[0]&&elements.list.select("li")[0].hasClassName("startback")){elements.list.select("li")[0].removeClassName("startback")}if(displayCount3){listHeight=options.itemHeight*(displayCount+displayCount2+displayCount3)}else{listHeight=options.itemHeight*(displayCount+displayCount2)}listHeight=(listHeight<options.maxHeight)?listHeight:options.maxHeight;listHeight=(options.garbageSpace&&typeof options.garbageSpace=="number")?listHeight+options.garbageSpace:listHeight;elements.list.setStyle({height:(listHeight)+"px"});showSuggest();if(listHeight===0){hideSuggest()}};function suggestion(keyword,value,type){var keyword_str;var compare_key="";var compare_status=false;if(type==0||type==2||type==3){if(type==0&&value.charAt(i)!=keyword.charAt(0)){return false}keyword_str=0;for(var i=0;i<value.length;i++){if(value.charAt(i).toUpperCase()==keyword.charAt(keyword_str).toUpperCase()){compare_key+=value.charAt(i);keyword_str++;compare_status=true}else{if(value.charAt(i)==" "&&compare_status==true){compare_key+=value.charAt(i)}else{compare_status=false}}}if(type==3){compare_key=String.fromCharCode(32)+compare_key}return value.replace(compare_key,'<span style="color:'+options.color+';">'+compare_key+"</span>")}else{if(type==1&&value.charAt(value.length-1)==keyword.charAt(keyword.length-1)){keyword_str=keyword.length-1;for(var i=value.length-1;i>=0;i--){if(keyword_str<0){break}if(value.charAt(i)==keyword.charAt(keyword_str)){compare_key=value.charAt(i)+compare_key;keyword_str--;compare_status=true}else{if(value.charAt(i)==" "&&compare_status==true){compare_key=value.charAt(i)+compare_key}else{compare_status=false}}}return value.substr(0,i+1)+'<span style="color:'+options.color+';">'+compare_key+"</span>"}else{return false}}}function getSuggestList(e){if(e.type&&e.type.toLowerCase()=="focus"&&$F(thisElement).length>0){return}if(e.type&&e.type.toLowerCase()=="click"){if($F(thisElement).length<=0){hideSuggest()}else{if(elements.list.select("li").length>0){if(elements.wrapper.getStyle("display")!="none"){if(elements.guide.getStyle("display")!="none"){elements.guide.hide();elements.list.setStyle({display:"block"})}else{elements.wrapper.hide()}}else{elements.wrapper.setStyle({display:"block"})}}else{if(elements.guide.getStyle("display")!="none"){if(elements.guide.select("div.no_result")[0].getStyle("display")!="none"){hideSuggest()}else{elements.guide.hide();suggestRequest(thisElement,1)}}else{suggestRequest(thisElement,1)}}}return}var key=e.keyCode;if(key&&key!=229){var el;clearTimeout(setValue);if(key==8){if($F(thisElement).length>0){suggestRequest(thisElement)}else{hideSuggest()}return}else{if(key==38||key==40||key==9){if(key==9&&$F(thisElement).length>0){setTimeout(function(){thisElement.focus()},10)}if(elements.list.select("li."+options.mouseover_class).length>0){el=elements.list.select("li."+options.mouseover_class)[0];elements.list.select("li."+options.mouseover_class)[0].removeClassName(options.mouseover_class)}else{if(elements.list.select("li."+options.keymove_class).length>0){el=elements.list.select("li."+options.keymove_class)[0];elements.list.select("li."+options.keymove_class)[0].removeClassName(options.keymove_class)}else{if(key==40||key==9){if(elements.list.select("li").length<=0){if($F(thisElement).length>0){suggestRequest(thisElement,1)}else{hideSuggest()}}else{elements.list.select("li")[0].addClassName(options.keymove_class);putSuggestKeyword(elements.list.select("li")[0])}return}else{hideSuggest()}return}}if(key==38){if(Object.isUndefined(el)){hideSuggest()}if(Object.isUndefined(el.previous("li"))){if(!Object.isUndefined(currentKeyword)){thisElement.value=currentKeyword}hideSuggest();return}else{el=el.previous("li")}if(elements.list.scrollTop>el.previousSiblings().length*options.itemHeight){currentScrollTop=el.previousSiblings().length*options.itemHeight}}else{if(Object.isUndefined(el.next("li"))){if(key==9){setTimeout(function(){elements.submit.focus()},30);return}else{el=el}}else{el=el.next("li")}var dispCnt=options.showCount-1;if(!Object.isUndefined(options.displayCount)){dispCnt=options.displayCount}if(!(currentScrollTop+options.itemHeight<=el.previousSiblings().length*options.itemHeight&&(currentScrollTop+options.itemHeight)+(dispCnt*options.itemHeight)>el.previousSiblings().length*options.itemHeight)){currentScrollTop=currentScrollTop+options.itemHeight
}}elements.list.scrollTop=currentScrollTop;el.addClassName(options.keymove_class);putSuggestKeyword(el);return}else{if(key==27){hideSuggest();return}else{if((key>=48&&key<=57)||(key>=96&&key<=105)||(key>=65&&key<=90)){getSuggestControl();return}else{if((key>=106&&key<=111)||(key>=186&&key<=192)||(key>=219&&key<=222)){}else{if(key==13){goSearchResult();hideSuggest();return}else{return}}}}}}suggestRequest(thisElement)}else{if(Prototype.Browser.Gecko){if(thisElement.value!=dbValue){getSuggestControl();dbValue=thisElement.value}else{clearTimeout(setValue)}setValue=setTimeout(getSuggestList,10)}else{suggestRequest(thisElement)}}}function putSuggestKeyword(targetObj){thisElement.value=targetObj.innerHTML.stripTags()}function getSuggestControl(){suggestRequest(thisElement)}function lineFocus(e){var el=Event.element(e);if(el.tagName.toUpperCase()!="LI"){for(i=0;i<el.ancestors().length;i++){if(el.ancestors()[i].tagName.toUpperCase()=="LI"){el=el.ancestors()[i];continue}}}if(!Object.isUndefined(elements.list.select("li."+options.mouseover_class)[0])){elements.list.select("li."+options.mouseover_class)[0].removeClassName(options.mouseover_class)}if(!Object.isUndefined(elements.list.select("li."+options.keymove_class)[0])){elements.list.select("li."+options.keymove_class)[0].removeClassName(options.keymove_class)}el.addClassName(options.mouseover_class);el=null}function showSuggest(){currentKeyword=thisElement.value;elements.list.setStyle({display:"block"});elements.wrapper.setStyle({display:"block"});if(elements.list.getHeight()>=options.maxHeight){elements.list.setStyle({height:options.maxHeight+"px"})}elements.list.scrollTop=0;currentScrollTop=0}function hideSuggest(){clearTimeout(setValue);[elements.wrapper,elements.list,elements.guide].each(function(o){o.hide()});elements.list.update("");elements.toggle.src=elements.toggle.src.replace("_on.","_off.")}this.hideSuggest=hideSuggest;function hideSuggestLayer(e){var element=Event.element(e);if(element.id==elements.toggle.id){return}if(elements.wrapper.getStyle("display")=="none"){return}var status=true;if(element.id==base){status=false}else{for(i=0;i<element.ancestors().length;i++){if(element.ancestors()[i].id==base+"_wrapper"){status=false}}}if(status){hideSuggest()}}function toggleSuggest(){[elements.guide.select("div.on")[0],elements.guide.select("div.no_result")[0],elements.guide.select("div.off")[0]].each(function(o){o.hide()});elements.guide.setStyle({display:"block"});if(SuggestUtils.suggestCheck(base)){elements.guide.select("div.off")[0].setStyle({display:"block"});elements.off.hide()}else{elements.guide.select("div.on")[0].setStyle({display:"block"});elements.off.setStyle({display:""})}if(elements.wrapper.getStyle("display")=="none"){elements.list.hide();elements.wrapper.setStyle({display:"block"});elements.toggle.src=elements.toggle.src.replace("_off.","_on.")}else{if(elements.list.getStyle("display")!="none"){elements.list.hide();elements.wrapper.setStyle({display:"block"});elements.toggle.src=elements.toggle.src.replace("_off.","_on.")}else{hideSuggest()}}}var keyEvent="keydown";if(typeof options.docKeyEnable=="undefined"||options.docKeyEnable!==true){Event.observe(document,"keydown",ncSuggestInput.input)}Event.observe(document,"click",hideSuggestLayer);Event.observe(elements.on,"click",SuggestUtils.suggestOn);Event.observe(elements.off,"click",SuggestUtils.suggestOff);Event.observe(elements.list,"mouseover",lineFocus);Event.observe(elements.list,"click",goSearchResult);Event.observe(elements.toggle,"click",toggleSuggest);Event.observe(elements.submit,"click",goSearchResult);[keyEvent,"focus","click"].each(function(o){Event.observe(elements.base,o,getSuggestList)});if(SuggestUtils.suggestCheck(base)){elements.on.setStyle({display:""});elements.off.hide()}else{elements.on.hide();elements.off.setStyle({display:""})}},utilities:{findElement:function(element){if(!$(element)){return false}return{base:$(element),wrapper:$(element+"_wrapper"),list:$(element+"_list"),guide:$(element+"_guide"),toggle:$(element+"_toggle"),off:$(element+"_off"),on:$(element+"_on"),submit:$(element+"_submit")}},suggestOff:function(e){var element=Event.element(e);var cookieName=element.id.split("_")[0];document.cookie=encodeURIComponent(cookieName)+"=off;max-age="+(60*60*24*365)+";domain="+ncSuggestDeliv.options.domain+";path=/";$(cookieName+"_wrapper").hide();$(cookieName+"_list").update("");$(cookieName+"_on").setStyle({display:""});$(cookieName+"_off").hide();$(cookieName+"_toggle").src=$(cookieName+"_toggle").src.replace("_on.","_off.")},suggestOn:function(e){var element=Event.element(e);var cookieName=element.id.split("_")[0];document.cookie=encodeURIComponent(cookieName)+"=on;max-age="+(60*60*24*365)+";domain="+ncSuggestDeliv.options.domain+";path=/";$(cookieName+"_off").setStyle({display:""});$(cookieName+"_on").hide();$(cookieName+"_wrapper").hide();$(cookieName+"_toggle").src=$(cookieName+"_toggle").src.replace("_on.","_off.")},suggestCheck:function(cookie){var result;if(document.cookie.indexOf(cookie)>=0){result=document.cookie.substr(document.cookie.indexOf(cookie));
result=result.split(";")[0];result=result.split("=")[1];result=(result=="on")?false:true}else{result=false}return result}}});var ncSuggestInput={base:0,input:function(e){var e=e?e:window.event;element=Event.element(e);var keycode=e.keyCode;var obj;var exceptionKey=[8,9,13,16,17,18,32,36,35,34,33,20,37,39,38,40];if(e.ctrlKey){return}else{if(ncSuggestInput.checkException(exceptionKey,keycode)){return}else{if(element.tagName.toUpperCase()=="INPUT"||element.tagName.toUpperCase()=="TEXTAREA"||element.tagName.toUpperCase()=="SELECT"){return}}}if(ncSuggestInput.base){ncSuggestInput.base.style.imeMode="inactive"}},checkException:function(exKeys,key){for(i=0;i<exKeys.length;i++){if(exKeys[i]==key){return true}}return false}};
