var inter=new Array();	var cur_height=new Array();	var orig_height=new Array();	var my_status=new Array();

function SlideBox( box, way, speed ){
	obj = document.getElementById(box);
	if ((orig_height[box] == '') || (orig_height[box] == undefined)){
		orig_height[box] = obj.scrollHeight;
	}
	if ((cur_height[box] == '') || (cur_height[box] == undefined)){
		cur_height[box] = 0.1;
	}
	if (way == "down"){
		if(cur_height[box]>=orig_height[box]){
			//alert(orig_height[box]);
			obj.style.height = orig_height[box];
			cur_height[box] = orig_height[box];
			my_status[box]="open";
			obj.style.height = 'auto'; // once its open set it to auto so it'll resize if needbe
			clearInterval(inter[box]);
			return; 
		} else {
			my_status[box]="opening";
			// add slow down effect
			if (cur_height[box] >= (orig_height[box] -35)) speed = speed /1.5; // slow it down
			if (cur_height[box] >= (orig_height[box] -25)) speed = speed /2; // slow it down
			//if (cur_height[box] >= (orig_height[box] -10)) speed = speed /2; // slow it down
			//
			cur_height[box] += speed;
			if (cur_height[box] >= orig_height[box]) cur_height[box] = orig_height[box];
			obj.style.height = cur_height[box] + 'px';
		}
	}
	if (way == "up"){
		if(cur_height[box]<=0.1){
			//alert(cur_height[box]);
			orig_height[box] = ''; // set as blank so the new height data is retrieved next time it opens
			cur_height[box] = 0.1;
			obj.style.height = cur_height[box] + 'px'; // IE fix?
			my_status[box]="closed";
			clearInterval(inter[box]);
			return; 
		} else {
			if (my_status[box]!="closing") cur_height[box] = obj.scrollHeight; // make sure we've got the latest height info
			my_status[box]="closing";
			// add slow down effect
			if (cur_height[box] <= 35) speed = speed /1.5; // slow it down
			if (cur_height[box] <= 25) speed = speed /2; // slow it down
			//if (cur_height[box] <= 10) speed = speed /2; // slow it down
			//
			cur_height[box]-=speed;
			if (cur_height[box] <= 1){ // if starts to get smaller than 1 IE will have a fit so set it closed now
				cur_height[box] = 0.1; // never let it get smaller than the minimum height, 0.1 for IE
				obj.style.height = cur_height[box] + 'px';
			} else {
				obj.style.height = cur_height[box] + 'px'; // continue getting smaller
			}
		}
	}
}

// box = div to slide
// speed = how many pixels to jump each step
// fade = whether or not to use the fade effect
function slide_toggle( box, speed, fade ){
	if ((speed == '') || (speed == undefined)) speed=25;
	if ((fade == '') || (fade == undefined)) fade=true;
	
	// if its already open or in the process of opening
	if ((my_status[box]=="open") || (my_status[box]=="opening") || ((document.getElementById(box).className=="slide_open") && (my_status[box]!="closed") && (my_status[box]!="closing"))){
		
		// if its already open we need to set the variables to insure it closes smoothly
		if ((document.getElementById(box).className=="slide_open") && (my_status[box]!="closed") 
		&& (my_status[box]!="closing")) cur_height[box] = document.getElementById(box).scrollHeight;
		//
		clearInterval(inter[box]);
		//if (fade==true) fade_out(box);
		inter[box]=setInterval('SlideBox(\'' + box + '\', \'up\', ' + speed + ')',1);
	} else if ((my_status[box]=="closed") || (my_status[box]=="closing") || (my_status[box]==undefined)){
		clearInterval(inter[box]);
		//if (fade==true) fade_in(box);
		inter[box]=setInterval('SlideBox(\'' + box + '\', \'down\', ' + speed + ')',1);
	}

}
function slide_up( box, speed, fade ){
	if ((fade == '') || (fade == undefined)) fade=true;
	//if (fade==true) fade_out(box);
	if ((speed == '') || (speed == undefined)) speed=35;
	if (my_status[box]!="closed"){
		clearInterval(inter[box]);
		inter[box]=setInterval('SlideBox(\'' + box + '\', \'up\', ' + speed + ')',1);
	}
}
function slide_down( box, speed, fade ){
	if ((fade == '') || (fade == undefined)) fade=true;
	//if (fade==true) fade_in(box);
	if ((speed == '') || (speed == undefined)) speed=35;
	if (my_status[box]!="open"){
		clearInterval(inter[box]);
		inter[box]=setInterval('SlideBox(\'' + box + '\', \'down\', ' + speed + ')',1);
	}
}

function fade_toggle(box) {
	var opacs = ["0","10","20","30","40","50","60","70","80","90","100"];
	obj3 = document.getElementById(box);
	if ((obj3.style.opacity == '0') || (obj3.style.opacity == 0) || (obj3.style.opacity == undefined)){
		for (var i = 0; i < 11; i++){
			setTimeout('obj3.style.opacity = "'+opacs[i]/100+'";', i * 40);
			setTimeout('obj3.style.MozOpacity  = "'+opacs[i]/100+'";', i * 40);
			setTimeout('obj3.style.KhtmlOpacity  = "'+opacs[i]/100+'";', i * 40);
			setTimeout('obj3.style.filter = "alpha(opacity = '+opacs[i]+');"', i * 40);
		}
	}else{
		opacs.reverse();
		for (var i = 0; i < 11; i++) {
			setTimeout('obj3.style.opacity = "'+opacs[i]/100+'";', i * 40);
			setTimeout('obj3.style.MozOpacity  = "'+opacs[i]/100+'";', i * 40);
			setTimeout('obj3.style.KhtmlOpacity  = "'+opacs[i]/100+'";', i * 40);
			setTimeout('obj3.style.filter = "alpha(opacity = '+opacs[i]+');"', i * 40);
		}
	}
}
function fade_in(box) {
	var opacs = ["0","10","20","30","40","50","60","70","80","90","100"];
	obj1 = document.getElementById(box).style;
	if ((obj1.opacity == '0') || (obj1.opacity == 0) || (obj1.opacity == undefined)){
		for (var i = 0; i < 11; i++){
			setTimeout('obj1.opacity = "'+opacs[i]/100+'";', i * 40);
			setTimeout('obj1.MozOpacity  = "'+opacs[i]/100+'";', i * 40);
			setTimeout('obj1.KhtmlOpacity  = "'+opacs[i]/100+'";', i * 40);
			setTimeout('obj1.filter = "alpha(opacity = '+opacs[i]+');"', i * 40);
		}
	}
}
function fade_out(box) {
	var opacs = ["0","10","20","30","40","50","60","70","80","90","100"];
	obj2 = document.getElementById(box).style;
	if (obj2.opacity != '0'){
		opacs.reverse();
		for (var i = 0; i < 11; i++) {
			setTimeout('obj2.opacity = "'+opacs[i]/100+'";', i * 40);
			setTimeout('obj2.MozOpacity  = "'+opacs[i]/100+'";', i * 40);
			setTimeout('obj2.KhtmlOpacity  = "'+opacs[i]/100+'";', i * 40);
			setTimeout('obj2.filter = "alpha(opacity = '+opacs[i]+');"', i * 40);
		}
	}
}
/*
function createBGMask(){
	// work out the size of the window area and create a div for hiding the background
	if( window.innerHeight && window.scrollMaxY ){ // Firefox 
		pageWidth = window.innerWidth + window.scrollMaxX;
		pageHeight = window.innerHeight + window.scrollMaxY;
	} else if( document.body.scrollHeight > document.body.offsetHeight ){ // all but Explorer Mac
		pageWidth = document.body.scrollWidth;
		pageHeight = document.body.scrollHeight;
	} else { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
		pageWidth = document.body.offsetWidth + document.body.offsetLeft;
		pageHeight = document.body.offsetHeight + document.body.offsetTop;
	}
	
	result = getViewport();
	if(pageHeight < result.height){
		pageHeight = result.height;
	}

	// for small pages with total width less then width of the viewport
	if(pageWidth < result.width){	
		pageWidth = result.width;
	}

	//alert('Width: '+pageWidth+' x Height: '+pageHeight);
	//document.write('<div id="bgmask" align="center" valign="center" style="width: '+pageWidth+'px; height: '+pageHeight+'px;"  class="bgmask"></div>');
	document.write('<div id="bgmask" align="center" valign="center" style="width: 100%; height: '+pageHeight+'px;"  class="bgmask"></div>');
}
*/

function popupDiv(div,container,w,h){
	// work out where i'm currently scrolled to
	if (document.documentElement && document.documentElement.scrollTop){
		theTop = document.documentElement.scrollTop;
	} else if (document.body){
		theTop = document.body.scrollTop
	}
	// run function to work out the viewable size of screen space atm
	result = getViewport();
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
		
	if(yScroll >= result.height)
		result.height = yScroll;
	// for small pages with total width less then width of the viewport
	if(xScroll >= result.width)	
		result.width = xScroll;
	
	// resize the background mask
	document.getElementById('bgmask').style.width=result.width+'px';
	document.getElementById('bgmask').style.height=result.height+'px';
	
	// work out the position of the div 1/4 from the top and in the centre
	var leftpadding = ((result.width - w) / 2);
	var toppadding = ((result.height - h) / 2);
	toppadding = (toppadding / 2) + theTop;

	// move the div
	//document.getElementById(div).style.left=leftpadding+'px'; // container centralises it now
	document.getElementById(div).style.width=w+'px';
	document.getElementById(div).style.height=h+'px';
	document.getElementById(container).style.top=toppadding+'px';
	// fade the background and pop the div up
	document.getElementById('bgmask').style.display='block';
	document.getElementById(container).style.display='block';
	document.getElementById(div).style.display='block';
}
function popupDivClose(div,container){
	document.getElementById('bgmask').style.display='none';
	document.getElementById(container).style.display='none';
	document.getElementById(div).style.display='none';
}

// returns the viewport size of the screen
function getViewport(){
	var viewport = {x:0,y:0,width:0,height:0};
	if (typeof window.scrollX != 'undefined'){
		viewport.x = window.pageXOffset;
		viewport.y = window.pageYOffset;
		viewport.width = window.innerWidth;
		viewport.height = window.innerHeight;
		return viewport;
	} else {
		if (document.documentElement &&
			(typeof document.documentElement.scrollLeft != 'undefined') &&
			(document.documentElement.scrollLeft != 0)){
				viewport.x = document.documentElement.scrollLeft;
				viewport.y = document.documentElement.scrollTop;
				viewport.width = document.documentElement.clientWidth;
				viewport.height = document.documentElement.clientHeight;
				return viewport;
		} else {
			if (document.body && (typeof document.body.scrollLeft != 'undefined')){
				viewport.x = document.body.scrollLeft;
				viewport.y = document.body.scrollTop;
	
				if (document.compatMode == "CSS1Compat"){
					viewport.width = document.body.parentNode.clientWidth;
					viewport.height = document.body.parentNode.clientHeight;
				} else {
					viewport.width = document.body.clientWidth;
					viewport.height = document.body.clientHeight;
				}
				return viewport;
			}
		}
	}
	return null;
}