﻿// ************************* 공통 변수 **************************************************** //

var mini_xmlUrl = "/xmlgroup/mini_cart/";
var mini_fileName = "";
var mini_params = "";
var mini_fullXmlUrl = "";

var photo_layer = null;
var cMode = "";
var cPrdtCd = "";
var cPscSeq = "";
var cOptions = "";
var chkYn = "N";
var cObjNumber = 0;

var cartPixel = 100;        //미니카트 상품 높이(단위 : 픽셀)
var hLength = 3;            //한 페이지당 출력 상품 개수
var totalCart = 0;          //장바구니 상품 전체
var endPixel = 0;           //상품의 마지막 픽셀 위치
var pageNum = 999;          //총 페이지 수
var pageCur = 1;            //현재 페이지
var photo_body = null       //미니카트 몸체 DIV
var photo_layer = null      //미니카트 내용 DIV

// **************************************************************************************** //

//////////미니카트 Ajax 처리 함수
function ajaxMiniCart(mode, prdtCd, pscSeq, options, num)
{
    cMode = mode;       //액션처리 모드 초기화
    cPrdtCd = prdtCd;   //액션처리 아이디 초기화
    cPscSeq = pscSeq;   //장바구니번호 초기화
    cOptions = options; //옵션 초기화
    cObjNumber = num;
    
    if(prdtCd == "")    return;
    
    if(!setVariables()) return;
    miniCartLoading(mini_fullXmlUrl, "get", mini_params);
}

//////////////////초기화 함수
function setVariables()
{
    photo_layer = document.getElementById("photo_layer");
    
    switch(cMode) {
    case "VIEW" :   //미니카트 컨텐츠 가져오기
    case "REP" :
    case "REP_2" :
        mini_fileName = "miniCartList.aspx";
        mini_fullXmlUrl = mini_xmlUrl + mini_fileName;
        mini_params = "";
        break;
    case "UP" :     //미니카트 상품 수량 더하기
        var cnt = parseInt(document.getElementById("textfield_" + cObjNumber).value);
        if(cnt >= 99) { alert("최대 99개까지 입력 가능합니다."); return false; }
        cnt = cnt + 1;
        mini_fileName = "miniCartCnt.aspx";
        mini_fullXmlUrl = mini_xmlUrl + mini_fileName;
        mini_params = "strPrdtCd=" + cPrdtCd + "&strAmount=" + cnt + "&strOption=" + encodeURIComponent(cOptions);
        break;
    case "DOWN" :   //미니카트 상품 수량 빼기
        var cnt = parseInt(document.getElementById("textfield_" + cObjNumber).value);
        if(cnt <= 1) { alert("최소 1개까지 입력 가능합니다."); return false; }
        cnt = cnt - 1;
        mini_fileName = "miniCartCnt.aspx";
        mini_fullXmlUrl = mini_xmlUrl + mini_fileName;
        mini_params = "strPrdtCd=" + cPrdtCd + "&strAmount=" + cnt + "&strOption=" + encodeURIComponent(cOptions);
        break;
    case "INPUT" :
        if(document.getElementById("textfield_" + cObjNumber).value == "") {
            document.getElementById("textfield_" + cObjNumber).value = "1";
        }
        var cnt = parseInt(document.getElementById("textfield_" + cObjNumber).value);
        if(cnt < 1) { document.getElementById("textfield_" + cObjNumber).value = "1"; }
        mini_fileName = "miniCartCnt.aspx";
        mini_fullXmlUrl = mini_xmlUrl + mini_fileName;
        mini_params = "strPrdtCd=" + cPrdtCd + "&strAmount=" + cnt + "&strOption=" + encodeURIComponent(cOptions);
        break;    
    case "CHECK" :  //미니카트 상품 체크
        mini_fileName = "miniCartCheck.aspx";
        mini_fullXmlUrl = mini_xmlUrl + mini_fileName;
        mini_params = "strPrdtCd=" + cPrdtCd + "&selectYn=" + chkYn + "&strOption=" + encodeURIComponent(cOptions);
        break;
    case "DEL" :    //미니카트 상품 삭제
        mini_fileName = "miniCartDel.aspx";
        mini_fullXmlUrl = mini_xmlUrl + mini_fileName;
        mini_params = "strPrdtCd=" + cPrdtCd + "&strPscSeq=" + cPscSeq + "&strOption=" + encodeURIComponent(cOptions);
        break;
    case "WISH" :   //미니카트 찜리스트에 추가
        mini_fileName = "miniCartAddWIsh.aspx";
        mini_fullXmlUrl = mini_xmlUrl + mini_fileName;
        mini_params = "strPrdtCd=" + cPrdtCd + "&strPscSeq=" + cPscSeq;
        break;
    }
    return true;
}

//////////////ajax 로딩
function miniCartLoading(url, method, pars)
{
    var isFail = false;
    
    if(cMode == "VIEW") {
        document.getElementById("photo_layer").innerHTML = "";
        var cnt = getTopCartCnt();
        getMiniCart(cnt);
    }
    
    $('basket_body').startWaiting('bigBlackWaiting');
    
    new Ajax.Request(url,
        {
            method : method,
            parameters : pars,
            onLoading  : function() {
                //$('basket_body').startWaiting('bigBlackWaiting');
            },
            onSuccess  : function(returnValue)
            {
                var xmlDoc = returnValue.responseXML;
                var contents = "";
                if(cMode == "VIEW" || cMode == "REP" || cMode == "REP_2") {
                    var nodeLen = xmlDoc.childNodes[1].getElementsByTagName("list").length;
                    
                    for(var i=0; i<nodeLen; i++) {
                        var arrDate = new Array(14);
                        for(var j=0; j<arrDate.length; j++) {
                            arrDate[j] = xmlDoc.childNodes[1].getElementsByTagName("list")[i].attributes[j].text;
                        }
                        
                        contents += miniCartContent(arrDate, i+1);
                        arrDate = null;
                    }
                
                } else {
                    contents = xmlDoc.childNodes.item(1).text;
                }
                
                isFail = miniCartAction(contents);
            },
            onFailure  : function() {
                alert("다시시도하세요.");
                isFail = true;
            },
            onComplete : function() {
                $('basket_body').stopWaiting('bigBlackWaiting');
                
                if(cMode == "DEL") {
                    var checkbox = document.getElementsByName("checkbox");
                    var totalCnt = checkbox.length;
                    var checkCnt = 0;
                    for(var i=0; i<totalCnt; i++) {
                        if(checkbox[i].checked) {
                            checkCnt = checkCnt + 1;
                        }
                    }
                    
                    if(!isFail) {
                        var cnt = totalCnt - checkCnt;
                        if(cnt == 0)    cnt = 1;
                        setTopCartCnt(cnt);
                        if(cMode == "DEL") {
                            ajaxMiniCart("REP", null, null);
                        }/* else if(cMode == "WISH") {
                            ajaxMiniCart("REP_2", null, null);
                        }*/
                    }
                } else if(cMode == "REP" || cMode == "REP_2") {
                    var checkbox = document.getElementsByName("checkbox");
                    var totalCnt = checkbox.length;
                    var checkCnt = 0;
                    for(var i=0; i<totalCnt; i++) {
                        if(checkbox[i].checked) {
                            checkCnt = checkCnt + 1;
                        }
                    }
                    
                    var cnt = totalCnt - checkCnt;
                    if(cnt > 0) {
                        if(cMode == "REP") {
                            alert("삭제되었습니다.");
                        }
                    } else {
                        //DelCookie("CART_ID");
                        alert("장바구니가 비었습니다.");
                        setTopCartCnt(0);
                        closeMiniCart();
                    }
                }
            }
        });
}

////////////////미니카트 액션 수행
function miniCartAction(contents)
{
    switch(cMode) {
    case "VIEW" :
    case "REP" :
    case "REP_2" :
        photo_layer.innerHTML = contents;
        var cnt = getTopCartCnt();
        getMiniCart(cnt);
        break;
    case "UP" :
    case "DOWN" :
    case "INPUT" :
        //제품수량 변경 실패일 경우
        if(contents == "FAIL") {
            alert("DB 업데이트 오류입니다.");
            return true;
        } else {
            calculater();
        }
        break;
    case "CHECK" :
        if(contents == "FAIL") {
            alert("DB 업데이트 오류입니다.");
            return true;
        }
        break;
    case "DEL" :
        if(contents == "FAIL") {
            alert("DB 업데이트 오류입니다.");
            return true;
        } else {

        }
        break;
    case "WISH" :
        if(contents == "FAIL") {
            alert("DB 업데이트 오류입니다.");
            return true;
        } else if(contents == "MEMBER") {
            alert("로그인 후 이용하세요.");
            return true;
        } else if(contents == "LIKE") {
            alert("이미 추가된 상품입니다.");
            return true;
        } else {
            showWidgetWish();
        }
        break;
    }
    return false;
}

///////////////제품수량 변경(UI)
function calculater()
{
    var textfield = document.getElementById("textfield_" + cObjNumber);
    var cnt = parseInt(textfield.value);
    
    if(cMode == "UP") {              //수량 더하기
        textfield.value = cnt + 1;
    } else if(cMode == "DOWN") {     //수량 빼기
        textfield.value = cnt - 1;
    }
    
    getTotalPrice();
}

////////////장바구니 전체선택(해제)
function selectAll()
{
    var checkbox = document.getElementsByName("checkbox");
    var prdtCd = "";
    var pscSeq = "";
    var opt = "";
    
    var selNum = "";
    for(var i=0; i<checkbox.length; i++) {
        var arrId = checkbox[i].id.split("_");
        if(arrId[4] == "01" || arrId[4] == "02") {
            selNum = i + ",";
        }
    }
    
    selNum = selNum.substring(0, selNum.length - 1);
    chkYn = "N";
    
    if(selNum == "")    return;
    
    var arrNum = selNum.split(",");
    //전체선택, 전체해제 판별
    for(var i=0; i<arrNum.length; i++) {
        if(!checkbox[arrNum[i]].checked)
        {
            chkYn = "Y";
            break;
        }
    }
    
    //체크된 상품번호 구분자 문자열 생성 (※ checkbox[i].id 구조 : 아이디명_상품번호_장바구니번호_옵션_상품판매상태)
    for(var i=0; i<checkbox.length; i++) {
        var arrVal = checkbox[i].id.split("_");
        
        //정상 판매중인 상품일 경우
        if(arrVal[4] == "01" || arrVal[4] == "02") {
            prdtCd += arrVal[1] + ",";
            pscSeq += arrVal[2] + ",";
            opt += arrVal[3] + ",";
            status += arrVal[4] + ",";
        }
        
        if(chkYn == "Y") {
            checkbox[i].checked = true;
        } else {
            checkbox[i].checked = false;
        }
        
        //정상 판매중인 상품이 아닐경우 선택해제
        if(arrVal[4] != "01" && arrVal[4] != "02") {
            checkbox[i].checked = false;
        }
    }
    
    prdtCd = prdtCd.substring(0, prdtCd.length - 1);
    pscSeq = pscSeq.substring(0, pscSeq.length - 1);
    opt = opt.substring(0, opt.length - 1);
    
    ajaxMiniCart("CHECK", prdtCd, pscSeq, opt);
    getTotalPrice();
}

/////////////////장바구니 직접 선택(해제)
function selectSingle(checkbox)
{
    var arrVal = checkbox.id.split("_");
    if(checkbox.checked) {
        chkYn = "Y";
    } else {
        chkYn = "N";
    }
    
    ajaxMiniCart("CHECK", arrVal[1], arrVal[2], arrVal[3]);
    getTotalPrice();
}

/////////////체크 여부 확인
function isCheck()
{
    var checkbox = document.getElementsByName("checkbox");
    var checkCnt = 0;
    
    for(var i=0; i<checkbox.length; i++) {
        if(checkbox[i].checked) {
            checkCnt = checkCnt + 1;
        }
    }
    
    if(checkCnt == 0) {
        alert("상품을 선택하세요.");
        return false;
    }
    return true;
}

///////////장바구니 선택삭제
function selectDel()
{
    var checkbox = document.getElementsByName("checkbox");
    var prdtCd = "";
    var pscSeq = "";
    var options = "";
    
    if(!isCheck())  return;
    
    //체크된 상품번호 구분자 문자열 생성 (※ checkbox[i].id 구조 : 아이디명_상품번호_장바구니번호_옵션)
    for(var i=0; i<checkbox.length; i++) {
        if(checkbox[i].checked) {
            var arrVal = checkbox[i].id.split("_");
            prdtCd += arrVal[1] + ",";
            pscSeq += arrVal[2] + ",";
            options += arrVal[3] + ",";
        }
    }
    
    prdtCd = prdtCd.substring(0, prdtCd.length - 1);
    pscSeq = pscSeq.substring(0, pscSeq.length - 1);
    options = options.substring(0, options.length - 1);
    
    ajaxMiniCart("DEL", prdtCd, pscSeq, options);
}

////////////장바구니 상품 찜리스트에 추가
function addWishList()
{
    var checkbox = document.getElementsByName("checkbox");
    var prdtCd = "";
    var pscSeq = "";
    
    if(!isCheck())  return;
    
    for(var i=0; i<checkbox.length; i++) {
        if(checkbox[i].checked) {
            var arrVal = checkbox[i].id.split("_");
            prdtCd += arrVal[1] + ",";
            pscSeq += arrVal[2] + ",";
        }
    }
    
    prdtCd = prdtCd.substring(0, prdtCd.length - 1);
    pscSeq = pscSeq.substring(0, pscSeq.length - 1);
    
    ajaxMiniCart("WISH", prdtCd, pscSeq);
}

////////상품 가격 총 합계
function getTotalPrice()
{
    var divTotalOrderPrice = document.getElementById("divTotalOrderPrice");
    var checkbox = document.getElementsByName("checkbox");
    var textfield = document.getElementsByName("textfield");
    
    var totPrice = 0;
    for(var i=0; i<checkbox.length; i++) {
        if(checkbox[i].checked) {
            var price = parseInt(checkbox[i].alt.replace(/\,/g, ""));
            var cnt = parseInt(textfield[i].value);
            totPrice += price * cnt;
        }
    }
    
    divTotalOrderPrice.innerText = addComma(String(totPrice));
}

////////////총 금액 콤마 추가
function addComma(price)
{
    factor = price.length % 3;
    su = (price.length - factor) /3;
    src = price.substring(0, factor);

    for(i=0; i<su ; i++) {
        if((factor==0)&&(i==0)){// " XXX "인 경우
            src += price.substring(factor+(3*i), factor+3+(3*i));
        } else {
            src +=",";
            src += price.substring(factor+(3*i), factor+3+(3*i));
        }
    }
    return src;
}

//////////// 미니카트 슬라이딩
function do_move(mode)
{
    if(mode == "PREV") {
        if(photo_layer.style.pixelTop == 0) {
            //alert("첫번째 상품입니다.");
            return;
        }
        
        pageCur -= 1;   //현재 페이지 설정
        photo_body.style.height = cartPixel * hLength;      //레이어 크기 조절
        photo_layer.style.pixelTop += cartPixel * hLength;  //이전 페이지 이동
    } else if(mode == "NEXT") {
        if(photo_layer.style.pixelTop == endPixel) {
            //alert("마지막 상품입니다.");
            return;
        }
        
        pageCur += 1;
        photo_layer.style.pixelTop -= cartPixel * hLength;
    }
    
    if(pageCur == pageNum) { //마지막 페이지 일 경우
        if((totalCart % hLength) == 0) {
            photo_body.style.height = cartPixel * hLength;
        } else {
            photo_body.style.height = cartPixel * (totalCart % hLength);
        }
    }
    
    var page_span = document.getElementById("page_span");
    page_span.innerText = "(" + pageCur + "/" + pageNum + ")";
}

////////////////미니카트 리스트출력
function getMiniCart(cnt)
{
    photo_body = document.getElementById("photo_body");
    photo_layer = document.getElementById("photo_layer");
    totalCart = cnt;
    
    if(cMode == "VIEW") {
        photo_layer.style.pixelTop = 0; //최상위 상품위치로 초기화
        pageCur = 1;                    //현재 페이지 번호
    }
    
    if(totalCart < hLength) {
        photo_body.style.height = cartPixel * totalCart; //미니카트 크기 조절
        pageNum = 1; //총 페이지 수 설정
        endPixel = 0; //마지막 픽셀위치 설정
    }
    else {
        photo_body.style.height = cartPixel * hLength;
        pageNum = Math.ceil(totalCart/hLength);
        endPixel = ((-cartPixel) * hLength) * (pageNum-1);
    }
    
    if(pageCur >= pageNum) { //마지막 페이지 일 경우
        if((totalCart % hLength) == 0) {
            photo_body.style.height = cartPixel * hLength;
        } else {
            photo_body.style.height = cartPixel * (totalCart % hLength);
        }
        endPixel = ((-cartPixel) * hLength) * (pageNum-1);
        photo_layer.style.pixelTop = endPixel;
        pageCur = pageNum;
    }
    
    var page_span = document.getElementById("page_span");
    page_span.innerText = "(" + pageCur + "/" + pageNum + ")";
    
    miniCartCall(); //미니카트 레이어 출력
    getTotalPrice();
}

/////////////////체크된 상품 개수
function getCheckGoods()
{
    var checkbox = document.getElementsByName("checkbox");
    var chkCnt = 0;
    
    //전체선택, 전체해제 판별
    for(var i=0; i<checkbox.length; i++) {
        if(checkbox[i].checked) {
            chkCnt = chkCnt + 1;
        }
    }
    return chkCnt;
}

function miniCartContent(arrData, num)
{
    //상품판매상태 체크
    var clickEvent = "";
    switch(arrData[12]) {
    case "" :               //기본값
    case "01" :             //판매중
    case "02" :             //예약판매
        clickEvent = "selectSingle(this);";
        break;
    case "03" :             //일시품절
        clickEvent = "alert('일시품절된 상품입니다.'); this.checked = false;";
        break;
    case "04" :             //품절
        clickEvent = "alert('품절된 상품입니다.'); this.checked = false;";
        break;
    case "05" :             //절판
        clickEvent = "alert('절판된 상품입니다.'); this.checked = false;";
        break;
    case "06" :             //출간예정
        clickEvent = "alert('출간예정인 상품입니다.'); this.checked = false;";
        break;
    case "07" :             //판매중지
        clickEvent = "alert('판매가 중지된 상품입니다.'); this.checked = false;";
        break;
    case "08" :             //판매금지
        clickEvent = "alert('판매가 금지된 상품입니다.'); this.checked = false;";
        break;
    case "09" :             //판매금지(제재적용)
        clickEvent = "alert('판매가 금지(제재적용)된 상품입니다.'); this.checked = false;";
        break;
    }
    
    var strContent = ""
        + "<table width=\"180\" height=\"100\"><!-- 리스트1 -->"
        + "    <tr>"
        + "        <td class=\"rp3\">"
        + "            <input type=\"checkbox\" name=\"checkbox\" id=\"checkbox_" + arrData[7] + "_" + arrData[9] + "_" + arrData[11] + "_" + arrData[12] + "\" alt=\"" + arrData[5] + "\" class=\"etc\" onclick=\"" + clickEvent + "\" " + arrData[8] + ">"
        + "        </td>"
        + "        <td class=\"rp10\"><a href=\"" + arrData[1] + "\"><img src=\"" + arrData[0] + "\" width=\"60px\" height=\"88px\" title=\"" + arrData[2] + "\" style=\"border:solid 1px #e7e7e7\"></a></td>"
        + "        <td width=\"100\" align=\"left\">"
        + "            <table>"
        + "                <tr>"
        + "                    <td align=\"left\" class=\"ktext01\">" + arrData[10] + "<a href=\"" + arrData[1] + "\" title=\"" + arrData[2] + "\">" + fncom_chk_strlength_cut(13, arrData[2]) + "</a></td>"
        + "                </tr>"
        + "                <tr>"
        + "                    <td align=\"left\" class=\"ktext07 tp3\">" + fncom_chk_strlength_cut(6, arrData[3]) + " | " + fncom_chk_strlength_cut(6, arrData[4]) + "</td>"
        + "                </tr>"
        + "                <tr>"
        + "                    <td align=\"left\" class=\"ktext01 tp3\">" + arrData[5] + "원</td>"
        + "                </tr>"
        + "                <tr>"
        + "                    <td align=\"left\" class=\"tp3\">";
        
    //일반 도서일 경우
    if(arrData[10] == "") {
        //디지털 상품일 경우
        if(arrData[13] == "Y") {
            strContent += ""
                + "                        <table>"
                + "                            <tr>"
                + "                                <td><input type=\"text\" name=\"textfield\" id=\"textfield_" + num + "\" class=\"input7\" readonly value=\"" + arrData[6] + "\"></td>"
                + "                                <td class=\"lp2\"><img src=\"/images/common/arrow07.gif\" onclick=\"alert('디지털 상품은 1개의 수량만 주문가능합니다.')\" style=\"cursor:pointer\"><br><img src=\"/images/common/arrow08.gif\" class=\"tm1\" onclick=\"alert('디지털 상품은 1개의 수량만 주문가능합니다.')\" style=\"cursor:pointer\"></td>"
                + "                                <td class=\"ktext00 lp6\">개</td>"
                + "                            </tr>"
                + "                        </table>";
        }
        else {
            strContent += ""
                + "                        <table>"
                + "                            <tr>"
                + "                                <td><input type=\"text\" name=\"textfield\" id=\"textfield_" + num + "\" class=\"input7\" value=\"" + arrData[6] + "\" onkeydown=\"isNumber()\" maxlength=\"2\" onblur=\"javascript:ajaxMiniCart('INPUT', '" + arrData[7] + "', '" + arrData[9] + "', '" + arrData[11] + "', " + num + ")\" style=\"ime-mode:disabled\"></td>"
                + "                                <td class=\"lp2\"><a href=\"javascript:ajaxMiniCart('UP', '" + arrData[7] + "', '" + arrData[9] + "', '" + arrData[11] + "', " + num + ")\"><img src=\"/images/common/arrow07.gif\"></a><br><a href=\"javascript:ajaxMiniCart('DOWN', '" + arrData[7] + "', '" + arrData[9] + "', '" + arrData[11] + "', " + num + ")\"><img src=\"/images/common/arrow08.gif\" class=\"tm1\"></a></td>"
                + "                                <td class=\"ktext00 lp6\">개</td>"
                + "                            </tr>"
                + "                        </table>";
        }
    } else {
        strContent += ""
            + "                        <table>"
            + "                            <tr>"
            + "                                <td><input type=\"text\" name=\"textfield\" id=\"textfield_" + num + "\" class=\"input7\" readonly value=\"" + arrData[6] + "\"></td>"
            + "                                <td class=\"lp2\"><img src=\"/images/common/arrow07.gif\" onclick=\"alert('ebook 도서는 1개의 수량만 주문가능합니다.')\" style=\"cursor:pointer\"><br><img src=\"/images/common/arrow08.gif\" class=\"tm1\" onclick=\"alert('ebook 도서는 1개의 수량만 주문가능합니다.')\" style=\"cursor:pointer\"></td>"
            + "                                <td class=\"ktext00 lp6\">개</td>"
            + "                            </tr>"
            + "                        </table>";
    }
    
    strContent += ""
        + "                    </td>"
        + "                </tr>"
        + "            </table>"
        + "        </td>"
        + "    </tr>"
        + "</table>";
        
    // [0] : 이미지경로
    // [1] : 상세보기 페이지 경로
    // [2] : 도서명
    // [3] : 저자명
    // [4] : 출판사
    // [5] : 상품가격
    // [6] : 상품개수
    // [7] : 상품번호
    // [8] : 체크박스 체크 여부
    // [9] : 장바구니 번호
    // [10] : Ebook 여부
    // [11] : 옵션
    // [12] : 상품판매상태
    // [13] : 디지털상품여부
    
    return strContent;
}
