﻿var TimerLen = 2;
var SlidTime = 300;

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 SlidDown(objectName) {
    if (Moving[objectName])
        return;

    if (document.getElementById(objectName).style.display != "none")
        return;

    Moving[objectName] = true;
    Dir[objectName] = "down";
    StartSlid(objectName);
}

function SlidUp(objectName) {
    if (Moving[objectName])
        return;

    if (document.getElementById(objectName).style.display == "none")
        return;

    Moving[objectName] = true;
    Dir[objectName] = "up";
    StartSlid(objectName);
}

function StartSlid(objectName) {
    Obj[objectName] = document.getElementById(objectName);
    EndHeight[objectName] = parseInt(Obj[objectName].style.height);
    StartTime[objectName] = (new Date()).getTime();

    if (Dir[objectName] == "down") {
        Obj[objectName].style.height = "1px";
    }

    Obj[objectName].style.display = "block";

    TimerID[objectName] = setInterval("SlidTick('" + objectName + "')", TimerLen);
}

function SlidTick(objectName) {
    var elapsed = (new Date()).getTime() - StartTime[objectName];

    if (elapsed > SlidTime)
        EndSlid(objectName);
    else {
        var d = Math.round(elapsed / SlidTime * EndHeight[objectName]);

        if (Dir[objectName] == "up")
            d = EndHeight[objectName] - d;

        Obj[objectName].style.height = d + "px";
    }
    return;
}

function EndSlid(objectName) {
    clearInterval(TimerID[objectName]);

    if (Dir[objectName] == "up")
        Obj[objectName].style.display = "none";

    Obj[objectName].style.height = EndHeight[objectName] + "px";

    delete (Moving[objectName]);
    delete (TimerID[objectName]);
    delete (StartTime[objectName]);
    delete (EndHeight[objectName]);
    delete (Obj[objectName]);
    delete (Dir[objectName]);
}
