var createMenu = function(scope, entries)
{
  $(scope).parent().find('.menu-entry').css('background-color' , '');
  $('.submenu').remove();

  if(entries.length > 0)
  {
    var childNodes = [];
    var linkChildNodes = [];
    var isEdit = false;

    $('body').unbind('mousemove');

    childNodes.push({
      tagName: 'div',
      className: 'submenu-entry',
      childNodes: [{
        tagName: 'div',
        className: 'submenu-entry-top-left',
        innerHTML: '&nbsp;'
      },{
        tagName: 'div',
        className: 'submenu-entry-top',
        innerHTML: '&nbsp;'
      },{
        tagName: 'div',
        className: 'submenu-entry-top-right',
        innerHTML: '&nbsp;'
      },{
          tagName: 'div',
          className: 'clear',
          innerHTML: '&nbsp;'
        }]
    },{
      tagName: 'div',
      className: 'submenu-entry',
      childNodes: [{
        tagName: 'div',
        className: 'submenu-entry-empty-left',
        innerHTML: '&nbsp;'
      },{
        tagName: 'div',
        className: 'submenu-entry-empty',
        innerHTML: '&nbsp;'
      },{
        tagName: 'div',
        className: 'submenu-entry-empty-right',
        innerHTML: '&nbsp;'
      },{
          tagName: 'div',
          className: 'clear',
          innerHTML: '&nbsp;'
        }]
    });

    for(var entryIndex = 0; entryIndex < entries.length; entryIndex++)
    {
      if(entries[entryIndex].editUrl != null)
      {
        isEdit = true;
      }

      linkChildNodes = [];
      linkChildNodes.push({
        tagName: 'div',
        className: 'submenu-entry-middle-link',
        childNodes: [{
          tagName: 'a',
          href: entries[entryIndex].href,
          innerHTML: entries[entryIndex].label
        }]
      });

      if(entries[entryIndex].editUrl != null)
      {
        linkChildNodes.push({
          tagName: 'div',
          className: 'submenu-entry-middle-edit-link',
          childNodes: [{
            tagName: 'a',
            href: entries[entryIndex].editUrl,
            target: 'cms',
            childNodes: [{
              tagName: 'img',
              src: getResourceUrl('/images/conleos/symbol/edit.gif'),
              alt: '',
              border: '0'
            }]
          }]
        });
      }

      childNodes.push({
        tagName: 'div',
        className: 'submenu-entry',
        childNodes: [{
          tagName: 'div',
          className: 'submenu-entry-left',
          innerHTML: '&nbsp;'
        },{
          tagName: 'div',
          className: 'submenu-entry-middle',
          childNodes: linkChildNodes
        },{
          tagName: 'div',
          className: 'submenu-entry-right',
          innerHTML: '&nbsp;'
        },{
          tagName: 'div',
          className: 'clear',
          innerHTML: '&nbsp;'
        }]
      },{
        tagName: 'div',
        className: 'submenu-entry',
        childNodes: [{
          tagName: 'div',
          className: 'submenu-entry-separator-left',
          innerHTML: '&nbsp;'
        },{
          tagName: 'div',
          className: 'submenu-entry-separator',
          childNodes: [{
            tagName: 'img',
            src: getResourceUrl('images/conleos/menu/menu-separator.gif'),
            alt: ''
          }]
        },{
          tagName: 'div',
          className: 'submenu-entry-separator-right',
          innerHTML: '&nbsp;'
        },{
          tagName: 'div',
          className: 'clear',
          innerHTML: '&nbsp;'
        }]
      });
    }

    childNodes.push({
      tagName: 'div',
      className: 'submenu-entry',
      childNodes: [{
        tagName: 'div',
        className: 'submenu-entry-empty-left',
        innerHTML: '&nbsp;'
      },{
        tagName: 'div',
        className: 'submenu-entry-empty',
        innerHTML: '&nbsp;'
      },{
        tagName: 'div',
        className: 'submenu-entry-empty-right',
        innerHTML: '&nbsp;'
      },{
          tagName: 'div',
          className: 'clear',
          innerHTML: '&nbsp;'
        }]
    },{
      tagName: 'div',
      className: 'submenu-entry',
      childNodes: [{
        tagName: 'div',
        className: 'submenu-entry-bottom-left',
        innerHTML: '&nbsp;'
      },{
        tagName: 'div',
        className: 'submenu-entry-bottom',
        innerHTML: '&nbsp;'
      },{
        tagName: 'div',
        className: 'submenu-entry-bottom-right',
        innerHTML: '&nbsp;'
      },{
          tagName: 'div',
          className: 'clear',
          innerHTML: '&nbsp;'
        }]
    });

    $('body').appendDom([{
      tagName: 'div',
      className: 'submenu',
      childNodes: childNodes
    }]);

    var subMenu = $('.submenu');
    subMenu.css('left', $(scope).offset().left);
    $(scope).css('background-color' , '#d3d3d3');

    var maxWidth = 0;
    subMenu.find('.submenu-entry-middle').each(function() {
      if($(this).width() > maxWidth)
      {
        maxWidth = $(this).width();
      }
    });

    if(isEdit)
    {
      maxWidth += 15;
    }

    subMenu.find('.submenu-entry-top').width(maxWidth - 8);
    subMenu.find('.submenu-entry-middle').width(maxWidth);
    subMenu.find('.submenu-entry-middle-link').width(maxWidth);
    subMenu.find('.submenu-entry-middle-link a').width(maxWidth);
    subMenu.find('.submenu-entry-separator').width(maxWidth);
    subMenu.find('.submenu-entry-separator img').width(maxWidth - 20);
    subMenu.find('.submenu-entry-empty').width(maxWidth);
    subMenu.find('.submenu-entry-bottom').width(maxWidth - 8);

    $('body').bind('mousemove', function(e) {
      if(!isInMenu(e.pageX, e.pageY, scope))
      {
        $('body').unbind('mousemove');
        $(scope).css('background-color' , '');
        $('.submenu').remove();
      }
    });
  }
};

var isInMenu = function(x, y, scope)
{
  var menu = $(scope);
  var menuTopLeft = menu.offset();
  var menuBottomRight = menu.offset();
  menuBottomRight.top += menu.height();
  menuBottomRight.left += menu.width();

  var subMenu = $('.submenu');
  var subMenuTopLeft = subMenu.offset();
  var subMenuBottomRight = subMenu.offset();
  subMenuBottomRight.top += subMenu.height();
  subMenuBottomRight.left += subMenu.width();

  return (x >= menuTopLeft.left && x <= menuBottomRight.left
    && y >= menuTopLeft.top && y <= menuBottomRight.top)
    || (x >= subMenuTopLeft.left && x <= subMenuBottomRight.left
    && y >= subMenuTopLeft.top && y <= subMenuBottomRight.top);
};

