var timerlen = 5;
var slideAniLen = 600;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
//var moving = new Array();
var moving = false;
var dir = new Array();

function slidedown(objname) {
	if (moving)
		return;

	if (document.getElementById(objname).style.display != "none")
		return; // cannot slide down something that is already visible

	// added for sf integration
	// find the visable div and slideup
	setActive(objname.replace(/_d/, "_a"));
	slideupall();

	moving = true;
	dir[objname] = "down";
	startslide(objname);
}

function slideup(objname) {
	if (moving)
		return;

	if (document.getElementById(objname).style.display == "none")
		return; // cannot slide up something that is already hidden

	moving = true;
	dir[objname] = "up";
	startslide(objname);
}

function startslide(objname) {
	obj[objname] = document.getElementById(objname);

	endHeight[objname] = parseInt(obj[objname].style.height);
	endHeight[objname] = 900; //
	startTime[objname] = (new Date()).getTime();

	if (dir[objname] == "down")
		obj[objname].style.height = "1px";

	obj[objname].style.display = "block";

	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) {
	var sfObj = objname;


	clearInterval(timerID[objname]);

	if (dir[objname] == "up") {
		obj[objname].style.display = "none";
		clearActive(sfObj.replace(/_d/, "_a"));
	}

	// added for sf integration                
	else {
		obj[objname].style.height = "auto";
	}

	moving = false;
	//delete(moving);
	delete (timerID[objname]);
	delete (startTime[objname]);
	delete (endHeight[objname]);
	delete (obj[objname]);
	delete (dir[objname]);
	return;
}

// added for sf integration
// find the visable div and slideup
function slideupall() {

	/* Assumed: target class of DIV is 'harrym' */
	var regexp = /\bharrym\b/;
	var DIVs, DIV, i = -1;

	DIVs = document.getElementsByTagName("div");

	while (DIV = DIVs[++i]) {
		if (regexp.test(DIV.className))
			slideup(DIV.id);
	}
}   

