function init() {
var v = document.getElementById('video');
if (v) {
var busy_icon_top = Math.floor((v.height / 2) - 27.5);
overlay_normal = '';
overlay_fullscreen = '';
v.data=videoUrl;
if (document.getElementById('warning')) {
setTimeout('playVideo()', 3000);
}
else {
v.play(1);
setInterval('updateState()', 700);
}
document.getElementById('fullScreen').focus();
document.getElementById('other_lang').style.setProperty('nav-down', '#fullScreen', '');
}
else {
document.getElementById('controls').style.visibility = 'hidden';
var logo = document.getElementById('logo_detail');
logo.getElementsByTagName('img')[0].style.setProperty('nav-down', '#logo_detail', '');
logo.focus();
document.getElementById('other_lang').style.setProperty('nav-down', '#other_lang', '');
}
document.getElementById('other_lang').style.setProperty('nav-left', '#logo_detail', '');
}
function playVideo() {
document.getElementById('warning').innerHTML = '';
document.getElementById('video').play(1);
setInterval('updateState()', 700);
}
function updateState() {
var v = document.getElementById('video');
checkPlayState();
if (isSeeking) return;
//update time when video is playing, paused, stopped, or finished
if (v.playState == 0 || v.playState == 1 || v.playState == 2 || v.playState == 5) {
current_playPosition = v.playPosition;
document.getElementById('time_elapsed').innerHTML = getFormattedTime(v.playPosition);
}
}
function getFormattedTime(milliseconds) {
var total_secs = Math.floor(milliseconds / 1000);
var hours = Math.floor(total_secs / 3600);
var minutes = Math.floor((total_secs - hours*3600) / 60);
var seconds = Math.floor(total_secs - hours*3600 - minutes*60);
var output = '';
if (hours > 0 || total_playTime > 3600*1000) {
output = hours + ':';
}
if (minutes > 9) {
output += minutes + ':';
}
else {
output += '0' + minutes + ':';
}
if (seconds > 9) {
output += seconds;
}
else {
output += '0' + seconds;
}
return output;
}
function enableFullScreen() {
document.getElementById('controls').style.visibility = 'hidden';
document.getElementById('info').style.visibility = 'hidden';
document.getElementsByClassName('header')[0].style.visibility = 'hidden';
document.getElementsByClassName('logo')[0].style.visibility = 'hidden';
var area = document.getElementById('videoarea');
var v = document.getElementById('video');
// Calculate new width and height
old_width = v.width;
old_height = v.height;
var new_width = Math.round((video_max_width / old_width) * old_width);
var new_height = Math.round((video_max_width / old_width) * old_height);
// If height is bigger than max height, rescale width
if (new_height > video_max_height) {
new_height = video_max_height;
new_width = Math.round((video_max_height / old_height) * old_width);
}
// Set wrapper to top left
area.style.left = Math.round((video_max_width - new_width) / 2);
area.style.top = 0;
// Set wrapper width and height
area.style.width = new_width+'px';
area.style.height = new_height+'px';
var overlay = document.getElementById('video_overlay');
overlay.style.top = area.style.top;
overlay.style.left = area.style.left;
overlay.style.width = area.style.width;
overlay.style.height = area.style.height;
if (overlay.innerHTML != '')
overlay.innerHTML = overlay_fullscreen;
document.getElementsByTagName('body')[0].style.background = '#000000';
// Set video width and height
v.width = new_width;
v.height = new_height;
is_full = 1;
}
function disableFullScreen() {
var area = document.getElementById('videoarea');
var v = document.getElementById('video');
area.style.left = 50;
area.style.top = 85;
area.style.width = old_width + 'px';
area.style.height = old_height + 'px';
var overlay = document.getElementById('video_overlay');
overlay.style.top = area.style.top;
overlay.style.left = area.style.left;
overlay.style.width = area.style.width;
overlay.style.height = area.style.height;
if (overlay.innerHTML != '')
overlay.innerHTML = overlay_normal;
document.getElementsByTagName('body')[0].style.background = 'url(http://cehtml.arte.tv/i18n/CoreMedia/com.arte-tv.cehtml/admin/styles/default/images/background/2764740,property=data,v=2.png)';
v.width = old_width;
v.height = old_height;
is_full = 0;
document.getElementById('controls').style.visibility = 'visible';
document.getElementById('info').style.visibility = 'visible';
document.getElementsByClassName('header')[0].style.visibility = 'visible';
document.getElementsByClassName('logo')[0].style.visibility = 'visible';
}
function handlePlayButtons(e) {
var v = document.getElementById('video');
switch (e.keyCode) {
case VK_PLAY:
v.play(1);
break;
case VK_STOP:
v.stop();
break;
case VK_PAUSE:
v.play(0);
break;
case VK_FAST_FWD:
seekStep(60000);
break;
case VK_REWIND:
seekStep(-60000);
break;
}
}
function checkPlayState() {
var v = document.getElementById('video');
var playState = video.playState;
if (previousState == playState) return;
switch (video.playState) {
case 5: // finished
case 0: // stopped
if (is_full == 1)
disableFullScreen();
document.getElementById('img_playPause').src = 'http://cehtml.arte.tv/i18n/CoreMedia/com.arte-tv.cehtml/admin/styles/default/images/play__off/2764742,property=data,v=2.png';
document.getElementById('img_stop').src = 'http://cehtml.arte.tv/i18n/CoreMedia/com.arte-tv.cehtml/admin/styles/default/images/stop__on/2764744,property=data,v=2.png';
document.getElementById('video_overlay').innerHTML = '';
break;
case 6: // error
if (is_full == 1)
disableFullScreen();
document.getElementById('video_overlay').innerHTML = 'error';
document.getElementById('img_playPause').src = 'http://cehtml.arte.tv/i18n/CoreMedia/com.arte-tv.cehtml/admin/styles/default/images/play__off/2764742,property=data,v=2.png';
document.getElementById('img_stop').src = 'http://cehtml.arte.tv/i18n/CoreMedia/com.arte-tv.cehtml/admin/styles/default/images/stop__on/2764744,property=data,v=2.png';
break;
case 1: // playing
if (total_playTime < 0)
total_playTime = v.playTime;
document.getElementById('time_total').innerHTML = getFormattedTime(total_playTime);
document.getElementById('video_overlay').innerHTML = '';
document.getElementById('img_playPause').src = 'http://cehtml.arte.tv/i18n/CoreMedia/com.arte-tv.cehtml/admin/styles/default/images/play__on/2764746,property=data,v=2.png';
document.getElementById('img_stop').src = 'http://cehtml.arte.tv/i18n/CoreMedia/com.arte-tv.cehtml/admin/styles/default/images/stop__off/2764748,property=data,v=2.png';
break;
case 2: // paused
document.getElementById('img_playPause').src = 'http://cehtml.arte.tv/i18n/CoreMedia/com.arte-tv.cehtml/admin/styles/default/images/pause__on/2764750,property=data,v=2.png';
document.getElementById('img_stop').src = 'http://cehtml.arte.tv/i18n/CoreMedia/com.arte-tv.cehtml/admin/styles/default/images/stop__off/2764748,property=data,v=2.png';
break;
case 3: // connecting
case 4: // buffering
document.getElementById('img_playPause').src = 'http://cehtml.arte.tv/i18n/CoreMedia/com.arte-tv.cehtml/admin/styles/default/images/play__on/2764746,property=data,v=2.png';
document.getElementById('img_stop').src = 'http://cehtml.arte.tv/i18n/CoreMedia/com.arte-tv.cehtml/admin/styles/default/images/stop__off/2764748,property=data,v=2.png';
if (is_full == 1)
document.getElementById('video_overlay').innerHTML = overlay_fullscreen;
else
document.getElementById('video_overlay').innerHTML = overlay_normal;
break;
default:
// do nothing
break;
}
previousState = playState;
}
function handleFullScreen(e) {
var videoState = document.getElementById('video').playState;
switch (e.keyCode)
{
case VK_ENTER:
if (is_full == 1) {
disableFullScreen();
}
//go only in fullscreen mode if video is not finished, stopped or errored
else if (videoState != 5 && videoState != 0 && videoState != 6) {
enableFullScreen();
}
break;
case VK_BACK:
case VK_LEFT:
case VK_RIGHT:
case VK_UP:
case VK_DOWN:
if (is_full == 1) {
disableFullScreen();
}
break;
default:
}
}
function togglePlay() {
var video = document.getElementById('video');
if (video.playState == 1) //playing
video.play(0);
else if (video.playState == 2 || video.playState == 0 || video.playState == 5 || video.playState == 6) //paused or stopped or finished or errored
video.play(1);
}
function seekStep(millisecs) {
var video = document.getElementById('video');
if (video.playState == 2 || video.playState == 0 || video.playState == 5 || video.playState == 6) { //video is paused, stopped, finished or errored, don't seek
return;
}
clearTimeout(seekTimer);
isSeeking = 1;
var tmp_position;
if (new_playPosition < 0)
tmp_position = current_playPosition + millisecs;
else
tmp_position = new_playPosition + millisecs;
if (tmp_position < video.playTime && tmp_position > 0) {
new_playPosition = tmp_position;
document.getElementById('time_elapsed').innerHTML = getFormattedTime(new_playPosition);
seekTimer = setTimeout('seekVideo()', 1000);
}
else if (new_playPosition > 0) {
seekTimer = setTimeout('seekVideo()', 1000);
}
else {
isSeeking = 0;
updateState();
}
}
function seekVideo() {
var video = document.getElementById('video');
if (video.playState == 2 || video.playState == 0 || video.playState == 5 || video.playState == 6) { //video is paused, stopped, finished or errored, abort seek
isSeeking = 0;
updateState();
new_playPosition = -1;
return;
}
else if (video.playState != 1) { //video is connecting or buffering, try again later
seekTimer = setTimeout('seekVideo()', 1000);
return;
}
video.seek(new_playPosition);
old_playPosition = video.playPosition;
setTimeout('checkSeekFinished()', 500);
}
function checkSeekFinished() {
var video = document.getElementById('video');
if (Math.abs(old_playPosition-video.playPosition) > 2000) { //video is running, seek has finished
new_playPosition = -1;
isSeeking = 0;
updateState();
}
else //video is still seeking, check again later
setTimeout('checkSeekFinished()', 500);
}