   //     This script Copyright 2002, Hyperbole Software, UnLtd.

   utils.layer_num = 1;

   if       (document.all)
           utils.Create_Layer
            = function(layer_content, parent)
                {
                 var layer = null;
                 var layer_name;
                 var html;


                 layer_name = "layer_" + utils.layer_num.Format(3, '0');
                 utils.layer_num++;

                 if  (parent == null)
                    parent = document.body;
                 else
                    parent = parent.layer;

                 html =   '<DIV ID="' + layer_name + '" '
                        +      'STYLE="position:absolute;visibility:hidden">'
                        + layer_content
                        + '</DIV>';

                 parent.insertAdjacentHTML('BeforeEnd', html);

                 layer = document.all[layer_name];

                 return(layer);
                }
   else if  (document.getElementById)
           utils.Create_Layer
            = function(layer_content, parent)
                {
                 var layer = null;
                 var layer_name;
                 var html;
                 var new_range;
                 var fragment;


                 layer_name = "layer_" + utils.layer_num.Format(3, '0');
                 utils.layer_num++;

                 if  (parent == null)
                    parent = document.body;
                 else
                    parent = parent.layer;

                 html = "position:absolute;visibility:hidden";

                 new_range = document.createRange();

                 layer = document.createElement("DIV");
                 layer.setAttribute('style', html);
                 layer.setAttribute('id',    layer_name);

                 parent.appendChild(layer);

                 new_range.setStartBefore(layer);
                 fragment = new_range.createContextualFragment(layer_content);
                 layer.appendChild(fragment);

                 return(layer);
                }
   else if  (document.layers)
           utils.Create_Layer
            = function(layer_content, parent)
                {
                 var layer = null;
                 var layer_name;
                 var html;
                 var layer_width = 200;


                 layer_name = "layer_" + utils.layer_num.Format(3, '0');
                 utils.layer_num++;

                 if  (parent == null)
                    layer = new Layer(layer_width);
                 else
                    layer = new Layer(layer_width, parent.layer);

                 layer.document.open();
                 layer.document.write(layer_content);
                 layer.document.close();
                 layer.document.content = layer_content;

                 return(layer);
                }


   if  (document.layers)
      utils.Layer
       = function(layer_content, parent)
           {
            if       (layer_content == null)
                   {
                    this.layer = utils.Create_Layer("", parent);
                    this.layer.document.content = "";
                   }
            else if  (typeof(layer_content) == 'object')
                   {
                    this.layer = layer_content;
                    this.layer.document.content = "";          // - This is a bug. There is no way to know the 
                   }                                           //   know the content of a predefined layer. This bug
                                                               //   will cause the current content of a layer to be 
                                                               //   wiped out if the forground color is set before 
                                                               //   setting the layer content.
            else
                   {
                    this.layer = utils.Create_Layer(layer_content, parent);
                    this.layer.document.content = layer_content;
                   }

            this.images = this.layer.document.images;
            this.parent = parent;
            this.style  = this.layer;
            this.style.fgColor = "#000000";

            if  (parent != null)
               this.style.visibility = 'inheret';

            window[this.layer.id] = this;
           }
   else
      utils.Layer
       = function(layer_content, parent)
           {
            if       (layer_content == null)
                    this.layer = utils.Create_Layer("", parent);
            else if  (typeof(layer_content) == 'object')
                    this.layer = layer_content;
            else
                    this.layer = utils.Create_Layer(layer_content, parent);

            this.images = document.images;
            this.parent = parent;
            this.style  = this.layer.style;

            window[this.layer.id] = this;
           }


   if       (document.getElementById)
           utils.Get_Layer
            = function(ID, doc)
                {
                 var layer_ID = null;


                 if  (! doc)
                    doc = window.document;

                 layer_ID = doc.getElementById(ID);

                 return(layer_ID);
                }
   else if  (document.layers)
           utils.Get_Layer
            = function(ID, doc)
                {
                 var indx;
                 var layer_document;
                 var layer_ID = null;


                 if  (typeof(doc) == 'undefined')
                   {
                    doc = window.document;
                    doc = document;
                   }

                 for (indx=0; indx<doc.layers.length; indx++)
                   {
                    if  (   (doc.layers[indx].id)
                         && (doc.layers[indx].id  == ID)
                        )
                      {
                       layer_ID = doc.layers[indx];
                       break;
                      }

                    layer_document = doc.layers[indx].document;
                    layer_ID = utils.Get_Layer(ID, layer_document);

                    if  (layer_ID != null)
                       break;
                   }

                 return(layer_ID);
                }
   else if  (document.all)
           utils.Get_Layer
            = function(ID, doc)
                {
                 var layer_ID = null;


                 if  (doc == null)
                    doc = window.document;

                 layer_ID = doc.all[ID];
                 if  (! layer_ID)
                    layer_ID = null;

                 return(layer_ID);
                }
   else
           utils.Get_Layer
            = function(ID, doc)
                {
                 return(null);
                }


   utils.Layer.prototype.Move_To
    = function(point)
        {
         this.Set_X(point.x);
         this.Set_Y(point.y);
        }

   utils.Layer.prototype.Move_By
    = function(delta)
        {
         var point = new Object();


         point.x = this.Get_X() + delta.x;
         point.y = this.Get_Y() + delta.y;

         this.Move_To(point);
        }

   utils.Layer.prototype.Set_Timeout
    = function(fxn, time)
       { setTimeout("window." + this.layer.id + "." + fxn, time); }

   utils.Layer.prototype.Set_Position
    = function(point)
        {
         this.Set_X(point.x);
         this.Set_Y(point.y);
        }

   utils.Layer.prototype.ReSize
    = function(size)
        {
         this.Set_Width(size.width);
         this.Set_Height(size.height);
        }
 
   utils.Layer.prototype.Set_Size
    = function(size)
        {
         this.ReSize(size);
        }

   utils.Layer.prototype.Not_Supported
    = function(fxn)
        {
         alert("'" + fxn +"' is not supported by this browser.");
         return("");
        }

   if       (   (document.getElementsByName)
             || (document.all)
            )
          {
           utils.Layer.prototype.Get_Property_Value
            = function(property_name)
                {
                 var value = null;


                 if       (   (document.defaultView)
                           && (document.defaultView.getComputedStyle)
                          )
                        {
                         if  (utils.Browser.browser.family == 'gecko')
                           {
                            switch (property_name)
                              {
                               case 'clip' :
                                  return(this.style[property_name]);
                                 break;

                               case 'top'  :
                                  if  (   (utils.Browser.browser.version < 0.96)
                                       && (this.style.position == 'relative')
                                      )
                                     return(this.layer.offsetTop);
                                 break;

                               case 'left' :
                                  if  (   (utils.Browser.browser.version < 0.96)
                                       && (this.style.position == 'relative')
                                      )
                                     return(this.layer.offsetLeft);
                                 break;
                              }
                           }

                         // Convert the CSS style propertyName to W3C style
                         // property-name.

                         var indx;
                         var propertyName = property_name;
                         while ( (indx=propertyName.search(/[A-Z]/)) != -1)
                           {
                            var first  = propertyName.substr(0, indx);
                            var middle = propertyName.substr(indx, 1);
                            var last   = propertyName.substr(indx+1);

                            middle = middle.toLowerCase();
                            propertyName =   first + '-' + middle + last;
                           }

                         value = document.defaultView.
                                 getComputedStyle(this.layer, "").
                                 getPropertyValue(propertyName);

                         if  (! value)
                            if  (this.style[property_name])
                               value = this.style[property_name];
                            else
                               value = Not_Supported(property_name);
                        }
                 else if  (typeof(this.style[property_name]) == 'undefined')
                         value = Not_Supported(property_name);
                 else if  (   (utils.Browser.browser.family != 'ie4')
                           || (utils.Browser.browser.version < 5)
                          )
                        {
                         // IE4+, Opera, NN4
                         value = this.style[property_name];
                        }
                 else
                        {
                         // IE5+
                         value = this.layer.currentStyle[property_name];
                         if  (!value)
                           value = this.style[property_name];
                        }

                 return(value);
                }

           utils.Layer.prototype.Show
            = function()
                {
                 this.style.visibility = 'visible';
                }

           utils.Layer.prototype.Hide
            = function()
                {
                 this.style.visibility = 'hidden';
                }

           utils.Layer.prototype.Get_X
            = function()
                {
                 var x = this.Get_Property_Value('left');

                 if  (typeof(x) == 'number')
                    return(x);
                 
                 if  (x == "")
                    x = this.style.left = '0px';

                 return(parseInt(x));
                }

           utils.Layer.prototype.Set_X
            = function(x)
                {
                 if  (typeof(this.style.left) == 'number')
                    this.style.left = x;
                 else
                    this.style.left = x + "px";
                }

           utils.Layer.prototype.Get_Y
            = function()
                {
                 var y = this.Get_Property_Value('top');

                 if  (typeof(y) == 'number')
                    return(y);
                 
                 if  (y == "")
                    y = this.style.top = '0px';

                 return(parseInt(y));
                }

           utils.Layer.prototype.Set_Y
            = function(y)
                {
                 if  (typeof(this.style.top) == 'number')
                    this.style.top = y;
                 else
                    this.style.top = y + "px";
                }

           utils.Layer.prototype.Set_Content
            = function(text)
                {
                 this.layer.innerHTML = text;
                }

           utils.Layer.prototype.Set_Image
            = function(image)
                {
                 this.style.backgroundImage = "url(" + image + ")";
                }

           if       (document.all)
             {
              utils.Layer.prototype.Add_Event_Handler
               = function(event_name, handler)
                   {
                    var this_layer = this;

                    this.layer[event_name]
                     = function()
                         {
                          var evnt = window.event;
                          var copy_event = new Object();
                          var indx;

                          evnt.cancelBubble = true;

                          for (indx in evnt)
                             copy_event[indx] = evnt[indx];

                          copy_event.parms = new Object();
                          copy_event.parms.layerX   = evnt.x || evnt.clientX;
                          copy_event.parms.layerY   = evnt.y || evnt.clientY;
                          copy_event.parms.button   = evnt.button;
                          copy_event.parms.keyCode  = evnt.keyCode;
                          copy_event.parms.altKey   = evnt.altKey  ;
                          copy_event.parms.ctrlKey  = evnt.ctrlKey ;
                          copy_event.parms.shiftKey = evnt.shiftKey;
                          if  (evnt.srcElement.search)
                             copy_event.parms.ID    = evnt.srcElement.search.substr(1);
                          else
                             copy_event.parms.ID    = "";

                          evnt = copy_event;

                          return(handler(this_layer, evnt));
                         }
                   }
             }

           else if  (document.getElementById)
             {
              utils.Layer.prototype.Add_Event_Handler
               = function(event_name, handler)
                   {
                    var this_layer = this;

                    this.layer[event_name]
                     = function(event)
                         {
                          event.cancelBubble = true;

                          event.parms = new Object();
                          event.parms.layerX   = event.pageX;
                          event.parms.layerY   = event.pageY;
                          event.parms.button   = event.button;
                          event.parms.keyCode  = event.keyCode;
                          event.parms.altKey   = event.altKey  ;
                          event.parms.ctrlKey  = event.ctrlKey ;
                          event.parms.shiftKey = event.shiftKey;
                          event.parms.ID       = event.target.parentNode.toString();
                          if  (event.parms.ID.match(/\?/))
                             event.parms.ID    = event.parms.ID.replace(/[^?]*\?/, "");
                          else
                             event.parms.ID    = "";

                          return(handler(this_layer, event));
                         }
                   }
             }

           utils.Layer.prototype.Remove_Event_Handler
            = function(event_name)
                {
                 this.layer[event_name] = null;
                }
           utils.Layer.prototype.Set_Width
            = function(width)
                {
                 if  (typeof(this.style.width) == 'number')
                    this.style.width = width;
                 else
                    this.style.width = width + "px";
                }

           utils.Layer.prototype.Set_Height
            = function(height)
                {
                 if  (typeof(this.style.height) == 'number')
                    this.style.height = height;
                 else
                    this.style.height = height + "px";
                }

           utils.Layer.prototype.Set_Background_Color
            = function(color)
                {
                 this.style.backgroundColor = color;
                }
          }
   else if  (document.layers)
          {
           utils.Layer.prototype.Show
            = function()
                {
                 this.style.visibility = 'show';
                }

           utils.Layer.prototype.Hide
            = function()
                {
                 this.style.visibility = 'hide';
                }

           utils.Layer.prototype.Get_X
            = function()
                {
                 return(this.style.left);
                }

           utils.Layer.prototype.Set_X
            = function(x)
                {
                 this.style.left = x;
                }

           utils.Layer.prototype.Get_Y
            = function()
                {
                 return(this.style.top);
                }

           utils.Layer.prototype.Set_Y
            = function(y)
                {
                 this.style.top = y;
                }

           utils.Layer.prototype.Set_Content
            = function(text)
                {
                 this.layer.document.content = text;
                 this.Set_Layer_Content(text);
                }

           utils.Layer.prototype.Set_Image
            = function(image)
                {
                 this.style.background.src = image;
                }

           utils.Layer.Events
            = {
               onabort:     Event.ABORT,
               onAbort:     Event.ABORT,
               onblur:      Event.BLUR,
               onBlur:      Event.BLUR,
               onchange:    Event.CHANGE,
               onChange:    Event.CHANGE,
               onclick:     Event.CLICK,
               onClick:     Event.CLICK,
               ondblclick:  Event.DBLCLICK,
               onDblClick:  Event.DBLCLICK,
               ondragdrop:  Event.DRAGDROP,
               onDragDrop:  Event.DRAGDROP,
               onerror:     Event.ERROR,
               onError:     Event.ERROR,
               onfocus:     Event.FOCUS,
               onFocus:     Event.FOCUS,
               onkeydown:   Event.KEYDOWN,
               onKeyDown:   Event.KEYDOWN,
               onkeypress:  Event.KEYPRESS,
               onKeyPress:  Event.KEYPRESS,
               onkeyup:     Event.KEYUP,
               onKeyUp:     Event.KEYUP,
               onload:      Event.LOAD,
               onLoad:      Event.LOAD,
               onmousedown: Event.MOUSEDOWN,
               onMouseDown: Event.MOUSEDOWN,
               onmousemove: Event.MOUSEMOVE,
               onMouseMove: Event.MOUSEMOVE,
               onmouseout:  Event.MOUSEOUT,
               onMouseOut:  Event.MOUSEOUT,
               onmouseover: Event.MOUSEOVER,
               onMouseOver: Event.MOUSEOVER,
               onmouseup:   Event.MOUSEUP,
               onMouseUp:   Event.MOUSEUP,
               onmove:      Event.MOVE,
               onMove:      Event.MOVE,
               onreset:     Event.RESET,
               onReset:     Event.RESET,
               onresize:    Event.RESIZE,
               onResize:    Event.RESIZE,
               onselect:    Event.SELECT,
               onSelect:    Event.SELECT,
               onsubmit:    Event.SUBMIT,
               onSubmit:    Event.SUBMIT,
               onunload:    Event.UNLOAD,
               onUnLoad:    Event.UNLOAD
              };

           utils.Layer.prototype.Add_Event_Handler
            = function(event_name, handler)
                {
                 var this_layer = this;


                 this.layer.captureEvents(utils.Layer.Events[event_name]);

                 this.layer[event_name]
                  = function(event)
                      {
                       with (event)
                         {
                          event.parms    = new Object();
                          event.parms.layerX   =   pageX;
                          event.parms.layerY   =   pageY;
                          event.parms.button   =   which;
                          event.parms.keyCode  =   which;
                          event.parms.altKey   = ((modifiers & Event.ALT_MASK)     != 0);
                          event.parms.ctrlKey  = ((modifiers & Event.CONTROL_MASK) != 0);
                          event.parms.shiftKey = ((modifiers & Event.SHIFT_MASK)   != 0);
                          if  (target.search)
                             event.parms.ID    = target.href.replace(/.*\?/, "");
                          else
                             event.parms.ID    = "";
                         }

                       return(handler(this_layer, event));
                      }
                }

           utils.Layer.prototype.Remove_Event_Handler
            = function(event_name)
                {
                 this.layer.releaseEvents(utils.Layer.Events[event_name]);
                 this.layer[event_name] = null;
                }

           utils.Layer.prototype.Set_Layer_Content
            = function(text)
                {
                 this.layer.document.open('text/html');
                 this.layer.document.write(text);
                 this.layer.document.close();
                }

           utils.Layer.prototype.Set_Width
            = function(width)
                {
                 this.style.clip.width = width;
                }

           utils.Layer.prototype.Set_Height
            = function(height)
                {
                 this.style.clip.height = height;
                }

           utils.Layer.prototype.Set_Background_Color
            = function(color)
                {
                 if  (color)
                   {
                    this.style.bgColor          = color;
                    this.layer.document.bgColor = color;
                    this.style.clip.width       = this.style.clip.width;
                    this.style.clip.height      = this.style.clip.height;
                   }
                }
          }
   else
          {
           utils.Layer.prototype.Show
            = function()
                {
                 this.Not_Supported("Show");
                }

           utils.Layer.prototype.Hide
            = function()
                {
                 this.Not_Supported("Hide");
                }

           utils.Layer.prototype.Get_X
            = function()
                {
                 this.Not_Supported("Get_X");
                }

           utils.Layer.prototype.Set_X
            = function(x)
                {
                 this.Not_Supported("Set_X");
                }

           utils.Layer.prototype.Get_Y
            = function()
                {
                 this.Not_Supported("Get_Y");
                }

           utils.Layer.prototype.Set_Y
            = function(y)
                {
                 this.Not_Supported("Set_Y");
                }

           utils.Layer.prototype.Set_Content
            = function(text)
                {
                 this.Not_Supported("Set_Content");
                }

           utils.Layer.prototype.Set_Image
            = function(image)
                {
                 this.Not_Supported("Set_Image");
                }

           utils.Layer.prototype.Set_Width
            = function(image)
                {
                 this.Not_Supported("Set_Width");
                }

           utils.Layer.prototype.Set_Height
            = function(image)
                {
                 this.Not_Supported("Set_Height");
                }

           utils.Layer.prototype.Set_Background_Color
            = function()
                {
                 this.Not_Supported("Set_Background_Color");
                }
          }




   window.Layer_Object      = utils.Layer;
   window.Get_Layer         = utils.Get_Layer;
   window.Get_Layer_by_Name = utils.Get_Layer_by_Name

   //     This script Copyright 2002, Hyperbole Software, UnLtd.



//     <<<<<     End of File     >>>>>





