//*** MenuFormatter Class *******************************************************
// <!-- id="PUR1" datim="20070702.1326" reason="QBE Logo 700x60" author="pur" src="W:\OptimalView\webapps\ov\web\jss\menus_ie.js" -->


function MenuFormatter(formatString, separator) {
   var formatStrings = formatString.split(';');
   var formatMap = new Array()
   var formatStringEntry;
   var reg = /(\S+)/;
   for (i = 0; i < formatStrings.length; i++) {
      formatEntry = formatStrings[i].split(":");
      reg.test(formatEntry[1]);
      formatMap[formatEntry[0]] = RegExp.$1;
   }
   this.isMenuFormatter = true;
   this.bgColor = (formatMap["bgColor"] ? formatMap["bgColor"] : "#0f4e50");
   this.textColor = (formatMap["textColor"] ? formatMap["textColor"] : "white");
   this.hiliteColor = (formatMap["hColor"] ? formatMap["hColor"] : "yellow");
   this.fontFamily = (formatMap["font-family"] ? formatMap["font-family"] : "arial,verdana,sans-serif");
   this.fontSize = (formatMap["font-size"] ? formatMap["font-size"] : "12");
   this.fontWeight = (formatMap["font-weight"] ? formatMap["font-weight"] : "medium");
   this.left = 604;
   this.top = (formatMap["top"] ? formatMap["top"] : "0");
   this.alignment = (formatMap["align"] ? formatMap["align"] : null);
   this.fullScreenWidth = ((formatMap["fullScreenWidth"] == "true") ? true : false);
   this.separator = (separator ? separator : "");
   if (this.fontSize.indexOf("/") != -1) {
      var fontSizeArray = this.fontSize.split("/");
      this.fontSize = fontSizeArray[0];
   } 
   if (isNaN(parseFloat(this.top))) {
      this.top = 0;
   } else {
      this.top = parseFloat(this.top);
   }

   this.doMenu = MenuFormatter_doMenu;


}

function MenuFormatter_doMenu(navMenu) {

   window.onresize = resize;
   var navMenuContainer
   var content = navMenu.print(new NavBarIEFormatter(this), true); 
   document.write(content);
   navMenuContainer = document.all["navMenuContainer" + window.navMenuCount];
   content = navMenu.print(new DropDownIEFormatter(this), true); 
   document.write(content);
   navMenuContainer.formatter = this;
   if (!this.fullScreenWidth && this.alignment == "right") {
      if (!window.rightAlignedLayers) {
         window.rightAlignedLayers = new Array();
      }
      window.rightAlignedLayers[window.rightAlignedLayers.length] = navMenuContainer;
      navMenuContainer.minWidth = navMenuContainer.children[0].offsetWidth - 0;
      var leftPos = document.body.clientWidth - navMenuContainer.minWidth;
      var imgRightLayer = document.all["ovImgRight"];
      if (imgRightLayer && !imgRightLayer.minWidth) {
          var imgWidth = imgRightLayer.offsetWidth;
          if (imgWidth > navMenuContainer.children[0].offsetWidth + 0) {
             leftPos = document.body.clientWidth - imgWidth;
             navMenuContainer.style.width = imgWidth;
             navMenuContainer.children[0].style.width = imgWidth;
             navMenuContainer.minWidth = imgWidth;
          }
          imgRightLayer.style.left = Math.max(leftPos,0);
          imgRightLayer.style.top = navMenuContainer.offsetHeight;
          imgRightLayer.minWidth = navMenuContainer.minWidth;
          window.rightAlignedLayers[window.rightAlignedLayers.length] = imgRightLayer;
      }
      navMenuContainer.style.left = Math.max(leftPos,0);
   } else if (this.fullScreenWidth) {
      navMenuContainer.style.width = "100%";
      navMenuContainer.children[0].style.width = "100%";
   }
}

//*** NavBarIEFormatter Class *******************************************************

function NavBarIEFormatter(navMenuFormatter) {
   this.formatter = navMenuFormatter;
   this.startPrintNavMenu = NavBarIEFormatter_startPrintNavMenu;
   this.endPrintNavMenu = NavBarIEFormatter_endPrintNavMenu;
   this.startPrintMenu = NavBarIEFormatter_startPrintMenu;
   this.endPrintMenu = NavBarIEFormatter_endPrintMenu;
   this.printMenuSeparator = NavBarIEFormatter_printMenuSeparator;
   this.printSubMenu = NavBarIEFormatter_printSubMenu;
   this.printSubMenuSeparator = NavBarIEFormatter_printSubMenuSeparator;
}

function NavBarIEFormatter_startPrintNavMenu(navMenu) {
   if (!window.navMenuCount && window.navMenuCount != 0) {
      window.navMenuCount = 0;
      document.write('<SPAN ID="StartMenu" STYLE="display:none"></SPAN>');
      window.StartMenu = document.all["StartMenu"];
      window.ToolbarMenu = window.StartMenu;
   } else {
      window.navMenuCount++;
   }

   var content = '<div id="navMenuContainer' + window.navMenuCount +
                 '" style="position:absolute;height:20;top:' + this.formatter.top + ';z-index:5;">' +
                 '<div id="navMenuFore' + window.navMenuCount + '"' +
                 'style="position:absolute;top:0;left:0;height:20;' +
                 'color:' + this.formatter.textColor +
                 ';background-color:' + this.formatter.bgColor + ';" nowrap>' +
                 '<table border=0 cellpadding=0 cellspacing=0>' +
                 '<tr style="height:20;vertical-align:middle">';

   return content;
}

function NavBarIEFormatter_endPrintNavMenu(navMenu) {
   return '</tr></table></div></div>';
}

function NavBarIEFormatter_startPrintMenu(menu) {
   if (!window.navMenuItemCount && window.navMenuItemCount != 0) {
      window.navMenuItemCount = 0;
   } else {
      window.navMenuItemCount++;
   }
   if (menu.newwin) {
   var content = '<td style="padding:0;' +
                 'font-size:' + this.formatter.fontSize + ';' +
                 'font-family:' + this.formatter.fontFamily + ';' +
                 'font-weight:' + this.formatter.fontWeight + ';' +
                 'background-color:' + this.formatter.bgColor + 
                 ';color:' + this.formatter.textColor + ';" id="navMenuItem' +
                 window.navMenuItemCount + '" nowrap>' +
                 '<a style="text-decoration:none;cursor:hand;' +
                 'font-size:' + this.formatter.fontSize + ';' +
                 'font-family:' + this.formatter.fontFamily + ';' +
                 'font-weight:' + this.formatter.fontWeight + ';' +
                 'color: ' + this.formatter.textColor + ';" target="' +menu.name +'" title="' + menu.popup + '"                  ' + 'href="' + menu.link + '"' +
                 'onmouseout="mouseMenu(\'out\',\'menuLayer' +
                 window.navMenuCount + '_' + window.navMenuItemCount +
                 '\');hideMenu();" ' +
                 'onmouseover="mouseMenu(\'over\',\'menuLayer' +
                 window.navMenuCount + '_' + window.navMenuItemCount + 
                 '\');doMenu(\'menuLayer' +
                 window.navMenuCount + '_' + window.navMenuItemCount +
                 '\');">&nbsp;&nbsp;&nbsp;' + menu.name + '&nbsp;&nbsp;&nbsp;</a></td>';
   return content;  }
   else {
   var content = '<td style="padding:0;' +
                 'font-size:' + this.formatter.fontSize + ';' +
                 'font-family:' + this.formatter.fontFamily + ';' +
                 'font-weight:' + this.formatter.fontWeight + ';' +
                 'background-color:' + this.formatter.bgColor + 
                 ';color:' + this.formatter.textColor + ';" id="navMenuItem' +
                 window.navMenuItemCount + '" nowrap>' +
                 '<a style="text-decoration:none;cursor:hand;' +
                 'font-size:' + this.formatter.fontSize + ';' +
                 'font-family:' + this.formatter.fontFamily + ';' +
                 'font-weight:' + this.formatter.fontWeight + ';' +
                 'color: ' + this.formatter.textColor + ';" target="_top" title="' + menu.popup + '"                  ' + 'href="' + menu.link + '"' +
                 'onmouseout="mouseMenu(\'out\',\'menuLayer' +
                 window.navMenuCount + '_' + window.navMenuItemCount +
                 '\');hideMenu();" ' +
                 'onmouseover="mouseMenu(\'over\',\'menuLayer' +
                 window.navMenuCount + '_' + window.navMenuItemCount + 
                 '\');doMenu(\'menuLayer' +
                 window.navMenuCount + '_' + window.navMenuItemCount +
                 '\');">&nbsp;&nbsp;&nbsp;' + menu.name + '&nbsp;&nbsp;&nbsp;</a></td>';
   return content;
  }
}

function NavBarIEFormatter_endPrintMenu(menu) {
   return "";
}

function NavBarIEFormatter_printMenuSeparator(menu) {
   var content = '<td style="padding:0;' +
                 'font-size:' + this.formatter.fontSize + ';' +
                 'font-family:' + this.formatter.fontFamily + ';' +
                 'font-weight:' + this.formatter.fontWeight + ';' +
                 'background-color:' + this.formatter.bgColor +
                 ';color:' + this.formatter.textColor + ';">' + this.formatter.separator + '</td>'
   return content;
}

function NavBarIEFormatter_printSubMenu(subMenu) {
   return "";
}

function NavBarIEFormatter_printSubMenuSeparator(subMenu) {
   return "";
}

//*** DropDownIEFormatter Class *******************************************************

function DropDownIEFormatter(navMenuFormatter) {
   this.formatter = navMenuFormatter;
   this.startPrintNavMenu = DropDownIEFormatter_startPrintNavMenu;
   this.endPrintNavMenu = DropDownIEFormatter_endPrintNavMenu;
   this.startPrintMenu = DropDownIEFormatter_startPrintMenu;
   this.endPrintMenu = DropDownIEFormatter_endPrintMenu;
   this.printMenuSeparator = DropDownIEFormatter_printMenuSeparator;
   this.printSubMenu = DropDownIEFormatter_printSubMenu;
   this.printSubMenuSeparator = DropDownIEFormatter_printSubMenuSeparator;
   this.itemCount = 0;
}

function DropDownIEFormatter_startPrintNavMenu(navMenu) {
   if (!window.navBarCount && window.navBarCount != 0) {
      window.navBarCount = 0;
   } else {
      window.navBarCount++;
   }

   return "";
}

function DropDownIEFormatter_endPrintNavMenu(navMenu) {
   return "";
}

function DropDownIEFormatter_startPrintMenu(menu) {
   if (!window.menuCount && window.menuCount != 0) {
      window.menuCount = 0;
   } else {
      window.menuCount++;
   }

   if (menu.children.length == 0) {
      return "";
   }

   var content = '<span id="menuLayer' + window.navBarCount + '_' +
                 window.menuCount + '" style="display:none;position:absolute;' +
                 'width:200;background-color:' + this.formatter.bgColor + ';padding-top:0;' +
                 'padding-left:0;padding-bottom:10;z-index:9;" onmouseout="hideMenu();">' +
                 '<hr style="position:absolute;left:0;top:0;color:white" size=1>' +
                 '<div style="position:relative;left:0;top:8;">';
   return content;
}

function DropDownIEFormatter_endPrintMenu(menu) {
   return "</div></span>";
}

function DropDownIEFormatter_printMenuSeparator(menu) {
   return "";
}

function DropDownIEFormatter_printSubMenu(subMenu) {
   if(subMenu.newwin) {
   var content = '<a style="text-decoration:none;height:20;cursor:hand;' +
                 'font-size:' + this.formatter.fontSize + ';' +
                 'font-family:' + this.formatter.fontFamily + ';' +
                 'font-weight:' + this.formatter.fontWeight + ';' +
                 'color:' + this.formatter.textColor + ';" ' +
                 'href="' + subMenu.link + '" target="' + subMenu.name + '"' +
                 'onmouseout="mouseMenu(\'out\' ,\'menuLayer' + 
                 window.navBarCount + '_' + window.menuCount + '\');" ' + 
                 'onmouseover="mouseMenu(\'over\',\'menuLayer' + 
                 window.navBarCount + '_' + window.menuCount + '\');">' +
                 '&nbsp;&nbsp;&nbsp;' + subMenu.name + '</a>'
   return content;
    }
   else {
   var content = '<a style="text-decoration:none;height:20;cursor:hand;' +
                 'font-size:' + this.formatter.fontSize + ';' +
                 'font-family:' + this.formatter.fontFamily + ';' +
                 'font-weight:' + this.formatter.fontWeight + ';' +
                 'color:' + this.formatter.textColor + ';" ' +
                 'href="' + subMenu.link + '" target="_top" ' +
                 'onmouseout="mouseMenu(\'out\' ,\'menuLayer' + 
                 window.navBarCount + '_' + window.menuCount + '\');" ' + 
                 'onmouseover="mouseMenu(\'over\',\'menuLayer' + 
                 window.navBarCount + '_' + window.menuCount + '\');">' +
                 '&nbsp;&nbsp;&nbsp;' + subMenu.name + '</a>'
   return content;
   }
}

function DropDownIEFormatter_printSubMenuSeparator(subMenu) {
   return '<br>';
}


//**************************************************************************************
function doMenu(MenuIDStr)
{
   var thisMenu = document.all(MenuIDStr);
   if (ToolbarMenu == null || thisMenu == null || thisMenu == ToolbarMenu)
   {
      window.event.cancelBubble = true;
      return false;
   }
   var navMenuContainer = document.all["navMenuContainer" + MenuIDStr.substring(9, pos)]
   ToolbarMenu.style.display = "none";
   showElement ("SELECT");
   showElement("OBJECT");
   showElement("IFRAME");
   ToolbarMenu = thisMenu;

   x = window.event.srcElement.offsetParent.offsetLeft + navMenuContainer.offsetLeft;
   x4 = x;
   if (x > document.body.clientWidth - 200) {
      x = document.body.clientWidth - 200;
   }
   y = navMenuContainer.offsetTop + navMenuContainer.offsetHeight;
   x2 = window.event.srcElement.offsetWidth;
   x3 = x + 200;
   
   thisMenu.style.top = y;
   thisMenu.style.left = x;
   thisMenu.style.clip = "rect(0 0 0 0)";
   thisMenu.style.display = "block";

   y2 = 0;
   window.setTimeout("showMenu()", 2);   
   return true;
}

function showMenu()
{
   if (ToolbarMenu != null)
   {
       y2 = y + ToolbarMenu.offsetHeight;
   
       ToolbarMenu.style.clip = "rect(auto auto auto auto)";
       hideElement("SELECT")
       hideElement("OBJECT")
       hideElement("IFRAME")       
   } 
}

function hideMenu()
{
	if (ToolbarMenu != null && ToolbarMenu != StartMenu) 
	{
                var navMenuContainer = document.all["navMenuContainer" + 
                                       ToolbarMenu.id.substring(9, pos)]
		var cX = event.clientX + document.body.scrollLeft;
                        
		var cY = event.clientY + document.body.scrollTop;
		var bHideMenu = true;
                if (cY >= (y - 3) && cY < y)
		{
			if (cX >= (x4+5) && cX <= x4 + x2) bHideMenu = false;
		}
		else if (cY >= y && cY <= y2)
		{
			if (cX > (x+5) && cX <= x3) bHideMenu = false;
		}
	
		if (! bHideMenu) 
		{
			window.event.cancelBubble = true;
			return; 
		}

		ToolbarMenu.style.display = "none";
		ToolbarMenu = StartMenu;
		window.event.cancelBubble = true;

		showElement("SELECT");
		showElement("OBJECT");
		showElement("IFRAME");
	}
}

function hideElement(elmID)
{
   for (i = 0; i < document.all.tags(elmID).length; i++)
   {
      obj = document.all.tags(elmID)[i];

      if (!obj || !obj.offsetParent)
         continue;

      objLeft = obj.offsetLeft;
      objTop = obj.offsetTop;
      objParent = obj.offsetParent;
      while (objParent.tagName.toUpperCase() != "BODY")
      {
         objLeft += objParent.offsetLeft;
         objTop += objParent.offsetTop;
         objParent = objParent.offsetParent;   
      }
      objTop = objTop - y;
      if (x > (objLeft + obj.offsetWidth) || objLeft > (x + ToolbarMenu.offsetWidth))
         ;
      else if (objTop > ToolbarMenu.offsetHeight)
         ;
      else
         obj.style.visibility = "hidden"; 
   }
}

function showElement(elmID)
{
   for (i = 0; i < document.all.tags(elmID).length; i++)
   {
      obj = document.all.tags(elmID)[i];
      if (!obj || !obj.offsetParent)
         continue;
      obj.style.visibility = "";
   }
}

function mouseMenu(id, MenuIDStr) {

   IsMouseout = (id.toUpperCase().indexOf("OUT") != -1);

   pos = MenuIDStr.indexOf("_");
   var navMenuContainer = document.all["navMenuContainer" + MenuIDStr.substring(9, pos)]
   if (IsMouseout)
        color = navMenuContainer.formatter.textColor;
   else
        color = navMenuContainer.formatter.hiliteColor;
   window.event.srcElement.style.color = color;
}

function resize() {
   if (!window.rightAlignedLayers) {
      return;
   }

   for (i = 0; i < window.rightAlignedLayers.length; i++) {
      window.rightAlignedLayers[i].style.left = Math.max((document.body.clientWidth -
                                                window.rightAlignedLayers[i].minWidth),0);
   }    
}

//*** Menu Images *****************************************************************************
function MenuImage(source, link, alt, newwin) {
   this.source = source;
   this.link = link;
   this.newwin = newwin;
   this.alt = alt;
}

		//PUR1                    'width=250 height=60 border=0>' + (imgLeft.link ? '</a>':'')

function drawMenuImages(imgLeft, imgRight1, imgRight2) {

   var content = '';
   var imgLeftHTML, imgRight1HTML, imgRight2HTML;

   if (imgLeft) {
      if(imgLeft.newwin) {
      imgLeftHTML = (imgLeft.link ? '<a href="' + imgLeft.link + '" target="_blank">':'') +
                    '<img src="' + imgLeft.source + '" ' + 
                    (imgLeft.alt ? 'alt="' + imgLeft.alt + '" ':'') +
                    'width=709 height=60 border=0>' + (imgLeft.link ? '</a>':'')	//PUR1
      }
     else {
      imgLeftHTML = (imgLeft.link ? '<a href="' + imgLeft.link + '">':'') +
                    '<img src="' + imgLeft.source + '" ' + 
                    (imgLeft.alt ? 'alt="' + imgLeft.alt + '" ':'') +
                    'width=709 height=60 border=0>' + (imgLeft.link ? '</a>':'')	//PUR1
    }
   }

   if (imgRight1) {
     if(imgRight1.newwin) { 
      imgRight1HTML = (imgRight1.link ? '<a href="' + imgRight1.link + '" target="_blank">':'') +
                    '<img src="' + imgRight1.source + '" ' + 
                    (imgRight1.alt ? 'alt="' + imgRight1.alt + '" ':'') +
                    'width=200 height=40 border=0>' + (imgRight1.link ? '</a>':'')
      }
     else { 
      imgRight1HTML = (imgRight1.link ? '<a href="' + imgRight1.link + '">':'') +
                    '<img src="' + imgRight1.source + '" ' + 
                    (imgRight1.alt ? 'alt="' + imgRight1.alt + '" ':'') +
                    'width=200 height=40 border=0>' + (imgRight1.link ? '</a>':'')
      }
   }

   if (imgRight2) {
    if(imgRight2.newwin) {
      imgRight2HTML = (imgRight2.link ? '<a href="' + imgRight2.link + '" target="_blank">':'') +
                    '<img src="' + imgRight2.source + '" ' + 
                    (imgRight2.alt ? 'alt="' + imgRight2.alt + '" ':'') +
                    'width=200 height=40 border=0>' + (imgRight2.link ? '</a>':'')
      }
      else {
      imgRight2HTML = (imgRight2.link ? '<a href="' + imgRight2.link + '">':'') +
                    '<img src="' + imgRight2.source + '" ' + 
                    (imgRight2.alt ? 'alt="' + imgRight2.alt + '" ':'') +
                    'width=200 height=40 border=0>' + (imgRight2.link ? '</a>':'')
    }
   }

   if (document.all["ovImgLeft"]) {
      if (imgLeft) {
         document.all["ovImgLeft"].innerHTML = imgLeftHTML
      }
   } else {
      content += '<div id=ovImgLeft style="position:absolute;left:0;top:0;z-index:5">' + 
                 (imgLeft ? imgLeftHTML:'') + '</div>'
   }

   if (document.all["ovImgRight"]) {
      if (imgRight1) {
         document.all["ovImgRight1"].innerHTML = imgRight1HTML
      }
      if (imgRight2) {
         document.all["ovImgRight2"].innerHTML = imgRight2HTML
      }
   } else {
      content += '<div id=ovImgRight style="position:absolute;top:20;z-index:5" nowrap>' +
                 '<span id=ovImgRight1>' + (imgRight1 ? imgRight1HTML:'') + '</span>' + 
                 '<span id=ovImgRight2>' + (imgRight2 ? imgRight2HTML:'') + '</span></div>'
   }
   if (content != '') document.write(content);
}
//*** Menu Background Color ***********************************************************************
function drawMenuBackgroundColor(color) {
   if (!document.all["menuBackground"]) {
      var content = '<div id=menuBackground style="position:absolute;top:0;left:0;' +
                    'width:100%;height:60;z-index:0;background-color:' + color +'"></div>'
      document.write(content);
   } else {
      document.all["menuBackground"].style.backgroundColor = color;
   }
}
