(function () {
var matched, browser;
// Use of jQuery.browser is frowned upon.
// More details: http://api.jquery.com/jQuery.browser
// jQuery.uaMatch maintained for back-compat
jQuery.uaMatch = function (ua) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
[];
return {
browser: match[1] || "",
version: match[2] || "0"
};
};
matched = jQuery.uaMatch(navigator.userAgent);
browser = {};
if (matched.browser) {
browser[matched.browser] = true;
browser.version = matched.version;
}
// Chrome is Webkit, but Webkit is also Safari.
if (browser.chrome) {
browser.webkit = true;
} else if (browser.webkit) {
browser.safari = true;
}
jQuery.browser = browser;
})();
var g_oConvert = "fw"; // 정방향, 역방향 값
var isArk = true; // 자동완성 기능 사용 여부
var isKeydown = false; // 브라우저가 파이어폭스, 오페라일 경우 keydown 사용 여부
var isListShow = true;
var cursorPos = -1; // 자동완성 커서 위치 값
var formName = "#search"; // 검색 form의 name을 설정한다.
var queryId = "#search_query"; // 검색어 의 id을 설정한다
var arkId = "#ark"; // 자동완성 전체
의 id을 설정한다
var wrapClass = ".autoFrame"; // 자동완성 결과
의 class을 설정한다
var iconClass = ".autoBtn" // 자동완성 up down 이미지
var contentListClass = "ark_list"; // 자동완성 Content List
의 Class을 설정한다
var popClass = ".popular";
var footerId = "ark_footer"; // 자동완성 Footer
의 id을 설정한다
var imgDownId = "ark_img_down"; // 자동완성 down 이미지 id을 설정한다
var imgUpId = "ark_img_up"; // 자동완성 up 이미지 id을 설정한다
var arkUpId = "ark_up"; // 자동완성 up 이미지
의 id을 설정한다
var arkDownId = "ark_down"; // 자동완성 down 이미지
의 id을 설정한다
var totalFwCount = 0; // 전방 검색 전체 개수
var totalRwCount = 0; // 후방 검색 전체 개수
var target = ""; // ARK 웹서버 설정파일의 목록에 있는 추천어 서비스 대상을 지정한다.
var charset = "utf-8"; // 인코딩 설정 (인코딩이 utf-8이 아닐 경우 8859_1 로 설정해야함)
var dataType = "json"; // 반환받을 Data의 타입을 설정. XML 과 JSON이 가능 (xml | json)
var arkPath = "./ark"; // 자동완성 경로
var transURL = "/total_search/ark.do"; // trans 페이지의 URL을 설정한다.
var tempQuery = "";
/**
* ARK 구성요소의 위치 및 크기를 아래 변수를 통해 조정함.
*/
var browser = "";
if ($.browser.msie) {
browser = "IE";
} else if ($.browser.mozilla) {
browser = "FF";
} else if ($.browser.opera) {
browser = "OPERA";
} else if ($.browser.webkit) {
browser = "CHROME";
}
var browserVersion = $.browser.version; // 웹브라우져의 버전
var offset = null;
var offsetTop = 0;
var offsetLeft = 0;
/** ARK 구성요소의 위치 및 크기를 아래 변수를 통해 조정함. **/
var IE6_TOP_OFFSET = -36; // IE6 일 경우 TOP 옵셋 값 오차 조정
var IE6_LEFT_OFFSET = 20; // IE6 일 경우 LEFT 옵셋 값 오차 조정
var IE7_TOP_OFFSET = -63; // IE7 일 경우 TOP 옵셋 값 오차 조정
var IE7_LEFT_OFFSET = -18; // IE7 일 경우 LEFT 옵셋 값 오차 조정
var IE8_TOP_OFFSET = 0; // IE8 일 경우 TOP 옵셋 값 오차 조정
var IE8_LEFT_OFFSET = 0; // IE8 일 경우 LEFT 옵셋 값 오차 조정
var FF_TOP_OFFSET = 0;
var FF_LEFT_OFFSET = 0;
var CHROME_TOP_OFFSET = 0;
var CHROME_LEFT_OFFSET = 0;
var OPERA_TOP_OFFSET = 0;
var OPERA_LEFT_OFFSET = 0;
/** ARK 구성요소의 위치 및 크기를 아래 변수를 통해 조정함. **/
var arkWidth = 37; // 자동완성 전체 넓이 값을 설정한다(변동폭).
var arkTop = 29; // 자동완성 상단에서의 위치 값을 설정한다.
var arkLeft = -3; // 자동완성 왼쪽에서의 위치 값을 설정한다.
var arkImgTop = 26; // 자동완성 화살표 이미지의 상단에서 위치 값을 설정한다.
var arkImgLeft = 26; // 자동완성 화살표 이미지의 왼쪽에서 위치 값을 설정한다.
var tooltip01TopPos = 0; // 자동완성 기능끄기 툴팁의 상단 기준 위치 오차 조정값
var tooltip01LeftPos = -155; // 자동완성 기능끄기 툴팁의 좌측 기준 위치 오차 조정값
var tooltip02TopPos = 0; // 자동완성 기능켜기 툴팁의 상단 기준 위치 오차 조정값
var tooltip02LeftPos = 0; // 자동완성 기능켜기 툴팁의 좌측 기준 위치 오차 조정값
//var keyFix = new beta.fix('query');
$(document).ready(function() {
// 자동완성 기능 사용 여부 확인 한다.
if(getCookie("ark")=="off") {
isArk = false;
//$(queryId).attr("autocomplete","on");
} else {
//$(queryId).attr("autocomplete","off");
}
// 브라우져별 ARK 옵셋 설정
setArkOffset();
// 자동완성
생성
// drawArk();
// 자동완성 위치 설정
// setArkLocation();
// 자동완성 넓이 및 높이 설정
// setArkSize();
//alert("msie:" + $.browser.msie + " / webkit:" + $.browser.webkit);
if ($.browser.opera || $.browser.mozilla) {
//alert("oepra:" + $.browser.opera + " / mozilla:" + $.browser.mozilla);
$(document).keydown(function(event) {
var query = $(queryId).val();
if ((event.keyCode == 38 || event.keyCode == 40)&&($("#ark").css("display") == 'block') ) {
if (query != "") {
showArk();
}
moveFocusEvent(event);
} else {
if ($(event.target).is(queryId)) {
isKeydown = true;
eventKeydown();
}
}
});
} else if ($.browser.msie || $.browser.webkit) {
//alert("msie:" + $.browser.msie + " / webkit:" + $.browser.webkit);
$(document).keyup(function(event) {
var query = $(queryId).val();
if ((event.keyCode == 38 || event.keyCode == 40)&&($("#ark").css("display") == 'block') ) {
// 아래(40), 위(38) 방향키 조작시의 이벤트 처리
if (query != "") {
showArk();
}
moveFocusEvent(event);
} else if (event.keyCode == 16) {
} else {
if ($(event.target).is(queryId)) {
if (isArk && $(queryId).val() != "") {
if(dataType == "json") {
requestArkJson($(queryId).val());
} else if(dataType == "xml") {
requestArkXml($(queryId).val());
}
} else if (!isArk && $(queryId).val() != "") {
hidePop();
}
}
}
});
}
// Backspace 에 대한 처리
$(queryId).keyup(function(event) {
if(event.keyCode == 8 && $(this).val() == "") {
$("." + contentListClass).html("");
hideArk();
showPop();
}
});
$(queryId).focus(function(){
if($(queryId).val()==""){
showPop();
}
});
// 브라우저에서 일어나는 클릭 이벤트를 체크한다.
$(document).click(function(event) {
stopEventBubble(event);
var query = $(queryId).val();
if ($(event.target).is(iconClass) && query == "") {
if($(event.target).is(".active")){
hidePop();
}else{
showPop();
}
}else if($(event.target).is(iconClass) && query != ""){
if($(event.target).is(".active")){
hideArk();
}else{
if(isArk){
requestArkJson($(queryId).val());
}else{
showNoArk();
}
}
}else if ($(event.target).is(queryId)) {
if (isArk) {
var query = $(queryId).val();
if (query != "") {
//hidePop();
requestArkJson($(queryId).val());
keyword = query;
}
isKeydown = true;
}else if(!isArk&&query != ""){
hidePop();
}
} else if (!$(event.target).is(wrapClass)) {
hideArk();
hidePop();
}
});
$("#" + imgUpId).hover(
function() {
$("#tooltip01").show();
},
function() {
$("#tooltip01").hide();
}
);
});
/************************************************
* jQuery Event Bubbling 방지를 위한 함수.
* @name stopEventBubble
* @param evt 페이지 이벤트
************************************************/
function stopEventBubble(evt) {
var eventReference = (typeof evt !== "undefined") ? evt : event;
//alert(eventReference.stopPropagation);
if(eventReference.stopPropagation) {
eventReference.stopPropagation();
} else {
eventReference.cancelBubble = true;
}
}
/************************************************
* 자동완성 키워드 목록 출력을 위한 DIV 생성
* @name drawArk
************************************************/
function drawArk() {
var str;
// 자동완성 접기/펼침 이미지 생성
str = "
");
} else {
$("." + contentListClass).html(str);
}
setArkFooter();
showArk();
}
}
});
}
var keyword = "";
/************************************************
* 브라우저가 FireFox, Opera 일 경우 한글 입력
* @name eventKeydown
************************************************/
function eventKeydown() {
// 방향키 이동시 메소드 실행을 중지시킨다.
if(!isKeydown) {
return;
}
if (keyword != $(queryId).val()) {
keyword = $(queryId).val();
if (keyword != "" && isArk) {
if(dataType == "json") {
requestArkJson($(queryId).val());
} else if(dataType == "xml") {
requestArkXml($(queryId).val());
}
} else {
hideArk();
showPop();
}
}
setTimeout("eventKeydown()", 20);
}
/************************************************
* 방향키 이벤트 처리
* @name moveFocusEvent
* @param event 페이지 이벤트
************************************************/
function moveFocusEvent(event) {
isKeydown = false;
if (event.keyCode == 38) {
if (cursorPos==-1 || cursorPos==0) {
cursorPos = -1;
hideArk();
$(queryId).val(tempQuery);
tempQuery = "";
} else {
onMouseOutKeyword(cursorPos);
cursorPos = cursorPos - 1;
onMouseOverKeyword(cursorPos);
$(queryId).val($(".f" + cursorPos).text());
}
} else if (event.keyCode == 40) {
if(cursorPos == -1) {
tempQuery = $(queryId).val();
}
if ((totalFwCount + totalRwCount) > (cursorPos + 1)) {
onMouseOutKeyword(cursorPos);
cursorPos = cursorPos + 1;
onMouseOverKeyword(cursorPos);
$(queryId).val($(".f" + cursorPos).text());
}
}
}
/************************************************
* MouseOver 일 경우 선택한 배경을 설정
* @name onMouseOverKeyword
* @param cursorNum 커서의 위치 인덱스 값
************************************************/
function onMouseOverKeyword(cursorNum) {
clearCursorPos();
cursorPos = cursorNum;
$(".f" + cursorNum).css({"backgroundColor" : "#f3f3f3"});
$(".f" + cursorNum).css({"cursor" : "pointer"});
}
/************************************************
* MouseOut 일 경우 설정한 배경을 초기화
* @name onMouseOutKeyword
* @param cursorNum 커서의 위치 인덱스 값
************************************************/
function onMouseOutKeyword(curSorNum) {
cursorPos = curSorNum;
$(".f" + cursorPos).css({"backgroundColor" : "#ffffff"});
}
/************************************************
* 커서 위치가 변경될 때마다 선택되지 않은 부분 초기화
* @name clearCursorPos
************************************************/
function clearCursorPos() {
for(var i=0; i<(totalFwCount + totalRwCount); i++){
$(".f" + i).css({"backgroundColor" : "#ffffff"});
}
}
/************************************************
* 마우스 클릭시 검색을 수행
* @name onClickKeyword
* @param cursorPos 커서의 위치
************************************************/
function onClickKeyword(cursorPos) {
$(queryId).val($("#f" + cursorPos).text());
$(formName).submit();
}
/************************************************
* 자동완성 상태를 설정
* @name showArkGuide
************************************************/
function showArkGuide() {
var str = "
";
if (isArk) {
str += "현재 검색어 자동 추천 기능을 사용하고 있습니다. 검색어 입력시 자동으로 관련어를 추천합니다.";
} else {
str += "자동 추천 기능을 사용해 보세요. 검색어 입력시 자동으로 관련어를 추천합니다.";
}
str += "
";
$("." + contentListClass).html(str);
}
/************************************************
* 자동완성 Footer 생성
* @name setArkFooter
************************************************/
function setArkFooter() {
var str = "";
if (isArk && $(queryId).val() != "" && (totalFwCount + totalRwCount) > 0 && isListShow) {
str += "