//Global Variables
	var oPlayerVoice;
	var oPlayerMusic;
	var oPlayerVideo;
	
	var bPlayerScriptableVoice = false; //default
	var bPlayerScriptableMusic = false; //default
	var bPlayerScriptableVideo = false; //default
	
	var sRequestedPlayerStateVideo = 'stop'; //default
	//var sRequestedPlayerStateVoice = 'play'; //defined in parent page
	//var sRequestedPlayerStateMusic = 'play'; //defined in parent page
	
	//Default Voice button images
	var sMediaControlsVoice_Rollover_Off = sASPCOMMONFILES_TEMPLATE + 'images/shell_header_bottom_mediacontrols_voice_off_off.gif';
	var sMediaControlsVoice_Rollover_Over = sASPCOMMONFILES_TEMPLATE + 'images/shell_header_bottom_mediacontrols_voice_off_over.gif';
	
	//Default Music button images
	var sMediaControlsMusic_Rollover_Off = sASPCOMMONFILES_TEMPLATE + 'images/shell_header_bottom_mediacontrols_music_off_off.gif';
	var sMediaControlsMusic_Rollover_Over = sASPCOMMONFILES_TEMPLATE + 'images/shell_header_bottom_mediacontrols_music_off_over.gif';
	
	//Fade out timers
	var oIntervalMusicFadeOut;
	var oIntervalVoiceFadeOut;
	
	var bContentMediaPlayed = false; //Media play tracking.
	
function BodyOnLoad() {
//Things TODO after page finishes loading
	//Validate Media Player creation after timeout
	var oTimeoutValidateMediaPlayers = setTimeout('ValidateMediaPlayers()', 500);
	
	//Start Interval Timer
	var oInternalWatcher = setInterval('IntervalWatcher()', 1000);
}//BodyOnLoad()

//---------------------------------------------------
function ValidateMediaPlayers() {
//Detects proper Media Player creations
	var iCountPlayerControls = 0;
	//Hidden Voice
		if ( document.getElementById('MediaPlayer_Audio_Voice') ) {
		//Element exists
			oPlayerVoice = document.getElementById('MediaPlayer_Audio_Voice');
			if ( oPlayerVoice.playState && oPlayerVoice.controls ) {
			//Element has .playState & .controls
				bPlayerScriptableVoice = true;
				document.getElementById('MediaControls_Wrapper').style.display = 'block'; //show player control area
				document.getElementById('MediaControls_Voice').style.display = 'inline'; //show player control button
				iCountPlayerControls++
			}
		}
		
	//Hidden Music
		if ( document.getElementById('MediaPlayer_Audio_Music') ) {
		//Element exists
			oPlayerMusic = document.getElementById('MediaPlayer_Audio_Music');
			if ( oPlayerMusic.playState && oPlayerMusic.controls ) {
			//Element has .playState & .controls
				bPlayerScriptableMusic = true;
				document.getElementById('MediaControls_Wrapper').style.display = 'block'; //show player control area
				document.getElementById('MediaControls_Music').style.display = 'inline'; //show player control button
				iCountPlayerControls++
			}
		}
	
	if ( iCountPlayerControls > 1 ) {
	//more than one player control shown
		document.getElementById('MediaControls_Divider').style.display = 'inline'; //show divider
	}
		
	//Content Media
		if ( document.getElementById('Conent_MediaPlayer_01') ) {
		//Element exists
			oPlayerVideo = document.getElementById('Conent_MediaPlayer_01');
			if ( oPlayerVideo.playState && oPlayerVideo.controls ) {
			//Element has .playState & .controls
				bPlayerScriptableVideo = true;
			}		
		}
}//ValidateMediaPlayers()
//---------------------------------------------------

function IntervalWatcher() {
	PlayerStatesLogic();
	//TODO - Log active connection.
	//fnRepSiteTrack(iSessionID,???); //Record active page viewing
}//IntervalWatcher()

//---------------------------------------------------
//Figures out what state the Voice, Music & Video Players & related buttons need to be in.
function PlayerStatesLogic() {
	
	//Video Player state control
	if ( bPlayerScriptableVideo ) {
		if ( sRequestedPlayerStateVideo == 'play' && oPlayerVideo.playState != 3  ) {
		//Video Player is requested to play and is not currently playing
			oPlayerVideo.controls.play(); //Play Video Player
		}
		else if ( sRequestedPlayerStateVideo == 'pause' && oPlayerVideo.playState != 2  ) {
		//Video Player is requested to pause and is not currently paused
			oPlayerVideo.controls.pause(); //Pause Video Player
		}
		sRequestedPlayerStateVideo = '[REMOVE REQUEST]'; //Pervent Video Player from pausing on future play attempts
	}
	
	//Check if Video Player is currently playing
	if ( bPlayerScriptableVideo ) {
		if ( oPlayerVideo.playState == 3 ) {
		//Video Player is playing
			sRequestedPlayerStateVoice = 'pause'; //Request Voice Player to pause
			sRequestedPlayerStateMusic = 'stop'; //Request Music Player to stop
			
			//Log Media Event
			if ( bContentMediaPlayed == false ) {
			//Content media has not played yet.
				if ( iSessionID != -1 ) {
				//Site not in Preview Mode
					fnRepSiteTrack(iSessionID,iSiteTrackItemID); //Record in log that media played.
				}
				bContentMediaPlayed = true; //Record that media played. Prevents relogging.
			}
		}
	}
	
	//Voice Player state control
	if ( bPlayerScriptableVoice ) {
		if ( sRequestedPlayerStateVoice == 'play' && oPlayerVoice.playState != 3 ) {
		//Voice Player is requested to play and is not currently playing
			//oPlayerVoice.settings.volume = 50;
			oPlayerVoice.controls.play(); //Play Voice Player
		} 
		else if ( sRequestedPlayerStateVoice == 'pause' && oPlayerVoice.playState != 2 ) {
		//Voice Player is requested to pause and is not currently paused
			oPlayerVoice.controls.pause(); //Pause Voice Player
			//clearInterval(oIntervalVoiceFadeOut); //Stop any previous intervals
			//oIntervalVoiceFadeOut = setInterval('MediaFadeOut(oPlayerVoice, "Voice", .25)', 100); //Fade out & stop Music Player
		}
		sRequestedPlayerStateVoice = '[REMOVE REQUEST]'; //Prevent Voice Player from playing again after finishing	
	}
	
	//Music Player state control
	if ( bPlayerScriptableMusic ) {
		if ( sRequestedPlayerStateMusic == 'play' && oPlayerMusic.playState != 3 ) {
		//Music Player is requested to play and is not currently playing
			oPlayerMusic.settings.volume = iMusicVolume;
			oPlayerMusic.controls.play(); //Play Music Player
		}
		else if ( sRequestedPlayerStateMusic == 'stop' && oPlayerMusic.playState != 1 && oPlayerMusic.playState != 10 ) {
		//Music Player is requested to stop and is  not currently stopped
			//oPlayerMusic.controls.stop(); //Stop Music Player
			clearInterval(oIntervalMusicFadeOut); //Stop any previous intervals
			oIntervalMusicFadeOut = setInterval('MediaFadeOut(oPlayerMusic, "Music", .66)', 100); //Fade out & stop Music Player
		}
		sRequestedPlayerStateMusic = '[REMOVE REQUEST]'; //Prevent Music Player from playing again after finishing. Will be take care of with playCount <param> on object.
	}
	
	//--------------------------------
	//Voice Button state logic
		if ( bPlayerScriptableVoice ) {
			if ( oPlayerVoice.playState != 3 ) {
			//Voice Player is not playing
				//Change button image mode to 'off'
				sMediaControlsVoice_Rollover_Off = sASPCOMMONFILES_TEMPLATE + 'images/shell_header_bottom_mediacontrols_voice_off_off.gif';
				sMediaControlsVoice_Rollover_Over = sASPCOMMONFILES_TEMPLATE + 'images/shell_header_bottom_mediacontrols_voice_off_over.gif';
			} else if ( oPlayerVoice.playState == 3 ) {
			//Voice Player is playing
				//Change button image mode to 'on'
				sMediaControlsVoice_Rollover_Off = sASPCOMMONFILES_TEMPLATE + 'images/shell_header_bottom_mediacontrols_voice_on_off.gif';
				sMediaControlsVoice_Rollover_Over = sASPCOMMONFILES_TEMPLATE + 'images/shell_header_bottom_mediacontrols_voice_on_over.gif';
			}
		}
		
		//Change button image state. Prevent image on/off switching while mouse is over button. 
			var oMediaControls_Voice = document.getElementById('MediaControls_Voice');
			var sImageCurrentVoice = oMediaControls_Voice.src.substring( oMediaControls_Voice.src.lastIndexOf('/') + 1 );
			var sImageVoiceRollOverOver = sMediaControlsVoice_Rollover_Over.substring( sMediaControlsVoice_Rollover_Over.lastIndexOf('/') + 1 );
			var sImageVoiceRollOverOff = sMediaControlsVoice_Rollover_Off.substring( sMediaControlsVoice_Rollover_Off.lastIndexOf('/') + 1 );
			
			if ( sImageCurrentVoice == 'shell_header_bottom_mediacontrols_voice_off_over.gif' || sImageCurrentVoice == 'shell_header_bottom_mediacontrols_voice_on_over.gif' ) {
			//Current image state is Over
				if ( sImageCurrentVoice != sImageVoiceRollOverOff ) {
				//Current image is not the same as new image
					oMediaControls_Voice.src = sMediaControlsVoice_Rollover_Over;
				}
			} 
			else if ( sImageCurrentVoice == 'shell_header_bottom_mediacontrols_voice_off_off.gif' || sImageCurrentVoice == 'shell_header_bottom_mediacontrols_voice_on_off.gif' ) {
			//Current image state is Off
				 if ( sImageCurrentVoice != sImageVoiceRollOverOff ) {
				//Current image is not the same as new image
					oMediaControls_Voice.src = sMediaControlsVoice_Rollover_Off;
				}
			}
	//--------------------------------
	
	//--------------------------------		
	//Music Button state logic
		if ( bPlayerScriptableMusic ) {
			if ( oPlayerMusic.playState != 3 ) {
			//Music Player is not playing
				//Change button image mode to 'off'
				sMediaControlsMusic_Rollover_Off = sASPCOMMONFILES_TEMPLATE + 'images/shell_header_bottom_mediacontrols_music_off_off.gif';
				sMediaControlsMusic_Rollover_Over = sASPCOMMONFILES_TEMPLATE + 'images/shell_header_bottom_mediacontrols_music_off_over.gif';
			} else if ( oPlayerMusic.playState == 3 ) {
			//Music Player is playing
				//Change button image mode to 'on'
				sMediaControlsMusic_Rollover_Off = sASPCOMMONFILES_TEMPLATE + 'images/shell_header_bottom_mediacontrols_music_on_off.gif';
				sMediaControlsMusic_Rollover_Over = sASPCOMMONFILES_TEMPLATE + 'images/shell_header_bottom_mediacontrols_music_on_over.gif';
			}
		}
		
		//Change button image state. Prevent image on/off switching while mouse is over button. 
			var oMediaControls_Music = document.getElementById('MediaControls_Music');
			var sImageCurrentMusic = oMediaControls_Music.src.substring( oMediaControls_Music.src.lastIndexOf('/') + 1 );
			var sImageMusicRollOverOver = sMediaControlsMusic_Rollover_Over.substring( sMediaControlsMusic_Rollover_Over.lastIndexOf('/') + 1 );
			var sImageMusicRollOverOff = sMediaControlsMusic_Rollover_Off.substring( sMediaControlsMusic_Rollover_Off.lastIndexOf('/') + 1 );
			
			if ( sImageCurrentMusic == 'shell_header_bottom_mediacontrols_music_off_over.gif' || sImageCurrentMusic == 'shell_header_bottom_mediacontrols_music_on_over.gif' ) {
			//Current image state is Over
				if ( sImageCurrentMusic != sImageMusicRollOverOff ) {
				//Current image is not the same as new image
					oMediaControls_Music.src = sMediaControlsMusic_Rollover_Over;
				}
			} 
			else if ( sImageCurrentMusic == 'shell_header_bottom_mediacontrols_music_off_off.gif' || sImageCurrentMusic == 'shell_header_bottom_mediacontrols_music_on_off.gif' ) {
			//Current image state is Off
				 if ( sImageCurrentMusic != sImageMusicRollOverOff ) {
				//Current image is not the same as new image
					oMediaControls_Music.src = sMediaControlsMusic_Rollover_Off;
				}
			}
	//--------------------------------
			
}//PlayerStatesLogic()
//---------------------------------------------------

function MediaFadeOut(oPlayer, sTimer, dPercentToFade) {
//Fades out Music Player
	var iOldVolume = oPlayer.settings.volume; //Safari hates you! Cannot change oPlayer.settings.volume value in Safari.
	oPlayer.settings.volume = Math.floor(oPlayer.settings.volume * dPercentToFade); //Reduce volume by a percent
	if ( oPlayer.settings.volume == 0 || oPlayer.settings.volume == iOldVolume ) {
		oPlayer.controls.stop(); //Stop Player
		clearInterval(eval('oInterval' + sTimer + 'FadeOut')); //Stop fade out interval timer
	}
}//MediaFadeOut()

//---------------------------------------------------
//Buttons for Hidden Audio
	function VoiceOnOffToggle() {
		if ( oPlayerVoice.playState != 3 ) {
		//Voice Player is currently not playing
			sRequestedPlayerStateVoice = 'play'; //Request Voice Player to play
			sRequestedPlayerStateVideo = 'pause'; //Request Video Player to pause
		}
		else if ( oPlayerVoice.playState == 3 ) {
		//Voice Player is currently playing
			sRequestedPlayerStateVoice = 'pause'; //Request Voice Player to pause
		}
		document.getElementById('frmMediaPlayer_Audio_Voice_State').value = sRequestedPlayerStateVoice; //record setting for rest of site
		PlayerStatesLogic();
	}//VoiceOnOffToggle()
	
	function MusicOnOffToggle() {
		if ( oPlayerMusic.playState != 3 ) {
		//Music Player is currently not playing
			sRequestedPlayerStateMusic = 'play'; //Request Music Player to play
			sRequestedPlayerStateVideo = 'pause'; //Request Video Player to pause
		}
		else if ( oPlayerMusic.playState == 3 ) {
		//Music Player is currently playing
			sRequestedPlayerStateMusic = 'stop'; //Request Music Player to stop
		}
		document.getElementById('frmMediaPlayer_Audio_Music_State').value = sRequestedPlayerStateMusic; //record setting for rest of site
		PlayerStatesLogic();
	}//MusicOnOffToggle()
//---------------------------------------------------
