$(document).ready(function() {
    
var menu = new Menu('.HP_menu .menu');});
function Menu(context) {
  
  var self = this;
  
  self.context = $(context);
  self.li = $('li', self.context);
  self.is_out = false;
  self.timeout = false;
  
  self.context.find('li').each(function() {
    
    var obj = $(this);
    
    if(obj.find('ul').length > 0)
      obj.addClass('submenu');
    
  });
  
  self.li.mousedown(function(e) { e.stopPropagation(); });
  $(document).mousedown(function() { self.li.removeClass('hover'); });
  
  self.li.hover(function(e) {
    
    var obj = $(this);
    var ul = obj.find('> ul').get(0);
    
    self.is_out = false;
    
    window.clearTimeout(self.timeout);
    
    self.li.each(function() {
      
      var each_li = $(this);
      
      if(each_li.hasClass('hover') == true) {
        
        each_li.removeClass('hover');
        
        //if(each_li.hasClass('root') && obj.hasClass('root')) {
        //  each_li.find('> ul').slideUp('fast');
       // }
        
      }
      
    });
    
    obj.parents('li').addClass('hover');
    obj.addClass('hover');

    var positionLeft = 0;

    var calculatePosition = function(elm) {
      
      var styleLeft = parseInt($(elm).css('left'));

      if(styleLeft > 0) {

        positionLeft += styleLeft;

        if(elm.parentNode)
          calculatePosition(elm.parentNode);

      } else if(elm.offsetLeft > 0) {
        positionLeft += elm.offsetLeft;
      } else {
        calculatePosition(elm.parentNode);
      }
      
    };
    
    calculatePosition(this.lastChild);

    if(this.lastChild.offsetWidth + positionLeft > document.documentElement.offsetWidth)
      this.lastChild.style.left = -this.parentNode.offsetWidth + 13 + 'px';
    
    //obj.find('> ul').hide();
    //obj.find('> ul').slideDown('fast');
    
    e.stopPropagation();
    
  }, 
  function() {
    
    self.is_out = true;
    
    window.clearTimeout(self.timeout);
    
    self.timeout = window.setTimeout(function() {
      
      if(self.is_out == true) {
        
        self.li.removeClass('hover');
        
       // if(self.li.hasClass('root'))
        //  self.li.find('> ul').slideUp('fast');
        
      }
      
    }, 1500);
    
  });
  
}



