Element.implement({
  fadeIn: function(complete) {
    this.setStyle('opacity', 0);
    this.show();
    this.get('tween', {
      onComplete: complete ? complete.bind(this) : null,
      link: 'chain'
    }).start('opacity', 1);
  },
  fadeOut: function(complete) {
    this.setStyle('opacity', 1);
    this.show();
    this.get('tween', {
      onComplete: function() {
        if (complete) complete.bind(this)();
        this.hide();
      }.bind(this),
      link: 'chain'
    }).start('opacity', 0);
  },
  hide: function() {
    this.setStyle('display', 'none');
  },
  show: function() {
    this.setStyle('display', '');
  },
  visible: function() {
		return (this.style.display != 'none');
	}
});