var update_rate = 15000;
var xmlhttp_sf = false;
var filename = '';
var player = false;
var desired_state = 'stopped';
var player_state = 'stopped';
var player_died = false;
var current_server = 0;
var ie = false;
var ie_has_realmedia = false;
var detected_player = 'none';
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
	try { xmlhttp_sf = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {
		try { xmlhttp_sf = new ActiveXObject("Microsoft.XMLHTTP");} catch (E) {
			xmlhttp_sf = false;}
	}
@end @*/
if (!xmlhttp_sf && typeof XMLHttpRequest!='undefined') {
	xmlhttp_sf = new XMLHttpRequest();
}

function init_player(player_div_id, width, height) {
	if (detected_player == 'real') {
		player_div = document.getElementById(player_div_id);
		player_div.innerHTML = '<embed id="video" src="http://media.ssncanada.ca/nothing.rpm" height="'+height+'" width="'+width+'" autostart="false" loop="false" nojava="true" scriptcallbacks="OnPlayStateChange,OnErrorMessage" controls="ImageWindow,ControlPanel" name="javaPlug1"></embed>';
		player = document.javaPlug1
	}
	else {
		var RNraveParams2 = {
			version:"1.0.0.650",
			URL:"",
			Volume:"100",
			aspectRatioMode:"center",
			shuffle:"0",
			width:width,
			height:height,
			id:"raveplayer"};
		RNrave.create(RNraveParams2, player_div_id);  
	}
}

function zoom(format) {
	if (detected_player == 'rave') {
		player = document.getElementById('raveplayer');
		if (format == 'original') {
			player.Video.AspectRatioMode = '2';
		}
		else if (format == 'zoom') {
			player.Video.AspectRatioMode = '0';
		}
		else if (format == 'full') {
			player.Video.FullScreen = '1';
		}
	}
	else if (detected_player == 'real') {
		player = document.getElementById('video');
		if (format == 'original') {
			player.SetOriginalSize();
			player.SetCenter(true);
		}
		else if (format == 'zoom') {
			player.SetCenter(false);
			player.SetMaintainAspect(true);
		}
		else if (format == 'full') {
			player.SetFullScreen();
		}
	}
}

function detect_realplayer(){
//
// Detect available players
//
	if (ie){
		if (ie_has_realmedia) { detected_player = 'real'; }
		else { detected_player = 'rave'; }
	}
	else {
		if(navigator.userAgent.match("rv:1\.9")) { 
                        var Fx3 = true;
                        detected_player = 'rave';
                        return;
                }
		numPlugins = navigator.plugins.length;
		detected_player = 'rave';
		for (i = 0; i < numPlugins; i++) {
			plugin = navigator.plugins[i];
			document.getElementById('EmbedRegion').innerHTML = document.getElementById('EmbedRegion').innerHTML + '<br>'+plugin.name
			if (plugin.name.substring(0,10)=="RealPlayer") { detected_player = 'real'; }
			else if (plugin.name.substring(0,16)=="Helix DNA Plugin") { detected_player = 'real'; }
		}	
	}
}

function player_monitor() {
	if (desired_state == 'playing'){
		if (player_state == 'stopped') {
			play_died = true;
			stream_finder();
			return;
		}
	}
	setTimeout(player_monitor,update_rate);
}


function play(url) {
	if (detected_player == 'real') {
		player = document.getElementById('video');
		try {
			// ie sucks
			player.SetWantErrors(true);
		}
		catch ( err ) {
			setTimeout('play("'+url+'")', 500);
			return;
		}
		player.SetCenter(true);
		player.SetSource(url);
		player.DoPlay();
	}
	else {
		if (document.getElementById('raveplayer')) {
			player = document.getElementById('raveplayer');
			playlist = player.NewPlaylist();
			var item = player.NewMediaItem();
			item.URL = url;
			playlist.Add(item);
			player.Playlist = playlist;
		}
		else {
			setTimeout('play("'+url+'")', 500);
		}
	}
}


function stream_finder_responds(){
	if (xmlhttp_sf.readyState==4) {
		var response = xmlhttp_sf.responseText.replace('\n','');
		if (xmlhttp_sf.status != '200') {
			alert('An error was encountered while checking the live stream status');
		}
		if (response == 'not_found') {
	//		alert('stream not available');
			setTimeout(stream_finder,update_rate);
		}
		else {
//			alert(response);
			streams = response.split(',');
			if (player_died) {
				player_died = false;
				current_server += 1;
				if (current_server >= streams.length) {
					current_server = 0;
				}
			}
			desired_state = 'playing';
			play(streams[current_server]);
//			player.SetSource(streams[current_server]);
			//player.DoPlay();
//			try { player.DoPlay(); } catch(e) { alert(player.GetLastErrorUserString()); }
			setTimeout(player_monitor,update_rate);
		}
	}
	else {
		//alert(xmlhttp_sf.readyState)
	}
}

function stream_finder(){
	var now = new Date();
	xmlhttp_sf.open('GET', '/videos/live/'+filename+'/?'+now.getTime(), true);
	xmlhttp_sf.onreadystatechange = stream_finder_responds;
	xmlhttp_sf.send(null);
//      alert(document.player.Error);
}




function javaPlug1_OnErrorMessage(severity, rma_code, user_code, user_string, more_info_url, error) {
//	alert('blah;');
	if (severity < 4) {
		
		//alert();
	}
}
function javaPlug1_OnPlayStateChange(old_state, new_state){
	if (new_state == 0) { player_state = 'stopped'; }
	else if (new_state == 3) { player_state = 'playing'; }
	else { player_state = 'working'; }
}


