/**
 * @author Ben Portis
 */

/*
 * Initialize Variables
 */
var clip1 = null;
var clip1Location = 'http://www.esprelive.com/wainhouse/clips/pete/320_240/video_s1.dat.sdl';
var clip1SplashId = 'clip1Busy';
var clip1Id = 'edclip1viewer';
	
var clip2 = null;
var clip2Location = 'http://www.esprelive.com/wainhouse/clips/pptvSpecial/496_336/video_s1.dat.sdl';
var clip2SplashId = 'clip2Busy';
var clip2Id = 'edclip2viewer';

var _clipViewerState = false;
var _clip1TimerId = '';
var _clip2TimerId = '';
	
/*
 * Clip 1 Pre-Define Trigger Scenes;
 * Once clip 1 gets to a specific scene
 * it triggers to play a clip
 * range for clip2
 */
var clip1TriggerScene = new Array();
clip1TriggerScene[2] = '1,1201';
clip1TriggerScene[3] = '1,2036';
clip1TriggerScene[4] = '1,3303';
clip1TriggerScene[5] = '1,4213';
clip1TriggerScene[6] = '1,5199';
clip1TriggerScene[7] = '1,6355';
clip1TriggerScene[8] = '1,6559';
clip1TriggerScene[9] = '2,260';
clip1TriggerScene[10] = '2,1313';
clip1TriggerScene[11] = '2,2224';
clip1TriggerScene[12] = '2,3356';
clip1TriggerScene[13] = '2,3488';
clip1TriggerScene[14] = '2,5035';
clip1TriggerScene[15] = '2,5482';
clip1TriggerScene[16] = '2,6156';

/*
 * Clip 2 Pre-Define Scene Ranges
 */
var clip2SceneRange = new Array();
clip2SceneRange['Slide1'] = 'Slide1;1,0:1,23';
clip2SceneRange['Slide2'] = 'Slide2;2,0:2,24';
clip2SceneRange['Slide3'] = 'Slide3;3,0:3,24';
clip2SceneRange['Slide4'] = 'Slide4;4,0:4,9';
clip2SceneRange['Slide5'] = 'Slide5;5,0:5,11';
clip2SceneRange['Slide6'] = 'Slide6;6,0:6,24';
clip2SceneRange['Slide7'] = 'Slide7;7,0:7,24';
clip2SceneRange['Slide8'] = 'Slide8;8,0:8,24';
clip2SceneRange['Slide9'] = 'Slide9;9,0:9,12';
clip2SceneRange['Slide10'] = 'Slide10;10,0:10,23';
clip2SceneRange['Slide11'] = 'Slide11;11,0:11,24';
clip2SceneRange['Slide12'] = 'Slide12;12,0:12,13';
clip2SceneRange['Slide13'] = 'Slide13;13,0:13,19';
clip2SceneRange['Slide14'] = 'Slide14;14,0:14,23';
clip2SceneRange['Slide15'] = 'Slide15;15,0:15,24';
clip2SceneRange['Slide16'] = 'Slide16;16,0:16,23';

Actor.setAppletType('clipViewer');

/**
 * This function is called by startActors
 */
function startActors2()
{		
	/*
	 * Instantiate clip1 and set events and properties
	 */
	clip1 = new Actor('clip1viewer');
	clip1.setTag("edclip1viewer");
	clip1.addEventRule('firstFrameReady',"showActors()");
	clip1.addHtmlParam('backgroundColor','white');
	clip1.setClipWidth(320);
	clip1.setClipHeight(240);
	clip1.start(false);
	
	/*
	 * Instantiate clip2 and set events and properties
	 */
	clip2 = new Actor('clip2viewer');
	clip2.setTag("edclip2viewer");
	clip2.addEventRule('allActorsReady', "playClips();");  
	//clip2.addEventRule('firstFrameReady',"clip1SplashScreen(true);");
	clip2.addHtmlParam('backgroundColor','white');
	clip2.setClipWidth(496);
	clip2.setClipHeight(336);
	clip2.start(true);
}

/**
 * This function is called as an alternative
 * solution to resolve error; details within
 * function.
 */
function verifyInstallation()
{
	/*
	 * The Project.Install is not needed; but there is a
	 * timing issue that is causing an error within the
	 * meActorUtil.js file {reconfigureRetryCtrMax=60}.
	 */
/*	Project.Install();   Removed 8/22/07 

    if(!Project.isInstalled())
    {
      //loop till installation complete
      setTimeout("verifyInstallation()", "100");
      return;
    } */
    startActors();
    return;
}

function showMainDiv()
{
	
    document.getElementById('loader1').style.visibility="hidden";
    document.getElementById('loader1').style.display="none";
    document.getElementById('login_box1').style.visibility="visible";			  	  	
    document.getElementById('login_box1').style.display="block";		  	  	
	

}

/**
 * Controls the showing and hiding of the splash
 * screen for clip1
 * 
 * @param {Object} state
 */

function showActors() {
			    showMainDiv();
                        document.getElementById(clip1Id).style.visibility = "visible";
                        document.getElementById(clip1Id).style.display = "block";
                        document.getElementById(clip2Id).style.visibility = "visible";
                        document.getElementById(clip2Id).style.display = "block";

}

function clip1SplashScreen(state)
{
	
                        document.getElementById(clip1Id).style.visibility = "visible";
                        document.getElementById(clip1Id).style.display = "block";
                        document.getElementById(clip2Id).style.visibility = "visible";
                        document.getElementById(clip2Id).style.display = "block";

/*


if(!_clipViewerState)
	{
		hideElement(clip1SplashId);
		document.getElementById(clip1Id).style.display = 'block';
		document.getElementById(clip1Id).style.visibility = 'visible';
		_clipViewerState = true;
	}
  
	var currentBusy = document.getElementById(clip1SplashId).currentStyle['display'];    
	if (state)
	{
		if (currentBusy != 'none')
		{
			document.getElementById(clip1SplashId).style.visibility = "hidden";
			document.getElementById(clip1SplashId).style.display = "none";
			document.getElementById(clip1Id).style.visibility = "visible";
			document.getElementById(clip1Id).style.display = "block";
			clearTimeout(_clip1TimerId);
		}
	}
	else
	{
		if (currentBusy != 'block')	
		{
			document.getElementById(clip1SplashId).style.visibility = "visible";
			document.getElementById(clip1SplashId).style.display = "block";
			document.getElementById(clip1Id).style.visibility = "hidden";
			document.getElementById(clip1Id).style.display = "none";
			_clip1TimerId = setTimeout("_clip1CheckPlayer()",5000);
		}
	}		
*/
}

function _clip1CheckPlayer()
{
	clip1.stop;
	clip1SplashScreen(true);
}		

/**
 * Controls the showing and hiding of the splash
 * screen for clip2
 * 
 * @param {Object} state
 */	
function clip2SplashScreen(state)
{
	var currentBusy = document.getElementById(clip2SplashId).currentStyle['display'];    
	if (state)
	{
		if (currentBusy != 'none')	
		{
			document.getElementById(clip2SplashId).style.visibility = "hidden";
			document.getElementById(clip2SplashId).style.display = "none";
			document.getElementById(clip2Id).style.visibility = "visible";
			document.getElementById(clip2Id).style.display = "block";
			clearTimeout(_clip2TimerId);
		}
	}
	else
	{
		if (currentBusy != 'block')	
		{
			document.getElementById(clip2SplashId).style.visibility = "visible";
			document.getElementById(clip2SplashId).style.display = "block";
			document.getElementById(clip2Id).style.visibility = "hidden";
			document.getElementById(clip2Id).style.display = "none";
			//_clip2TimerId = setTimeout('_clip2CheckPlayer();',5000);
			_clip2CheckPlayer();
		}
	}		
}

function _clip2CheckPlayer()
{
	clip2.stop;
	clip2SplashScreen(true);
}

/**
 * Begins playing clip1 and clip2
 */
function playClips()
{
	//showMainDiv();
	_muteClip(clip2);
	_setForceNoAudio(clip2,'true');

	//clip2SplashScreen(false);
	setTimeout('_playClip2Scene(1);',1000);
	
    _setClip1Events();		

    //clip1SplashScreen(false);

    clip1.play(clip1Location);				
}

/**
 * Plays clip2 by scenes via a range
 * set in the clip2SceneRange array
 * 
 * @param {Object} slide
 */
function _playClip2Scene(slide)
{
	var scene = clip2SceneRange['Slide'+slide];
	clip2.playScene2(scene,clip2Location);
}

/**
 * Mute Clip
 * 
 * @param {Object} actor
 */
function _muteClip(actor)
{
	clipDirector.ep_invokeAndWait(' ,' + actor.getTag() + ',ep_manualMute');
}

/**
 * Set clip to no audio
 * 
 * @param {Object} actor
 * @param {Object} state
 */
function _setForceNoAudio(actor, state)
{
	clipDirector.ep_invokeAndWait(' ,' + actor.getTag() + ',ep_setForceNoAudio,' + state);
}

/**
 * Sets clip1 events
 */
function _setClip1Events()
{	
	for (keyVar in clip1TriggerScene)
	{
		setClip1AddEventRule(keyVar);
		setClip1AddOnFrameEvent(keyVar);
	}
}

/**
 * Dynmically building and setting the clip1 Add Event Rules
 * 
 * @param {Object} slide
 */
function setClip1AddEventRule(slide)
{
	clip1.addEventRule("beginSlide"+slide,"_playClip2Scene("+slide+")");	
}

/**
 * Dynmically building and setting the clip1 Add on Frame Events
 * 
 * @param {Object} slide
 */
function setClip1AddOnFrameEvent(slide)
{
	clipDirector.ep_invoke(' ,' + clip1.getTag() + ',ep_addOnFrameEvent,true,'+clip1TriggerScene[slide]+',beginSlide'+slide);	
}
