﻿var DebugMode = false;
var UseBulletSearchEnabled = true; //총알검색서비스를 사용하기여부
var UseBulletSearch = true;

var SearchFormID = "form#HeadForm";
var InputTextBoxID = ":text#query";

var BulletSearchReady = false;

var KeyCode;
var KsanaIndex = 0;
var KsanaCount = 0;

var strPrevKeyword = ""; // 이전검색어와 같은지 검사를 위한 변수
var dtsPrevTime = new Date(); // 입력시간 체크용 변수
var iSearchCount = 0; // 디버그용 스나이퍼 검색카운터

// 검색 파라미터
var InputKeyword = "";
var Parsing = false;
var Domain = 0;
var SIDO = "SN";
var iPage = 1;
var iPageSize = 3;
var iKPageSize = 7;

// 페이징 관련 변수
var iTotalCount = 0;
var iTotalPage = 0;
var iDispPageCnt = 5;
var bEnablePager = false;
var iItemCount = 0;

// 동기화 관련변수
var iKC = 0;
var iSC = 0;
var iKIgnoreCount = 0;
var iSIgnoreCount = 0;
//var ikLastRequest = 0;
//var isLastRequest = 0;
var iTimerIgnoreCount = 0;
var iKTimerIgnoreCount = 0;

// 기타 환경 변수
var iLimitGap = 200;
var iKLimitGap = 50;
var oTimer;
var oKTimer;

var seqCnt = -1;
var timeCnt = -1;

//var gCnt = 0;//서버에 전송하는 인덱스카운터
//var sCnt = 0;//서버에서 받은 인덱스 카운터

// 실제 검색페이지로 넘어갈때 사용할 키워드
var RealQuery;


function getRecommentList() {
    var myTime = ++timeCnt;
    getRecommentList2(myTime);
    //	oKTimer = setTimeout("getRecommentList2(" + myTime + ")", iKLimitGap);
}

// 추천 키워드 목록을 가져온다.
function getRecommentList2(myTime) {
    if (timeCnt != myTime)
        return;
    timeCnt = -1;
    var mySeq = ++seqCnt;
    //KsanaSearch -->
    var $InputTb = $(InputTextBoxID);
    // 키워드를 가져온다.
    var strKeyword = (escape($InputTb.val()));


    strKeyword = jQuery.trim(strKeyword);
    if (strKeyword == '') {		//	
        seqCnt = -1;
        return;
    }
    //alert(strKeyword);
    var $rl = $("div#quickSearch>div#sword>ul#recommentList");
    // 값이없다면 HTML을 비우고 종료
    if (strKeyword == "") {
        $rl.html(" ");
        return;
    }
    // 동기화를 위한 변수세팅
    //var iKRequstID = iKC;
    //iKC++;

    var iDomain = Number(GetDomain($("#qdomain").val()));
    if (iDomain == 99)
        return;

    //$rl.css("visiblity","hidden");
    // jQuery의 slideDown 사용시 특정페이지 카트페이지 등에서 충돌현상으로 show 사용해야함 (11.06.29)
    //    $("div#quickSearch").slideDown(50);
    $("div#quickSearch").show();

    if (document.URL.toLowerCase().indexOf("edu.yes24.com", 0) != -1) {
        $.getJSON("http://www.yes24.com/SearchCorner/Sniper/GetRecommendKeywordJsonp?Query=" + strKeyword + "&Domain=" + iDomain + "&PageSize=" + iKPageSize + "&callback=?", function (data) { KsanaCallBack(data, seqCnt, mySeq); });
    } else {
        $.getJSON("/SearchCorner/Sniper/GetRecommendKeyword", { Query: strKeyword, Domain: iDomain, PageSize: iKPageSize }, function (data) { KsanaCallBack(data, seqCnt, mySeq); });
    }
}
// Ksana CallBack Function 
function KsanaCallBack(data, seqCnt, mySeq) {
    //	sequence checking
    var $InputTb = $(InputTextBoxID);
    var $rl = $("div#quickSearch>div#sword>ul#recommentList");
    var iDomain = Number(GetDomain($("#qdomain").val()));

    if (seqCnt != mySeq)
        return;
    KsanaCount = data.Count;

    // 추천검색어가 하나라도 있으면 형태소 분석을 하지않은채 검색을 한다.
    if (data.Count > 0) {
        //if (ikLastRequest <= iKRequstID) {
        RealQuery = data.SniperQuery;

        KsanaIndex = 0;
        var KeywordList = " ";
        $.each(
            data.List,
            function (i, entity) {
                entity = entity.replace("?", $InputTb.val());
                var dot = entity.length > 11 ? ".." : "";

                var dispWord = String(NSubstring(entity, 22)).replace($InputTb.val(), "<strong>" + $InputTb.val() + "</strong>") + dot;
                var KeywordItem = i != 0 ?
                    "<li id=\"k" + i + "\" kw=\"" + entity + "\"><a style=\"cursor:hand;\">" + dispWord + "</a></li>" :
                    "<li id=\"k" + i + "\" kw=\"" + entity + "\" class=\"hilight\"><a>" + dispWord + "</a></li>";
                KeywordList += KeywordItem;

                if (i == 0) {
                    if ($.trim(entity) != $.trim(InputKeyword)) {
                        //if (String(entity).replace(" ", "") != InputKeyword.replace(" ", "")) {
                        iPage = 1;
                        getSearchPreview(String(entity), iDomain, false);
                        InitPager();
                        iSearchCount++;
                    }
                }
            }
        );

        $rl.html(KeywordList);
        //ikLastRequest = iKRequstID;
        $("div#quickSearch>div#sword>ul#recommentList>li").click(
			function () {
			    KsanaIndex = $(this).attr("id").replace("k", "");
			    SelectItem();
			    getTotalCount();
			    clickLoggingTrace("105");
			}
		);
    }
    else { // 추천검색어가 없으면 형태소 분석을 하여 텍스트 박스내의 내용을 검색한다.
        iPage = 1;
        getSearchPreview($InputTb.val(), iDomain, true);
        $rl.html("<li id=\"k1\" kw=\"1\" class=\"hilight\"><a style=\"cursor:pointer;\"><strong>" + $InputTb.val() + "</strong></a></li>");
        InitPager();
        iSearchCount++;
    }
}

function clickLoggingTrace(acode) {
    n_click_logging("/searchcenter/BulletSearchLayer.aspx?Acode=" + acode);
    return;
}



// 실제상품목록을 가져오는 검색(SNIPER)
function getSearchPreview(strQuery, iDomain, bParse) {

    //oTimer = setTimeout(
    //            "getSearchPreview2('" + strQuery + "', " + iDomain + ", " + bParse + ");" +
    //            "iSearchCount++;", iLimitGap);
    getSearchPreview2(strQuery, iDomain, bParse);
}

// 실제상품 목록을 가져온다.
function getSearchPreview2(strQuery, iDomain, bParse) {
    $("div#quickSearch>div#result>p.paging").hide();
    $("div#quickSearch>div#sword>p#suggestion").hide();

    var strKeyword = (escape(strQuery));
    var $gl = $("#tbList");

    if (strKeyword == "") {
        $gl.html(" ");
        return;
    }

    SIDO = "SN";  //$("div.sort>select#ddlOrder").val();

    InputKeyword = strQuery;
    Domain = iDomain;
    Parsing = bParse;

    $gl.hide();
    if (document.URL.toLowerCase().indexOf("edu.yes24.com", 0) != -1) {
        $.getJSON("http://www.yes24.com/SearchCorner/Sniper/GetSniperSearchJsonp?Query=" + strKeyword + "&Parsing=" + bParse + "&Domain=" + iDomain + "&Page=" + (iPage - 1) + "&PageSize=" + iPageSize + "&callback=?", function (data) { SniperCallBack(data); });
    }
    else {
        $.getJSON("/SearchCorner/Sniper/GetSniperSearch", { Query: strKeyword, Parsing: bParse, Domain: iDomain, Page: iPage - 1, PageSize: iPageSize }, function (data) { SniperCallBack(data); });
    }
}

// Sniper CallBack Function 
function SniperCallBack(data) {

    //if (isLastRequest <= iSRequstID) {
    var $gl = $("#tbList");

    if (data.Count != 0) {
        var GoodsList = " ";
        $.each(
            data.List,
            function (i, entity) {
                var strLink = "http://www.yes24.com/24/Goods/" + entity.GOODS_NO + "?Acode=101";
                var strTitle = "[" + GetDomain(String(entity.DOMAIN)) + "] <a href=\"" + strLink + "\">" + entity.GOODS_NM;
                if (entity.SUB_TTL != "") { // 부제
                    strTitle += " : " + entity.SUB_TTL;
                }
                strTitle += "</a>";
                if (entity.SERIES_INFO != "") { // 시리즈명
                    strTitle += (" <span class=\"info\">" + entity.SERIES_INFO + "</span>");
                }

                var issDm = String(entity.ISS_DM).substring(0, 4) + "년 " + String(entity.ISS_DM).substring(4, 6) + "월";
                //var strAuthInfo = entity.AUTH_INFO;
                var strAuthInfo = fnConvertAuthorInfo(entity.AUTH_INFO, entity.RES_KEY_GB, "");

                if (String(strAuthInfo).length != 0) {
                    strAuthInfo += " | ";
                }
                //strAuthInfo += "<a href=\"/SearchCenter/searchDetailResult.aspx?qcompany=" + entity.COMPANY2 + "&Acode=101\" class=\"m\">" + entity.COMPANY2 + "</a> | " + issDm;                                    
                //strAuthInfo += "<a href=\"/SearchCorner/Result?query=" + entity.COMPANY2 + "&domain=ALL&company_yn=Y&scode=032\" class=\"m\">" + entity.COMPANY2 + "</a> | " + issDm;
                if (entity.COMPANY2 == "" || entity.COMPANY2 == "`") {
                    strAuthInfo += issDm;
                } else {
                    var displayCompanys = entity.COMPANY2.split('`');
                    switch (entity.DOMAIN) {
                        case "8":
                            strAuthInfo += "<a href=\"/SearchCorner/Result?query=" + displayCompanys[0] + "&domain=ALL&company_yn=Y&scode=032\" class=\"m\">" + displayCompanys[0] + "</a>(";
                            strAuthInfo += "<a href=\"/SearchCorner/Result?query=" + displayCompanys[1] + "&domain=ALL&company_yn=Y&scode=032\" class=\"m\">" + displayCompanys[1] + "</a>) | " + issDm;
                            break;
                        case "7":
                            strAuthInfo += "<a href=\"/SearchCorner/Result?query=" + displayCompanys[1] + "&domain=ALL&company_yn=Y&scode=032\" class=\"m\">" + displayCompanys[1] + "</a> | " + issDm;
                            break;
                        default:
                            strAuthInfo += "<a href=\"/SearchCorner/Result?query=" + displayCompanys[0] + "&domain=ALL&company_yn=Y&scode=032\" class=\"m\">" + displayCompanys[0] + "</a> | " + issDm;
                            break;
                    }
                }

                var statGb = "";

                switch (Number(entity.GOODS_STAT_GB)) {
                    case 1:
                    case 2:
                        statGb = "<img src=\"http://image.yes24.com/sysimage/gnb/b_addtocarts.gif\" title=\"카트에 넣기\" style=\"cursor:pointer;\" onclick=\"InsertCartAjax(" + entity.GOODS_NO + ")\">";
                        break;
                    case 3:
                        statGb = "품절";
                        break;
                    case 4:
                        statGb = "일시<br/>품절";
                        break;
                    case 5:
                        statGb = "절판";
                        break;
                    case 7:
                        statGb = "미<br/>출간";
                        break;
                }


                var bulletIcon = "";
                if (entity.REC_GB == 3)
                    bulletIcon += " <img alt=\"강력추천\" src=\"http://image.yes24.com/sysimage/categoryN/i_hrecomm.gif\"> ";
                if (entity.DCOUP_YN == 1)
                    bulletIcon += " <img alt=\"쿠폰\" src=\"http://image.yes24.com/sysimage/categoryN/i_coupon.gif\"> ";
                if (entity.FREEPRIZE_YN == 1)
                    bulletIcon += " <img alt=\"이벤트\" src=\"http://image.yes24.com/sysimage/categoryN/i_event.gif\"> ";

                // 성인 인증 여부 체크
                var viewImage = true;
                if (Number(entity.LMT_AGE) >= 19 && entity.AGE_LMT_YN == "1") {
                    if (_ISADULT == "False") {
                        viewImage = false;
                    }
                }

                var goodsImg = viewImage ? "http://image.yes24.com/Goods/" + entity.GOODS_NO + "/S" : "http://image.yes24.com/sysimage/pd19.gif";
                //var goodsImg = entity.AGE_LMT_YN == 1 ? "http://image.yes24.com/sysimage/pd19.gif" : "http://image.yes24.com/Goods/" + entity.GOODS_NO + "/S";


                var GoodsItem = "<table cellpadding=\"0\" cellspacing=\"0\" style=\"width:445px;\"><tr  id=\"BulletEntity_" + entity.GOODS_NO + "\">" +
                                "<td class=\"pdimg\" style=\"width:50px\"><a href=\"" + strLink + "\"><img src=\"" + goodsImg + "\" width=\"40px\" alt=\"\"></a></td>" +
                                "<td>" + strTitle +
                                "<p>" + strAuthInfo + "</p>" +
                                formatCurrency(entity.SHOP_PR) + "원 → <span class=\"welprice\"><strong>" + formatCurrency(entity.SALE_PR) + "원</strong>(" + entity.DISC_RT + "%<img alt=\"할인\" src=\"http://image.yes24.com/sysimage/wel2/i_dc.gif\">+" + entity.POINT_RT + "%<img alt=\"적립\" src=\"http://image.yes24.com/sysimage/wel2/i_point.gif\">)</span>" +
                                bulletIcon +
                                "</td>" +
                                "<td class=\"btn\">" + statGb + "</td></tr></table>";
                GoodsList += GoodsItem;

            }
        );

        $gl.html("<tr><td>" + GoodsList + "</td></tr>")

        // 크롬 파폭에서 총알검색 레이어가 깨지는 현상으로 인해 Timer로 조절 (IE 도 가끔 일어남 )        
        if (jQuery.browser.mozilla == true || jQuery.browser.opera == true) {
            setTimeout("var h = $('#tbList').height() + 60;$('div#quickSearch').css('height', h);", 150);
        } else {
            var h = $('#tbList').height() + 60; $('div#quickSearch').css('height', h);
        }


        $gl.show();
        $("div#quickSearch>div#result>p.paging").show();
        $("div#quickSearch>div#sword>p#suggestion").show();

        //                        $gl.show(function () {
        //                            $("div#quickSearch>div#result>p.paging").show();
        //                            $("div#quickSearch>div#sword>p#suggestion").show();
        //                        });
    }
    else {
        //$gl.html("<tbody><tr><td>검색결과가 없습니다.</td></tr></tbody>");
        $("a#aNextPage").html("&nbsp;");
        $("div#quickSearch").hide();
    }
    $("#sniperSuggestion").val("");
    $("#whatsearch").hide();
    $('#alertmsg').hide();

}
//}

function GoPage(page) {
    if (InputKeyword == "") {
        return;
    }
    clickLoggingTrace("103");
    iPage = page;
    getSearchPreview(InputKeyword, Domain, Parsing);
    getPager();

}

// 읽어온 총개수에 따라 페이저를 그려준다.
function getPager() {

    if (InputKeyword == "") {
        return;
    }
    if (iTotalCount < 1) {
        return;
    }

    var iStartPage = 0;
    var iEndPage = 0;
    var iPrevPage = 0;
    var iNextPage = 0;

    var sbPager = "";
    if (iTotalCount > 0) {
        iTotalPage = iTotalCount / iPageSize;

        if ((iTotalCount % iPageSize) > 0) {
            iTotalPage = iTotalPage + 1;
        }

        iStartPage = (iPage - (iPage % iDispPageCnt == 0 ? iDispPageCnt : iPage % iDispPageCnt)) + 1;

        if (iTotalPage < (iStartPage + (iDispPageCnt - 1)))
            iEndPage = iTotalPage;
        else
            iEndPage = iStartPage + (iDispPageCnt - 1);


        if (iStartPage > iDispPageCnt) {
            iPrevPage = iStartPage - 1;
            sbPager = sbPager + "<a href=\"javascript:GoPage(" + iPrevPage + ");\" class=\"nopd\"><img src=\"http://image.yes24.com/sysimage/gnb/b_prevpage.gif\" alt=\"이전페이지\"></a>";
        }

        for (var j = iStartPage; j <= iEndPage; j++) {
            if (j == iPage) {
                sbPager = sbPager + "<strong>" + j + "</strong>";
            }
            else {
                sbPager = sbPager + "<a href=\"javascript:GoPage(" + j + ");\">" + j + "</a>";
            }
        }

        if (iEndPage + 1 < iTotalPage) {
            iNextPage = iEndPage + 1;
            sbPager = sbPager + "<a href=\"javascript:GoPage(" + iNextPage + ");\" class=\"nopd\"><img src=\"http://image.yes24.com/sysimage/gnb/b_nextpage.gif\" alt=\"다음페이지\"></a>";
        }

        sbPager = sbPager + "<span> 검색결과 " + formatCurrency(iTotalCount) + "건</span>";
        sbPager = sbPager + "<a href=\"javascript:OffBulletSearch()\" class=\"nopd\"><img src=\"http://image.yes24.com/sysimage/gnb/b_AutoComplete_off.gif\" alt=\"기능끄기\" class=\"onoff\"></a>";
    }

    $("div#quickSearch>div#result>p.paging").html(sbPager);
    $("div#quickSearch>div#result").unbind("mouseover");
    bEnablePager = true;
}

// 검색결과를 불러온다.
function getTotalCount() {

    if (InputKeyword == "") {
        return;
    }

    var strKeyword = (escape(InputKeyword));
    if (strKeyword == "") {
        //$("#divPager").html("");
        InitPager();
        return;
    }

    $("div#quickSearch>div#result>p.paging").hide();

    SIDO = "SN";  //$("div.sort>select#ddlOrder").val();

    if (document.URL.toLowerCase().indexOf("edu.yes24.com", 0) != -1) {
        // 총수량을 올바르게 가져왔다면 페이저를 refresh해준다.
        $.getJSON("http://www.yes24.com/SearchCorner/Sniper/GetTotalCountJsonp?Query=" + strKeyword + "&Parsing=" + Parsing + "&Domain=" + Domain + "&callback=?", function (data) { iTotalCount = data.TotalCount; getPager(); });
    } else {
        // 총수량을 올바르게 가져왔다면 페이저를 refresh해준다.
        $.getJSON("/SearchCorner/Sniper/GetTotalCount", { Query: strKeyword, Parsing: Parsing, Domain: Domain }, function (data) { iTotalCount = data.TotalCount; getPager(); });
    }
}

// keypress에 대한 이벤트
function Check(e) {
    KeyCode = e.keyCode;
    switch (KeyCode) {
        case 38: // 위로
            istrick = false;
            if (KsanaIndex > 0) {
                KsanaIndex--;
            } else {
                KsanaIndex = KsanaCount - 1;
            }
            clickLoggingTrace("105");
            SelectItem();
            getTotalCount();
            break;
        case 40: // 아래로
            istrick = false;
            if (KsanaIndex < (KsanaCount - 1)) {
                KsanaIndex++;
            } else {
                KsanaIndex = 0;
            }
            clickLoggingTrace("105");
            SelectItem();
            getTotalCount();
            break;
        case 16: // 쉬프트, 아무액션없는 키들
        case 17: // 컨트롤
        case 18: // 알트
        case 37: // 좌
        case 39: // 우
        case 32: // 공백
            break;
        case 13: // enter;
            e.preventDefault();
            BackSpaceBarEvent();
            $("#HeadForm").submit();
            break;

        case 27: // ESC
            HideBulletSearch();
            break;

        case 8: // 백스페이스, 20101115 인프라 개발팀 이선우 추가
            BackSpaceBarEvent();
        default:
            BackSpaceBarEvent();
            break;
    }


}

/*파이어폭스에서 한글 키입력 자동완성 트릭*/
var db = "";
var istrick = true;
function trick() {
    if (!istrick) return; //커서이동하는것에서는 중지시킨당.

    if (db != $(InputTextBoxID).val()) {
        db = $(InputTextBoxID).val();
        BackSpaceBarEvent();
    } else {
    }
    setTimeout("trick()", 100);
}
/*파이어폭스 트릭 끝*/


function BackSpaceBarEvent() {

    if (UseBulletSearchEnabled == false) {
        return;
    }
    // 텍스트박스에 아무 내용이 없다면 레이어를 닫아준다.
    if (String($(InputTextBoxID).val()).length == 0) {
        HideBulletSearch();
        return;
    }

    if (UseBulletSearch == true) {

        if (BulletSearchReady == false) {
            ShowBulletSearch();
        }

        getRecommentList();
    }
}

// 크샤나, 목록중에 아이템을 선택한다.
function SelectItem() {
    $("div#quickSearch>div#sword>ul#recommentList>li.hilight").attr("class", ""); // 이전아이템의 컬러를 없애준다.
    $("div#quickSearch>div#sword>ul#recommentList>li#k" + String(KsanaIndex)).attr("class", "hilight"); // 선택된 아이템의 색상을 바꿔준다.

    // 실제 검색에 사용될 검색어를 수정한다.
    RealQuery = stripHTMLtag($("div#quickSearch>div#sword>ul#recommentList>li.hilight").text());

    // 스나이퍼 검색을 수행한다.
    iPage = 1;
    var kw = $("div#quickSearch>div#sword>ul#recommentList li#k" + String(KsanaIndex)).attr("kw");
    getSearchPreview(kw, Domain, false);
    //InitPager();
    InputKeyword = kw;
    $(InputTextBoxID).val(kw);
    $(InputTextBoxID).focus();

}

// 도메인 문자를 변환해주는 함수
function GetDomain(strDomain) {
    switch (strDomain) {
        case "00": case "0": return "전체";
            //case "01": case "1": return "국내도서";
        case "01": case "1": return "도서";
        case "02": case "2": return "외서";
        case "03": case "3": return "eBook";
        case "04": case "4": return "e러닝";
        case "05": case "5": return "음반";
        case "06": case "6": return "DVD";
        case "07": case "7": return "GIFT";
        case "08": case "8": return "화장품";
        case "전체": return "0";
        case "UsedGoods": return "0";
        case "국내도서": return "1";
        case "외국도서": return "2";
        case "eBook": return "3";
        case "e-러닝": return "4";
        case "음반": return "5";
        case "DVD/비디오": return "6";
        case "GIFT": return "7";
        case "화장품": return "8";
        default: return "99";
    }
}

// 페이징 초기화
function InitPager() {
    bEnablePager = false;
    $("div#quickSearch>div#result>p.paging").hide();
    $("div#quickSearch>div#sword>p#suggestion").hide();
    $("div#quickSearch>div#result>p.paging").html(
            "<a href=\"\" class=\"nopd\" id=\"aNextPage\"><img src=\"http://image.yes24.com/sysimage/gnb/b_nextpage.gif\" alt=\"다음페이지\"></a>" +
            "<a href=\"javascript:HideBulletSearch()\" class=\"nopd\"><img src=\"http://image.yes24.com/sysimage/gnb/b_AutoComplete_off.gif\" alt=\"기능끄기\" class=\"onoff\"></a>"
        );


    $("div#quickSearch>div#result").bind("mouseover",
                function () {
                    $("div#quickSearch>div#result").unbind("mouseover");
                    getTotalCount();
                    $("div#quickSearch>div#result>p.paging").show();
                }
            );
}

function ShowBulletSearch() {


    // 관련변수 초기화
    InputKeyword = "";
    iTotalCount = 0;
    Parsing = false;

    // display요소 초기화
    $("div#quickSearch>ul").html(" ");
    $("div#quickSearch>div#result>table").html(" ");
    InitPager();

    // SHOW
    //$("div#quickSearch").css("display", "");

    BulletSearchReady = true;

}

// 총알검색 기능 켜기
function EnableBulletSearch() {

    $(InputTextBoxID).focus();

    //    if (fnIsELearning()) { return; }

    if (UseBulletSearchEnabled == false) {
        return;
    }
    // 총알검색 기능이 꺼져있을때만 검색을 시작한다.
    //    if (UseBulletSearch == false) {
    //    UseBulletSearch = true;        
    // 기능켜기 버튼을 클릭시 항사 사용으로 변경
    UseBulletSearch = true;
    if (BulletSearchReady == false) {
        ShowBulletSearch();
    }
    // 총알검색 레이어가 안나오는 에러 수정 : 2011.02.23 by f4magnum
    //$("div#quickSearch").css("display", "");
    //getRecommentList();        
    setTimeout("$('div#quickSearch').css('display', '');getRecommentList();", 200);
    //}
}

// 총알검색 기능 끄기
function HideBulletSearch() {
    $("div#quickSearch").css("display", "none");
    // 총알검색 기능제거시 검색어 제거 안되게 수정 : 2011.02.23 by f4magnum
    //$(InputTextBoxID).val("");
    BulletSearchReady = false;
}

function OffBulletSearch() {
    $("div#quickSearch").css("display", "none");
    // 총알검색 기능제거시 검색어 제거 안되게 수정 : 2011.02.23 by f4magnum --
    //$(InputTextBoxID).val("");
    BulletSearchReady = false;
    UseBulletSearch = false;
    clickLoggingTrace("104");
}


function DebugDisplay() {

    var strHtml = " ";
    strHtml += "[입력키:" + KeyCode + "][입력delay]" + iKLimitGap + "ms  [상품출력delay]" + iLimitGap + "ms";
    strHtml += "<div>[검색결과쿼리] " + RealQuery + ",[S쿼리] " + InputKeyword + ", [형태소분석여부]" + Parsing + ", [검색회수]" + iSearchCount + "</div>";
    strHtml += "<div>[K검색회수] " + iKC + " [K무시회수] " + iKIgnoreCount + "</div>";
    strHtml += "<div>[S검색회수] " + iSC + " [K무시회수]" + iSIgnoreCount + "</div>";
    strHtml += "<div>[K타이머(" + oKTimer + ")제한회수] " + iKTimerIgnoreCount + " [S타이머(" + oTimer + ")제한회수] " + iTimerIgnoreCount + "</div>";

    $("div#divDebug").html(strHtml);
}

// 총알검색 초기화
function InitBulletSearch() {

    //    if (fnIsELearning()) { return; }

    $('body').click(function () {
        $("#sniperSuggestion").val("");
        $("#whatsearch").hide();
        $('#alertmsg').hide();
        $("div#quickSearch").hide();
    });

    $("div#quickSearch").click(function (event) {
        event.stopPropagation();
    });

    $(InputTextBoxID).click(function (event) {
        event.stopPropagation();
    });

    $(".suggestion").click(function () {
        $("#whatsearch").height($("#tbList").height());
        $("#whatsearch").show();
    });

    $(InputTextBoxID).click(function () {
        if (jQuery.trim($(InputTextBoxID).val()) != "") {
            BackSpaceBarEvent();
        }
        istrick = true; //파폭에서 입력받기 위해서 처리함.
    });

    // 디버그 모드일 경우
    if (DebugMode) {
        $("body").append("<div id=\"divDebug\" style=\"position:absolute;top:500px;left:0;border:solid 1px black;padding:10px;text-align:left;z-index:60000;background-color:white;\"></div>"
            + "<div style=\"position:absolute;top:460px;left:0;border:solid 1px black;padding:10px;text-align:left;z-index:60000;background-color:white;\"><input type='text' id='adLimit'/><input type='text' id='adSLimit'/><input type='button' value='설정' onclick='iKLimitGap=$(\"#adLimit\").val();iLimitGap=$(\"#adSLimit\").val();alert($(\"#adLimit\").val()+\"으로 설정되었습니다.\");'></div>"
        )
        $("#adLimit").val(iKLimitGap);
        $("#adSLimit").val(iLimitGap);
        setInterval("DebugDisplay()", 100);
    }

    if (document.URL.toLowerCase().indexOf("searchcenter", 0) != -1) {//검색페이지일경우에
        InitBulletSearchForSearchResult();
        return;
    }

    // 숨김처리
    var $pd = $("div#quickSearch");
    $pd.css("display", "none");

    // 키 이벤트 바인드
    //$(InputTextBoxID).bind(jQuery.browser.mozilla ? "keypress" : "keyup", function(e) { Check(e);});

    if (jQuery.browser.mozilla == true || jQuery.browser.opera == true) {
        $(InputTextBoxID).bind("keypress", function (e) {
            trick();
            Check(e);
        });
    } else {
        $(InputTextBoxID).bind("keyup", function (e) { Check(e); });
    }
    //	$(InputTextBoxID).bind("keyup", function(e) { Check(e); });

    $("#ddlCount").bind("change",
        function () {
            iPageSize = $("#ddlCount").val();
            iPage = 1;
            getSearchPreview(InputKeyword, Domain, Parsing);
        }
    );

    $("div#quickSearch").css("height", "290px");
    // 페이징 초기화
    //InitPager();

    // 위치조정
    $pd.css("top", $(InputTextBoxID).offset().top + 35);
    //$pd.css("left", 200); // $(InputTextBoxID).offset().left tb기준 390, cb기준 490
    $pd.css("z-index", "11000");
    $("#mainBn").css("z-index", "1000");
    $("div#search").css("z-index", "12000")
}



// 총알검색 초기화
function InitBulletSearchForSearchResult() {


    SearchFormID = "form#dqsearch";

    // 숨김처리
    var $pd = $("div#quickSearch");
    $pd.css("display", "none");

    // 키 이벤트 바인드
    //$(InputTextBoxID).bind(jQuery.browser.mozilla ? "keypress" : "keyup", function(e) { Check(e);});
    $(InputTextBoxID).bind("keyup", function (e) { Check(e); });

    /*
    $("div.sort>select#ddlOrder").bind("change",
    function() {
    iPage = 1;
    getSearchPreview(InputKeyword, Parsing);
    }
    );
    */

    $("#ddlCount").bind("change",
        function () {
            iPageSize = $("#ddlCount").val();
            iPage = 1;
            getSearchPreview(InputKeyword, Domain, Parsing);

        }
    );


    // 페이징 초기화
    InitPager();

    // 위치조정
    // $pd.css("top", $(InputTextBoxID).offset().top + 28);
    // $pd.css("left", $("select#qdomain").offset().left + 2098); // $(InputTextBoxID).offset().left tb기준 390, cb기준 490
    // $pd.css("z-index", "11000");
}

// 카트에 상품을 담는 함수
function InsertCartAjax(GoodsNo) {
    clickLoggingTrace("102");
    jQuery.ajax({
        url: "/Order/FTCartReg.aspx?IsAjaxRequest=Y&AllGoodsNo=" + GoodsNo,
        success: function (data) {
            if (String(data).length != 0 && String(data).charAt(0) == '1') {
                $("#alertmsg").show();
            }
            else {
                alert('카트담기 실패');
            }
        },
        error: function () { alert('카트담기 실패'); }
    });
}

// 통화형식으로 변환해준다.
function formatCurrency(num) {
    num = num.toString().replace(/\$|\,/g, '');
    if (isNaN(num))
        num = "0";

    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num * 100 + 0.50000000001);
    cents = num % 100; num = Math.floor(num / 100).toString();

    if (cents < 10)
        cents = "0" + cents;

    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
        num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));

    return (((sign) ? '' : '-') + num);
}

// 검색결과 페이지로 이동한다.(1 인기도순 2 정확도순(SIDO) )
function OZSearch(qsort) {

    // 쿼리 텍스트박스의 텍스트를 바꿔준다.
    $(InputTextBoxID).val(RealQuery);

    $(SearchFormID + " input#qsort").val(qsort);
    $(SearchFormID)[0].submit();
}


// 검색결과 페이지로 이동한다.(1 인기도순 2 정확도순(SIDO) )
function OZSearch(qsort, query) {

    $(InputTextBoxID).val(stripHTMLtag(query));

    $(SearchFormID + " input#qsort").val(qsort);
    $(SearchFormID)[0].submit();
}

// HTML을 제거해주는 함수
function stripHTMLtag(string) {
    var objStrip = new RegExp();
    objStrip = /[<][^>]*[>]/gi;
    return string.replace(objStrip, "");
}

//글자를 byte단위로 잘라준다.
function NSubstring(str, len) {
    var s = 0;
    for (var i = 0; i < str.length; i++) {
        s += (str.charCodeAt(i) > 128) ? 2 : 1;
        if (s > len) {
            return str.substring(0, i);
        }
    }
    return str;
}

function SubmitSuggestion() {
    var sug = $("#sniperSuggestion").val();
    var strKeyword = $(InputTextBoxID).val();

    if (sug == "") {
        alert("내용을 적어주세요!");
        $("#sniperSuggestion").focus();
        return;
    }
    if (confirm("감사합니다.\n\r더 좋은 검색을 위해 노력하는 YES24가 되겠습니다.") == false) {
        $("#whatsearch").hide();
        return;
    }
    $.post("/SearchCorner/SearchCenter/AddSearchSuggestion", { SearchWord: (escape(strKeyword)), Suggestion: (escape(sug)) }, function (data) {
        if (data != "T") {
            alert("오류가 발생했습니다.");
        }
        $("#sniperSuggestion").val("");
        $("#whatsearch").hide();
    });


}

// 이러닝일경우 총알검색 기능(레이어) 제거 - 추후 수정후 제거예정 (f4magnum)
//function fnIsELearning() {
//    if (location.href.toUpperCase().indexOf("EDU.YES24.COM") > -1) {
//        return true;
//    }
//    return false;
//}


$(document).ready(InitBulletSearch);

//
// 저자정보를 파싱해주는 Function
//
function fnConvertAuthorInfo(strProductAuthor, res_GB, param) {
    var strResult = "";
    var strTemp = "";
    var strMirror = "";
    var intCurPos = 0;
    var intEndPos = 0;
    var qdomain = "";
    var domain = "ALL";

    strResult = strProductAuthor;

    switch (Number(res_GB)) {
        case 1: case 7: case 8: case 11: case 12: case 23: case 24:
            qdomain = "국내도서";
            break;
        case 2: case 35: case 36: case 22:
            qdomain = "외국도서";
            break;
        case 3:
            qdomain = "음반";
            break;
        case 4: case 5: case 9: case 10: case 15: case 16:
            qdomain = "DVD/비디오";
            break;
        case 6: case 14: case 19: case 17:
            qdomain = "GIFT";
            break;
        case 25: case 26:
            qdomain = "화장품";
            break;
        case 27:
            qdomain = "e-러닝";
            break;
    }

    strResult = strResult.replace(/<b>/g, "");
    strResult = strResult.replace(/<\/b>/g, "");

    strMirror = strResult;
    intCurPos = 0;

    intCurPos = strMirror.indexOf("<");

    //debugger;
    //표식이 있는 경우에만 링크를 걸어준다.
    while (intCurPos >= 0) {
        intEndPos = strMirror.indexOf(">", intCurPos);
        if (intEndPos > 0) {
            //strTemp = strMirror.substring(intCurPos + 1, intEndPos - intCurPos - 1);
            strTemp = strMirror.substring(intCurPos + 1, intEndPos);
            // SearchCenter로 가는 에러
            //strResult = strResult.Replace("<" + strTemp + ">", "<a href=\"/searchCenter/searchResult.aspx?query=" + strTemp + "&qdomain=" + qdomain + param + "\" class='m'>" + strTemp + "</a>");            
            strResult = strResult.replace("<" + strTemp + ">", "<a href=\"/SearchCorner/Result?query=" + strTemp.replace(/&/g, "") + "&author_yn=Y&domain=" + domain + param + "\" class='m'>" + strTemp + "</a>");
            intCurPos = intEndPos;
            intCurPos = strMirror.indexOf("<", intCurPos);
        }
        else {
            break;
        }
    }
    var arrTemp = strResult.split('`');
    if (arrTemp.length >= 2) {
        if (arrTemp[0].length > 0 && arrTemp[1].length > 0) {
            //작가파일 정보를 뺀다. 박영빈 2007-11-21
            if (qdomain == "국내도서" || qdomain == "외국도서") {
                strResult = arrTemp[0];
            } else {
                strResult = strResult.replace("`", " / ");
            }
        } else {
            strResult = strResult.replace("`", "");
        }
    } else {
        strResult = arrTemp[0];
    }
    return strResult;
}
