;(function($) {

	var $this;
	var $options;
	
	var $mouseX = 0;
	var $mouseY = 0;
	
	$.fn.people = function ( options, value ) {
		
		if ( options == 'scaleDown' ) {
			$options.scaleDown = value;
			$this.people.update(); 
			return;
		}
		
		var defaults = {
			horizontalAlign: 'center',
			snapMargin: 70,
			scaleDown: 0.5,
			scaleUp: 1,
			selectedIndex: -1
		};
		
		$options = options ? $.extend(defaults, options) : defaults;
		
		$this = $(this);
		
		$this.css({
			'overflow': 'hidden'
		});
		
		$(document).mousemove( function(e) {
			$mouseX = e.pageX - $this.offset().left;
			$mouseY = e.pageY - $this.offset().top;
			$this.people.update();
			$this.css ( 'z-index', $mouseY < 100 ? 100 : 102 );
		});
		
		$this.find('a img').each( function(index) {
			$(this).load( $this.people.update );
		});
		
		$this.people.update(); 
		
	};
	
	$.fn.people.update = function (  ) {
		
		$this.find('a').each( function(index) {
			$(this).css('display', 'block');
		});
		
		//var left = $options.horizontalAlign == 'center' ? ( $this.width() - width - 330 ) / 2 : $options.horizontalAlign == 'left' ? 0 : $this.width() - width - 330;
		var width = 0;
		var left = 0;
		
		$this.find('a').each( function(index) {
			if ( $(this).attr('w') ) {
				var scale = $options.selectedIndex == index ? $options.scaleUp :
					Math.max ( $options.scaleDown, $options.scaleUp - Math.abs(  
						( $options.scaleUp - $options.scaleDown ) / $options.snapMargin / 2 * ( $mouseX - left - $(this).attr('w') / 2 * $options.scaleUp )
					) );
				
				scale = $options.selectedIndex == index ? $options.scaleUp :
					Math.min ( Math.max ( $mouseY / $this.height() * 2, 0 ), 1 ) * 
					( Math.max ( $options.scaleDown, $options.scaleUp - Math.abs(  
						( $options.scaleUp - $options.scaleDown ) / $options.snapMargin / 2 * ( $mouseX - left - $(this).attr('w') / 2 * scale )
					) ) - $options.scaleDown ) + $options.scaleDown;
				
				$(this).find('img').width( $(this).attr('w') * scale ).height( $(this).attr('h') * scale );
				$(this).css({ 'left': left + 'px' });
				left += $(this).attr('w') * scale;
			}
		});
		
	};
	
})(jQuery);
