var timerlen = 5;
var slideAniLen = 250;
var runCode = '';

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();

var divH = new Array();

function initslide(divs,open)
{
  var arr = divs.split(',');
  for (i=0;i<arr.length;i++)
  {
    var e = document.getElementById(arr[i]);
    
    divH[arr[i]] = e.offsetHeight;
    e.style.display = 'none';
  }
  if (open!='')
  {
    arr = open.split(',');
    for (i=0;i<arr.length;i++)
    {
     document.getElementById(arr[i]).style.display='';
    }
  }
}

function initslide2(divs)
{
  var arr = divs.split(',');
  for (i=0;i<arr.length;i++)
  {
    var e = document.getElementById(arr[i]);
    divH[arr[i]] = e.offsetHeight;
  }
}


function toggle(o)
{
  if(moving[o]==true) 
  {
    return;
  }
  if(document.getElementById(o).style.display != "none")
  {
    slideup(o);
  } else
  {
    slidedown(o);
  }
}

function slidedown(objname){
        if(moving[objname]==true)
                return;

        if(document.getElementById(objname).style.display != "none")
                return; // cannot slide down something that is already visible

        moving[objname] = true;
        dir[objname] = "down";
        startslide(objname);
}

function slideup(objname){
        if(moving[objname]==true)
                return;
        if(document.getElementById(objname).style.display == "none")
                return; // cannot slide up something that is already hidden
        moving[objname] = true;
        dir[objname] = "up";
        startslide(objname);
}

function startslide(objname)
{
  obj[objname] = document.getElementById(objname);
  obj[objname].style.overflow = 'hidden';

  endHeight[objname] = parseInt(divH[objname]);
  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]);
  if(dir[objname] == "up")
  d = endHeight[objname] - d;
  obj[objname].style.height = d + "px";
 }
 return;
}

function endSlide(objname)
{
  clearInterval(timerID[objname]);

  if(dir[objname] == "up")
          obj[objname].style.display = "none";

  //obj[objname].style.height = endHeight[objname] + "px";
  //obj[objname].style.height = "100%";
  //obj[objname].style.overflow = 'auto';
  obj[objname].style.overflow = '';
  obj[objname].style.height = '';

  delete(moving[objname]);
  delete(timerID[objname]);
  delete(startTime[objname]);
  delete(endHeight[objname]);
  delete(obj[objname]);
  delete(dir[objname]);

  if (runCode!='')
  {
   setTimeout('RunCode()',100);
  }

  return;
}

function RunCode()
{
  var s =runCode;
  runCode = '';
  eval(s);
}
