var subtitleUrl = "";
var slidesUrl = "data/kelda-301105.swf";

// axplayer-3
var selectedMediaPlayer = null;
var selectedMediaUrl = null;
var externalPlayer = false;
var topicIndex = -1;
var autoStart = true;
var useDynamicResizing = true;
var useSubtitles = false;
var useSlideReplacement = true;
var showPlayControls = true;
var showMediaPlayerControls = false;
var promptForFeedback = false;

//global
var videoWidth = 250;
var videoHeight = 240;
var showMediaSelection = false;
var tabPanelMarginLeft = null;

var mp = null;
var mp2 = null;
var slides = null;
var subtitles = null;
var controller = null;
var positionBar = null;
var playBtn = null;
var tabPanel1 = null;
var onBeforeUnloadTriggered = false;

window.onbeforeunload = function()
{
	if(promptForFeedback && !sentFeedback && !onBeforeUnloadTriggered && tabPanel1 != null)
	{
		onBeforeUnloadTriggered = true;
		tabPanel1.selectTab(5);
		event.returnValue = "Please press cancel and take a moment to give us your feedback";
	}
}

function init()
{
	//presentation
	videoPanel = findObj('video');
	playerPanel = findObj('wrapper');
	audioImage = findObj('audioonly');
	mediaPanel = findObj('mediapanel');
	tabPanel = findObj('tabpanel');
	tabPanel1 = new AXTabPanel('tabpanel');
	
	//input params
	var pq = new PageQuery();
	if(pq.getValue('tid') != null)
	{
		topicIndex = parseInt(pq.getValue('tid'));
	}
	if(pq.getValue('mu') != null)
	{
		mediaUrl = pq.getValue('mu');
	}
	
	//autostart
	if(pq.getValue('autostart') != null)
	{
		autoStart = false;
	}
	
	//external player setting
	if(pq.getValue('ep') != null)
	{
		externalPlayer = true;
	}
	var playInExternalPlayer = findObj('externalplayer-btn');
	if(isMac || isOp || isSa || externalPlayer)
	{
	}
	else
	{
		if(playInExternalPlayer != null)
		{
			playInExternalPlayer.checked = false;
		}
	}
	if(playInExternalPlayer != null && playInExternalPlayer.checked)
	{
		externalPlayer = true;
	}
	
	if(showPlayControls)
	{
		//show play control buttons
		var playControls = findObj('play-controls');
		if(playControls != null)
		{
			playControls.style.display = "block";
			
			playBtn = findObj('play-btn');
			if(playBtn != null)
			{
				EventManager.Add('play-btn','click', playBtnClick = function(){if(mp!=null)mp.play();});
				playBtn.style.display = "block";
			}
			
			if(!isLive)
			{
				var prevSlideBtn = findObj('slide-previous');
				if(prevSlideBtn != null)
				{
					EventManager.Add('slide-previous', 'click', prevSlideBtnClick = function(){if(controller!=null)controller.previous();});
					prevSlideBtn.style.display = "block";
				}
				
				var nextSlideBtn = findObj('slide-next');
				if(nextSlideBtn != null)
				{
					EventManager.Add('slide-next', 'click', nextSlideBtnClick = function(){if(controller!=null)controller.next();});
					nextSlideBtn.style.display = "block";
				}
			}
			
			var positionBarDiv = findObj('position-bar');
			if(positionBarDiv != null)
			{
				positionBarDiv.style.display = "block";
				if(AXPositionBar != null)
				{
					positionBar = new AXPositionBar('position-bar');
					positionBar.positionChange = function positionBar_positionChange(s)
					{
						if(mp != null) 
						{
							mp.setPosition(s);
						}
					};
				}
			}
			
			var lineDiv = findObj('line');
			if(lineDiv != null)
			{
				lineDiv.style.display = "block";
			}
			
			var viewBtn = findObj('view-btn');
			if(viewBtn != null)
			{
				EventManager.Add('view-btn','click', view_click);
				viewBtn.style.display = "block";
			}
			
			var soundBtn = findObj('sound-btn');
			if(soundBtn != null)
			{
				EventManager.Add('sound-btn','click', sound_click);
				soundBtn.style.display = "block";
			}
			
			if(useSubtitles)
			{
				var subtitlesBtn = findObj('subtitles-btn');
				if(subtitlesBtn != null)
				{
					EventManager.Add('subtitles-btn','click', subtitles_click);
					subtitlesBtn.style.display = "block";
				}
			}
			
			/*
			var accessibilityBtn = findObj('accessibility-btn');
			if(subtitlesBtn != null)
			{
				accessibilityBtn.style.display = "block";
			}
			*/
			
			var jsDisabledDiv = findObj('js-disabled');
			if(jsDisabledDiv != null)
			{
				jsDisabledDiv.style.display = "none";
			}	
		}
	}
	else
	{
		var playControls = findObj('play-controls');
		if(playControls != null)
		{
			playControls.style.display = "none";
		}
		if(playerPanel != null)
		{
			playerPanel.style.marginTop = "10px";
		}
	}
	
	//Slides
	if(slidesUrl != "")
	{
		if(useSlideReplacement)
		{
			slides = new AXFlashSlides("fslides", slidesUrl, "FFFFFF");
		}
		else
		{
			slides = new AXFlashSlides("fslides", null, "FFFFFF");
		}
		
		//mp to play slide changing chime
		if(slides != null)
		{
			var fo = new FlashObject("data/attente.swf", "mp2", "1", "1", 6, "CCCCCC");
			fo.write("videoph2");
			mp2 = findObj("mp2");
		}
	}
	
	if(subtitleUrl != "")
	{
		subtitles = new AXSubtitleClass("subtitles", subtitleUrl);
	}
	
	controller = new AXController();
	controller.topicChange = function controller_topicChange(topic)
	{
		//alert(topic);
		if(slides != null) slides.setSlide(topic.id);
		//if(positionBar != null) positionBar.setDuration(topic.duration);
		if(mp != null) 
		{
			if(Math.abs(mp.currentPosition-topic.beginTime) > 1.0)
			{
				mp.setPosition(topic.beginTime);
			}
			if(topic.imageUrl != null)
			{
				mp.setImage(topic.imageUrl);
			}
		}
		if(mp2 != null)
		{
			mp2.Play();
		}
	};
	
	//media
	var streamId = pq.getValue('sid');
	if(streamId != null)
	{
		var l = findObj(streamId);
		if(l != null)
		{
			var url = l.href;
			var mt = (streamId.indexOf('wma') > -1 || streamId.indexOf('rma') > -1) ? "audioonly" : "audiovideo";
			setMedia(url, mt);
		}
	}
	else
	{
		//use default stream
		var mediaLinksDiv = findObj('medialinks');
		if(mediaLinksDiv != null)
		{
			var s = mediaLinksDiv.getElementsByTagName("A");
			if(s.length > 0)
			{
				var url = s[0].href;
				var mt = (s[0].id.indexOf('wma') > -1 || s[0].id.indexOf('rma') > -1) ? "audioonly" : "audiovideo";
				setMedia(url, mt);
			}
		}
	}
	
	playerLoaded();
	setFullScreen();
	window.onresize();
	setView("presentation");
}

function playerLoaded()
{
	var l = document.getElementById('loader');
	if(l != null)
	{
		l.style.display = "none";
	}
	
	var p = document.getElementById('wrapper');
	if(p != null)
	{
		p.style.visibility = "visible";
	}
	
	var pc = document.getElementById('play-controls');
	if(pc != null)
	{
		pc.style.visibility = "visible";
	}
}

function setView(name)
{
	if(name == "presentation" || name == "lobby")
	{
		if(isIE)
		{
			try
			{
				window.resizeBy(-10, -10);/* fix for IE*/
			}
			catch(ex)
			{
			
			}
		}
		
		//show video
		if(mp != null)
		{
			mp.setZoom(100);
		}
		
		//tabpanel
		//tabPanel.style.marginLeft = tabPanelMarginLeft;
		
		//show mediapanel
		var menuPanel = findObj('menu');
		menuPanel.style.display = 'block';
		mediaPanel.style.visibility = 'visible';
		
		var centerPad = findObj('centerpad');
		if(tabPanelMarginLeft != null)
		{
			centerPad.style.marginLeft = tabPanelMarginLeft;
		}
		
		var separator = findObj('tabpanelpad');
		separator.className = "separator";
		
		if(isIE)
		{
			setTimeout("setFullScreen();", 250);/* fix for IE*/
		}
		window.onresize();
	}
	else if(name == "presentation-slides")
	{
		//hide video
		if(mp != null)
		{
			mp.setZoom(0);
		}
		
		//hide mediapanel
		var menuPanel = findObj('menu');
		menuPanel.style.display = 'none';
		mediaPanel.style.visibility = 'hidden';
		
		//show tabpanel
		var centerPad = findObj('centerpad');
		tabPanelMarginLeft = centerPad.style.marginLeft;
		centerPad.style.marginLeft = "0px";
		
		var separator = findObj('tabpanelpad');
		separator.className = "noseparator";
		
		window.onresize();
	}
}

function setMedia(url, mt)
{	
	mediaUrl = url;
	mediaType = mt;
	
	var player = ""
	if(isLive)
	{
		if(url.indexOf(".rm") < 0)
		{
			player = "wmp";
		}
		else if(url.indexOf("rtsp://") > -1)
		{
			player = "rp";
		}
	}
	else
	{
		player = getMediaPlayerFromUrl(mediaUrl);
	}
	
	
	var o = findObj('externalplayer');
	
	if(externalPlayer || (o != null && o.checked))
	{
		externalPlayer = true;
		extPopup = window.open(url, '', 'toolbar=no, directories=no, location=no, status=no, menubar=no, resizable=no, scrollbars=no, width=1, height=1');
	}
	else
	{
		mp = createMediaPlayer(player, "videoph1", "mp");
		if(mp != null)
		{
			mp.playStateChange = function mp_playStateChange(state)
			{
				if(state != null)
				{
					switch(state)
					{
						case 1:
						{
							if(playBtn != null) 
								playBtn.className = "play";
							break;
						}
						case 2://pause
						{
							if(playBtn != null) 
								playBtn.className = "play";
							break;
						}
						case 3://playing
						{
							if(playBtn != null) 
								playBtn.className = "pause";
							break;
						}
						case 6://buffering
						{
							if(positionBar != null) positionBar.setBuffering(mp.bufferProgress);
							break;
						}
						case 10:
						{
							var d = mp.getDuration();
							if(positionBar != null) positionBar.setDuration(d);
							if(controller != null) controller.setDuration(d);
							break;
						}
					}
					if(positionBar != null) positionBar.setPlayState(state);
				}
			};
			
			mp.positionChange = function mp_positionChange(s)
			{
				if(controller != null) controller.setPosition(s);
				if(subtitles != null) subtitles.setPosition(s);
				if(positionBar != null) 
				{
					if(positionBar.duration == 0) 
					{
						if(isLive)
						{
							positionBar.setDuration(-1);
						}
						else
						{
							positionBar.setDuration(mp.getDuration());
						}
					}
					positionBar.setPosition(s);
				}
			};
			
			mp.downloadProgressChange = function mp_downloadProgressChange(s)
			{
				if(positionBar != null) 
				{
					positionBar.setBuffering(s);
				}
			};
			
			mp.scriptChange = function scriptChange(type, data)
			{
				if(type == "slide_change")
				{
					if(slides != null)
					{
						slides.setSlide(parseInt(data));
					}
				}
				else if(type == "image_change")
				{
					var img = document.getElementById("audioonly");
					if(img != null)
					{
						//alert("set image "+data);
						img.src = data;
					}
				}
			};
		
			if(showMediaPlayerControls)
			{
				if(mediaType == "audioonly")
				{
					mp.setUIMode('audio');
				}
				else
				{
					mp.setUIMode('full');
				}
			}
			else
			{
				if(mediaType == "audioonly")
				{
					mp.setUIMode('invisible');
				}
				else
				{
					mp.setUIMode('none');
				}
			}
			
			mp.setUrl(url);
			mp.autoStart = autoStart;
			mp.write();
			mp.setUrl(url);
			if(autoStart)
			{
				mp.play();
			}
		}
	}
}

function createMediaPlayer(player, divId, mpId)
{
	var mediaPlayer = null;
	
	switch(player)
	{
		case "wmp":
		{
			mediaPlayer = new WindowsMediaPlayer(divId, mpId, videoWidth, videoHeight);
			break;
		}
		case "fp":
		{
			mediaPlayer = new FlashMediaPlayer(divId, mpId, videoWidth, videoHeight);
			break;
		}
		case "rp":
		{
			mediaPlayer = new RealPlayer(divId, mpId, videoWidth, videoHeight);
			break;
		}
	}
	selectedMediaPlayer = player;

	return mediaPlayer;
}

function getMediaUrl(id)
{
	var url = "";
	var radios = selectPlayerPanel.getElementsByTagName('input');
	if(id != null)
	{
		if(radios[id].type == "radio" && radios[id].value != null)
		{
			url = radios[id].value;
		}
	}
	else
	{	
		for(var i=0; i<radios.length; i++)
		{
			if(radios[i].type == "radio" && radios[i].checked && radios[i].value != null)
			{
				url = radios[i].value;
				break;
			}
		}
	}
	return url;
}

//EVENTS
function player_event(command, arg1, arg2)
{
	//alert(command + " " + arg1);
	if(mp != null && mp[command] != null)
	{
		if(arg1 != null && arg2 == null)
		{
			mp[command](arg1);
		}
		else if(arg1 != null && arg2 != null)
		{
			mp[command](arg1, arg2);
		}
	}
}
function sound_click(e)
{
	var o = null;
	if (e.target){o = e.target;}
	else if (e.srcElement){o = e.srcElement;}
	
	this.isMute = !this.isMute;
	if(o != null && this.isMute)
	{
		if(mp != null) 
			mp.setVolume(1);
			o.innerHTML = "Sound off";
			o.className = "sound-off";
	}
	else{
		if(mp != null) 
			mp.setVolume(75);
			o.innerHTML = "Sound on";
			o.className = "sound-on";
	}
}
function subtitles_click(e)
{
	var o = null;
	if (e.target){o = e.target;}
	else if (e.srcElement){o = e.srcElement;}
	
	if(o.className == "subtitles-off")
	{
		o.innerHTML = "Subtitles on";
		o.className = "subtitles-on";
		if(subtitles != null) subtitles.setVisible(true);
	}
	else{
		o.innerHTML = "Subtitles off";
		o.className = "subtitles-off";
		if(subtitles != null) subtitles.setVisible(false);
	}
	window.onresize();
}

function view_click(e)
{
	var o = null;
	if (e.target){o = e.target;}
	else if (e.srcElement){o = e.srcElement;}
	
	if(o.className == "view-all")
	{
		o.innerHTML = "Slide View";
		o.className = "view-slides";
		setView('presentation-slides');
	}
	else
	{
		o.innerHTML = "View All";
		o.className = "view-all";
		setView('presentation');
	}
}

function resize()
{
	try
	{
		if(useDynamicResizing)
		{
			var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 
			var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
			
			if(tabPanel != null && tabPanel.style.display != "none")
			{
				
				var menuPanel = findObj('menu');
				var videoPanel = findObj('video');
				var footerPanel = findObj('footer');
				var tabContentPanel = findObj('tabcontent');
				var subtitlesPanel = findObj('subtitles');
				var slidePanel = findObj('slides');
				
				var playControls = findObj('play-controls');
				var maxContentHeight = h-tabPanel.offsetTop-footerPanel.offsetHeight-playControls.offsetHeight;

				if(isIE)
				{
					tabContentHeight = maxContentHeight-50;
				}
				else
				{
					tabContentHeight = maxContentHeight-10;
				}
				
				if(subtitlesPanel && subtitlesPanel.style.display == "block")
				{
					tabContentPanel.style.height = (tabContentHeight-subtitlesPanel.offsetHeight) + "px";
					var h = (tabContentHeight-videoPanel.offsetHeight);
					if(h<0) 
					{
						h = 0;
					}
					menuPanel.style.height = h + "px";
				}
				else
				{
					var x = 0;
					var y = 0;
					if(isLive)
					{
						x = (tabContentHeight-70) > 0 ? (tabContentHeight-70) : 300;
						y = (tabContentHeight-45-videoPanel.offsetHeight) > 0 ? (tabContentHeight-45-videoPanel.offsetHeight) : 100;
					}
					else
					{
						x = (tabContentHeight-65) > 0 ? (tabContentHeight-65) : 300;
						y = (tabContentHeight-43-videoPanel.offsetHeight) > 0 ? (tabContentHeight-43-videoPanel.offsetHeight) : 100;
					}
					tabContentPanel.style.height = x + "px";
					menuPanel.style.height = y + "px";
				}
				
				if(slidePanel != null)
				{
					slidePanel.style.width = "100%";
					slidePanel.style.height = "100%";
				}
			}
		}
	}
	catch(ex)
	{
	
	}
}

window.onresize = function()
{
	var slidePanel = findObj('slides');
	if(slidePanel != null)
	{
		slidePanel.style.width = "200px";
		slidePanel.style.height = "200px";
	}
	setTimeout("resize()", 250);
}
