var timerLength = 5; //length of timer
var slideAnimationLength = 250; //how long animatino lasts
var timerID = new Array(); //create a timer array
var startTime = new Array();
var obj = new Array(); //the object array
var endHeight = new Array();
var moving = new Array();
var dir = new Array(); //direction
function slidedown(objname)
{
        if(moving[objname])
                return;//object is already moving

        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; //object is already moving

        if(document.getElementById(objname).style.display == "none")
                return; // cannot slide up something that is already hidden

        moving[objname] = true;
        dir[objname] = "up";
        startslide(objname); //start sliding
}

function startslide(objname)
{
        obj[objname] = document.getElementById(objname); //the object called

        endHeight[objname] = parseInt(obj[objname].style.height); //the ending height
        startTime[objname] = (new Date()).getTime(); //time the animatino started at

        if(dir[objname] == "down") //if the direction is down
                obj[objname].style.height = "1px"; //change the height
        obj[objname].style.display = "block"; //make sure the display is not set to inline

        timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerLength);
}

function slidetick(objname){
        var elapsed = (new Date()).getTime() - startTime[objname];

        if (elapsed > slideAnimationLength)
                endSlide(objname) //the elasped time is greater than the set animation length so end the slide animatino
        else {
                var d =Math.round(elapsed / slideAnimationLength * endHeight[objname]);
                if(dir[objname] == "up")
                        d = endHeight[objname] - d;
                obj[objname].style.height = d + "px"; //set the div's height
        }

        return;
}

function endSlide(objname)
{
        clearInterval(timerID[objname]); //the slide is ended, so clear the timer

        if(dir[objname] == "up")
                obj[objname].style.display = "none"; //set the div display, it is hidden

        obj[objname].style.height = endHeight[objname] + "px";
        //get rid of everything else
        delete(moving[objname]);
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(endHeight[objname]);
        delete(obj[objname]);
        delete(dir[objname]);
        return;
}
function toggleSlide(objname)
{
  
  if(document.getElementById(objname).style.display == "none"){
    // div is hidden
    img = document.getElementById(objname + "Img");
    img.src = "../lib/img/divminup.png";
    slidedown(objname); //hide div
    }else{
    // div is not hidden, so slide up
    img = document.getElementById(objname + "Img");
    img.src = "../lib/img/divmin.png";
    slideup(objname);//show div
  }
}
