var isDOM=document.getElementById?1:0;
var isIE=document.all?1:0;
var isNS4=navigator.appName=='Netscape'&&!isDOM?1:0;
var isOp=window.opera?1:0;
var isDyn=isDOM||isIE||isNS4;
function getRef(id, par)
{
 par=!par?document:(par.navigator?par.document:par);
 return isIE ? par.all[id] :
  (isDOM ? (par.getElementById?par:par.ownerDocument).getElementById(id) :
  (isNS4 ? par.layers[id] : null));
}
function getSty(id, par)
{
 var r=getRef(id, par);
 return r?(isNS4?r:r.style):null;
}
if (!window.LayerObj) var LayerObj = new Function('id', 'par', 'this.ref=getRef(id, par); this.sty=getSty(id, par); return this');
function getLyr(id, par) { return new LayerObj(id, par) }
function LyrFn(fn, fc)
{
 LayerObj.prototype[fn] = new Function('var a=arguments,p=a[0],px=isNS4||isOp?0:"px"; ' + 'with (this) { '+fc+' }');
}
LyrFn('y','if (!isNaN(p)) sty.top=p+px; else return parseInt(sty.top)');
LyrFn('h','if (p) (isNS4?sty.clip:sty).height=p; ' + 'else return (isNS4?ref.document.height:ref.offsetHeight)');
LyrFn('vis','sty.visibility=p');
LyrFn('write','if (isNS4) with (ref.document){write(p);close()} else ref.innerHTML=p');
function ExpandingMenu(myName, width)
{
 this.myName = myName;
 this.width = width;
 this.yPos = 0;
 this.mainLyr = null;
 this.clickCmd = '';

 this.menu = new Array();
 this.addRef = [ this.menu ];
}
var EmPt = ExpandingMenu.prototype;
EmPt.doVis = function(type, nest) { with (this)
{
 var targ = this;
 for (var i = 1; i < nest.length; i++) targ = targ.menu[nest[i]];
 if (!type) type = (targ.expanded ? -1 : 1);
 if ((type == 1) && !targ.expanded)
 {
  targ.expanded = 1;
 }
 else if ((type == -1) && targ.expanded)
 {
  targ.expanded = 0;
  for (var i in targ.menu) targ.menu[i].lyr.vis('hidden');
 }
 else return true;
 var tmpl = targ.template;
 for (var c = 0; c < targ.outVals.length; c++)
  tmpl = tmpl.replace('%' + c + '%',
   ((targ.expanded && targ.overVals[c]) ? targ.overVals[c] : targ.outVals[c]));
 targ.lyr.write(tmpl);
 yPos = 0;
 position(menu, true);
}}
EmPt.position = function(currM, menuVis) { with (this)
{
 for (var i in currM) with(currM[i].lyr)
 {
  if (menuVis)
  {
   y(yPos);
   yPos += (isOp&&!document.documentElement) ? sty.pixelHeight : h();
   vis('visible');
  }
  else vis('hidden');
  if (currM[i].menu) position(currM[i].menu, (menuVis && currM[i].expanded));
 }
 if (isOp&&!document.documentElement) mainLyr.sty.pixelHeight = yPos;
 mainLyr.h(yPos);
}}
EmPt.makeMenu = function(mObj, mNest, doRefs) { with (this)
{
 if (!mHTML) var mHTML = '';
 for (var i in mObj)
 {
  var itemPath = new Array();
  for (var n in mNest) itemPath[n] = mNest[n];
  itemPath[itemPath.length] = i;
  var lyrID = myName + '_Menu_' + itemPath.join('_');
  if (!doRefs)
  {
   var cmd = myName + '.doVis(0, [null, ' + itemPath.join(', ') + '])';
   if (isNS4) mHTML += '<layer id="' + lyrID + '" left="0" visibility="hidden" ' +
    'onmouseover="'+myName+'.clickCmd = \'' + cmd + '\'" onmouseout="'+myName+'.clickCmd=\'\'">';
   else mHTML += '<div id="' + lyrID + '" style="position: absolute; left: 0px; ' +
    'visibility: hidden" onclick="' + cmd + '">';
   var content = mObj[i].template;
   for (var c = 0; c < mObj[i].outVals.length; c++)
    content = content.replace('%' + c + '%', mObj[i].outVals[c]);
   mHTML += content + (isNS4 ? '</layer>' : '</div>');
  }
  else
  {
   mObj[i].lyr = getLyr(lyrID, isNS4 ? mainLyr.ref : null);
  }
  if (mObj[i].menu) mHTML += makeMenu(mObj[i].menu, itemPath, doRefs);
 }
 return mHTML;
}}
EmPt.setup = function(loaded) { with (this)
{
 if (isNS4 && !loaded)
 {
  this.oldOL = window.onload;
  window.onload = new Function('if ('+myName+'.oldOL) '+myName+'.oldOL(); ' +  myName+'.setup(true)');
  return true;
 }
 var str = makeMenu(menu, [], false);
 if (isNS4)
 {
  var anc = document.anchors[myName + '_Anchor'];
  mainLyr = getLyr((new Layer(width)).id);
  with (mainLyr)
  {
   sty.left = anc.x;
   sty.top = anc.y;
   vis('visible');
   with (ref.document) { write(str); close() }
  }
 }
 else
 {
  document.write('<div id="' + myName + '_Container" style="position: relative; ' +
  'width: ' + width + 'px">' + str + '</div>');
  mainLyr = getLyr(myName + '_Container');
 }
 makeMenu(menu, [], true);
 position(menu, true);
}}
function addProps(obj, data, names, addNull)
{
 for (var i = 0; i < names.length; i++) if(i < data.length || addNull) obj[names[i]] = data[i];
}
EmPt.addItem = function(template, outVals, overVals) { with (this)
{
 var thisMenu = addRef[addRef.length - 1];
 var addI = thisMenu[thisMenu.length] = new Object();
 if (!overVals) arguments[2] = [];
 addProps(addI, arguments,
  ['template', 'outVals', 'overVals', 'menu', 'expanded', 'lyr'], true);
}}
EmPt.addTrig = function(template, outVals, overVals) { with (this)
{
 addItem(template, outVals, overVals);
 var addM = addRef[addRef.length - 1];
 addRef[addRef.length] = addM[addM.length - 1].menu = new Array();
}}
EmPt.endMenu = function()
{
 this.addRef.length--;
}
var template1 = '&nbsp;&nbsp;<IMG SRC="images/arrow_menu.gif" WIDTH="5" HEIGHT="14">&nbsp;&nbsp;<a class="menu" href="%0%">%1%</a>';
var template2 = '%1%';
var template3 = '&nbsp;&nbsp;<IMG SRC="images/arrow_menu.gif" WIDTH="5" HEIGHT="14">&nbsp;&nbsp;<FONT CLASS="menuactive">%1%</FONT>';
var template4 = '&nbsp;&nbsp;<IMG SRC="images/arrow_menu.gif" WIDTH="5" HEIGHT="14">&nbsp;&nbsp;<FONT CLASS="menu">%1%</FONT>';
var xpMenu = new ExpandingMenu('xpMenu', 112);
if (isNS4)
{
 document.captureEvents(Event.CLICK);
 document.onclick = function(evt)
 {
  eval(xpMenu.clickCmd);
  return document.routeEvent(evt);
 }
 var nsWinW=innerWidth, nsWinH=innerHeight, xpmOldOR=window.onresize;
 window.onresize = function()
 {
  if (xpmOldOR) xpmOldOR();
  if (nsWinW!=innerWidth || nsWinH!=innerHeight) history.go(0);
 }
}