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 dir = new Array();

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;
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;
dir[objname] = "up";
startslide(objname);
}

function startslide(objname){
  obj[objname] = document.getElementById(objname);
 
  obj[objname].style.display = "block";
  endHeight[objname] = parseInt(obj[objname].offsetHeight);
  obj[objname].style.display = "none";
  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"){
d = endHeight[objname] - d;
f = 1 - f;}

obj[objname].style.height = d + "px";
obj[objname].style.opacity = f;
obj[objname].style.filter = 'alpha(opacity='+(f*100)+')';


}

return;
}

function endSlide(objname){
clearInterval(timerID[objname]);

if(dir[objname] == "up"){
obj[objname].style.display = "none";
obj[objname].style.opacity = 0;
obj[objname].style.filter = 'alpha(opacity='+(0)+')';
}
else{
obj[objname].style.opacity = 1;
obj[objname].style.filter = '';
}

obj[objname].style.height = endHeight[objname] + "px";

delete(moving[objname]);
delete(timerID[objname]);
delete(startTime[objname]);
delete(endHeight[objname]);
delete(obj[objname]);
delete(dir[objname]);

return;
}


// JavaScript Document
function toggleSub(content,icon) {
    if (document.getElementById(content).style.display == 'none') {
        slidedown(content)
		document.getElementById(icon).innerHTML='-'
    } else {
        slideup(content)
		document.getElementById(icon).innerHTML='+'
		
    }
}

function toggleSub2(content,icon) {
    if (document.getElementById(content).style.display == 'none') {
        slidedown(content)
		document.getElementById(icon).innerHTML='- Close'
    } else {
        slideup(content)
		document.getElementById(icon).innerHTML='+ Open'
		
    }
}
