
/* Javascript - animator_once.js

Originally based on the Ulven script. Modified February 2008 by P.G. van de Veen. Abreviated in August 2008 by LFS.

animator_once.js = function toggle() does a single animation from t0=0 to t0=1.

Definitions/description of the functions: 
1.	  toggle()    Starts and Stops Animation.   button: <input type="button" value="Start/Stop"  onclick="toggle();"> 
2.    Startover() Stops counter and send t0=0.0 to the .ggb    button: <input type="button" value="Reset"  onclick="Startover();">

** The Restriction Javascript of Mathmagic was added on 28 March 2008

Increase value of Delay = Slower animation (Delay=20 means 100 animations takes 3 seconds)
Decrease value of Step = More animation steps (Step=0.01 means 100 animations)
*/

//Globals
	Ttimer=null; T=0; tt=1; Trunning=false; Mrunning=false;
	Delay=20; Step=0.001; 

// window.onload=Activation

//-----------------
function toggle() {
//----------------- Called by Start/Stop button
	var applet=document.Animated;
	T=applet.getValue("t0");
	if(Trunning){
		     Trunning=false;
		     setTimeout("clearInterval(Ttimer)",0);			//Stop Timer in 0 ms, that is now
		    }else{
		     Trunning=true;
		     Ttimer=setInterval("Singlestep()",Delay);		//Timer calls onestep() every delay ms
	}//if
}//toggle()

//---------------------
function Singlestep() {
//--------------------- Animates one step. Not directly called by HTML
	var applet=document.Animated;
	if(T<1.0) {
 		     T=T+Step;
		     applet.evalCommand("t0="+T);						
		    }else{
		    // T=0.0;	
	}//if
}//Singlestep()

//----------------
function Startover() {															
//----------------  Called by Reset button
	var applet=document.Animated;
	setTimeout("clearInterval(Ttimer)",0);			//Stop Timer immediately
	Trunning=false;	T=0;
	applet.evalCommand("t0=0");
	applet.refreshViews();
	setTimeout("applet.evalCommand('t0=0')",300);
}//Startover()

//------------------
function speedup() {								
//------------------  Called by + button					
	var applet=document.Animated; Step=2.0*Step;
}//speedup()

//------------------
function speeddn() {	
//------------------  Called by - button
	var applet=document.Animated; Step=Step/2.0;
}//speeddn()

function forward1() {
//------------------  Called by > button
	var applet=document.Animated;
	T=applet.getValue("t0");
	if(Trunning){                                       //if running stops animation
	   Trunning=false;
	   setTimeout("clearInterval(Ttimer)",0);			//Stop Timer in 0 ms, that is now
	}
	if(T<1.0) {                                         //if not at end goes 1 Step forward
 	  T=T+Step;
	  applet.evalCommand("t0="+T);		                                
	}
}//forward1()

function back1() {
//------------------  Called by < button
	var applet=document.Animated;
	T=applet.getValue("t0");
	if(Trunning){                                         //if running stops animation
	   Trunning=false;
	   setTimeout("clearInterval(Ttimer)",0);			  //Stop Timer in 0 ms, that is now
	}
	if(T>=Step) {                                         //if not at start goes 1 Step backward
 	  T=T-Step;
	  applet.evalCommand("t0="+T);		                                
	}
}//back1()

//----------------
function Manual() {															
//----------------  Called by Manual button
	var applet=document.Animated;
	setTimeout("clearInterval(Ttimer)",0);			//Stop Timer immediately
	Trunning=false;	T=0;
	applet.evalCommand("t0=0");
	if(Mrunning) {
		Mrunning=false;
		applet.evalCommand("manual=false");
	} else{
		Mrunning=true;
		applet.evalCommand("manual=true");
	}
	applet.refreshViews();
}//Manual()


function setScalar(objName, x) {
  var applet=document.Animated;
  // build string like "num = 3" from input parameters
  // and let the applet evaluate this string
  applet.evalCommand(objName + " = " + x );
}

function setGraphics() {
  var applet=document.Animated;
  // gets xmin,xmax,ymin,ymax and sets graphics view
  var xmin=applet.getValue("xmin"); var xmax=applet.getValue("xmax");
  var ymin=applet.getValue("ymin"); var ymax=applet.getValue("ymax");
  applet.setCoordSystem(xmin,xmax,ymin,ymax);
  Startover();
  }
