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;