//
// audio functions
//

// Ultimate client-side JavaScript client sniff. 
// (C) Netscape Communications 1999.  Permission granted to reuse and distribute. 
// Revised 17 May 99 to add is_nav5up and is_ie5up (see below). 

var agt = navigator.userAgent.toLowerCase();
var is_mac = (agt.indexOf("mac")!=-1); 
var is68kMac = (is_mac && ((agt.indexOf("68k")!=-1) || (agt.indexOf("68000")!=-1)));
var is_ie = (agt.indexOf("msie") != -1);

var canRealAudioNS = (navigator.mimeTypes["audio/x-pn-realaudio-plugin"] != null);
var canRealAudioIE = (is_ie && !is_mac);
var isJavaEnabled = (navigator.javaEnabled());

//
//
//

var canRealAudio = isJavaEnabled && !is68kMac && (canRealAudioIE || canRealAudioNS);

var lastPlayButtonImageOn = null;
var lastPlayerControlFormName = '';

if (document.images)
{
	// preload button down states
	rewindButtonDownState = new Image();
	rewindButtonDownState.src = "images/audiobuttons/rewind_on.gif";
	playButtonDownState = new Image();
	playButtonDownState.src = "images/audiobuttons/play_on.gif";
	pauseButtonDownState = new Image();
	pauseButtonDownState.src = "images/audiobuttons/pause_on.gif";
	stopButtonDownState = new Image();
	stopButtonDownState.src = "images/audiobuttons/stop_on.gif";
	fastForwardButtonDownState = new Image();
	fastForwardButtonDownState.src = "images/audiobuttons/fforward_on.gif";
	helpButtonDownState = new Image();
	helpButtonDownState.src = "images/audiobuttons/help_on.gif";
}

function audioPlayerButtonClicked(command,formName)
{
	var currentForm = document.forms[formName];
	lastPlayerControlFormName = formName;
			
	var trackSelectBox = currentForm.track;
	var numberOfTracks = trackSelectBox.options.length;
	var currentTrackIndex = trackSelectBox.selectedIndex;
	var filename = trackSelectBox.options[currentTrackIndex].value;
	
	var buttonClickedImage = null;
	if (document.images)
	{
		var buttonClickedImageName = formName + '_' + command;
		buttonClickedImage = document.images[buttonClickedImageName];
	}
	
	if (command == 'rew')
	{
		if (buttonClickedImage)
		{
			// click the rew button
			turnOnImage(buttonClickedImage);		
			setTimeout('turnOffImage(document.images["' + buttonClickedImageName + '"])', 300);
		}
		
		currentTrackIndex--;
		if (currentTrackIndex < 0)
		{
			currentTrackIndex = numberOfTracks - 1;
		}
		
		trackSelectBox.selectedIndex = currentTrackIndex;

		if (isPlayButtonOn(formName))
		{
			// if the play button is depressed (the player is playing) play the new clip
			filename = trackSelectBox.options[currentTrackIndex].value;
			setClip(filename);
			currentClipFileName = filename;
			playPauseClip();
		}
	}

	if (command == 'playPause')
	{
		
		if (buttonClickedImage)
		{	
			var isButtonOn = imageState(buttonClickedImage) == 'on';
			var isPlayButton = imageFileNameRoot(buttonClickedImage) == 'play';
			var isPauseButton = imageFileNameRoot(buttonClickedImage) == 'pause';

			// if the play button is off, make it play button on, turn off last play button on
			if (!isButtonOn && isPlayButton)
			{
				if (lastPlayButtonImageOn)
				{
					lastPlayButtonImageOn.src = 'images/audiobuttons/play_off.gif';
				}
				
				turnOnImage(buttonClickedImage);
				lastPlayButtonImageOn = buttonClickedImage;
			}
			
			// if the play button is on, click it. If a clip is playing then make it pause on, if not, make it play on
			if (isPlayButton && isButtonOn)
			{
				turnOffImage(buttonClickedImage);
				if (document.realPlayer.CanStop())
				{	
					setTimeout('document.images["' + buttonClickedImageName + '"].src = "images/audiobuttons/pause_on.gif"', 150);
				}
				else
				{
					setTimeout('document.images["' + buttonClickedImageName + '"].src = "images/audiobuttons/play_on.gif"', 150);				
				}
				lastPlayButtonImageOn = buttonClickedImage;
			}
			
			// if the pause button is on, click it, then make it play button on
			if (isButtonOn && isPauseButton)
			{
				turnOffImage(buttonClickedImage);		
				setTimeout('document.images["' + buttonClickedImageName + '"].src = "images/audiobuttons/play_on.gif"', 150);
				lastPlayButtonImageOn = buttonClickedImage;
			}
		}
		
		if (currentClipFileName != filename)
		{
			setClip(filename);
			currentClipFileName = filename;
		}
		playPauseClip();
	}

	if (command == 'stop')
	{
		if (buttonClickedImage)
		{
			// turn off the last play button on
			if (lastPlayButtonImageOn)
			{
				lastPlayButtonImageOn.src = 'images/audiobuttons/play_off.gif';
				lastPlayButtonImageOn = null;
			}
			// click stop button
			turnOnImage(buttonClickedImage);		
			setTimeout('turnOffImage(document.images["' + buttonClickedImageName + '"])', 150);
		}
		
		stopClip();
	}
	
	if (command == 'ff')
	{
		if (buttonClickedImage)
		{
			// click the ff button
			turnOnImage(buttonClickedImage);		
			setTimeout('turnOffImage(document.images["' + buttonClickedImageName + '"])', 150);
		}
		
		currentTrackIndex++;
		if (currentTrackIndex == numberOfTracks)
		{
			currentTrackIndex = 0;
		}
		
		trackSelectBox.selectedIndex = currentTrackIndex;

		if (isPlayButtonOn(formName))
		{
			// if the play button is depressed (the player is playing) play the new clip
			filename = trackSelectBox.options[currentTrackIndex].value;
			setClip(filename);
			currentClipFileName = filename;
			playPauseClip();
		}
	}
	
	if (command == 'help')
	{
		if (buttonClickedImage)
		{
			// click the help button
			turnOnImage(buttonClickedImage);		
			setTimeout('turnOffImage(document.images["' + buttonClickedImageName + '"])', 150);
		}
	}
	
	showAudioHelp();
}

function clipChanged(filename,form)
{
	var formName = form.name;

	if (isPlayButtonOn(formName))
	{
		audioPlayerButtonClicked('stop',formName);	
		audioPlayerButtonClicked('playPause',formName);
	}
}

function isPlayButtonOn(formName)
{
	var playButtonImage = document.images[formName + '_playPause'];
	return (imageFileNameRoot(playButtonImage) == 'play' && imageState(playButtonImage) == 'on');
}

function playPauseClip()
{
	if (canRealAudio)
	{
		document.realPlayer.DoPlayPause();
	}
	else
	{
		showAudioHelp();
	}
}

function stopClip()
{
	if (canRealAudio)
	{
		document.realPlayer.DoStop();
	}
	else
	{
		showAudioHelp();
	}
}

function setClip(filename)
{
	if (canRealAudio)
	{
		if (canRealAudioIE)
		{
			document.realPlayer.Source = filename;
		}
		else
		{
			 if (canRealAudioNS)
			 {
			 	document.realPlayer.SetSource(filename); 
			 }
		}
	}
	else
	{
		showAudioHelp();
	}
}

function isAudioPlaying()
{
	return true;
}

function showAudioHelp()
{
		soundWindow = open('audiohelp.html','helpWindow','width=420,height=350,statusbar=no,locationbar=no,scrollbars=yes,toolbar=no');	
}
