(function() {
  
  var Dom       = YAHOO.util.Dom;
  var Lang      = YAHOO.lang;
  var ColorAnim = YAHOO.util.ColorAnim;
  
  var Glow = function(el, attributes, duration, method) {
    
    duration = duration / 2;

    Glow.superclass.constructor.call(this, el, attributes, duration, method);
  };
  
  Lang.extend(Glow, ColorAnim, {
    init: function(el, attributes, duration, method) {

      Glow.superclass.init.call(this, el, attributes, duration, method);
      
      var from = attributes.backgroundColor.from || Dom.getStyle(el, 'backgroundColor');
      var to   = attributes.backgroundColor.to;
      
      this.onComplete.subscribe(function() {      
        attributes.backgroundColor = {
          from: to,
          to: from
        };
        
        var reverseAnim = new ColorAnim(el, attributes, duration, method);
        reverseAnim.animate();

      });
      
    }
  });
  
  window.TIME = window.TIME || YAHOO.namespace('TIME');
  YAHOO.namespace('TIME.widget.Effects');
  TIME.widget.Effects.Glow = Glow;
  
})();
