var qs = document.location.search.substring(1);
var isWMPLoaded = false;
var useApplet = true;

var geckoax = new Object();
geckoax.installed=false;

/*
// NS7.1/PC?
if (navigator.plugins && navigator.plugins.length) {
	for (x=0; x<navigator.plugins.length; x++) {
		if (navigator.plugins[x].name.indexOf('ActiveX') != -1 && window.GeckoActiveXObject) {
			geckoax.installed=true;
			break;
		}
	}
}
*/


if (window.ActiveXObject || geckoax.installed) {
	useApplet = false;
} else {
	useApplet = true;
}

// CHECK FOR JAVA!

function checkAppletNeeded()
{
	if (useApplet) {
		// java enabled (browser setting)
		if (!navigator.javaEnabled()) {
			document.location.href = "nojava.html";
		} else {
			var javaPluginFound = false;
			// maybe java is enabled but not installed!
			for (i=0; i < navigator.plugins.length; i++) {
				// find java plugin
				if(navigator.plugins[i][0]["type"].indexOf("application/x-java-applet") != -1) {
					// enabled?
					if (navigator.plugins[i][0].enabledPlugin != null)	{
						javaPluginFound = true;
						//alert("Java Plugin : " + navigator.plugins[i][0].enabledPlugin.name);
					}
				}
			}

			if (!javaPluginFound) {
				document.location.href = "nojava.html";
			}

		}
	}
	return useApplet
}

//alert(navigator.userAgent.toLowerCase() + " useApplet: " + useApplet);

function writeAudioPlayer()
{
	//alert("writeAudioPlayer");
	if (!useApplet) {
		document.write ('<OBJECT ID=MediaPlayer ');
		document.write (' CLASSID=CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6');
		document.write (' standby="Loading Microsoft Windows Media Player components..."');
		document.write (' TYPE="application/x-oleobject" width="0" height="0">');
		document.write ('<PARAM NAME="ShowControls" VALUE="false">');
		document.write ('<PARAM NAME="AutoStart" VALUE="true">');
		document.write ('</OBJECT>');

	} else {
		 // NETSCAPE
		 document.write ('<APPLET liveconnect="true" code="WMPNS.WMP.class" archive="wmpns.jar" ID="MediaPlayer" NAME="MediaPlayer" height="0" width="0" MAYSCRIPT>');
		 document.write ('</APPLET>');
	} 
	
}

var intervalIDcheckWMPready = 0;
function checkWMPisLoaded()
{

	//alert("checkWMPisLoaded");

	if (ns6IntervalID != 0)
	{
		clearInterval(ns6IntervalID);
		ns6IntervalID = 0;
	}

	if (!isWMPLoaded && !useApplet)
	{
		if (document.MediaPlayer.enabled)
		{
			isWMPLoaded = true;
			writeFlashPlayer();
			//window.status = "WMP is ready!";

			// define buffer (millisec)
			//document.MediaPlayer.network.bufferingTime = 5000;
			if (intervalIDcheckWMPready != 0)
			{
				window.clearInterval(intervalIDcheckWMPready);
			}
		}
		else {
			if (intervalIDcheckWMPready == 0)
			{
				//window.status =("WMP not yet ready!");
				intervalIDcheckWMPready = window.setInterval("checkWMPisLoaded()", 100);
			}
		}

	} else if (!isWMPLoaded && useApplet) {

		try {

			document.MediaPlayer.getSettings().getVolume();
			isWMPLoaded = true;
			writeFlashPlayer();
	
			//window.status = "WMP is ready!";
			
			if (intervalIDcheckWMPready != 0)
			{
				window.clearInterval(intervalIDcheckWMPready);
			}

		} catch(e) {

			if (intervalIDcheckWMPready == 0)
			{
				//window.status =("WMP not yet ready!");
				intervalIDcheckWMPready = window.setInterval("checkWMPisLoaded()", 100);
			}
	
		}
	}
	//counter++;
	//window.status = "checkWMPisLoaded: " + intervalIDcheckWMPready + " counter:"+counter;

}

function writeFlashPlayer() {
	//alert("write flash");
	
	var flashVars = "";
	
	try
	{
		if (!playerLive)
		{
			flashVars = '';
			
			// check if WM domein is used
			if (playerStream.toLowerCase().indexOf("http://od.mp3") != -1)
			{
				// replace domain
				flashVars += 'qsStream=http://wm' + playerStream.substring(13,playerStream.length);
			}
			else
			{
				// just use what's given
				flashVars += 'qsStream=' + playerStream;
			}
			
			flashVars += '&qsLabel=' + playerLabel;
		}
	}
	catch(e)
	{
		flashVars = "";
	}
	
	//alert(flashVars);
	
	var oeTags = '<OBJECT ID="flashController" CLASSID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
			+ 'WIDTH="255" HEIGHT="170"'
			+ 'CODEBASE="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0">'
			+ '<PARAM NAME="MOVIE" VALUE="main.swf?' + flashVars + '">'
			+ '<PARAM NAME="PLAY" VALUE="true">'
			+ '<PARAM NAME="LOOP" VALUE="false">'
			+ '<PARAM NAME="QUALITY" VALUE="high">'
			+ '<PARAM NAME="MENU" VALUE="false">'
			+ '<PARAM NAME="allowScriptAccess" VALUE="sameDomain">'
			+ '<EMBED swLiveConnect="true" allowScriptAccess="sameDomain" NAME="flashController" SRC="main.swf?' + flashVars + '"'
			+ 'WIDTH="255" HEIGHT="170"'
			+ 'PLAY="true"'
			+ 'LOOP="false"'
			+ 'QUALITY="high"'
			+ 'MENU="false"'
			+ 'TYPE="application/x-shockwave-flash"'
			+ 'PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">'
			+ '<\/EMBED>'
			+ '<\/OBJECT>';
	// embed the Flash Movie
	document.getElementById("flashPlayerDIV").innerHTML = oeTags;
	
	//alert(oeTags);
}


// ================================================================================
// Catch events from the player and forward to the general event handlers
// ================================================================================

var intervalBufferUpdate;

// --------------------------------------------------------------------------------
// catch IE

function MediaPlayer_Buffering(start) {
	if (start)
	{ 
	   // buffering started
   	   //eventPlayStateChange(6);  // send event explicit?
	   clearInterval(intervalBufferUpdate);
	   alreadyBuffered = -1;
	   intervalBufferUpdate = setInterval("MediaPlayerBufferUpdateIE()", 50);
	}
	else
	{
	   // buffering ended
   	   //eventPlayStateChange(3);  // send event explicit?
	   clearInterval(intervalBufferUpdate);
	   //alert("stop buffering");
	}
}

function MediaPlayerBufferUpdateIE() {
	// poll for buffering change...
	eventBufferChange(document.MediaPlayer.network.bufferingProgress);
}

function MediaPlayer_PlayStateChange() {
	eventPlayStateChange(document.MediaPlayer.playState);
}

// --------------------------------------------------------------------------------
// catch NS (applet)

function OnBuffering(start) {
//alert("start buffering..."+start);
   if (start == "true") {
	   //window.status = "Loading... ";
	   window.clearInterval(intervalBufferUpdate);
	   alreadyBuffered = -1;
	   intervalBufferUpdate = window.setInterval("bufferUpdateApplet()", 50);
   } else if (start == "false") {
	   window.clearInterval(intervalBufferUpdate);
	   //window.status = "Playing... "
   }
}
function bufferUpdateApplet() {
	eventBufferChange(document.MediaPlayer.getNetwork().getBufferingProgress());
}

function OnPlayStateChange(newState) {
	eventPlayStateChange(newState);
}

//counter = 0;

// ================================================================================
// general event handlers (send to the interface)
// ================================================================================
var alreadyBuffered = -1;
function eventBufferChange(buffered) {
	//counter++;
	//window.status = "Buffering... " + buffered + " counter:"+counter;
	//document["flashController"].SetVariable("theBufferState", buffered);
	if (alreadyBuffered != buffered)
	{
		// only communicate if buffered changed...
		sendExternalBufferChange(buffered);
	}

}


var bufferHistory = 0;
var mediaEnded = 0;
function eventPlayStateChange(newState) {
	var playState = -1;

	switch (Number(newState))
	{
		case 1: // stopped
			playState = 0;
			bufferHistory = 0;
			break;
		case 2: // paused
			playState = 4;
			bufferHistory = 0;
			break;
		case 3: // playing
			if (bufferHistory == 1) {
				playState = 3;
				bufferHistory = 0;
			}		
			break;
		case 6: // buffering
			playState = 2;
			bufferHistory = 1;
			break;			
		case 7: // waiting
			playState = 1;
			break;	
		case 9: // transitioning (preparing new media)
			playState = 1;
			bufferHistory = 0;
			break;	
		case 8: // mediaEnded
			mediaEnded = 1;
			break;
		case 10: // ready (to begin playing)
			playState = 0;
			break;
	}

	if (playState != -1) {
		//document["flashController"].SetVariable("thePlayState", playState);
		sendExternalPlayStateChange(playState);
	}

	//alert(newState + " wordt playState:"+playState);
	//window.status = newState + " wordt playState:"+playState;
}

// ================================================================================
// JS > Flash Communication for events from the WMPlayer
// ================================================================================

function sendExternalPlayStateChange(eventID) {
	//alert(flashMovie("frontPlayer"));
	try
	{
	    flashMovie("flashController").externalPlayStateChange(eventID);
	}
	catch(e)
	{
		//alert("error send playstate change");
	}
}
function sendExternalBufferChange(buffered) {
	//alert(flashMovie("frontPlayer"));
	try
	{
	    flashMovie("flashController").externalBufferChange(buffered);
	}
	catch(e)
	{
		//alert("error send buffer change");
	}
}

function flashMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName]
    }
    else
	{
        return document[movieName]
    }
}

// ================================================================================
// Flash <-> JS Communication for OD
// ================================================================================

function getStreamTotalTime() {
	var totalTime;

	if (useApplet) {
		totalTime = document.MediaPlayer.getCurrentMedia().getDuration();
	} else {

		try
		{
			totalTime = document.MediaPlayer.currentMedia.duration;
		}
		catch (e)
		{
			totalTime = 0;
		}

	}

	return totalTime;

	//document["flashController"].SetVariable("theTotalTime", totalTime);
	//window.status = "totalTime: " + totalTime;
	//alert("totalTime:" + document.MediaPlayer.currentMedia.duration+".");
}

function getStreamCurrentTime() {
	var currentTime;

	if (useApplet) {
		currentTime = document.MediaPlayer.getControls().getCurrentPosition();
	} else {
		currentTime = document.MediaPlayer.controls.currentPosition;
	}

	return currentTime;

	//document["flashController"].SetVariable("theCurrentTime", currentTime);
	//window.status = "currentTime: " + currentTime;
	//alert("currentTime: " + document.MediaPlayer.controls.currentPosition);
}


// ================================================================================
// Flash -> JS Communication 
// ================================================================================

function loadStream(url) {
	//alert("loadStream:"+url);

	// override url
	//url = 'http://64.236.34.67:80/stream/1065';
	if (useApplet) {
		document.MediaPlayer.setURL(url+"?wmcache=0");
	} else {
		document.MediaPlayer.URL = url+"?wmcache=0";
	}
}

function playStream() {
	if (useApplet) {
		document.MediaPlayer.getControls().play();
	} else {
		document.MediaPlayer.controls.play();
	}
}

function setStreamVolume(volume) {
	//alert("set volume:"+volume);
	if (useApplet) {
		document.MediaPlayer.getSettings().setVolume(volume);
	} else {
		document.MediaPlayer.settings.volume = volume;
	}
}

function getStreamVolume() {
	// store the volume in Flash!
	var volume;
	if (useApplet) {
		volume = document.MediaPlayer.getSettings().getVolume();
	} else {
		volume = document.MediaPlayer.settings.volume;
	}
	document["flashController"].SetVariable("theObjectVolume", volume);
}


function pauseStream() {
	//alert("pause");
	if (useApplet) {
		document.MediaPlayer.getControls().pause();
	} else {
		document.MediaPlayer.controls.pause();
	}
}

function setStreamMute(trigger) {
	//alert("mute:"+trigger);
	if (useApplet) {
		document.MediaPlayer.getSettings().setMute(trigger);
	} else {
		document.MediaPlayer.settings.mute = trigger;
	}
}

function stopStream() {
	//alert("stop!");
	if (useApplet) {
		document.MediaPlayer.getControls().stop();
	} else {
		document.MediaPlayer.controls.stop();
	}
}

function setStreamPosition(postionPercentage) {
	seconds = Number((postionPercentage/100) * getStreamTotalTime());
	//seconds = Math.round(seconds);
	//alert("position:"+Number(seconds) + " " + typeof(seconds));
	if (useApplet) {
		document.MediaPlayer.getControls().setCurrentPosition(seconds);
	} else {
		//document.MediaPlayer.controls.isAvailable('CurrentPosition') = true;
		//alert(document.MediaPlayer.controls.isAvailable('CurrentPosition'));
		if (document.MediaPlayer.controls.isAvailable('CurrentPosition')) {
			document.MediaPlayer.controls.currentPosition = seconds;
			document.MediaPlayer.controls.play();
			//alert(document.MediaPlayer.controls.currentPosition +'/'+ getStreamTotalTime());
		}
	}
	//window.status = "position:"+seconds;
}


var resizeIntervalID = 0;
function resize(width, height){
	try {
		window.resizeTo(width, height);
		//window.status = "resize: w=" + width + " h:" + height;
		if (resizeIntervalID != 0) {
			clearInterval(resizeIntervalID);
			resizeIntervalID = 0;
			//window.status = "clear!";
		}
	} catch (e) {
		if (resizeIntervalID == 0) {
			// RETRY
			resizeIntervalID = setInterval("resize("+width+","+height+")",100);
			//window.status = "retry: w=" + width + " h:" + height + " iID = " + resizeIntervalID;
		}
	}
}