// -------------------------------------------
// This file is for website menu blocks
//   It is needed for the display on published sites
//   This only works for single menus.  Will need to be changed for menu widgets
// -------------------------------------------


// Helper function used by the dimensions and offset modules
function num(elem, prop) {
        return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;
}
jQuery.fn.extend({
        position: function() {
                var left = 0, top = 0, results;

                if ( this[0] ) {
                        // Get *real* offsetParent
                        var offsetParent = this.offsetParent(),

                        // Get correct offsets
                        offset       = this.offset(),
                        parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();

                        // Subtract element margins
                        // note: when an element has margin: auto the offsetLeft and marginLeft
                        // are the same in Safari causing offset.left to incorrectly be 0
                        offset.top  -= num( this, "marginTop" );
                        offset.left -= num( this, "marginLeft" );

                        // Add offsetParent borders
                        parentOffset.top  += num( offsetParent, "borderTopWidth" );
                        parentOffset.left += num( offsetParent, "borderLeftWidth" );

                        // Subtract the two offsets
                        results = {
                                top:  offset.top  - parentOffset.top,
                                left: offset.left - parentOffset.left
                        };
                }

                return results;
        },

        offsetParent: function() {
                var offsetParent = this[0].offsetParent;
                while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, "position") == "static") )
                        offsetParent = offsetParent.offsetParent;
                return jQuery(offsetParent);
        }
});

var open_sub_menus = [];
var current_menu_item;
var current_parent_menu;
function _show_sub_menu (menu, parent_menu) {
  if (open_sub_menus.length && (!parent_menu || parent_menu == current_parent_menu)) {
    var open_sub_menu = open_sub_menus.pop();
    open_sub_menu.css("visibility", "hidden");
  }  

  current_parent_menu = parent_menu;
  var id = $(menu).attr("id");
  var ul = $("#sub_"+id);
  open_sub_menus.push(ul);
  var div_parent = ul.parents("div:first");
  ul.css("visibility", "visible");

  var padding_left = $(menu).css("padding-left");
  var padding_right = $(menu).css("padding-right");
  padding_left = parseInt(padding_left.replace(/px/, ""));
  padding_right = parseInt(padding_right.replace(/px/, ""));
  ul.width($(menu).width() + padding_left + padding_right);

  if (parent_menu) {
    ul.css("top", $(menu).position().top - parseInt(ul.css("padding-top").replace(/px/, "")));
    ul.css("left", $(menu).position().left + $(ul).width());
  } else {
    var ul_top;
    ul_top = div_parent.position().top + div_parent.height() + parseInt(div_parent.css("padding-top").replace(/px/, "")) + parseInt(div_parent.css("padding-bottom").replace(/px/, ""));

    ul.css("top", ul_top);
    ul.css("left", $(menu).position().left - parseInt(ul.css("padding-left").replace(/px/, "")));
  }

  if (div_parent.css("background-color") == "transparent" && div_parent.css("background-image") == "none") {
    var new_parent = div_parent;
    while (new_parent = new_parent.parent()) {
      if (new_parent.css("background-color") != "transparent") {
        ul.css("background-color", new_parent.css("background-color"));
        break;
      } else if (new_parent.css("background-image") != "none") {
        ul.css("background-image", new_parent.css("background-image"));
        ul.css("background-repeat", new_parent.css("background-repeat"));
        ul.css("background-position", new_parent.css("background-position"));
        ul.css("background-attachment", new_parent.css("background-attachment"));
        break;
      }
    }
  } else {
    ul.css("background-color", div_parent.css("background-color"));
    ul.css("background-image", div_parent.css("background-image"));
    ul.css("background-repeat", div_parent.css("background-repeat"));
    ul.css("background-position", div_parent.css("background-position"));
    ul.css("background-attachment", div_parent.css("background-attachment"));
  }
  ul.css("font-size", div_parent.css("font-size"));
  ul.css("z-index", 500);

}
function _hide_sub_menus () {
  setTimeout(function () {
    if (!current_menu_item) {
      while (open_sub_menus.length) {
        var open_sub_menu = open_sub_menus.pop();
        open_sub_menu.css("visibility", "hidden");
      }
    }
  }, 50000);
}
