document.observe("dom:loaded", function() 
{
  var togglers = $$('.accordion_toggle');
  var contents = $$('.accordion_content');

	if (togglers != null && contents != null) {
		

  
  togglers.each(function(t) {
    t.observe('mouseover', function(e)
    {
      t.addClassName('over')
    });
    t.observe('mouseout', function(e)
    {
      t.removeClassName('over')
    });
  });


  new Fx.Accordion(togglers, contents,
  {
    'transition': Fx.Transitions.quadOut,
    onActive:     function(toggler)
    {
      toggler.setStyle({ backgroundImage: 'none' });
      toggler.morph('background-color: #ec008c;  color: #fff',
      {
        duration:     0.5,
        afterFinish:  function()
        {
          toggler.setStyle({ backgroundImage: 'url(/images/bg_expander_open.png)' });
        }
      });
    },

    onBackground: function(toggler)
    {
      toggler.setStyle({ backgroundImage: 'none' });
      toggler.morph('background-color: #3C3C3C;  color: #D4D4D4',
      {
        duration:     0.5,
        afterFinish:  function()
        {
          toggler.setStyle({ backgroundImage: 'url(/images/bg_expander_closed.png)' });
        }
      });

		}
  })
  
  var links = $$('a');
	
	links.each(function(link)
	{
	  /*
		if (!link.hasClassName('noFade'))
		{
			Element.observe(link, 'mouseover', function(e) 
			{
				new Effect.Morph(link, {style: 'color: #ec008c', duration: 0.2});
				Event.stop(e);
			});

			Element.observe(link, 'mouseout', function(e) 
			{
				new Effect.Morph(link, {style: 'color: #00acec', duration: 0.2});
				Event.stop(e);
			});
		}
		*/
		
		if (link.hasClassName('blank'))
		{
			Element.observe(link, 'click', function(e) 
			{
				window.open(link.href);
				Event.stop(e);
			});
		}
		
		if (link.hasClassName('scroll'))
		{
      Element.observe(link, 'click', function(e)
      {
        var target = link.hash.replace('#', '');

        // Scroll to appropriate section.
    		new Effect.ScrollTo($(target), 
    		{ 
    		  duration: 1.0, 
    		  transition: Effect.Transitions.EaseFromTo
    		});
    		Event.stop(e);
      })
	  }
	});

  if (globals.isCommentPreview)
  {
    Element.scrollTo('headingPreview');
  }

} /* END if (togglers != null && contents != null) */

});


/* 
transitions.js
Based on Easing Equations v2.0 
(c) 2003 Robert Penner, all rights reserved. 
This work is subject to the terms in http://www.robertpenner.com/easing_terms_of_use.html
Adapted for Scriptaculous by Ken Snyder (kendsnyder ~at~ gmail ~dot~ com) June 2006 
*/

// Overshooting Transitions 

// Elastic (adapted from "EaseOutElastic") 
Effect.Transitions.Elastic = function(pos) { 
    return -1*Math.pow(4,-8*pos) * Math.sin((pos*6-1)*(2*Math.PI)/2) + 1; 
}; 
// SwingFromTo (adapted from "BackEaseInOut") 
Effect.Transitions.SwingFromTo = function(pos) { 
    var s = 1.70158; 
    if ((pos/=0.5) < 1) return 0.5*(pos*pos*(((s*=(1.525))+1)*pos - s)); 
    return 0.5*((pos-=2)*pos*(((s*=(1.525))+1)*pos + s) + 2); 
}; 
// SwingFrom (adapted from "BackEaseIn") 
Effect.Transitions.SwingFrom = function(pos) { 
    var s = 1.70158; 
    return pos*pos*((s+1)*pos - s); 
}; 
// SwingTo (adapted from "BackEaseOut") 
Effect.Transitions.SwingTo = function(pos) { 
    var s = 1.70158; 
    return (pos-=1)*pos*((s+1)*pos + s) + 1; 
};


// Bouncing Transitions 

// Bounce (adapted from "EaseOutBounce") 
Effect.Transitions.Bounce = function(pos) { 
    if (pos < (1/2.75)) { 
        return (7.5625*pos*pos); 
    } else if (pos < (2/2.75)) { 
        return (7.5625*(pos-=(1.5/2.75))*pos + .75); 
    } else if (pos < (2.5/2.75)) { 
        return (7.5625*(pos-=(2.25/2.75))*pos + .9375); 
    } else { 
        return (7.5625*(pos-=(2.625/2.75))*pos + .984375); 
    } 
}; 
// BouncePast (new creation based on "EaseOutBounce") 
Effect.Transitions.BouncePast = function(pos) { 
    if (pos < (1/2.75)) { 
        return (7.5625*pos*pos); 
    } else if (pos < (2/2.75)) { 
        return 2 - (7.5625*(pos-=(1.5/2.75))*pos + .75); 
    } else if (pos < (2.5/2.75)) { 
        return 2 - (7.5625*(pos-=(2.25/2.75))*pos + .9375); 
    } else { 
        return 2 - (7.5625*(pos-=(2.625/2.75))*pos + .984375); 
    } 
};
 
//Gradual Transitions 
 
// EaseFromTo (adapted from "Quart.EaseInOut") 
Effect.Transitions.EaseFromTo = function(pos) { 
    if ((pos/=0.5) < 1) return 0.5*Math.pow(pos,4); 
    return -0.5 * ((pos-=2)*Math.pow(pos,3) - 2);    
}; 
// EaseFrom (adapted from "Quart.EaseIn") 
Effect.Transitions.EaseFrom = function(pos) { 
    return Math.pow(pos,4); 
}; 
// EaseTo (adapted from "Quart.EaseOut") 
Effect.Transitions.EaseTo = function(pos) { 
    return Math.pow(pos,0.25); 
};
