// JavaScript Document by Pietro Saccardi
// Expand/Collapse container objects

  //CONFIGURABLE TIMER PRECISION
  var period=20;

  //Memory variables
  var object=null;
	var object2=null;
	var total=0;
  var maxHeight=0;
  var maxWidth=0;
  var timer=-1;
  var ticks=0;
  var initSize=0;
  var time=0.8;
  var acceleration=0;
  var initSpeed=0;
  //Main function
  function setSize() {
    //Check to set current timer
    if(timer==-1) {
      timer=setInterval('setSize()',period);
    }
    //Evaluate time
    ticks++;
    var thisTime=ticks*period/1000;
    //Obtain current size
    var x=initSize+initSpeed*thisTime + (acceleration*thisTime*thisTime)/2;
    //Check if finished, paying attention to speed's sing
    var finished;
    if(initSpeed>=0) {
      finished=x>=maxHeight;
    } else {
      finished=x<=maxHeight;
    }
    if(finished) {
      //clear interval
      clearInterval(timer);
      timer=-1;
      //Set size
      object.style.height=maxHeight+"px";
      object=null;
      ticks=0;
    } else {
      object.style.height=Math.round(x)+"px";
    }
  }
	function setSizeW() {
    //Check to set current timer
    if(timer==-1) {
      timer=setInterval('setSizeW()',period);
    }
    //Evaluate time
    ticks++;
    var thisTime=ticks*period/1000;
    //Obtain current size
    var x=initSize+initSpeed*thisTime + (acceleration*thisTime*thisTime)/2;
    //Check if finished, paying attention to speed's sing
    var finished;
    if(initSpeed>=0) {
      finished=x>=maxWidth;
    } else {
      finished=x<=maxWidth;
    }
    if(finished) {
      //clear interval
      clearInterval(timer);
      timer=-1;
      //Set size
      object.style.width=maxWidth+"px";
			object2.style.width=(total-maxWidth)+"px";
      object=null;
			object2=null;
      ticks=0;
    } else {
      object.style.width=Math.round(x)+"px";
			object2.style.width=(total-Math.round(x))+"px";
    }
  }
  function toggleObject(obj) {
    //Evaluate current size, ending size, and init
    object=obj;
    maxHeight=obj.getAttribute('jsoldsize');
    initSize=new Number(obj.style.height.substr(0,obj.style.height.length-2));
    //Set a custom attribute for remembering size
    obj.setAttribute('jsoldsize', initSize);
    //Evaluate the diffence
    var difference=maxHeight-initSize;
    //Evaluate average speed
    var averageSpeed=difference/time;
    //Initial speed is double
    initSpeed=averageSpeed*2;
    //Deceleration = -initialSpeed/time
    acceleration=-initSpeed/time;
    //Now invoke
    setSize();
  }
  function toggleObjectW(obj,obj2,tot) {
    //Evaluate current size, ending size, and init
    object=obj;
		object2=obj2;
		total=tot;
    maxWidth=obj.getAttribute('jsoldsize');
    initSize=new Number(obj.style.width.substr(0,obj.style.width.length-2));
    //Set a custom attribute for remembering size
    obj.setAttribute('jsoldsize', initSize);
    //Evaluate the diffence
    var difference=maxWidth-initSize;
    //Evaluate average speed
    var averageSpeed=difference/time;
    //Initial speed is double
    initSpeed=averageSpeed*2;
    //Deceleration = -initialSpeed/time
    acceleration=-initSpeed/time;
    //Now invoke
    setSizeW();
  }
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  var sl2_slides=0;
var sl2_position=0;
//Useful variables
var sl2_animating=false;
var sl2_intervalID=null;
var sl2_delta=0;
var sl2_frames=0;
var sl2_start=0;
//Setting variables
var sl2_period=20;
//Seconds/sl2_period
var sl2_time=500/sl2_period;
function sl2_setup() {
	//Adapt width
	var div=document.getElementById("sl2_internal");
	//Remove non-element nodes
	sl2_clearNode(div);
	sl2_slides=Math.floor(div.childNodes.length/6);
	//Duplicate first six nodes
	for(var i=0; i<6; i++)
		div.appendChild(div.childNodes[i].cloneNode(true));

	//Now evaluate size
	var size=5+90*div.childNodes.length;
	div.style.width=size+"px";
}
function sl2_clearNode(node) {
	for(var i=0; i<node.childNodes.length; i++)
		if(node.childNodes[i].nodeType!=1) node.removeChild(node.childNodes[i]);
}
function sl2_move(qty) {
	if(qty==0 || sl2_animating) return;
	var div=document.getElementById("sl2_internal");
	//Check if we're at the end or at the beginning
	sl2_delta=-6*90;
	if(qty<0) sl2_delta=6*90;
	if(sl2_position==0 && qty<0) {
		//Move to the copy
		sl2_position=sl2_slides;
		div.style.left=(-sl2_position*90*6)+"px";
	} else if(sl2_position==sl2_slides && qty>0) {
		//Move to the first
		sl2_position=0;
		div.style.left="0px";
	}
	sl2_start=0;
	if(div.style.left)
		sl2_start=new Number(div.style.left.substring(0, div.style.left.length-2));
	//Animate
	sl2_animate();
	if(qty>0) sl2_position++;
	if(qty<0) sl2_position--;
}
function sl2_animate() {
	var objToAnimate=document.getElementById("sl2_internal");
	//Check for sl2_startup
	if(sl2_frames<=0) {
		//Reset sl2_frames, set sl2_animating
		sl2_frames=0;
		sl2_animating=true;
		//Create interval
		sl2_intervalID=setInterval("sl2_animate()", sl2_period);
	}
	sl2_frames++;
	//Check..!
	if(sl2_frames>sl2_time) {
		//Unset sl2_timer
		clearInterval(sl2_intervalID);
		sl2_animating=false;
		//Reset sl2_frames
		sl2_frames=0;
		return;
	}
	//Evaluate size... adapted formula
	var actualH=sl2_start+((sl2_delta*sl2_frames)/sl2_time)*(2-sl2_frames/sl2_time);
	//Check obj
	if(objToAnimate) objToAnimate.style.left=actualH+"px";
}

