/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
 * Licensed under the MIT License (LICENSE.txt).
 *
 * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
 * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
 * Thanks to: Seamus Leahy for adding deltaX and deltaY
 *
 * Version: 3.0.6
 * 
 * Requires: 1.2.2+
 */
(function(a){
    function d(b){
        var c=b||window.event,d=[].slice.call(arguments,1),e=0,f=!0,g=0,h=0;
        return b=a.event.fix(c),b.type="mousewheel",c.wheelDelta&&(e=c.wheelDelta/120),c.detail&&(e=-c.detail/3),h=e,c.axis!==undefined&&c.axis===c.HORIZONTAL_AXIS&&(h=0,g=-1*e),c.wheelDeltaY!==undefined&&(h=c.wheelDeltaY/120),c.wheelDeltaX!==undefined&&(g=-1*c.wheelDeltaX/120),d.unshift(b,e,g,h),(a.event.dispatch||a.event.handle).apply(this,d)
    }
    var b=["DOMMouseScroll","mousewheel"];
    if(a.event.fixHooks)for(var c=b.length;c;)a.event.fixHooks[b[--c]]=a.event.mouseHooks;
    a.event.special.mousewheel={
        setup:function(){
            if(this.addEventListener)for(var a=b.length;a;)this.addEventListener(b[--a],d,!1);else this.onmousewheel=d
        },
        teardown:function(){
            if(this.removeEventListener)for(var a=b.length;a;)this.removeEventListener(b[--a],d,!1);else this.onmousewheel=null
        }
    },a.fn.extend({
        mousewheel:function(a){
            return a?this.bind("mousewheel",a):this.trigger("mousewheel")
        },
        unmousewheel:function(a){
            return this.unbind("mousewheel",a)
        }
    })
})(jQuery);



/* Galeria */

var SlideGallery = {
    wrapper: null, 
    scrollbar: null,
    scrollImg: null,
    itemsWidth: 0,
    init: function(){
        SlideGallery.wrapper = jQuery("#projects");		
        SlideGallery.wrapper.css('padding', '0');
        SlideGallery.wrapper.css('overflow', 'hidden');
        SlideGallery.refresh();

        // dodajemy slider

        var slider = jQuery("<div id=\"gallery-slider\"></div>");
        slider.css('position', 'absolute');
        slider.css('bottom', '120px');
        slider.css('width', '440px');
        slider.css('height', '2px');
        slider.css('background', '#e1e1e1');
        slider.css('left', SlideGallery.wrapper.width()/2-220);
        SlideGallery.wrapper.parent().append(slider);		

        var scrollbar = jQuery("<div id=\"scrollbar\"></div>");
        scrollbar.css('width', '80px'); 
        scrollbar.css('background', '#b9bdc2');
        scrollbar.css('position', 'absolute');
        scrollbar.css('height', '2px');
        scrollbar.css('bottom', '0');
        jQuery("#gallery-slider").append(scrollbar);
        SlideGallery.scrollbar = 	jQuery("#gallery-slider");
        var scrollbar_img = jQuery('<img />');
        scrollbar_img.attr({
            'src': 'images/scroll.png', 
            'id': 'gallery-slider-img', 
            'alt': 'Scroll'
        }).css({
            'position': 'absolute',
            'left': (SlideGallery.wrapper.width()-66)/2,
            'bottom': 100
        });
        SlideGallery.scrollImg = scrollbar_img;
        SlideGallery.wrapper.parent().append(scrollbar_img);
        scrollbar.draggable({
            axis: 'x',
            containment: 'parent'
        });

    },
    scrollbarRefresh: function(){
        SlideGallery.scrollbar.css('left', SlideGallery.wrapper.width()/2-220);
        SlideGallery.scrollImg.css('left', (SlideGallery.wrapper.width()-66)/2);
        var D = SlideGallery.itemsWidth - SlideGallery.wrapper.width();
        var A = SlideGallery.scrollbar.width()-80;
        var bar = SlideGallery.scrollbar.find("div");
        var scrollLeft = SlideGallery.wrapper.scrollLeft();
        bar.css('left', (scrollLeft*A)/D);
        
        
    },
    refresh: function(){
        var top = 0;
        var left = 0;
        var margin = 10;
        var wrapper = SlideGallery.wrapper;
        var wrapperHeight = jQuery(window).height()-wrapper.position().top;	
        // zmniejszamy o wysokosc panelu z nawigacja (na dole strony)
        //wrapperHeight = wrapperHeight - jQuery(window).height()+jQuery("#panel").position().top - 50;
        if(wrapperHeight != 0) wrapperHeight -= 195;
        //console.log('Wsyokość wrappera: ' + wrapperHeight);
        wrapper.css({
            'height': wrapperHeight, 
            'position':'relative',
            'marginTop': '45px'
        });

        var collection = jQuery("#projects li");
        var nextTop = top;
        var nextLeft = left;
        for(var i=0;i<collection.length;i++){
            var item = jQuery(collection[i]);
            item.css('position', 'absolute');

            item.css('float', 'none');		
			
            var requiredVSpace = margin + item.height();

            nextTop = top;
            nextLeft = left;

            if(wrapperHeight-top<requiredVSpace){
                // za malo miejsca na element
                if(top==0){
                    // element jest pierwszy od gory,
                    // ale wrapper jest za maly (za male okno?)
                    // =>ustawiamy go i tak w tym miejscu	
                    nextLeft = left + margin + item.width();
                    nextTop = 0;
                    top = 0;
                } else {
                    // ustawiamy w nastepnej kolumnie
                    left += margin + item.width();	
                    top = 0;
                    nextLeft = left;
                    nextTop = top+item.height()+margin;
                }
            } else {
                // nastepny element bedzie dopasowywany pod spodem
                nextTop = top+item.height()+margin;
            }
			
            //nextLeft = left + margin + item.width();
            //nextTop = 0;

            item.css('top', top);
            item.css('left', left);
            top = nextTop;
            SlideGallery.itemsWidth = nextLeft+item.width();
            left = nextLeft;	

        }
    }
};




var OverlayDisplay = {
    show: function(url){
        var overlay = jQuery("<div></div>");
        overlay.css('display','absolute');
        overlay.css('z-index', '1000');
        overlay.css('width', '100%');
        overlay.css('height', '100%');
        overlay.css('top','0');
        overlay.css('left','0');
        overlay.css('background', 'black');
        overlay.css('opacity', '0');
        jQuery("body").append(overlay);
    }
};

jQuery(function($){
    //Leniwa populacja
    SlideGallery.init();	

    $('.img-projects').each(function(){
        $a = $(this).find('a');
        $span = $(this).find('span');
        $a.css('top', ($span.height() - $a.height())/ 2);
    }); 

    jQuery("#projects").mousewheel(function(e, delta){
        var scrollLeft = jQuery(this).scrollLeft();
        var speed = 200;
        jQuery(this).stop(true, false).animate({
            'scrollLeft': scrollLeft-500*delta
        }, speed);
        var bar = SlideGallery.scrollbar.find("div");

        var D = SlideGallery.itemsWidth - SlideGallery.wrapper.width();
        var A = SlideGallery.scrollbar.width()-80;
        //console.log("D:"+D);
        //console.log("C:"+scrollLeft);
        bar.stop(true, false).animate({
            'left': (scrollLeft*A)/D
        }, speed);

        var wrapper = SlideGallery.wrapper;
        wrapper.find("a.full_view").click(function(e){
            e.preventDefault();
            OverlayDisplay.show(jQuery(this).attr('href'));
            return false;
        });
    });
    $('#scrollbar').on('drag', function(e){
        var sl = $('#projects').scrollLeft();
        var speed = 200;
        
        var D = SlideGallery.itemsWidth - SlideGallery.wrapper.width();
        var A = SlideGallery.scrollbar.width()-80;
        
        var currentLeft = $(this).position().left;
        $('#projects').scrollLeft((currentLeft*D)/A);
        console.log(A);
        
        
        var wrapper = SlideGallery.wrapper;
        wrapper.find("a.full_view").click(function(e){
            e.preventDefault();
            OverlayDisplay.show(jQuery(this).attr('href'));
            return false;
        });
    });
});


$(window).load(function(){
    SlideGallery.refresh();
});

$(window).resize(function(){
    SlideGallery.refresh();	
    SlideGallery.scrollbarRefresh();
});
