3 * http://opencaps.atrc.utoronto.ca
\r
5 * Copyright 2009 Heidi Hazelton
\r
6 * Adaptive Technology Resource Centre, University of Toronto
\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
15 function loadProject() {
\r
16 $.get("include/workflow.php", { task: 'get_json' }, function(json){
\r
20 proj = JSON.parse(json);
\r
25 /*************************************** listeners */
\r
26 function myAddListener(obj, evt, handler, captures) {
\r
27 if (document.addEventListener)
\r
28 obj.addEventListener(evt, handler, captures);
\r
30 obj.attachEvent('on' + evt, handler);
\r
32 function RegisterListener(eventName, objID, embedID, listenerFcn) {
\r
33 var obj = document.getElementById(objID);
\r
35 obj = document.getElementById(embedID);
\r
37 myAddListener(obj, eventName, listenerFcn, false);
\r
40 /*************************************** utils */
\r
41 function sortNumber(a, b) {
\r
45 function calcTime(time) {
\r
51 var t = time/movieObj.GetTimeScale();
\r
54 numhours = parseInt(t/onehr);
\r
55 t = t-(numhours*onehr);
\r
58 nummins = parseInt(t/onemin);
\r
59 t = t-(nummins*onemin);
\r
62 //converts xx.xxxxxxxxxxx... to xxxxx since js doesn't round to a decimal
\r
63 t = Math.round(t*1000)+1;
\r
68 var t2 = new String(t);
\r
69 if (t<1000) { //less than a sec
\r
72 } else if (t<10000) { //less than 10 secs
\r
73 numsecs = t2.substr(0,1);
\r
74 nummils = t2.substr(1);
\r
76 numsecs = t2.substr(0,2);
\r
77 nummils = t2.substr(2);
\r
80 nummils = nummils + "000";
\r
81 nummils = nummils.substr(0,3);
\r
83 return padDigits(numhours,2) + ':' + padDigits(nummins, 2) + ':' + padDigits(numsecs, 2) + '.' + nummils;
\r
85 function getFormattedTime(gt) {
\r
86 var total = gt/movieObj.GetTimeScale();
\r
88 var gms = Math.round(total * 1000) % 1000;
\r
90 total = Math.floor(total);
\r
92 var gs = total % 60;
\r
93 total = Math.floor(total / 60);
\r
95 var gm = total % 60;
\r
96 gh = Math.floor(total / 60);
\r
98 var code = padDigits(gh, 2) + ":" + padDigits(gm, 2) + ":" + padDigits(gs, 2) + "." + padDigits(gms, 3);
\r
102 function getMilliseconds(ft) {
\r
103 var t = ft.split(':');
\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
108 //millis = millis*(movieObj.GetTimeScale());
\r
110 return Math.round(millis);
\r
114 function getFormattedTime2(total) {
\r
116 var milli = total % 1000;
\r
117 var sec = Math.floor(total/1000);
\r
124 min = Math.floor(bigsec / 60);
\r
129 hr = Math.floor(bigmin / 60);
\r
133 return padDigits(hr, 2) + ":" + padDigits(min, 2) + ":" + padDigits(sec, 2) + "." + padDigits(milli, 3);
\r
136 function getClipDuration(tin, tout) {
\r
137 tin = getMilliseconds(tin);
\r
138 tout= getMilliseconds(tout);
\r
140 var total = tout-tin;
\r
141 return getFormattedTime2(total);
\r
144 function addMilli(t) {
\r
145 t = getMilliseconds(t) + 1;
\r
146 return getFormattedTime2(t);
\r
149 function subMilli(t) {
\r
150 t = getMilliseconds(t) - 1;
\r
151 return getFormattedTime2(t);
\r
154 function roundNum(n) {
\r
155 return Math.round(n * 1000) / 1000;
\r
158 //adds missing zeros before number if ness
\r
159 function padDigits(n, totalDigits) {
\r
162 if (totalDigits > n.length) {
\r
163 for (i=0; i < (totalDigits-n.length); i++) {
\r
167 return pd + n.toString();
\r
170 /*function inASpace() {
\r
171 if ( ($("#clip-name").text() == "Space after Clip "+ curClip) || ($("#clip-name").text() == "Space before Clip "+ (curClip+1)))
\r
177 function inAClip() {
\r
178 if ( $("#clip-name").text() == "Clip "+ curClip )
\r