MJL.event.add(window, "load", function(event) {
    // MJL に関係するコードはこの中に記述
    MJL.enable.flash("flash");
    MJL.enable.rollover("roll");
}, false);

// カルーセル初期化
(function ($) {
    $(function(){
        // 自動切り替えの時間（ミリ秒）
        var DELAY_TIME = 4400;
        // ※バナー（サムネイル）を保持するli要素の class属性地にdisplay-XXXXとすると、
        // 　その要素個別の切り替え時間を設定できる
        // 　例：<li class="delaytime-2000">  … 対象要素は2000ミリ秒で切り替わる。それ以外は4400ミリ秒

        var $target = $("#column-control");
        if (!$target.length) return;

        var $panels = $("#column-control ul");
        var $panelList;
        var $contentsWrapper = $("#column-content");
        var $contents = $("#column-content li");

        var uniqueLength = $panels.find("li").length;
        var allLength;
        var firstIndex = $.cookie("firstIndex") || 0;
        if (firstIndex >= uniqueLength) {
            firstIndex = 0;
        }
        var $currentPanel;
        var $currentContent;
        var preIndex;
        var visibleTopIndex = firstIndex;
        var posIndex = 0;
        var contentZ = uniqueLength;
        var $c;

        init();

        function init() {
            $panelList = $panels.find("li");
            $currentPanel = $panelList.eq(firstIndex);
            $currentContent = $contents.eq(firstIndex);

            // inputを複製
            $panelList.each(function (i) {
                var $input = $(this).find("input:hidden");
                $contents.eq(i).append($input.clone());
            });

            // カルーセル初期化
            $c = $target.setCarousel({
                items : "li",
                mask : ".mask",
                isHorizonal :false,
                defaultIndex : firstIndex,
                auto : DELAY_TIME,
                disableInMoving : false,
                // swipeTarget : $target,
                onChangeIndex : function (topIndex) {
                    visibleTopIndex = topIndex;
                    changeItem((topIndex + posIndex) % allLength) ;
                },
                onComplete : function (topIndex) {
                },
                onFocus : function (topIndex) {
                    posIndex = 0;
                    changeItem((topIndex + posIndex) % allLength);
                }
            });

            // 参照更新
            $panelList = $panels.find("li");
            $currentPanel = $panelList.eq(firstIndex);
            $currentContent = $contents.eq(firstIndex);
            allLength = $panelList.length;

            // バナーのハンドラ設定
            $panels.find("li").each(function (i) {
                var idx = i % allLength;
                $(this)
                    .bind("mouseover", function () {
                        var $tgt = $(this);
                        // 見た目上、上から何番目か、を取得する
                        if (idx >= visibleTopIndex) {
                            posIndex = idx - visibleTopIndex;
                        }else if(idx < visibleTopIndex){
                            posIndex = idx + allLength - visibleTopIndex;
                        }
                        changeItem(idx);

                        // タイマー停止
                        $c.data("stopTimer")();
                    })
                    .bind("mouseout touchend click", function () {
                        // タイマー開始
                        $c.data("startTimer")();
                        $(this).find("a").blur();
                    });
            });

            // メイン画像ハンドラ設定
            $contentsWrapper.bind("mouseover", function (){
                // タイマー停止
                $c.data("stopTimer")();
            }).bind("mouseout touchend click", function () {
                // タイマー開始
                $c.data("startTimer")();
                $(this).find("a").blur();
            }).addClass("active");

            // timer更新
            updateAutoTime($currentPanel);
            $c.data("startTimer")();

            // 初期表示
            $panelList.find("a").css("opacity", 0.6);
            $currentPanel.find("a").css("opacity", 1);
            $contents.css("opacity", 0);
            $currentContent.css("opacity", 1);

            // クッキーに次回表示時のインデックスを登録
            $.cookie("firstIndex", ++firstIndex);

            // swf用設定
            $contents.each(function () {
                var $content = $(this);
                if ($content.find(".flash").length) {
                    $content.addClass("hasFlash");
                }
            });

            // バナーの保持するinput要素をコピー
            $panelList.each(function (i) {
                var $inp = $(this).find("input");
                $inp.each(function () {
                    var name = $(this).attr("name");
                    var val = $(this).val();
                });
            });

            // サイトカタリスト設定
            var $t = $panelList.add($contents).click(function () {
                var v = "";
                v += $(this).find("input[name=st_eVar8]").val() + " ";
                v += $(this).find("input[name=st_linkTrackEvents]").val() + " ";
                v += $(this).find("input[name=st_linkTrackVars]").val();
                advert_ExternalCall(v);
            });
        }

        function changeItem(index) {
            if (isNaN(index) || index === preIndex) {
                return;
            }

            // サムネイル
            var $panel = $panelList.eq(index);
            $currentPanel.find("a").stop().animate({
                "opacity": 0.6
            },200);
            $panel.find("a").stop().animate({
                "opacity": 1
            },200);

            // メイン画像
            var $content = $contents.eq(index % uniqueLength);
            $currentContent.stop().animate({
                "opacity": 0
            },200);
            $content.stop().animate({
                "opacity": 1
            },200);

            // swfを保持しているなら巻き戻して再生する
            if ($content.hasClass("hasFlash")) {
                var flash = $content.find("object")[0];
                flash.Rewind();
                flash.Play();
            }

            // timer更新
            updateAutoTime($panel);

            // 画像更新
            $currentPanel = $panel;
            $currentContent = $content;
            preIndex = index;

            // zIndex調整
            if (contentZ > uniqueLength * 2) {
                $contents.each(function (i) {
                    $(this).css("zIndex", 1);
                });
                contentZ = uniqueLength;
                $currentContent.css("zIndex", contentZ);
            }
            $content.css({
                "zIndex" : ++contentZ
            });
        }

        function updateAutoTime($panel) {
            // timer更新
            var cn = $panel.attr("class") || "";
            var time = /delaytime-(\d+)/.exec(cn);
            if (time) {
                $c.data("setAutoTime")(Number(time[1]));
            }else{
                $c.data("setAutoTime")(DELAY_TIME);
            }
        }
    });
})(jQuery);

