20bfea24c43ef2ea260454bfaf446f7564815f1c
[atutor.git] / mods / atutor_opencaps / opencaps / js / utils.js
1 /*\r
2  * OpenCaps\r
3  * http://opencaps.atrc.utoronto.ca\r
4  * \r
5  * Copyright 2009 Heidi Hazelton\r
6  * Adaptive Technology Resource Centre, University of Toronto\r
7  * \r
8  * Licensed under the Educational Community License (ECL), Version 2.0. \r
9  * You may not use this file except in compliance with this License.\r
10  * http://www.opensource.org/licenses/ecl2.php\r
11  * \r
12  */\r
13 \r
14 \r
15 function loadProject() {\r
16         $.get("include/workflow.php", { task: 'get_json' }, function(json){\r
17                 alert(json);\r
18 \r
19                 if (json) {\r
20                         proj = JSON.parse(json);\r
21                  }\r
22         });\r
23 }\r
24 \r
25 /*************************************** listeners */\r
26 function myAddListener(obj, evt, handler, captures) {\r
27         if (document.addEventListener) \r
28                 obj.addEventListener(evt, handler, captures);\r
29         else\r
30                 obj.attachEvent('on' + evt, handler);\r
31 }\r
32 function RegisterListener(eventName, objID, embedID, listenerFcn) {\r
33         var obj = document.getElementById(objID);\r
34         if ( !obj )\r
35                 obj = document.getElementById(embedID);\r
36         if ( obj )\r
37                 myAddListener(obj, eventName, listenerFcn, false);\r
38 }\r
39 \r
40 /*************************************** utils */\r
41 function sortNumber(a, b) {\r
42         return a - b;\r
43 }\r
44 \r
45 function calcTime(time) {\r
46         var numhours = 0;\r
47         var nummins = 0;\r
48         var numsecs = 0;\r
49         var nummils = 0;\r
50                 \r
51         var t = time/movieObj.GetTimeScale();  \r
52 \r
53         if (t > onehr) {\r
54                 numhours = parseInt(t/onehr);\r
55                 t = t-(numhours*onehr);\r
56         }\r
57         if (t > onemin) {\r
58                 nummins = parseInt(t/onemin);\r
59                 t = t-(nummins*onemin);\r
60         }\r
61 \r
62         //converts xx.xxxxxxxxxxx... to xxxxx since js doesn't round to a decimal\r
63         t = Math.round(t*1000)+1;\r
64 \r
65         /*if (t > 0)\r
66                 t = t+1;*/\r
67 \r
68         var t2 = new String(t);\r
69         if (t<1000) { //less than a sec\r
70                 numsecs = 0;\r
71                 nummils = t;\r
72         } else if (t<10000) { //less than 10 secs\r
73                 numsecs = t2.substr(0,1);\r
74                 nummils = t2.substr(1);\r
75         } else {\r
76                 numsecs = t2.substr(0,2);\r
77                 nummils = t2.substr(2);\r
78         }\r
79 \r
80         nummils = nummils + "000";\r
81         nummils = nummils.substr(0,3);\r
82 \r
83         return padDigits(numhours,2) + ':' + padDigits(nummins, 2) + ':' + padDigits(numsecs, 2) + '.' + nummils;\r
84 }\r
85 function getFormattedTime(gt) {\r
86         var total = gt/movieObj.GetTimeScale();\r
87 \r
88         var gms = Math.round(total * 1000) % 1000;\r
89         \r
90         total = Math.floor(total);\r
91         \r
92         var gs = total % 60;\r
93         total = Math.floor(total / 60); \r
94         \r
95         var gm = total % 60;\r
96         gh = Math.floor(total / 60);    \r
97         \r
98         var code = padDigits(gh, 2) + ":" + padDigits(gm, 2) + ":" + padDigits(gs, 2) + "." + padDigits(gms, 3);\r
99         return code;\r
100 }\r
101 \r
102 function getMilliseconds(ft) {\r
103         var t = ft.split(':');\r
104         \r
105         //convert hours, minutes, seconds all to milliseconds and add\r
106         var millis = (t[0]*60*60*1000) + (t[1]*60*1000) + (t[2]*1000);\r
107 \r
108         //millis = millis*(movieObj.GetTimeScale());\r
109         \r
110         return Math.round(millis);\r
111 }\r
112 \r
113 \r
114 function getFormattedTime2(total) {\r
115 \r
116         var milli = total % 1000;\r
117         var sec = Math.floor(total/1000);       \r
118         var min = 0;\r
119         var hr = 0;\r
120         \r
121         if (sec > 59) {\r
122                 var bigsec = sec;\r
123                 sec = bigsec % 60;\r
124                 min = Math.floor(bigsec / 60);\r
125                 \r
126                 if (min > 59) {\r
127                         bigmin = min\r
128                         min = bigmin % 60;\r
129                         hr = Math.floor(bigmin / 60);\r
130                 }\r
131         } \r
132         \r
133         return padDigits(hr, 2) + ":" + padDigits(min, 2) + ":" + padDigits(sec, 2) + "." + padDigits(milli, 3);        \r
134 }\r
135 \r
136 function getClipDuration(tin, tout) {   \r
137         tin = getMilliseconds(tin);\r
138         tout= getMilliseconds(tout);\r
139         \r
140         var total = tout-tin;   \r
141         return getFormattedTime2(total);        \r
142 }\r
143 \r
144 function addMilli(t) {\r
145         t = getMilliseconds(t) + 1;\r
146         return getFormattedTime2(t);\r
147 }\r
148 \r
149 function subMilli(t) {\r
150         t = getMilliseconds(t) - 1;\r
151         return getFormattedTime2(t);\r
152 }\r
153 \r
154 function roundNum(n) {\r
155         return Math.round(n * 1000) / 1000;\r
156 }\r
157 \r
158 //adds missing zeros before number if ness\r
159 function padDigits(n, totalDigits) { \r
160         n = n.toString(); \r
161         var pd = ''; \r
162         if (totalDigits > n.length)     { \r
163                 for (i=0; i < (totalDigits-n.length); i++) { \r
164                         pd += '0'; \r
165                 } \r
166         } \r
167         return pd + n.toString(); \r
168\r
169 \r
170 /*function inASpace() {\r
171         if ( ($("#clip-name").text() == "Space after Clip "+ curClip) || ($("#clip-name").text() == "Space before Clip "+ (curClip+1))) \r
172                 return true;\r
173         else \r
174                 return false;\r
175 }*/\r
176 \r
177 function inAClip() {\r
178         if ( $("#clip-name").text() == "Clip "+ curClip ) \r
179                 return true;\r
180         else \r
181                 return false;\r
182 }