// predesigned effects

function getEffect(theName)
{
	switch (theName)
	{
	case 'setOpacity':
		theEffectString = 'setOpacity(document.getElementById(this.id), this.count)';
		break;
	case 'setInnerHTML':
		theEffectString = 'document.getElementById(this.id).innerHTML = \'Opacity=\'+this.count;';
		break;
	case 'setLeft':
		theEffectString = 'document.getElementById(this.id).style.left=this.count;';
		break;
	case 'setTop':
		theEffectString = 'document.getElementById(this.id).style.top=this.count;';
		break;
	default:
		break;
	}
	return theEffectString;
}

// bind event to object without overriding 'this'
function bindEventListener(obj, method) {
  return function(event) { method.call(obj, event || window.event)};
}

function Counter(id, start, finish, timeval, stepsize, callcode, lastcode) {
   this.timeval = timeval;//25;
   this.stepsize = stepsize;
   this.count = this.start = start;
   this.finish = finish;
   this.callcode = callcode;
   this.id = id;
   this.countDown = function() {
      this.count+=this.stepsize;
      if (
	  (this.stepsize>0 && this.count >= this.finish) || 
	  (this.stepsize<0 && this.count <= this.finish)
	  ) {
	    eval(callcode.replace('this.count', 'this.finish'));
		eval(lastcode);
         this.countDown=null;
         return;
      }
	  eval(callcode);
      setTimeout(bindEventListener(this,this.countDown),this.timeval);
   }
}

function setOpacity(obj,val) {
  obj.style.opacity = (val/100);
  obj.style.MozOpacity=(val/100);
  obj.style.KhtmlOpacity=(val/100);
  obj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+val+")";
}

function setupTimer(id, start, finish, timeval, stepsize, callcode, lastcode)
{
//   alert(id+', '+start+', '+finish+', '+timeval+', '+stepsize+', '+callcode+', '+lastcode);
   ctrObj = new Counter(id, start, finish, timeval, stepsize, callcode, lastcode);
   ctrObj.countDown();
   return ctrObj;
}


