/* QT services useful to control clips: qtservices.js
 * Requires document form named qtcontrol
 * Requires movie named movie1
 * Requires a body onload tag: onload="prepareGrabber(); clipLength()"
 * Options provided:
 * - running timecode information to form field named: currtime
 * - cliplength to form field totaltime
 * - set bookmark and go to bookmark
 * CCNMTL, Columbia University: Last update March 30, 2006 Matiz
 */


var tctime, vidmark;
	vidmarkset = 0;
	checklen = 0;

	 function grabTime() {
		iotime = theMovie.GetTime();
		tctime = new setTC(iotime);
		if (vidmarkset == 1) {
	  	vidmark = iotime; vidmarkset= 0;
	    }	    
		if (tctime.sec < 10) tctime.sec="0"+tctime.sec;		
		if (tctime.min < 10) tctime.min="0"+tctime.min;

		document.qtcontrol.currtime.value = tctime.hr + ":" + tctime.min + ":" + tctime.sec;		
		setTimeout("grabTime()", 500);
	}
	
	function setTC(iotime) { 
	 var tc = new Object();
	 tc.hr= 0;
	 tc.min=0;
	 tc.sec=0;
	 movscale = qtObj.GetTimeScale();
	 iotime = Math.round(iotime/movscale);
	 tc.sec = iotime % 60;
	 iotime = iotime - tc.sec;
	 if (iotime >= 3600) {
	   tc.min = iotime % 3600;
	   iotime = iotime - tc.min;
	   tc.hr = iotime/3600;
	   }
	   else {
	   tc.min = iotime/60; 
	   }
	   return tc;
	 }

	function clipLength() {
		qtObj = document.movie1
		if (checklen == 0) {
			try { qtObj.GetDuration();
				movlen = qtObj.GetDuration();
				movscale = qtObj.GetTimeScale();
				tttime = new setTC(movlen);
				if (tttime.sec < 10) tttime.sec="0"+tttime.sec;	
				if (tttime.min < 10) tttime.min="0"+tttime.min;
				document.qtcontrol.totaltime.value = tttime.hr + ":" + tttime.min + ":" + tttime.sec;
				checklen = 1;
			} catch(err) {
				setTimeout("clipLength()", 500);
				}
			}
		}
	
	function setVidMark(){	
	 	vidmarkset = 1;	
		}


	function goVidMark(){
	//alert("govid");
	document.movie1.Stop();
	document.movie1.SetTime(vidmark);
	document.movie1.Play();
	}
	
	function prepareGrabber() {
		theMovie = document.movie1;
		if (theMovie != null) {
			try {
				theMovie.GetTime();
				// if we get past it, it worked and it's ready.
				grabTime();
			} catch(err) {
				setTimeout("prepareGrabber()", 1000);
			}		
		} else {
			setTimeout("prepareGrabber()", 1000);
		}	
		}
		
