/* Copyright (c) 2010 
 * @author Laurence Wheway
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 * @version 1.2.0 */
(function($){jQuery.extend({isOnScreen:function(box,container){for(var i in box){box[i]=parseFloat(box[i])};for(var i in container){container[i]=parseFloat(container[i])};if(!container){container={left:$(window).scrollLeft(),top:$(window).scrollTop(),width:$(window).width(),height:$(window).height()}}
if(box.left+box.width-container.left>0&&box.left<container.width+container.left&&box.top+box.height-container.top>0&&box.top<container.height+container.top)return true;return false;}})
jQuery.fn.isOnScreen=function(container){for(var i in container){container[i]=parseFloat(container[i])};if(!container){container={left:$(window).scrollLeft(),top:$(window).scrollTop(),width:$(window).width(),height:$(window).height()}}
if($(this).offset().left+$(this).width()-container.left>0&&$(this).offset().left<container.width+container.left&&$(this).offset().top+$(this).height()-container.top>0&&$(this).offset().top<container.height+container.top)return true;return false;}})(jQuery);

/* Parallax Engine
* @author Simon Choo 
* @version 1.0.0*/
function parallaxInventory(){
	$('.parallaxCell').each(function(){
		parallaxCells.push($(this));
		$(this).find('.gfxArea > div').each(function(){ var gfxObjPos = $(this).position(); $(this).css('position', 'absolute'); $(this).attr('orgtop', gfxObjPos.top); });
	});
}

function parallaxScrollTo(id){
	$('html,body').animate({ scrollTop: $('#' + id).offset().top }, { duration:1000, easing:'easeOutQuad' });
}

function doParallax(){
	var scrollPos = $(window).scrollTop();
	for(var c in parallaxCells){	
		var cell = parallaxCells[c];
		if (cell.isOnScreen(null,parallaxViewport)){
			var objPos = cell.position();
			var scrollPosRel = scrollPos - objPos.top;
			cell.css('background-position' , '0% ' + (0 - Number(scrollPosRel / 2)) + 'px');
			cell.find('.gfxArea > div').each(function(i){
				var oTop = Number($(this).attr('orgtop'));
				$(this).css('top', oTop - (scrollPosRel / ((i + 1) * 0.7)) + 'px');
			});
		}
	}
}

var parallaxCells = new Array();
var parallaxViewport;
$(document).ready( function(){	
	parallaxViewport = { left: $(window).scrollLeft(), top: $(window).scrollTop(), width: $(window).width(), height: $(window).height() };
	parallaxInventory();
	$(window).bind('scroll', doParallax);
});
