/*!
 * jQuery hpsrollover plugin: rollover
 * ロールオーバープラグイン
 * [機能]
 * ロールオーバー画像の先読み
 * 
 * version 1.01 (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.fn.hpsAutoScroll = function (options_) {
        var default_options = {duration:500};
        var options = jQuery.extend(
            {},
            default_options, 
            options_
        );
        if (location.hash.match(/#!(.+)$/)) {
            jQuery.hpsScrollTo(RegExp.$1, options.duration)
        }
        $(this).each(function(){
            var href = $(this).attr('href');
            if (href.match(/#!(.+)$/)) {
                var anchor = RegExp.$1;
                $(this).click(function(){
                    jQuery.hpsScrollTo(anchor, options.duration)
                    
                });
            }
            
        });
//        alert(location.hash);
    }; 
        
    jQuery.hpsScrollTo = function(anchor, duration) {
        var targetOffset = 0;
        var target = $('#anchor_' + anchor);
        if (target.size()) {
            targetOffset = target.offset().top - 10;
            // scrollTopの変更をアニメーション
            $('html,body').animate({scrollTop: targetOffset}, duration);
        }
    };
 
 
 
})(jQuery);

