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 |
|
---|
45 | function 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 |
|
---|
56 | function 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 |
|
---|
74 | function 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 | } |
---|