var timerlen = 5;
var slideAniLen = 250;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var startPos = new Array();
var moving = new Array();
var dir = new Array();


function move(objname,direction)
{
    var d;
    if( direction == "right" )
        d = 10;
    else if ( direction == "left" )
        d = -10;
    var obj = document.getElementById(objname);
    var currentLeftMarg = parseInt(obj.style.left);
    obj.style.left = currentLeftMarg + d + "px";

}

function slideright(objname) 
{

    if (moving[objname]) return;
    var slideright = objname.replace(/mydiv/, "slideright");
    if(document.getElementById(slideright).className == "nfSliderRight-disable")
        return; // cannot slide something that isn't visable

    
    moving[objname] = true;
    dir[objname] = "right";
    startslide(objname);
    
    

}
function slideleft(objname)
{
    if (moving[objname]) return;
    var slideleft = objname.replace(/mydiv/, "slideleft");
    if (document.getElementById(slideleft).className == "nfSliderLeft-disable")
        return; // cannot slide something that isn't visable
        
        
    
    moving[objname] = true;
    dir[objname] = "left";
    startslide(objname);
    
   

}
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);

        endHeight[objname] = parseInt(obj[objname].style.height);
        startTime[objname] = (new Date()).getTime();
        startPos[objname] = parseInt(obj[objname].style.left);
        
        if ( dir[objname] == "right" )
             endHeight[objname] = startPos[objname] + 492;// parseInt( obj[objname].style.width );
        else if ( dir[objname] == "left" )
             endHeight[objname] = startPos[objname] - 492;// parseInt( obj[objname].style.width );
        
        

        if(dir[objname] == "down")
        {
                obj[objname].style.height = "1px";
        }
        if(dir[objname] == "down" || dir[objname] == "up" )
            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]);
            if(dir[objname] == "up")
            {
                    d = endHeight[objname] - d;
                    obj[objname].style.height = d + "px";
            }
            else 
            if(dir[objname] == "down")
                obj[objname].style.height = d + "px";
            else
            if (dir[objname] == "right")
            {
                d = Math.round( (elapsed / slideAniLen) * ( endHeight[objname] - startPos[objname]) + startPos[objname]);
                obj[objname].style.left = d + "px";
            }
            else
            if(dir[objname] == "left")
            {
                ///d = endHeight[objname] - d;
                d = Math.round( (elapsed / slideAniLen) * ( endHeight[objname] - startPos[objname]) + startPos[objname]);
                obj[objname].style.left = d + "px";
            }
        }

        return;
}

function endSlide(objname)
{
        clearInterval(timerID[objname]);

        if(dir[objname] == "up")
        {
                obj[objname].style.display = "none";
                obj[objname].style.height = endHeight[objname] + "px";
        }
        else
        if(dir[objname] == "down")
            obj[objname].style.height = endHeight[objname] + "px";
        else
        if(dir[objname] == "right")
        {
            obj[objname].style.left = endHeight[objname] + "px";
            var slideleft = obj[objname].id.replace(/mydiv/,"slideleft");
            var slideright = obj[objname].id.replace(/mydiv/,"slideright");
            if(obj[objname].style.left == "0px")
            {
                document.getElementById(slideright).className = "nfSliderRight-disable";
            }
            if (document.getElementById(slideleft).className == "nfSliderLeft-disable")
            {
                document.getElementById(slideleft).className = "nfSliderLeft";
           
            }
        
            
        }
        else
        if(dir[objname] == "left")
        {
            obj[objname].style.left =  endHeight[objname] + "px";
            var left = parseInt(obj[objname].style.left);
            var width = parseInt(obj[objname].style.width);
            var slideleft = obj[objname].id.replace(/mydiv/,"slideleft");
            var slideright = obj[objname].id.replace(/mydiv/,"slideright");
            if(width + left <= 508)
            {

                document.getElementById(slideleft).className = "nfSliderLeft-disable";
                
            }
            if (document.getElementById(slideright).className == "nfSliderRight-disable")
            {
                document.getElementById(slideright).className = "nfSliderRight";
           
            }
        
        }

        delete(moving[objname]);
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(endHeight[objname]);
        delete(obj[objname]);
        delete(dir[objname]);

        return;
}