if (document.getElementById) {

var menuClick = {

init : function() {
menuClick.util.configEvents();
this.moreBtn = document.getElementById("moreBtn");
this.moreMenu = document.getElementById("moreMenu");

this.bodyTag = document.getElementsByTagName("body")[0];

/* add event listeners */
this.util.addEvent(this.moreBtn, 'click', this.showMenu, false);
this.util.addEvent(this.moreBtn, 'click', this.setTimer, false);
this.util.addEvent(this.bodyTag, 'click', this.hideMenu, false);
},

setTimer : function() {
/* close menu after 2 seconds */
if(menuClick.timer) {clearTimeout (menuClick.timer);}
menuClick.timer = setTimeout ( "menuClick.closeMenu()", 2000 );
},

clearTimer: function() {
clearTimeout (menuClick.timer);
},

showMenu : function() {
menuClick.moreMenu.className = "show";
menuClick.util.addEvent(menuClick.moreMenu, 'mouseover', menuClick.clearTimer, false);
menuClick.util.addEvent(menuClick.moreMenu, 'mouseout', menuClick.setTimer, false);
},

closeMenu : function() {
menuClick.moreMenu.className = "hide";
},

hideMenu : function(evt) {

if (menuClick.moreMenu.className === "show") {
var theClickedElement= menuClick.util.findTarget(evt, 'a', this);
if(!theClickedElement) {
menuClick.closeMenu();
menuClick.clearTimer();
}
else if (theClickedElement.parentNode.parentNode.id !== 'moreMenu' && theClickedElement.id !== 'moreBtn') {
menuClick.closeMenu();
menuClick.clearTimer();
}
}

},

util : {

    configEvents : function() {
      if (document.addEventListener) {
        this.addEvent = function(el, type, func, capture) { el.addEventListener(type, func, capture); };
        this.stopBubble = function(evt) { evt.stopPropagation(); };
        this.stopDefault = function(evt) { evt.preventDefault(); };
        this.findTarget = function(evt, targetNode, container) {
         var currentNode = evt.target;
         while (currentNode && currentNode !== container) {
          if (currentNode.nodeName.toLowerCase() === targetNode) { return currentNode; break; }
          else { currentNode = currentNode.parentNode; }
         };
         return false;
        };
      }
      else if (document.attachEvent) {
       this.addEvent = function(el, type, func) { el["e" + type + func] = func; el[type + func] = function() { el["e" + type + func] (window.event); }; el.attachEvent("on" + type, el[type + func]); };
       this.stopBubble = function(evt) { evt.cancelBubble = true; };
       this.stopDefault = function(evt) { evt.returnValue = false; };
       this.findTarget = function(evt, targetNode, container) { var currentNode = evt.srcElement; 
        while (currentNode && currentNode !== container) {
         if (currentNode.nodeName.toLowerCase() === targetNode) { return currentNode; break; }
         else { currentNode = currentNode.parentNode; }
        };
        return false;
       };
      }
    }
  
  }

};
	
menuClick.init();
}
