function preloader()
{
	$.preLoadImages(
		[
			'img/services/vfx-compositing-work.png',
			'img/services/cgi-effects-work.png',
			'img/services/environments-work.png',
			'img/services/motion-graphics-work.png',
			'img/services/creatures-animation-work.png',
			'img/services/character-animation-work.png'
		],function(){
			$("#services-accordion").show();
			$("#post-production").click();
		}
	);
}

function newImage(src, patt) { return src.substring(0, src.search(/(\.[a-z]+)$/) ) + patt + src.match(/(\.[a-z]+)$/)[0]; }	
function oldImage(src, patt) { return src.replace(new RegExp(patt + "\.", ""), "."); }

function rollOver()
{
	$(window).bind("load", function()
	{
		$(".ro").each(function()
		{ 
			$("<img>").attr("src", newImage(this.src));
		});
	});
	
	$(".ro").hover(
		function() { $(this).attr("src", newImage(this.src, "-r")); },
		function() { $(this).attr("src", oldImage(this.src, "-r")); }
	);		
}

function nav($page)
{
	var $bg = $("#nav-bg", "#header-line");
	var $nav = $("#nav");
	var $bullets = $("li", $nav);
	var $css = new Array();
	
	switch ($page)
	{
		case "index":
			$css[0] = "url(../img/header-select-studio.jpg)";
			break;
		case "studio":
			$css[0] = "url(../img/header-select-studio.jpg)";
			break;
		case "services":
			$css[0] = "url(../img/header-select-services.jpg)";
			break;
		case "work":
			$css[0] = "url(../img/header-select-work.jpg)";
			break;
		case "contact":
			$css[0] = "url(../img/header-select-work.jpg)";
			break;
		case "case-study":
		default:
			$css[0] = "url(../img/header-select-studio.jpg)";
			break;
	}
	
	$css[1] = "repeat-x";
	$css[2] = "0px 4px";
	
	$bg.css({"background-image":$css[0], "background-repeat":$css[1], "background-position":$css[2]});
	$bg.width($("#" + $page, $nav).outerWidth());
	
	$bullets.mouseover(function(e) { 
		var $left = $(this).position().left + parseInt($nav.css("margin-left")) + parseInt($(this).css("margin-left"));
		$bg.animate({left: $left, width: $(this).outerWidth()}, 100); 
	});
}

function studio()
{
	$('#sub-header').jparallax({ yparallax:false }, {}, {}, {}, {}, {xtravel:.625, xorigin:1});
	$("#key-people").toggle(
		function() { $("#bios").slideDown(1000); },
		function() { $("#bios").slideUp(1000); }
	);
}

function contact()
{
	var $show = $("#show-us img", "#content");
	var $form = $("#show-contact", "#content");
	
	$show.toggle(
		function() { $form.slideDown(1000); },
		function() { $form.slideUp(1000); }
	);
}

function portfolio()
{
	// Each portfolio item
	var $showcases = $(".portfolio-item", "#content");
	
	// Iterate through each one
	$showcases.each(function(i) {
		var $case = $(this);					// Portfolio Item
		var $preview = $(".preview", $case);	// Preview Graphic
		var $player = $(".player", $case);		// Flash Player Container
		var $closePlayer = $(".close", $player);// 'X' to close Flash
		var $flash = $("embed", $($("div[id$='-jw']", $player)));
		var $playerHeight = 0;
		
		// Set the dynamic height of each portfolio
		$player.children(".flash-border, .work-subtitle, .cs").each(function() { $playerHeight += $(this).outerHeight(); });
		$player.height($playerHeight);
		
		// Hide all elements by default
		$player.children().hide().end().hide();
		
		// Assign a click handler to the preview to show Player
		$preview.bind('click', function(e) { showPlayer($case, $preview, $player, $closePlayer, $flash); });
		
		// Private Function to show the Flash Player.
		function showPlayer($case, $preview, $player, $closePlayer, $flash)
		{
			hideOtherPlayers($case.siblings());
			$player.slideDown(1000, function() { $flash.css("display", "inline"); $player.children(":not('script')").show(); });
			$preview.unbind('click').bind('click', function(e) { hidePlayer($case, $preview, $player, $closePlayer, $flash); });
			$closePlayer.bind('click', function(e) { hidePlayer($case, $preview, $player, $closePlayer, $flash); });
		}
		
		// Private Function to hide the Flash Player
		function hidePlayer($case, $preview, $player, $closePlayer, $flash)
		{
			$player.children().hide();
			$player.slideUp(1000);
			$closePlayer.unbind('click');
			$preview.unbind('click').bind('click', function(e) { showPlayer($case, $preview, $player, $closePlayer, $flash); });
		}
		
		// Private Function to hide other Flash Players
		function hideOtherPlayers($others)
		{
			$others.each(function(i) {
				var $case = $(this);					// Portfolio Item
				var $preview = $(".preview", $case);	// Preview Graphic
				var $player = $(".player", $case);		// Flash Player Container
				var $closePlayer = $(".close", $player);// 'X' to close Flash
				var $flash = $("embed", $($("div[id$='-jw']", $player)));
				
				$player.children().hide();
				$player.slideUp(1000);
				$closePlayer.unbind('click');
				$preview.unbind('click').bind('click', function(e) { showPlayer($case, $preview, $player, $closePlayer, $flash); });
			});			
		}
	});
}

function services($id, $h)
{
	$.extend($.ui.accordion.animations, {
		fastslide: function(options) {
			$.ui.accordion.animations.slide(options, { duration: 1000 }); }
	  	}
	);
	
	$($id).accordion({animated: 'fastslide', autoHeight: false, navigation: true, collapsible: true, header: $h, active: false});
	
	$($id).bind('accordionchangestart', function(event, ui) {
		
		if (($("img", ui.oldHeader)).length >= 1) { imgSwapSrc($("img", ui.oldHeader), "services-close", 1); }
		if (($("img", ui.newHeader)).length >= 1) { imgSwapSrc($("img", ui.newHeader), "services-open", 1); }
	});
	
	$($id).bind('accordionchange', function(event, ui) {
		if ((ui.newHeader).attr("id") != undefined) $.scrollTo(ui.newHeader, 800);
	});
}

/* $type flags	|	1 (img tag) */
function imgSwapSrc($obj, $new, $type)
{
	//Generic Image Swap function
	switch ($type)
	{
		default:
			var $src = $obj.attr("src");
			$obj.attr("src", $src.substr(0, $src.lastIndexOf('/')+1) + $new + $src.substr($src.lastIndexOf('.')));
			break;
	}
}
