/****** 変数の定義 ******/
var ajax_php_path  = "index.php";    // プログラムファイル名

var bagitemcount   = 0;              // アイテム数
var bagitem        = new Array();    // 袋の中のアイテム

var bagimgcount_p  = 11;             // バックの画像の数（親）
var bagimgcount_c  = 5;              // バックの画像の数（子）
var bagimgcount_cl = 8;              // バックの画像の数（子のラスト）
var bagimg         = new Array();    // バックの画像データ

var backboximg_max = 3;              // 戻す箱の画像の数
var backboximg;                      // 戻す箱の画像データ




/* 袋画像を定義 */
var bagimg = new Array();
for (i=1; i<=bagimgcount_p; i++) {
    // 一桁なら前ゼロ
    if (i<10) {
        var ii = '0'+i;
    } else {
        var ii = i;
    }

    bagimg[i] = new Array();
    bagimg[i].img = new Array();

    // ラスト2つ前より、前（<bagimgcount_p - 1）
    if (i < (bagimgcount_p - 1)) {
        for (j=1; j<=bagimgcount_c; j++) {
            var jj = '0'+j;
            bagimg[i].img[j] = new Image();
            bagimg[i].img[j].src = 'image/bag_'+ ii +'_' + jj + '.gif';
        }

    // ラスト2つ前
    } else {
        for (j=1; j<=bagimgcount_cl; j++) {
            // 一桁なら前ゼロ
            if (j<10) {
                var jj = '0'+j;
            } else {
                var jj = j;
            }
            bagimg[i].img[j] = new Image();
            bagimg[i].img[j].src = 'image/bag_'+ ii +'_' + jj + '.gif';
        }
    }
}





/* 袋の画像をアニメーションにする為の関数のセットをする処理 */
var change_bag = function(p, c, cmax)
{
    if (c <= cmax) {
        $("bag-img").src = bagimg[p].img[c].src;
        c = c + 1;
        var tim = setTimeout('change_bag(' + p + ', ' + c +', ' + cmax + ')', 100);
        if (
            (p == bagimgcount_p) &&
            (c == cmax)
        ) {
            url = ajax_php_path + "?action_shopping_cart_do=true&out=true";
            location.href=url;
        }
    }
}





/* 戻す箱の画像を定義 */
var backboximg = {
   1 :'image/eject_00.gif',
   2 :'image/eject_01.gif',
   3 :'image/eject_02.gif'
};





/* 戻す箱の画像をアニメーションにする為の関数のセットをする処理 */
var change_backbox = function(idx)
{
    if (idx <= backboximg_max) {
        $("bag-img").src = backboximg[idx];
        idx = idx + 1;
        var tim = setTimeout('change_backbox(' + idx + ')', 100);
    } else {
        $("bag-img").src = backboximg[1];
    }
}





// 商品を追加時の設定
var add_item = function (itemID)
{
    var url  = ajax_php_path;
    var pars = 'action_shopping_ajax_additem=true&itemid=' + itemID + '&time=' + new Date().getTime();

    var myAjax = new Ajax.Request(
        url, 
        {
            method: 'get', 
            parameters: pars, 
            onFailure: report_error,
            onComplete: add_item_do
        }
    );
}





// 商品を追加時の処理
var add_item_do = function (originalRequest)
{
    // jsonデータを整形
    var resdata = eval("("+originalRequest['responseText']+")");

    // エラーがあった場合
    if (resdata['error']) {

        // アラートの表示
        alert(resdata['error_message']);

        // コースや袋が選択されていない
        if (resdata['error_code'] == '501' || resdata['error_code'] == '502') {
            // エラー画面を表示
            url = ajax_php_path + "?action_error=true";
            location.href=url;
        }

    // エラーがない場合
    } else {
        /* 袋の画像の切り替え */

        // 今の詰め込み具合をパーセントにして数値を生成する（15%→02, 24%→02）
        var per = resdata['vol_per'];

        // ラスト2つ前（<bagimgcount_p - 1）
        if (per < (bagimgcount_p-1)) {
            if (per == 0) {
                per = 1;
            }
            change_bag(per, 1, bagimgcount_c);

        // ラスト1つ前
        } else if (per < bagimgcount_p) {
            change_bag(per, 1, bagimgcount_cl);

        // ラスト
        } else {
            change_bag(bagimgcount_p, 1, bagimgcount_cl);

        }

        // 容積値のチェック
        if (resdata['over']) {
            url = ajax_php_path + "?action_shopping_cart_do=true&out=true";
            location.href=url;
        }
    }

    // 商品がゼロの場合
    if (resdata['tmp']['delete']) {
        $(""+resdata['tmp']['itemid']+"").update('&nbsp;');

    }
}





// 商品を削除時の設定
var del_item = function (itemID)
{
    var url  = ajax_php_path;
    var pars = 'action_shopping_ajax_delitem=true&itemid=' + itemID + '&time=' + new Date().getTime();

    var myAjax = new Ajax.Request(
        url, 
        {
            method: 'get', 
            parameters: pars, 
            onFailure: report_error,
            onComplete: del_item_do
        }
    );
}





// 商品を削除時の処理
var del_item_do = function (originalRequest)
{
    /* 戻す箱の画像の切り替え */
    change_backbox(1);

    // jsonデータを整形
    var resdata = eval("("+originalRequest['responseText']+")");

    // エラーがあった場合
    if (resdata['error']) {

        // アラーとの表示
        alert(resdata['error_message']);

        // コースや袋が選択されていない
        if (resdata['error_code'] == '501' || resdata['error_code'] == '502') {
            // エラー画面を表示
            url = ajax_php_path + "?action_error=true";
            location.href=url;
        }

    } else {

        // 商品がゼロの場合
        if (resdata['tmp']['delete']) {
            var spacer = new Image();
            spacer.src = 'image/spacer.gif';
            spacer.width = 100;
            spacer.height = 120;
    //      $(""+resdata['tmp']['itemid']+"").update('&nbsp;');
            $(""+resdata['tmp']['itemid']+"").update(spacer);

        // 商品がゼロ以外の場合
        } else {
            var string = "#" + resdata['tmp']['itemid'] + " .itemcount";
            var itemcount = $$(""+string+"");
            itemcount[0].update(resdata['tmp']['itemcount']);
        }
    }
}





var report_error = function (request){}





/* ドラッグ＆ドロップ関連数 */
var posfix = function(draggable) {
    draggable.setStyle({ left: "0px", top: "0px" });
}





// ドロップ時に設定（袋に詰め込む時）
var optDropzoneCart = {
    hoverclass: "dragenter",
    onDrop: function(draggable, dropzone) {

//      // アイテム数追加
//      bagitemcount++;

        // アイテムの追加
        var itemID = draggable.id.replace("item","");
        add_item(itemID);
    }
}




// ドロップ時に設定（商品を袋から取り出す時）
var optDropzoneEject = {
    hoverclass: "dragenter",
    onDrop: function(draggable, dropzone) {

        // アイテムの削除
        var itemID = draggable.id.replace("item","");
        del_item(itemID);
    }
}





var optDraggable = {
    revert      : true,
    reverteffect: function() { /* NOP */ },
    starteffect : function(draggable) {
//      draggable.parentNode.setStyle({ zIndex: 1 });
        draggable.setStyle({ opacity: 0.5 });
    },
    endeffect   : function(draggable) {
//      draggable.parentNode.setStyle({ zIndex: 0 });
        draggable.setStyle({ opacity: 1.0 })
                 .setStyle({ left: 0, top: 0 });
//      posfix(draggable);
    }
}





// Cart画面でのオンロード時にする処理
var optOnloadCart = function() {
    $$(".dropzone").each(
        function(dropzone) {
            Droppables.add(dropzone.cleanWhitespace(), optDropzoneCart);
        }
    );
    $$(".draggable").each(
        function(draggable) {
            new Draggable(draggable, optDraggable);
        }
    );
}





// Eject画面でのオンロード時にする処理
var optOnloadEject = function() {
    $$(".dropzone").each(
        function(dropzone) {
            Droppables.add(dropzone.cleanWhitespace(), optDropzoneEject);
        }
    );
    $$(".draggable").each(
        function(draggable) {
            new Draggable(draggable, optDraggable);
        }
    );
}





/****** 商品画像を切り替える処理 ******/

// 切り替える画像を取得
var image_change = function(itemID, itemimgIDX, itemimgSize)
{
    var url  = ajax_php_path;
    var pars = 'action_shopping_ajax_getitemimage=true&itemid=' + itemID + '&itemimgidx=' + itemimgIDX + '&itemimgsize=' + itemimgSize;

    var myAjax = new Ajax.Request(
        url, 
        {
            method: 'get', 
            parameters: pars, 
            onComplete: image_change_do
        }
    );
}

// 切り替える画像を反映
var image_change_do = function(originalRequest)
{
    var resdata = eval("("+originalRequest.responseText+")");

    var itemimg = $$('#item'+resdata.itemid+' img');
    itemimg[0].src = resdata.itemimg_path;
    var anglelink = $$('#'+resdata.itemid+' a');
    anglelink[0].onclick = function () {
        image_change(resdata.itemid, resdata.next_idx, resdata.itemimg_size);
    };
}
