/*//////////////////////////////////////////////////////////////////////////////

common.js
多田屋ブログ 共通初期化JS
	
//////////////////////////////////////////////////////////////////////////////*/
this.window.name = "window_blog";

$(function(){
	/**
	 * img要素にロールオーバー時のエフェクトを設定
	 */
	$("img.imgHover").imgHover({ suffix : '_on' });
	
	if ($('html').hasClass("ie8") || $('html').hasClass("ie7")){
		$("img.imgCrossFade").imgHover({ suffix : '_on' });
	} else {
		$("img.imgCrossFade").imgCrossFade({ suffix : '_on' });
	}
	
});

/*******************************************************************************
 * jquery.imgUtils.js
 *
 * @author
 *    satoshi manaka(spfdesign Inc.)
 * @version
 *    1.0.0
 * @howto
 *    jQuery('selectors').imgHover({ suffix : '_on' });
*******************************************************************************/

(function($) {
$.extend({
	combineSuffix: function(imgpath, suffix) {
		var dot = imgpath.lastIndexOf('.');
		var suffixDot = imgpath.search(new RegExp(suffix+'\\.'));
		if(suffixDot != -1) {
			return imgpath.substr(0, suffixDot) + suffix + imgpath.substr(dot);
		} else {
			return imgpath.substr(0, dot) + suffix + imgpath.substr(dot);
		}
	}
});
})(jQuery);

(function($) {
$.extend({
	getUA: function() {
		return {
			ltIE6   : typeof window.addEventListener == "undefined" && typeof document.documentElement.style.maxHeight == "undefined",
			ltIE7   : typeof window.addEventListener == "undefined" && typeof document.querySelectorAll == "undefined",
			ltIE8   : typeof window.addEventListener == "undefined" && typeof document.getElementsByClassName == "undefined",
			ie      : document.uniqueID,
			firefox : window.globalStorage,
			opera   : window.opera,
			webkit  : !document.uniqueID && !window.opera && !window.globalStorage && window.localStorage,
			mobile  : /android|iphone|ipad|ipod/i.test(navigator.userAgent.toLowerCase())
		}
	}
});
})(jQuery);

/*------------------------------------------------------------------------------
	Image Hover 
------------------------------------------------------------------------------*/
(function($) {
$.fn.extend({
	imgHover : function() {
		var defaults = {
			suffix : '_on'
		}
		//
		var config = $.extend(defaults, $.makeArray(arguments).shift());
		var _window = $(window);
		//
		return this.each(function() {
			var imgsrc = this.src;
			var imgsrc_on = $.combineSuffix(imgsrc, config.suffix);
			new Image().src = imgsrc_on;
			//
			var _this = $(this);
			_this.data('src', imgsrc);
			_this.data('src_o', imgsrc_on);
			_this.hover (
				function() {
					this.src = imgsrc_on;
				},
				function() {
					this.src = imgsrc;
				}
			);
			_window.unload(function(e){
				_this.attr('src', _this.data('src'));
			});
		});
	}
});
})(jQuery);

/*------------------------------------------------------------------------------
	Image crossFade 
------------------------------------------------------------------------------*/
(function($) {
$.fn.extend({
	imgCrossFade : function() {
		var defaults = {
			suffix : '_on'
		}
		//
		var config = $.extend(defaults, $.makeArray(arguments).shift());
		var _window = $(window);
		//
		this.each(function() {
			var imgsrc = this.src;
			var imgsrc_on = $.combineSuffix(imgsrc, config.suffix);
			var _this = $(this).css("position", "absolute");
			var onObj = $('<span />')
							.css({
								position         : "absolute",
								width            : _this.width(),
								height           : _this.height()
							})
							.css("background-image", "url(" + imgsrc_on + ")")
							.addClass("rollOverElm")
							.fadeTo(0, 0);
			_this.parent().prepend(onObj);
			//
			_this.data('src', imgsrc);
			_this.data('src_o', imgsrc_on);
			_this.hover (
				function() {
					onObj.stop().fadeTo(400, 1);
					_this.stop().fadeTo(400, 0);
				},
				function() {
					onObj.stop().fadeTo(400, 0);
					_this.stop().fadeTo(400, 1);
				}
			);
			_window.unload(function(e){
				//_this.attr('src', _this.data('src'));
			});
		});
		
		// method chain
		return this;
	}
});
})(jQuery);


var currentX;
var currentY;
var targetY = 0;
var scrollY = 0;
var scrollHeight;
var timeoutId;



//////////////////////////////////////////////////



function wheel(event){
	var delta = 0;
	
	if (!event) {
		event = window.event;
	}
	
	if (event.wheelDelta) {
		delta = -event.wheelDelta / 120; 
	} else if (event.detail) {
		delta = event.detail / 3;
	}
	
	if (delta) {
		handle(delta);
	}
	
	if (event.preventDefault) {
		event.preventDefault();
	} else {
		event.returnValue = false;
	}
}



function handle(_delta) {
	clearTimeout(timeoutId);
	
	currentX = document.documentElement.scrollLeft || document.body.scrollLeft;
	currentY = document.documentElement.scrollTop || document.body.scrollTop;
	scrollHeight = (document.documentElement.scrollHeight || document.body.scrollHeight) - window.innerHeight;
	scrollY = currentY;
	targetY = currentY + _delta * 200;
	if(targetY < 0) {
		targetY = 0;
	}
	if(targetY > scrollHeight) {
		targetY = scrollHeight;
	}
	
	engine = function() {
		if(Math.abs(scrollY - targetY) <= 1){
			scrollY = Math.round(targetY);
			window.scroll(currentX, scrollY);
			clearTimeout(timeoutId);
		} else {
			scrollY -= (scrollY - targetY) / 5;
			window.scroll(currentX, scrollY);
			timeoutId = setTimeout(engine, 25);
		}
	}
	
	engine();
}



//////////////////////////////////////////////////



if (navigator.appVersion.indexOf("Win") != -1 && navigator.userAgent.indexOf("MSIE") == -1) {
	if (window.addEventListener) {
		window.addEventListener('DOMMouseScroll', wheel, false);
		window.onmousewheel = document.onmousewheel = wheel;
	}
}

