diff --git a/menu_attach_block.css b/menu_attach_block.css
index b8618b4..fc6c7e8 100644
--- a/menu_attach_block.css
+++ b/menu_attach_block.css
@@ -12,13 +12,10 @@ div.messages.status.block {
   padding: 2px 8px;
 }
 
-.menu-attach-block-wrapper {
-  display: none;
-}
-
 .menu-attach-block-wrapper.orientation-horizontal {
   position: relative;
 }
+
 .menu-attach-block-wrapper.orientation-horizontal .block {
   background-color: white;
   padding: 1em;
@@ -39,13 +36,13 @@ li.attached-block a {
   display: inline-block;
 }
 
-a.menu-attach-block-drop-link,
-a.menu-attach-block-drop-link:hover,
-a.menu-attach-block-drop-link:focus,
-#main-menu a.menu-attach-block-drop-link,
-#main-menu a.menu-attach-block-drop-link:hover,
-#main-menu a.menu-attach-block-drop-link:focus,
-#main-menu-links li.active-trail a.menu-attach-block-drop-link {
+a.menu-attach-block-drop-link.external,
+a.menu-attach-block-drop-link.external:hover,
+a.menu-attach-block-drop-link.external:focus,
+#main-menu a.menu-attach-block-drop-link.external,
+#main-menu a.menu-attach-block-drop-link.external:hover,
+#main-menu a.menu-attach-block-drop-link.external:focus,
+#main-menu-links li.active-trail a.menu-attach-block-drop-link.external {
   background: transparent url("arrow-asc.png") no-repeat scroll 2px;
   border: 0;
   display: inline-block;
@@ -57,8 +54,8 @@ a.menu-attach-block-drop-link:focus,
   width: 3px;
 }
 
-li.dropped a.menu-attach-block-drop-link,
-#main-menu li.dropped a.menu-attach-block-drop-link {
+li a.menu-attach-block-drop-link.external.dropped,
+#main-menu li a.menu-attach-block-drop-link.external.dropped {
   background-image: url("arrow-desc.png");
   border: none;
   height: 100%;
@@ -67,3 +64,11 @@ li.dropped a.menu-attach-block-drop-link,
   text-indent: -9999em;
   width: 3px;
 }
+
+a.menu-attach-block-drop-link ~ .menu-attach-block-wrapper {
+  display: none;
+}
+
+a.menu-attach-block-drop-link.dropped ~ .menu-attach-block-wrapper {
+  display: initial;
+}
diff --git a/menu_attach_block.info b/menu_attach_block.info
index 2f4dccb..28973f8 100644
--- a/menu_attach_block.info
+++ b/menu_attach_block.info
@@ -6,8 +6,5 @@ dependencies[] = menu
 dependencies[] = block
 
 stylesheets[all][] = menu_attach_block.css
-
 configure = admin/structure/menu
-
 files[] = menu_attach_block.test
-
diff --git a/menu_attach_block.js b/menu_attach_block.js
index 8b09808..cdd65bb 100644
--- a/menu_attach_block.js
+++ b/menu_attach_block.js
@@ -1,31 +1,52 @@
 (function ($) {
-  // Implement a show/hide.
-  Drupal.behaviors.menu_attach_block = {
-    attach: function (context, settings) {
-      $('a.menu-attach-block-drop-link', context).click(function(event) {
-        var link = $(this);
-        if (link.hasClass('menu-ajax-enabled')) { // Load contents using ajax
-          if (!link.hasClass('menu-ajax-loaded')) {
-            ajax_path = Drupal.settings.basePath + 'menu_attach_block/ajax/' + (link).attr('data-block-id');
-            $.ajax({
-              type: 'GET',
-              url: ajax_path,
-              data: '',
-              dataType: 'HTML',
-              success: function ($block_html) {
-                $(link).next('.menu-attach-block-wrapper').html($block_html);
-                Drupal.attachBehaviors(link);
-              }
-            });
-          }
-        }
-        $(link).next('.menu-attach-block-wrapper').slideToggle('fast');
-        $(link).parent().toggleClass('dropped');
-        event.preventDefault();
-      });
-      // Prevent other Javascript from affecting the display of drop links.
-      $('.menu-attach-block-drop-link')
-        .hover(function(){return false;}, function(){return false;});
-    }
-  }
+	// Implement a show/hide.
+	Drupal.behaviors.menu_attach_block = {
+		attach: function (context, settings) {
+			$('a.menu-attach-block-drop-link.expand-on-hover', context).hover(function() {
+				if (!($(this).hasClass('dropped'))) {
+					expand_toggle($(this));
+				}
+			}, function() { return false; });
+
+			$('li', context).hover(function() { return false; }, function() {
+				var link = $(this).find('a.menu-attach-block-drop-link.expand-on-hover.dropped');
+
+				if ($(link).length) {
+					expand_toggle(link);
+				}
+			});
+
+			$('a.menu-attach-block-drop-link.expand-on-click', context).click(function(event) {
+				expand_toggle($(this));
+				event.preventDefault();
+			});
+
+			function expand_toggle(link) {
+				if (link.hasClass('menu-ajax-enabled')) { // Load contents using ajax
+					if (!link.hasClass('menu-ajax-loaded')) {
+						ajax_path = Drupal.settings.basePath + 'menu_attach_block/ajax/' + (link).attr('data-block-id');
+						$.ajax({
+							type: 'GET',
+							url: ajax_path,
+							data: '',
+							dataType: 'HTML',
+							success: function ($block_html) {
+								$(link).next('.menu-attach-block-wrapper').html($block_html);
+								Drupal.attachBehaviors(link);
+
+								$(link).next('.menu-attach-block-wrapper').slideToggle('fast');
+								$(link).toggleClass('dropped');
+							}
+						});
+					} else {
+						$(link).next('.menu-attach-block-wrapper').slideToggle('fast');
+						$(link).toggleClass('dropped');
+					}
+				} else {
+					$(link).next('.menu-attach-block-wrapper').slideToggle('fast');
+					$(link).toggleClass('dropped');
+				}
+			}
+		}
+	}
 }(jQuery));
diff --git a/menu_attach_block.module b/menu_attach_block.module
index c1d2248..0894409 100644
--- a/menu_attach_block.module
+++ b/menu_attach_block.module
@@ -30,6 +30,11 @@ function menu_attach_block_menu() {
       'access callback' => TRUE,
       'type' => MENU_CALLBACK,
     ),
+    '<droplink>' => array(
+      'page callback' => 'drupal_not_found',
+      'access callback' => TRUE,
+      'type' => MENU_CALLBACK,
+    ),
   );
 }
 
@@ -77,13 +82,16 @@ function menu_attach_block_link(&$variables) {
     $link = '';
     // menu_attach_block gives users the option to select '<block>' as the menu
     // path for a link.
-    if ($variables['path'] != '<block>') {
+    if ($variables['path'] != '<block>' && $variables['path'] != '<droplink>') {
       // Build the link manually instead of using l() to avoid getting caught in
       // theme_link() again.
+
       $variables['menu_attach_block_no_render'] = TRUE;
       $link = theme('link', $variables);
-    } else {
-      $link = '<a>' . $variables['text'] . '</a>';
+    }
+    else {
+      // remove link
+      $link = '';
     }
 
     if ($options['menu_attach_block']['use_ajax'] || !$options['menu_attach_block']['no_drop']) {
@@ -91,11 +99,36 @@ function menu_attach_block_link(&$variables) {
       if ($options['menu_attach_block']['use_ajax']) {
         $menu_classes[] = 'menu-ajax-enabled';
       }
+
+      if ($variables['path'] == '<droplink>') {
+        // use menu item as drop link, add other class passed in on $variables
+        if (isset($variables['attributes']['class'])) {
+          $menu_classes = array_merge($menu_classes, $variables['attributes']['class']);
+        }
+      }
+      else {
+        // add class 'external' to "More" link to apply styles
+        $menu_classes[] = 'external';
+      }
+
+      if ($options['menu_attach_block']['on_hover']) {
+        $menu_classes[] = 'expand-on-hover';
+      }
+      else {
+        $menu_classes[] = 'expand-on-click';
+      }
+
+      // if 'expanded on load' set, add class 'dropped'
+      if (isset($variables['options']['menu_attach_block']['dropped']) && $variables['options']['menu_attach_block']['dropped']) {
+        $menu_classes[] = 'dropped';
+      }
+
       $attributes = array(
         'class' => implode(' ', $menu_classes),
         'data-block-id' => $options['menu_attach_block']['name'],
         'id' => $variables['path'] . '-drop-link-' . $variables['options']['menu_attach_block']['mlid'],
       );
+
       // Pass a space as the fragment parameter to get a <a href='# '> link.
       // @link http://bit.ly/zZXArS @endlink
       $l_options = array(
@@ -103,7 +136,15 @@ function menu_attach_block_link(&$variables) {
         'external' => TRUE,
         'attributes' => $attributes,
       );
-      $link .= PHP_EOL . l(t('More'), '', $l_options);
+
+      if ($variables['path'] == '<droplink>') {
+        // use menu item as drop link
+        $link .= l($variables['text'], '', $l_options);
+      }
+      else {
+        $link .= PHP_EOL . l(t('More'), '', $l_options);
+      }
+
       drupal_add_js(drupal_get_path('module', 'menu_attach_block') . '/menu_attach_block.js');
     }
 
@@ -156,11 +197,11 @@ function menu_attach_block_preprocess_links(&$variables) {
   // @todo Investigate in more detail.
   if (array_key_exists('links', $variables) && is_array($variables['links']) && count($variables['links'])) {
     foreach ($variables['links'] as $key => &$link) {
-      if (
-        is_array($link) &&
+      if (is_array($link) &&
         array_key_exists('menu_attach_block', $link) &&
         empty($link['menu_attach_block']['name']) == FALSE
       ) {
+
         $attached_block = TRUE;
 
         $link['attributes']['class'][] = 'attached-block';
@@ -229,8 +270,12 @@ function menu_attach_block_form_menu_overview_form_alter(&$form, &$form_state) {
  */
 function menu_attach_block_form_menu_edit_item_alter(&$form, &$form_state) {
   if (isset($form['link_path']['#description'])) {
-    $form['link_path']['#description'] .= ' ' . t('Enter %block to disable the link and display only the attached block.', array('%block' => '<block>'));
+    $form['link_path']['#description'] .= ' ' . t('Enter %block to disable the link and display only the attached block. Enter %droplink to have link show/hide block via javascript.', array(
+        '%block' => '<block>',
+        '%droplink' => '<droplink>'
+      ));
   }
+
   $form['menu_attach_block'] = array(
     '#type' => 'fieldset',
     '#title' => t('Attach block'),
@@ -241,14 +286,15 @@ function menu_attach_block_form_menu_edit_item_alter(&$form, &$form_state) {
     '#suffix' => '</div>',
     '#tree' => TRUE,
   );
+
   $options = array();
   // @todo Change to use code similar to that in block_admin_display().
   $blocks = _block_rehash();
-
   foreach ($blocks as $block) {
     $options[$block['module'] . '|' . $block['delta']] = $block['info'];
   }
   asort($options);
+
   $form['menu_attach_block']['name'] = array(
     '#type' => 'select',
     '#title' => t('Block'),
@@ -273,12 +319,38 @@ function menu_attach_block_form_menu_edit_item_alter(&$form, &$form_state) {
       ),
     ),
   );
+  $form['menu_attach_block']['dropped'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Show expanded on load'),
+    '#default_value' => isset($form['options']['#value']['menu_attach_block']['dropped']) ? $form['options']['#value']['menu_attach_block']['dropped'] : FALSE,
+    '#states' => array(
+      'visible' => array(
+        ':input[name="menu_attach_block[use_ajax]"]' => array('checked' => FALSE),
+        ':input[name="menu_attach_block[no_drop]"]' => array('checked' => FALSE),
+      ),
+    ),
+  );
+  $form['menu_attach_block']['on_hover'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Trigger expansion on mouse hover'),
+    '#default_value' => isset($form['options']['#value']['menu_attach_block']['on_hover']) ? $form['options']['#value']['menu_attach_block']['on_hover'] : FALSE,
+    '#states' => array(
+      'visible' => array(
+        ':input[name="menu_attach_block[no_drop]"]' => array('checked' => FALSE),
+      ),
+    ),
+  );
   $form['menu_attach_block']['orientation'] = array(
     '#type' => 'select',
     '#title' => t('Menu orientation'),
     '#default_value' => isset($form['options']['#value']['menu_attach_block']['orientation']) ? $form['options']['#value']['menu_attach_block']['orientation'] : 'horizontal',
-    '#options' => array('horizontal' => t('Horizontal'), 'vertical' => t('Vertical'), 'none' => t('None')),
+    '#options' => array(
+      'horizontal' => t('Horizontal'),
+      'vertical' => t('Vertical'),
+      'none' => t('None')
+    ),
   );
+
   // Inject handlers.
   $form['#validate'] = array_merge(array('menu_attach_block_menu_edit_item_validate'), $form['#validate']);
   $form['#submit'] = array_merge(array('menu_attach_block_menu_edit_item_submit'), $form['#submit']);
@@ -307,6 +379,16 @@ function menu_attach_block_menu_edit_item_submit($form, &$form_state) {
   if (isset($values['menu_attach_block'])) {
     $values['menu_attach_block']['mlid'] = $values['original_item']['mlid'];
     $values['menu_attach_block']['plid'] = $values['original_item']['plid'];
+
+    if ($values['menu_attach_block']['use_ajax']) {
+      $values['menu_attach_block']['no_drop'] = 0;
+      $values['menu_attach_block']['dropped'] = 0;
+    }
+    elseif ($values['menu_attach_block']['no_drop']) {
+      $values['menu_attach_block']['dropped'] = 0;
+      $values['menu_attach_block']['on_hover'] = 0;
+    }
+
     $values['options']['menu_attach_block'] = $values['menu_attach_block'];
   }
 
diff --git a/menu_attach_block.test b/menu_attach_block.test
index 45d0361..fcfb6ad 100644
--- a/menu_attach_block.test
+++ b/menu_attach_block.test
@@ -4,60 +4,59 @@
  * Tests attaching of a core block to a menu.
  */
 class AttachBlockTestCase extends DrupalWebTestCase {
-  protected $privileged_user;
-
-  public static function getInfo(){
-    return array(
-      'name' => 'Attach block test case',
-      'description' => 'Makes sure that a block to a menu item',
-      'group' => 'Menu Attach Block',
-    );
-  }
-
-  public function setUp() {
-    // Enable menu_attach_block module.
-    parent::setUp(array('menu', 'menu_attach_block'));
-    // Set up a user with privileges to add blocks.
-    $this->privileged_user = $this->drupalCreateUser(array('administer menu'));
-  }
-
-  function testAttachBlock() {
-    $this->drupalLogin($this->privileged_user);
-    // Save a new menu item with an attached block.
-    $edit = array();
-    $edit['link_title'] = $this->randomName();
-    $edit['link_path'] = 'admin/structure/menu/manage/main-menu/add';
-    $edit["menu_attach_block[name]"] = 'system|powered-by';
-    $this->drupalPost($edit['link_path'], $edit, t('Save'));
-
-    // Check that the admin interface shows the block as attached.
-    $this->assertText(check_plain("Powered by Drupal"), t('Block attached to menu in admin interface'), 'Admin');
-
-    // Check the the block got attached to the menu.
-    $this->assertPattern(
-      '|<li class="[\w-\d]+ attached-block|',
-      t('Class added to Menu container li'),
-      'Frontend'
-    );
-
-    // Check that the block has been attached to the correct link.
-    $this->assertPattern(
-      '|<a href="\/[\?q=]?' . $edit['link_path'] . '" title="" class="attached-block">' . $edit['link_title'] . '</a>|',
-      t('Block attached to correct link'),
-      'Frontend'
-    );
-
-    // Test that links with the dummy <block> path are displayed correctly.
-    $edit = array();
-    $edit['link_title'] = $this->randomName();
-    $edit['link_path'] = '<block>';
-    $edit["menu_attach_block[name]"] = 'system|powered-by';
-    $this->drupalPost('admin/structure/menu/manage/main-menu/add', $edit, t('Save'));
-    // Check that the menu is displayed.
-    $this->assertText(
-      $edit['link_title'],
-      'Link to <block> (anchor without href) is displayed correctly.'
-    );
-
-  }
+	protected $privileged_user;
+
+	public static function getInfo(){
+		return array(
+			'name' => 'Attach block test case',
+			'description' => 'Makes sure that a block to a menu item',
+			'group' => 'Menu Attach Block',
+		);
+	}
+
+	public function setUp() {
+		// Enable menu_attach_block module.
+		parent::setUp(array('menu', 'menu_attach_block'));
+		// Set up a user with privileges to add blocks.
+		$this->privileged_user = $this->drupalCreateUser(array('administer menu'));
+	}
+
+	function testAttachBlock() {
+		$this->drupalLogin($this->privileged_user);
+		// Save a new menu item with an attached block.
+		$edit = array();
+		$edit['link_title'] = $this->randomName();
+		$edit['link_path'] = 'admin/structure/menu/manage/main-menu/add';
+		$edit["menu_attach_block[name]"] = 'system|powered-by';
+		$this->drupalPost($edit['link_path'], $edit, t('Save'));
+
+		// Check that the admin interface shows the block as attached.
+		$this->assertText(check_plain("Powered by Drupal"), t('Block attached to menu in admin interface'), 'Admin');
+
+		// Check the the block got attached to the menu.
+		$this->assertPattern(
+			'|<li class="[\w-\d]+ attached-block|',
+			t('Class added to Menu container li'),
+			'Frontend'
+		);
+
+		// Check that the block has been attached to the correct link.
+		$this->assertPattern(
+			'|<a href="\/[\?q=]?' . $edit['link_path'] . '" title="" class="attached-block">' . $edit['link_title'] . '</a>|',
+			t('Block attached to correct link'),
+			'Frontend'
+		);
+
+		// Test that links with the dummy <block> path are displayed correctly.
+		$edit = array();
+		$edit['link_title'] = $this->randomName();
+		$edit['link_path'] = '<block>';
+		$edit["menu_attach_block[name]"] = 'system|powered-by';
+		$this->drupalPost('admin/structure/menu/manage/main-menu/add', $edit, t('Save'));
+		// Check that the menu is displayed.
+		$this->assertText(
+			$edit['link_title'],
+			'Link to <block> (anchor without href) is displayed correctly.'
+		);
+	}
 }
diff --git a/menu_attach_block_wrapper.tpl.php b/menu_attach_block_wrapper.tpl.php
index bf3ddca..7a05d2e 100644
--- a/menu_attach_block_wrapper.tpl.php
+++ b/menu_attach_block_wrapper.tpl.php
@@ -23,5 +23,5 @@
  */
 ?>
 <div class="<?php print $classes?>">
-  <?php print $content; ?>
+	<?php print $content; ?>
 </div>
