/*
	Systemvariablen (Global)
*/
var chart_active = '';
var chart_window = '';
var page_name = '';
var page_status = '';
var button_active = '';
var video_slider = '';
var video_position = 0;
var video_slider_init = 0;
var video_status = 0;
var video_length = 0;
var video_position = 0;
var video_play = 0;

/*
	System initialisieren, befindet sich in body onLoad.
*/
function InitSystemEngine(page_name_tmp) {
	page_name = page_name_tmp;

	switch(page_name_tmp) {
		case 'live_preview':
			page_status = 0;
			CheckPageStatus();
			break;
		case 'live_select':
			page_status = 1;
			CheckPageStatus();
			break;
		case 'live_show':
			page_status = 1;
			InitLiveProcess();
			CheckPageStatus();
			break;
		case 'odm_preview':
			page_status = 2;
			CheckPageStatus();
			break;
		case 'odm_select':
			page_status = 3;
			RefreshPage(20);
			CheckPageStatus();
			break;
		case 'odm_show':
			page_status = 3;
			InitOnDemandProcess();
			break;
		case 'chart_show':
		//	RefreshBigChart();
			break;
	}
}

function UnloadSystemEngine(page_name_tmp) {
	page_name = page_name_tmp;

	switch(page_name_tmp) {
		case 'live_show':
			CloseBigChart();
			break;
		case 'odm_show':
			CloseBigChart();
			break;
	}
}

/*
	Status der Seite überprüfen
*/
function CheckPageStatus() {
	var page_command = '';
	var page_command_split = '';

	new PeriodicalExecuter(function(pe_func) {
		new Ajax.Request('ajax.cmd.php', {
			parameters: 'ajax_action=check_status&page_name=' + page_name + '&random=' + Math.random(),
			method: 'get',
			evalJS: true,

			onComplete: function(transport) {
				page_command_split = transport.responseText.split('|');

				if(page_command_split[0] == 'change') {
					if(page_command_split[1] != page_status) {
						location.reload();
					}
				}

				page_status = page_command_split[1];
			}
		});
	}, 10);
}

/*
	Live-Stream initialisieren
*/
function InitLiveProcess() {
	video_slider_init = 0;

	CheckPlayerAutostart();
//	window.setInterval("LoadLiveChart()", 4000);
//	window.setInterval("CheckTocData()", 9000);
//	window.setInterval("CheckDownloadData()", 14000);
	window.setInterval("InitPlayerEngine()", 1000);
}

/*
	OnDeman-Stream initialisieren
*/
function InitOnDemandProcess() {
	video_slider_init = 1;

	CheckPlayerAutostart();
//	window.setInterval("LoadOdmChart()", 3000);
	window.setInterval("InitPlayerEngine()", 1000);
}

/*
	Player intialisieren
*/
function InitPlayerEngine() {
	/*
		Prüfen ob es sich um MSIE oder Firefox handelt
	*/
	if(browser_name == 'msie' || browser_name == 'ff') {
		/*
			Bei Autostart die Buttons entsprechend setzen
		*/
		if(player_start == 1) {
			InitButtonStatus('start', 'active', 1);
			player_start = 0;
		}

		switch(player_art) {
			case 'Wmt':
				/*
					Status des Players ermitteln
				*/
				video_status = $('MediaPlayer').playState;

				/*
					Länge und Position ermitteln, wenn etwas abgespielt wird.
				*/
				if(video_status > 2 && video_status < 6) {
					video_length = Math.floor($('MediaPlayer').currentMedia.duration);
					video_position = Math.floor($('MediaPlayer').controls.currentPosition);
					video_play = 1;
				}

				break;
			case 'Real':
				/*
					Status des Players ermitteln
				*/
				video_status = $('MediaPlayer').GetPlayState;

				/*
					Länge und Position ermitteln, wenn etwas abgespielt wird.
				*/
				if(video_status == 3) {
					video_length = Math.floor($('MediaPlayer').GetLength() / 1000);
					video_position = Math.floor($('MediaPlayer').GetPosition() / 1000);
					video_play = 1;
				}
				break;
		}

		/*
			Slider positionieren
		*/
		if(video_slider_init == 1) {
			SetSliderPosition(video_position);
		}

		/*
			Am Ende des Videos zur Null-Position springen
		*/
		if((video_length == video_position || (video_length - 1) == video_position) && video_slider_init == 1) {
			SetPlayerAction('stop');
		}

		/*
			Video-Slider initialisieren, wenn Video läuft
		*/
		if(video_slider == '' && video_play == 1 && video_slider_init == 1) {
			video_slider = new Control.Slider('video_handle','video_track', {
				increment: 1,
				sliderValue: 0.0,
				range: $R(0, video_length),

				onSlide:function(slide_position) {
					video_position = Math.floor(slide_position);
					//GoToPosition(slide_position);
				},

				onChange:function(change_position) {
					video_position = Math.floor(change_position);
					change_position = Math.floor(change_position);
					//$('debug_p').innerHTML = 'Windows: ' + Math.floor($('MediaPlayer').controls.currentPosition) + ' | Slider: ' + change_position;
				}
			});
		}
	}
}

/*
	Video-Autostart überprüfen
*/
function CheckPlayerAutostart() {
	if(player_start == 1) {
		InitButtonStatus('start', 'active', 1);
		player_start = 0;
	}
}

/*
	Video-Slider positionieren
*/
function SetSliderPosition(video_position) {
	if(video_slider != '' && video_slider_init == 1) {
		video_slider.setValue(video_position);
	}
}

/*
	Charts im Live-Stream aktualisieren
*/
function LoadLiveChart() {
	var image_src = document.images["chartNow"];

	new Ajax.Request('ajax.cmd.php', {
		parameters: 'ajax_action=check_chart&random=' + Math.random(),
		method: 'get',
		evalJS: true,

		onComplete: function(transport) {
			transport.responseText.evalScripts();

			if(image_src.src != transport.responseText) {
				image_src.src = transport.responseText;
			}
		}
	});
}

/*
	Charts im OnDemand-Stream aktualisieren
*/
function LoadOdmChart() {
	if(video_status > 2 && video_status < 6) {
		UpdateOdmChart(video_position);
	} else {
		if(video_status == 1) {
			UpdateOdmChart(0);
		}
	}
}

/*
	Charts für OnDemand-Stream abfragen
*/
function UpdateOdmChart(chart_time) {
	if(chart_time != undefined) {
		var image_src = document.images["chartNow"];

		new Ajax.Request('ajax.cmd.php', {
			parameters: 'ajax_action=load_chart&chart_time=' + chart_time + '&random=' + Math.random(),
			method: 'get',
			evalJS: true,

			onComplete: function(transport) {
				transport.responseText.evalScripts();

				if(transport.responseText != 'no-change') {
					if(image_src.src != transport.responseText) {
						image_src.src = transport.responseText;
					}
				}
			}
		});
	}
}

/*
	Chart in BigSize aktualisieren
*/
function RefreshBigChart() {
	var chart_src = '';

	if(window.opener.document.getElementById('chartNow') != null) {
		chart_src = window.opener.document.getElementById('chartNow').src;
		$('chartNow').src = chart_src.replace('small', 'big');

		new PeriodicalExecuter(function(pe_func) {
			chart_src = window.opener.document.getElementById('chartNow').src;
			$('chartNow').src = chart_src.replace('small', 'big');
		}, 3);
	}
}

/*
	Tocs aktualisieren
*/
function CheckTocData() {
	new Ajax.Request('ajax.cmd.php', {
		parameters: 'ajax_action=check_toc&random=' + Math.random(),
		method: 'get',
		evalJS: true,

		onComplete: function(transport) {
			transport.responseText.evalScripts();
			$('tocNow').innerHTML = transport.responseText;
		}
	});
}

/*
	Downloads aktualisieren
*/
function CheckDownloadData() {
	new Ajax.Request('ajax.cmd.php', {
		parameters: 'ajax_action=check_download&random=' + Math.random(),
		method: 'get',
		evalJS: true,

		onComplete: function(transport) {
			transport.responseText.evalScripts();
			$('linkNow').innerHTML = transport.responseText;
		}
	});
}

/*
	BigSize-Chart aktualisieren
*/
function ShowBigChart() {
	var window_options = 'width=640, height=480, top=100 , left=420, dependent=yes';
	chart_window = window.open('chart.show.html', 'chart_window', window_options);
	chart_window.focus();
}

/*
	BigSize-Chart schließen
*/
function CloseBigChart() {
	if(chart_window != '') {
		window.chart_window.close();
		return true;
	}
}


/*
	Zur einer Position im Video springen
*/
function GoToPosition(video_position) {
	if(browser_name == 'msie' || browser_name == 'ff') {
		switch(player_art) {
			case 'Wmt':
				$('MediaPlayer').controls.currentPosition = video_position;
				SetPlayerAction('start');
				
				video_play = 1;
				break;
			case 'Real':
				$('MediaPlayer').SetPosition(video_position);
				SetPlayerAction('start');
				
				video_play = 1;
				break;
		}

		if(video_play == 1) {
			SetSliderPosition(video_position);
		}
	}
}

/*
	Slider draggen
*/
function DragVideoPosition() {
	SetPlayerAction('pause');
	GoToPosition(video_position);
	SetPlayerAction('start');
}

function SlideVideoPosition(action) {
	SetPlayerAction(action);
	//GoToPosition(video_position);
}

/*
	Video-Player-Aktivitäten
*/
function SetPlayerAction(btn_action) {
	var volume_now = 0;
	var volume_set = 0;
	var volume_step = 10;

	if(browser_name == 'msie' || browser_name == 'ff') {
		switch(player_art) {
			case 'Wmt':
				video_status = $('MediaPlayer').playState;

				switch(btn_action) {
					case 'start':
						$('MediaPlayer').controls.play();
						InitButtonStatus(btn_action, 'active', 1);
						break;
					case 'stop':
						if(video_status > 1 && video_status < 6) {
							$('MediaPlayer').controls.stop();
							InitButtonStatus(btn_action, 'active', 1);
							SetSliderPosition(0);
							
							video_play = 0;
							video_position = 0;
						}
						break;
					case 'pause':
						if(video_status > 2 && video_status < 6) {
							$('MediaPlayer').controls.pause();
							InitButtonStatus(btn_action, 'active', 1);
						}
						break;
					case 'reverse':
						if(video_status == 3 || video_status == 4) {
							$('MediaPlayer').controls.fastReverse();
							InitButtonStatus(btn_action, 'active', 1);
						}
						break;	
					case 'forward':
						if(video_status == 3 || video_status == 5) {
							$('MediaPlayer').controls.fastForward();
							InitButtonStatus(btn_action, 'active', 1);
						}
						break;
					case 'fullscreen':
						if(video_status == 3) {
							$('MediaPlayer').fullScreen = 'true';
						}
						break;
					case 'volume_plus':
						volume_set = $('MediaPlayer').settings.volume + volume_step;

						if(volume_set > 100) {
							volume_set = 100;
						}

						$('MediaPlayer').settings.volume = volume_set;
						break;
					case 'volume_minus':
						volume_set = $('MediaPlayer').settings.volume - volume_step;

						if(volume_set < 0) {
							volume_set = 0;
						}

						$('MediaPlayer').settings.volume = volume_set;
						break;
				}
				break;
			case 'Real':
				switch(btn_action) {
					case 'start':
						$('MediaPlayer').DoPlay();
						InitButtonStatus(btn_action, 'active', 1);
						break;
					case 'stop':
						$('MediaPlayer').DoStop();
						InitButtonStatus(btn_action, 'active', 1);
						SetSliderPosition(0);

						video_play = 0;
						video_position = 0;
						break;
					case 'pause':
						$('MediaPlayer').DoPause();
						InitButtonStatus(btn_action, 'active', 1);
						break;
					case 'reverse':
						var rw_position = $('MediaPlayer').GetPosition() - 5000;
						
						if(rw_position < 0) {
							rw_position = 0;
						}

						$('MediaPlayer').SetPosition(rw_position);
						SetPlayerAction('play');
						break;	
					case 'forward':
						var ff_position = $('MediaPlayer').GetPosition() + 5000;
						var video_total = $('MediaPlayer').GetLength();
						
						if(ff_position > video_total) {
							ff_position = video_total;
						}

						$('MediaPlayer').SetPosition(ff_position);
						SetPlayerAction('play');
						break;
					case 'fullscreen':
						$('MediaPlayer').SetFullScreen();
						break;
					case 'volume_plus':
						volume_set = $('MediaPlayer').GetVolume() + volume_step;

						if(volume_set > 100) {
							volume_set = 100;
						}

						$('MediaPlayer').SetVolume(volume_set);
						break;
					case 'volume_minus':
						volume_set = $('MediaPlayer').GetVolume() - volume_step;

						if(volume_set < 0) {
							volume_set = 0;
						}

						$('MediaPlayer').SetVolume(volume_set);
						break;
				}
				break;
		}
	}
}

/*
	Buttons im Customized-Design aktualisieren
*/
function InitButtonStatus(name, action, active) {
	var image_src = '';

	image_src = SetButton(action, name);

	if(active == 1) {
		if(button_active != '') {
			if(button_active.src != image_src.src) {
				button_active.src = button_active.src.replace('_a.gif', '.gif');
			}
		}

		button_active = image_src;
	}
}

/*
	Button-Engine initialisieren
*/
function SetButton(action, name) {
	var image_src = '';
	var image_tmp = '';

	image_src = document.images["ctl_" + name + "_btn"];
	image_tmp = CleanButtonStatus(image_src);
	
	if(image_tmp.src.indexOf('_a.gif') == -1) {
		switch(action) {
			case 'over':
				image_src.src = image_tmp.src.replace('.gif', '_o.gif');
				break;
			case 'out':
				image_src.src = image_tmp.src.replace('_o.gif', '.gif');
				break;
			case 'active':
				if(image_tmp.src.indexOf('_a.gif') == -1) {
					image_src.src = image_tmp.src.replace('.gif', '_a.gif');
				}
				break;
		}
	}

	return image_src;
}

/*
	Buttons im Customized-Design zurücksetzen
*/
function CleanButtonStatus(image_src) {
	image_src.src = image_src.src.replace('_o.gif', '.gif');
	return image_src;
}

/*
	Seite aktualisieren
*/
function RefreshPage(refresh_time) {
	window.setTimeout("self.location.reload()", (refresh_time * 1000));
}

/*
	Chart anlegen aus dem Video
*/
function InsertChartAction(chart_parameter, div_id) {
	new Ajax.Request('ajax.cmd.php', {
		parameters: chart_parameter,
		method: 'get',
		evalJS: true,

		onComplete: function(transport) {
			if(chart_active != '') {
				$(chart_active).style.backgroundColor = '';
			}

			$(div_id).style.backgroundColor = '#AF0025';
			chart_active = div_id;
		}
	});
}

function sendQuestion() {
	var user_name = $('user_name').value;
	var user_input = $('user_input').value;
	
	var req = new Ajax.Updater('chartBox', 'ajax.cmd.php', { method: 'get', parameters: {username: user_name, usertext: user_input, ajax_action: 'send_question'}, encoding: 'utf-8' });
}
