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); }