// ===========================================
//              Slide-in Text Box
// ===========================================
//        Version "Bravo"  (2008-03-27)
//
//  http://www.6times9.com/javascript/slidein
//
//       Copyright 2008 Richard Winskill
// ===========================================

function slide(slid, collapse, slideall, atag, prevheight){
	//SETUP
	var millisecondDelay=1 //Number of milliseconds to wait before adjusting the height again
	var pixelIncrease=20 //Number of pixels to vary the height each time
	var autoCollapse=0 //Automatically shrink open boxes when opening another box
	//SCRIPT
	if(typeof atag == 'string'){atag=document.getElementById(atag)} //Allow slideopen/slideclosed A tag to be controlled by a different element (i.e. specifiy and ID not "this")
	if(!slid || slid==collapse){
		//SLIDE ALL
		divs=document.getElementsByTagName("div")
		first=0
		for (div=0; div<divs.length; div++){
			if(divs[div].className=="slide" && !(divs[div].className=="noslideall")){
				if(slid && collapse && slid==collapse){
					//If the two inputs are set and identical then literally toggle the boxes
					slide(divs[div].id, 0, 1)
				}else{
					//If the two inputs are absent then set every box to the *opposite* state to the first box
					if(!first){first=1; if(divs[div].offsetHeight>0){dir=1}else{dir=-1}}
					slide(divs[div].id, dir, 1)
				}
			}
		}
		as=document.getElementsByTagName("a")
		for (a=0; a<as.length; a++){
			if(as[a].className=="slideopen" && dir==-1){
				as[a].className="slideclosed"
			}else if(as[a].className=="slideclosed" && dir==1){
				as[a].className="slideopen"
			}
		}
	}else{
		slider=document.getElementById(slid) //Outer DIV
		innerdiv=slider.firstChild; //Inner DIV
		if(!(collapse==0 && slider.offsetHeight>0 && slider.offsetHeight<innerdiv.offsetHeight)){ //Only run if triggered by script or clicked when NOT already running
			//SLIDE ONE
			if(collapse==1 || (!collapse && slider.offsetHeight>=innerdiv.offsetHeight)){
				//CLOSE THE DIV
				if(slider.offsetHeight>0 && !(slider.offsetHeight==(prevheight+pixelIncrease))){
					slider.style.height=slider.offsetHeight-pixelIncrease+"px"
					setTimeout("slide('"+slid+"', 1, 0, 0, "+slider.offsetHeight+")",millisecondDelay);
				}
				//Change the class for the arrow
				if(atag){atag.className="slideopen";}
			}else{
				//OPEN THE DIV
				if(autoCollapse && !slideall){
					//If "autoCollalse" is set, and only one DIV is being affected, then close any other open DIVs
					divs=document.getElementsByTagName("div")
					for (div=0; div<divs.length; div++){
						if(divs[div].className=="slide" && !(divs[div].id==slid)){
							if(divs[div].offsetHeight>0){
								divs[div].style.height=divs[div].offsetHeight-pixelIncrease+"px"
								setTimeout("slide('"+divs[div].id+"', 1)",millisecondDelay);}
						}
					}
				}
				//Open the DIV
				if(slider.offsetHeight<innerdiv.offsetHeight && !(slider.offsetHeight==(prevheight-pixelIncrease))){
					slider.style.height=slider.offsetHeight+pixelIncrease+"px"
					setTimeout("slide('"+slid+"', -1, "+slideall+", 0, "+slider.offsetHeight+")",millisecondDelay);
				}
				//Change the class for the arrow
				if(atag){atag.className="slideclosed";}
			}
		}
	}
}
