var Message = {
  LOADER: "<img src='images/ajax-loader.gif' />",
  DURATION: 0.3,
  AUTOHIDE: 3,
  init: function() {
    $("message").down(".close").observe("click", Message.hide);
  },
  success: function(msg, options) {
    Message.show(msg, Object.extend({ autoHide: true, className: "success" }, options || {}));
  },
  error: function(msg, options) {
    Message.show(msg, Object.extend({ className: "error" }, options || {}));
  },
  loading: function(msg, options) {
    Message.show(Message.LOADER + msg, Object.extend({ className: "loading", hideClose: true }, options || {}));
  },
  notice: function(msg, options) {
    Message.show(msg, Object.extend({ className: "notice", autoHide: true }, options || {}));
  },
  show: function(msg, options) {
    Message.reset();
    if(options.hideClose) $("message").down(".close").hide();
    if(options.autoHide) Message.hide.delay(Object.isNumber(options.autoHide) ? options.autoHide : Message.AUTOHIDE);
    if(options.className) {
      $("message").addClassName(options.className);
      Message.removeClassName = options.className;
    }
    
    //if (Prototype.Browser.IE) {
      $("message").down("p").update(msg);
      $("message").display();
    /*} else {
      $("message").down("p").update(msg);
      Message.currentEffect = Effect.SlideDown("message", { duration: Message.DURATION });
    } */ 
  },
  hide: function() {
    $("message").slideUp({ duration: Message.DURATION });
  },
  reset: function() {
    if(Message.currentEffect) {
      Message.currentEffect.cancel();
      Message.currentEffect = null;
    }
    $("message").hide();
    $("message").removeClassName(Message.removeClassName);
  },
  ajaxException: function(r, e) {
    Message.error(e.message || e.description);
  }
};
document.observe("dom:loaded", Message.init);

var Control = {
  disable: function(el, styles) {
    el.disabled = true;
    el.setStyle(Object.extend({
      color: "#999",
      borderColor: "#999",
      backgroundColor: "#aaa",
      opacity: 0.6
    }, styles || {}));
  },
  enable: function(el, styles) {
    el.disabled = true;
    el.setStyle(Object.extend({
      color: "auto",
      borderColor: "auto",
      backgroundColor: "auto",
      opacity: 1
    }, styles || {}));
  }
};

Number.prototype.formatRands = function() {
	return this.formatThousands(2);
};

Number.prototype.formatPercentage = function() {
  return this+"%";
}

Number.prototype.log10 = function() {
  return Math.log(this) * Math.LOG10E;
}
