aActive = null;

YUI().use('node', 'transition', 'event', 'history', function (Y) {
    var window_height = Y.one('body').get('winHeight'),
        window_width  = Y.one('body').get('winWidth');
    
    var history = new Y.History();
    
    Y.on('history:change', function (e) {
        var removed = e.removed;
        
        if (removed.portfolio) {
            showSW();
        }
    });
    
    function resizeWindow () {
        window_height = Y.one('body').get('winHeight');
        window_width  = Y.one('body').get('winWidth');
        
        // Set all the dimentions
        Y.one('#viewport').setStyle('height', window_height);
        Y.all('#portfolio').setStyle('height', window_height);
        Y.all('#portfolio').setStyle('width', window_width);
        //Y.all('iframe').setStyle('height', window_height);
    
        Y.one('#container').setStyle('height', 2 * window_height);
        Y.one('#sw').setStyle('height', window_height);
    }
    
    Y.on('windowresize', resizeWindow);
    
    // Do the resize in the beginning
    resizeWindow();
    
    function updateArrows () {
            var next = aActive.next(".portfolio-item");
            var previous = aActive.previous(".portfolio-item");
            
            if (next) {
                Y.one(".portfolio-controls .next").set('href', next.get('href'));
            } else {
                Y.one(".portfolio-controls .next").set('href', Y.one(".portfolio-item").get('href'));
            }
            
            if (previous) {
                Y.one(".portfolio-controls .previous").set('href', previous.get('href'));
            } else {
                var list = Y.all(".portfolio-item");
                Y.one(".portfolio-controls .previous").set('href', list.item(list.size() - 1).get('href'));
            }
    }
    
    function showPortfolioItem (e) {
        
        e.preventDefault();
        
        if (this.hasClass('portfolio-item')) {
            aActive = this;
        } else {
            aActive = Y.one(".portfolio-item");
        }
        
        Y.one('#container').transition({
            duration: 1.6,
            bottom: - window_height + 'px'
        }, function() {
            var iframeNode = Y.Node.create('<iframe class="active" scrolling="auto" frameborder="0" style="border:none;" allowTransparency="true"></iframe>');
            iframeNode.set('src', aActive.get('href'));
            iframeNode.setStyle('width', window_width);
            iframeNode.setStyle('height', window_height);
            
            Y.one(".portfolio-window").setContent(iframeNode);
            
            updateArrows();
        });
        
        history.add({
            portfolio: 'show'
        });
    }
    
    function showSW (e) {
        
        if (e) {
            e.preventDefault();
        }
        
        Y.one('.intro-text').hide();
        if ( Y.one('.happen-contact').getStyle('display') == 'none' ) {
            Y.one('.intro-text-replacement').setStyle('display', 'block');
        }
        
        Y.one('#container').transition({
            duration: 1,
            bottom: 0
        }, function() {
            Y.one(".portfolio-window").setContent('');
        });
    }
    
    function showPrev (e) {
        
        e.preventDefault();
        
        if (aActive.previous(".portfolio-item")) {
            aActive = aActive.previous(".portfolio-item");
        } else {
            var list = Y.all(".portfolio-item");
            aActive = list.item(list.size() - 1);
        }
        
        Y.one('.portfolio-window').transition({
            duration: 1,
            marginLeft: '100%',
            opacity: 0
        }, function() {
            var iframeNode = Y.Node.create('<iframe class="active" scrolling="auto" frameborder="0" style="border:none;" allowTransparency="true"></iframe>');
            iframeNode.set('src', aActive.get('href'));
            iframeNode.setStyle('width', window_width);
            iframeNode.setStyle('height', window_height);
            
            Y.one('.portfolio-window').setStyle('marginLeft', 0);
            Y.one('.portfolio-window').setStyle('opacity', 1);
            Y.one(".portfolio-window").setContent(iframeNode);
            
            updateArrows();
        });
    }
    
    function showNext (e) {
        
        e.preventDefault();
        
        if (aActive.next(".portfolio-item")) {
            aActive = aActive.next(".portfolio-item");
        } else {
            aActive = Y.one(".portfolio-items a.portfolio-item");
        }
        
        Y.one('.portfolio-window').transition({
            duration: 1,
            marginLeft: '-100%',
            opacity: 0
        }, function() {
            var iframeNode = Y.Node.create('<iframe class="active" scrolling="auto" frameborder="0" style="border:none;" allowTransparency="true"></iframe>');
            iframeNode.set('src', aActive.get('href'));
            iframeNode.setStyle('width', window_width);
            iframeNode.setStyle('height', window_height);
            
            Y.one('.portfolio-window').setStyle('marginLeft', 0);
            Y.one('.portfolio-window').setStyle('opacity', 1);
            Y.one(".portfolio-window").setContent(iframeNode);
            
            updateArrows();
        });
    }
    
    function makeItHappen (e) {
        
        e.preventDefault();
        
        Y.one('.intro-text-replacement').hide(true, function() {
            Y.one('.happen-contact').hide();
            Y.one('.happen-contact').setStyle('display', 'block');
            Y.one('.happen-contact').show(true);
        });
    }
    
    Y.one(".go-button").on("click", showPortfolioItem);
    Y.one(".portfolio-items").delegate("click", showPortfolioItem, "a.portfolio-item");
    Y.one(".portfolio-controls .down").on("click", showSW);
    Y.one(".portfolio-controls .previous").on("click", showPrev);
    Y.one(".portfolio-controls .next").on("click", showNext);
    
    Y.one(".intro-text-replacement").on("click", makeItHappen);
    
    function mouseoverPortfolioItem (e) {
        
        var node;
        
        if (this.hasClass('portfolio-item')) {
            node = this;
        } else {
            node = Y.one(".portfolio-item");
        }
        
        node.transition({
            duration: 0.5,
            marginTop: '-10px'
        });
    }
    function mouseoutPortfolioItem (e) {
        
        var node;
        
        if (this.hasClass('portfolio-item')) {
            node = this;
        } else {
            node = Y.one(".portfolio-item");
        }
        
        node.transition({
            marginTop: '0'
        });
    }
    
    Y.one(".go-button").on("mouseover", mouseoverPortfolioItem);
    Y.one(".go-button").on("mouseout", mouseoutPortfolioItem);
    
    Y.one(".portfolio-items").delegate("mouseover", mouseoverPortfolioItem, "a.portfolio-item");
    Y.one(".portfolio-items").delegate("mouseout", mouseoutPortfolioItem, "a.portfolio-item");
    
});


