/*!
 * jQuery hpsrollover plugin: rollover
 * ロールオーバープラグイン
 * [機能]
 * ロールオーバー画像の先読み
 * 
 * version 1.00 (2010-10-07)
 * Requires jQuery v1.3.2 or later
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * Author: HomePageShop http://www.hp-shop.co.jp
 */

;(function(jQuery) {
	var loaded = {};

	/**
	 * ロールオーバー画像先読み処理
	 * 
	 * ロールオーバー画像を先読みして、ロードに成功したらロード済みに設定する。
	 * 
	 * @aceess publick
	 */
	var preLoadImage = function(basename, ext, postfix) {
		var regex = new RegExp(postfix + "$");
		if (!basename.match(regex)) {
			var imgObject = new Image;
			imgObject.onload = function() {
				loaded[basename + ext] = 1;
			}
			imgObject.src = basename + postfix + ext;
		}
	};

	jQuery.fn.hpsrollover = function(options) {
		var options = jQuery.extend(
			{},
			jQuery.fn.hpsrollover.defaults, 
			options
		);
		this.each(function(){
			var src = jQuery(this).attr("src");
			if (src.match(/^(.+)(\.(?:jpg|gif|png))$/)) {
    			var basename = RegExp.$1;
    			var ext = RegExp.$2;
				if (options.useImage) {
					preLoadImage(basename, ext, options.postfix);
				}
				jQuery(this).hover(
					function(){
						if (loaded[src] == 1) {
							jQuery(this).attr("src", basename + options.postfix + ext);
						} else if (options.useAlpha){
							jQuery(this).fadeTo(0, options.alpha);
						}
					},
					function(){
						if (loaded[src] == 1) {
							jQuery(this).attr("src", src);
						} else if (options.useAlpha) {
							jQuery(this).fadeTo(0, 1);
						}
					}
				);
			}
		});


	};
	jQuery.fn.hpsrollover.defaults = {
		useImage: true,
		postfix: "_on",
		useAlpha: true,
		alpha: 0.7
	};

	jQuery.fn.hpsScroll = function(options) {
		var duration = 500;
		$(this).filter("a[href^='#']").click(function(){
	        $(this).blur();
    	    var href = $(this).attr("href");
    	    var targetOffset = 0;
    	    // ページtopへのアンカー以外
    	    if (href != "#top") {
    	        targetOffset = $(href).offset().top - 10;
    	    }
    	    // scrollTopの変更をアニメーション
    	    $('html,body').animate({scrollTop: targetOffset}, duration);
    	    // 通常のリンク処理をキャンセルするためにfalseを返す
    	    return false;
		});
    };
 
 
 
})(jQuery);

