var NS4=(document.layers);
var NS6 = (navigator.vendor == ("Netscape6") || navigator.product == ("Gecko"));
var DOM=(document.getElementById);
var IE=(document.all);
var IE4=(IE && !DOM);
var Mac = (navigator.appVersion.indexOf("Mac") != -1);
var IEMac=(IE && Mac);
var IE4Mac=(IE4 && Mac);
var NS = (NS4 || NS6);
var ver4 = (NS4 || IE4);

var activeMenu = "";

var timeOut = 0;

var menuTimer = setTimeout("clearOpen()", timeOut);

var changeClassBack = "";

var menuObject = new Object();

var currEl = "";

stopTimer();

function getElementObject(elementName){
  if(DOM){
    thisElement = eval("document.getElementById('"+elementName+"')");
  }else{
    thisElement = eval("window['"+elementName+"']");
  }
  return thisElement;
}

function getElementAttribs(Elem){
  var attribs = {x:0, y:0, w:0, h:0};
  attribs.w = Elem.offsetWidth;
  attribs.h = Elem.offsetHeight;
  var currentElement = Elem;
  while(currentElement!=window.document.body) {
    attribs.y += currentElement.offsetTop;
    attribs.x += currentElement.offsetLeft;
    attribs.y -= currentElement.scrollTop;
    attribs.x -= currentElement.scrollLeft;
    currentElement = currentElement.offsetParent;
  }
  return attribs;
}

function changeClass(elementName, className){
  thisElement = getElementObject(elementName);
  oldClass = thisElement.className;

  if( oldClass.search(/Hover/) != -1 ){
    className = "JSmenuItem";
  }else{
    className = "JSmenuItemHover";
  }
  thisElement.className = className;

}

function displayMenu(elementName, layout, transition){
  
  clearOpen();
  
  var thisMenu = getElementObject('menu_'+elementName);
  var thisMenuTitle = getElementObject(elementName);
  attr = getElementAttribs(thisMenuTitle);

  if(menuObject.fixedPosition == 'topRight'){
    newXCoord = menuObject.fixedPositionCoord.x - thisMenu.offsetWidth;
    newYCoord = menuObject.fixedPositionCoord.y;
  }else if(menuObject.fixedPosition == 'topLeft'){
    newXCoord = menuObject.fixedPositionCoord.x;
    newYCoord = menuObject.fixedPositionCoord.y;
  }else{
    if(layout == 'horizontal'){
      newXCoord = attr.x;
      newYCoord = attr.y + attr.h - 1;
    }else{
      newXCoord = attr.x + attr.w - 1;
      newYCoord = attr.y - 1;
    }
  }
  
  if(IE){
    thisMenu.style.pixelLeft = newXCoord;
    thisMenu.style.pixelTop  = newYCoord;
  }else if(NS6){
    thisMenu.style.left = newXCoord + '';
    thisMenu.style.top  = newYCoord + '';
  }else if(NS4){
    thisMenu.moveBy(newXCoord, newYCoord);
  }

  activeMenu = elementName;

  if((IE) && (transition)){
    thisMenu.filters.item("DXImageTransform.Microsoft." + transition).Apply();
  }
  thisMenu.style.visibility = "visible";
  if((IE) && (transition)){
    thisMenu.filters.item("DXImageTransform.Microsoft." + transition).Play();
  }

}

function hideMenu(elementName){
  thisMenu = getElementObject('menu_' + elementName);
  thisMenu.style.visibility = "hidden";
  stopTimer();
  activeMenu = "";
  changeClass(elementName,"JSMenuItem");

}

function details(id) {
  if (document.getElementById('btn_'+id).value == 'Details') {
      document.getElementById('frm1_'+id).style.display = 'block';
      document.getElementById('frm2_'+id).style.display = 'block';
      document.getElementById('frm3_'+id).style.display = 'block';
      document.getElementById('btn_'+id).value = 'Close';
    } else {
      document.getElementById('frm1_'+id).style.display = 'none';
      document.getElementById('frm2_'+id).style.display = 'none';
      document.getElementById('frm3_'+id).style.display = 'none';
      document.getElementById('btn_'+id).value = 'Details';
    }
}        

function resetClass(elName){
  changeClass(elName,"JSMenuItem");
}

function clearOpen(){
  if(activeMenu){
    hideMenu(activeMenu);
    activeMenu = "";
  }
}

function stopTimer(){
  clearTimeout(menuTimer);
}

function hideActiveTimeout(elementName){
  menuTimer = setTimeout("clearOpen()", timeOut);
}

function generateEditableMenu(menuObjectMain){
  generateMenu(menuObjectMain, true);
}

function generateMenu(menuObjectMain, editable){
  // Set to global
  menuObject = menuObjectMain;

  // Setup default values
  // CSS Classes
  var menuItemCSSC = menuObject.menuItemCSSC || 'JSmenuItem';
  var menuItemHoverCSSC = menuObject.menuItemHoverCSSC || 'JSmenuItemHover';
  var subItemCSSC = menuObject.subItemCSSC || 'JSmenuSubItem';
  var subItemHoverCSSC = menuObject.subItemHoverCSSC || 'JSmenuSubItemHover';
  var disableCSSC = menuObject.disableCSSC || 'JSdisabledItem';
  // Paths
  var imageDir = menuObject.imageDir || '/menu/images/';
  var cssFile = menuObject.cssFile || '/menu/menu.css';
  // Options
  var layout = menuObject.layout || 'vertical';
  var openMethod = menuObject.openMethod || 'hover';
  timeOut = menuObject.timeOut || timeOut;
  var trans = menuObject.transparent || 0;
  var shadow = menuObject.shadow || 0;
  var overrideCSSC = menuObject.overrideCSSC || 0;

  var mainDelm = menuObject.mainDelm || '';

  var submenus = menuObject.submenu;

  document.write('<link rel="stylesheet" href="'+cssFile+'" type="text/css" />');

  if(layout == 'horizontal'){
    document.write('<table cellpadding="0" cellspacing="0" border="0"><tr>');
  }

  if(openMethod == 'click'){
  } else {
  for(var i = 0; i < submenus.length; ++i){
    var submenuitems = submenus[i].items;
    if(layout == 'horizontal'){
      document.write('<td>');
      }
    document.write('<div name="item'+ i +'" id="item'+ i +'" class="JSmenuItem" ');
    document.write('onMouseOver');
    document.write('="');
    if(submenuitems){
      document.write('displayMenu(\'item'+ i +'\',\''+layout+'\',\''+menuObject.transition.mode+'\');');
    }
    document.write('changeClass(\'item'+ i +'\', \'JSmenuItemHover\')"');
    if(submenuitems)
    {
      document.write(' onMouseOut="hideActiveTimeout();"');
    }else{
      document.write(' onMouseOut="resetClass(\'item' + i + '\');"');
    }
    document.write('>');

    if ( submenuitems && submenuitems.length > 0 ) {
       document.write('<img src="/images/menu_arrow.gif" align="right"/>');
    }

    if((submenus[i].action) && (openMethod == 'hover')){
      document.write('<a href="'+ submenus[i].action + '">');
    }
    document.write(submenus[i].name);
    if((submenus[i].action) && (openMethod == 'hover')){
      document.write('</a>');
    }

    var back = "<a href='menuEditor.pl?shift=b&m=" + escape(submenus[i].name) + "'><img src='"+imageDir + "shift-arrow-left.gif' border='0'></a>";
    var forward = "<a href='menuEditor.pl?shift=f&m=" + escape(submenus[i].name) + "'><img src='"+imageDir + "shift-arrow-right.gif' border='0'></a>";

    if(editable){
      if(layout == "vertical"){
        back = "<a href='menuEditor.pl?shift=f&m=" + escape(submenus[i].name) + "'><img src='"+imageDir + "shift-arrow-down.gif' border='0'></a>";
        forward = "<a href='menuEditor.pl?shift=b&m=" + escape(submenus[i].name) + "'><img src='"+imageDir + "shift-arrow-up.gif' border='0'></a>";
        //back = "";
        //forward = "";
        if(i == 0){
          forward = "";
        }
  
        if(i + 1 == submenus.length){
          back = "";
        }
      }else{
        if(i == 0){
          back = "";
        }
  
        if(i + 1 == submenus.length){
          forward = "";
        }
      }

      document.write("&nbsp;&nbsp;" + back + "<a href='javascript:selectItem(menuObject.submenu[" + i + "])'><img src='"+imageDir+"select-button.gif' border='0'></a>" + forward);
      }


    document.write('</div>');

    if((mainDelm) && (i + 1 < submenus.length)){

      document.write('</td><td><img src="' + mainDelm + '" width="9" height="24" align="absmiddle"></td><td>');
    }

    if(overrideCSSC){
      document.write('<div id="overrideCSSC" class="' + overrideCSSC + '" style="position: absolute;">');
    }

    document.write('<div name="menu_item'+ i +'" id="menu_item'+ i +'" class="JSmenu" onMouseOver="stopTimer()" onMouseOut="hideActiveTimeout()" style="position:absolute; ');
    if(IE){
      var filters = '';
      if(shadow > 0){
        filters += 'progid:DXImageTransform.Microsoft.Shadow(direction=135, color=#000000,strength='+shadow+') ';
      }
      if(trans > 0){
        filters += 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity='+trans+') ';
      }
      if(menuObject.transition.mode == 'Fade'){
        filters += 'progid:DXImageTransform.Microsoft.Fade(duration=' + menuObject.transition.value + ') ';
      }else if(menuObject.transition.mode == 'Pixelate'){
        filters += 'progid:DXImageTransform.Microsoft.Pixelate(MaxSquare=' + menuObject.transition.value + ') ';
      }else if(menuObject.transition.mode == 'GradientWipe'){
        filters += 'progid:DXImageTransform.Microsoft.GradientWipe(GradientSize=' + menuObject.transition.value + ', wipestyle=1, motion=forward) ';
      }
      
      if(filters != ''){
        document.write('FILTER: ' + filters + ';');
      }
    }
    
    document.write('">');

    if ( submenuitems && submenuitems.length > 0 ) {

    document.write('<table cellpadding="0" cellspacing="0" border="0"><tr>');

    if(shadow > 0){
      if(IE){
        document.write('<td nowrap="true">');
      }else{
        document.write('<td height="1" bgcolor="#000000" colspan="2"><img src="' + imageDir + 'spacer.gif" width="1" height="1" /></td><td height="1" bgcolor="#FFFFFF"><img src="' + imageDir + 'spacer.gif" width="1" height="1" /></td></tr><tr><td width="1" bgcolor="#000000"><img src="' + imageDir + 'spacer.gif" width="1" height="1" /></td><td nowrap="true">');
      }
      
    }else{
      document.write('<td nowrap="true">');
    }

    if(submenuitems){
      for(var j = 0; j < submenuitems.length; ++j){
        var subdown = "<a href='menuEditor.pl?shift=f&m=" + escape(submenus[i].name) + "&sm="+ escape(submenuitems[j].name) +"'><img src='"+imageDir + "shift-arrow-down.gif' border='0'></a>";
        var subup = "<a href='menuEditor.pl?shift=b&m=" + escape(submenus[i].name) + "&sm="+ escape(submenuitems[j].name) +"'><img src='"+imageDir + "shift-arrow-up.gif' border='0'></a>";

        if(j == 0){
          subup = "";
        }
  
        if(j + 1 == submenuitems.length){
          subdown = "";
        }
        if(submenuitems[j].divider){
          document.write('<img src="'+imageDir+'dividing_line.gif" width="100%" height="6">');
        }else if(submenuitems[j].disable){
          document.write('<div class="'+disableCSSC+'" onMouseOver="this.className=\''+disableCSSC+'Hover\'" onMouseOut="this.className=\''+disableCSSC+'\'">' + submenuitems[j].name + '<img src="' + imageDir + 'spacer.gif" width="10" height="5" border="0" />');
          if(editable){
            document.write("&nbsp;&nbsp;" + subup + "<a href='javascript:selectItem(menuObject.submenu[" + i + "], menuObject.submenu[" + i + "].items[" + j + "])'><img src='"+imageDir+"select-button.gif' border='0'></a>" + subdown);
          }
          document.write('</div>');
        }else{
          document.write('<div class="JSmenuSubItem" onMouseOver="this.className=\'JSmenuSubItemHover\'" onMouseOut="this.className=\'JSmenuSubItem\'"><a href="'+submenuitems[j].action+'"');
          if(submenuitems[j].target){
            document.write(' target="'+submenuitems[j].target+'"');
          }
          document.write('>' + submenuitems[j].name + '<img src="' + imageDir + 'spacer.gif" width="10" height="5" border="0" /></a>');
          if(editable){
            document.write("&nbsp;&nbsp;" + subup + "<a href='javascript:selectItem(menuObject.submenu[" + i + "], menuObject.submenu[" + i + "].items[" + j + "])'><img src='"+imageDir+"select-button.gif' border='0'></a>" + subdown);
          }
 
          document.write('</div>');
        }
      }
    }

    if(shadow > 0){
      if(IE){
        document.write('</td>');
      }else{
        document.write('</td><td background="' + imageDir + 'shadow-right.gif" width="7" valign="top"><img src="' + imageDir + 'shadow-corner_top_right.gif" width="7" height="6" /></td></tr><tr><td width="1" align="left" bgcolor="#FFFFFF"><img src="' + imageDir + 'spacer.gif" width="1" height="1" /></td><td background="' + imageDir + 'shadow-bottom.gif" height="7" align="left"><img src="' + imageDir + 'shadow-corner_bottom_left.gif" width="8" height="7" /></td><td width="7" height="7"><img src="' + imageDir + 'shadow-bottom_right.gif" width="7" height="7" /></td>');
      }
    }else{
      document.write('</td>');
    }

    document.write('</tr></table>');

    }

    document.write('</div>');
    
    if(overrideCSSC){
      document.write('</div>');
    }
    if(layout == 'horizontal'){
      document.write('</td>');
    }
  }
  }
  if(layout == 'horizontal'){
    document.write('</tr></table>');
  }
}

