//-----------------------------------------------------------------
// ヤマサキ公式サイト
// カートシステム JavaScript
// 【※クッキーの処理などはMainScript.jsに記載】
// 外部関数
// ・MainScript.js
// CookieWrite
// CookieRead
// CookieDelete
// NumFormat
//-----------------------------------------------------------------
//---------- 共通変数 ----------//
// Ajax用
var last_modified = "Thu, 01 Jun 1970 00:00:00 GMT";

// GetCartData.aspxのパス
var val_GetCartData_PATH = "GetCartData.aspx";

// Shop用のパス
var val_GetCartData_PATH_S = "";

// COJP置換用
var val_CoJpPort = ".co.jp/";

// カート内容表示処理内容
var mode_CART_LIST = 0;

// カート内容表示処理フラグ
var call_CART_HEIGHT = false;

// カート内容表示現高さ
var val_CART_HEIGHT = 0;

// カート内容表示高さ
var val_CART_HEIGHT_MAX = 62;

// カート内容表示変更開始時間
var val_CART_CHANGE_TIME_ST = 0;

// カート内容表示切り替え時間(ミリ秒)
var val_CART_CHANGE_TIME = 300;

// カート記録点数
var val_CART_MAX_COUNT = 20;

// カート点数オーバーエラーメッセージ
var val_CART_COUNT_OVER_MSG = "一度の注文では20点以上購入できません。";

// カート数量未選択エラーメッセージ
var val_CART_COUNT_NONSELECT_MSG = "購入数量を選択してください。";
//------------------------------//

//----------------------------------------------------
// 関数名：CartInit
// 概要　：カート初期処理
// 説明　：カート情報表示部を初期化する。
//----------------------------------------------------
function CartInit(GetCartData_PATH)
{
    val_GetCartData_PATH = GetCartData_PATH + "GetCartData.aspx";
    val_GetCartData_PATH_S = GetCartData_PATH;
    var eleCART_LOAD = document.getElementById("CART_LOAD");
    eleCART_LOAD.style.display = "";
    var elebox = document.getElementById("box");
    elebox.style.backgroundColor = "#FFFF88";
    LoadCart();
    eleCART_LOAD.style.display = "none";
    elebox.style.backgroundColor = "";
    var eleCART_MAIN = document.getElementById("CART_MAIN");
    eleCART_MAIN.style.display = "";
    var eleCART_POINT = document.getElementById("CART_POINT");
    eleCART_POINT.style.display = "";
}

//----------------------------------------------------
// 関数名：CartOpenClose
// 概要　：カート表示切替
// 説明　：カート表示切替を行う。
//----------------------------------------------------
function CartOpenClose()
{
    var eleCART_LIST = document.getElementById("CART_LIST");
    switch(mode_CART_LIST)
    {
        case 0:
            eleCART_LIST.style.display = "";
            mode_CART_LIST = 1;
            val_CART_HEIGHT = parseInt(eleCART_LIST.style.height.substring(0, eleCART_LIST.style.height.length - 2));
            val_CART_CHANGE_TIME_ST = new Date().getTime();
            val_CART_CHANGE_TIME_ST = val_CART_CHANGE_TIME_ST - val_CART_CHANGE_TIME * (val_CART_HEIGHT / val_CART_HEIGHT_MAX);
            break;
        case 1:
            mode_CART_LIST = 0;
            val_CART_HEIGHT = parseInt(eleCART_LIST.style.height.substring(0, eleCART_LIST.style.height.length - 2));
            val_CART_CHANGE_TIME_ST = new Date().getTime();
            val_CART_CHANGE_TIME_ST = val_CART_CHANGE_TIME_ST - val_CART_CHANGE_TIME * ((val_CART_HEIGHT_MAX - val_CART_HEIGHT) / val_CART_HEIGHT_MAX);
            break;
        default:
            eleCART_LIST.style.display = "none";
            mode_CART_LIST = 0;
            val_CART_HEIGHT = 0;
            break;
    }
    if(!call_CART_HEIGHT)
    {
        call_CART_HEIGHT = true;
        Disp_CART_LIST();
    }
}

//----------------------------------------------------
// 関数名：Disp_CART_LIST
// 概要　：カート内容表示高さ変更
// 説明　：カート内容表示高さを変更する。
//----------------------------------------------------
function Disp_CART_LIST()
{
    var eleCART_LIST = document.getElementById("CART_LIST");
    switch(mode_CART_LIST)
    {
        case 0:
            val_CART_HEIGHT = val_CART_HEIGHT_MAX - (new Date().getTime() - val_CART_CHANGE_TIME_ST) * (val_CART_HEIGHT_MAX / val_CART_CHANGE_TIME);
            if(val_CART_HEIGHT > 0)
            {
                eleCART_LIST.style.height = parseInt(val_CART_HEIGHT) + "px";
                setTimeout('Disp_CART_LIST()', 1);
            }
            else
            {
                val_CART_HEIGHT = 0;
                eleCART_LIST.style.height = "0px";
                eleCART_LIST.style.display = "none";
                call_CART_HEIGHT = false;
            }
            break;
        case 1:
            val_CART_HEIGHT = (new Date().getTime() - val_CART_CHANGE_TIME_ST) * (val_CART_HEIGHT_MAX / val_CART_CHANGE_TIME);
            if(val_CART_HEIGHT < val_CART_HEIGHT_MAX)
            {
                eleCART_LIST.style.height = parseInt(val_CART_HEIGHT) + "px";
                setTimeout('Disp_CART_LIST()', 1);
            }
            else
            {
                eleCART_LIST.style.height = val_CART_HEIGHT_MAX + "px";
                call_CART_HEIGHT = false;
            }
            break;
        default:
            eleCART_LIST.style.height = "0px";
            call_CART_HEIGHT = false;
            break;
    }
}

//----------------------------------------------------
// 関数名：LoadCart
// 概要　：カート内容更新
// 説明　：カート内容をクッキーから読み込み、
// 　　　　表示を更新する。
//----------------------------------------------------
function LoadCart()
{
    var xmlHttp = null;
    if (window.XMLHttpRequest)
    {
        // IE7,Firefox, Safari
        xmlHttp = new XMLHttpRequest();
    }
    else
    {
        try
        {
            // IE6
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(e)
        {
            try
            {
                // IE5
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e)
            {
                xmlHttp = null;
            }
        }
    }
    
    if(xmlHttp == null)
    {
        alert("ブラウザがXMLHttpRequestに対応しておりません");
        return;
    }
    
    // XMLHttpRequestオブジェクトの状態が変更されたタイミング
    // で行うべき処理を定義
    xmlHttp.onreadystatechange=function()
    {
        // データ受信に成功した場合、HTMLに整形したうえで、
        // <div>タグ上にコンテンツを反映
        if(xmlHttp.readyState == 4)
        {
            if(xmlHttp.status == 200)
            {
                dispstart = new Date().getTime();
                var aData = xmlHttp.responseXML.documentElement;
                if(aData == null)
                {
                    return;
                }
                var data = aData.childNodes;
                var ItemCount = 0;
                var SumPrice = 0;
                var CartData = "<div style='overflow:auto;width:402px;height:" + val_CART_HEIGHT_MAX + "px'> <table class='carttable'><tr><th class='header1'></th><th class='header2'>商品名</th><th class='header3'>税込単価</th><th class='header4'>数量</th><th class='header5'>小計</th><tr>";
                for(i = 0 ; i < data.length ; i++)
                {
                    if(data[i].tagName != "Data")
                        continue;
                    
                    var ChildData = data[i].childNodes;
                    for(j = 0 ; j < ChildData.length ; j++)
                    {
                        switch(ChildData[j].tagName)
                        {
                            case "ItemName":
                                data0 = ChildData[j].firstChild.nodeValue;
                                break;
                            case "ItemCount":
                                data1 = ChildData[j].firstChild.nodeValue;
                                break;
                            case "ItemPrice":
                                data2 = ChildData[j].firstChild.nodeValue;
                                break;
                            case "ItemCode":
                                data3 = ChildData[j].firstChild.nodeValue;
                                break;
                        }
                    }
                    CartData += "<tr><td>" + (i+1) + "</td><td style='text-align:left;'><a href='" + AbsolutePath(val_GetCartData_PATH_S + "../syousai.aspx").replace("https://", "http://").replace(val_CoJpPort, ".co.jp/") + "?PID=" + data3 + "'><div class='itemname'><span title='" + data0 + "' class='itemtip'>" + data0 + "</span></div></a></td><td>" + NumFormat(data2) + "</td><td>" + data1 + "</td><td>" + NumFormat(data2 * data1) + "</td><tr>";
                    ItemCount += parseInt(data1, 10);
                    SumPrice += parseInt(data2, 10) * parseInt(data1, 10);
                }
                CartData += "</table></div>\n";
                var eleCART_LIST = document.getElementById("CART_LIST");
                eleCART_LIST.innerHTML=CartData;
                var elenumber = document.getElementById("number");
                elenumber.innerHTML= ItemCount + "点";
                var eletotal = document.getElementById("total");
                eletotal.innerHTML= NumFormat(SumPrice) + "円";
                var eleCART_POINT = document.getElementById("CART_POINT");
                if(CookieRead("GetPoint") == "")
                    eleCART_POINT.innerHTML= "0pt";
                else
                    eleCART_POINT.innerHTML= CookieRead("GetPoint") + "pt";

                if(xmlHttp.getAllResponseHeaders().match("Last-Modified"))
                    last_modified = xmlHttp.getResponseHeader("Last-Modified");
                if(xmlHttp.responseText.length != 0)
                    cached_content = xmlHttp.responseText;

                end = new Date().getTime();
                //window.status = "処理時間:"+(end-start)+"ms  (通信："+(dispstart-start)+"ms, 表示："+(end-dispstart)+"ms)";
            }
        }
    }

    start = new Date().getTime();
    //xmlHttp.open("GET", "GetCartData.aspx", true);
    xmlHttp.open("GET", val_GetCartData_PATH, true);
    if(last_modified)
        xmlHttp.setRequestHeader("If-Modified-Since", last_modified);
    xmlHttp.send(null);
}

//----------------------------------------------------
// 関数名：CartIn
// 概要　：商品カート追加
// 説明　：クッキーに指定の商品コードを追加する。
//----------------------------------------------------
function CartIn(Code)
{
    //特定商品への強制変更 Ymsk.Masunaga 091124 ADD Start
    switch(Code)
    {
        case "42811":
            CartIn("4281");
            Code = "3029";
            break;
    }
    //特定商品への強制変更 Ymsk.Masunaga 091124 ADD End
    
    if(CookieRead("ItemCodeList") == "")
        CookieWrite("ItemCodeList", Code);
    else
    {
        if(CookieRead("ItemCodeList").split(",").length >= val_CART_MAX_COUNT)
        {
            alert(val_CART_COUNT_OVER_MSG);
            return;
        }
        CookieWrite("ItemCodeList", CookieRead("ItemCodeList") + "," + Code);
    }
    CookieDelete("GetPoint");
    LoadCart();
    location.href = AbsolutePath(val_GetCartData_PATH_S + "cart.aspx").replace("http://", "https://").replace(".co.jp/", val_CoJpPort);
    //location.href = AbsolutePath(val_GetCartData_PATH_S + "cart.aspx").replace("http://", "http://").replace(".co.jp/", val_CoJpPort);
}

//----------------------------------------------------
// 関数名：CartInCnt
// 概要　：商品カート追加
// 説明　：クッキーに指定の商品コードを追加する。
//----------------------------------------------------
function CartInCnt(Code, AddCount)
{
    if(AddCount == undefined || isNaN(AddCount) || AddCount <= 0)
    {
        alert(val_CART_COUNT_NONSELECT_MSG);
        return;
    }

    //特定商品への強制変更 Ymsk.Masunaga 091124 ADD Start
    switch(Code)
    {
        case "42811":
            CartInCnt("4281", AddCount);
            Code = "3029";
            break;
    }
    //特定商品への強制変更 Ymsk.Masunaga 091124 ADD End
    
    ItemList = CookieRead("ItemCodeList");
    for(i = 0 ; i < AddCount ; i++)
    {
        if(ItemList == "")
            ItemList = Code;
        else
        {
            if(ItemList.split(",").length >= val_CART_MAX_COUNT)
            {
                alert(val_CART_COUNT_OVER_MSG);
                return;
            }
            ItemList = ItemList + "," + Code;
        }
    }
    CookieWrite("ItemCodeList", ItemList);
    CookieDelete("GetPoint");
    LoadCart();
    location.href = AbsolutePath(val_GetCartData_PATH_S + "cart.aspx").replace("http://", "https://").replace(".co.jp/", val_CoJpPort);
    //location.href = AbsolutePath(val_GetCartData_PATH_S + "cart.aspx").replace("http://", "http://").replace(".co.jp/", val_CoJpPort);
}

//----------------------------------------------------
// 関数名：CartClear
// 概要　：カート内容クリア
// 説明　：クッキーからカートの内容をクリアする。
//----------------------------------------------------
function CartClear()
{
    CookieDelete("ItemCodeList");
    CookieDelete("GetPoint");
    LoadCart();
}
