/**
 * Page navigation helper class. Sets the corresponding section and any
 * page specific onload/onunload event handlers.
 */
var pages = new function() {
	var pageMap = {};
	var currentPage = {
		name: '',
		section: -1,
		animation: ''
	};
	this.add = function(name, sectionNumber, animation, onload, onunload) {
		pageMap[name] = {
			name: name,
			section: sectionNumber,
			animation: animation,
			onload: onload,
			onunload: onunload
		};
		if (! onload) {
			// No onload handler, just fire immiedately any callback supplied by default.
			pageMap[name].onload = function(callback) {
				if (callback) callback();
			}
		}
	};
	this.get = function(name, param) {
		var page = pageMap[name];
		if (param) page.param = param;
		return page;
	};
	this.getCurrent = function() {
		return currentPage;
	};
	this.setCurrent = function(page) {
		currentPage = page;
	};
};
/**
 * Page definitions. Each page must have a definition. Collections of pages have
 * the same name (ex: news, portfolio) and need only one definition.
 */
pages.add('home',				0, '');

pages.add('sidlee',				1, '');

pages.add('sidleeSurvol',		1, '', function(callback) {
	$('#sectionSidleeSurvol .element:last').css('width', $('#content').width());
	if (callback) callback();
}, function() {
	$('#sectionSidleeSurvol #survol_wrapper	').scrollTo(0);
});

pages.add('sidleeTeam',			1, '');

pages.add('realisations',		2, '', function(callback) {
	var sectionContainer = $('#sectionRealisations');
	var playerHolder = $('.playerHolder', sectionContainer);
	playerHolder.delay(0).queue(function(next) {
		var video = (lang == 'en') ?
				  'http://wpc.0278.edgecastcdn.net/000278/sources_sidlee/SIDLEE%20VIDEO_MP4/SIDLEE/Survol%20Video/SIDLEE_ROLL_110921.mp4'
				: 'http://wpc.0278.edgecastcdn.net/000278/sources_sidlee/SIDLEE%20VIDEO_MP4/SIDLEE/Survol%20Video/SIDLEE_ROLL_110921.mp4';
		playRealisationsVideo(sectionContainer, 'realisationsPlayer', video, callback);
		next(); // Next JQuery anim in animation queue.
	});
}, function() {
	var sectionContainer = $('#sectionRealisations');
	var playerHolder = $('.playerHolder', sectionContainer);
	playerHolder.stop(true, false); // Cancel delay and clear JQuery queue.
	stopRealisationsVideo(sectionContainer, 'realisationsPlayer');
});

pages.add('realisationsReel',	2, '', function(callback) {
	var sectionContainer = $('#sectionRealisationsReel');
	var video = (lang == 'en') ?
			  'http://wpc.0278.edgecastcdn.net/000278/sources_sidlee/SIDLEE%20VIDEO_MP4/SIDLEE/Survol%20Video/SIDLEE_ROLL_110921.mp4'
			: 'http://wpc.0278.edgecastcdn.net/000278/sources_sidlee/SIDLEE%20VIDEO_MP4/SIDLEE/Survol%20Video/SIDLEE_ROLL_110921.mp4';
	playRealisationsVideo(sectionContainer, 'realisationsReelPlayer', video, callback);
}, function() {
	var sectionContainer = $('#sectionRealisationsReel');
	stopRealisationsVideo(sectionContainer, 'realisationsReelPlayer');
});

pages.add('portfolio',			2, '');
pages.add('portfolioDetails',	2, '', folioDetailsLoad, folioDetailsUnload);

pages.add('sidleeCollective',	3, '');
pages.add('collectiveVideo',	3, '');
pages.add('collectivePortfolio',3, '');
pages.add('collectivePortfolioDetails',3, '', folioDetailsLoad, folioDetailsUnload);

pages.add('sidleeCapital',		4, '');
pages.add('nouvelles',			5, '', function(callback) {
	$('#sectionNouvelles #survol_wrapper').scrollTo(0);
	if (callback) callback();
}, function() {
	$('#sectionNouvelles #survol_wrapper').scrollTo(0);
});
pages.add('nouvellesDetails',	5, '');
pages.add('collectivo',			6, '');
pages.add('carrieres',			7, '');
pages.add('carrieresTravaillerSidlee',	7, '');
pages.add('carrieresVieSidlee',	7, '');
pages.add('contactsMontreal',	8, '');
pages.add('contactsAmsterdam',	8, '');
pages.add('contactsParis',		8, '');
pages.add('contactsToronto',	8, '');
pages.add('contactsAustin',	8, '');

/**
 * Deep linking helper class.
 */
var deepLinks = new function() {
	var linkArray = [];
	var pageMap = {};
	this.add = function(sectionNumber, linkName, pageName) {
		linkArray[sectionNumber] = linkName;
		pageMap[linkName] = pageName;
	};
	this.getLink = function(sectionNumber) {
		return linkArray[sectionNumber];
	};
	this.getPageName = function(linkName) {
		return pageMap[linkName];
	};
};

/**
 * Deep linking definitions. The hash following the URL changes
 * accordign to these definitions can can be used to bookmark
 * a specific page.
 */
deepLinks.add(0, '', 'home');
deepLinks.add(1, 'sidLee', 'sidlee');
deepLinks.add(2, 'works', 'portfolio');
deepLinks.add(3, 'sidLeeCollective', 'sidleeCollective');
deepLinks.add(4, 'conversationalCapital', 'sidleeCapital');
deepLinks.add(5, 'whatsGoingOn', 'nouvelles');
deepLinks.add(6, 'collectivo', 'collectivo');
deepLinks.add(7, 'jobs', 'carrieres');
deepLinks.add(8, 'contact', 'contactsMontreal');

/*
 * Page specific functions.
 */
function playRealisationsVideo(sectionContainer, playerId, videoUrl) {
	var size = { width: 640, height: ''};
	var playerHolder = $('.playerHolder', sectionContainer);
	
	// If container not visible, do nothing.
	if (! sectionContainer.is(':visible')) return;
	
	// Remove colored background image.
	$('#sectionRealisations').css('background-color', '#141414');
	$('#sectionRealisations img').hide();

	// Load video player.
	createVideoPlayer(playerHolder, playerId, videoUrl, size.width, size.height, function(e) {
		if (! e.success) return;
		//playerHolder.css('padding-right', '37px');
		playerHolder.show();
//		startCenterElementVertically(playerHolder);
	}, true);
}

function stopRealisationsVideo(sectionContainer, playerId) {
	var playerHolder = $('.playerHolder', sectionContainer);
	killVideoPlayer(playerId);
	stopCenterElementVertically();
	
	// Add back colored background image.
	playerHolder.hide();
	$('#sectionRealisations img').show();
	$('#sectionRealisations').css('background-color', '');
}

function folioDetailsLoad(callback) {
	$('.portfolioDetails .playerHolder').each(function(index, el){
		var playerHolder = $(el);
		var playerId = playerHolder.attr('id') + 'Player';
		var videoUrl = $('a[class=mp4]', playerHolder.parent()).attr('href');
		var size = { width: null, height: 360 };

		createVideoPlayer(playerHolder, playerId, videoUrl, size.width, size.height, function(e) {
			if (! e.success) return;
			playerHolder.show();
		}, false);
	});
	if (callback) callback();
}

function folioDetailsUnload(){
	$('.portfolioDetails .playerHolder').each(function(index, el){
		var playerHolder = $(el);
		var playerId = playerHolder.attr('id') + 'Player';
		killVideoPlayer(playerId);
	});
}

