var timerlen = 5;
var slideAniLen = 125;

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(storeNavSlide){
        if(moving[storeNavSlide])
                return;

        if(document.getElementById(storeNavSlide).style.display != "none")
                return; // cannot slide down something that is already visible

        moving[storeNavSlide] = true;
        dir[storeNavSlide] = "down";
        startslide(storeNavSlide);
}

function slideup(storeNavSlide){
        if(moving[storeNavSlide])
                return;

        if(document.getElementById(storeNavSlide).style.display == "none")
                return; // cannot slide up something that is already hidden

        moving[storeNavSlide] = true;
        dir[storeNavSlide] = "up";
        startslide(storeNavSlide);
}

function startslide(storeNavSlide){
        obj[storeNavSlide] = document.getElementById(storeNavSlide);

        endHeight[storeNavSlide] = parseInt(obj[storeNavSlide].style.height);
        startTime[storeNavSlide] = (new Date()).getTime();

        if(dir[storeNavSlide] == "down"){
                obj[storeNavSlide].style.height = "1px";
        }

        obj[storeNavSlide].style.display = "block";

        timerID[storeNavSlide] = setInterval('slidetick(\'' + storeNavSlide + '\');',timerlen);
}

function slidetick(storeNavSlide){
        var elapsed = (new Date()).getTime() - startTime[storeNavSlide];

        if (elapsed > slideAniLen)
                endSlide(storeNavSlide)
        else {
                var d =Math.round(elapsed / slideAniLen * endHeight[storeNavSlide]);
                if(dir[storeNavSlide] == "up")
                        d = endHeight[storeNavSlide] - d;

                obj[storeNavSlide].style.height = d + "px";
        }

        return;
}

function endSlide(storeNavSlide){
        clearInterval(timerID[storeNavSlide]);

        if(dir[storeNavSlide] == "up")
                obj[storeNavSlide].style.display = "none";

        obj[storeNavSlide].style.height = endHeight[storeNavSlide] + "px";

        delete(moving[storeNavSlide]);
        delete(timerID[storeNavSlide]);
        delete(startTime[storeNavSlide]);
        delete(endHeight[storeNavSlide]);
        delete(obj[storeNavSlide]);
        delete(dir[storeNavSlide]);

        return;
}