function slider_init(tag, btn) {
    
    var initialTop = tag.offsetTop - tag.offsetHeight + tag.offsetParent.offsetHeight + btn.offsetHeight;
        
    tag.style.top = initialTop+"px";
    tag.style.visibility = 'visible';
    
    if (tag.slider == null) {
        slider_create(tag, btn);
    }
    
}

function slider_create(tag, btn) {
    
    var sliderHeight = tag.offsetHeight - btn.offsetHeight;
    var sliderTop = tag.offsetTop;

    tag.slider = {
        "top"      : parseInt(sliderTop),
        "height"   : parseInt(sliderHeight),
        "steps"    : 10,
        "interval" : 500,
        "counter"  : 0,
        "timer"    : "",
        "state"    : "up",
        "btn"      : btn
    }
    
}

function slider_move(tag) {
  
    if (tag.slider.timer != null) {
        window.clearInterval(tag.slider.timer);
    }

    if (tag.slider.state == "up") {
        tag.slider.timer = window.setInterval("slider_down(\""+tag.id+"\");", Math.round(tag.slider.interval / tag.slider.steps));
    }
    if (tag.slider.state == "down") {
        tag.slider.timer = window.setInterval("slider_up(\""+tag.id+"\");", Math.round(tag.slider.interval / tag.slider.steps));
    }
}

function slider_down(id) {

    var tag = document.getElementById(id);
    tag.slider.state = "down";

    if (tag.slider.counter >= tag.slider.steps) {
        window.clearInterval(tag.slider.timer);
        tag.slider.counter == tag.slider.steps;
        tag.slider.btn.className = "Button Expanded";
	      return;
    }

    var top = tag.slider.top + Math.round(Math.pow(Math.sin(Math.PI * tag.slider.counter / tag.slider.steps / 2), 0.5) * tag.slider.height);
    tag.style.top = top+"px";

    tag.slider.counter++;
}

function slider_up(id) {

    var tag = document.getElementById(id);
    tag.slider.state = "up";

    if (tag.slider.counter <= 0) {
        window.clearInterval(tag.slider.timer);
        tag.slider.counter == 0;
        tag.slider.btn.className = "Button Collapsed";
	      return;
    }

    var top = tag.slider.top + tag.slider.height - Math.round(Math.pow(Math.sin(Math.PI * tag.slider.counter / tag.slider.steps / 2 + Math.PI / 2), 0.3) * tag.slider.height);
    tag.style.top = top+"px";

    tag.slider.counter--;
}

