var timerlen = 5;
var slideAniLen = 1000;
var horizintalSlide = false;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeightWidth = new Array();
var moving = new Array();
var dir = new Array();
var endHeightWidthDynamic = new Array();

function slidedown(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display != "none")
                return;

        moving[objname] = true;
        dir[objname] = "down";
        startslide(objname);
}

function slideup(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display == "none")
                return;

        moving[objname] = true;
        dir[objname] = "up";
        startslide(objname);
}

function startslide(objname){
        obj[objname] = document.getElementById(objname);

        endHeightWidth[objname] = getDynamicHeightWidth(objname);
        startTime[objname] = (new Date()).getTime();

        if(dir[objname] == "down"){
    			horizintalSlide ? obj[objname].style.width="1px" : 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-1)
                endSlide(objname);
        else {
                var d =Math.round(elapsed / slideAniLen * endHeightWidth[objname]);
                var f =elapsed / slideAniLen;
                if(dir[objname] == "up")
                {
                        d = endHeightWidth[objname] - d;
                        f = 1 - f;
				}
				
                horizintalSlide ? obj[objname].style.width=d+"px" : 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 = "";
		}
		else
		{
				obj[objname].style.opacity = 1;
                obj[objname].style.filter = "";
		}

        horizintalSlide ? obj[objname].style.width=endHeightWidth[objname]+"px" : obj[objname].style.height=endHeightWidth[objname]+"px";

        delete(moving[objname]);
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(endHeightWidth[objname]);
        delete(obj[objname]);
        delete(dir[objname]);

        return;
}

function toggleSlide(objname,horizintal)
{
	horizintalSlide = horizintal;

	if(document.getElementById(objname).style.display == "block")
		slideup(objname);
	else
		slidedown(objname);
}

function getDynamicHeightWidth(objname)
{
	if(!endHeightWidthDynamic[objname])
		horizintalSlide ? endHeightWidthDynamic[objname]=document.getElementById(objname).scrollWidth : endHeightWidthDynamic[objname] = document.getElementById(objname).scrollHeight;

	return endHeightWidthDynamic[objname];
}