/*
Code provided by Dan Goodspeed: dan@rkstar.com
Orig. posted at http://rkstar.com/digg/slider.html
*/

//Added by Thomas Galvin
var controlDiv = null;
var bodyDiv = null;

var sliderHeight = ""; // these need to be defined globally so 
var divToSlide = ""; // javascript doesn't "forget" them when
var fullSlideHeight = ""; // calling a setTimeout

// USER DEFINABLE VARIABLES
var sliderSpeed = 15; // time between frames.  10 is really fast. 100 is really slow.
var sliderAccel = 1.8; // Acceleration frames.  From "many" 1.1 to a "few" fast 3.	

function slidingOpen(height) 
{
  // if we're not done sliding
	if( height <= fullSlideHeight )
  {
    // set the new height
		document.getElementById(divToSlide).style.height = height + 'px';
    
		if( height < (fullSlideHeight/2) ) 
    {
      // accelerate up for the first half
			sliderHeight = Math.round(height*sliderAccel) +1;
		}
		else 
    {
      // decelerate for the second half
			sliderHeight = fullSlideHeight - Math.round( (fullSlideHeight-height) / sliderAccel) +1;
		}
    
    // call next slide height
		setTimeout( "slidingOpen(sliderHeight)", sliderSpeed );
	}
	else
  {
    // set the final height
		document.getElementById(divToSlide).style.height = 'auto';
    
    // reset the global vars when done
		sliderHeight = "";
		divToSlide = "";
		fullSlideHeight = "";
	}
}

function slideOpen(objId)
{
  // slides open given div id
	if( document.getElementById(objId).style.display != 'none' )
  {
    // it's already open
		return;
	}
  
	document.getElementById(objId).style.overflow = 'hidden';	// in case the user forgot
	document.getElementById(objId).style.height = '1px'; // start opening at 1px high
	document.getElementById(objId).style.display = 'block'; // make it visible
	fullSlideHeight = document.getElementById(objId).scrollHeight; // set the final height globally
	divToSlide = objId; // define div ID global
	slidingOpen(1); // slide divToSlide open
  
	return;
}

function slidingClosed(height)
{
	// given next height
	document.getElementById(divToSlide).style.height = height+'px';	// set the new height
  
	if( height > 0 )
  {
    // if we're not done closing
		if( height > (fullSlideHeight/2) )
    {
      // accelerate the first half
			sliderHeight = Math.round( fullSlideHeight - (fullSlideHeight*sliderAccel) + (height*sliderAccel) ) -1;
      
			if( sliderHeight < (fullSlideHeight/2) )
      {
        // to make sure cut off point is at 1/2 way
				sliderHeight = Math.round( fullSlideHeight/2 ) -1;
			}
		}
		else 
    {
      // decelerate the second
			sliderHeight = Math.round( height/sliderAccel ) -1;
		}
    
    // call next slide height
		setTimeout( "slidingClosed(sliderHeight)", sliderSpeed );
	}
	else 
  {
    // disappear the div
    document.getElementById(divToSlide).style.display = 'none';
    
    // reset the global vars when done
		sliderHeight = "";
		divToSlide = "";
		fullSlideHeight = "";
    
    //Added by Thomas Galvin
    slideOpen( bodyDiv );
	}
}

function slideClosed(objId)
{
  // slides closed given div id
	if( document.getElementById(objId).style.display == 'none' ) 
  {
    //it's already closed
		return;
	}
  
	document.getElementById(objId).style.overflow = 'hidden';	// in case the user forgot
  
	fullSlideHeight = document.getElementById(objId).scrollHeight; // set the start height globally
	fullSlideHeight -= 10; // remove the padding from scrollHeight
	divToSlide = objId; // define div ID global
	slidingClosed( fullSlideHeight-1 ); // slide divToSlide closed
	return;
}

//Aded by Thomas Galvin
function expandArticle( divToHide, divToOpen )
{
  controlDiv = divToHide;
  bodyDiv = divToOpen;
  
  slideClosed(divToHide);
}
