var HIDDEN = "hidden";
var VISIBLE = "visible";
var IMG_PATH = "/paragon/images/";

var X_OFFSET = 0;
var Y_OFFSET = 0;
var LAYER_Z = 50;
var X_SPACER = 34;

// simple browser detection ---------------------------------------------------
var ie4 = ( document.all) ? true : false;
var ns4 = ( document.layers ) ? true : false;
var ns6 = ( parseInt(navigator.appVersion) == 5 );

// complex browser detection --------------------------------------------------
// Adapted from http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
var agt = navigator.userAgent.toLowerCase();
var is_major = parseInt(navigator.appVersion);
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var is_ie3 = (is_ie && (is_major < 4));
var is_ie4 = (is_ie && (is_major == 4) && (agt.indexOf("msie 4") != -1) );
var is_ie5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0") != -1) );

// top level positions --------------------------------------------------------
var width = new Array();
var position = new Array();

function charWidth(ch) {
  var chs = "AABCDEEFGHIJKLMNOOPQRSTUUVWXYZaabcdeefghijklmnoopqrstuuvwxyz0123456789 ";
  var cws = "77777777774677877767777777877766656666662343866666464666766653555555555";
  // Checked:~~~7~~~~~7~~~~~~~~6~~7~~~~~~~~~~~5666~~~2~~~8666~~464~~67~6~~~~~~~~~~~~
  var p = chs.indexOf(ch);
  return (p < 0)? 5 : parseInt(cws.substring(p, p + 1));
}
function textWidth(s) {
  w = 0;
  if(s.length > 0) {
    s = s.replace(/&#\d*;/g, " ");
    for(i = 0; i < s.length; ++i) {
      w += charWidth(s.charAt(i));
    }
  }
  return w;
}
position[start[0]] = X_OFFSET;
for(nr = start[0]; nr <= end[0]; ++nr) {
  //n = nam[nr].length;
  //width[nr] = 6 + n * 4;
  width[nr] = 8 + textWidth(nam[nr]);
  position[nr + 1] = position[nr] + width[nr] + X_SPACER;
}
var lineHeight = is_ie ? 20 : 18;
var level2Counter = 0;
var quitCounter;
var extraCounter;
var currentXPos = 0;
var vislayer1 = HIDDEN;
var vislayer2 = HIDDEN;
var vislayer2b = HIDDEN;
var vislayer2c = HIDDEN;
var vislayer3 = HIDDEN;
var vislayer3b = HIDDEN;
var vislayer3c = HIDDEN;
var winControl = "flashy";
var winCOld = HIDDEN;
function updatevisibility() {
  if(winControl != null && winCOld != vislayer1) {
    winCOld = vislayer1;
    // The object:
    t = "document.";
    if(ns4) {
      t += winControl;
    } else if(ns6) {
      t += "getElementById('" + winControl + "')";
    } else { // if ( ie4 ) {
      t += "all['" + winControl + "']";
    }

    s = t;
    if(ns4) {
      s += winControl;
    } else { // if ( ns6 || ie4 ) {
      s += ".style";
    }
    s += ".visibility = '" + ((winCOld == HIDDEN)? VISIBLE : HIDDEN) + "';";
    eval("if(" + t + ")" + s);
  }
  if(ns4) {
    document.lv1.visibility = vislayer1;
    document.lv2.visibility = vislayer2;
    document.lv3.visibility = vislayer3;
  } else if(ns6) {
    document.getElementById("lv1").style.visibility = vislayer1;
    document.getElementById("lv2").style.visibility = vislayer2;
    document.getElementById("lv3").style.visibility = vislayer3;
  } else { // if ( ie4 ) {
    document.all["lv1"].style.visibility = vislayer1;
    document.all["lv2"].style.visibility = vislayer2;
    document.all["lv3"].style.visibility = vislayer3;
  }
}
function stopquitmode() {
  if(quitCounter) clearTimeout(quitCounter);
}
function startquitmode() {
  quitCounter = setTimeout('closenavi()', 500);
}
function closenavi() {
  vislayer1 = HIDDEN;
  vislayer2 = HIDDEN;
  vislayer2b = HIDDEN;
  vislayer2c = HIDDEN;
  vislayer3 = HIDDEN;
  vislayer3b = HIDDEN;
  vislayer3c = HIDDEN;
  updatevisibility();
}
function leftpos(layername, layerX) {
  if(ns4) document[layername].left = layerX;
  else if(ns6) document.getElementById(layername).style.left = layerX + "px";
  else document.all[layername].style.left = layerX + "px";
}
function toppos(layername, layerY) {
  if(ns4) document[layername].top = layerY;
  else if(ns6) document.getElementById(layername).style.top = layerY + "px";
  else document.all[layername].style.top = layerY + "px";
}
function openlayer(layername, layerX, layerY) {
  if(ns4) document.write('<layer onmouseover="stopquitmode();" onmouseout="startquitmode();" id="' + layername + '" name="' + layername + '" pagex=' + layerX + ' pagey=' + layerY + ' z-index=' + LAYER_Z + '>');
  else document.write('<div onmouseover="stopquitmode();" onmouseout="startquitmode();" id="' + layername + '" style="position:absolute;left:' + layerX + 'px;top:' + layerY + 'px;z-index:' + LAYER_Z + '">');
  LAYER_Z++;
}
function closelayer() {
  if(ns4) document.write('</layer>');
  else document.write('</div>');
}
function layercontent(layername, content) {
  if(ns4) {
    document[layername].document.open();
    document[layername].document.write(content);
    document[layername].document.close();
  } else if(ns6) document.getElementById(layername).innerHTML = content;
  else document.all[layername].innerHTML = content;
}
function firstLevel(nr) {
  currentXPos = position[nr] - 5;

  vislayer1 = HIDDEN;
  vislayer2 = HIDDEN;
  vislayer2b = HIDDEN;
  vislayer2c = HIDDEN;
  vislayer3 = HIDDEN;
  vislayer3b = HIDDEN;
  vislayer3c = HIDDEN;

  updatevisibility();

  var out = lv1html1a + width[nr] + lv1html1b;
  out = out + lv1html2 + '#" class="HeadLink">' + nam[nr] + lv1html3;
  layercontent("lv1", out);
  leftpos("lv1", currentXPos);

  out = lv2html1;
  var count = 0;

  for(i = start[nr]; i <= end[nr]; i++) {
    out = out + lv3html2 + url[i] + lv3html3 + 'secondLevel(' + i + ',' + count + ');">' + nam[i] + lv3html4;
    count++;
  }
  out = out + lv2html2;
  layercontent("lv2", out);
  level2Counter = count;
  vislayer1 = VISIBLE;

  if(count > 0) {
    vislayer2 = VISIBLE;
    vislayer2b = VISIBLE;
  } else {
    vislayer2 = HIDDEN;
    vislayer2b = HIDDEN;
  }

  leftpos("lv2", currentXPos);
  toppos("lv2", Y_OFFSET + 18);

  updatevisibility();
}
function writeTextToWindow(text) {
  myWin = window.open("about:blank", "");
  myWin.document.write(text);
}
function secondLevel(nr, count) {
  var length;
  if(ns4) length = document.lv2.document.width;
  else if(ns6) length = document.getElementById("lv2").offsetWidth;
  else length = document.all["lv2"].offsetWidth;
  extraCounter = count;
  var currentCounter = 0;
  var out = '';

  // default. if sublevel exists, build output accordingly.
  if(start[nr]) {
    out = lv3html1;
    for(i = start[nr]; i <= end[nr]; i++) {
      out = out + lv3html2 + url[i] + lv3html3 + 'thirdLevel(' + currentCounter + ');">' + nam[i] + lv3html4;
      currentCounter++;
    }
    out = out + lv3html5;
    layercontent("lv3", out);
  }
  if(currentCounter > 0) {
    vislayer3 = VISIBLE;
    vislayer3b = VISIBLE;
  } else {
    vislayer3 = HIDDEN;
    vislayer3b = HIDDEN;
  }
  vislayer3c = HIDDEN;
  vislayer2c = VISIBLE;

  leftpos("lv3", currentXPos + length + 1);
  toppos("lv3", Y_OFFSET + 18 + count * lineHeight);

  updatevisibility();
}
function thirdLevel(position) {
  vislayer3c = VISIBLE;
  updatevisibility();
}
function displayLevelOneMenu() {
  var i = 1;
  //for(i = start[0]; i <= end[0]; i++) {
  //if(i == selectedNavPosition) {
  //currentXPos = position[i] - 5;
  //var out = lv1html1a + width[i] + lv1html1b + lv1html2 + '#" onMouseOver="firstLevel(' + i + ')" class="HeadMenu">' + nam[i] + lv1html3;
  ////openlayer("mainnav" + i, currentXPos, Y_OFFSET - 1);
  //document.write(out);
  ////closelayer();
  //} else {
  //openlayer("mainnav" + i, position[i], Y_OFFSET);
  ////document.write('<span id="lineal1_' + i + '">');
  //document.write('<img src="' + IMG_PATH + 'arrow.gif" border=0><a href="#" class="HeadLink" onMouseOver="firstLevel(' + i + ')">' + nam[i] + '</a>');
  ////document.write('</span>');
  //closelayer();
  //}
  //}
  document.write('<img src="' + IMG_PATH + 'arrow.gif" border=0><a href="#" class="HeadLink" onMouseOver="firstLevel(' + i + ')">' + nam[i] + '</a>');
  //-----------------------------------------------------------------------------|
  openlayer("lv1", 1, Y_OFFSET - 1);
  closelayer();
  openlayer("lv2", 1, Y_OFFSET + 18);
  closelayer();
  openlayer("lv3", 1, 1);
  closelayer();
  updatevisibility();
}
var lv1html1a = '<table border="0" cellspacing="0" cellpadding="0" width="';
lv1html1b = '"><tr><td colspan="3"><img src="' + IMG_PATH + 'blank.gif" width="1" height="1"></td></tr>';
lv1html1b += '<tr><td><img src="' + IMG_PATH + 'blank.gif" width="1" height="1"></td>';
lv1html1b += '<td nowrap>';
lv1html1b += '<img src="' + IMG_PATH + 'blank.gif" width=4 height=1><img src="' + IMG_PATH + 'arrow';
var lv1html2 = '.gif" border=0><a href="';
lv1html3 = '</a>';
lv1html3 += '<img src="' + IMG_PATH + 'blank.gif" width=2 height=1>';
lv1html3 += '</td>';
lv1html3 += '<td><img src="' + IMG_PATH + 'blank.gif" width=1 height=1></td>';
lv1html3 += '</tr><tr><td colspan=3><img src="' + IMG_PATH + 'blank.gif" width=1 height=1></td></tr>';
lv1html3 += '</table>';
var lv2html1 = '<ul class="dropdown">';
var lv2html2 = '</ul>';
var lv3html1 = '<ul class="dropdown">';
var lv3html2 = '<li><a href="';
var lv3html3 = '" onMouseOver="';
var lv3html4 = '</a></li>';
var lv3html5 = '</ul>';
displayLevelOneMenu();