/*
 xCenta Menu v1.0
 by Darren Benson
 Copyright (c) 2002 DCS Automotive. All Rights Reserved. 
*/
var isIE = (document.all ? true: false);
var isIE5 = (navigator.appVersion.indexOf('MSIE 5') >= 0 ? true: false);
var isWebTV = (navigator.appName.indexOf('WebTV') >= 0 ? true: false);
var isNS4 = (navigator.appName == 'Netscape' && parseInt(navigator.appVersion)==4 ? true: false);
var isBrowserFullySupported = (isNS4 || (getWidth('body') > 0) && !isWebTV);
var isMac = (navigator.appVersion.indexOf("Mac") != -1);
var mastrMenuCode = new Array();
var mlngMenuIdOn = 0;
var mlngTimer = 0;
var mlngBaseMenuItemCount = 0;

function getObject(strElementName){
  if (strElementName.toLowerCase() == 'body')
     return eval('document.body')
  else if (isNS4)
     return eval('document.' + strElementName)
  else if (document.getElementById)
     return eval(document.getElementById(strElementName))
  else
     return eval('document.all.' + strElementName);
}

function getStyleByClassName(strClassName){
  var objSheetList = document.styleSheets;
  var objRuleList;
  var lngSheetCount, lngRuleCount;
  for (lngSheetCount = objSheetList.length - 1; lngSheetCount >= 0; lngSheetCount--){
      objRuleList = (objSheetList[lngSheetCount].cssRules) ? objSheetList[lngSheetCount].cssRules: objRuleList = objSheetList[lngSheetCount].rules;
      for (lngRuleCount = 0; lngRuleCount < objRuleList.length; lngRuleCount++)
          if ((objRuleList[lngRuleCount].type ? objRuleList[lngRuleCount].type == CSSRule.STYLE_RULE: true) && objRuleList[lngRuleCount].selectorText == strClassName)
             return objRuleList[lngRuleCount].style;
  }
  return null;
}

function getTop(strElementName){
  var objElement = getObject(strElementName);
  if (objElement == null)
     return 0
  else
     if (isNS4)
        return objElement.top
     else{
        if (isNaN(objElement.offsetTop)){
           if (isNaN(objElement.clientTop)){
              if (isNaN(objElement.style.pixelTop))
                 if (document.styleSheets){
                    return getPixelValue(getStyleByClassName('.' + objElement.className) ? getStyleByClassName('.' + objElement.className).top + '': '0');
                 }
                 else
                    return 0;
              else
                 return objElement.style.pixelTop;
           }
           else
              return objElement.clientTop;
        }
        else      
            return objElement.offsetTop;
     }
}

function getHeight(strElementName){
  var objElement = getObject(strElementName);
  if (objElement == null)
     return 0
  else
     if (isNS4)
        return objElement.clip.height
     else{
        if (isNaN(objElement.offsetHeight)){
           if (isNaN(objElement.clientHeight)){
              if (isNaN(objElement.style.pixelHeight))
                 if (document.styleSheets){
                    return getPixelValue(getStyleByClassName('.' + objElement.className) ? getStyleByClassName('.' + objElement.className).height + '': '0');
                 }
                 else
                    return 0;
              else
                 return objElement.style.pixelHeight;
           }
           else
              return objElement.clientHeight;
        }
        else      
            return objElement.offsetHeight;
     }
}

function getWidth(strElementName){
  var objElement = getObject(strElementName);
  if (objElement == null)
     return 0
  else
     if (isNS4)
        return objElement.clip.width
     else{
       if (isNaN(objElement.offsetWidth)){
          if (isNaN(objElement.clientWidth)){
             if (isNaN(objElement.style.pixelWidth))
                 if (document.styleSheets){
                    return getPixelValue(getStyleByClassName('.' + objElement.className) ? getStyleByClassName('.' + objElement.className).width + '': '0');
                 }
                 else
                    return 0;
             else
                return objElement.style.pixelWidth;
          }
          else
             return objElement.clientWidth;
       }
       else
           return objElement.offsetWidth;
     }
}

function getLeft(strElementName){
  var objElement = getObject(strElementName);
  if (objElement == null)
     return 0
  else
     if (isNS4)
        return objElement.left
     else{
       if (isNaN(objElement.offsetLeft)){
          if (isNaN(objElement.clientLeft)){
             if (isNaN(objElement.style.pixelLeft))
                 if (document.styleSheets){
                    return getPixelValue(getStyleByClassName('.' + objElement.className) ? getStyleByClassName('.' + objElement.className).left + '': '0');
                 }
                 else
                    return 0;
             else
                return objElement.style.pixelLeft;
          }
          else
             return objElement.clientLeft;
       }
       else      
           return objElement.offsetLeft;
     }
}

function getPixelValue(objPixelValue){
  var lngPixelValue = 0;
  var strPixelValue = objPixelValue + '';
  var astrPixelValue = strPixelValue.split(' ');
  var objSearchText = new RegExp('px');
  for (var lngCount = 0; lngCount < astrPixelValue.length; lngCount++)
      if (astrPixelValue[lngCount].indexOf('px') > 0) strPixelValue = astrPixelValue[lngCount];    
  lngPixelValue = strPixelValue != '' ? parseInt(strPixelValue.replace(objSearchText,'')): 0;  
  return isNaN(lngPixelValue) ? 0: lngPixelValue;
}

function setElementProperty(strElementName, strPropertyName, value ){
  var objElement = getObject(strElementName);
  if (objElement != null){
     objElement.style[strPropertyName] = value;
  }
}

function showElement(vstrElementName){
  var objElement = getObject(vstrElementName);
  if (objElement != null)
     if (isNS4)
        objElement.visibility = 'visible'
     else
        objElement.style.visibility = 'visible';
}

function hideElement(vstrElementName){
  var objElement = getObject(vstrElementName);
  if (objElement != null)
     if (isNS4)
        objElement.visibility = 'hidden'
     else
        objElement.style.visibility = 'hidden';
}

function moveXY(strElementName, lngXValue, lngYValue){
  var objElement = getObject(strElementName);
  if (objElement != null)
     if (isNS4)
        objElement.moveTo(lngXValue, lngYValue)
     else{
        if (isNaN(objElement.style.pixelLeft)){
           setElementProperty(strElementName, 'left', lngXValue + 'px');
           setElementProperty(strElementName, 'top', lngYValue + 'px');
        }
        else{
           objElement.style.pixelLeft = lngXValue;
           objElement.style.pixelTop = lngYValue;
        }
     }
}

function getMenuParam(rstrParamString, rlngParamNumber){
  var strParamString = rstrParamString + '';
  var astrParam = strParamString.split(',');
  return astrParam[rlngParamNumber - 1];
}
     
function getMenuLevel(rstrPosition){
  astrPosition = rstrPosition.split('.');
  return (astrPosition.length == 1 ? 0:astrPosition[0]);
}
      
function clsMenuItem(rstrParamString){
  this.Position = getMenuParam(rstrParamString, 1);
  this.PageTitle = getMenuParam(rstrParamString, 2);
  this.URL = getMenuParam(rstrParamString, 3);
  this.NewWindow = getMenuParam(rstrParamString, 4) == 'true';
}

function toggleHighlight(objElement){
  if (objElement.className) 
     if (objElement.className.indexOf('HighLight') >= 0)
        objElement.className = objElement.className.substring(0, objElement.className.indexOf('HighLight'))
     else
       objElement.className += 'HighLight';
}

function hideMenu(lngMenuId){
  if (mastrMenuCode[lngMenuId] && lngMenuId > 0){
     hideElement('Menu' + lngMenuId);
     mlngMenuIdOn = 0;
  }
}

function showMenu(lngMenuId){
  if (mastrMenuCode[lngMenuId] && lngMenuId > 0){
     showElement('Menu' + lngMenuId);
     mlngMenuIdOn = lngMenuId;
  }
}

function mouseOver(objElement, lngPosition){
  clearTimeout(mlngTimer);
  toggleHighlight(objElement);
  if (parseInt(lngPosition) != mlngMenuIdOn) hideMenu(mlngMenuIdOn);
  showMenu(parseInt(lngPosition));
}
      
function mouseOut(objElement, lngPosition){
  toggleHighlight(objElement);
  if (parseInt(lngPosition) == mlngMenuIdOn) mlngTimer = setTimeout('hideMenu(' + mlngMenuIdOn + ')', getDelay());
}

function getMenuLine(objMenuItem){
  var strActionCode = ' onMouseOver="mouseOver(this, ' + objMenuItem.Position + ');" onMouseOut="mouseOut(this, ' + objMenuItem.Position + ');"';
  if (isBrowserFullySupported){
     if (isNS4)
        return '<tr><td width="' + ((getMenuLevel(objMenuItem.Position) > 0 ? getWidth('SubMenuWidth'): getWidth('MenuWidth') - 1)) + '" class="' + (getMenuLevel(objMenuItem.Position) > 0 ? 'Sub':'') + 'MenuCell"><a href="' + objMenuItem.URL + '" ' + strActionCode + (objMenuItem.NewWindow ? ' target="_blank"':'') + ' class="' + (getMenuLevel(objMenuItem.Position) > 0 ? 'Sub':'') + 'MenuCellText">' + objMenuItem.PageTitle + '</a></td></tr>'
     else
        return '<div ' + strActionCode + ' onClick="' + (objMenuItem.NewWindow ? 'window.open(\'' + objMenuItem.URL + '\')': 'document.location=\'' + objMenuItem.URL + '\'') + '" class="' + (getMenuLevel(objMenuItem.Position) > 0 ? 'Sub':'') + 'MenuCell">' + objMenuItem.PageTitle + '</div>';
  }
  else
     return '<tr><td class="MenuCell">' + (parseInt(objMenuItem.Position) < objMenuItem.Position ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;':'') + '<a href="' + objMenuItem.URL + '" ' + (objMenuItem.NewWindow ? ' target="_blank"':'') + ' class="MenuCellText">' + objMenuItem.PageTitle + '</a></td></tr>';
}

function getMenuItemHeight(){
   return parseInt((getHeight('Menu0') / mlngBaseMenuItemCount));
}

function writeNSRuler(){
  var strNSWidth = '';
  for (lngCount = 0; lngCount < 500; lngCount++)
      strNSWidth += 'x ';
  document.write('<div id="MenuWidth" class="Menu">' + strNSWidth +  '</div>');
  document.write('<div id="SubMenuWidth" class="SubMenu">' + strNSWidth +  '</div>');
}

function getMenu(astrMenuItem){
  var lngMenuItemCount;
  if (isNS4) writeNSRuler();
  for (lngMenuItemCount = 0; lngMenuItemCount < astrMenuItem.length; lngMenuItemCount++){
      var objMenuItem = new clsMenuItem(astrMenuItem[lngMenuItemCount]);
      var lngMenuLevel = (isBrowserFullySupported ? getMenuLevel(objMenuItem.Position):0);
      if (!mastrMenuCode[lngMenuLevel]) mastrMenuCode[lngMenuLevel] = '';
      mastrMenuCode[lngMenuLevel] += getMenuLine(objMenuItem);
      if (lngMenuLevel == 0) mlngBaseMenuItemCount++
  }
}

function moveMenu(vlngMenuNumber){
   if (vlngMenuNumber > 0)
      moveXY('Menu' + vlngMenuNumber, (getWidth('Menu0') + getLeft('Menu0') + (isNS4 ? -1: 1)), (getTop('Menu0') + ((vlngMenuNumber - 1) * getMenuItemHeight())))
   else
      moveXY('Menu0', getLeft('Menu0') - (isNS4 ? 2:0), getTop('Menu0') + getHeight('MenuHeader'));
}

function writeHeader(vstrMenuHeader){
  if (vstrMenuHeader != ''){
     if (isNS4) vstrMenuHeader = '<table border="0" cellspacing="2" cellpadding="0"><tr><td width="' + (getWidth('MenuWidth') - 1) + '">' + vstrMenuHeader + '</td></tr></table>';
     document.write('<div id="MenuHeader" class="Menu">' + vstrMenuHeader + '</div>');
     setTimeout('moveXY(\'MenuHeader\', getLeft(\'MenuHeader\') - (isNS4 ? 2:0), getTop(\'MenuHeader\'))', getDelay());
  }
}

function writeFooter(vstrMenuFooter){
  if (vstrMenuFooter != ''){
     if (isNS4) vstrMenuFooter = '<table border="0" cellspacing="2" cellpadding="0"><tr><td width="' + (getWidth('MenuWidth') + 3) + '">' + vstrMenuFooter + '</td></tr></table>';
     document.write('<div id="MenuFooter" class="Menu">' + vstrMenuFooter + '</div>');
     if (getTop('Menu0') + getHeight('MenuHeader') + getHeight('Menu0') > 0) setTimeout('moveXY(\'MenuFooter\', getLeft(\'MenuFooter\') - (isNS4 ? 2:0), getTop(\'Menu0\') + getHeight(\'Menu0\'))', getDelay());
  }
}

function writeMenu(vstrMenuHeader, vstrMenuFooter){
  var lngMenuCount;
  if (!isBrowserFullySupported)
     document.write('<table border="0" width="150" cellspacing="2" cellpadding="2" align="left"><tr><td valign="top">' + vstrMenuHeader + '</td></tr><tr><td align="left">' + mastrMenuCode[0] + '</td></tr><tr><td>' + vstrMenuFooter + '</td></tr></table>')
  else{
     writeHeader(vstrMenuHeader)
     for (lngMenuCount = 0; lngMenuCount < mastrMenuCode.length; lngMenuCount++){
         if (mastrMenuCode[lngMenuCount]){
            document.write('<' + (isNS4 && lngMenuCount > 0 ? 'layer':'div') + ' id="Menu' + lngMenuCount + '"' + (lngMenuCount > 0 ? (isNS4 ? ' visibility="hidden"':' style="position:absolute; visibility:hidden;" class="SubMenu"'): ' class="Menu"') + '>' + (isNS4 ? '<table border="0" cellspacing="2" cellpadding="2">':'') + mastrMenuCode[lngMenuCount] + (isNS4 ? '</table>':'') + '</' + (isNS4 && lngMenuCount > 0 ? 'layer':'div') + '>');
            mlngTimeout = setTimeout('moveMenu(' + lngMenuCount + ')', getDelay());
         }
     }
     writeFooter(vstrMenuFooter)
     //Include hidden table with height for <br clear="all">
     document.write('<table border="0" cellspacing="0" cellpadding="0" height="' + (getHeight('MenuHeader') + getHeight('Menu0') + getHeight('MenuFooter')) + '" align="right"><tr><td>&nbsp;</td></tr></table>');
     //Show Menu
     if (vstrMenuHeader != '') setTimeout('showElement(\'MenuHeader\')', getDelay());
     setTimeout('showElement(\'Menu0\')', getDelay());
     if (vstrMenuFooter != '') setTimeout('showElement(\'MenuFooter\')', getDelay());
  }  
}

function getDelay(){
  if (isMac)
     return 1000
  else
     return 500; //500
}

function doMenu(vastrMenuItem, vstrMenuHeader, vstrMenuFooter){
  var strMenuHeader = (vstrMenuHeader.length == 0 ? '':vstrMenuHeader);
  var strMenuFooter = (vstrMenuFooter.length == 0 ? '':vstrMenuFooter);
  if ((isIE5) && (!isMac)){
    getStyleByClassName('.MenuCell').width = (getPixelValue(getStyleByClassName('.MenuCell').width) + getPixelValue(getStyleByClassName('.MenuCell').paddingRight) + getPixelValue(getStyleByClassName('.MenuCell').paddingLeft) + getPixelValue(getStyleByClassName('.MenuCell').borderRight) + getPixelValue(getStyleByClassName('.MenuCell').borderLeft)) + 'px';
    getStyleByClassName('.MenuCellHighLight').width = (getPixelValue(getStyleByClassName('.MenuCellHighLight').width) + getPixelValue(getStyleByClassName('.MenuCellHighLight').paddingRight) + getPixelValue(getStyleByClassName('.MenuCellHighLight').paddingLeft) + getPixelValue(getStyleByClassName('.MenuCellHighLight').borderRight) + getPixelValue(getStyleByClassName('.MenuCellHighLight').borderLeft)) + 'px';
    getStyleByClassName('.SubMenuCell').width = (getPixelValue(getStyleByClassName('.SubMenuCell').width) + getPixelValue(getStyleByClassName('.SubMenuCell').paddingRight) + getPixelValue(getStyleByClassName('.SubMenuCell').paddingLeft) + getPixelValue(getStyleByClassName('.SubMenuCell').borderRight) + getPixelValue(getStyleByClassName('.SubMenuCell').borderLeft)) + 'px';
    getStyleByClassName('.SubMenuCellHighLight').width = (getPixelValue(getStyleByClassName('.SubMenuCellHighLight').width) + getPixelValue(getStyleByClassName('.SubMenuCellHighLight').paddingRight) + getPixelValue(getStyleByClassName('.SubMenuCellHighLight').paddingLeft) + getPixelValue(getStyleByClassName('.SubMenuCellHighLight').borderRight) + getPixelValue(getStyleByClassName('.SubMenuCellHighLight').borderLeft)) + 'px';
  }
  getMenu(vastrMenuItem);
  writeMenu(strMenuHeader, strMenuFooter);
}

function writeHTML(vstrHTML){
  document.writeln(vstrHTML);
}