You are here

function om_maximenu_action in OM Maximenu 6

Same name and namespace in other branches
  1. 8 inc/om_maximenu.effects.inc \om_maximenu_action()
  2. 7 inc/om_maximenu.effects.inc \om_maximenu_action()

Mouse actions

1 call to om_maximenu_action()
om_maximenu_init in inc/om_maximenu.render.inc
Implementation of hook_init().

File

inc/om_maximenu.effects.inc, line 16
OM Maximenu Effects

Code

function om_maximenu_action($action = 'hover', $menu = '', $displace = 0, $style = '', $delay = 1000, $fadeout = 1) {
  $displace_menu = $displace == 1 ? "\$('#om-maximenu-" . $menu . " li.om-leaf .om-maximenu-content').css('position', 'relative').addClass('om-maximenu-displace');" : '';
  if ($action == 'click_fast') {
    $click_action = "\n        \$(this).parent().siblings().children('.om-maximenu-content').hide();        \n        \$(this).siblings('.om-maximenu-content').toggle().pause();";
  }
  elseif ($action == 'click_slow') {
    $click_action = "\n        \$(this).parent().siblings().children('.om-maximenu-content').slideUp('slow');        \n        \$(this).siblings('.om-maximenu-content').toggle('slow').pause();";
  }
  else {
    $click_action = "";
  }
  $click = "\n    \$(document).ready(function(){" . $displace_menu . "    \n      \$('#om-maximenu-" . $menu . " li.om-leaf .om-maximenu-content').removeClass('om-maximenu-content-nofade');\n      \$('#om-maximenu-" . $menu . " li.om-leaf .om-link').click(function (ev) {\n        ev.stopPropagation();\n\t\t\t\tif(\$(this).parent().hasClass('open')) {\n\t\t\t\t  \$(this).parent().removeClass('open');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t  \$('#om-maximenu-" . $menu . " li.om-leaf').removeClass('open');\n\t\t\t\t  \$(this).parent().addClass('open');\n\t\t\t\t}\n        " . $click_action . "       \n        return false;\n      });\n      \$('#om-maximenu-" . $menu . " .om-maximenu-content').click(function(ev) {\n        ev.stopPropagation();\n      });       \n      \$('html').click(function() {\n        // Close any open menus.\n        \$('#om-maximenu-" . $menu . " .om-maximenu-content:visible').each(function() {\n          \$(this).parent().removeClass('open');\n          \$(this).hide();\n        });\n      }); \n    }); \n    ";
  $fadeout_out = $fadeout == 1 ? '.fadeOut()' : '';
  $hover_fade = "\n    \$(document).ready(function(){" . $displace_menu . "    \n      \$('#om-maximenu-" . $menu . " li.om-leaf .om-maximenu-content').removeClass('om-maximenu-content-nofade');\n      //\$('#om-maximenu-" . $menu . " li.om-leaf').hover(omFadeIn,omFadeOut); //native jquery\n      //\$('#om-maximenu-" . $menu . " li.om-leaf').hoverIntent(omFadeIn,omFadeOut); //jquery hoverintent\n      \$('#om-maximenu-" . $menu . " li.om-leaf').hoverIntent({\n        over: omFadeIn,\n        timeout: " . $delay . ",\n        out: omFadeOut\n      });\n    });\n    function omFadeIn(){ \$('.om-maximenu-content.closed', this).fadeIn(); }\n    function omFadeOut(){ \$('.om-maximenu-content.closed', this)" . $fadeout_out . "; } \n    ";
  $hover = "\$(document).ready(function(){" . $displace_menu . " });";
  if ($action == 'hover' || $action == 'click_fast') {
    $tabbed_action = "\n        \$('#om-maximenu-" . $menu . " .om-maximenu-tabbed-content .om-tabbed-content').addClass('om-tabbed-content-hide');              \n        \$('#om-maximenu-" . $menu . " #' + tabbedContentId).removeClass('om-tabbed-content-hide');";
  }
  elseif ($action == 'hover_fade' || $action == 'click_slow') {
    $tabbed_action = "\n        \$('#om-maximenu-" . $menu . " .om-maximenu-tabbed-content .om-tabbed-content').addClass('om-tabbed-content-hide').hide();              \n        \$('#om-maximenu-" . $menu . " #' + tabbedContentId).fadeIn('slow').removeClass('om-tabbed-content-hide');";
  }
  else {
    $tabbed_action = "";
  }
  $tabbed_hover_js = "\n    \$(document).ready(function(){\n      \$('#om-maximenu-" . $menu . " ul.om-menu li.om-leaf').removeClass('active');          \n      \$('#om-maximenu-" . $menu . " ul.om-menu li.om-leaf:first-child').addClass('active');          \n      \$('#om-maximenu-" . $menu . " .om-maximenu-tabbed-content div:first-child').removeClass('om-tabbed-content-hide'); \n               \n      \$('#om-maximenu-" . $menu . " .om-leaf .om-link').hover(\n        function () {\n          var leafId = \$(this).parent().attr('id');\n          var tabbedContentId = leafId.replace('leaf', 'tabbed-content');\n          \$('#om-maximenu-" . $menu . " ul.om-menu li.om-leaf').removeClass('active');          \n          \$(this).parent().addClass('active');       \n\n          " . $tabbed_action . "      \n        }, function () {\n          //do nothing\n      });\n    });  \n  ";
  $tabbed_click_js = "\n    \$(document).ready(function(){\n      \$('#om-maximenu-" . $menu . " ul.om-menu li.om-leaf').removeClass('active');          \n      \$('#om-maximenu-" . $menu . " ul.om-menu li.om-leaf:first-child').addClass('active');          \n      \$('#om-maximenu-" . $menu . " .om-maximenu-tabbed-content div:first-child').removeClass('om-tabbed-content-hide'); \n               \n      \$('#om-maximenu-" . $menu . " .om-leaf .om-link').click(function () {\n        var leafId = \$(this).parent().attr('id');\n        var tabbedContentId = leafId.replace('leaf', 'tabbed-content');\n        \$('#om-maximenu-" . $menu . " ul.om-menu li.om-leaf').removeClass('active');          \n        \$(this).parent().addClass('active');          \n                      \n        " . $tabbed_action . "      \n      });\n    });  \n  ";
  $flow = '';
  if ($style == 'scrollv') {
    $flow = "\$('#om-maximenu-" . $menu . " .om-maximenu-tabbed-content-inner').css('height', totalHeight + 'px');";
  }
  if ($style == 'scrollh') {
    $flow = "\$('#om-maximenu-" . $menu . " .om-maximenu-tabbed-content-inner').css('width', totalWidth + 'px');";
  }
  if ($action == 'hover') {
    $speed = 1000;
  }
  if ($action == 'hover_fade') {
    $speed = 2000;
  }
  if ($action == 'click_fast') {
    $speed = 750;
  }
  if ($action == 'click_slow') {
    $speed = 1500;
  }
  if ($action == 'hover' || $action == 'hover_fade') {
    $modal_action = 'hover';
  }
  if ($action == 'click_fast' || $action == 'click_slow') {
    $modal_action = 'click';
  }
  $style_modal_js = "\n    \$(document).ready(function() {\t\n\n\t    \$('#om-maximenu-" . $menu . " .om-link[rel=om-maximenu-modal]')." . $modal_action . "(function(e) {\n\t      // prevent default link behavior\n\t      e.preventDefault();\n\t\t\n\t      // get anchor id\n\t      var id = \$(this).attr('href');\n\n\t      // mask height and width\n\t      var om_maskHeight = \$(document).height();\n\t      var om_maskWidth = \$(window).width();\n\t\n\t      \$('#om-maximenu-mask').css({'width': om_maskWidth, 'height': om_maskHeight});\n\t\t\n\t      // fade effect\t\n\t      \$('#om-maximenu-mask').fadeIn(" . $speed . ");\t\n\t      \$('#om-maximenu-mask').fadeTo('slow',0.75);\t\n\t\n\t      // om-maximenu-modal-content height and width\n\t      var windowHeight = \$(window).height();\n\t      var windowWidth = \$(window).width();\n              \n\t      // set om-maximenu-modal-content to center\n\t      \$(id).css('top',  windowHeight/2-\$(id).height()/2);\n\t      \$(id).css('left', windowWidth/2-\$(id).width()/2);\n\t\n\t      // fade effect to window\n\t      \$(id).fadeIn(" . $speed . "); \n\t    }, function() {\n\t      // do nothing\n\t    });\n\t\n\t    // if close button is clicked\n\t    \$('.om-maximenu-modal-content .om-maximenu-close').click(function() {\n\t\t    \$('#om-maximenu-mask').hide();\n\t\t    \$('.om-maximenu-modal-content').hide();\n\t    });\t\t\n\t\n\t    // if om-maximenu-mask is clicked\n\t    \$('#om-maximenu-mask').click(function() {\n\t\t    \$(this).hide();\n\t\t    \$('.om-maximenu-modal-content').hide();\n\t    });\t\t\t\n    });\n  ";
  $tabbed_scroll_hover_js = "\n    \$(document).ready(function(){\n      var contentNum = \$('#om-maximenu-" . $menu . " .om-maximenu-tabbed-content-inner').children().size();\n      var height = \$('#om-maximenu-" . $menu . " .om-maximenu-tabbed-content').height();\n      var width = \$('#om-maximenu-" . $menu . " .om-maximenu-tabbed-content').width();\n      var totalHeight = height * contentNum;\n      var totalWidth = width * contentNum;\n\n      \$('#om-maximenu-" . $menu . " .om-tabbed-content').css('height', height + 'px');\n      \$('#om-maximenu-" . $menu . " .om-tabbed-content').css('width', width + 'px');\n      " . $flow . "\n                        \n      \$('#om-maximenu-" . $menu . " ul.om-menu li.om-leaf').removeClass('active');          \n      \$('#om-maximenu-" . $menu . " ul.om-menu li.om-leaf:first-child').addClass('active');          \n      \$('#om-maximenu-" . $menu . " .om-maximenu-tabbed-content .om-tabbed-content').removeClass('om-tabbed-content-hide'); \n               \n      \$('#om-maximenu-" . $menu . " .om-leaf .om-link').hover(\n        function () {\n          var leafId = \$(this).parent().attr('id');\n          var tabbedContentId = leafId.replace('leaf', 'tabbed-content');\n                        \n          \$('#om-maximenu-" . $menu . " ul.om-menu li.om-leaf').removeClass('active');          \n          \$(this).parent().addClass('active');          \n\n          \$('#om-maximenu-" . $menu . " .om-maximenu-tabbed-content').scrollTo(\$('#' + tabbedContentId), " . $speed . ");\n        }, function () {\n          // do nothing\n      });\n    });  \n  ";
  $tabbed_scroll_click_js = "\n    \$(document).ready(function(){\n      var contentNum = \$('#om-maximenu-" . $menu . " .om-maximenu-tabbed-content-inner').children().size();\n      var height = \$('#om-maximenu-" . $menu . " .om-maximenu-tabbed-content').height();\n      var width = \$('#om-maximenu-" . $menu . " .om-maximenu-tabbed-content').width();\n      var totalHeight = height * contentNum;\n      var totalWidth = width * contentNum;\n\n      \$('#om-maximenu-" . $menu . " .om-tabbed-content').css('height', height + 'px');\n      \$('#om-maximenu-" . $menu . " .om-tabbed-content').css('width', width + 'px');\n      " . $flow . "\n                        \n      \$('#om-maximenu-" . $menu . " ul.om-menu li.om-leaf').removeClass('active');          \n      \$('#om-maximenu-" . $menu . " ul.om-menu li.om-leaf:first-child').addClass('active');          \n      \$('#om-maximenu-" . $menu . " .om-maximenu-tabbed-content .om-tabbed-content').removeClass('om-tabbed-content-hide'); \n               \n      \$('#om-maximenu-" . $menu . " .om-leaf .om-link').click(function () {\n        var leafId = \$(this).parent().attr('id');\n        var tabbedContentId = leafId.replace('leaf', 'tabbed-content');\n                        \n        \$('#om-maximenu-" . $menu . " ul.om-menu li.om-leaf').removeClass('active');          \n        \$(this).parent().addClass('active');          \n\n        \$('#om-maximenu-" . $menu . " .om-maximenu-tabbed-content').scrollTo(\$('#' + tabbedContentId), " . $speed . ");\n      });\n    });  \n  ";
  $style_accordion_js = "\n    \$(document).ready(function () {\n      var height = \$('#om-maximenu-" . $menu . "').height();\n      var width = \$('#om-maximenu-" . $menu . "').width();\n\n      \$('#om-maximenu-" . $menu . " dl.easy-accordion').css('width', width + 'px').css('height', height + 'px');\n      \$('#om-maximenu-" . $menu . " dl.easy-accordion>dt').removeClass('active');  \n      \$('#om-maximenu-" . $menu . " dl.easy-accordion>dd').removeClass('active');  \n\n      \$('#om-maximenu-" . $menu . " dl.easy-accordion>dt:first-child').addClass('active');  \n      \$('#om-maximenu-" . $menu . " dl.easy-accordion>dd:first-child').addClass('active');  \n      \n      \$('#om-maximenu-" . $menu . "').easyAccordion({\n        autoStart: true,\n        slideInterval: 5000\n        //slideNum: false\n      });\n    });  \n  ";
  $style_roundabout_js = "\$(document).ready(function() { \$('#om-menu-" . $menu . "').roundabout(); });";
  if ($action == 'click_fast' || $action == 'click_slow') {
    if (!empty($style)) {
      if ($style == 'normal') {
        drupal_add_js($tabbed_click_js, "inline");
      }
      elseif ($style == 'accordion') {
        drupal_add_js(OM_MAXIMENU_PATH . '/contrib/jquery.easyAccordion.js');
        drupal_add_js($style_accordion_js, "inline");
      }
      elseif ($style == 'roundabout') {
        drupal_add_js(OM_MAXIMENU_PATH . '/contrib/jquery.roundabout.min.js');
        drupal_add_js($style_roundabout_js, "inline");
      }
      elseif ($style == 'modal') {
        drupal_add_js($style_modal_js, "inline");
      }
      else {
        drupal_add_js(OM_MAXIMENU_PATH . '/contrib/jquery.scrollTo.min.js');
        drupal_add_js($tabbed_scroll_click_js, "inline");
      }
    }
    else {
      drupal_add_js($click, "inline");
    }
  }
  else {
    if (!empty($style)) {
      if ($style == 'normal') {
        drupal_add_js($tabbed_hover_js, "inline");
      }
      elseif ($style == 'accordion') {
        drupal_add_js(OM_MAXIMENU_PATH . '/contrib/jquery.easyAccordion.js');
        drupal_add_js($style_accordion_js, "inline");
      }
      elseif ($style == 'roundabout') {
        drupal_add_js(OM_MAXIMENU_PATH . '/contrib/jquery.roundabout.min.js');
        drupal_add_js($style_roundabout_js, "inline");
      }
      elseif ($style == 'modal') {
        drupal_add_js($style_modal_js, "inline");
      }
      else {
        drupal_add_js(OM_MAXIMENU_PATH . '/contrib/jquery.scrollTo.min.js');
        drupal_add_js($tabbed_scroll_hover_js, "inline");
      }
    }
    else {
      if ($action == 'hover_fade') {
        drupal_add_js(OM_MAXIMENU_PATH . '/contrib/jquery.hoverIntent.minified.js');
        drupal_add_js($hover_fade, "inline");
      }
      else {
        if ($displace == 1) {
          drupal_add_js($hover, "inline");
        }
      }
    }
  }
}