AJS.fx =
{
   _shades :
   {
      0 : "ffffff", 1 : "ffffee", 2 : "ffffdd", 3 : "ffffcc", 4 : "ffffbb", 5 : "ffffaa", 6 : "ffff99"
   }
   , highlight : function(_1, _2)
   {
      var _3 = new AJS.fx.Base();
      _3.elm = AJS.$(_1);
      _3.options.duration = 600;
      _3.setOptions(_2);
      AJS.update(_3,
      {
         increase : function()
         {
            if(this.now == 7)
            {
               _1.style.backgroundColor = "#fff";
            }
            else
            {
               _1.style.backgroundColor = "#" + AJS.fx._shades[Math.floor(this.now)];
            }
         }
      }
      );
      return _3.custom(6, 0);
   }
   , fadeIn : function(_4, _5)
   {
      _5 = _5 ||
      {
      }
      ;
      if( ! _5.from)
      {
         _5.from = 0;
         AJS.setOpacity(_4, 0);
      }
      if( ! _5.to)
      {
         _5.to = 1;
      }
      var s = new AJS.fx.Style(_4, "opacity", _5);
      return s.custom(_5.from, _5.to);
   }
   , fadeOut : function(_7, _8)
   {
      _8 = _8 ||
      {
      }
      ;
      if( ! _8.from)
      {
         _8.from = 1;
      }
      if( ! _8.to)
      {
         _8.to = 0;
      }
      _8.duration = 300;
      var s = new AJS.fx.Style(_7, "opacity", _8);
      return s.custom(_8.from, _8.to);
   }
   , setWidth : function(_a, _b)
   {
      var s = new AJS.fx.Style(_a, "width", _b);
      return s.custom(_b.from, _b.to);
   }
   , setHeight : function(_d, _e)
   {
      var s = new AJS.fx.Style(_d, "height", _e);
      return s.custom(_e.from, _e.to);
   }
}

//  ---------------------------------------

;
AJS.fx.Base = new AJS.Class(
{
   init : function(_10)
   {
      this.options =
      {
         onStart : function()
         {
         }
         , onComplete : function()
         {
         }
         , transition : AJS.fx.Transitions.sineInOut, duration : 500, wait : true, fps : 50
      }
      ;
      AJS.update(this.options, _10);
      AJS.bindMethods(this);
   }
   , setOptions : function(_11)
   {
      AJS.update(this.options, _11);
   }
   , step : function()
   {
      var _12 = new Date().getTime();
      if(_12 < this.time + this.options.duration)
      {
         this.cTime = _12 - this.time;
         this.setNow();
      }
      else
      {
         setTimeout(AJS.$b(this.options.onComplete, this, [this.elm]), 10);
         this.clearTimer();
         this.now = this.to;
      }
      this.increase();
   }
   , setNow : function()
   {
      this.now = this.compute(this.from, this.to);
   }
   , compute : function(_13, to)
   {
      var _15 = to - _13;
      return this.options.transition(this.cTime, _13, _15, this.options.duration);
   }
   , clearTimer : function()
   {
      clearInterval(this.timer);
      this.timer = null;
      return this;
   }
   , _start : function(_16, to)
   {
      if( ! this.options.wait)
      {
         this.clearTimer();
      }
      if(this.timer)
      {
         return;
      }
      setTimeout(AJS.$p(this.options.onStart, this.elm), 10);
      this.from = _16;
      this.to = to;
      this.time = new Date().getTime();
      this.timer = setInterval(this.step, Math.round(1000 / this.options.fps));
      return this;
   }
   , custom : function(_18, to)
   {
      return this._start(_18, to);
   }
   , set : function(to)
   {
      this.now = to;
      this.increase();
      return this;
   }
   , setStyle : function(elm, _1c, val)
   {
      if(this.property == "opacity")
      {
         AJS.setOpacity(elm, val);
      }
      else
      {
         AJS.setStyle(elm, _1c, val);
      }
   }
}

//  ---------------------------------------

);
AJS.fx.Style = AJS.fx.Base.extend(
{
   init : function(elm, _1f, _20)
   {
      this.parent();
      this.elm = elm;
      this.setOptions(_20);
      this.property = _1f;
   }
   , increase : function()
   {
      this.setStyle(this.elm, this.property, this.now);
   }
}

//  ---------------------------------------

);
AJS.fx.Styles = AJS.fx.Base.extend(
{
   init : function(elm, _22)
   {
      this.parent();
      this.elm = AJS.$(elm);
      this.setOptions(_22);
      this.now =
      {
      }
      ;
   }
   , setNow : function()
   {
      for(p in this.from)
      {
         this.now[p] = this.compute(this.from[p], this.to[p]);
      }
   }
   , custom : function(obj)
   {
      if(this.timer && this.options.wait)
      {
         return;
      }
      var _24 =
      {
      }
      ;
      var to =
      {
      }
      ;
      for(p in obj)
      {
         _24[p] = obj[p][0];
         to[p] = obj[p][1];
      }
      return this._start(_24, to);
   }
   , increase : function()
   {
      for(var p in this.now)
      {
         this.setStyle(this.elm, p, this.now[p]);
      }
   }
}

//  ---------------------------------------

);
AJS.fx.Transitions =
{
   linear : function(t, b, c, d)
   {
      return c * t / d + b;
   }
   , sineInOut : function(t, b, c, d)
   {
      return - c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
   }
}

//  ---------------------------------------

;
script_loaded = true;


script_loaded = true;
