var Home = {
	run: function() {
		this.WingEffect.run();
	}
};

Home.WingEffect = {
	run: function() {
		this.div = $('#wing-container');
		
		var url = $('.url', this.div).val();
		
		var $this = this;
		this.div.load(url, function() {
			$this.wings = $('.wing1,.wing2,.wing3,.wing4', $this.div);
			$this.parts = $('.part1,.part2,.part3,.part4', $this.div);
			
			$this.prepare();
			$this.handle_events();
		});
	},
	
	prepare: function() {
		$('img', this.parts).hide();

		this.wings.each(function() {
			var elm = $(this);
			elm.data('wing_width', elm.width());
			elm.css({ width: 0, opacity: 0.9 } );
			elm.hide();
		});
		
		if (!Site.is_ie6()) {
			return;
		}
		
		var $this = this;
		$this.wings.find('img').each(function() {
			$this.fix_ie6($(this), 'frame');
		});
		
		$this.parts.find('img').each(function() {
			$this.fix_ie6($(this));
		});

	},
	
	fix_ie6: function(img, type) {
		$.get(img.attr('src'), function() {
			Site.fix_png(img, type);
		});
	},
	
	handle_events: function() {
		var $this = this;
		
		this.parts.hover(function() {
			var elm = $(this);
			
			if (elm.hasClass('selected')) {
				return;
			}
			elm.addClass('selected');

			$('img', $this.parts).hide();
			$('img', elm).show();

			var index = $this.parts.index(elm);
			$this.show_wing(index);
		}, function() {
			var elm = $(this);
			
			elm.removeClass('selected');
			$('img', $this.parts).hide();
			
			var index = $this.parts.index(elm);
			$this.hide_wing(index);
		});
		
		var links = $('#services li a');
		this.parts.click(function() {
			var part = $(this);
			part.triggerHandler('mouseleave');
			
			var index = $this.parts.index(part);
			var url = links.eq(index).attr('href');
			window.location = url;
		});
		
	},
	
	show_wing: function(index) {
		var $this = this;
		
		$this.div.queue(function() {

			var queue = $this.div.queue('fx');
			if (queue.length > 1) { // queue[0] == 'inprogress'
				return $this.div.dequeue();
			}
			
			var wing = $this.wings.eq(index);
			var wing_width = wing.data('wing_width');
			wing.show();
			wing.animate({ width: wing_width + 'px' }, function() {
				wing.addClass('selected');
				$this.div.dequeue();
			});
		});
	},
	
	hide_wing: function(index) {
		var $this = this;
		$this.div.queue(function() {
			var wing = $this.wings.eq(index);
			if (wing.hasClass('selected')) { 
				wing.removeClass('selected');
				wing.animate({ width: 0 }, function() {
					wing.hide();
					$this.div.dequeue();
				});
			} else {
				$this.div.dequeue();
			}
		});
	}
	
};
