function Fader(elem, opening, step) {
	this.elem = elem;
	this.opening = opening;
	this.step = step;

	if (opening) {
		this.progress = 0;
		elem.style.display = "block";
	}
	else {
		this.progress = 1;
		this.step = -this.step;
	}

	return this;
}

Fader.prototype.start = function() {
	var me = this;
	this.interval = setInterval(function () {me.tick(me);}, 10);
}

Fader.prototype.tick = function(me) {
	me.progress += me.step;
	
	// normalize
	me.progress = me.progress > 1 ? 1 : me.progress;
	me.progress = me.progress < 0 ? 0 : me.progress;
	
	me.elem.style.opacity = me.progress;
	me.elem.style.filter = 'alpha(opacity:' + me.progress*100 + ')';

	if (me.opening && me.progress >= 1) {
		clearInterval(me.interval);
	} else if (!me.opening && me.progress <= 0) {
		clearInterval(me.interval);
		me.elem.style.display = "none";
	}
}

