MJL.event.add(window, "load", function(event) {
    MJL.enable.rollover("roll", {disable:"unroll"});
	MJL.enable.window("window");
    MJL.enable.styleSwitcher("styleSwitcher");
    MJL.enable.tab("tabs");
	MJL.enable.flash("flash");
	MJL.enable.heightEqualizer("lyt-col2-01", {
        groupBy: 2,
        collect: function(parent){
            return MJL.getElementsByClassName(parent, "box-contents-01");
        }
    });
    MJL.enable.heightEqualizer("lyt-col2-01", {
        groupBy: 2,
        collect: function(parent){
            return MJL.getElementsByClassName(parent, "box-contents-04");
        }
    });
}, false);


// ----------------------------------------------------------------------------
// MJL Extensions
// ----------------------------------------------------------------------------
(function(window, document, undefined) {
	// アクティブタブ class 属性値
    var active = "active";
    // isZoomed 用ズーム基準要素取得
    var getZoomObj = function() {
        return document.getElementById("str-contents") || document.body;
    };

    // isSameNode: 同一ノードの是非を取得
    MJL.isSameNode = document.isSameNode ? function(n1, n2) {
        return n1.isSameNode(n2); // W3C DOM
    } : function(n1, n2) {
        return (n1 == n2);        // Trident etc.
    };

    // イベント発送 (= fire)
    MJL.event.dispatch = document.createEvent ? (function() {
        // BUG Sf2: "HTMLEvents" でないと "DOM Exception 9" 例外発生
        // BUG Op: "Event" 未サポート
        var eventType = (MJL.ua.webkit && MJL.ua.version < 3) ? "HTMLEvents"
                                                              : "Event";
        return function(node, type, bubbles) {
            var event = document.createEvent(eventType);
            event.initEvent(type, bubbles, true);
            return node.dispatchEvent(event);
        };
    })() : document.createEventObject ? function(node, type, bubbles) {
        var event = document.createEventObject();
        event.cancelBubble = !bubbles;
        return node.fireEvent("on"+type, event);
    } : null;


    // --------------------------------
    // style
    // --------------------------------
    // body 要素以外の (style.Switcher による) テキストサイズ変化に対応
    MJL.style.isZoomed = (function() {
        // font-size の Computed Style + ViewPort サイズを利用
        // BUG Opera: ズーム時に Computed Style 値が再計算されない
        if (MJL.ua.opera) {
            var innserSize = 0; // ViewPort サイズ
            var fontSize   = 0; // font-size の Computed Style
            // ViewPort サイズがなぜか増減することを併用
            // 但し、何らかの DOM スタイル操作で ViewPort のスクロールバーが
            // 縦横同時に出現した場合、ズームされなくとも true を返す
            // font-size の Computed Style はスタイルスイッチ & 直接変更
            MJL.event.add(window, "load", function() {
                innerSize = MJL.vp.getInnerSize();
                fontSize  = MJL.style.getComputed(document.body, "fontSize");
            }, false);
            return function() {
                var nowInnerSize = MJL.vp.getInnerSize();
                var nowFontSize  = MJL.style.getComputed(document.body,
                                                         "fontSize");
                if (innerSize.width  == nowInnerSize.width  &&
                    innerSize.height == nowInnerSize.height &&
                    fontSize          == nowFontSize) { return false; }
                innerSize = nowInnerSize;
                fontSize  = nowFontSize;
                return true;
            };
        // font-size の Computed Style を利用
        } else {
            var size = 0;
            var obj  = null;
            MJL.event.add(window, "load", function() {
                obj  = getZoomObj(); // ここで取得した要素を基準とする
                size = MJL.style.getComputed(obj, "fontSize");
            }, false);
            return function() {
                var nowsize = MJL.style.getComputed(obj, "fontSize");
                if (size == nowsize) { return false; }
                size = nowsize;
                return true;
            }
        }
    })();

    // --------------------------------
    // style.Switcher
    // --------------------------------
    // 生成
    MJL.style.Switcher.prototype._create = MJL.style.Switcher.prototype.create;
    MJL.style.Switcher.prototype.create = function() {
        this._create.apply(this, arguments);
        this.set(); // 同時に set を実行するようにしただけ
    };

    // スタイルを title に設定
    MJL.style.Switcher.prototype._set = MJL.style.Switcher.prototype.set;
    MJL.style.Switcher.prototype.set = function(title) {
        this._set.apply(this, arguments);		
        // デフォルトスタイルシートの有無を考慮
        if (!title) {
            title = this._getNowStyleTitle();
        }
        var id  = this._title2id(title);
        var aid = isNaN(this._activeId) ? id : this._activeId;
        // Rollover アクティベート対応
        // this._activeId: アクティブなスイッチの ID
        MJL.addClassName(this.targets[id].node, active);
        MJL.event.dispatch(this.targets[id].node, "focus", false);
        if (id !== aid) {
            MJL.removeClassName(this.targets[aid].node, active);
            MJL.event.dispatch(this.targets[aid].node, "blur", false);
        }
        this._activeId = id;
    };

    // スタイルタイトルから id を逆算
    MJL.style.Switcher.prototype._title2id = function(title) {
        var targets = this.targets;
        var ntargets = targets.length;
        for (var t = 0; t < ntargets; t++) { // 線形探索するしかない
            if (title === targets[t].title) {
                return t;
            }
        }
        return 0;
    };
    // 現在アクティブなスタイルのタイトルを取得
    MJL.style.Switcher.prototype._getNowStyleTitle = function() {
        var sheets = document.styleSheets;
        var nsheets = sheets.length;
        for (var s = 0; s < nsheets; s++) {
            if (sheets[s].title && !sheets[s].disabled) {
				return sheets[s].title;
            }
        }
        return "";
    };

    // --------------------------------
    // Rollover
    // --------------------------------
    // 対象要素とイベントリスナのコレクションを生成
    // this.targets の各アイテムに親要素 parent の項目を追加
    MJL.Rollover.prototype._setTargets = function() {
        var parents  = MJL.getElementsByClassName(document, this.enable);
        var nparents = parents.length;
        for (var p = 0; p < nparents; p++) {
            // 取得した要素自身が対象要素の場合もありうる -> 追加
            this._setTargetsSub(parents[p], parents[p])
            // 取得した要素の子孫要素に対し検索をかける
            for (var n in this._TYPES) {
                var childs = parents[p].getElementsByTagName(n);
                var nchilds = childs.length;
                for (var c = 0; c < nchilds; c++) {
                    this._setTargetsSub(parents[p], childs[c]);
                }
            }
        }
    };

    // 実際に this.targets へ値を設定 (_setTargets 補助)
    MJL.Rollover.prototype._setTargetsSub = function(parent, target) {
        if (this._isTarget(target)) {
            var name = target.nodeName.toLowerCase();
            var getters = this._TYPES[name].getters;
            var item = {
                element : target,
                parent  : parent,
                events  : {}
            };
            for (var v in getters) {
                // call しないと this が違ったままなので注意
                item.events[v] = getters[v].call(this, item);
            }
            this.targets.push(item);
        }
    };

    // 手動アクティブの是非
    // this.targets アイテム仕様に対応
    MJL.Rollover.prototype._isActive = function(target) {
        var element = target.element;
        var parent  = target.parent
        do {
            if (MJL.hasClassName(element, active)) {
                return true;
            }
        } while (
            !MJL.isSameNode(element, parent) && (element = element.parentNode)
        );
        return false;
    };

    // 対象にする要素の種類-条件対応
    // this.targets アイテム仕様に対応
    MJL.Rollover.prototype._TYPES = (function() {
        function getEventGetter(type) {
            return function(target) {
                var off = target.element.getAttribute("src");
                var on  = off.replace(
                    this.options.switchers.on.cond,
                    this.options.switchers.on.replace
                );
                var obj = this;
                var sw  = ("on" === type) ? true : false;
                this._addCache(on);
                return function(event) {
                    target.element.setAttribute(
                        "src",
                        (obj._isActive(target) || sw) ? on : off
                    );
                };
            };
        }
        // イベント種類変換条件
        var event2event = {"focus" : "mouseover", "blur" : "mouseout"};
        function getDescendantEventGetter(type) {
            // this.targets への push が行われる時に実行される
            return function(target) {
                var imgs = target.element.getElementsByTagName("img");
                var nimgs = imgs.length;
                return function(event) {
                    var type = event2event[event.type] || event.type;
                    for (var i = 0; i < nimgs; i++) {
                        // dispatch 方式に変更
                        MJL.event.dispatch(imgs[i], type, false);
                    }
                };
            };
        }
        // 以降はオリジナルから変更なし
        return {
            img : {
                isTarget : function() { return true; },
                getters : {
                    mouseover : getEventGetter("on"),
                    mouseout  : getEventGetter("off")
                }
            },
            input : {
                isTarget : function(elem) {
                    return ("image" == elem.getAttribute("type"));
                },
                getters : {
                    mouseover : getEventGetter("on"),
                    mouseout  : getEventGetter("off"),
                    focus     : getEventGetter("on"),
                    blur      : getEventGetter("off")
                }
            },
            a : {
                isTarget : function(elem) {
                    var imgs = elem.getElementsByTagName("img");
                    return (0 < imgs.length);
                },
                getters : {
                    focus : getDescendantEventGetter("on"),
                    blur  : getDescendantEventGetter("off")
                }
            }
        };
    })();
})(window, document /*, undefined */);


// ----------------------------------------------------------------------------
// jquery Extensions
// ----------------------------------------------------------------------------
(function($){
    // --------------------------------
    // print 用スタイル読込
    // --------------------------------
    /\?mode=print/.test(location.search || '') && (function() {															
        // script 要素ロード時に W3C DOM で link 要素を追加 (遅延防止)
        var cssHref = "/cm/file/70CM/css/set_print.css";
        var link = document.createElement('link');
        var head = document.getElementsByTagName('head')[0];
        link.setAttribute('rel', 'stylesheet');
        link.setAttribute('type', 'text/css');
        link.setAttribute('href', cssHref);
        link.setAttribute('media', 'screen,print');
        head.appendChild(link);

        // クローズボタンを挿入
        $(function() {	   
            $("#Footer").after('<div id="WindowClose"><p><a href="#" title="close">close</a></p>');
        });
    })();

    $(function(){
        $.mainvisualMap();
        $.siteSearch();
        $.styleChanger();
        $.winClose();
        $.set_links({ "/cm/": { width:700, height: 600, toolbar: "yes", scrollbars: "yes" } });
    });

    // --------------------------------
    // メインビジュアルマップ
    // --------------------------------
    $.mainvisualMap = function(settings) {
        $('.map img').each(function() {
            // 対象 img 要素
            var img = $(this);
            // イメージマップ 画像パス情報
            var base = img.attr('src').match(/(.+\/)(.+)(\.[^\.]+)$/);
            // SURFPOINT 経由で取得した閲覧者地域 ID
            var prefId = ('SURFPOINT' in window) ? SURFPOINT.getPrefCode() : '';
            // 通常状態の画像パス
            var offPath = base[0];
            // 画像キャッシュ
            var cache = {
                // id 属性値 : キャッシュ用 img 要素 DOM ノード
            };
            // 閲覧者地域の該当画像をアクティベート
            prefId && setTimeout(function() {
                // 最初はデフォルトの画像を見せたいので遅延実行
                img.attr('src', base[1]+prefId+base[3]);
            }, 2000);
            // area 要素解析
            $('#mainvisual > area').each(function() {
                var obj    = $(this);
                var id     = obj.attr('id');
                var onPath = base[1]+id+base[3]; // ロールオーバー画像パス
                // 画像キャッシュ生成
                cache[id] = document.createElement('img');
                cache[id].setAttribute('src', onPath);
                // イベント設定
                obj.bind('mouseover focus', function() {
                    img.attr('src', onPath);
                }).bind('mouseout blur', function() {
                    img.attr('src', offPath);
                });
            });
        });
    };

    // --------------------------------
    // サイト内検索
    // --------------------------------
    $.siteSearch = function(settings) {
        $("input.Search-Text").val("サイト内検索").css("color","#333").focus(function(){
            if(this.value == "サイト内検索"){
                $(this).val("").css("color","#000");
            }
        }).blur(function(){
            if(this.value == ""){
                $(this).val("サイト内検索").css("color","#333");
            }
            if(this.value != "サイト内検索"){
                $(this).css("color","#333");
            }
        });
    };

    //プリンタフレンドリー
    $.styleChanger = function(settings){					
        var c = $.extend({
            cssSelector: '#print'
        }, settings);

        $(c.cssSelector).click(function(){										
            //ポップアップで印刷用ページを表示
            var href = window.location;
            href = href + "?mode=print";
            window.open(href,"","width=710,height=600,location=yes,toolbar=yes,menubar=yes,scrollbars=yes,status=yes,resizable=yes");
            return false;
        });

        function removeCss(){
            $('link[href='+cssHref+']').remove();
        }
    };

    // --------------------------------
    // ウィンドウクローズ
    // --------------------------------
    $.winClose = function(settings) {
        var c = $.extend({
            cssSelector: '#WindowClose a'
        }, settings);

        $(c.cssSelector).click(function(){
            closeWin();
            return false;
        });
    };

    // --------------------------------
    // ポップアップ
    // --------------------------------
    $.set_links = function( settings ){
        $("a.popup").click(function(){
            if( this.rel == "external" ){
                window.open( this.href, "_blank" );
                return false;
            };
            var params=""; var longest_match=0; var s_id="";
            for(i in settings){
                if(i.match(">>")){
                    data = i.split(">>");
                    if( String(window.location).match(data[0]) && this.href.match(data[1]) ){ s_id = i; break; };
                };
                if( i.match(/^\.(.*)/) ){
                    var m_class = new RegExp( "\\b"+RegExp.$1+"\\b" );
                    if( this.className.match( m_class ) ){
                        for(param in settings[i]){ if(param=="name"){ continue; }; params += param + "=" + settings[i][param] + ","; };
                        if( this.href.match(/width=(\d+).*height=(\d+)/) ){
                            var _w = RegExp.$1; var _h = RegExp.$2;
                            if(params.match("width")&&params.match("height")){
                                params = params.replace(/width=\d+/,"width="+_w);
                                params = params.replace(/height=\d+/,"height="+_h);
                            } else { params += "width="+_w+",height="+_h; };
                        };
                        var w_name = settings[i]['name'] ? settings[i]['name'] : "popup";
                        window.open( this.href, w_name, params.split(/,$/)[0] ).focus();
                        this.blur();
                        return false;
                    };
                }else{
                    if( this.href.match(i) && i.length>longest_match ){ s_id = i; longest_match = i.length; };
                };
            };
            for(param in settings[s_id]){ if(param=="name"){ continue; }; params += param + "=" + settings[s_id][param] + ","; };
            var w_name = settings[s_id]['name'] ? settings[s_id]['name'] : "popup";
            window.open( this.href, w_name, params.split(/,$/)[0] ).focus();
            this.blur();
            return false;
        });
        return this;
    };
})(jQuery);

function closeWin() {
    window.opener = window;
    var win = window.open(location.href,"_self");
    win.close();
}

    // --------------------------------
    // オプションナビゲーション 
    // --------------------------------
	$().ready(function(){					   
		$(".slide_text01").hide();
		$(".slide_btn01").toggle(function(){
			$(".slide_text01").slideDown(function(){
				$(".slide_btn01 a").css("background","url(/cm/image/70CM/shared/icon_link_bottom.gif) no-repeat 0 0.1em");
			});
		},function(){
			$(".slide_text01").slideUp(function(){
				$(".slide_btn01 a").css("background","url(/cm/image/70CM/shared/icon_link_right-bak.gif) no-repeat 0 0.1em");
			});
		});
	});

