var av = navigator.appVersion;
var ua = navigator.userAgent;

var platform = new Object ();

platform.is_IE          = av.indexOf("MSIE")     > -1;      // (any version)
platform.is_Gecko       = ua.indexOf("Gecko")    > -1;      // (any Gecko-based browser including Mozilla, Beonix, AOL, Netscape 6.0+, etc.)
platform.is_OldNetscape = !platform.is_IE && ua.indexOf("Mozilla")  > -1 && parseFloat(av) < 5.0;   // Netscape 4.X or older
platform.is_AnyMozilla  = platform.is_Gecko || platform.is_OldNetscape;

var STOPPED = 1;
var PAUSED = 2;
var PLAYING = 3;

var STOP = 1;
var PAUSE = 2;
var PLAY = 3;
var TOGGLE = 4;

var clipInfo = new Array();

var displayTimer = null;

function displayTiming (_soundName)
	{
	try
		{
		if (!clipInfo[_soundName])
			return;

		var clip = clipInfo[_soundName];
		var now = new Date ();
		clip.intro = clip.audioEmbed.intro * 1000;
		clip.duration = clip.audioEmbed.duration * 1000;
		clip.outro = clip.audioEmbed.outro * 1000;
		clip.actualDuration = (clip.intro + clip.duration + clip.outro);

		if (player && player.media && player.media.duration)
			{
			clip.actualDuration = player.media.duration * 1000;
			clip.duration = clip.actualDuration - clip.intro - clip.outro;
			}

		clip.upTime = 0;
		clip.upMins = 0; 
		clip.upSecs = 0; 
		clip.dnTime = clip.duration; 
		clip.dnMins = parseInt(clip.dnTime / 60000);          
		clip.dnSecs = parseInt((clip.dnTime % 60000) / 1000); 
		clip.pctPlayed =  0;

		if (clip.status == PLAYING && clip.audioStartedAt)
			{
			clip.actualUpTime = now.getTime() - clip.audioStartedAt.getTime();	// in 1/1000ths of seconds
			clip.actualUpTime = clip.upTime < 0 ? 0 : clip.actualUpTime;
			clip.upTime = clip.actualUpTime - (clip.intro);
			clip.upTime = clip.upTime < 0 ? 0 : clip.upTime;
			clip.upMins = parseInt((clip.upTime) / 60000);
			clip.upSecs = parseInt(((clip.upTime) % 60000) / 1000);
			clip.dnTime = (clip.duration) - parseInt(clip.upTime - 999);	// in 1/1000ths of seconds
			clip.dnMins = parseInt(clip.dnTime / 60000);
			clip.dnSecs = parseInt((clip.dnTime % 60000) / 1000);
			clip.pctPlayed = (clip.actualUpTime / clip.actualDuration) * 100;
			//window.status = clip.upTime + " " + clip.actualUpTime + " " + clip.actualDuration + " " + clip.pctPlayed + "%";
			//if (dnTime < 900)
			//	stop(_soundName);
			}

		document.getElementById("upTime").innerHTML = "+" + clip.upMins + ":" + (clip.upSecs < 10 ? "0" : "") + clip.upSecs;
		document.getElementById("dnTime").innerHTML = "-" + clip.dnMins + ":" + (clip.dnSecs < 10 ? "0" : "") + clip.dnSecs;
		document.getElementById("timingBar").style.width = clip.pctPlayed + "%";
		}
	catch (_e) {}
	}

function play (_soundName)
	{
	try
		{
		if (!clipInfo[_soundName])
			{
			clipInfo[_soundName] = new Object ();
			}
		var clip = clipInfo[_soundName];
		if (clip.status == PAUSED)
			{
			player.Controls.play();
			}
		else
			{
			clip.duration = 30;
			clip.audioEmbed = document.embeds[_soundName];
			if (!clip)
				return;
			if (clip.audioEmbed && clip.audioEmbed.duration)
				clip.duration = clip.audioEmbed.duration;
			//document.forms[0].mediaTitle.value = clip.audioEmbed.title;
			document.getElementById("mediaTitleText").innerHTML = clip.audioEmbed.title;
			if (clip.audioSrc != clip.audioEmbed.src)
				player.URL = clip.audioEmbed.src;
			player.Controls.play();
			clip.audioSrc = clip.audioEmbed.src;
			//if (clip.duration)
			//	clip.playStopper = setTimeout("stop('"+_soundName+"')", clip.duration * 1000);
			clip.audioStartedAt = new Date ();
			}
		clip.status = PLAYING;
		displayTimer = setInterval("displayTiming('"+_soundName+"')", 100);
		}
	catch (_e) { window.status = "0:"+_e.toString(); }
	}

function stop (_soundName)
	{
	try
		{
		if (!clipInfo[_soundName])
			return;
		var clip = clipInfo[_soundName];
		if (clip.status != PLAYING && clip.status != PAUSED)
			return;
		clip.audioEmbed = document.embeds[_soundName];
		clearTimeout(clip.playStopper);
		player.Controls.Stop();
		clip.status = STOPPED;
		clip.audioStartedAt = null;
		}
	catch (_e) { window.status = "1:"+_e.toString(); }
	}

function pause (_soundName)
	{
	try
		{
		if (!clipInfo[_soundName])
			return;
		var clip = clipInfo[_soundName];
		if (clip.status != PLAYING)
			return;
		player.Controls.Pause();
		clip.status = PAUSED;
		}
	catch (_e) { window.status = "2:"+_e.toString(); }
	}

function rewind (_soundName)
	{
	stop(_soundName);
	}

function cueBack (_soundName)
	{
	}

function cueFwd (_soundName)
	{
	}

function silence ()
	{
	try
		{
		for (i = 0; i < document.embeds.length; ++i)
			{
			if (document.embeds[i])
				document.embeds[i].stop();
			}
		if (!platform.is_OldNetscape)
			player.controls.stop();
		}
	catch (_e) { /*window.status = "3:"+_e.toString();*/ }
	}

function setVolume (_level)
	{
	try
		{
		player.settings.volume = _level;
		document.getElementById("slider").style.left = parseInt(StartX + (Range / 100) * _level) - Offset;
		var myCookie = new Cookie (document, "volume", 0);
		myCookie.volume = _level;
		myCookie.store();
		}
	catch (_e) {}
	}

var spotName = "radioSpot";

function onPlayerStateChange (_state)
	{
	var clip = clipInfo[spotName];
	switch (_state)
		{
		case STOPPED:
			if (clip.status != STOPPED)
				stop(spotName);
			document.images["waveform"].src = "images/waveform.png";
			clearInterval(displayTimer);
			clip.audioStartedAt = null;
			displayTiming(spotName);
			//window.status = ".stopped";
			break;

		case PAUSED:
			document.images["waveform"].src = "images/waveform.png";
			//window.status = ".paused";
			break;

		case PLAYING:
			document.images["waveform"].src = "images/waveform_ani.gif";
			clip.audioStartedAt = new Date ();
			break;
		}
	// etc for other cases: // 4=Scan Forward, 5=Scan Back, 6=Buffering, 7=Waiting // 8=Media Ended, 9=Transitioning, 10=Ready, 11=Reconnecting
	}

function CheckForPlayer ()
	{
	var player;
	var plugin;
	var hasActiveX = false;

	try
		{
		if(window.ActiveXObject) 
			{ 
			hasActiveX = true; 
			player = new ActiveXObject("WMPlayer.OCX.7"); 
			}
		else if (window.GeckoActiveXObject)
			{
			hasActiveX = true;
			player = new GeckoActiveXObject("WMPlayer.OCX.7");
			}
		}
	catch (_e) {}

	try
		{
		if(navigator.mimeTypes)
			plugin = navigator.mimeTypes['application/x-mplayer2'].enabledPlugin;
		}
	catch (_e) {}

	var message = "Your browser "+ (hasActiveX ? "does" : " does not") +" support ActiveX. \n";
	message += "The WMP ActiveX control is"+ ( player ? "" : " not") +" installed. \n";
	message += "The WMP Plugin "+ (plugin ? "is" : "is not") +" installed. \n";
	}

function sendCommand (_command)
	{
	switch (_command)
		{
		case TOGGLE:
			if (clipInfo && clipInfo[spotName] && clipInfo[spotName].status == PLAYING)
				stop(spotName);
			else
				play(spotName);
			break;

		case PLAY:
			if (clipInfo && clipInfo[spotName] && clipInfo[spotName].status == PLAYING)
				pause(spotName);
			else
				play(spotName);
			break;

		case PAUSE:
			pause(spotName);
			break;

		case STOP:
			stop(spotName);
			break;
		}
	}

function window_onload ()
	{
	if (this.preloadImages)
		preloadImages();
	var myCookie = new Cookie (document, "volume", 0);
	if (myCookie.retrieve() && myCookie != null)
		setVolume(myCookie.volume);
	else
		setVolume(25);
	CheckForPlayer();
	silence();
	sendCommand(PLAY);
	}

var who = null;
var StartX = 197;
var EndX = 267;
var Offset = 6;
var Range = EndX - StartX;

function onMouseDown (_this)
	{
	who = _this;
	}

function onMouseMove ()
	{
	if (who)
		{
		var x = event.x - document.images["audioPlayer"].offsetLeft;
		if (x < StartX)
			{
			who.style.left = StartX - Offset;
			return;
			}
		else if (x > EndX)
			{
			who.style.left = EndX - Offset;
			return;
			}
		else
			who.style.left = parseInt(x) - Offset;

		setVolume(parseInt((parseInt(who.style.left) - StartX + Offset) / Range * 100));
		//window.status = who.style.left + " " + startHour + " - " + endHour;
		}
	}

function onMouseUp ()
	{
	who = null;
	}

function onMouseOut ()
	{
	if (event.x < 0 || event.y < 0 || event.x > document.body.clientWidth || event.y > document.body.clientHeight)
		who = null;
	}


