MJL.event.add(window, "load", function() {
    // MJL に関係するコードはこの中に記述
    MJL.enable.flash("flash");
    MJL.enable.tab("tabs");
    MJL.enable.heightEqualizer("equalize2col", { groupBy : 2 });
    MJL.enable.heightEqualizer("equalize3col", { groupBy : 3 });
    MJL.enable.heightEqualizer("box-sub-height-equalize", {
        groupBy : 2,
        collect : function(parent) {
            return MJL.getElementsByClassName(parent, "body-sub");
        }
    });
    MJL.enable.rollover("roll", {
        disable : "unroll",
        active  : "active"
    });
    MJL.enable.rollover("roll-active", { active : "active" });
    MJL.enable.window("popup-01", { width : 740 });
    MJL.enable.window("popup-02", { width : 700 });
});

// MJL と無関係なコードはこの先に記述
'jQuery' in window && (function($) { // $ === window.jQuery
    // 競合防止
    jQuery.noConflict();
    // DOMContentLoaded
    $(function() {
        // -------------------------------------------------
        // グローバルナビゲーション制御
        // -------------------------------------------------
        (function() {
            var nav = $('#nav-global');

            // IE6 の png 処理のため、背景画像出力用クラスを動的に付与
            $('#ng-body').addClass('root');

            // 特定のメニューにマウスオーバーするとデフォルトの背景画像が非表示
            $('li.has-child').hover(
                function(){ $('ul.root').addClass('child-active'); },
                function(){ $('ul.root').removeClass('child-active'); }
            );

            // class 属性値と一致するメニューを現在地表示
            var bodyClass = $(document.body).attr('class');
            var condSrc = /(\.[a-z]{3})$/;                        // img 要素 src 属性置換条件
            var condCategory = /(^.+?ng_)(.+?)(\.gif$)/;  // img 要素から category を抽出する置換条件
            $('#ng-body img').each(function(){
                var obj = $(this),
                category = obj.attr('src').replace(condCategory, '$2'),
                ret = true;
                //console.log(category);
                // 一致するメインメニューがあればアクティブ化して終了
                if (bodyClass === category) {
                    obj.attr(
                        'src', obj.attr('src').replace(condSrc, '_o$1')
                    ).parents('a').addClass('unroll');  // ロールオーバー無効化
                    ret = false;
                }
                // 何もなければ次をチェック
                return ret;
            });
        })();


        // -------------------------------------------------
        // ドロップダウンメニュー制御
        // -------------------------------------------------
        (function() {
            var doc      = $(document),
                idPrefix = '.DROPDOWN_MENU_'+(new Date()).getTime(),
                current  = 'current',
                active   = 'active';
            // 複数対象の実装を考慮
            $('li.has-child').each(function(n) {
                var root     = $(this),                // 基点
                    item     = root.find('> a > img'), // アクティブ化対象
                    bindName = 'focusin'+idPrefix+n;   // 特殊 focusin 用イベント名
                // 各種イベントリスナ群
                function show() { // メニュー表示
                    if (!root.hasClass(current)) {
                        root.addClass(current);
                        item.addClass(active);
                        // MJL ロールオーバー アクティブ化
                        item.each(function() {
                            MJL.event.dispatch(this, 'mouseover');
                        });
                    }
                }
                function hide() { // メニュー非表示
                    if (root.hasClass(current)) {
                        root.removeClass(current);
                        item.removeClass(active);
                        // MJL ロールオーバー 非アクティブ化
                        item.each(function() {
                            MJL.event.dispatch(this, 'mouseout');
                        });
                    }
                }
                // イベント設定
                root.focusin(show).focusout(function() { // キーボード制御
                    // 基点でのみ影響が及ぶように、イベントの設定は都度実行
                    // 基点からフォーカスが外れた場合
                    doc.bind(bindName, function(event) {
                        // 基点を含まない要素ノードの focus を確保
                        if (root.has(event.target).length < 1) {
                            hide.apply(this, arguments);
                        }
                        doc.unbind(bindName);
                    });
                }).mouseenter(show).mouseleave(hide);    // マウスポインタ制御
            });
        })();


        // -------------------------------------------------
        // ローカルナビゲーション制御
        // -------------------------------------------------
        (function() {
            $('.nav-local').each(function(){
                var nav = $(this);
                var flag = nav.attr('class').indexOf('no-check');
                if (flag === -1) {
                    var condIndex = /\/index\.html?/;                      // index 除去条件
                    var path = location.pathname.replace(condIndex, '/');  // URL
                    var checks = [path];

                    // 文字列末尾から 1 ディレクトリずつ削り、URL を収集
                    while (path && '/' !== path) {
                        path = path.replace(/[^/]*\/?$/, '');
                        checks.push(path);
                    }

                    // メニューの href 属性値をすべて取得
                    var hrefs = $('a', nav).map(function(){
                        return $(this).attr('href').replace(condIndex, '/');
                    });

                    // URL と href 属性値の一致を判定
                    // 一致した a 要素には class 属性値「current」を付与
                    checkStart : for (var i = 0; i<checks.length; i++) {
                        for (var j = 0; j<hrefs.length; j++) {
                            if (checks[i] === hrefs[j]) {
                                $('a', nav).eq(j).addClass('active');
                                break checkStart;
                            }
                        }
                    }
                }
            });
        })();

        // -------------------------------------------------
        // 画像とテキストの横並び
        // -------------------------------------------------
        $('.image-parallel').each(function(){
            var obj = $(this);
            var imgWidth = $('div.image p.image img', obj).attr('width');
            if (imgWidth > 0) {
            imgWidth = imgWidth;    // 数字は画像の枠線の領域
            $('div.image', obj).css('width', imgWidth);
            }
        });
    });
})(jQuery);

