var timerlen = 5;
var slideAniLen = 250;

var timerID = new Array();
var timerAH = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();
var starttop = 0;
var inith = 0;

function slidedown(objname){
        if(moving[objname])
            return;
        
        if (document.getElementById(objname).style.visibility != "hidden")
            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.visibility == "hidden")
                return; // cannot slide up something that is already hidden

        moving[objname] = true;
        dir[objname] = "up";
        startslide(objname);
}

function startslide(objname) {
    if (starttop == 0)
        starttop = findPosY(document.getElementById('langbox'));

    obj[objname] = document.getElementById(objname);

    if (inith == 0)
        inith = obj[objname].offsetHeight;

    obj[objname].style.top = starttop - inith;

    endHeight[objname] = inith;
    startTime[objname] = (new Date()).getTime();

    if(dir[objname] == "down"){
            obj[objname].style.height = "1px";
    }

    clearInterval(timerAH[objname]);
    timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}

function autoHide(objname) {
    clearInterval(timerAH[objname]);

    slideup(objname);

    return;
}

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";
            var nv = (starttop - d);
            obj[objname].style.top = nv + "px";
            if (d < 15 && dir[objname] == "up")
                obj[objname].style.visibility = "hidden";
            if (d > 10 && dir[objname] == "down")
                obj[objname].style.visibility = "visible";       
        }

        return;
}


function endSlide(objname){
        clearInterval(timerID[objname]);

        if (dir[objname] == "up") {
            obj[objname].style.visibility = "hidden";
            document.getElementById('lgsw').src = "images/langbox/langswitch.png";
        }
        else {
            timerAH[objname] = setInterval('autoHide(\'' + objname + '\');', 8000);
        }

        obj[objname].style.height = endHeight[objname] + "px";
        obj[objname].style.top = starttop - inith;

        delete(moving[objname]);
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(endHeight[objname]);
        delete(obj[objname]);
        delete(dir[objname]);

        return;
    }

    function findPosY(obj) {
        var curtop = 0;
        if (obj.offsetParent)
            while (1) {
            curtop += obj.offsetTop;
            if (!obj.offsetParent)
                break;
            obj = obj.offsetParent;
        }
        else if (obj.y)
            curtop += obj.y;
        return curtop;
    }

    function findPosX(obj) {
        var curleft = 0;
        if (obj.offsetParent)
            while (1) {
                curleft += obj.offsetLeft;
            if (!obj.offsetParent)
                break;
            obj = obj.offsetParent;
        }
        else if (obj.x)
            curleft += obj.x;
        return curleft;
    }