// Pixelsilk Website Navigation Menu Plugin
// v 2.1

function  findLeft(obj) {
  var curLeft = 0;
  if (obj.offsetParent) {
    curLeft = obj.offsetLeft;
    while (obj = obj.offsetParent) {
      curLeft += obj.offsetLeft;
    }
  }
  return curLeft;
}

/*
  Options that can  be passed to the plugin:
    fadeInTime
    fadeOutTime
    menuWidth: (int) width of the submenu container  element
    containerElement: (string) theme element to check  width against
    containerWidth: (int) width to use instead of  containerElement's; overrides
    menuElement: (string) submenu container element to  look for
    rightArrow: (html) HTML to render the "submenu" arrow  indicator
*/
jQuery.fn.navMenu = function(options) {

  var defaults = {
    fadeInTime: 200, // in  milliseconds
    fadeOutTime: 300,  // in milliseconds
     menuWidth: 250,
    containerElement:  "#theme",
    containerWidth:  0,
    menuElement: "ul",
    rightArrow: " »"
  }

  var settings = $.extend({}, defaults, options);

  var obj = $(this);

  $(obj).find('li ul li:has(ul) > a').prepend('<span class="menu-sub-indicator">' + settings.rightArrow + '</span>');

  var pos;
  var menuWidth = settings.menuWidth;
  var containerWidth =  $(settings.containerElement).width();
  if ( settings.containerWidth >  0 ) {
    containerWidth = settings.containerWidth;
  }
  $(obj).find('li ' + settings.menuElement + ' li ' + settings.menuElement).each(function() {
    pos = findLeft($(this).parent().parent().parent().get(0));
    //alert(pos);
    if (containerWidth  - pos < (menuWidth  * 2)) {
      $(this).css('left', '-' + menuWidth + 'px');
    }
  });

  $(obj).find('li ' + settings.menuElement).attr('fadeState', 'none');
  $(obj).find('li').hover(
    function() {
      if ($(this.getElementsByTagName(settings.menuElement)[0]).attr('fadeState') == 'fadeOut') {
        $(this.getElementsByTagName(settings.menuElement)[0]).stop(true, true);
        $(this.getElementsByTagName(settings.menuElement)[0]).attr('fadeState', 'none');
      }

      if ($(this.getElementsByTagName(settings.menuElement)[0]).attr('fadeState') == 'none') {
        $(this.getElementsByTagName(settings.menuElement)[0]).attr('fadeState', 'fadeIn');
        $(this.getElementsByTagName(settings.menuElement)[0]).fadeIn(settings.fadeInTime, function() {
          $(this).attr('fadeState', 'none');
        });
      }
      if ( !$(this).hasClass("current") ) {
        $(this).addClass("currentFade");
      }
    },
    function() {
      if ($(this.getElementsByTagName(settings.menuElement)[0]).attr('fadeState') == 'fadeIn') {
        $(this.getElementsByTagName(settings.menuElement)[0]).stop(true, true);
        $(this.getElementsByTagName(settings.menuElement)[0]).attr('fadeState', 'none');
      }

      if ($(this.getElementsByTagName(settings.menuElement)[0]).attr('fadeState') == 'none') {
        $(this.getElementsByTagName(settings.menuElement)[0]).attr('fadeState', 'fadeOut');
        $(this.getElementsByTagName(settings.menuElement)[0]).fadeOut(settings.fadeOutTime, function() {
          $(this).attr('fadeState', 'none');
        });
      }
      if ( !$(this).hasClass("current") ) {
        $(this).removeClass("currentFade");
      }
   }
  );

  $(obj).find('li ul:empty').css('visibility', 'hidden');

}