Changelog for Superfish - a jQuery menu plugin

v1.2.1:  	altered 2nd July 07. added hide() before animate to make work for jQuery 1.1.3.

v1.2.2:  	altered 2nd August 07. changed over function .find('ul') to .find('>ul') for smoother animations
			Also deleted the iframe removal lines - not necessary it turns out

v1.2.3:		altered jquery 1.1.3.1 broke keyboard access - had to change quite a few things and set display:none on the
			.superfish rule in CSS instead of top:-999em

v1.3: 		Pretty much a complete overhaul to make all original features work in 1.1.3.1 and above.
			.superfish rule reverted back to top:-999em (which is better).

v1.3.1:		altered 'li[ul]' to $('li:has(ul)') to work with jQuery 1.2

v1.3.2: 	added onshow callback option as requested - 'this' keyword refers to revealed ul.
			fixed bug whereby multiple menus on a page shared options. Now each menu can have separate options.
			fixed IE6 and IE7 bug whereby under certain circumstances => 3rd tier menus appear instantly with text missing when revisited

v1.3.3: 	altered event attachment selectors for performance increase on menu setup.

v1.3.4: 	fixed pathClass bug as current path was not being restored. Still doesn't if using keyboard nav (will work on that).

v1.4: 		store options objects in array $.superfish.o. Also provide public access to $.superfish.defaults
			provided backward compat for jQuery versions less than 1.2 via oldJquery option - will use li[ul] or li:has(ul) as needed
			added more callbacks, also added option to disable hoverIntent usage if that plugin is detected

v1.4.1: 	fixed current path not being restored when using keyboard to tab away from the menu completely
			optimised code further - now less code
			removed addself() in favour of backward compatible add(this)
			also remove new mouseenter/mouseleave events on window.unload (due to paranoia)

v1.4.2:		3rd July 2008. added semi-colon at start of superfish.js file to avert script concatenation errors
			added pathLevels option to limit the depth of submenus that get restored by pathClass
			CSS of main example hugely simplified - other example CSS files less-so.
				- top level menu items are not fixed width
				- only need to set submenu widths in one place.
				- various other improvements.
				- class names used in all CSS files are changed to be less generic
			released optional Supersubs plugin which dynamically adjusts submenu widths
			attach everything to jQuery.fn.superfish to clean up jQuery namespace
			removed the multi-tier-all-horizontal-example as it was never a great idea and doesn't seem to be in use
			Update documentation text and remove certain caveats which were there to support users of much older versions of Superfish
			Documentation now show how to apply bgIgrame 2.1 - it's much easier than before
			Add all links and their focus and blur events to the onunload unbind - paranoid about memory leaks

v1.4.3		5th July 2008. documentation completely redone using Mike Alsup's templates.
			CSS revised so that all types of menu use superfish.css as a base. Include additional CSS files to acheive alternate styles.
			class="sf-menu sf-vertical" creates vertical menu, class="sf-menu sf-navbar" creates nav-bar style menu

v1.4.4		7th July 2008. arrows feature added. If option 'autoArrows' is true, auto-appends (spans) to anchors that have a ul submenu sibling,
			and adds class 'sf-with-ul' to anchor.
			CSS added to style new arrows, including an 8-bit alpha (NOT INDEXED!) transparent png of arrow - degrades to solid for IE6.
			Manually add arrow mark-up to docs and disable autoArrows (via defaults option) to maintain decent performance (for docs page)
			Update docs, including zip download, to suit.
			Fix CSS bug that had the third tier of the navbar-style menu visible when JS not available.
			
v1.4.5		9 July 2008. decreased code weight
			added drop shadows for capable browsers - added css and 8-bit alpha transparent png image for shadow
			remove support for jQuery v<1.2
			remove unload clean-up which was there to solve garbage collection problems in early jQuery versions
			remove toggling 'visibility' on hide and show which as a fix for an IE bug that is no longer exhibited
			removed need for getOpts, rewrote getMenu
			use [].join('') instead of string concatenation for performance increase - probably very slight in this case
			change selector in 'over' function from '.'+o.hoverClass to 'li.'+o.hoverClass

v1.4.6		added workaround for IE7 shadows. If animation alters opacity then shadow is hidden during the animation and appears after.
			This required some JS and a line of CSS, so created shortcut references to lighten code further.
			
v1.4.7		added back in the visibility toggle that was removed in 1.4.5 as the bug is indeed still exhibited by IE6 & 7
			tweaked the look of the shadow slightly and use nicer 32bit png as I now find they behave the same as 8bit png with regard to fades in IE7
			
v1.4.8		fix over-sight: using 32bit png meant that the shadow image did show in IE6. Rather than go back to 8bit, add code to exclude IE6 from getting shadow class.
			use new folder structure recommended by Matt from TopicTrack, for easier updates.

v1.4.9 		2009ish. add new onIdle callback for when 'current' path is restored

v1.5.0 		Jan 2013. Compatibility fixes for jQuery 1.9. Still backward compatibile. Removed code related to using an image for submenu shadows - just use CSS box-shadow instead (old IE will survive without shadows...unfortunately). Other minor aesthetic code alts.

v1.5.1		31 Jan 2013. Use event delegation for events. Update to patched version of hoverIntent which supports event delegation ( forked for prosperity here: https://github.com/joeldbirch/onHoverIntent - original patch author: Kevin Fernandes https://github.com/KevinFernandes/onHoverIntent ).

v1.5.2 		4 Feb 2013. New feature: option to require click to open/close submenus. New feature: Animations on closing submenus. New feature: Add partial support for Android (certain browsers). Full support will be in upcoming version. Minor code clean up.

v1.5.3 		14 Feb 2013. Bug fix. IE was throwing errors.

v1.5.4 		17 Feb 2013. New feature: Links with submenus only followable when their submenu is open, allows support to be extended to ALL browsers on ALL touch devices. Fixes IE bug with 'useClick' feature.

v1.5.5 		20 Feb 2013. Moved flag that temporarily prevents link-follows to touchstart so link clicks via mouse are not delayed. This restores usual submenu behaviour with mouse interaction while retaining full touch device support.

v1.5.6		20 Feb 2013. Bug fix for removing link-clickable delay with mouse interaction.

v1.5.7		20 Feb 2013. Bug fix for previous bug fix.

v1.5.8 		20 Feb 2013. IE animation bug (https://github.com/joeldbirch/superfish/issues/7) fixed by removing the visibility toggle once again (see v1.4.7 change). jQuery now handles this well. Fix 'useClick' IE bug introduced in last release.

v1.5.9 		27 Feb 2013. Bug fix for keyboard behaviour. Focussed menu items that do not have their own associated submenus now close siblings' submenus, as they should.

v1.5.10 	2 Mar 2013. Support IE10 on touch devices. Behaves differently to other touch devices as MS Pointer Events want touch events to be similar to mouse events. Touch, hold and swipe around to navigate, then lift off a link to follow it.

v1.5.11 	4 Mar 2013. Recode IE10 touch support to behave like other touch browsers rather than holding finger down and moving around. Now tap to open submenus which will stay open until menu is unfocussed. A subsequent tap on a link with an open submenu will follow the link. Only other webkit browsers need touchstart – Apple has its own unique hover fix and touchstart caused it weird highlight bugs. Other very minor code changes.

v1.5.12 	13 Mar 2013. Bug fix: Alter initialisation code to avoid requiring menus use the "off-left" (or "off-top") method of hiding submenus. Now allows display:none method and resolves this issue: https://github.com/joeldbirch/superfish/issues/17 . Slight refactor of iOS-sniff. Update to official hoverIntent.js file which added event delegation in r7.

v1.5.13 	15 March 2013. Bug fix: height animations were getting stuck - fixed. Minor code optimisations.

v1.6.0 		10 Mar 20113. Refactor CSS to allow unlimited menu-tiers without needing to add extra CSS. Semi-gracefully degrade IE6 (I recommend you polyfill with selectivizr.js if you need to support it) to allow reduced and simplified CSS. Prefer display:none submenu hiding rather than off-canvas - only closing animations will break if you do use off-canvas; everything else will still work. Refactor various bits of JS. Remove sfHover class prior to closing animation to avoid "trail of highlighted items" when hovering across items without hoverIntent active. Support IE9 on Windows Phone 7. Include Supersubs-like CSS, making that plugin largely redundant (except its max-width capability). Updated Supersubs to work with Superfish 1.6.0 just in case. Fix iOS: can now close submenus by tapping elsewhere. Fix iOS: back button will reload page (only way of resetting iOS hover state!). Added onBeforeHide callback. Fix Firefox bug with useClick initialisation. Use data() to store menu options.

v1.6.1 		Fix issue #31 regarding submenus flashing open and closed under certain conditions in Firefox. Remove bgiframe JS file as part of degraded IE6 support.

v1.6.2 		v1.6.1 was mislabelled as v1.6.0 in the superfish.js file.

v1.6.3 		Merge pull request from @Spuds. Makes whitespace and other coding styles consistent, finally!

v1.6.4 		v1.6.1 caused links with subs to be unfollowable. Quickfix is to (more or less) revert that change. Issue #31 will be reopened until I have a real solution.

v1.6.4.1 	Didn't get the previous fix right.

v1.6.5 		jQuery Plugin Registry doesn't like such granular version numbers.

v1.6.6 		Fix issue #36. https://github.com/joeldbirch/superfish/issues/36

v1.6.7 		Fix second part of issue #36, where there is only one submenu.

v1.6.8 		Remove bfcache busting code after issue #37 discussion: https://github.com/joeldbirch/superfish/issues/37 . Bfcache busting deemed an unsuitable solution for Apple's buggy hover state after back button is used, but the code can be found at https://gist.github.com/joeldbirch/5268562 if needed.

v1.6.9 		Fix issue #31 once and for all. https://github.com/joeldbirch/superfish/issues/31

v1.7.0 		Complete code restructure to allow private and public methods and properties. Use cleaner, best-practice way of accessing public methods, eg: .superfish('show'). Old hideSuperfishUl and showSuperfishUl methods deprecated but will work (for a short while) as aliases. Add public 'destroy' method and 'onDestroy' callback (closes issue #51). Replace autoArrows functionality (generated spans and arrow image) with CSS-only arrows using pseudo-element borders (closes issue #35). Remove useClick feature (closes issue #47). Allow Supersubs CSS to optionally work on top-level of vertical menu. Rename some functions to reflect their toggleability. Prevent re-initialisation of Superfish. Add buttons to example page to demonstrate public methods (destroy, show, hide). Allow scrolling touch action on IE10 (better for small screens, ie. Windows Phone 8).

v1.7.1 		Added missing onDestroy hook. Added tests. Handle multiple method calls silently.

v1.7.2 		Simplify by removing click handler and 'follow' flags (possible due to removal of useClick feature). Use touch handler with '.one()' click handler to cancel link follows instead. Android browsers and IE10 now have 'fastclicks'. Sadly, iOS proved too buggy with touch event (nearby menu items sometimes highlighted on touch); relying on Apple's :hover hack instead (no fastclicks).

v1.7.3 		Alter JS to allow mega-menus. Provide mega-menu CSS and example page. Added bower.json. Resolve some jsHint issues.

v1.7.4		Set up Grunt. Tests no longer use Testem and can be run in a headless browser by running 'grunt test' from within the main project folder. Minor code alterations to suit jshint. Update jquery file to v1.10.1. Added minified version of Superfish.js. Reorganise files and folders. Alter bower.json.

v1.7.5		In IE11 MS vendor prefix versions of the Pointer Events APIs have been deprecated in favor of the non-prefixed. Added support and backwards compatibility. Reportedly fixes touch interaction issues for Windows 8 with IE11 (closes issue #121). Removed deprecated method access (eg. hideSuperfishUl, showSuperfishUl).

v1.7.6		Let default touch functionality be extended or disabled (closes #105) and onBeforeShow and onBeforeHide prevent show/hide (closes #106). Increment version to force Bower to apply jQuery dependancy update (closes #130). Make package.json compatible with npm.

v1.7.7		Exclude Windows Phone from iOS detection regular expression, closes #147. Better way to cause taps elsewhere on the page to close submenus on iOS.