(function()
{
    var contentElement = $('#content'),
        pageDir = '/pages',
        pageExtension = '.html',
        navElement = contentElement.find('.nav'),
        activeNavId = 'nav',
        newNavId = 'clonenav',
        slideSpeed = 400,
        images = [
            'img/work/page-car.gif',
            'img/work/page-components.gif',
            'img/work/page-concept.gif',
            'img/work/page-cover.gif',
            'img/work/page-medical.gif',
            'img/work/page-personal.gif',
            'img/work/page-platforms.gif',
            'img/work/page-product-suite.gif',
            'img/work/page-service.gif',
            'img/work/page-VF-new-style.gif',
            'img/work/product-suite-design.gif'
        ],
        self = {
            /**
             * set height of content equal to el
             * @param el
             */
            setContentHeight : function( el )
            {
                contentElement.css({ minHeight: el.outerHeight() });
            },
            preloadImages : function()
            {
                for (var i = 0, l = images.length; i < l; i++)
                {
                    var k = new Image();
                    k.src = images[i];
                }
            },
            setnavWidth : function()
            {
                navElement.css({ width: contentElement.outerWidth() });
            },
            /**
             * build path for pages
             * @param dirarray
             */
            buildPagePath : function( dirarray )
            {
                var dirpath = pageDir;
                for( var i=0, len=dirarray.length; i < len; i++ )
                {
                    dirpath = dirpath + '/' + dirarray[i];
                }
                return dirpath + pageExtension;
            },
            hideLoader : function()
            {
                
                $('.loader').animate({opacity: 0}, 300, function()
                {
                    $('#nav').css({
                        position: 'relative',
                        left: 0,
                        top: 0
                    });
                    
                    $('.loader').hide();
                });
            },
            /**
             * Check if new data must be loaded
             */
            loadContent : function( hesj )
            {
                $('.loader').show().css({ height: $('#wrapper').height() }).animate({opacity: 1}, 300);

                self.setContentHeight( $('#nav') );
                $('#nav').fadeOut(300, function()
                {
                    $('#nav').hide();

                    var dirarray = hesj.slice(1).split('/'),
                        file = self.buildPagePath( dirarray ),
                        cloneNav = $('#'+activeNavId).clone().appendTo(contentElement);

                    $('#main').removeClass('fullcontentwidth');
                    if( dirarray[0] === 'work' )
                    {
                        $('#main').addClass('fullcontentwidth');
                    }

                    cloneNav.attr('id', newNavId).css({
                        opacity: 0
                    });

                    $('#'+newNavId+' li .content').empty().hide();

                    /**
                     * FIXME: Checken of pagina bestaat #home gaat nu kapot
                     */
                    $('#'+newNavId+' li[data-page='+dirarray[0]+'] .content').show().load(file, function(response, status, xhr)
                    {
                        if(status === 'error')
                        {
                            $('#'+newNavId).remove();
                            self.hideLoader();
                            return;
                        }
                        else
                        {

                            $('#'+newNavId+' .homecontent').hide();
                            self.setContentHeight( $('#'+newNavId) );
                            $('#'+newNavId).css({ width: contentElement.outerWidth() });
                            $('#'+newNavId).show().animate({ opacity: 1 }, 300, 'easeInOutQuad', function()
                            {
                                $('#'+activeNavId).remove();
                                $('#'+newNavId).attr('id', activeNavId);
                                self.hideLoader();
                            });
                        }
                    });
                });
            },
            init : function()
            {
                $('body').append('<div class="loader"></div>');
                $('.loader').hide().css({opacity: 0});
                setTimeout(self.preloadImages, 4);
                
                navElement.find('.intern').append('<div class="content"></div>');
                navElement.find('.content').hide();
                $(window).resize(function() {
                    self.setnavWidth();
                });
                contentElement.on('click', 'a', function()
                {
                    self.loadContent( $(this).attr('href') );
                    self.setnavWidth();
                });
            }
        }
        self.init();
})();

/* Easing */
jQuery.easing['jswing'] = jQuery.easing['swing'];
jQuery.extend( jQuery.easing,
{
    def: 'easeOutQuad',
    swing: function (x, t, b, c, d) {
        //alert(jQuery.easing.default);
        return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
    },
    easeInQuad: function (x, t, b, c, d) {
        return c*(t/=d)*t + b;
    },
    easeOutQuad: function (x, t, b, c, d) {
        return -c *(t/=d)*(t-2) + b;
    },
    easeInOutQuad: function (x, t, b, c, d) {
        if ((t/=d/2) < 1) return c/2*t*t + b;
        return -c/2 * ((--t)*(t-2) - 1) + b;
    }
});
