var isMobile = (navigator.userAgent.indexOf("Mobile") != -1);

var pageNavigator = {

    $pages: null,
    $currentPage: null,
    mapping: {},

    init: function()
    {
        this.$pages = $('div.page');
        this.$pages.each(function()
        {
            var id = $(this).attr('id');
            pageNavigator.mapping[id] = $(this);
        });

       
         $(window).scroll(this.findCurrentPageByScroll);
        
    },

    gotoPage: function(pageName)
    {
        var pageUrl = urlMapping[pageName];

        if (pageNavigator.mapping[pageUrl] != null)
        {
            var $findPage = pageNavigator.mapping[pageUrl];
            var offset = $findPage.offset();

            pageNavigator.$currentPage = $findPage;


            if (isMobile)
            {
                window.location.hash = "#" + pageUrl;
                return;
            }

            windowSlide.slideTo(offset.top);
        }
    },

    positionCurrentPage: function()
    {
        if (pageNavigator.$currentPage != null)
        {
            var offset = pageNavigator.$currentPage.offset();

            windowSlide.slideWithoutAnimationTo(offset.top);
        }
    },

    findCurrentPageByScroll: function()
    {
        var currentScrollTop = $(window).scrollTop();
        pageNavigator.$pages.each(function()
        {
            var height = $(this).height();
            var scrollTop = currentScrollTop + (height / 2)

            var offset = $(this).offset();
            var maxOffset = offset.top + height;
            
            if (scrollTop < maxOffset && scrollTop >= offset.top)
            {
                if (pageNavigator.$currentPage == null && currentScrollTop > 100)
                {
                    var id = $(this).attr('id');
                    pageNavigator.gotoPage(id);
                }
                
                window.location.hash = '#' + $(this).children('.page-url').text();
                pageNavigator.$currentPage = $(this);
                setWindowPageTitle(pageNavigator.$currentPage);
                return false;
            }
        });
    }
};


var windowSlide = {

    slideWithoutAnimationTo: function(offsetY)
    {
        $('html,body').animate({
            scrollTop: offsetY
        }, 0);
    },

    slideTo: function(offsetY)
    {

        // easings kan findes på
        // http://jqueryui.com/demos/effect/#easing
        // tab til højre Easing showcase

        if (isMobile)
        {
			//offsetY = offsetY - parseInt($(window).scrollTop());
			//$(window).scrollTop(offsetY);
            //return;
        }

        $('html,body').stop().animate(
        {
            scrollTop: offsetY
        }, 1000, 'easeInOutQuad', function()
        {
            setWindowPageTitle(pageNavigator.$currentPage);
        });
    }
};

function setWindowPageTitle($page)
{
    var newTitle = $page.children('.page-title').text();
    var prefixs = document.title.split("-");
    if (prefixs.length > 1)
    {
        newTitle = $.trim(prefixs[0]) + ' - ' + newTitle;
    }

    document.title = newTitle;
}
