(function($){

	$.background = function(projects){
	
		$bg = $('<div id="stretch_background"/>');
		
		$bg.css({
			"z-index": -9999,
			position: "fixed",
			left: 0,
			top: 0,
			overflow: "hidden",
			display: "block"
		});
		$bg.prependTo("body");
		var $img = $('<img/>');
		$img.css({
			opacity: 0,
			position: "relative"
		}).appendTo($bg);
		var total_projects = projects.length;
		var preloader = [];
		var counter = 0;
		var que = [];
		var ratio;
		var loaded = false;
		var root = ("onorientationchange" in window) ? $(document) : $(window);
		$(window).bind('do_resize',function(){
			do_resize(true);
		});
		for(var i in projects)
		{
			preloader[counter] = $('<img/>').attr("rel",i).load(function(){
				var _index = $(this).attr("rel");
				que.push(_index);
				projects[_index]['ratio'] = this.width / this.height;
				if(que.length == 1){
					loaded = true;
					next_project();
				}
			});
			preloader[counter].attr("src",projects[i]['image']);
			counter++;
		}
		
		var bussy = false;
		function do_resize(overwrite)
		{
			bgCSS = {left: 0, top: 0}
                bgWidth = root.width();
                bgHeight = bgWidth / ratio;

                // Make adjustments based on image ratio
                // Note: Offset code provided by Peter Baker (http://ptrbkr.com/). Thanks, Peter!
                if(bgHeight >= root.height()) {
                    bgOffset = (bgHeight - root.height()) /2;
                    $.extend(bgCSS, {top: "-" + bgOffset + "px"});
                } else {
                    bgHeight = root.height();
                    bgWidth = bgHeight * ratio;
                    bgOffset = (bgWidth - root.width()) / 2;
                    $.extend(bgCSS, {left: "-" + bgOffset + "px"});
                }
                $img.width( bgWidth ).height( bgHeight ).css(bgCSS);
		}
		
		var _cp = 0;
		var current_project;
		function next_project()
		{
			if(!$('body').hasClass('playing_video')){
				var current_project = projects[que[_cp]];
				//do_resize(true);
				$img.animate({
					opacity: 0
				}, 300,function(){
					ratio = current_project['ratio'];
					$img.load(function(){
						do_resize(true);
						$img.animate({
							opacity: 1
						},500,function(){
						});
					});
					$img.attr("src",current_project['image']);				
				});
				_cp++;
				if(_cp >= total_projects){
					_cp = 0;
				}
			}
			setTimeout(function(){
				next_project();
			},7000);
		}
		
		$(window).resize(do_resize);

	}
	
})(jQuery);

/*! Copyright (c) 2010 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.4
 * 
 * Requires: 1.2.2+
 */

(function($) {

var types = ['DOMMouseScroll', 'mousewheel'];

$.event.special.mousewheel = {
    setup: function() {
        if ( this.addEventListener ) {
            for ( var i=types.length; i; ) {
                this.addEventListener( types[--i], handler, false );
            }
        } else {
            this.onmousewheel = handler;
        }
    },
    
    teardown: function() {
        if ( this.removeEventListener ) {
            for ( var i=types.length; i; ) {
                this.removeEventListener( types[--i], handler, false );
            }
        } else {
            this.onmousewheel = null;
        }
    }
};

$.fn.extend({
    mousewheel: function(fn) {
        return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
    },
    
    unmousewheel: function(fn) {
        return this.unbind("mousewheel", fn);
    }
});

function handler(event) {
    var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
    event = $.event.fix(orgEvent);
    event.type = "mousewheel";
    
    // Old school scrollwheel delta
    if ( event.wheelDelta ) { delta = event.wheelDelta/120; }
    if ( event.detail     ) { delta = -event.detail/3; }
    
    // New school multidimensional scroll (touchpads) deltas
    deltaY = delta;
    
    // Gecko
    if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
        deltaY = 0;
        deltaX = -1*delta;
    }
    
    // Webkit
    if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
    if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }
    
    // Add event and delta to the front of the arguments
    args.unshift(event, delta, deltaX, deltaY);
    
    return $.event.handle.apply(this, args);
}

})(jQuery);

