(function(){

    // body.onload
    /*@cc_on
      /*@if (@_win32)
	document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
	var script = document.getElementById("__ie_onload");
	script.onreadystatechange = function() {
	    if (this.readyState == "complete") {
		init(); // call the onload handler
	    }
	};
      @else @*/
    //safari
    if (/WebKit/i.test(navigator.userAgent)) { // sniff
	var _timer = setInterval(function() {
	    if (/loaded|complete/.test(document.readyState)) {
		clearInterval(_timer);
		init(); // call the onload handler
	    }
	}, 10);
    }else if (document.addEventListener) {
	// Firefox, Opera
	document.addEventListener("DOMContentLoaded", init, false);
    }
    /*@end
    @*/

    // イベントを追加する関数
    // addEvent(eventTarget, eventName, func)
    //  eventTarget : イベントを追加する要素
    //  eventName : イベント名 load, mouseover など on を除く
    //  func : 割り当てる関数
    var addEvent = function(eventTarget,eventName,func){};
    if(window.addEventListener){ // モダンブラウザ
        addEvent = function(eventTarget,eventName,func){eventTarget.addEventListener(eventName, func, false);}
    }else if(window.attachEvent){ // IE
        addEvent = function(eventTarget,eventName,func){eventTarget.attachEvent('on'+eventName, function(){func.apply(eventTarget);});}
    }


    function init(){
        activateSelfBtn('navi');
        setRollOver2();
        setTargetWindow();
    }

    // 指定したid要素内の自分自身へのリンクからhrefを撤去し、
    // イメージをロールオーバーのものにする関数
    function activateSelfBtn(id){
        var links = document.getElementById(id).getElementsByTagName('a');
        for(var i=0; i<links.length; i++){
            link = links[i];
            if((location.href.replace(/index\.html$/,'')) == (link.href.replace(/index\.html$/,''))){
                link.removeAttribute('href');
                //ボタンをロールオーバー画像にする
                var btn = link.getElementsByTagName('img')[0];
                var splitUrl = btn.src.split('_rollout.');
                if(!splitUrl[1])break;
                btn.src = splitUrl[0]+'_rollover.'+splitUrl[1];
                break;
            }
        }
    }

    // ロールオーバー割り当て関数
    function setRollOver2(){
        if(!document.images){return;}
        var imgs = document.images;
        var insert = [];
        for(var i=0;i<imgs.length;i++){
            var splitname = imgs[i].src.split('_rollout.');
            
            if((!splitname[1])||(imgs[i].parentNode.tagName!='A'))continue;

            var rolloverImg = document.createElement('img');
            rolloverImg.src = splitname[0]+'_rollover.'+splitname[1];
            var alpha = 0;
            rolloverImg.currentAlpha = alpha;
            rolloverImg.style.opacity = alpha/100;
            rolloverImg.style.filter = 'alpha(opacity='+alpha+')';
            rolloverImg.style.position = 'absolute';

            //ロールオーバー・アウト処理それぞれを設定
            addEvent(rolloverImg,'mouseover',function(){setFader(this,100);});
            addEvent(rolloverImg,'mouseout',function(){setFader(this,0);});

            // 後で追加するために追加場所と共に保存しておく
            // この時点で追加するとdocument.imagesが書き換わって不都合
            insert[insert.length] = {position:imgs[i],element:rolloverImg};
            
        }
        // ↑で作ったロールオーバー画像を追加
        for(var i=0;i<insert.length;i++){
            var parent = insert[i].position.parentNode;
            parent.insertBefore(insert[i].element,insert[i].position);
        }
    }

    // 指定要素を指定透明度にするためのフェードアニメを設定する関数

    function setFader(targetObj,targetAlpha){
        targetObj.targetAlpha = targetAlpha;
        if(targetObj.currentAlpha==undefined){
            targetObj.currentAlpha = 100;
        }
        if(targetObj.currentAlpha==targetObj.targetAlpha){
            return;
        }
        if(!targetObj.fading){
            if(!targetObj.fader){
                targetObj.fader = fader;
            }
            targetObj.fading = true;
            targetObj.fader();
        }
    }

    // アルファ値をターゲット値に近づける関数
    // ターゲット値になったら終了

    function fader(){
        this.currentAlpha += (this.targetAlpha - this.currentAlpha)*0.3;
        if(Math.abs(this.currentAlpha-this.targetAlpha)<1){
            this.currentAlpha = this.targetAlpha;
            this.fading = false;
        }
        var alpha = parseInt(this.currentAlpha);
        this.style.opacity = alpha/100;
        this.style.filter = 'alpha(opacity='+alpha+')';
        if(this.fading){
            var scope = this;
            setTimeout(function(){fader.apply(scope)},30);
        }
    }


    // 外部リンクは新しいWindowを開く設定にする
    function setTargetWindow(){
        var links = document.links;
        for(var i=0,linksLength=links.length;i<linksLength;i++){
            // target属性がもともとあったら何もしない
            if(links[i].target)continue;
            // リンク先が異なるドメイン、またはhttp://から始まっている場合
            if( (links[i].hostname != document.location.hostname)
                || (links[i].getAttribute('href',2).match(/^https?:\/\//)) ){
                addEvent(links[i],'click',openNewWindow);
            }
        }
        // ブラウザのデフォルトイベントキャンセル設定
    }
    function openNewWindow(evt){
        if (evt) { // モダンブラウザ
            evt.preventDefault();
            window.open(this.href, '_blank');
        } else if (window.event) { // IE
            window.event.returnValue = false;
            window.open(this.href, '_blank');
        }
    }

})();

