// $Revision: 1.12 $:
var menuObject;

var menuRender_language = null;

var menuRender_languageToMenuWidthClassMap = new Array();
    menuRender_languageToMenuWidthClassMap['en'] = 'default-menu-width'; 
    menuRender_languageToMenuWidthClassMap['br'] = 'medium-menu-width'; 
    menuRender_languageToMenuWidthClassMap['de'] = 'large-menu-width'; 
    menuRender_languageToMenuWidthClassMap['es'] = 'medium-menu-width'; 
    menuRender_languageToMenuWidthClassMap['fc'] = 'medium-menu-width'; 
    menuRender_languageToMenuWidthClassMap['fr'] = 'medium-menu-width';
    // Width will be adjusted when these languages are available 
    menuRender_languageToMenuWidthClassMap['it'] = 'default-menu-width'; 
    menuRender_languageToMenuWidthClassMap['nl'] = 'default-menu-width'; 
    menuRender_languageToMenuWidthClassMap['el'] = 'default-menu-width'; 
    menuRender_languageToMenuWidthClassMap['fi'] = 'default-menu-width'; 
    menuRender_languageToMenuWidthClassMap['pl'] = 'default-menu-width'; 
    menuRender_languageToMenuWidthClassMap['pt'] = 'default-menu-width'; 
    menuRender_languageToMenuWidthClassMap['sv'] = 'default-menu-width'; 
    menuRender_languageToMenuWidthClassMap['at'] = 'default-menu-width'; 
    menuRender_languageToMenuWidthClassMap['cs'] = 'default-menu-width'; 

function menuRender_getLanguage() {
  return menuRender_language == null || menuRender_language == '' ? 'en' : menuRender_language;
}

function menuRender_getLanguageToMenuWidthClassMapping() {
  return menuRender_languageToMenuWidthClassMap[menuRender_getLanguage()] == null ? 'default-menu-width' : menuRender_languageToMenuWidthClassMap[menuRender_getLanguage()];
}

function MenuRenderer(menuObject) {
  if(menuObject == null) {
    alert("Error (MenuRenderer): < menuObject > cannot be NULL.  Try again with correct parameters.");
    return;
  }
  this.menuObject = menuObject;
  this.render = render;
}

function render() {
  var menuId = this.menuObject.getMenuId();
  var onMouseOutEvent = this.menuObject.getOnMouseOutEvent() == null ? "javascript:void(0);" : this.menuObject.getOnMouseOutEvent();
  var onMouseOverEvent = this.menuObject.getOnMouseOverEvent() == null ? "javascript:void(0);" : this.menuObject.getOnMouseOverEvent();
  var menuWidth = this.menuObject.getMenuWidth();
  var menuElement = document.createElement("DIV");
  
  var className  = "menu";
      className += " ";
      if(menuWidth == null) {
        className += menuRender_getLanguageToMenuWidthClassMapping();
      }
      else if(menuWidth == "MEDIUM") {
        className += "medium-menu-width";
      }
      else if(menuWidth == "LARGE") {
        className += "large-menu-width";
      }
      else if(menuWidth == "XLARGE") {
        className += "xLarge-menu-width";
      }
      else {
        className += "default-menu-width";
      }
      if(ns6) {
        menuElement.setAttribute("class", className);
      }
      else {
        menuElement.setAttribute("className", className);
      }
      menuElement.setAttribute("id", menuId);
      menuElement.setAttribute("align", "left");
      menuElement.setAttribute("onmouseover", onMouseOverEvent);
      menuElement.setAttribute("onmouseout", onMouseOutEvent);
      // attach menu div events (ie only)
      if(ie5 || ie6) {
        menuElement.attachEvent("onmouseover", new Function(onMouseOverEvent));
        menuElement.attachEvent("onmouseout", new Function(onMouseOutEvent));
      }
  var iterator = this.menuObject.getMenuItems().iterator();
  var menuSize = this.menuObject.getMenuItems().size();
  var counter = menuSize;

  while(iterator.hasNext()) {
    var menuItem = iterator.next();
    var displayName = menuItem.getDisplayName() == null ? "untitled" : menuItem.getDisplayName();
    var actionEvent = menuItem.getActionEvent() == null ? "javascript:void(0);" : menuItem.getActionEvent();
    var onClickEvent = menuItem.getOnClickEvent() == null ? "javascript:void(0);" : menuItem.getOnClickEvent();
    var menuItemHREF = document.createElement("A");
    
		if(counter == menuSize){
			menuItemHREF.id = ("firstMenuElement");
		}

        menuItemHREF.setAttribute("href", actionEvent);  
        if(ns6) {
          menuItemHREF.setAttribute("class", "menuitem");
        }
        else {
          menuItemHREF.setAttribute("className", "menuitem");
        } 
     if(menuItem.informalParameters != null) {
       for(var param in menuItem.informalParameters) {
         menuItemHREF.setAttribute(param, menuItem.informalParameters[param]);
       }
     }
  
     
    // attach menu div events (ie only)
    if(ie5 || ie6) {
    	menuItemHREF.attachEvent("onclick", new Function(onClickEvent + "hideMenu();return false;"));
    	menuItemHREF.attachEvent("onmouseover", mouseOverEvent);
    	menuItemHREF.attachEvent("onmouseout", mouseOutEvent);
    }
  	else {
		  menuItemHREF.setAttribute("onclick", onClickEvent + "hideMenu();return false;");
	  }
  	// Close menu when leaving last href
/*
	  if (counter == 1) {
		  if(ns6) {
			  menuItemHREF.setAttribute("onblur", "javascritpt:hideMenu(); return false;");
			}
		  else {
			  menuItemHREF.attachEvent("onblur", new Function("hideMenu(); return false;"));
			}
	  }
*/
	  
	  if (counter == 1) {
		  if(ns6) {
			  menuItemHREF.setAttribute("onblur", "javascritpt:hideMenu();setFocus();return false;");
			}
		  else {
			  menuItemHREF.attachEvent("onblur", new Function("hideMenu();setFocus();return false;"));
			}
	  }
	  
    var hrefText = document.createTextNode(displayName);
    menuItemHREF.appendChild(hrefText);
    menuElement.appendChild(menuItemHREF);
    // decide to reneder a seperator
    counter --;
    // skip seperator on last iteration
    if(counter > 0) {
      var seperator = document.createElement("DIV");
      if(ns6) {
        seperator.setAttribute("class", "seperator");
      }
      else {
        seperator.setAttribute("className", "seperator");
      }
      menuElement.appendChild(seperator);
    }
  }
  // append menuCode to Body of Document
  document.body.appendChild(menuElement);
  // set rendered flag
  this.menuObject.setRendered(true);
}
