removed mods directory from the ATutor codebase
[atutor.git] / mods / atutor_opencaps / opencaps / js / editor.js
diff --git a/mods/atutor_opencaps/opencaps/js/editor.js b/mods/atutor_opencaps/opencaps/js/editor.js
deleted file mode 100755 (executable)
index 677a01e..0000000
+++ /dev/null
@@ -1,883 +0,0 @@
-/*\r
- * OpenCaps\r
- * http://opencaps.atrc.utoronto.ca\r
- * \r
- * Copyright 2009 Heidi Hazelton\r
- * Adaptive Technology Resource Centre, University of Toronto\r
- * \r
- * Licensed under the Educational Community License (ECL), Version 2.0. \r
- * You may not use this file except in compliance with this License.\r
- * http://www.opensource.org/licenses/ecl2.php\r
- * \r
- */\r
-\r
-/* GLOBALS */\r
-\r
-var proj = proj || {};\r
-\r
-var MIN_CLIP_DUR = 400;\r
-\r
-var clip_playing = false;\r
-\r
-var movie = movie || {};\r
-var clip = clip || {};\r
-var movieObj = movieObj || {};\r
-\r
-num_clips = 0;\r
-clips = new Array();\r
-\r
-this_location = new Object;\r
-\r
-var json;\r
-var inClip;\r
-\r
-\r
-/* ****** */\r
-tab = 'clips';\r
-lastplay = 0;\r
-new_flag = 0;\r
-clocktimer = 0;\r
-curTime = 0;\r
-clipTime = 0;\r
-curClip = 0;\r
-curIn = 0;\r
-lastLoc = 1;\r
-\r
-pace = 0;\r
-timer = 0;\r
-numclips = 0;\r
-marker = "";\r
-clip_marker = "";\r
-\r
-//set values in seconds\r
-onemin = 60;\r
-onehr  = onemin*60;\r
-\r
-/* clip vars */\r
-temp_in = 0;\r
-temp_out = 0;\r
-temp_caps = '';\r
-dur = 0;\r
-extend = false;\r
-\r
-\r
-/*************************************** initialize */\r
-\r
-$(document).ready(function () {\r
-       $("#movie-controls").css("visibility", "hidden");\r
-       $("#clip-controls").css("visibility", "hidden");\r
-       $("#make-clip").css("visibility", "hidden");\r
-       $("#clip-info").css("visibility", "hidden");\r
-\r
-       $.get("include/workflow.php", { task: 'get_json' }, function(json) {\r
-               if (json) {                     \r
-                       proj = JSON.parse(json);\r
-                       startEditor();\r
-               }\r
-       });\r
-       \r
-       $("#caption-text").keyup( function(event) {             \r
-               //if ($("#caption-text").text() != this_location.caption_text) {\r
-                       $("#makeclip").removeAttr("disabled");\r
-                       temp_caps = 1;\r
-               //}\r
-       });\r
-});\r
-\r
-\r
-function confirmDelete(clipnum) {\r
-       if (confirm("Are you sure you want to delete Clip "+clipnum+"?")) {\r
-               deleteClip(clipnum);\r
-       }\r
-}\r
-\r
-function startEditor() {\r
-       movieObj = document.mymovie;\r
-       \r
-       //register listeners\r
-       RegisterListener('qt_play', 'mymovie', 'mymovie_embed', startTimeline);\r
-       RegisterListener('qt_pause', 'mymovie', 'mymovie_embed', pauseTimeline);\r
-       RegisterListener('qt_ended', 'mymovie', 'mymovie_embed', pauseTimeline);\r
-\r
-       /* show or hide side bar action */\r
-       $("#show_hide_caps").click(function() {\r
-               if ($("#info-tab").css("display") == "none") {\r
-                       $("#info-tab").show();\r
-                       $("#info-container").css("margin-left", "71%");\r
-                       $("#movie-container").css("width", "70%");\r
-                       \r
-                       $(this).html('<h4 style="margin:0px">Clips <img style="float:right" src="images/application_get.png" alt="hide clips" title="hide clips" /></h4>');\r
-               } else {\r
-                       $("#info-tab").hide();\r
-                       $("#info-container").css("margin-left", "97%");\r
-                       $("#movie-container").css("width", "96%");\r
-                       \r
-                       $(this).html('<img src="images/application_put.png" alt="show clips" title="show clips" />');   \r
-               }\r
-       });\r
-\r
-       /* hide clip side bar */\r
-       $("#info-tab").hide();\r
-       $("#info-container").css("margin-left", "97%");\r
-       $("#movie-container").css("width", "96%");\r
-       $("#show_hide_caps").html('<img src="images/application_put.png" alt="show clips" title="show clips" />');      \r
-               \r
-       \r
-       $("#editor-tab").addClass('current');\r
-       $("#clips-subtab").addClass('current');\r
-       \r
-       /* global proj related vars */\r
-       if (proj.clip_collection)\r
-               num_clips = proj.clip_collection.clips.length;\r
-\r
-       interval = window.setInterval("QTStatus()",100);        \r
-}\r
-\r
-function QTStatus() {\r
-       try {\r
-               if (movieObj.GetPluginStatus() == "Complete") {\r
-                       window.clearInterval(interval);\r
-                       $("#movie_status").html("");\r
-                       setDisplay();\r
-               } else {\r
-                       $("#movie_status").html("<strong>Loading media...</strong>");\r
-               }\r
-       } catch (err) {\r
-       }\r
-}\r
-\r
-function setDisplay() {\r
-       $("#movie-controls").css("visibility", "visible");\r
-       $("#clip-controls").css("visibility", "visible");\r
-       $("#make-clip").css("visibility", "visible");\r
-       $("#clip-info").css("visibility", "visible");\r
-       \r
-       $("#source-file").text(movieObj.GetURL());      \r
-\r
-       $("#duration").text(getFormattedTime(movieObj.GetDuration()));  \r
-       dur = parseInt(movieObj.GetDuration()/movieObj.GetTimeScale()*1000);\r
-\r
-       var mysize = movieObj.GetRectangle().split(',');\r
-       \r
-       /* set if audio file: min 250x100 */\r
-       if (mysize[3] >= 1)\r
-               proj.media_height = mysize[3];\r
-       else \r
-               proj.media_height = 1;\r
-       \r
-       if (mysize[2] >= 250)\r
-               proj.media_width = mysize[2];\r
-       else \r
-               proj.media_width = 250;\r
-\r
-       proj.duration = getFormattedTime2(dur);\r
-       clips = proj.clip_collection.clips;     \r
-               \r
-       $("#m_timeline").slider({ \r
-        min: 0, \r
-        max: dur,\r
-    \r
-        stop: function(e, ui) { \r
-               $("#m_timeline").slider("value", ui.value);\r
-        }, \r
-\r
-        slide: function(e, ui) { \r
-            $("#c_timeline").slider("value", ui.value); \r
-                       moveMovieAll(ui.value);\r
-        } \r
-    });    \r
-\r
-       //$("#show_hide_caps").html('<img src="images/application_get.png" style="margin-bottom:-3px;" alt="hide clips" title="hide clips" /> Clips');\r
-\r
-       pace = dur / parseInt($("#m_timeline").css("width"));\r
-\r
-       //isn't it always 0?\r
-       if (movieObj.GetTime() > 0) {\r
-               curTime = calcTime(movieObj.GetTime());\r
-       } else {\r
-               curTime = getFormattedTime2(0);\r
-       }\r
-       \r
-       $("#current-time").text(curTime);       \r
-       $("#clip-time").text(curTime);  \r
-       \r
-       curTime = getMilliseconds(curTime);\r
-       $("#makeclip").attr("disabled","disabled");\r
-\r
-       saveJson();\r
-}\r
-\r
-function moveMovie(time) { //time in milliseconds\r
-       movieObj.SetTime(time*movieObj.GetTimeScale()/1000);\r
-       setCurClip(time);  \r
-           \r
-       $("#current-time").text(getFormattedTime2(time));       \r
-       \r
-       clipTime = parseInt(time - this_location.inTimeMilli);\r
-       $("#clip-time").text(getFormattedTime2(clipTime));      \r
-\r
-       curTime = time;\r
-}\r
-\r
-function moveMovieAll(time) { //time in milliseconds\r
-       movieObj.SetTime(time*movieObj.GetTimeScale()/1000);\r
-       setCurClip(time);  \r
-       \r
-       $("#c_timeline").slider("value", time);\r
-    $("#m_timeline").slider("value", time); \r
-       $("#current-time").text(getFormattedTime2(time));       \r
-       \r
-       clipTime = parseInt(time - this_location.inTimeMilli);\r
-       $("#clip-time").text(getFormattedTime2(clipTime));      \r
-       curTime = time;\r
-}\r
-\r
-function startTimeline() {\r
-       /*if (getMilliseconds(calcTime(movieObj.GetTime())) == curTime-1) {\r
-               movieObj.SetTime((curTime*movieObj.GetTimeScale()/1000)+50);\r
-       }*/\r
-       runTimer();     \r
-       \r
-       this_location_dur = getMilliseconds($("#out-time").text())-getMilliseconds($("#in-time").text());\r
-       clip_pace = this_location_dur / parseInt($("#c_timeline").css("width"));\r
-       \r
-       updateMovieMarker(curTime);     \r
-       updateClipMarker(curTime);              \r
-}\r
-\r
-function pauseTimeline() {\r
-       clearTimeout(clocktimer);\r
-       clearTimeout(marker);\r
-       clearTimeout(clip_marker);\r
-}\r
-\r
-function updateMovieMarker(time) {     \r
-       $("#m_timeline").slider("value", time);\r
-       marker = setTimeout("updateMovieMarker(curTime)", pace);\r
-}\r
-\r
-function updateClipMarker(time) {      \r
-       $("#c_timeline").slider("value", time);\r
-       clip_marker = setTimeout("updateClipMarker(curTime)", clip_pace);\r
-}\r
-\r
-function runTimer() {\r
-       curTime = calcTime(movieObj.GetTime());\r
-\r
-       $("#current-time").text(curTime);       \r
-       curTime = getMilliseconds(curTime);\r
-               \r
-       clipTime = parseInt(curTime - getMilliseconds($("#in-time").text()));\r
-\r
-       if ( curTime==dur || curTime>getMilliseconds($("#out-time").text()) || curTime<getMilliseconds($("#in-time").text()) ) {        \r
-               if (clip_playing || curTime >= dur) {\r
-                       clip.pressStop();\r
-                       moveMovieAll(getMilliseconds($("#out-time").text()));\r
-                       return;\r
-               } else {\r
-                       setCurClip(curTime);\r
-               }\r
-       }\r
-       $("#clip-time").text(getFormattedTime2(clipTime));      \r
-       clocktimer = setTimeout("runTimer()",1);        \r
-}\r
-\r
-function setClipTimeline(cdur, cin, cout) { \r
-       //console.log('setClipTimeline', cin, cout);\r
-       \r
-       //destroy the old slider set up and create the new one\r
-    $("#c_timeline").slider("destroy");\r
-\r
-       $("#c_timeline").slider({ \r
-        min: cin, \r
-        max: cout,\r
-                  \r
-        stop: function(e, ui) { \r
-                       $("#c_timeline").slider("value", ui.value);\r
-        },\r
-        slide: function(e, ui) { \r
-            $("#m_timeline").slider("value", ui.value); \r
-                       moveMovieAll(ui.value);\r
-        } \r
-    });    \r
-}\r
-       \r
-function loadClips() {\r
-       $('#numclips').text(num_clips);\r
-       clips_html = '';\r
-               \r
-       if (num_clips > 0) {\r
-               for (var i in clips) {\r
-                                               \r
-                       //previous space\r
-                       if (clips[parseInt(i)-1] == undefined && clips[i].inTimeMilli>0) {\r
-                               space_dur = getFormattedTime2(clips[i].inTimeMilli-1);\r
-                               clips_html += '<div class="space"><span style="font-weight:bold;float:left;"><a href="#" onclick="javascript:resetClipWork();moveMovieAll(0);">Space before Clip 1</a></span><span style="float:right">'+ space_dur +'</span><span id="space'+i+'"></span><br style="clear:both;" /></div>';\r
-                       } else if ( clips[parseInt(i)-1] != undefined && (clips[i].inTimeMilli != parseInt(clips[parseInt(i)-1].outTimeMilli)+1)) { \r
-                               space_dur = getFormattedTime2(clips[i].inTimeMilli - clips[parseInt(i)-1].outTimeMilli -2);\r
-                               clips_html += '<div class="space"><span style="font-weight:bold;float:left;"><a href="#" onclick="javascript:resetClipWork();moveMovieAll('+(clips[parseInt(i)-1].outTimeMilli+1)+');">Space after Clip '+i+'</a></span><span style="float:right">'+ space_dur +'</span><span id="space'+i+'"></span><br style="clear:both;" /></div>';\r
-                       } \r
-                       \r
-                       //clip\r
-                       html_caption = clips[i].caption_text.replace(/\n/g, "<br />");                  \r
-                       clips[i].name = 'Clip '+(parseInt(i)+1);\r
-                       clips_html += '<div style="float:right; padding-top:5px;margin-right:5px;"><a href="#" onclick="javascript:confirmDelete('+(parseInt(i)+1)+');">X</a></div><div class="clip"><span class="clip-title"><a name="clip'+i+'" href="#" onclick="javascript:resetClipWork();moveMovieAll('+clips[i].inTimeMilli+');">'+clips[i].name+'</a></span><span id="clip'+(parseInt(i)+1)+'"></span><br />' + html_caption + '<br /><div style="float:right"> '+ clips[i].duration + '</div><span style="font-size:smaller">in: ' + clips[i].inTime + ' <br />out: '+ clips[i].outTime +'</span></div>';\r
-                               \r
-                       //last space\r
-                       if (clips[parseInt(i)+1] == undefined && clips[i].outTimeMilli<dur) {\r
-                               space_dur = getFormattedTime2(dur - clips[i].outTimeMilli-1);\r
-                               clips_html += '<div class="space"><span style="font-weight:bold;float:left;"><a href="#" onclick="javascript:resetClipWork();moveMovieAll('+parseInt(clips[i].outTimeMilli+1)+');">Space after Clip '+(parseInt(i)+1)+'</a></span><span style="float:right">'+ space_dur +'</span><span id="space'+(parseInt(i)+1)+'"></span><br style="clear:both;" /></div>';\r
-                       }\r
-                       i++;\r
-               }       \r
-               \r
-               $("#info-tab").html(clips_html);                \r
-       } else {\r
-               //no clips\r
-               clips_html = '<div class="space" style="border-bottom:0px"><span style="font-weight:bold;float:left;"><a href="#" onclick="javascript:resetClipWork();moveMovieAll(0);">Space</a></span><span style="float:right">'+ $("#duration").text() +'</span><br style="clear:both;" /></div>';\r
-               $("#info-tab").html(clips_html);\r
-               \r
-               new_flag = true;\r
-       }\r
-       setCurClip(curTime);\r
-}\r
-\r
-/*\r
- * As the movie plays (or the playhead is moved), figure out what clip it's on \r
- */ \r
-function setCurClip(time) {\r
-       \r
-       this_location = {};\r
-       inClip = false;\r
-       var asterisk = '';\r
-                       \r
-       if (temp_in) {\r
-               this_location.inTime = temp_in;\r
-               this_location.inTimeMilli = getMilliseconds(temp_in);\r
-       } else {\r
-               this_location.inTime = $("#in-time").text();\r
-               this_location.inTimeMilli = getMilliseconds(this_location.inTime);\r
-       }\r
-       if (temp_out) {\r
-               this_location.outTime = temp_out;\r
-               this_location.outTimeMilli = getMilliseconds(temp_out);\r
-       } else {\r
-               this_location.outTime = $("#out-time").text();\r
-               this_location.outTimeMilli = getMilliseconds(this_location.outTime);\r
-       }\r
-       \r
-       if (extend == true) {           \r
-               if( (temp_in && time < getMilliseconds(temp_in)) || (temp_out && time > getMilliseconds(temp_out) )) {\r
-                       resetClipWork();\r
-                       extend = false;\r
-               } else {\r
-                       return;\r
-               }\r
-       } else {\r
-               lastLoc = curClip;\r
-       }       \r
-       \r
-       if (num_clips == 0) {\r
-               //no clips\r
-               this_location.name = "Space";\r
-               \r
-               asterisk = "#space0";\r
-               if (!temp_in) {\r
-                       this_location.inTimeMilli = 0;\r
-                       this_location.inTime = getFormattedTime2(this_location.inTimeMilli);\r
-               }\r
-               if (!temp_out) {\r
-                       this_location.outTimeMilli = dur;\r
-                       this_location.outTime = getFormattedTime2(dur);\r
-               }\r
-               \r
-               this_location.caption_text = "";\r
-               curClip = 0;\r
-               $("#makeclip").val("Make Clip");\r
-               \r
-       } else {        \r
-               for (var i in clips) {\r
-                       if (time < clips[i].inTimeMilli && clips[parseInt(i)-1] == undefined) { \r
-                               //first space\r
-                               this_location.name = "Space before Clip 1";\r
-                               \r
-                               asterisk = "#space0";\r
-                                                               \r
-                               if (!temp_in) {\r
-                                       this_location.inTimeMilli = 0;\r
-                                       this_location.inTime = getFormattedTime2(this_location.inTimeMilli);\r
-                               }\r
-                               if (!temp_out) {\r
-                                       this_location.outTimeMilli = parseInt(clips[i].inTimeMilli)-1;\r
-                                       this_location.outTime = getFormattedTime2(this_location.outTimeMilli);\r
-                               }\r
-                               \r
-                               this_location.caption_text = "";\r
-                               curClip = 0;\r
-                               $("#makeclip").val("Make Clip");\r
-\r
-                               break;\r
-                       } else if ( (clips[parseInt(i)+1] == undefined || time < clips[parseInt(i)+1].inTimeMilli) && time > clips[i].outTimeMilli) {\r
-                               \r
-                               //space\r
-                               this_location.name = "Space after Clip "+ parseInt(parseInt(i)+1);\r
-                               \r
-                               if (!temp_in) { \r
-                                       this_location.inTimeMilli = clips[i].outTimeMilli+1;\r
-                                       this_location.inTime = getFormattedTime2(this_location.inTimeMilli);\r
-                               }\r
-\r
-                               if (!temp_out) {\r
-                                       if (clips[parseInt(i)+1] == undefined)\r
-                                               this_location.outTimeMilli = dur;\r
-                                       else\r
-                                               this_location.outTimeMilli = clips[parseInt(i)+1].inTimeMilli-1;\r
-                                       \r
-                                       this_location.outTime = getFormattedTime2(this_location.outTimeMilli);\r
-                               }\r
-                               \r
-                               this_location.caption_text = "";\r
-                               curClip = parseInt(i)+1;\r
-                               asterisk = "#space"+curClip;\r
-\r
-                               $("#makeclip").val("Make Clip");\r
-                               \r
-                               break;\r
-                       } else if (time >= clips[i].inTimeMilli && time <= clips[i].outTimeMilli) {\r
-                               //clip\r
-                               curClip = parseInt(i)+1;\r
-                               this_location = clips[i];\r
-                               inClip = true;\r
-                               $("#makeclip").val("Update Clip");\r
-                               \r
-                               asterisk = "#clip"+curClip;\r
-                               break;\r
-                       } else {                                \r
-                               //console.log("skipping this one", i, clips[i].inTimeMilli, clips[i].outTimeMilli);\r
-                       }\r
-               }       \r
-       }       \r
-       \r
-       // 'you are here' asterisk      \r
-       $("#space"+lastLoc).text("");                           \r
-       $("#clip"+lastLoc).text("");\r
-               \r
-       $(asterisk).html("&nbsp;<img src='images/asterisk_yellow.png' alt='current space' />");\r
-       \r
-       // in and out times\r
-       if (!temp_in) \r
-               $("#in-time").text(this_location.inTime);\r
-       if (!temp_out)                          \r
-               $("#out-time").text(this_location.outTime);\r
-                       \r
-       //duration\r
-       this_location.durationMilli = this_location.outTimeMilli - this_location.inTimeMilli;\r
-       this_location.duration = getFormattedTime2(this_location.durationMilli);                \r
-       $("#clip-duration").text(this_location.duration);\r
-\r
-       \r
-       // moved into a different clip or space\r
-       if ($("#clip-name").text() != this_location.name || (new_flag && !temp_in && !temp_out && !temp_caps)) {\r
-               \r
-               //caption text\r
-               $("#caption-text").val(this_location.caption_text);                     \r
-               \r
-               // user was working on a new clip but it gets reset when moving out of current clip\r
-               if (temp_in || temp_out || temp_caps) {  \r
-                       resetClipWork();\r
-               }\r
-               \r
-               //move scroll bar to clip\r
-               if (curClip>2)\r
-                       $("#info-tab").scrollTop(curClip*70);\r
-               else \r
-                       $("#info-tab").scrollTop(0);\r
-               \r
-               // update the clip timeline and move the playhead\r
-               setClipTimeline(this_location.durationMilli, this_location.inTimeMilli, this_location.outTimeMilli);\r
-       }\r
-       \r
-       // name\r
-       $("#clip-name").text(this_location.name);\r
-}\r
-/*************************************** movie controller buttons */\r
-\r
-movie.normPlay = function() {\r
-       if ($("#playButton").attr("src") == "images/play.png") {\r
-               movieObj.Play();\r
-               $("#playButton").attr("src", 'images/pause.png');\r
-               $("#clip-playButton").attr("src", 'images/pause.png');\r
-\r
-       } else {\r
-               movie.pressStop();      \r
-       }\r
-}\r
-\r
-movie.pressPlay = function() {\r
-       movieObj.Play();\r
-       $("#pressButton").attr("src", 'images/pause.png');\r
-}\r
-movie.pressStop = function() {\r
-       movieObj.Stop();\r
-       $("#playButton").attr("src", 'images/play.png');\r
-       $("#clip-playButton").attr("src", 'images/play.png');\r
-\r
-       $("#pressButton").attr("src", 'images/pressplay.png');\r
-}\r
-\r
-\r
-/*************************************** clip controller buttons */\r
-\r
-clip.normPlay = function() {           \r
-       if ($("#clip-playButton").attr("src") == "images/play.png") {\r
-               lastplay = curTime;\r
-               movieObj.Play();\r
-               $("#clip-playButton").attr("src", 'images/pause.png');\r
-               $("#playButton").attr("src", 'images/pause.png');\r
-               clip_playing = true;\r
-       } else {\r
-               clip.pressStop();       \r
-       }\r
-}\r
-\r
-clip.pressPlay = function() {\r
-       lastplay = curTime;\r
-       moveMovie(curTime);\r
-       movieObj.Play();\r
-       $("#clip-pressButton").attr("src", 'images/pause.png');\r
-       clip_playing = true;\r
-}\r
-clip.pressStop = function() {\r
-       movieObj.Stop();\r
-       var max = $("#c_timeline").slider("option", "max");\r
-       if (curTime > max)\r
-               moveMovie(max-1000);\r
-               \r
-       $("#clip-playButton").attr("src", 'images/play.png');\r
-       $("#playButton").attr("src", 'images/play.png');\r
-       $("#clip-pressButton").attr("src", 'images/pressplay.png');\r
-       clip_playing = false;   \r
-}\r
-\r
-function getIndex( myarray, item ) {\r
-       for (var i=0; i<myarray.length; i++) {\r
-               if (myarray[i] == item) {\r
-                       return i;\r
-               }\r
-       }\r
-}\r
-\r
-clip.previous = function() {   \r
-       //if in a clip\r
-       if (inClip && curClip > 1) {\r
-               //go to prev space (prev clip's out time +1)\r
-               if (clips[curClip-2].outTimeMilli+1 != clips[curClip-1].inTimeMilli) {\r
-                       moveMovieAll(clips[curClip-2].outTimeMilli+1);\r
-                       \r
-               //if no space, go to prev clip\r
-               } else {\r
-                       moveMovieAll(clips[curClip-2].inTimeMilli);             \r
-               }\r
-               \r
-       //if in a space, go to prev clip        \r
-       } else if (!inClip && curClip>0) {\r
-               moveMovieAll(clips[curClip-1].inTimeMilli);\r
-       //if in first space or clip, go to start        \r
-       } else {        \r
-               moveMovieAll(0);\r
-       }\r
-}\r
-clip.next = function() {       \r
-       //if in a clip\r
-       if (inClip && clips[curClip] != undefined) {\r
-               \r
-               //go to next space (next clip's out time +1)\r
-               if (clips[curClip].inTimeMilli != clips[curClip-1].outTimeMilli+1) {\r
-                       moveMovieAll(clips[curClip-1].outTimeMilli+1);\r
-                       \r
-               //if no space, go to next clip\r
-               } else  {\r
-                       moveMovieAll(clips[curClip].inTimeMilli);               \r
-               }\r
-               \r
-       //if in a space, go to next clip        \r
-       } else if (!inClip && clips[curClip] != undefined) {\r
-               moveMovieAll(clips[curClip].inTimeMilli);\r
-               \r
-       //if at the end \r
-       } else if (clips[clips.length-1] != undefined) {\r
-               if (clips[clips.length-1].outTimeMilli == dur)\r
-                       moveMovieAll(clips[clips.length-1].inTimeMilli);\r
-               else\r
-                       moveMovieAll(clips[clips.length-1].outTimeMilli+1);\r
-       }\r
-\r
-}\r
-\r
-clip.goToStart = function() {\r
-       moveMovieAll(getMilliseconds($("#in-time").text()));\r
-}\r
-clip.goToEnd = function() {\r
-       moveMovieAll(getMilliseconds($("#out-time").text()));\r
-}\r
-clip.stepBack = function(step) {\r
-       if (curTime >= step && (curTime-step >= getMilliseconds($("#in-time").text())) )\r
-               moveMovieAll(curTime - step);   \r
-}\r
-clip.stepForward = function(step) {            \r
-       if (  curTime+step <= getMilliseconds($("#out-time").text()) ) \r
-               moveMovieAll(curTime + step);   \r
-}\r
-\r
-clip.lastPlay = function() {           \r
-       moveMovieAll(lastplay); \r
-}\r
-\r
-/*************** making a clip */\r
-\r
-clip.newInTime = function() {\r
-       var clip_dur = 0;\r
-       clip_dur = this_location.outTimeMilli-curTime;  \r
-       if (clip_dur <= MIN_CLIP_DUR) {\r
-               alert("Too few frames to make a clip!");\r
-       } else {\r
-               $("#in").css("color","red");    \r
-               $("#in-time").css("color","red");\r
-               $("#clip-duration").css("color","red"); \r
-               $("#makeclip").removeAttr("disabled");\r
-               $("#clip-duration").text(getFormattedTime2(clip_dur));\r
-\r
-               //old_in = getMilliseconds($("#in-time").text());\r
-               \r
-               temp_in = getFormattedTime2(curTime);\r
-               $("#in-time").text(temp_in);\r
-                               \r
-               setClipTimeline(clip_dur, curTime, this_location.outTimeMilli);\r
-               moveMovieAll(curTime);\r
-                               \r
-               /*if (new_flag)\r
-                       $("#in-undo").html("<a href='#' onclick='javascript:clip.undoIn(0)'><img src='images/bullet_delete.png' alt='cancel in-time' title='cancel in-time' /></a>");\r
-               else if (inAClip())\r
-                       $("#in-undo").html("<a href='#' onclick='javascript:clip.undoIn("+milli_ins[curClip-1]+")'><img src='images/bullet_delete.png' alt='cancel in-time' title='cancel in-time' /></a>");\r
-               else    \r
-                       $("#in-undo").html("<a href='#' onclick='javascript:clip.undoIn("+milli_spaceins[curClip]+")'><img src='images/bullet_delete.png' alt='cancel in-time' title='cancel in-time' /></a>");\r
-               */\r
-       }       \r
-}\r
-\r
-\r
-clip.newOutTime = function() {\r
-       if (curTime != getMilliseconds($("#out-time").text())) {\r
-               var clip_dur = 0;\r
-\r
-               if (temp_in) {\r
-                       clip_dur = curTime-getMilliseconds(temp_in);\r
-               } else {\r
-                       clip_dur = curTime-getMilliseconds($("#in-time").text());\r
-               }               \r
-               \r
-               if (clip_dur <= MIN_CLIP_DUR) {\r
-                       alert("Too few frames to make a clip!");\r
-               } else {\r
-\r
-                       $("#out").css("color","red");\r
-                       $("#out-time").css("color","red");\r
-                       $("#clip-duration").css("color","red");\r
-                       $("#makeclip").removeAttr("disabled");          \r
-                       $("#clip-duration").text(getFormattedTime2(clip_dur));                  \r
-                       \r
-                       temp_out = getFormattedTime2(curTime);\r
-                       $("#out-time").text(temp_out);\r
-                       \r
-                       setClipTimeline(curTime - getMilliseconds($("#in-time").text()), getMilliseconds($("#in-time").text()), curTime);\r
-                       moveMovieAll(curTime);\r
-\r
-                       /*if (new_flag)\r
-                               $("#out-undo").html("<a href='#' onclick='javascript:clip.undoOut("+dur+")'><img src='images/bullet_delete.png' alt='cancel out-time' title='cancel out-time' /></a>");\r
-                       else if (inAClip())\r
-                               $("#out-undo").html("<a href='#' onclick='javascript:clip.undoOut("+milli_outs[curClip-1]+")'><img src='images/bullet_delete.png' alt='cancel out-time' title='cancel out-time' /></a>");\r
-                       else    \r
-                               $("#out-undo").html("<a href='#' onclick='javascript:clip.undoOut("+milli_spaceouts[curClip]+")'><img src='images/bullet_delete.png' alt='cancel out-time' title='cancel out-time' /></a>");\r
-                       */                                      \r
-               }\r
-       }\r
-}\r
-\r
-clip.addPrevSpace = function() {               \r
-               \r
-       //if the current clip's inTime is > 0 and also not equal to the prev clip's outTime\r
-       if (inClip && clips[curClip-1].inTimeMilli > 0 && ( clips[curClip-2]==undefined || clips[curClip-1].inTimeMilli != clips[curClip-2].outTimeMilli) ) {\r
-                               \r
-               var newin = 0;\r
-               \r
-               //make clip start = last clip's end     \r
-               if (clips[curClip-2] != undefined) {\r
-                       newin = clips[curClip-2].outTimeMilli + 1;\r
-               } else {\r
-                       newin = 0;\r
-               }\r
-               temp_in = getFormattedTime2(newin);\r
-               var oldout = getMilliseconds($("#out-time").text())\r
-               var caption_text = $("#caption-text").val();\r
-                               \r
-               //set new temp values\r
-               $("#in-time").css("color","red");\r
-               $("#in-time").text(temp_in);\r
-               \r
-               $("#clip-duration").css("color","red"); \r
-               $("#makeclip").removeAttr("disabled");\r
-               $("#makeclip").val("Update Clip");\r
-               \r
-               //$("#caption-text").val(caption_text);                         \r
-               $("#clip-duration").text(getFormattedTime2(oldout - newin));            \r
-               \r
-               extend = true;          \r
-               setClipTimeline(oldout - newin, newin, oldout);\r
-               moveMovieAll(curTime);\r
-               //$("#in-undo").html("<a href='#' onclick='javascript:clip.undoIn("+milli_ins[curClip-1]+")'><img src='images/bullet_delete.png' alt='cancel in-time' title='cancel in-time' /></a>");\r
-       }\r
-}\r
-\r
-clip.addNextSpace = function() {               \r
-       \r
-       if (inClip && clips[curClip-1].outTimeMilli < dur && (clips[curClip]==undefined || clips[curClip-1].outTimeMilli != clips[curClip].inTimeMilli)) {\r
-               var newout = 0;\r
-               //make clip start = last clip's end     \r
-               if (clips[curClip] != undefined) {\r
-                       newout = clips[curClip].inTimeMilli - 1;\r
-               } else {\r
-                       newout = dur;\r
-               }\r
-               temp_out = getFormattedTime2(newout);\r
-\r
-               var oldin = getMilliseconds($("#in-time").text())\r
-               var caption_text = $("#caption-text").val();\r
-               \r
-               //set new temp values\r
-               $("#out-time").css("color","red");\r
-               $("#out-time").text(temp_out);\r
-               \r
-               $("#clip-duration").css("color","red"); \r
-               $("#makeclip").removeAttr("disabled");\r
-               $("#makeclip").val("Update Clip");\r
-               \r
-               //$("#caption-text").val(caption_text);                         \r
-               $("#clip-duration").text(getFormattedTime2(newout - oldin));            \r
-                               \r
-               extend = true;          \r
-               setClipTimeline(newout - oldin, oldin, newout);\r
-               moveMovieAll(curTime);  \r
-               //$("#out-undo").html("<a href='#' onclick='javascript:clip.undoOut("+milli_outs[curClip-1]+")'><img src='images/bullet_delete.png' alt='cancel out-time' title='cancel out-time' /></a>");\r
-       }\r
-}\r
-\r
-/****** making/updating and saving clips **/\r
-\r
-movie.saveClip = function() {\r
-       var caption_text = $("#caption-text").val();\r
-       var clipnum = 0;\r
-               \r
-       // button should be disabled but double check that at least one time has changed, or caption text has changed\r
-       //if (temp_in || temp_out) {   \r
-               resetClipWork();\r
-               \r
-               if (!temp_in) {\r
-                       temp_in = $("#in-time").text();\r
-               }\r
-               if (!temp_out) {\r
-                       temp_out = $("#out-time").text();\r
-               }               \r
-               \r
-               this_location.inTime = temp_in;\r
-               this_location.outTime = temp_out;\r
-               this_location.inTimeMilli = getMilliseconds(temp_in);\r
-               this_location.outTimeMilli = getMilliseconds(temp_out);\r
-               \r
-               this_location.durationMilli = this_location.outTimeMilli - this_location.inTimeMilli;\r
-               this_location.duration = getFormattedTime2(this_location.durationMilli);\r
-               this_location.caption_text = caption_text;\r
-               \r
-               if($("#makeclip").val() == "Make Clip") { \r
-                       num_clips++;\r
-                       \r
-                       if (num_clips > 0) {\r
-                               //add to clips list\r
-                               clips[num_clips-1] = this_location;\r
-                               \r
-                               //sort clips by inTimeMilli\r
-                               clips.sort(function (a,b) { return a.inTimeMilli-b.inTimeMilli});\r
-                               \r
-                       } else {\r
-                               clips = new Array(); //clips\r
-                               clips[0] = this_location;\r
-                               \r
-                               new_flag = 0;\r
-                       }\r
-               } else {\r
-                       clips[curClip-1] = this_location;\r
-               }\r
-                                                                                       \r
-               //loadClips();\r
-               \r
-               var move_to = getMilliseconds(temp_out) + 1;\r
-                if (move_to < (dur - MIN_CLIP_DUR) ) {\r
-                        setTimeout("moveMovieAll("+move_to+")", 500);  \r
-                } else {\r
-                        setTimeout("moveMovie(curTime)", 500);                                          \r
-                }                              \r
-\r
-               \r
-               temp_in = '';\r
-               temp_out = '';\r
-               \r
-               saveJson();\r
-       //}\r
-}\r
-\r
-function deleteClip(clipnum) {\r
-       num_clips--;\r
-       clips.splice(clipnum-1, 1);\r
-       saveJson();     \r
-}\r
-\r
-function saveJson() {\r
-       //save file\r
-       json = JSON.stringify(proj);\r
-       \r
-       $.post("include/workflow.php", { task: 'save_json', json:json, pid:proj.id }, function(data) {\r
-               if (!data) { \r
-                       loadClips();\r
-               } else {\r
-                       alert(data);\r
-               }\r
-               \r
-       } );\r
-       \r
-       var d = new Date();\r
-\r
-       var curr_hour = d.getHours();\r
-       var curr_min = d.getMinutes();\r
-       \r
-       $("#last-saved").text('Last saved at '+curr_hour + ":" + ((curr_min < 10) ? "0" : "") + curr_min);\r
-}\r
-\r
-/****************reset UI */\r
-\r
-function resetClipWork() {\r
-       $("#in").css("color","black");  \r
-       $("#out").css("color","black"); \r
-       $("#in-time").css("color","black");\r
-       $("#out-time").css("color","black");                    \r
-       $("#clip-duration").css("color","black");       \r
-       temp_in = 0;\r
-       temp_out = 0;\r
-       temp_caps = ''; \r
-       \r
-       extend = false;\r
-       $("#makeclip").attr("disabled","disabled");\r
-       $("#in-undo").html("");\r
-       $("#out-undo").html("");\r
-\r
-}\r
-\r
-\r