var Notifier =
 {
  effect: null,
  delay: null,
  options: {}, // options: persistent, closeable, delay
  newOptions: {},
  created: false,
  isOpen: false,
 
  create: function(options)
   {
    Notifier.newOptions = options;
   
    if (!Notifier.created)
     {
      notifierElement = new Element("div", {id: "notifier"});
      messageElement= new Element("div", {id: "message"});
    
      if (Notifier.newOptions["closeable"])
       {
        closeElement = new Element("img", {id: "close",
                                           src: "/design/rmt-us/images/notifierclose.png",
                                           events: {click: function()
                                                            {
                                                             Notifier.hide(null);
                                                            }
                                                   }});
        closeElement.inject(notifierElement);
       }
    
      messageElement.inject(notifierElement);
      notifierElement.inject($(document.body), "top");

      Notifier.created = true;
     }
   },
 
  open: function(message)
   {
    if (Notifier.isOpen)
     {
      $clear(Notifier.delay);
      Notifier.effect.cancel();
      Notifier.hide(message);
      return;
     }
   
    Notifier.isOpen = true;
    Notifier.options = Notifier.newOptions;
    Notifier.effect = new Fx.Tween($("notifier")).start("height", 0, 70).chain(function()
                                                                                {
                                                                                 if (Notifier.options["closeable"])
                                                                                  {
                                                                                   $("close").setStyle("display", "block");
                                                                                  }
                                                                                
                                                                                 Notifier.displayText(message);
                                                                                 
                                                                                 if (!Notifier.options["persistent"] && Notifier.options["delay"])
                                                                                  {
                                                                                   Notifier.delay = Notifier.hide.delay(Notifier.options["delay"]);
                                                                                  }
                                                                                });
   },
   
  hide: function(message)
   {
    if (Notifier.options["closeable"])
     {
      $("close").setStyle("display", "none");
     }
   
    $("message").innerHTML = "";
    Notifier.effect = new Fx.Tween($("notifier")).start("height", $("notifier").getStyle("height"), 0).chain(function()
                                                                                                              {
                                                                                                               Notifier.isOpen = false;
                                                                                                               Notifier.destroy();
                                                                                                              
                                                                                                               if (message != null)
                                                                                                                {
                                                                                                                 Notifier.open(message);
                                                                                                                }
                                                                                                              });
   },
   
  destroy: function()
   {
    $("notifier").destroy();
    Notifier.created = false;
    Notifier.create(Notifier.newOptions);
   },
   
  displayText: function(message)
   {
    $("message").innerHTML = message;
    $("message").setStyle("display", "block");
   }
 };