﻿var timerlen = 25;
var slideAniLen = 500;

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(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);
    // var test = getHeight(obj[objname]);

    //endHeight[objname] = parseInt(obj[objname].style.height);
    obj[objname].style.display = "block";
    var height = document.getElementById(objname).offsetHeight;
  //  obj[objname].style.visibility = "hidden";
    endHeight[objname] = height;

    startTime[objname] = (new Date()).getTime();

    if (dir[objname] == "down") {
        obj[objname].style.height = "1px";
    }

    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";
    }

    return;
}

function endSlide(objname) {
    clearInterval(timerID[objname]);
    
    if (dir[objname] == "up") {
        obj[objname].style.display = "none";
    }
    else {
     //   fade(objname);
       // obj[objname].style.visibility = "visible";
    }

    //obj[objname].style.height = endHeight[objname] + "px";
    obj[objname].style.height = "";

    delete (moving[objname]);
    delete (timerID[objname]);
    delete (startTime[objname]);
    delete (endHeight[objname]);
    delete (obj[objname]);
    delete (dir[objname]);

    return;
}


function toggleSlide(objname) {
    document.getElementById(objname).style.overflow = "hidden";
    if (document.getElementById(objname).style.display == "none") {
        // div is hidden, so let's slide down
        slidedown(objname);
    } else {
        // div is not hidden, so slide up
        slideup(objname);
    }
}





//var TimeToFade = 500;

//function fade(eid) {
//    var element = document.getElementById(eid);
//    if (element == null)
//        return;

//    if (element.FadeState == null) {
//        if (element.style.opacity == null
//        || element.style.opacity == ''
//        || element.style.opacity == '1') {
//            element.FadeState = 2;
//        }
//        else {
//            element.FadeState = -2;
//        }
//    }
//    element.FadeState = -2;
//    element.style.opacity = element.FadeState == 1 ? '1' : '0';
//    element.style.filter = 'alpha(opacity = '
//        + (element.FadeState == 1 ? '100' : '0') + ')';
//    if (element.FadeState == 1 || element.FadeState == -1) {
//        element.FadeState = element.FadeState == 1 ? -1 : 1;
//        element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
//    }
//    else {
//        
//        element.FadeState = element.FadeState == 2 ? -1 : 1;
//        element.FadeTimeLeft = TimeToFade;
//        setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 33);
//    }
//}

//function animateFade(lastTick, eid) {
//    var curTick = new Date().getTime();
//    var elapsedTicks = curTick - lastTick;

//    var element = document.getElementById(eid);

//    if (element.FadeTimeLeft <= elapsedTicks) {
//        element.style.opacity = element.FadeState == 1 ? '1' : '0';
//        element.style.filter = 'alpha(opacity = '
//        + (element.FadeState == 1 ? '100' : '0') + ')';
//        element.FadeState = element.FadeState == 1 ? 2 : -2;
//        element.style.opacity = element.FadeState == 1 ? '1' : '0';
//        element.style.filter = '';
//        return;
//    }

//    element.FadeTimeLeft -= elapsedTicks;
//    var newOpVal = element.FadeTimeLeft / TimeToFade;
//    if (element.FadeState == 1)
//        newOpVal = 1 - newOpVal;

//    element.style.opacity = newOpVal;
//    element.style.filter = 'alpha(opacity = ' + (newOpVal * 100) + ')';

//    setTimeout("animateFade(" + curTick + ",'" + eid + "')", 33);
//}
