|
1 <style> |
|
2 #videoelem { width: 100%; height: 100%; position: absolute; } |
|
3 #videocontainer { position: relative; width: 400px; height:230px;-webkit-user-select:none; -webkit-transition-duration:0.2s} |
|
4 .videobutton { |
|
5 line-height: 40pt; |
|
6 border: 3px solid white; |
|
7 -webkit-border-radius: 20px; |
|
8 opacity: 0.5; |
|
9 position: absolute; |
|
10 font-size: 40pt; |
|
11 color: white; |
|
12 background-color: gray; |
|
13 cursor: pointer; |
|
14 text-align: center; |
|
15 z-index: 1; |
|
16 } |
|
17 .videozoombutton { bottom:10px;right:10px;width:1.1em;height:1.1em;font-size:15pt; line-height: 15pt; border:2px solid white; -webkit-border-radius: 8px;} |
|
18 .videoloading { top: 0; bottom: 0; margin:auto; left:0; right:0; width: 7em; height: 1.2em; cursor:default;} |
|
19 .videofadeout { -webkit-transition: 1.5s; opacity:0; } |
|
20 #videocontainer:hover .videofadeout { opacity: 0.5; } |
|
21 .videoplay { top: 0; bottom: 0; margin:auto; left:0; right:0; width: 1.2em; height: 1.2em;} |
|
22 </style> |
|
23 <script> |
|
24 var videoElem; |
|
25 var playButton; |
|
26 var showProgress = true; |
|
27 var videoLargeSize = false; |
|
28 function startedPlaying() { |
|
29 showProgress = false; |
|
30 playButton.innerHTML = "||" |
|
31 playButton.className = "videobutton videoplay videofadeout"; |
|
32 } |
|
33 function stoppedPlaying() { |
|
34 playButton.innerHTML = ">" |
|
35 playButton.className = "videobutton videoplay"; |
|
36 } |
|
37 function updateProgress(ev) { |
|
38 if (!showProgress) |
|
39 return; |
|
40 playButton.innerHTML = "Loading..."; |
|
41 playButton.className = "videobutton videoloading"; |
|
42 } |
|
43 function initVideo() { |
|
44 videoElem = document.getElementById("videoelem"); |
|
45 playButton = document.getElementById("videoplaybutton"); |
|
46 videoZoomButton = document.getElementById("videozoombutton"); |
|
47 if (!videoElem.play) { |
|
48 playButton.style.display = "none"; |
|
49 videoZoomButton.style.display = "none"; |
|
50 return; |
|
51 } |
|
52 videoElem.addEventListener("play", startedPlaying); |
|
53 videoElem.addEventListener("pause", stoppedPlaying); |
|
54 videoElem.addEventListener("ended", function () { |
|
55 if (!videoElem.paused) |
|
56 videoElem.pause(); |
|
57 stoppedPlaying(); |
|
58 }); |
|
59 videoElem.addEventListener("progress", updateProgress); |
|
60 videoElem.addEventListener("begin", updateProgress); |
|
61 videoElem.addEventListener("canplaythrough", function () { |
|
62 videoElem.play(); |
|
63 }); |
|
64 videoElem.addEventListener("error", function() { |
|
65 playButton.innerHTML = "Load failed"; |
|
66 }); |
|
67 videoElem.addEventListener("dataunavailable", function () { |
|
68 if (!showProgress) { |
|
69 showProgress = true; |
|
70 playButton.innerHTML = "Loading..."; |
|
71 playButton.className = "videobutton videoloading"; |
|
72 } |
|
73 }); |
|
74 videoZoomButton.addEventListener("click", function () { |
|
75 var container = document.getElementById("videocontainer"); |
|
76 videoLargeSize = !videoLargeSize; |
|
77 if (videoLargeSize) { |
|
78 container.style.width = "640px"; |
|
79 container.style.height = "360px"; |
|
80 videoZoomButton.innerHTML = "-"; |
|
81 } else { |
|
82 container.style.width = "400px"; |
|
83 container.style.height = "225px"; |
|
84 videoZoomButton.innerHTML = "+"; |
|
85 } |
|
86 }); |
|
87 playButton.addEventListener("click", function () { |
|
88 if (videoElem.paused) { |
|
89 if (!videoElem.src) |
|
90 videoElem.src = "http://movies.apple.com/movies/us/apple/ipoditunes/2007/touch/ads/apple_ipodtouch_touch_r640-9cie.mov"; |
|
91 videoElem.play(); |
|
92 } else |
|
93 videoElem.pause(); |
|
94 } ); |
|
95 } |
|
96 </script> |
|
97 <div id=videocontainer> |
|
98 <video id=videoelem poster="resources/touch-poster.png"> |
|
99 <b style="font-size:15pt">This is fallback content. If you had video support you would see some here!</b></video> |
|
100 <div class="videobutton videoplay" id=videoplaybutton>></div> |
|
101 <div id=videozoombutton class="videobutton videozoombutton videofadeout">+</div> |
|
102 </div> |
|
103 <script>initVideo();</script> |