(function() {
    var container = $("script:last").parents("div:first");
    $(function() {
        var campaignId = "";

        if ($("#hidTargetCampaignId", container).val() != undefined) {
            campaignId = $("#hidTargetCampaignId", container).val();
        }

        ajaxRequest(
            getHost() + "/page/campaignGoods/index",
              "CampaignGoodsLimit=" + $("#hidCampaignGoodsCount", container).val()
            + "&ImageSize="         + $("#hidCampaignGoodsImgSize", container).val()
            + "&targetCampaignId="  + campaignId,
            function(backdata) {
                campaignGoods_disp_callback1(backdata, container);
            });
    });
})();

function campaignGoodsInfoDisable(container, intVisible) {
    var intScroll = 1;
    jQuery(".carousel", container).jCarouselLite({
        visible : intVisible,
        scroll : intScroll,
        btnNext : $("p.btnNext", container),
        btnPrev : $("p.btnPrev", container)
    });
}

/*
 * 商品のマージンを自動的に計算します。 @author z_k.ito
 */

function campaignGoods_disp_callback1(data, container) {
    // 1項目のサイズ
    var itemSize = parseInt($("#hidCampaignGoodsImgPixel", container).val() || 65, 10);
    // アイコンの表示数
    var iconDisplayCount = Math.floor((itemSize + 10) / 47);//1;
    // マージン：商品の両サイドの空白
    var margin = 8;
    // データ件数取得
    var intCount = data.intCount;

    // テンプレートの取得・破棄
    var template = $(".carousel>ul>li:first", container).clone(); // テンプレートを取得
    $(".carousel>ul", container).children().remove(); // テンプレートを破棄

    // データの有無をチェック
    if (data.flag == 0 || data == null || data == "") {
        // データが無いとき
        $('.carousel>ul', container).hide(); // 商品表示欄を隠す
        // メッセージを表示
        $('.Cerrortext>p', container).text(data.msg);
        // 下部の線の設定を枠全体に設定
        var carousel = $('.carousel', container);
        carousel.css("border-color", carousel.css("border-bottom-color"));
        carousel.css("border-width", carousel.css("border-bottom-width"));
        carousel.css("border-style", carousel.css("border-bottom-style"));
        // 三角を消す
        $(".btnPrev", container).remove();
        $(".btnNext", container).remove();

    } else {
        // データが有るとき
        $('.Cerrortext', container).remove(); // エラー表示欄を削除
        $('#hidCampaignGoodsCount', container).val(intCount); // データ件数設定
        var noIconCount = 0;// ステータスアイコンがない商品の数
        // データの件数分ループする
        var campaignInfo = data.campaignInfo;
        for ( var i = 0; i < intCount; i++) {
            // ワーク変数にベース領域をコピー
            var clone = $(template).clone().css({width:(itemSize + 6) + "px"});
            clone.find("p.photo, p.photo a").css({width:itemSize + "px", height:itemSize + "px"});
            clone.find("p.icn").css({width:(itemSize + 10) + "px"});
            if (iconDisplayCount > 1) {
                clone.find("p.icn>span").css({display:"inline", margin:"0 2px"});
            }

            // アイコン設定
            var specialIconCount = campaignInfo[i]["ICON"].length;
            if (specialIconCount > iconDisplayCount)
                specialIconCount = iconDisplayCount;

            if (specialIconCount > 0) {
                // アイコンが有るときはアイコンを設定
                for (var j = 0; j < specialIconCount; j++) {
                    if (j > 0) {
                        var span = $(".icn>span:first", clone).clone();
                        $("img", span).attr('src', campaignInfo[i]["ICON"][j]);
                        $(".icn", clone).append(span);
                    } else if (j == 0) {
                        $(".icn>span>img", clone).attr('src', campaignInfo[i]["ICON"][j]);
                    }
                }
            } else {
                // アイコンがない商品の数
                noIconCount++;
            }

            // 画像設定
            var goodsImage = campaignInfo[i]["IMAGE_FULLPATH"];
            $('.photo>a', clone).attr('href', getOriginalHost() + "/item/" + campaignInfo[i]["GOODS_CODE"] + "/");
            $('.photo>a>img', clone).attr('src', goodsImage);

            // ランキングアイコン設定
            var rankingIconCount = campaignInfo[i]["RAKICON"].length;

            if (rankingIconCount > 0) {
                for (var j = 0; j < rankingIconCount; j++) {
                    if (j > 0) {
                        var img = $(".ricn:first", clone).clone();
                        img.attr('src', campaignInfo[i]["RAKICON"][j]);
                        $(".ricn:first", clone).parent().append(img);
                    } else {
                        $(".ricn", clone).attr('src', campaignInfo[i]["RAKICON"][j]);
                    }
                }
            } else {
                // ランキングアイコンが無いときは領域を削除
                $('.ricn', clone).remove();
            }

            // 名称設定
            $('.name>a', clone).attr(
                    'href', getOriginalHost() + "/item/" + campaignInfo[i]["GOODS_CODE"] + "/");
            $('.name>a', clone).text(
                    htmlspecialchars_decode(campaignInfo[i]["GOODS_NAME"]));

            // 値段設定
            $('.price', clone).text(campaignInfo[i]["SALES_PRICE"]);

            // 要素を親に追加
            $(".carousel>ul", container).append(clone);
        }
        // すべての商品にアイコンがなかったら
        if (intCount == noIconCount) {
            $(".carousel>ul>li", container).each(function() {
                $(".icn", this).remove();
            });
        }
    }

    // 幅の調整 規定の幅から前後送りパーツを省いた幅を設定
    var innerWidth = container.width() - (// マージンやらボーダーやらブラウザによって違う面倒なところ
    $('.carousel', container).outerWidth({margin : true}) - $('.carousel', container).width()) - (// 左右ボタンの幅を引きます
    $(".btnPrev", container).outerWidth({margin : true}) + $(".btnNext", container).outerWidth({margin : true}));

    var li = $("li", $(".carousel>ul", container));// for IE8
    var itemWidth = li.outerWidth();

    var itemCount = (Math.floor(innerWidth / (itemWidth + margin * 2)));
    var between = (innerWidth / itemWidth) - itemCount;

    var realMargin = (between * itemWidth) / (itemCount * 2);
    var marginLeft = Math.floor(realMargin);
    var marginRight = realMargin - marginLeft < 0.5 ? marginLeft : marginLeft + 1;
    li.each(function() {
        $(this).css("margin","0 " + marginRight + "px 0 " + marginLeft + "px");
    });

    // データ前後送りパーツの調整
    // console.log([innerWidth, ulWidth, intCount, itemCount]);
    if (intCount > itemCount) {
        campaignGoodsInfoDisable(container, itemCount);
    }

    // 高さを揃える
    jQuery(".carousel, p.btnPrev, p.btnNext", container).flatHeights();
    // カルーセルが勝手に幅を決めるのでここで再指定
    $('.carousel', container).width(innerWidth);

}

