// ------------------------------------------

// Global Variables

//

var ma=new Array();

 

var mx=new Array();

 

var my=new Array();

 

var mc=new Array();

 

var mpos=new Array();

 

var mal=0;  

 

var main=0;                   // table down (1), table left (2), no table down (3)

 

var menuw=200;                // menu width

 

var psrc=0;                   // event target (NS7) or srcElement

 

var pname="";

 

var al="";                    // cell alignment

 

var gd=0;

 

var gx,gy;                    // x,y posistion of an element relative to the screen

 

var d=document;

 

// ------------------------------------------

 

var NS7 = (!d.all && d.getElementById);   // !d.all implies not IE...maybe

 

var NS4 = (!d.getElementById);            // pre version 4 of IE & Netscape

 

var IE5 = (!NS4 && !NS7 && (navigator.userAgent.indexOf('MSIE 5.0') != -1 || 

           navigator.userAgent.indexOf('MSIE 5.2') != -1));       

 

var IE5p5 = (!NS4 && !NS7 && navigator.userAgent.indexOf('MSIE 5.5') != -1);

 

var NS6 = (NS7 && navigator.userAgent.indexOf('Netscape6') != -1);            

 

var SAF = navigator.userAgent.indexOf('Safari') != -1;

 

p = navigator.userAgent.indexOf('Opera');

 

if(p > -1){

  p = navigator.userAgent.charAt(p + 6);

 

  if(p > 6)

    NS7 = 1;

  else 

    NS4 = 1;

}

 

var ifr = (!NS7 && !NS4 && !IE5 && !IE5p5);

 

var quirk = (d.compatMode && d.compatMode == "BackCompat") || IE5 || IE5p5;

 

// -----------------------------------------------------

// function startMainMenu 

//

//  @param  file = image file for left/top

//    @param     h = image height

//    @param     w = image width

//  @param   dir = global var main used in 

//                     building the menu table 

//           dir = 1 table menu expands to the right

//               dir = 2 table menu expands down

//               dir = 3 no table exapnds down

//

//    @param space = cell spacing

//    @param align = cell alignment; 1=right

//                      2=center

//

 

function startMainMenu(file,h,w,dir,space,align)

{

  if(w>0)

    menuw = w;    // menu width = image width

 

  main = dir;     // re-assign dir to global variable main

 

  if(main == 1 || main == 2)  // initiate a table

 

    d.write("<table border=\"0\" cellspacing=\"" + space +

       "\" cellpadding=\"0\">");

 

  if(file!="")

  {

    al="";              // global variable cell alignment

 

    if(align==1)

      al=" align=\"right\"";

 

    if(align==2)

      al=" align=\"center\"";

 

    if(main==1 || main==2)    // new row & column

 

      d.write("<tr style='line-height:1px'><td" + al +">");

 

    // --------------------------------------------------

    // Add the image. This will be in a table cell or not

    // loc is global variable defined in dea.js

    // --------------------------------------------------

 

    d.write("<img src=\"" + loc + file + "\" border=\"0\"");

 

    if(h > 0)

      d.write(" height=\"" + h + "\"");

 

    if(w > 0)

      d.write(" width=\"" + w + "\"");

 

    d.write(" />");

 

    // ---------------------------------------------

    // Close out the table row or insert a break tag

    // ---------------------------------------------

 

    if(main == 1 || main == 2)      // end column

      d.write("</td>");

 

    if(main==1)               // end row

      d.write("</tr>");

 

    if(main==3)               // new line

      d.write("<br />");

  }

 

}

 

// -----------------------------------------------------

// function endMainMenu 

//

//    @param  file = image file for right/bottom

//    @param     h = image height

//    @param     w = image width

//

 

function endMainMenu(file,h,w)

{

  if(file!="")

  {

    // ---------------------------------------------

    // If there is an image to insert, insert it

    // global variable main was set in startMainMenu

    // ---------------------------------------------

 

    if(main == 1)             // new row

      d.write("<tr>");

 

    if(main==1 || main==2)          // new column

      d.write("<td" + al + ">");

 

    // --------------------------------------------------

    // Add the image. This will be in a table cell or not

    // loc is global variable defined in dea.js

    // --------------------------------------------------

 

    d.write("<img src=\"" + loc + file + "\" border=\"0\"");

 

    if(h>0)

      d.write(" height=\"" + h + "\"");

 

    if(w>0)

      d.write(" width=\"" + w + "\"");

 

    d.write(" />");

 

    // -------------------

    // Close out the table

    // -------------------

 

    if(main == 1 || main == 2)            // end column & row

      d.write("</td></tr>");

  }

 

  if(main == 1 || main == 2)        // end table

    d.write("</table>");

 

  main=0;                     // reset main

}

 

// -----------------------------------------------------

// function mainMenuItem

//

//    @param  name = image file for left/top

//    @param   ext = image file extension or text for

//                     link if first character is not .

//    @param     h = image height

//    @param     w = image width

//  @param   url = link url

//    @param   tar = link target (i.e. "_blank")

//    @param   alt = image alternate text

//  @param   dir = determines whether to create an

//                     onmouseout & onmouseover event

//    @param state = determines if image change occurs

//    @param     s = style for non-graphic link

//

 

function mainMenuItem(name,ext,h,w,url,tar,alt,dir,state,s)

{

  if(NS4 && main == 0)

    return;

 

  var isgraphic = ext.charAt(0) == ".";   // is an image specified?

 

  // ---------------------------------------------

  // global variable main was set in startMainMenu

  // ---------------------------------------------

 

  if(main == 1)                                       // new row

    d.write("<tr>");

 

  if(main == 1 || main == 2)              // new column

    d.write("<td" + al + ">");

 

  d.write("<a ");                               // open link tag

 

  if(url != "" || !isgraphic)             // if there is a url or a graphic

  {

 

    if(typeof(clx) != "undefined")        // clx not defined anywhere so

    {                                                 // this will never be true.

      url="?"+clx;                                    // Presumably this would set

      tar="";                                         // params for cl program to

      alt="Click to edit";                      // to be called. This can be

    }                                                 // done in url.

 

    d.write("href=\"" + url + "\" ");     // set the link reference

  }

 

  if(tar!="")                                         // set the link target

    d.write("target=\"" + tar + "\" ");

 

  d.write("onmouseout=\"");                     // initiate mouse out event

 

  if(dir > 0)                                         // function tidyMenu will be 

    d.write("tidyMenu(event);");          // called on mouseout if desired

 

  d.write("\" onmouseover=\"");                 // intiate the mouse over event

 

  if(dir>0)                                                // function openMenu will be

    d.write("openMenu(event, '" + name + // called on mouseover if desired

      "'," + dir + "," + bc + "," + fc + 

      ");");

 

  if(state > 1 && isgraphic)             // function setGraphic will

  {                                                        // swap images on mouseover

    d[name + "_over"] = new Image();      // if specified

    d[name + "_over"].src = loc + name + 

      "_over" + ext;

    d.write("setGraphic(event, '" + loc + 

      name + "_over" + ext + "');");

  }

 

  d.write("return false;\"");             // no return from script function

 

  if(!isgraphic)                                // if no graphic, set the link

    d.write(" class=\"" + s +                   // style for a textual link

      "\" style=\"width:" + 

      (w>0?w:menuw) + "px\"");

 

  d.write(">");                                       // close the link tag

 

  if(isgraphic)                                       // place graphic inside link tags

  {

    d.write("<img src=\"" + loc + name + ext + "\" border=\"0\"");

 

    if(h>0)

      d.write(" height=\"" + h + "\"");

 

    if(w>0)

      d.write(" width=\"" + w + "\"");

 

    if(alt!="")

      d.write(" alt=\"" + alt + "\"");

 

    d.write(" />");

  }

 

  else                                                      // place text inside link tags

  {

    d.write("&nbsp;" + ext + "&nbsp;");

  }

 

  d.write("</a>");                                    // close out link

 

  if(main==1 || main==2)                        // end column

    d.write("</td>");

 

  if(main==1)                                         // end row

    d.write("</tr>");

 

  if(main==3)                                         // add line break

    d.write("<br />");

}

 

// -----------------------------------------------------

// function startSubmenu

//

//  @param  name = main menu image name

//    @param style = style class

//    @param    sw = submenu width

//

 

function startSubmenu(name,style,sw)

{

  var depth = name.split("_").length + 1000;    // z-index of div tag

 

  if(NS4)

    return;

 

  if(sw > 0)

    menuw = sw;                                                   // set menu width

 

  // ----------------------

  // Initiate a <DIV> block

  // ----------------------

 

  d.write("<div id=\"" + name + "\" class=\"" + // global variable bd is

    style + "\"  style=\"z-index:" + depth +    // set in dea.js

    ";width:" +

    (menuw + (NS7 ? bd * 2 :0)) + "px\">");     

}

 

// -----------------------------------------------------

// function endSubmenu

//

//  @param  name = main menu image name

//

 

function endSubmenu(name)

{

  if(NS4)

    return;

 

  d.write("</div>");          // close <DIV> block

 

  // ----------------------------------

  // if browser not = netscape 7, set a 

  // mouseout event for the <DIV> block

  // ----------------------------------

 

  if(!NS7)

    d.getElementById(name).onmouseout=tidyMenu;

}

 

// -----------------------------------------------------

// function submenuItem

//

//  @param  text = link text

//  @param   url = link url

//    @param   tar = link target (i.e. "_blank")

//    @param     s = style for non-graphic link

//

 

function submenuItem(text,url,tar,s)

{

  if(NS4)

    return;

 

  if(text.charAt(0) == '<')         // if the text is a self 

    d.write(text);                        // contained tag just write it

 

  else 

 

    // ----------------------------------------------------

    // this appears to place an inline <DIV> containing

    // an image, but the image doesn't exist on the server

    // ----------------------------------------------------

 

    if(text=="---")

 

      d.write("<div class=\"" + s + "\" style=\"width:" +

        menuw + "px\"><center><img src=\"" + loc + 

        "---.gif\" height=\"8\" width=\"" + 

        (menuw - 6 - (2 * bd)) + "\" border=0/></center></div>");

 

    else

    {

      d.write("<a ");                                       // initiate link

 

      if(url!="")                                           // set href

        d.write("href=\"" + url + "\" ");

 

      if(tar!="")                                           // set target

        d.write("target=\"" + tar + "\" ");

 

      d.write("class=\"" + s +                              // set link class,

        "\" style=\"width:" + menuw +                 // link width, link

        "px\">&nbsp;" + text + "&nbsp;</a>");   // text then close

    }

}

 

// -----------------------------------------------------

// function setGraphic

//

//    Swaps images on an event

//

//  @param event = triggering event (mouseover)

//  @param  name = fully qualified path to image

//

 

 

function setGraphic(event,name)

{

  if(NS4)

    return;

 

  psrc = (NS7) ? event.target : event.srcElement;

 

  pname = psrc.src;

 

  if(NS7)

    event.target.src = name;

 

  else 

    event.srcElement.src = name;

}

 

// -----------------------------------------------------

// function openMenu

//

//    Opens a sub-menu on an event

//

//    @param event = triggering event (mouseover)

//  @param    id = element id of <DIV> containing menu

//    @param   pos = determines where the menu opens

//    @param    bc = background color (global fc)

//    @param    fc = foreground color (global bc)

//

 

 

function openMenu(event,id,pos,bc,fc)

{

  if(NS4)

    return;

 

  var el,x,y,dx,dy;

 

  var bwidth;

 

  if(gd == 0 || mal == 0)     // global variables both initially 0

  {

    var p = d.getElementById(id);

    gx = 0;

    gy = 0;

 

    while(p && p.offsetParent)

    {

      p   = p.offsetParent;

      gx += p.offsetLeft;

      gy += p.offsetTop;

    }

 

    if(p) gd = 1;       

 

  }

 

  if(mal > 0)                 // initially 0

  {

    el = d.getElementById(ma[mal-1]);

 

    if(mx[mal-1] != el.offsetLeft || my[mal-1] != el.offsetTop)

    {

      el.style.left = mx[mal - 1] + "px";

      el.style.top  = my[mal - 1] + "px";

    }

    alert ('mal > 0 call tidyMenu')

    tidyMenu(event);

  }

 

  if(mal > 1)

    pos = mpos[mal-1];

 

 

  if(NS7)                                 // not IE

  {

      //alert ('Open Menu NS7');

    bwidth = window.innerWidth;

    var p = event.target;

 

    if(p.nodeName != "A" && p.nodeName != "IMG" && p.parentNode.nodeName == "A")

      p = p.parentNode;

 

    dx = p.offsetWidth;

    dy = p.offsetHeight;

 

    if(mal == 0)

    {

      x = p.x;

      y = p.y;

 

      if(typeof(p.x) == "undefined" || (!NS6 && !SAF))

      {

        x = p.offsetLeft;

        y = p.offsetTop;

 

        while(!NS6 && p.parentNode.nodeName != "BODY")

        {

          p = p.parentNode;

 

          if(p.nodeName == "TD" || p.nodeName == "TABLE")

          {

            x += p.offsetLeft;

            y += p.offsetTop;

          }

        }

      }

    }

    else

    {

      el = d.getElementById(ma[mal-1]);

      x  = el.offsetLeft;

      y  = el.offsetTop + p.offsetTop;

    }

 

    if(pos != 3)

      x -= bd;

 

    if(pos == 3 && mal > 0)

      x += bd;

 

  }

  else                  // Internet Explorer

  {

                                                                                                      

    bwidth = document.body.clientWidth;

    x  = event.clientX - event.offsetX - d.body.clientLeft - gx;

    y  = event.clientY - event.offsetY - d.body.clientTop  - gy;

    dx = event.srcElement.offsetWidth;

    dy = event.srcElement.offsetHeight;

 

    if(!quirk)

    {

      x += d.documentElement.scrollLeft - 2;

      y += d.documentElement.scrollTop  - 2;

    }

    else

    {

      x += d.body.scrollLeft;

      y += d.body.scrollTop;

    }

 

    if(mal > 0)

    {

      y -= bd; 

      if(pos != 3)

        x -= 2 * bd;

    }

  }

  el = d.getElementById(id);

 

  if(el && el.style.visibility!="visible")

  {

    if(pos == 1)

    {

      x += dx;

 

      el.style.left = x - el.offsetWidth + "px";

 

      el.style.top = y + "px";                  

 

      nspeed = el.offsetWidth / frames;         

 

      if(x + gx + el.offsetWidth > bwidth)

      {

        x  -= dx;                               

        pos = 3;

      }

    }

    else if(pos == 2)

    {

      y += dy;                                  

 

      el.style.left = x + "px";                       

 

      el.style.top  = y - el.offsetHeight + "px";     

      nspeed = el.offsetHeight / frames;              

    }

    if(pos == 3)

    {

      x -= el.offsetWidth;                            

      

      el.style.left = x + el.offsetWidth + "px";

      

      el.style.top  = y + "px";

      

      nspeed = el.offsetWidth/frames;

 

      if(x + gx < 0)

      { 

        x += el.offsetWidth;

 

        pos = 1;

 

        x += dx;

 

        el.style.left = x - el.offsetWidth + "px";

 

        el.style.top = y + "px";

 

        nspeed = el.offsetWidth / frames;

 

      }

    }

    mx[mal] = x;

 

    my[mal] = y;

 

    if(NS7 || IE5 || frames==0)

    {

      el.style.left = x + "px";

 

      el.style.top = y + "px";

 

    }

 

    if(!IE5)

      clipMenu(mal,el);

 

    el.style.visibility = "visible";

 

    ma[mal] = id;

 

    mpos[mal] = pos;

 

    if(NS7)

    {

      var p = event.target;

 

      if(p.nodeName != "A" && p.parentNode.nodeName == "A")

        p = p.parentNode;

 

      mc[mal] = p.style;

 

      if(!NS6 && mal > 0)

      {

        mc[mal].backgroundColor = "#" + bc.toString(16);

 

        mc[mal].color = "#" + fc.toString(16);

 

      }

 

      el.onmouseout = tidyMenu;

 

    }

    else

    {

      mc[mal] = event.srcElement.style;

 

      if(mal > 0)

      {

        mc[mal].backgroundColor = bc;

 

        mc[mal].color = fc;

 

      }

    }

 

    mal++;

  }

 

  if(ifr && el && frames == 0 && (typeof(tr) == "undefined" || tr == ""))

  {

    var p = d.getElementById(id + "i");

 

    if(p)

    {

      p.style.top = y + "px";

 

      p.style.left = x + "px";

 

      p.style.width = el.style.width;

 

      p.style.height = el.offsetHeight + "px";

 

      p.style.display = "block";

 

    }

    else

    {

      ifr = "<iframe id=\"" + 

            id + 

            "i\" style=\"position:absolute;left:" + 

            x + 

            "px;width:" + 

            el.style.width + 

            ";height:" + 

            el.offsetHeight + 

            "px;top:" + y + 

            "px; z-index:998; display:block; \" scrolling=\"no\" frameborder=\"0\"></iframe>";

 

      el.insertAdjacentHTML('beforeBegin',ifr);

    }

  }

}

 

 

function overMenu(x,y)

{

  x -= gx;

 

  y -= gy;

 

  for(i=mal-1; i>=0; i--)

  {

    var el=d.getElementById(ma[i]);

 

    if(el.offsetLeft + el.offsetWidth > x && el.offsetLeft <= x && 

       el.offsetTop + el.offsetHeight > y && el.offsetTop <=y)

    {

      return ma[i];

    }

 

  }

 

  return "";

}

 

function tidyMenu(e)

{  

  if(NS4)

    return;

 

  if(NS7)

  {

    t=overMenu(e.pageX,e.pageY);

 

    if(t != "" && (e.target.firstChild == e.relatedTarget || 

                   e.target == e.relatedTarget.firstChild))

      return;

  }

  else            // Internet Explorer

  {

    var x = event.clientX - d.body.clientLeft;

 

    var y = event.clientY - d.body.clientTop;

 

    if(!quirk)

    {

      x += d.documentElement.scrollLeft - 2;

 

      y += d.documentElement.scrollTop - 2;

 

    }

    else

    {

      x += d.body.scrollLeft;

 

      y += d.body.scrollTop;

    }

 

    t=overMenu(x,y);

  }

 

  om=0;

 

  for(i=0; i<mal; i++)

  {

    var mail = ma[i].length;

 

    if(mail > t.length || t.substring(0,mail) != ma[i])

    {

      var el = d.getElementById(ma[i]);

 

      el.style.visibility = "hidden";

 

      mc[i].backgroundColor = "";

 

      mc[i].color = "";

 

      if(ifr)

      {

        var p=d.getElementById(ma[i] + "i");

 

        if(p)

          p.style.display = "none";

 

      }

    }

    else

    {

      ma[om] = ma[i];

 

      mx[om] = mx[i];

 

      my[om] = my[i];

 

      om++;

    }

  }

 

  mal=om;

 

  if(mal == 0 && psrc)

    psrc.src = pname;

 

}

 

function animate()

{

  for(i=0; i<mal; i++)

  {

    var el = d.getElementById(ma[i]);

 

    if(el.style.visibility == "visible")

    {

      if(el.offsetLeft < mx[i])

        el.style.left = Math.min(el.offsetLeft + nspeed, mx[i]) + "px";

 

      if(el.offsetLeft > mx[i])

        el.style.left = Math.max(el.offsetLeft - nspeed, mx[i]) + "px";

 

      if(el.offsetTop < my[i])

        el.style.top = Math.min(el.offsetTop + nspeed, my[i]) + "px";

 

      clipMenu(i,el);

 

    }

  }

 

  if(mal != 0 || frames != 0)

 

    setTimeout("animate()",50);

 

}

 

function clipMenu(i,el)

{

  if(el.offsetLeft > mx[i])

    el.style.clip = "rect(" + (my[i] - el.offsetTop) + "px " + (el.offsetWidth +

                    (mx[i] - el.offsetLeft)) + "px " + el.offsetHeight + "px " + 0 + "px)";

  else 

    el.style.clip = "rect(" + (my[i] - el.offsetTop) + "px " + el.offsetWidth +

                    "px " + el.offsetHeight + "px " + (mx[i] - el.offsetLeft) + "px)";

}
