﻿/*
---------------------------------------------------------
	smartRollover
	*Modify smartRollover.js
	*http://css-happylife.com/log/javascript/000157.shtml
---------------------------------------------------------
*/

function smartOver() {
    smartRollover('wrapper'); //ロールオーバーを適用させたい箇所のIDを指定
}

function smartRollover(idName) {
    if (document.getElementsByTagName) {
        var images = document.getElementById(idName).getElementsByTagName("img");
        for (var i = 0; i < images.length; i++) {
            if (images[i].getAttribute("src").match(/_off\./)) {
                fileName =  new Array(images[i].getAttribute("src").replace("_off.", "_on."));
                preImages =  new Array();
                for (j = 0; j < fileName.length; j++) {
                    preImages[j] =  new Image();
                    preImages[j].src = fileName[j]; //「_on」の画像をプリロード
                }
                images[i].onmouseover = function () {
                    this.setAttribute("src", this.getAttribute("src").replace("_off.", "_on.")); //マウスオーバーで_off→_on
                }
                images[i].onmouseout = function () {
                    this.setAttribute("src", this.getAttribute("src").replace("_on.", "_off.")); //マウスが離れたら_on→_off
                }
            }
        }
    }
}

if (window.addEventListener) {
    window.addEventListener("load", smartOver, false);
    //実行
}
else if (window.attachEvent) {
    window.attachEvent("onload", smartOver);
}
else {
    window.onload = smartOver;
}


// アンカーリンクのスムーズスクロール（※エンコードをHTMLと合わせる）
/**
 * scrollsmoothly.js
 * Copyright (c) 2008 KAZUMiX
 * http://d.hatena.ne.jp/KAZUMiX/
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 */

(function(){
    var easing = 0.25;
    var interval = 20;
    var d = document;
    var targetX = 0;
    var targetY = 0;
    var targetHash = '';
    var scrolling = false;
    var splitHref = location.href.split('#');
    var currentHref_WOHash = splitHref[0];
    var incomingHash = splitHref[1];
    var prevX = null;
    var prevY = null;

    // ドキュメント読み込み完了時にinit()を実行する
    addEvent(window, 'load', init);

    // ドキュメント読み込み完了時の処理
    function init(){
        // ページ内リンクにイベントを設定する
        setOnClickHandler();
        // 外部からページ内リンク付きで呼び出された場合
        if(incomingHash){
            if(window.attachEvent && !window.opera){
                // IEの場合はちょっと待ってからスクロール
                setTimeout(function(){scrollTo(0,0);setScroll('#'+incomingHash);},50);
            }else{
                // IE以外はそのままGO
                scrollTo(0, 0);
                setScroll('#'+incomingHash);
            }
        }
    }

    // イベントを追加する関数
    function addEvent(eventTarget, eventName, func){
        if(eventTarget.addEventListener){
            // モダンブラウザ
            eventTarget.addEventListener(eventName, func, false);
        }else if(window.attachEvent){
            // IE
            eventTarget.attachEvent('on'+eventName, function(){func.apply(eventTarget);});
        }
    }
    
    function setOnClickHandler(){
        var links = d.links;
        for(var i=0; i<links.length; i++){
            // ページ内リンクならスクロールさせる
            var link = links[i];
            var splitLinkHref = link.href.split('#');
            if(currentHref_WOHash == splitLinkHref[0] && d.getElementById(splitLinkHref[1])){
                addEvent(link, 'click', startScroll);
            }
        }
    }

    function startScroll(event){
        // リンクのデフォルト動作を殺す
        if(event){ // モダンブラウザ
            event.preventDefault();
            //alert('modern');
        }else if(window.event){ // IE
            window.event.returnValue = false;
            //alert('ie');
        }
        // thisは呼び出し元になってる
        setScroll(this.hash);
    }

    function setScroll(hash){
        // ハッシュからターゲット要素の座標をゲットする
        var targetEle = d.getElementById(hash.substr(1));
        if(!targetEle)return;
        // スクロール先座標をセットする
        var ele = targetEle
        var x = 0;
        var y = 0;
        while(ele){
            x += ele.offsetLeft;
            y += ele.offsetTop;
            ele = ele.offsetParent;
        }
        targetX = x;
        targetY = y;
        targetHash = hash;
        // スクロール停止中ならスクロール開始
        if(!scrolling){
            scrolling = true;
            scroll();
        }
    }

    function scroll(){
        var currentX = d.documentElement.scrollLeft||d.body.scrollLeft;
        var currentY = d.documentElement.scrollTop||d.body.scrollTop;
        var vx = (targetX - currentX) * easing;
        var vy = (targetY - currentY) * easing;
        var nextX = currentX + vx;
        var nextY = currentY + vy;
        if((Math.abs(vx) < 1 && Math.abs(vy) < 1)
           || (prevX === currentX && prevY === currentY)){
            // 目標座標付近に到達していたら終了
            scrollTo(targetX, targetY);
            scrolling = false;
            location.hash = targetHash;
            prevX = prevY = null;
            return;
        }else{
            // 繰り返し
            scrollTo(parseInt(nextX), parseInt(nextY));
            prevX = currentX;
            prevY = currentY;
            var scope = this;
            setTimeout(function(){scroll.apply(scope)},interval);
        }
    }

}());


/*
 * IE PNG Fix v1.4
 *
 * Copyright (c) 2006 Takashi Aida http://www.isella.com/aod2/
 *
 */

// IE5.5+ PNG Alpha Fix v1.0RC4
// (c) 2004-2005 Angus Turnbull http://www.twinhelix.com

// This is licensed under the CC-GNU LGPL, version 2.1 or later.
// For details, see: http://creativecommons.org/licenses/LGPL/2.1/

if (typeof IEPNGFIX == 'undefined') {
//--============================================================================

var IEPNGFIX = {
	blank:  '/common/img/blank.gif',
	filter: 'DXImageTransform.Microsoft.AlphaImageLoader',

	fixit: function (elem, src, method) {
		if (elem.filters[this.filter]) {
			var filter = elem.filters[this.filter];
			filter.enabled = true;
			filter.src = src;
			filter.sizingMethod = method;
		}
		else {
			elem.style.filter = 'progid:' + this.filter +
				'(src="' + src + '",sizingMethod="' + method + '")';
		}
	},

	fixwidth: function(elem) {
		if (elem.currentStyle.width == 'auto' &&
			elem.currentStyle.height == 'auto') {
			elem.style.width = elem.offsetWidth + 'px';
		}
	},

	fixchild: function(elem, recursive) {
		if (!/MSIE (5\.5|6\.|7\.)/.test(navigator.userAgent)) return;

		for (var i = 0, n = elem.childNodes.length; i < n; i++) {
			var childNode = elem.childNodes[i];
			if (childNode.style) {
				if (childNode.style.position) {
					childNode.style.position = childNode.style.position;
				}
				else {
					childNode.style.position = 'relative';
				}
			}
			if (recursive && childNode.hasChildNodes()) {
				this.fixchild(childNode, recursive);
			}
		}
	},

	fix: function(elem) {
		if (!/MSIE (5\.5|6\.|7\.)/.test(navigator.userAgent)) return;

		var bgImg =
			elem.currentStyle.backgroundImage || elem.style.backgroundImage;

		if (elem.tagName == 'IMG') {
			if ((/\.png$/i).test(elem.src)) {
				this.fixwidth(elem);
				this.fixit(elem, elem.src, 'scale');
				elem.src = this.blank;
				elem.runtimeStyle.behavior = 'none';
			}
		}
		else if (bgImg && bgImg != 'none') {
			if (bgImg.match(/^url[("']+(.*\.png)[)"']+$/i)) {
				var s = RegExp.$1;
				this.fixwidth(elem);
				elem.style.backgroundImage = 'none';
				this.fixit(elem, s, 'scale'); // crop | image | scale

				if (elem.tagName == 'A' && elem.style) {
					if (!elem.style.cursor) {
						elem.style.cursor = 'pointer';
					}
				}

				this.fixchild(elem);
				elem.runtimeStyle.behavior = 'none';
			}
		}
	},

	hover: function(elem, hvImg) {
		var bgImg = elem.style.backgroundImage;

		if (!bgImg && elem.currentStyle) bgImg = elem.currentStyle.backgroundImage;

		if (elem.tagName == 'IMG' && hvImg) {
			var image = elem.src;
			elem.onmouseover = function() {
				elem.src = hvImg;
				IEPNGFIX.fix(elem);
			};
			elem.onmouseout = function() {
				elem.src = image;
				IEPNGFIX.fix(elem);
			};
		}
		else if (bgImg && bgImg != 'none' && hvImg) {
			elem.onmouseover = function() {
				elem.style.backgroundImage = 'url(' + hvImg + ')';
				IEPNGFIX.fix(elem);
			};
			elem.onmouseout = function() {
				elem.style.backgroundImage = bgImg;
				IEPNGFIX.fix(elem);
			};
		}

		IEPNGFIX.fix(elem);
	}
};

//--============================================================================
} // end if (typeof IEPNGFIX == 'undefined')


