/* Author: mediaBOOM

*/

if(!Array.indexOf){
	    Array.prototype.indexOf = function(obj){
	        for(var i=0; i<this.length; i++){
	            if(this[i]==obj){
	                return i;
	            }
	        }
	        return -1;
	    }
	}


$(document).ready(function() {
	
  var cycle_initialized = false;
	
	// Log all jQuery AJAX requests to Google Analytics
  $(document).ajaxSend(function(event, xhr, settings){
    _gaq.push(['_trackPageview', settings.url]);
  });
	

	/********* FUNCTION DEFINITIONS **********/

	function updateBackground() {
		// store current bg image
		var curIndex = $('#background-images').children('img').index($('#background-images').children(':visible'));
		// get a new index for the target 
		var targetClass = $('body').attr('class');
		// remove the current index from the eligible set
		var newArray = pageMappings[targetClass].slice(0);
		if(newArray.indexOf(curIndex) != -1) newArray.splice(newArray.indexOf(curIndex), 1);
		var newIndex = newArray[Math.floor(Math.random() * newArray.length)];
		$('#background-images').cycle(newIndex);
	}
	
	function navigateTo(page) {
		if(page == "#") return;
		var mainContent = $('#main');
		// prep body class
		newBodyClass = getBodyClassFromFile(page);
		
		// update the nav
		$('#nav a').removeClass('active');
		$('#nav a.'+newBodyClass).addClass('active');
		
		// update the title tag
		document.title = page_titles[newBodyClass] + "Fontinalis Partners"
		
		// blind up the main
		mainContent.slideUp(200, function() {
			$('#loader').fadeIn("fast");
			$.get(page + "?ajax=1",
				function(data) {
					mainContent.html(data);
					if($('body').hasClass(newBodyClass)) {	
						// same section
						$("#loader").fadeOut("fast", function() {
							mainContent.slideDown();
							initializePage();
						});
					} else {
						// different section
						$('body').removeClass().addClass(newBodyClass);
						if(!cycle_initialized) {
							// set up cycling
							$('#background-temp').fadeOut(200);
							$('#background-images').cycle({ 
							fx:    'fade',
						    speed:  200,
								timeout: 10000,
								startingSlide: pageMappings[newBodyClass][Math.floor(Math.random() * pageMappings[newBodyClass].length)],
								after: function() { 
									$("#loader").fadeOut("fast", function() {
										var mainContent = $('#main');
										mainContent.slideDown(); 
										initializePage();
									});
								}
						 	});
							$('#background-images').cycle('pause');	// wait until manually triggered
							cycle_initialized = true;
						} else {
							updateBackground();
						}
						
					}
				}
			);
		});
	}
	
	function getFragmentFromFile(filename) {
		return("#"+filename.split('.')[0]);
	}
	
	function getFileFromFragment(fragment) {
		return(fragment.split('#')[1] + ".php")
	}

	function getBodyClassFromFile(filename) {
		var retval = filename.split('.')[0].split('-')[0].replace('_','-');
		retval = (retval == "index") ? "home" : retval;
		return retval;
	}

	function initializePage() {

			// home page rotating widget & tabs
			if($('body').hasClass('home')) {
				$('ul.arrow-nav').fpTabs('.slide', {
					current: "active",
					rotate: true,  
					fadeOutSpeed: "slow"
				}).slideshow({
					clickable: "false",
					interval: 12000,
					autoplay: true
				});
		
			// change the effect to fade after initialization to avoid flickering of first tab
			var api = $("ul.arrow-nav").data("tabs");
			api.getConf().effect = "fade";

			$('ul.arrow-nav a').click(function() {
				$('ul.arrow-nav').data('slideshow').stop();
			});
		
			// initialize values for view bios block
			if(!($('.view-bio').css('display') == 'inline')) {
				$('.view-bio').css('display','inline');
				var viewBioWidth = $('.view-bio').width();
				$('.founding-partner').each(function(i) {
					var partnerName = $(this).children('.partner-name');
					partnerName.css('width', partnerName.width() - viewBioWidth + 'px');
				});
		
				$('.founding-partner').mouseenter(function(){
					var partnerName = $(this).children('.partner-name');
					partnerName.stop(true, true);
					partnerName.animate( {'width' : partnerName.width() + viewBioWidth + 'px'}, animSpeed );
				}).mouseleave(function(){
					var partnerName = $(this).children('.partner-name');
					partnerName.stop(true, true);
					partnerName.animate( {'width' : partnerName.width() - viewBioWidth + 'px'}, animSpeed );
				});	
			}
		}
		
		// team rollovers
		if($('body').hasClass('team')) {
			if(!($('.view-bio').css('display') == 'inline')) {
				// initialize values for view bios block
				$('.view-bio').css('display','inline');
				var viewBioWidth = $('.view-bio').width();
				$('.partner').each(function(i) {
					var partnerName = $(this).children('.partner-name');
					partnerName.css('width', partnerName.width() - viewBioWidth + 'px');
				});
	
				$('.partner').mouseenter(function(){
					var partnerName = $(this).children('.partner-name');
					partnerName.stop(true, true);
					partnerName.animate( {'width' : partnerName.width() + viewBioWidth + 'px'}, animSpeed );
				}).mouseleave(function(){
					var partnerName = $(this).children('.partner-name');
					partnerName.stop(true, true);
					partnerName.animate( {'width' : partnerName.width() - viewBioWidth + 'px'}, animSpeed );
				});	
			}
		}
	}
	
	/********* IMMEDIATELY EXECUTING CODE **********/	
	
	// append markup for background images
	$('#background-images').prepend('<img src="images/backgrounds/1.jpg" class="bg" width="1280" height="800" /><img src="images/backgrounds/28.jpg" class="bg" width="1280" height="800" /><img src="images/backgrounds/30.jpg" class="bg" width="1280" height="800" /><img src="images/backgrounds/14.jpg" class="bg" width="1280" height="800" /><img src="images/backgrounds/24.jpg" class="bg" width="1280" height="800" /><img src="images/backgrounds/36.jpg" class="bg" width="1280" height="800" /><img src="images/backgrounds/19.jpg" class="bg" width="1280" height="800" /><img src="images/backgrounds/45.jpg" class="bg" width="1280" height="800" /><img src="images/backgrounds/35.jpg" class="bg" width="1280" height="800" />');
	
	// order of bg img appearance
	var pageMappings = {
		"home" : [2, 3, 4, 8],
		"our-story" : [0, 2, 3, 4, 5, 8, 9],
		"team" : [0, 2, 3, 4, 5, 8, 9],
		"strategy" : [0, 2, 3, 4, 5, 6, 8, 9],
		"portfolio" : [0, 2, 3, 4, 5, 6, 8, 9],
		"news" : [0, 2, 3, 4, 5, 6, 8, 9],
		"contact" : [7],
		"legal" : [0, 2, 3, 4, 5, 6, 8, 9]
	};
	
	// ajaxify links sitewide for IE8 and above
	if(!($.browser.msie && ($.browser.version == "7.0" || $.browser.version == "6.0"))) {
		$('a').live('click',function(){
			var target = $(this).attr('href');
			if(	(target.slice(0,4) == "http") || 
					(target.indexOf('@') != '-1') || 
					(target.substr(target.length - 4, 4) == ".pdf" )
			) return true;	// offsite / email  / pdf links
			// update the URL and trigger navigation event
			window.location.hash = getFragmentFromFile($(this).attr('href'));
			return false;
		});
	}

	// general setting for mouseover animations
	var animSpeed = 200;
	
	// nav rollovers - IE8+ and other browsers
	if(!($.browser.msie && $.browser.version == "7.0")) {
		$('a.css-hover').removeClass('css-hover');
	
		$('#nav li a').mouseenter(function() {
			var bg = $(this).children('.nav-bg');
			bg.stop(true, true);
			bg.animate({ 'top' : '0'}, animSpeed);
		}).mouseleave(function(){
			var bg = $(this).children('.nav-bg');
			bg.stop(true, true);
			bg.animate({ 'top' : '19px'}, animSpeed);
		});
	}
	
	// handle deeplinking
	var curHash = document.location.hash;
	var bodyClass;
	var loc = document.location.href;
	var filename = loc.split('/')[loc.split('/').length - 1].split('#')[0];
	filename = filename ? filename : "index.php";		// handle home page
	if(curHash) {
		
		bodyClass = getBodyClassFromFile(filename);
		curHash = getFragmentFromFile(filename);
	} else {
		curHash = getFragmentFromFile(filename);
		document.location.hash = curHash;
		bodyClass = getBodyClassFromFile(filename);
	}
	
	setInterval(checkLocation, 100);
	
	function checkLocation() {
		var newHash = document.location.hash;
		if(newHash == "") newHash = "#index";
		if(curHash != newHash) {
			navigateTo(newHash.split('#')[1] + '.php');
			curHash = newHash;
		}
	}	
	
		
	
	
	initializePage();	
	
});














