var XMessage = XMessage ? XMessage : function() {
   
   var private = {
      initialized: false,
      fadeIn: null,
      opacity: 0,
      msgDv: null
      };

   var public = {
      init: function() {
         private.msgDv = document.createElement("div");
         document.body.appendChild(private.msgDv);

         private.initialized = true;
         public.applyStyle();
      },

      show: function(msg) {
         if (!private.initialized) {
            public.init();
         }

         private.msgDv.innerHTML     = msg;
         private.msgDv.style.display = "block";
         private.msgDv.style.left    = getViewportWidth() / 2 - 250 + 'px';

         // Show (fade-in)
         clearInterval(private.fadeId);
         private.fadeId = setInterval("XMessage.fade(1)", 25);
      },

      hide: function() {
         // Show (fade-out)
         clearInterval(private.fadeId);
         private.fadeId = setInterval("XMessage.fade(0)", 25);
      },

      fade: function(io) {
         private.opacity = io ? private.opacity + 0.05 : private.opacity - 0.05;
         private.opacity = (private.opacity > 1) ? 1 : private.opacity;
         private.opacity = (private.opacity < 0) ? 0 : private.opacity;

         if (navigator.appName == "Microsoft Internet Explorer") {
            private.msgDv.style.filter  = "alpha(opacity=" + parseInt(100 * private.opacity) + ")";
         }
         else {
            private.msgDv.style.opacity = private.opacity;
         }

         if (!io && private.opacity == 0) {
            private.msgDv.style.display = 'none';
            clearInterval(private.fadeId);
         }

         if (io && private.opacity == 1) {
            clearInterval(private.fadeId);
            setTimeout(XMessage.hide, 3000);
         }
      },

      applyStyle: function() {
         // Popup style
         private.msgDv.style.display    = "none";
         private.msgDv.style.position   = "fixed";
         private.msgDv.style.top        = "0px";
         private.msgDv.style.width      = "500px";
         private.msgDv.style.padding    = "15px 15px";
         private.msgDv.style.background = "#d8eaff";
         private.msgDv.style.opacity    = "0";
         private.msgDv.style.border     = "1px #000000 solid";
         private.msgDv.style.borderTop  = "0px";
         private.msgDv.style.zIndex     = "999";

         if (navigator.appName == "Microsoft Internet Explorer") {
            private.msgDv.style.filter = "alpha(opacity = 0)";
            private.msgDv.style.position = "absolute";
         }
      }
   };

   return public;
}();