var Modules = Modules || {};
Modules.id='';
Modules.version='';
Modules.FLASH='1';
Modules.HTML5='2';
Modules.HTML4='3';

//Module IDs
Modules.PEOPLE='people';
Modules.PARTNERSHIP='partnership';
Modules.GLOBAL_MARKETS='globalMarkets';

//This array determines which modules are shown and in what order they are played.
Modules.idArray=[Modules.PEOPLE,Modules.PARTNERSHIP,Modules.GLOBAL_MARKETS];

//Module delays
Modules.advanceDelay=10*1000;
Modules.interactionDelay=10*1000;

Modules.isOpen=function()
{
	return Modules._isOpen;
}

Modules.setOpen=function(value)
{
	Modules._isOpen=value;
	
	clearTimeout(Modules._timeoutID);
	if(!value) Modules._timeoutID=setTimeout(Modules._timerComplete,Modules.interactionDelay);
}

Modules.completeCallback=function(disableCallback)
{
	Modules._isOpen=false;
	Modules._disableModuleCallback=disableCallback;
	
	clearTimeout(Modules._timeoutID);
	Modules._timeoutID=setTimeout(Modules._timerComplete,Modules.advanceDelay);
}

//Shared Flash/HTML methods
function getNextModuleId()
{
	Modules._currentPos++;
	
	if(Modules._currentPos>=Modules.idArray.length)
	{
		Modules._currentPos=0;
		Modules._clear();
	}
	
	var id=Modules.idArray[Modules._currentPos];
	if(Modules._exists(id)) return getNextModuleId();
	else
	{
		BBH.setCookie('module_'+id,'true',7);
		return id;
	}
}

//PRIVATE
Modules._currentPos=-1;
Modules._isOpen=false;
Modules._timeoutID;
Modules._cssTimeoutID;
Modules._disableModuleCallback;

Modules._exists=function(id)
{
	var cookie=BBH.getCookie('module_'+id);
	if(cookie!=null && cookie=='true') return true; 
	else return false;
}

Modules._clear=function()
{
	for(var i=0;i<Modules.idArray.length;i++)
	{
		var id=Modules.idArray[i];
		BBH.setCookie('module_'+id,'',-1);
	}
}

Modules._initFlash=function()
{
	$('#flash').FlashSWF({file:'/BBHInternet/themes/html/BBHInternet/modules/flash/BBHModulesLoader.swf'});
}

Modules._initHTML5=function()
{
	Modules.milliseconds=500;
	
	$('#flash').css('display','none');
	$('#flash').load('/BBHInternet/themes/html/BBHInternet/modules/html/BBHHomepageHTML5_'+Modules.id+'.html',Modules._htmlLoaded);
}

Modules._initHTML4=function()
{
	Modules.id=Modules.PEOPLE;
	
    $('head').append('<link rel="stylesheet" type="text/css" href="/BBHInternet/themes/html/BBHInternet/modules/html/css/BBHHomepageHTML4_people.css">');
	$('#flash').load('/BBHInternet/themes/html/BBHInternet/modules/html/BBHHomepageHTML4_people.html',Modules._htmlLoaded);
}

Modules._loadImageData=function()
{
	$.ajax({ url: '/BBHInternet/themes/html/BBHInternet/modules/js/imageData.js', dataType: "script",success: Modules._imageDataJSLoaded});
}

Modules._imageDataJSLoaded=function()
{
	imageData.load('/wps/wcm/connect/BBH_Content/Public+Home+Page/Default+Home+Content/homepage-flash-callouts?presentationtemplate=BBH_Design/PT--HomepageFlashCallouts&CACHE=SITE&EXPIRES=REL+1D',Modules._imageDataXMLLoaded);
}

Modules._imageDataXMLLoaded=function()
{
	if(Modules.version==Modules.HTML5) Modules._initHTML5();
	else Modules._initHTML4();
}

Modules._htmlLoaded=function()
{
	if($.browser.msie) Modules._updateStylesheets();
	
	Modules._image1Data=imageData.getObject(Modules.id,1);
	$('#image1_'+Modules.id).attr('src',Modules._image1Data.url);
	
	Modules._image2Data=imageData.getObject(Modules.id,2);
	$('#image2_'+Modules.id).attr('src',Modules._image2Data.url);
	
	if(Modules.version==Modules.HTML5) Modules._loadCSS();
}

Modules._updateStylesheets=function()
{
	var i,a,s;
	a=$('link');
	for(i=0;i<a.length;i++)
	{
		s=a[i];
		if(s.rel.toLowerCase().indexOf('stylesheet')>=0&&s.href)
		{
			var h=s.href.replace(/(&|\\?)forceReload=d /,'');
			s.href=h+(h.indexOf('?')>=0?'&':'?')+'forceReload='+(new Date().valueOf());
		}
	}
}

Modules._loadCSS=function()
{
	var href='/BBHInternet/themes/html/BBHInternet/modules/html/css/BBHHomepageHTML5_'+Modules.id+'.css';
	$('head').append('<link rel="stylesheet" type="text/css" href="'+href+'">');
	Modules._monitorStylesheet(href);
}

Modules._getNextModule=function()
{
	clearTimeout(Modules._cssTimeoutID);
	
	Modules.id=getNextModuleId();
	Modules._initHTML5();
}

Modules._monitorStylesheet=function(href)
{
	if(Modules._isStylesheetLoaded(href)==true) Modules._completeHTML5();
	else Modules._cssTimeoutID=setTimeout(function() { Modules._monitorStylesheet(href); },100);
}

Modules._isStylesheetLoaded=function(href)
{
	var stylesheets = document.styleSheets;
	for(var i=0;i<stylesheets.length;i++)
	{
		var file = stylesheets[i];
		var owner = file.ownerNode ? file.ownerNode : file.owningElement;
		
		if(owner && owner.href && owner.href.indexOf(href)!=-1) return true;
	}
	
	return false;
}

Modules._completeHTML5=function()
{
	$('#flash').css('display','block');
	$('#flash').animate({opacity:1},0);
	
	var info1Canvas=$('#info1Canvas_'+Modules.id).get(0);
	info1Canvas.width=info1Canvas.width;
	
	var context=info1Canvas.getContext('2d');
	context.fillStyle=Modules._image1Data.bgColor;
	context.fillRect(0,0,info1Canvas.width,info1Canvas.height);
	
	$('#info1Text_'+Modules.id).html(Modules._image1Data.content);
	
	var info2Canvas=$('#info2Canvas_'+Modules.id).get(0);
	info2Canvas.width=info2Canvas.width;
	
	context=info2Canvas.getContext('2d');
	context.fillStyle=Modules._image2Data.bgColor;
	context.fillRect(0,0,info2Canvas.width,info2Canvas.height);
	
	$('#info2Text_'+Modules.id).html(Modules._image2Data.content);
	
	 comp.play();
}

Modules._timerComplete=function()
{
	Modules._disableModuleCallback();
	
	$('#flash').animate({opacity:0}, Modules.milliseconds, null, Modules._getNextModule);
}

//READY
$(function()
{
	$.fn.FlashSWF = function(options)
	{
		var settings = { file : null, width : '510', height : '402', minVersion : '9.0.28.0', flashVars : {xmlPath:'/BBHInternet/themes/html/BBHInternet/modules/flash/xml/bbhmodules.xml'}, params : {wmode:"transparent"}, attrs : {}, expressInstall : false };
		return this.each(function()
		{
			var $this = $(this);
			if (options) { $.extend( settings, options ); }
			if (settings.file && typeof swfobject !== 'undefined') swfobject.embedSWF(settings.file, $this.attr('id'), settings.width, settings.height, settings.minVersion, settings.expressInstall, settings.flashVars, settings.params, settings.attrs);
		});
	};
});

//ONLOAD
$(window).load(function()
{
	Modules.version=BBH.getQueryStringVariable('ver');
	
	switch(Modules.version)
	{
		case Modules.FLASH:
			if(swfobject.hasFlashPlayerVersion('9.0.28')) Modules._initFlash();
			else alert('The required version of Flash is not supported by this browser.');
		break;
		case Modules.HTML5:
			if(!$.browser.webkit) alert('WARNING: WebKit is not supported by this browser, so the results may be undesirable.');
			
			Modules.id=getNextModuleId();
			Modules._loadImageData();
		break;
		case Modules.HTML4:
			Modules.id=getNextModuleId();
			Modules._loadImageData();
		break;
		default:
			if(swfobject.hasFlashPlayerVersion('9.0.28')) Modules._initFlash();
			else
			{
				if($.browser.webkit) Modules.version=Modules.HTML5;
				else Modules.version=Modules.HTML4;
				
				Modules.id=getNextModuleId();
				Modules._loadImageData();
			}
		break;
	}
});

