var timerlen = 5;
var slideAniLen = 250;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var fader = new Array();
var dir = new Array();

function expandall() {

   var divs = document.getElementsByTagName('div');


   for (i=0;i<divs.length;i++) {


     objname = divs[i].id;

     if (objname.substring(0,1)=='x') {
         
           if(document.getElementById(objname).style.display == "none") {
      
              slidedown(objname);
	   }
     }

   }

}

function collapseall() {

   var divs = document.getElementsByTagName('div');


   for (i=0;i<divs.length;i++) {


     objname = divs[i].id;

     if (objname.substring(0,1)=='x') {
         
           if(document.getElementById(objname).style.display != "none") {
      
              slideup(objname);
	   }
     }

   }

}

function toggle(objname) {

   if(document.getElementById(objname).style.display == "none") {
 	slidedown(objname);
   } else {
        slideup(objname);
   }
}




function slidedown(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display != "none")
                return; // cannot slide down something that is already visible

        moving[objname] = true;
        fader[objname] = 0;
        dir[objname] = "down";
        startslide(objname);
}

function slideup(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display == "none")
                return; // cannot slide up something that is already hidden

        moving[objname] = true;
        fader[objname] = 100;
        dir[objname] = "up";
        startslide(objname);
}

function startslide(objname){
        obj[objname] = document.getElementById(objname);

        endHeight[objname] = parseInt(obj[objname].style.height);
        startTime[objname] = (new Date()).getTime();

        if(dir[objname] == "down"){
                obj[objname].style.height = "1px";
        }

        obj[objname].style.display = "block";

        timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}

function slidetick(objname){
        var elapsed = (new Date()).getTime() - startTime[objname];

        if (elapsed > slideAniLen)
                endSlide(objname)
        else {
                var d =Math.round(elapsed / slideAniLen * endHeight[objname]);
		var f =(elapsed / slideAniLen);

                if(dir[objname] == "up")
		{
			fader[objname] = 1-f;
			if (fader[objname] < 0)
				fader[objname]=0;
 
                        d = endHeight[objname] - d;

		} else {
			fader[objname] = f; 
			if (fader[objname] > 1)
				fader[objname]=1;
		}
                obj[objname].style.height = d + "px";

		setFade(objname, fader[objname]);

        }

        return;
}

function endSlide(objname){
        clearInterval(timerID[objname]);

        if(dir[objname] == "up") {
                obj[objname].style.display = "none";
//		setFade(objname,0);	
	} else {
//	        setFade(objname,1);
	}
        obj[objname].style.height = endHeight[objname] + "px";

        delete(moving[objname]);
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(endHeight[objname]);
        delete(obj[objname]);
	delete(fader[objname]);
        delete(dir[objname]);

        return;
}

function setFade(objname, f){
  var oe = document.getElementById(objname);
  oe.setAttribute("style", "opacity:" + f);
  if (oe.style.setAttribute) 
     oe.style.setAttribute("filter", "alpha(opacity=" + f *100 + ");");


}

function pausecomp(millis) 
{
var date = new Date();
var curDate = null;

do { curDate = new Date(); } 
while(curDate-date < millis);
} 

