/********************************************************************
 * FILE: AUDIOSCRIPT.JS
 *   Description: Javascript used to play audio in a UHC application  
 * Functions:
 *  	EmbedAudio(): Place this function in the BODY of the document, it will embed
 *			the appropriate player
 *  	SetMediaPlayer(): Put this function in the OnLoad function of page, it will
 *			  check which version is loaded and set mediaplayerversion accordingly.
 *  	PlayAudio(f): Play the file: it will add it to audiofilepath
 *  	StopAudio(): Stop audio
 *  	ReplayAudio(): Replay the last file
 *  	PauseAudio(): Pause audio
 *  	EndResponse(): Define this somewhere else: it's what is to be done at end of audio
 * Copyright © 2006-7 Experience Builders LLC
 ********************************************************************/

var useAudio = false;           // If false, don't use audio, else do
var mediaplayerversion = -1;	// Will be automatically set to the correct value
var LoadMP6 = true;		// Try loading MP version 6
var LoadMP9 = true;		// Try loading MP version 9
var audiofilepath = document.location.href;  // path to the Audio folder ('audio/' is in data)
	// The following will remove the last folder in the current url (eg, scenario-1/)
	audiofilepath = audiofilepath.substring(0,audiofilepath.lastIndexOf("/"))
	audiofilepath = audiofilepath.substring(0,audiofilepath.lastIndexOf("/")+1)
var audioTO = null;
var MP6 = null, MP9 = null;

function PlayAudio (f) {
	var file = PrepareAudioFilename(f);
	if (!useAudio) {
		EndResponse();
		return false; }
	if (mediaplayerversion>0) {
		currentaudiofile = file;
		ShowStatus("Loading file " + file + "...");
		audiostopped = false;
		if (file && file!="" && file!=null) {
			if (mediaplayerversion==9)
				MP9.URL = file;
			else if (mediaplayerversion==6)
				MP6.fileName = file; }
		StartMP();
	} else {
		ShowStatus("Could not find Media Player on this computer.  Skipping Audio.");
		useAudio = false;
		EndResponse(); } };
function StartMP () {
  if (mediaplayerversion==9) {
  	if (MP9.playState==10||MP9.playState==8) {
		if (MP9.error.errorCount==0) {
			ShowStatus("Playing file '" + currentaudiofile + "'...");
			MP9.controls.play();
			audioTO = setTimeout("PlayAtClose()",2000);
		} else {
			var errItem = MP9.error.item(MP9.error.errorCount - 1);
			var errDesc = errItem.errorDescription;
			var errNum = errItem.errorCode;
			ShowStatus("Couldn't load '" + currentaudiofile + "'. " + errNum + ", " + errDesc);
			MP9.error.clearErrorQueue();
			EndResponse(); } }
	else {
		audioTO = setTimeout("StartMP()",500); }
  } else if (mediaplayerversion==6) {
  	if (MP6.ReadyState>=3) {
		ShowStatus("Playing file '" + MP6.FileName + "'...");
		MP6.Play();
		audioTO = setTimeout("PlayAtClose()",2000);
	} else {
		audioTO = setTimeout("StartMP()",500); } } };
function PlayAtClose () {
	if (!useAudio) {
		EndResponse();
		return false;
	}
	if (mediaplayerversion==9) {
		if (MP9.playState!=3) {
			if (MP9.error.errorCount>0 && (PlayAtClose.arguments.length==0)) {
				var errItem = MP9.error.item(MP9.error.errorCount - 1);
				var errDesc = errItem.errorDescription;
				var errNum = errItem.errorCode;
				ShowStatus("Couldn't play '" + currentaudiofile + "'. " + errNum + ", " + errDesc);
				MP9.error.clearErrorQueue();
			} else {
				ShowStatus("Done"); }
			EndResponse();
		} else {
			audioTO = setTimeout("PlayAtClose()",500); }
	} else if (mediaplayerversion==6) {
		if (MP6.PlayState!=2) {
			if (MP6.ErrorCode!=0)
				ShowStatus("Error playing '" + currentaudiofile + "'. " + MP6.ErrorCode + ", " + MP6.ErrorDescription);
			else
				ShowStatus("Done");
			EndResponse();
		} else
			audioTO = setTimeout("PlayAtClose()",500);
	} else {
		ShowStatus("Could not find Media Player.");
		EndResponse();
	}
};
function StopAudio () {
	if (!useAudio) return false;
	ShowStatus("Audio stopped");
	clearTimeout(audioTO);
	audiostopped = true;
	if (mediaplayerversion==9)
		MP9.controls.stop();
	else if (mediaplayerversion==6)
		MP6.Stop(); };
function PauseAudio () {
	if (mediaplayerversion==9) {
		if (MP9.playState==3) {
			ShowStatus("Audio paused");
			audiostopped = true;
			MP9.controls.pause();
		} else if (MP9.playState==2) {
			ShowStatus("");
			audiostopped = false;
			MP9.controls.play(); } }
	else if (mediaplayerversion==6) {
		if (MP6.PlayState==2) {
			ShowStatus("Audio paused");
			audiostopped = true;
			MP6.Pause();
		} else if (MP6.PlayState==1) {
			ShowStatus("");
			audiostopped = false;
			MP6.Play(); } } };
function ReplayAudio () {
	if (mediaplayerversion==9) {
		MP9.controls.stop();
		MP9.controls.currentPosition = 0;
		MP9.controls.play();
	} else if (mediaplayerversion==6) {
		StopMediaAudio();
		MP6.Stop();
		MP6.CurrentPosition = 0;
		MP6.Play(); } };
function EmbedAudio () {
  if (useAudio) {
	if (LoadMP6&&(mediaplayerversion==6||mediaplayerversion==-1)) {
		document.write('<OBJECT ID="MP6" WIDTH=1 HEIGHT=1 CLASSID="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" ');
		document.write('    CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7,1112"');
		document.write('    STANDBY="Loading Windows Media Player 6 components..."');
		document.write('    TYPE="application/x-oleobject">');
		document.write('  <PARAM NAME="FileName" VALUE="">');
		document.write('  <PARAM NAME="autoStart" VALUE="False">');
		document.write('  <EMBED TYPE="application/x-mplayer2" SRC="" NAME="MP6" WIDTH=1 HEIGHT=1></EMBED>');
		document.write('</OBJECT>');
		MP6 = document.getElementById("MP6");
	}
	if (LoadMP9&&(mediaplayerversion==9||mediaplayerversion==-1)) {
		document.write('<OBJECT ID="MP9" WIDTH=0 HEIGHT=0');
		document.write('	CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">');
		document.write('  <PARAM name="autoStart" value="False">');
		document.write('  <PARAM name="uiMode" value="invisible">');
		document.write('</OBJECT>');
		MP9 = document.getElementById("MP9"); } } };
function SetMediaPlayer () {
	if (!useAudio) {
		mediaplayerversion = 0;
		return false; }
	if ((typeof MP9 != "undefined") && (typeof MP9.controls != "undefined")) {
		mediaplayerversion = 9;
	} else if ((typeof MP6 != "undefined") && (typeof MP6.PlayState != "undefined")) {
		mediaplayerversion = 6;
	} else {
		mediaplayerversion = 0;
		useAudio = false;
	}
	ShowStatus(mediaplayerversion==0?"Can't find Media Player version 6 or 9!":"Using MediaPlayer Version " + mediaplayerversion); };
function PrepareAudioFilename (f) {	
	return audiofilepath + f; };
function ShowStatus (s) {
	window.status = s; };
// End