var PLtimerlen = 5;
var PLslideAniLen = 500;
var PLtimerID;
var PLstartTime;
var PLobj;
var PLendWidth;
var PLmoving = false;
var PLdir;
function PLtoggle(objname) {
if(document.getElementById(objname).style.display == "block"){ PLslideup(objname); }
else { PLslidedown(objname); }
}
function PLslidedown(objname){
        if(PLmoving)
                return;	
        if(document.getElementById(objname).style.display == "block")
                return; // cannot slide down something that is already visible
        PLmoving = true;
        PLdir = "down";
        PLstartslide(objname);
}
function PLslideup(objname){
        if(PLmoving)
                return;
        if(document.getElementById(objname).style.display == "none")
                return; // cannot slide up something that is already hidden
        PLmoving = true;
        PLdir = "up";
        PLstartslide(objname);
}
function PLstartslide(objname){
        PLobj = document.getElementById(objname);
        PLendWidth = parseInt(PLobj.style.width); // change to PLobj.style.height to open up/down
        PLstartTime = (new Date()).getTime();
        if(PLdir == "down"){
                PLobj.style.width = "1px"; // change to PLobj.style.height to open up/down
        }
        PLobj.style.display = "block";
        PLtimerID = setInterval('PLslidetick(\'' + objname + '\');',PLtimerlen);
}
function PLslidetick(objname){
        var elapsed = (new Date()).getTime() - PLstartTime;
		if (elapsed > PLslideAniLen) { PLendSlide(objname); }
        else {
                var d =Math.round( smoothSlide(elapsed / PLslideAniLen,"d") * PLendWidth);
                if(PLdir == "up") {
                  d = PLendWidth - d;
				}
                PLobj.style.width = d + "px"; // change to PLobj.style.height to open up/down
        }
        return;
}
function PLendSlide(objname){
        clearInterval(PLtimerID);
        if(PLdir == "up") {
			PLobj.style.display = "none";
		}
        PLobj.style.width = PLendWidth + "px"; // change to PLobj.style.height to open up/down
		PLmoving=false;
        return;
}
function smoothSlide(percent,type){
	switch(type){
		case "j":
			var factor = (Math.atan(10 * percent - 4))/2.8 + .5;
		break;
		case "c":
			var factor = (Math.atan(20 * percent - 10))/2.95 + .5;
		break;
		case "d":
			var factor = (Math.atan(15 * percent - 7.5))/2.9 + .5;
		break;
		case "a":
			var factor = (Math.atan(11.5 * percent - 6))/2.8 + .5;
		break;
		default:
			var factor = (Math.atan(20 * percent - 10))/2.95 + .5;
	}
	return factor;
}
