source: gs2-extensions/video-and-audio/trunk/src/web/script/document.js@ 23409

Last change on this file since 23409 was 23409, checked in by max, 13 years ago

Moved a few function in from extra.dm to here

File size: 11.1 KB
Line 
1
2 function format_date (gsdate,mode)
3 {
4 var year_num = gsdate.substr(0,4);
5 var month_num = gsdate.substr(4,2);
6 var date_num = gsdate.substr(6,2);
7
8 var date = new Date(year_num,month_num-1,date_num)
9
10 var date_str = date.toLocaleDateString();
11
12 if ((mode != undefined) && (mode == "alphanum"))
13 {
14 var dayname = new Array("Sunday","Monday","Tuesday","Wednesday",
15 "Thursday","Friday","Saturday");
16 var monthname = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul",
17 "Aug","Sep","Oct","Nov","Dec");
18
19 var day_alpha = dayname[date.getDay()];
20 var month_alpha = monthname[date.getMonth()];
21
22 date_str = day_alpha +", "
23 + date_num +" "+ month_alpha +" "+ year_num;
24 }
25
26 document.write(date_str);
27 }
28
29 function format_filesize (gsfilesize)
30 {
31 var filesize = gsfilesize + " bytes";
32
33 if (gsfilesize > 1048576) {
34 filesize = Math.round(gsfilesize / 1048576.0) + " Mb"
35 }
36 else if (gsfilesize > 1024) {
37 filesize = Math.round(gsfilesize / 1024.0) + " Kb"
38 }
39
40 document.write(filesize);
41 }
42
43
44
45function getOpenBookTable() {
46
47 var tabTocA = document.getElementById("toc");
48
49 // book icon and toc wrapper
50 var tablesOuter = tabTocA.parentNode.getElementsByTagName("table")
51
52 return tablesOuter.item(0);
53
54}
55
56function getTocTable() {
57
58 var tabTocA = document.getElementById("toc");
59
60 // book icon and toc wrapper
61 var tablesOuter = tabTocA.parentNode.getElementsByTagName("table")
62
63 var tabWrap = tablesOuter.item(1);
64
65 var tables = tabWrap.getElementsByTagName("table")
66
67 return tables.item(0);
68
69}
70
71
72
73
74function manipulateTocTable() {
75
76 var tabOB= getOpenBookTable();
77
78 if (tabOB != null) {
79 var expandText = document.getElementById("db-expand-text");
80 var highlight = document.getElementById("db-highlight");
81 var parentDB = expandText.parentNode;
82
83 parentDB.removeChild(expandText);
84 parentDB.removeChild(highlight);
85
86 var tbodyOB = tabOB.firstChild;
87 var trOB = tbodyOB.firstChild;
88 trOB.appendChild(expandText);
89 trOB.appendChild(highlight);
90
91 tabOB.setAttribute("width","100%");
92
93 // tabOB.setAttribute("bgcolor","red");
94 }
95
96
97 var tabToc= getTocTable();
98
99 if (tabToc != null) {
100
101 var tablePack = document.createElement("table");
102 var tbodyPack = document.createElement("tbody");
103 tablePack.appendChild(tbodyPack);
104
105 var trPack = document.createElement("tr");
106 trPack.setAttribute("bgColor","#e0f0ff");
107
108
109 var trList = tabToc.getElementsByTagName("tr")
110
111 // repack into 3-col table
112 var i;
113 for (i=0; i<trList.length; i++) {
114 if ((i>0) && (i % 3 == 0)) {
115 tbodyPack.appendChild(trPack);
116 trPack = document.createElement("tr");
117 trPack.setAttribute("bgColor","#e0f0ff");
118 }
119 var tr = trList.item(i);
120 var tdList = tr.getElementsByTagName("td");
121
122 //console.log("tdList = " + tdList.length);
123
124 var tdLink = tdList.item(0);
125 var href = tdLink.firstChild.href;
126
127 href = "javascript:htmlLoad(\""+href+"&onlytext=1\",\"ajaxtext\")";
128
129 var tdText = tdList.item(2);
130
131 var aPack = document.createElement("a");
132 aPack.setAttribute("href",href);
133 aPack.setAttribute("class","toc");
134 aPack.innerHTML = tdText.innerHTML;
135
136 var iPack = document.createElement("i");
137 iPack.appendChild(aPack);
138
139 //var tdPack = tdText.cloneNode(true);
140 var tdPack = document.createElement("td");
141 tdPack.appendChild(iPack);
142
143 // var textText = document.createTextNode(tdText.innerHTML);
144
145 // tdPack.appendChild(textText);
146
147 // tdPack.setAttribute("bgcolor","blue");
148 trPack.appendChild(tdPack);
149
150 }
151
152 tbodyPack.appendChild(trPack);
153
154 // find outer table element, and replace with new compact TOC
155 var newTocLoc = tabToc.parentNode;
156 while (!newTocLoc.nodeName.match(/^table$/i)) {
157 newTocLoc = newTocLoc.parentNode;
158 }
159
160
161 // set up list of TOC chapter headings (used when video player is shown)
162
163 //var tocList = document.createElement("div");
164 //tocList.setAttribute("style","display: block");
165
166 var tocList = document.getElementById("toclist");
167
168 for (i=0; i<trList.length; i++) {
169 var tr = trList.item(i);
170 var tdList = tr.getElementsByTagName("td");
171 var tdText = tdList.item(1);
172
173 // alert("tdText = " + tdText.innerHTML);
174
175 var tocEntry = document.createElement("div");
176 tocEntry.style.display = "none";
177
178 tocEntry.innerHTML = tdText.innerHTML;
179
180 //tocEntry.appendChild(tdText);
181
182 tocList.appendChild(tocEntry);
183 }
184
185
186 // delay replace until here so toclist can access trList
187 // in IE, doing replace earlier means trList becomes empty
188 newTocLoc.parentNode.replaceChild(tablePack,newTocLoc);
189
190 }
191 else {
192 var mess = "Warning: Didn't find TOC table where expected in DOM";
193 mess += "\n Found <" + tabToc.nodeName + ">instead of <table>";
194 mess += "\n Unable to manipulate: " + tabToc.nodeValue;
195
196 alert(mess);
197 }
198
199}
200
201
202 var flowplayervisible = 1;
203 var storedFlowplayerHeight = null;
204
205 function flowplayershow()
206 {
207 if (flowplayervisible) return; // already visible
208
209 divTOCtableElem = document.getElementById("toctable");
210 divTOCtableElem.style.display = "none";
211
212 divTOCnextprevElem = document.getElementById("tocnextprev");
213 divTOCnextprevElem.style.display = "block";
214
215 var divFlowplayerElem = document.getElementById("FlowPlayerDiv");
216 divFlowplayerElem.style.visibility = "visible";
217
218 if (storedFlowplayerHeight != null) {
219 divFlowplayerElem.style.height = storedFlowplayerHeight;
220 }
221
222 var flowPlayer = document.getElementById("FlowPlayer");
223
224 if (flowPlayer.DoPlay) {
225 flowPlayer.DoPlay();
226 }
227
228 flowplayervisible = 1;
229 }
230
231 function flowplayerhide()
232 {
233 if (!flowplayervisible) return; // already hidden
234
235
236 divTOCnextprevElem = document.getElementById("tocnextprev");
237 divTOCnextprevElem.style.display = "none";
238
239 var divFlowplayerElem = document.getElementById("FlowPlayerDiv");
240
241 if (parseInt(divFlowplayerElem.style.height) != "0") {
242 storedFlowplayerHeight = divFlowplayerElem.style.height;
243 }
244 divFlowplayerElem.style.height = "0px";
245 divFlowplayerElem.style.visibility = "hidden";
246
247 divTOCtableElem = document.getElementById("toctable");
248 divTOCtableElem.style.display = "block";
249
250 var flowPlayer = document.getElementById("FlowPlayer");
251
252 if (flowPlayer.Pause) {
253 flowPlayer.Pause();
254 }
255
256 flowplayervisible = 0;
257 }
258
259 var storedseek;
260 var delayedSafetyLimit = 0;
261
262 function videoplayerseekDelayed()
263 {
264 var flowPlayer = document.getElementById("FlowPlayer");
265
266 if (flowPlayer.Seek) {
267 flowPlayer.Pause();
268 flowPlayer.Seek(storedseek);
269 flowPlayer.DoPlay()
270 }
271 else {
272 if (delayedSafetyLimit<10) {
273 delayedSafetyLimit++;
274 setTimeout("videoplayerseekDelayed()",2000);
275 }
276 else {
277 alert("Failed to start at seeked position " + storedseek);
278 }
279 }
280
281 }
282
283
284 function videoplayerseek(hh,mm,ss)
285 {
286 flowplayershow();
287
288 storedseek = hh*3600 + mm*60 + ss -2;
289
290 var flowPlayer = document.getElementById("FlowPlayer");
291
292 if (flowPlayer.Seek) {
293 videoplayerseekDelayed();
294 }
295 else {
296 delayedSafetyLimit = 0;
297 setTimeout("videoplayerseekDelayed()",7000);
298 }
299
300 }
301
302 function audioplayerseek(hh,mm,ss)
303 {
304 storedseek = hh*3600 + mm*60 + ss -2;
305
306 var flowPlayer = document.getElementById("FlowPlayer");
307
308 if (flowPlayer.Seek) {
309 videoplayerseekDelayed();
310 }
311 else {
312 delayedSafetyLimit = 0;
313 setTimeout("videoplayerseekDelayed()",7000);
314 }
315
316 }
317
318
319 function onCuePoint(cuePoint)
320 {
321 if (cuePoint.type != "event") { return; }
322
323 var tocList = document.getElementById("toclist");
324
325 var tocEntries = tocList.getElementsByTagName("div");
326 var parameters = cuePoint.parameters;
327 var secNum = cuePoint.parameters.sectionnum;
328
329 var tocNum = secNum-1;
330
331 tocLen = tocEntries.length;
332
333 var i;
334 for (i=0; i<tocLen; i++)
335 {
336 var tocItem = tocEntries.item(i);
337
338 if (i==tocNum-1) {
339 var prevImg = document.getElementById("tocless");
340 prevImg.setAttribute("title",tocItem.innerHTML);
341 }
342
343
344 if (i!=tocNum) {
345 tocItem.style.display = "none";
346 }
347 else {
348 tocItem.style.display = "block";
349
350 // load in matching document-section text
351 var url = document.location.toString();
352
353 var nexturl = url;
354 var nextSecNum = tocNum + 1;
355
356 var doccutoff = url.lastIndexOf("&d=");
357 var dotcutoff = url.lastIndexOf(".");
358
359 if (dotcutoff>doccutoff) {
360 nexturl = url.substring(0,dotcutoff);
361 }
362
363 nexturl = nexturl + "." + nextSecNum + "&onlytext=1";
364 //alert("nexturl = " + nexturl);
365
366 htmlLoad(nexturl,"ajaxtext");
367
368 }
369
370 if (i==tocNum+1) {
371 var moreImg = document.getElementById("tocmore");
372 moreImg.setAttribute("title",tocItem.innerHTML);
373 }
374
375 }
376
377
378 }
379
380
381
382
383 function htmlLoad(url,locid)
384 {
385 var xmlHttp;
386 try {
387 // Firefox, Opera 8.0+, Safari
388 xmlHttp=new XMLHttpRequest();
389 }
390 catch (e) {
391 // Internet Explorer
392 try {
393 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
394 }
395 catch (e) {
396 try {
397 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
398 }
399 catch (e) {
400 alert("Your browser does not support AJAX!");
401 return false;
402 }
403 }
404 }
405
406 xmlHttp.onreadystatechange=function() {
407 if(xmlHttp.readyState==4) {
408 var locelem = document.getElementById(locid);
409
410 locelem.innerHTML = xmlHttp.responseText;
411 }
412 }
413
414 xmlHttp.open("GET",url,true);
415 xmlHttp.send(null);
416 }
417
418
419
420
421 function displayDateTimeLocale(datetimebroadcasted)
422 {
423 var year = datetimebroadcasted.substr(0,4);
424 var month = datetimebroadcasted.substr(4,2);
425 var day = datetimebroadcasted.substr(6,2);
426 var hours = datetimebroadcasted.substr(8,2);
427 var minutes = datetimebroadcasted.substr(10,2);
428 var seconds = datetimebroadcasted.substr(12,2);
429 var date = new Date(year, month*1-1, day, hours, minutes, seconds)
430 document.write(date.toLocaleString());
431 }
432
433 function displayRemainingDaysToKeep(datetimebroadcasted,daysToKeep)
434 {
435 var oneDayInMs = 1000*60*60*24;
436 var year = datetimebroadcasted.substr(0,4);
437 var month = datetimebroadcasted.substr(4,2);
438 var day = datetimebroadcasted.substr(6,2);
439 var displayString = "";
440 var importedDate = new Date(year, month*1-1, day);
441 var nowDate = new Date();
442 var endDate = new Date(year, month*1-1, day*1+daysToKeep);
443 var daysLeft = Math.ceil((endDate.getTime()-nowDate.getTime())/(oneDayInMs));
444
445 if (daysLeft >= 1)
446 { displayString = "This video has " + daysLeft + " day(s) remaining before expiration."; }
447 else
448 { displayString = "This video has expired, it will be deleted very soon."; }
449
450 document.write(displayString);
451 }
Note: See TracBrowser for help on using the repository browser.