// script.js

(function ($) {

    $(function () {

        $('div.pageInner').each(function () {
            var $this = $(this),
                $body = $('body'),
                $window = $(window);
            $window.bind('scroll', function () {
                if ($this.height() < $window.height()) {
                    $this.height('100%');
                } else {
                    $this.height('auto');
                }
            });
            $window.trigger('scroll');
        });

        $('a[href^="http"]').filter(function () {
            return this.hostname !== location.hostname
        }).addClass('external');

        $('a.external').live('click', function (e) {
            e.preventDefault();
            window.open(this.href);
        });

        $('input').each(function () {
            var $this = $(this),
                typeClass = $this.attr('type');
            $this.addClass(typeClass);
            if (!$.ua.browser.msie || $.ua.browser.versionMajor > 6) {
                if (/text|email|tel/.test(typeClass)) {
                    $this.wrap('<span class="control-text"/>');
                }
            }
        });

        $('.uniform').uniform({
            selectClass:   'uniform-select',
            radioClass:    'uniform-radio',
            checkboxClass: 'uniform-checkbox',
            fileClass:     'uniform-file'
        });

        $('img.rollover, input.rollover').rollover();

        $('header.pageHeader').floatingWidget();

        $('nav.primaryNav').find('a').each(function () {
            var $this = $(this),
                $imgEn = $this.find('img.en'),
                $imgJa = $this.find('img.ja').hide();
            if ($.ua.browser.msie && $.ua.browser.versionMajor < 7) {
                $this.hover(function () {
                    $imgEn.hide();
                    $imgJa.show();
                }, function () {
                    $imgJa.hide();
                    $imgEn.show();
                });
            } else {
                $this.hover(function () {
                    $imgEn.fadeOut(200);
                    $imgJa.fadeIn(200);
                }, function () {
                    $imgJa.fadeOut(200);
                    $imgEn.fadeIn(200);
                });
            };
        });

        $('div.extraMenuWrapper').each(function () {
            var collapsedClass = 'collapsed',
                expandedClass = 'expanded',
                alphaValue = ($.support.opacity)? 0.75: 1,
                $wrapper = $(this).addClass(collapsedClass).css({ opacity: alphaValue }),
                $body = $wrapper.find('div.extraMenuBody'),
                $header = $wrapper.find('div.extraMenuHeader');
            if (!$.cookie('visited')) {
                $wrapper.animate({ opacity: 1 }, 200);
                $body.slideDown(600, 'easeOutQuart', function () {
                    $body.delay(1000).slideUp(600, 'easeOutQuart', function () {
                        $wrapper.animate({ opacity: alphaValue }, 200).addClass(collapsedClass).removeClass(expandedClass);
                    });
                });
                $.cookie('visited', 'yes', { expires: 1, path: '/' });
            }
            $header.bind({
                'mouseenter': function () {
                    if ($body.is(':visible')) {
                        $header.data('hover', true);
                        setTimeout(function () {
                            if ($header.data('hover')) {
                                $body.slideUp(600, 'easeOutQuart', function () {
                                    $wrapper.animate({ opacity: alphaValue }, 200).addClass(collapsedClass).removeClass(expandedClass);
                                });
                            }
                        }, 200);
                    } else {
                        $body.slideDown(600, 'easeOutQuart', function () {});
                        $wrapper.animate({ opacity: 1 }, 200).removeClass(collapsedClass).addClass(expandedClass);
                    }
                },
                'mouseleave': function () {
                    if ($body.is(':visible')) {
                        $header.data('hover', false);
                    }
                }
            });
        });

        $('div.imageGallery-home').find('img.image').maxImage({
            isBackground: true,
            slideShow: true,
            slideShowTitle: false,
            slideDelay: 9,
            slideFadeInDurationFirst: 3, // fade-in duration of 1st slide
            slideFadeInDuration: 3,
            slideFadeOutDuration: 3,
            maxFollows: 'height',
            overflow: 'auto',
            resizeMsg: {show: false}
        });

        $('p.messageTextHeadline, p.messageText').each(function (i) {
            if (!Modernizr.rgba) {
                return;
            }
            var $this = $(this),
                delay = $this.data('message-text-delay') || 0;
            $this.delay(1500 * i + 500 + delay).animate({ opacity: 1 }, 1000);
        });

        $('#imageGallery-facility-slides').cycle({
            speed: 400,
            timeout: 0,
            pager: '#imageGallery-facility-nav',
            pagerAnchorBuilder: function(idx, slide) { 
                return '#imageGallery-facility-nav li:eq(' + idx + ') a'; 
            }
        });

        $('p.backToTopLink a, p.backToTOCLink a, #toc a').smoothScroll({ easing: 'easeOutExpo' });

    });

    $.fn.smoothScroll = function (options) {
        var opts = $.extend({
                duration: 400,
                easing: 'swing'
            }, options);
        return this.each(function () {
            var $this = $(this),
                h = this.hash;
            $this.click(function (event) {
                var targetOffset = $(h).offset().top,
                    documentHeight = $(document).height(),
                    windowHeight = $(window).height();
                if ((documentHeight - targetOffset) < windowHeight) {
                    targetOffset = (documentHeight - windowHeight);
                }
                event.preventDefault();
                $('html, body').queue([]).stop();
                $('html, body').animate({ scrollTop: targetOffset }, opts.duration, opts.easing, function () {
                    location.hash = h;
                });
            });
        });
    };

})(jQuery);

