(function($){
    $.gnavi = function(target, randomArr){
        var init = function(){
            var i = 0;
            for (i = 0; i < randomArr.length; i++) {
                target.css({
                    'background': 'url(/common/img/' + target.attr('class').replace('latest', '').replace(' ', '') + '_bg' + randomArr[i] + '.gif) no-repeat 50% 50px'
                });
            }
        };
        var on = function(){
            if (typeof randomArr != 'undefined') {
                if (target.css('background-position') == '50% 50px') {
                    target.css({
                        'background': 'url(/common/img/' + target.attr('class').replace('latest', '').replace(' ', '') + '_bg' + ($.shuffle(randomArr)[0]) + '.gif) no-repeat 50% 50px'
                    });
                }
            }
            target.stop().animate({
                'background-position': '50% 10px'
            }, 200, 'easeOutBack');
        };
        var off = function(){
            target.stop().animate({
                'background-position': '50% 50px'
            }, 300);
        };
        
        return {
            init: init,
            on: on,
            off: off
        }
    }
    $.base = function(){
        var init = function(){
            function initGnaviRollover(target){
                var navi = $.gnavi($(target), [0]);
                navi.init()
                $(target).hover(function(){
                    navi.on();
                }, function(){
                    navi.off();
                });
            }
            function onGnaviDtail(sTarget, eTarget){
                var i = 0;
                for (i = 0; i < sTarget.length; i++) {
                    sTarget.eq(i).hover(function(){
                        var j = 0;
                        for (j = 0; j < sTarget.length; j++) {
                            if (sTarget.index(this) == j) {
                                eTarget.eq(j).show().css({
                                    "z-index": 130
                                })
                            }
                            else {
                                eTarget.eq(j).hide().css({
                                    "z-index": 100
                                })
                            }
                        }
                    }, function(){
                    });
                }
                
                $("#gnav .gnavi-about").downMenu({
                    menu: "#head div.gnav-detail",
                    slideup: 0,
                    slidedown: 0,
                    rollOverArr: [0, 0, 0, 0, 1]
                });
                $("#gnav .gnavi-about").hover(function(){
                    var j = 0;
                    for (j = 0; j < sTarget.length; j++) {
                        if (sTarget.length == j) {
                            eTarget.eq(j).show().css({
                                "z-index": 130
                            })
                        }
                        else {
                            eTarget.eq(j).hide().css({
                                "z-index": 100
                            })
                        }
                    }
                }, function(){
                });
                $("#iconav li").hover(function(){
                    $(this).children('a').children('img').stop().animate({
                        'top': 9
                    }, 200, 'easeOutExpo');
                }, function(){
                    $(this).children('a').children('img').stop().animate({
                        'top': 16
                    }, 100);
                });
            }
            if (!$.ie6) {
                $('.fadeRollover').imgRollover({
                    inspeed: 100,
                    outspeed: 400,
                    ineasing: 'easeOutSine',
                    outeasing: 'easeOutSine'
                });
                $('.tRollover').imgRollover({
                    inspeed: 0,
                    outspeed: 0
                });
                
                onGnaviDtail($('#gnav-detail-btn>ul>li'), $('#gnav-detail-image>ul>li'));
            }
            else {
                $("div.gnav-detail").hide();
                $('#head').exFixed();
                initGnaviRollover('#gnav>ul>li.gnavi-about');
            }
            initGnaviRollover('#gnav>ul>li.gnavi-nouka');
            initGnaviRollover('#gnav>ul>li.gnavi-kitchen');
            $('.taRollover').alphaRollover({
                opacity: 0.8
            });
            
            $('#pagetop>a').smoothScroll({
                speed: 800,
                easing: 'easeOutQuart'
            });
            $('a.smoothScroll').smoothScroll({
                speed: 800,
                easing: 'easeOutQuart'
            });
            
            $("input.text").val($('input.text').attr('title')).css({
                'color': '#969696'
            });
            $('input.text').focus(function(){
                if (this.value == this.title) {
                    $(this).val('').css({
                        'color': '#000'
                    });
                }
                $('#foot-media').css('background', 'url(/common/img/foot_media_bg.gif) no-repeat bottom');
            });
            $('input').blur(function(){
                if (this.value == '') {
                    $(this).val(this.title).css({
                        'color': '#969696'
                    });
                }
                if (this.value != this.title) {
                    $(this).css({
                        'color': '#000'
                    });
                }
                $('#foot-media').css({
                    'background': 'url(/common/img/foot_media_bg.gif) no-repeat top'
                });
            });
            
            $.hashMove(-110);
            var mimizuAngle = 'right';
            
            if (!$.ie6) {
                $('#foot-extra').html('<div id="mimizuWrap"><div id="mimizu"><div/><div/>');
                $('#mimizuWrap').css({
                    width: 530,
                    height: 37,
                    'position': 'absolute',
                    top: 48,
                    left: -200
                });
                $('#mimizu').css({
                    'background': 'url(/common/img/animate/mimizu_R.png) no-repeat 0 0',
                    width: 77,
                    height: 37,
                    'position': 'absolute',
                    left: 0
                }).sprite({
                    fps: 1,
                    no_of_frames: 4,
                    on_frame: {
                        0: function(obj){
                            animateMimizu(obj);
                        },
                        1: function(obj){
                            animateMimizu(obj);
                        }
                    }
                }).active();
            }
            function animateMimizu(target){
                var leftValu = Number(target.css('left').replace('px', ''));
                if (mimizuAngle == 'right') {
                    if (leftValu >= 430) {
                        mimizuAngle = 'left';
                        $('#mimizu').css({
                            'background': 'url(/common/img/animate/mimizuL.png) no-repeat 0 0'
                        })
                    }
                }
                else {
                    if (leftValu <= 0) {
                        mimizuAngle = 'right';
                        $('#mimizu').css({
                            'background': 'url(/common/img/animate/mimizuR.png) no-repeat 0 0'
                        })
                    }
                }
                target.css({
                    left: leftValu + (mimizuAngle == 'right' ? 16 : -16)
                })
                
            }
            
            function onResize(){
                var h = $('html, body');
                $('#sky-wrap').css({
                    left: ($(window).width() - skyWidth) / 2
                });
            }
            function onTakoMove(target){
                var tTop = $.data(target.get(0), 'baseTop');
                if (tTop == parseInt(target.css('top'))) {
                    tTop += 50;
                }
                target.animate({
                    top: tTop
                }, {
                    duration: 4500 + Math.random() * 500,
                    easing: 'easeInOutSine',
                    complete: function(){
                        onTakoMove($(this));
                    }
                });
            }
            if (!$.ie6) {
                var skyHeight = 500;
                var skyWidth = 1400;
                
                $('#sky').exFixed({
                    height: skyHeight,
                    position: 'relative'
                });
                $('#sky-wrap').css({
                    width: skyWidth,
                    position: 'absolute',
                    'overflow': 'hidden'
                });
                onResize();

                $(window).bind('resize', function(){
                    onResize();
                });
            }
            $('#foot-extra').append('<div id="foot-halloween"><a href="/special/halloween/2011/"><img width="41" height="37" src="/common/img/foot_halloween.png" alt="第3回 ハロウィーンキッズ 仮装コンテンスト" /></a></div>');
            var halloween = $('#foot-halloween');
            var halloweenTimer;
            halloween.css({
                'position': 'absolute',
                top: 47,
                left: 825
            });
            halloween = halloween.children('a');
            halloween.jrumble({
                speed: 50
            });
            var demoStart = function(){
                halloween.trigger('startRumble');
                halloweenTimer = setTimeout(demoStop, 400);
            };
            var demoStop = function(){
                halloween.trigger('stopRumble');
                halloweenTimer = setTimeout(demoStart, 2000 + Math.random() * 2000);
            };
            demoStart();
            
            halloween.hover(function(){
                halloween.trigger('stopRumble');
                clearTimeout(halloweenTimer);
                halloween.trigger('startRumble');
            }, function(){
                halloween.trigger('stopRumble');
                halloweenTimer = setTimeout(demoStart, 2000);
            });
            
            /*$('body').append('<div id="bg-clouds0" class="stage"></div>');
             $('#bg-clouds0').css({
             opacity: 0,
             'z-index': 1,
             height: 160,
             'background': 'transparent url(/common/img/animate/cloud0.gif) 0 -15px repeat-x'
             }).pan({
             fps: 20,
             speed: 0.7,
             dir: 'left',
             depth: 10
             }).animate({
             opacity: 1
             }).exFixed();*/
        };
        return {
            init: init
        }
    }();
    
    // slide down
    $.fn.animationSlideDown = function(i_speed, i_callback){
        this.animationStop();
        return this.each(function(){
        
            var $target = $(this);
            var isNone = $target.css("display") == "none"
            
            $target.show();
            
            //高さを保持しておく
            $target.data("animationSlideHeight") || $target.data("animationSlideHeight", $target.height());
            $target.css("overflow", "hidden");
            
            //display noneの場合、heightを0pxに
            isNone && $target.height(0);
            
            $target.animate({
            
                height: $target.data("animationSlideHeight")
            
            }, i_speed);
            
        });
        
    }
    
    $.fn.downMenu = function(i_options){
        var $d = this;
        var o = $.extend({
            menu: ".downMenu",
            slideup: 200,
            slidedown: 200,
            rollOverArr: 'undefined'
        }, i_options);
        return this.each(function(){
            var $t = $(this);
            var $m = $t.siblings(o.menu);
            if (!$m.length) 
                $m = $(o.menu);
            if ($m.length) {
                // first
                $m.hide();
                
                var navi = $.gnavi($t, o.rollOverArr);
                navi.init()
                
                $t.hover(function(){
                    $t.stopTimer();
                    $m.animationSlideDown(o.slidedown);
                    navi.on();
                }, function(){
                    if ($m.data("input")) 
                        return;
                    $t.startTimer(function(){
                        $m.animationSlideUp(o.slideup);
                    }, 200);
                    navi.off();
                });
                $m.hover(function(){
                    $t.stopTimer();
                    $m.animationSlideDown(o.slidedown);
                    navi.on();
                }, function(){
                    if ($m.data("input")) 
                        return;
                    $t.startTimer(function(){
                        $m.animationSlideUp(o.slideup);
                    }, 200);
                    navi.off();
                });
            }
        });
    };
})(jQuery);

$(function(){
    $.base.init();
});

