// Arc4 Button Handlers
down=false;
tpd=0; //time pressed down
ftpd=0; //fake time pressed down for fixing the IE problem
dpd=0; //duration pressed down
tr=0; //time of release
dr=0; //duration released
tcavg=200; //total for click average
ncavg=1; //number for click average
avg2=400; //2*click average
presstmr=0; //for timimg click vs press
cks=1; //clicks this set
doavg=true; //false suppress average time calcs
doavg=false; // test of fixed time for everything cf also
ie=false;

function t() { //get time in milliseconds
  now=new Date();
  return now.getTime();
}
function d(){ //mouse or key down
  window.clearTimeout(presstmr); //prevent possible double timers!
  if (down) return; //ignore key autorepeat
  down=true;
  tpd=t(); //note time pressed
  dr=tpd-tr; //calculate duration of last release
  if ((dr<avg2) || ie) cks+=1; else cks=1; //click series?
  // document.form1.count1.value=cks;
  presstmr=window.setTimeout("cpq()",avg2); //start press timer
  uclick(); //activate application any click event
}
function cpq() { //press timeout
  presstmr=0; //indicate timer no longer running
  if (down) p(); //if button still down this is a press
}
function u(){  //button releaased
  if (!down) {//fix IE double click problem
    ie=true;
    d(); 
  }
  ie=false;
  window.clearTimeout(presstmr) //clear press timer
  tr=t(); //save time of release
  dpd=tr-tpd; //calcuate duration last down
  if (dpd<avg2 && doavg) { //if a click, update average click time * 2
   tcavg+=dpd;
   ncavg+=1;
   avg2=2*tcavg/ncavg;
   // document.form1.avg1.value=avg2/2;
  } 
  doavg=true;
  doavg=false; //trial of fixed timing for everything
  if ((dpd < 25) && (dr > (avg2 + dpd))) {p(); } else
    if (presstmr) notp(); //if timer was still running then indicate click
  down=false; //indicate up
  brel(); //activate application release event
}