/* global functions, inherited by every html program */

var defaultStatus=
  "0,0,0,0,0,0;"+
  "0,0,0,0,0;"+
  "0,0,0,0,0;"+
  "0,0,0,0,0;"+
  "0,0,0,0,0;"+
  "0,0,0,0,0;"+
  "0,0,0,0,0;"+
  "0,0,0,0,0,0,0,0,0;"+
  "0,0,0,0;"+
  "0,0,0,0,0,0;"

function setSlopeValues(slopeApplet, slope, yintercept) {
  slopeApplet.setSlope( slope );
  slopeApplet.setYIntercept( yintercept );
}

// handle Mac/IE problems with relative urls
function goTo(module,url,target){
  // alert("module="+module);
  if (is_opera || (is_mac && is_ie) )
    top.window.open(module+"/"+url,target);
  else
   	top.window.open(url,target)
}

/* set ";domain=;path=/;" for CD or standalone version */
function setCookie (name, value) {
  var str;
  if (value != null)
    str = name + "=" + escape(value);
  var now = new Date()
  var nowplus1 = now.getTime() + (52*7*24*60*60*1000)
  now.setTime(nowplus1)

  str += top.cookieString;

  str += ";expires="+now.toGMTString();
  /*
  str += ";domain=;path=/;expires="+ now.toGMTString();
  */
  document.cookie = str+";";
}

function getCookie(name) {
  var cookie = " " + document.cookie;
  var search = " " + name + "=";
  var setStr = null;
  var offset = 0;
  var end = 0;
  if (cookie.length > 0) {
    offset = cookie.indexOf(search);
    if (offset != -1) {
      offset += search.length;
      end = cookie.indexOf(";", offset)
      if (end == -1) {
        end = cookie.length;
      }
      setStr = unescape(cookie.substring(offset, end));
    }
  }
  return(setStr);
}

function cookiesEnabled() {
    var str1="test";
    setCookie("cookie",str1);
    var str2 = getCookie("cookie");
    if ( str1 == str2 )
	return true
    else
	return false
}

function getTiming(userid, modnum, actnum) {
     var timing = getCookie(userid+"-timing")
     if ( timing == null ){ // timing array for each module
	   alert("timing array is null!");
	 } else {
       arrg = timing.split(";") // global timing array
	   var arr = new Array(10); // enough for 10 activities
	   arr[0] = arrg[0].split(",");
	   arr[1] = arrg[1].split(",");
	   arr[2] = arrg[2].split(",");
	   arr[3] = arrg[3].split(",");
       arr[4] = arrg[4].split(",");
       arr[5] = arrg[5].split(",");
       arr[6] = arrg[6].split(",");
       arr[7] = arrg[7].split(",");
       arr[8] = arrg[8].split(",");
       arr[9] = arrg[9].split(",");
	 }
     return arr[modnum][actnum];
}

function resetTiming(userid){
  if (top.enableTiming){
    alert("timing array reset!");
    setCookie(userid + "-timing",defaultStatus);
	setTiming(userid,1,1,0);
  } else {
	alert("timing not enabled!");
  }
}

function setTiming(userid, modnum, actnum, time) {
  if (top.enableTiming){
	 var arrg = new Array(10); // enough for 10 modules
	 var arr = new Array(10); // enough for 10 activities
     var timing = getCookie(userid+"-timing")
     if ( timing == null ){ // timing array for each module
      setCookie(userid + "-timing",defaultStatus);
       arrg = defaultStatus.split(";") // global timing array
	   arr[0] = arrg[0].split(",");
	   arr[1] = arrg[1].split(",");
	   arr[2] = arrg[2].split(",");
	   arr[3] = arrg[3].split(",");
       arr[4] = arrg[4].split(",");
       arr[5] = arrg[5].split(",");
       arr[6] = arrg[6].split(",");
       arr[7] = arrg[7].split(",");
       arr[8] = arrg[8].split(",");
       arr[9] = arrg[9].split(",");
     } else {
       arrg = timing.split(";") // global timing array
	   arr[0] = arrg[0].split(",");
	   arr[1] = arrg[1].split(",");
	   arr[2] = arrg[2].split(",");
	   arr[3] = arrg[3].split(",");
       arr[4] = arrg[4].split(",");
       arr[5] = arrg[5].split(",");
       arr[6] = arrg[6].split(",");
       arr[7] = arrg[7].split(",");
       arr[8] = arrg[8].split(",");
       arr[9] = arrg[9].split(",");
     }
     arr[modnum][actnum] = time;
     var s = ""
	 for (j=0; j<10; j++){
       for (i=0; i<arr[j].length; i++){
		 if (i < arr[j].length - 1)
           s += arr[j][i] + ","
		 else
           s += arr[j][i]
	   }
	   s += ";"
	 }
     setCookie(userid + "-timing",s)
  }
}

var tout, userid;
var val1, val2;
var module, activity;

function init(mod,act) {
  module = mod-1;    // zero offset array!
  activity = act-1;  // zero offset array!
  if (top.enableTiming){
    userid = getCookie("userid");
    var timing = getCookie(userid+"-timing");
    if ( timing == null )
      resetTiming(userid);
    else
      val1 = getTiming(userid,module,activity);
    val2 = parseInt(val1);
	if (isNaN(val2))  // check for garbage in!
		val2 = 0;
    tout = setTimeout('updateTime()',3000)
  }
}

var firstTime=true;
var TIMEOUT=10*60;  /* ten minutes */

function updateTime() {
  if ( (val2-val1) > TIMEOUT ) {
	if (firstTime) {
	  alert("Just checking to see if you're there!\n"+
		"Please continue working...");
	  firstTime=false;
	}
    clearTimeout( tout )
    tout = setTimeout('updateTime()',TIMEOUT*1000)
  } else {
    clearTimeout( tout )
    val2 += 3
    setTiming(userid, module, activity, val2) ;
    tout = setTimeout('updateTime()',3000)
  }
}
