/*
 * loadPageSequence Plugin
 *
 */
 
$.fn.loadPageSequence = function(){
	return this.each(function(){
		var $highlight = $(this).css('opacity',0),
			$toHide = $('#header, #process-nav, #content, #footer').css('opacity',0);
						
		if ($highlight[0].id == 'hero-image') {
			var $heroContent = $('#hero-content'),
				img = new Image();
				
			$heroContent.css('opacity',0);
			
			$highlight.on('fadeInContent',function(){
			});
			
			$(img).on('load',function(){
				$highlight.fadeTo(1200,1,function(){
					$heroContent.delay(600).fadeTo(1200,1,function(){
						$toHide.fadeTo(800,1);
					});
				});
			}).attr('src',$highlight.css("background-image").replace(/"/g,"").replace(/url\(|\)$/ig, ""));			
		}
			
		if ($highlight[0].id == 'banner-title') {
			$highlight.fadeTo(1200,1,function(){
				$toHide.delay(1100).fadeTo(800,1);
			});
		}
	});
};

/*
 * processNav Plugin
 *
 */
 
$.fn.processNav = function(){
	return this.each(function(){
		var $navBar = $(this),
			navOffset = $navBar.offset().top - ($('body').hasClass('admin-bar') ? 28 : 0),
			$processes = $('.process'),
			firstPos = $processes.filter(':first').offset().top,
			lastPos = $processes.filter(':last').offset().top,
			processClasses = '',
			$win = $(window),
			$content = $('#content'),
			processPosArr = [],
			flagPadding = 60;
			
		$processes.each(function(){
			var stage = $(this).attr('id'),
			processPos = new Object();
			processClasses += stage + ' ';
			
			processPos.stage = stage;
			processPos.pos = $('#'+stage).offset().top-flagPadding;
			processPosArr.push(processPos)
		});
		
		$navBar.on('clearFlags',function(){
			$navBar.removeClass(processClasses);
		}).on('addFlag',function(e,flag){
			$navBar.addClass(flag);
		}).on('click','a',function(){
			var targetPos = $(this.hash).offset().top-120;
			$('html,body').animate({
				scrollTop : targetPos
			},750);
		
			return false;
		});
		
		$win.on('scroll',function(){		
			var scrollPos = $win.scrollTop();
			
			for (var i = 0, l = processPosArr.length; i < l; i++) {
				if (scrollPos <= processPosArr[i].pos) {
					break;
				}
			}
			
			$navBar.trigger('clearFlags').trigger('addFlag',[processPosArr[i].stage]);
			
				
			if (scrollPos > navOffset) {
				$navBar.addClass('fixed');
				$content.addClass('process-fixed');
			} else  {
				$navBar.removeClass('fixed');
				$content.removeClass('process-fixed');
			}
			
			
			
		}).trigger('scroll');
	});
};

/*
 * clientSplit Plugin
 *
 */
 
$.fn.clientSplit = function(){
	var $splits = $('.split-info'),
		$figures = $('.figure'),
		$clients = $(this);
	
	return this.each(function(){
		var $client = $(this),
			$figure = $client.find('.figure'),
			$splitContainer = $client.hasClass('client-highlight') ? $client.next() : $client.parent().next();
			
		$client.on('click','.expand',function(){
			var target = this.href ? this.href : $(this).attr('data-url');
			$figures.filter('.loaded').removeClass('loaded').end().stop().fadeTo('slow',0.5);
			$figure.stop().fadeTo('fast	',1);
			$client.find('a.read-more-link').removeClass('reading');
			if ($splits.filter('.show').length) {
				$splits.filter('.show').find('.container:eq(0)').slideUp(function(){
					$(this).parent().parent().removeClass('show');
					
					if (!$client.hasClass('shown')) {
						$clients.filter('.shown').removeClass('shown').find('a.read-more-link').removeClass('reading');
						$client.trigger('loadContent',[target]);
					} else {
						$clients.filter('.shown').removeClass('shown').find('a.read-more-link').removeClass('reading');
						$figures.stop().fadeTo('fast',1);
					}
				});
			} else {
				$client.trigger('loadContent',[target]);
			}

			return false;
		}).on('loadContent',function(e,target){
			$figure.addClass('loaded');
			$client.addClass('loading');
		
			$splitContainer.find('.container:eq(0)').slideUp().load(target+' .client-highlight',function(){
				// Track pageview of recent search on GA
				if (typeof(pageTracker) !== "undefined") {
					if (typeof(window.location.origin) !== 'undefined') {
						var _ga_target = target.substring(window.location.origin.length);
					} else {
						var _ga_target = target.substring(window.location.protocol.length + 2 + window.location.host.length);
					}
					pageTracker._trackPageview(_ga_target);
				}
				
				$(this).slideDown().parent().parent().addClass('show');
				$client.removeClass('loading').addClass('shown').find('a.read-more-link').addClass('reading');
				
				$('html,body').animate({
					scrollTop : $(this).offset().top-120
				},650);
			});		
		});
	});

};

/*
 * Initialisation
 *
 */
 
$(function(){
	if (Modernizr.opacity) {
		$('#hero-image, #banner-title').loadPageSequence();
	}

	$('#process-nav').processNav();
	
	$('.client-highlight, .client-list .client').clientSplit();
	
	
	$('#hero-content').each(function(){
		var $container = $(this),
			$filler = $container.find('#hero-filler');
			
		if ($container.find('a').length) {
			$filler.addClass('clickable').find('span').css('cursor','pointer').click(function(){
				//$(this).addClass('clicked');
				window.location = $container.find('a')[0].href;
			});
		} else {
			$filler.find('span').css('backgroundImage','none');
		}
	});
	
	// Preload images
	var preloadImages = ['/wp-content/themes/magnet/assets/images/client-logo-shadow.png'],
		imgArr = [];
		
	for (var i = 0, l = preloadImages.length; i < l; i++) {
		var img = new Image();
		img.src = preloadImages[i];
		imgArr[i] = img;
	}
});

