// Cufon
Cufon.replace('h2', {
	fontFamily: 'futura',
	forceHitArea: true,
	backgroundColor: 'transparent'
});

Cufon.replace('.popupTitle', {
	fontFamily: 'futura',
	forceHitArea: true,
	backgroundColor: 'transparent',
	color: '#ffffff'
});

// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = 9;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 124;
// -----------------------------------------------------------------------------

var myPageTracker;

var appController = null;
var mPageManager = null
var mPageAnimation = null;
var mPageLoader = null;
var mFlashManager = null;

var isEnabled = false;
var isStartupDone = false;
var isFirstRequest = true;
var flashLoadError = false;
var isFlash = false;
var widgetsDisabled = false;

function init()
{
	// Force load of all dependencies
	dojo.require("indg.AppController");
	appController = new indg.AppController();
	
	// Google Analytics
	myPageTracker = _gat._getTracker("UA-699880-1");
	myPageTracker._trackPageview();
}

/**
 * Checks if the browser supports the right flash version.
 * If so, redirect using requested page.
 */
function checkBrowserPossibilities(doRedirect)
{
	if (doRedirect == null || doRedirect == undefined)
		doRedirect = true;
	
	// Check Flash, redirect if available
	if (DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision))
	{
		isFlash = true;
		
		// Redirect to flash version based on requested URL
		if (doRedirect)
			//mPageManager.redirect('../#' + dojo.languageManager.language + '/' + mPageManager.softwareFolder + '/' + mPageManager.getPageFromURL());
			mPageManager.redirect(rootPath + '../#' + dojo.languageManager.language + '/' + mPageManager.softwareFolder + '/' + mPageManager.getPageFromURL());
	}
	else
	{
		// JavaScript is enabled, so check current URL
		if (document.location.pathname != rootPath)
			//mPageManager.redirect(rootPath);
			mPageManager.redirect(rootPath + '#' + dojo.languageManager.language + '/' + mPageManager.getPageFromURL());
		else
			return false;
	}
}

function available() { return true; }

function flashSpecific()
{
	document.write('<link rel="stylesheet" href="' + rootPath + 'css/flash.css" />');
}

function requestSoftwareSite()
{
	isFlash = true;
	
	if (!isStartupDone)
		loadSoftwareDependencies();
	
	// When requestSoftwareSite() is called, the intro is already complete
	if (!isFirstRequest)
		introComplete();
}

function requestINDGSite()
{
	//isStartupDone = false;
	//isFirstRequest = true;
	isEnabled = false;
	
	mPageManager.clearContent();
	
	mFlashManager.resize('original');
}

function loadSoftwareDependencies()
{
	isEnabled = true;
	
	// Instantiate the AppController
	// The AppController takes care of all dojoType dependencies
	//dojo.require("indg.AppController");
	appController = new indg.AppController();
	
	mPageManager = appController.PageManager;
	mPageLoader = appController.PageLoader;
	mPageAnimation = appController.PageAnimation;
	mFlashManager = appController.FlashManager;
	
	appController.startup();
}

function trackPage(aString, aSource)
{
	if (!isFlash && aSource == 'js') {
		myPageTracker._trackPageview('/' + aString);
	}
	else if (isFlash && aSource == 'flash') {
		myPageTracker._trackPageview(aString);
	}
	// commented
}

function flashReadyEvent()
{
	//alert('Flash ready');
	mPageManager.doEventDispatch(mPageManager.EVENT_PAGE_CHECK);
}

function requestPage(aPage)
{
	if (!isEnabled) return false;
	
	if (aPage == 'home')
		aPage = '';
	
	//var aPage = (aPage == '') ? aPage : mPageManager.softwareFolder + '/' + aPage;
	var aPage = mPageManager.softwareFolder + '/' + aPage;
	
	mPageManager.requestPage(aPage);
}

function introComplete()
{
	//alert('Flash intro complete');
	if (!mPageManager.initComplete)
	{
		mPageManager.init();
	}
	else
	{
		mPageManager.doEventDispatch(mPageManager.EVENT_FLASH_RESIZE);
		mPageAnimation.pageIntro(3);
	}
}

function requestPopup()
{
	
}

function urlResultHandler(result)
{
	if (!isEnabled) return false;
	
	switch (result) {
		case 'pageHome':
		case 'pageGallery':
		case 'pageGalleryItem':
			isEnabled = false;
			
			mPageManager.clearContent();
			mFlashManager.resize('original');
			
			break;
		case 'pageSoftware':
			
			break;
		case 'pagePopup':
			mPageManager.openPopupAfterIntro = true;
			
			break;
		case 'pageNotFound':
			pageNotFound();
			
			break;
	}
}

function popupOpenStart()
{
	mediaIsPlaying();
	mPageAnimation.fadeBG(true, false, null);
}

function popupOpened(popupURL)
{
	mPageAnimation.showModal(true);
	
	mPageManager.setPopupMode(true);
	
	mPageManager.setURL(popupURL);
	mPageManager.doEventDispatch(mPageManager.EVENT_POPUP_SHOWN);
}

function popupClosed(previousPage)
{
	mPageAnimation.fadeBG(false, false, null);
	
	mPageAnimation.hideModal(false);
	
	if (previousPage == null || previousPage == undefined)
	{
		if (mPageManager.previousPage != mPageManager.currentPage)
			mPageManager.setURL(mPageManager.previousPage);
		else
			mPageManager.setURL(mPageManager.softwareFolder + '/');
	}
	else
		mPageManager.setURL(previousPage);
	
	mPageManager.setPopupMode(false);
	
	mPageManager.doEventDispatch(mPageManager.EVENT_POPUP_CLOSE);
}

function pageNotFound()
{
	flashLoadError = true;
	
	// Redirect to root
	//if (mPageLoader.loadError)
	//	mPageManager.setURL(mPageManager.softwareFolder + '/');
}

function toggleAudio(enabled)
{
	//alert('Toggling audio to: ' + enabled);
	
	if (enabled)
		mFlashManager.enableAudio();
	else
		mFlashManager.disableAudio();
	
	var videoClass;
	
	for (var i=0; i < mPageManager.videoPlayerReferences.length; i++) {
		videoClass = mPageManager.videoPlayerReferences[i];
		
		if (enabled)
			videoClass.enableAudio();
		else
			videoClass.disableAudio();
	}
}

function mediaIsPlaying(id)
{
	if (id == null || id == undefined)
		id = '';
	else
		mFlashManager.requestPause();
	
	var videoClass;
	
	for (var i=0; i < mPageManager.videoPlayerReferences.length; i++) {
		videoClass = mPageManager.videoPlayerReferences[i];
		
		if (id != videoClass.id)
		{
			videoClass.requestPause();
		}
	}
}

function setURL()
{
	
}

function debug(argument)
{
	alert('Debug: ' + argument);
}
