var gSliderObject = null;

function toggleSlide(sliderContent)
{
    if (null == gSliderObject) {
        gSliderObject = new Slider(sliderContent);
    }

    gSliderObject.toggleSlide();

    return false;
}

function Slider(sliderContent)
{
    var mSliderContent              = document.getElementById(sliderContent);
    var mTargetHeightStyle          = mSliderContent.style.height;
    var mTargetHeight               = 0;
    var mCurrentSlideDirectionOpen  = false;
    var mSlidingSpeed               = 10;
    var mCurrentHeight              = 0;

    // Object creation: Slider must be closed
    mSliderContent.style.overflow   = "hidden";
    mSliderContent.style.height     = "0px";

    this.toggleSlide = function() {
        mCurrentSlideDirectionOpen = !mCurrentSlideDirectionOpen;

        if (mCurrentSlideDirectionOpen) {
            mSliderContent.style.display = "block";

            var currentHeightStyle = mSliderContent.style.height;

            mSliderContent.style.height = mTargetHeightStyle;
            mTargetHeight = mSliderContent.offsetHeight;

            mSliderContent.style.height = currentHeightStyle;
        }

        mCurrentHeight = mSliderContent.offsetHeight;

        this.doSlide();
    }

    this.doSlide = function() {

        if (mCurrentSlideDirectionOpen) {
            if(mSliderContent.offsetHeight < mTargetHeight) {
                var x = mTargetHeight - mCurrentHeight;
                x = x/8;
                if (x < 2) {
                    mCurrentHeight = mCurrentHeight + 1;
                } else {
                    mCurrentHeight = mCurrentHeight + x;
                }

                mSliderContent.style.height = "" + mCurrentHeight + "px";

                setTimeout("gSliderObject.doSlide()", mSlidingSpeed);
            } else {
                this.restoreHeight("block");
            }
        } else {
            if(mSliderContent.offsetHeight > 0 && mCurrentHeight > 0) {
                var x = mCurrentHeight / 8;

                if (x < 2) {
                    mCurrentHeight = mCurrentHeight - 1;
                } else {
                    mCurrentHeight = mCurrentHeight - x;
                }
                mSliderContent.style.height = "" + mCurrentHeight + "px";

                setTimeout("gSliderObject.doSlide()", mSlidingSpeed);
            } else {
                this.restoreHeight("none");
                gSliderObject = null;
            }
        }
    }

    this.restoreHeight = function(displayType) {
        mSliderContent.style.display = displayType;

        if (null != mTargetHeightStyle && "" != mTargetHeightStyle) {
            mSliderContent.style.height = mTargetHeightStyle;
        } else {
            mSliderContent.style.height = "auto";
        }
    }

    return false;
}
