From b5b8cefcb0f9e253a96c8aa97125b6353ebf2dcd Mon Sep 17 00:00:00 2001
From: Scott González <scott.gonzalez@gmail.com>
Date: Thu, 13 Jan 2011 08:51:09 -0500
Subject: Accordion: Reduced valid active options to numbers and falsey. Added
 compatibility layer for previously allowed values.

---
 ui/jquery.ui.accordion.js | 34 +++++++++++++++++++++-------------
 1 file changed, 21 insertions(+), 13 deletions(-)

diff --git a/ui/jquery.ui.accordion.js b/ui/jquery.ui.accordion.js
index e0acd76a8..bcc798bf8 100644
--- a/ui/jquery.ui.accordion.js
+++ b/ui/jquery.ui.accordion.js
@@ -73,7 +73,7 @@ $.widget( "ui.accordion", {
 			.addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" );
 		self.headers.find( ":first-child" ).addClass( "ui-accordion-heading" );
 
-		self.active = self._findActive( self.active || options.active )
+		self.active = self._findActive( options.active )
 			.addClass( "ui-state-default ui-state-active" )
 			.toggleClass( "ui-corner-all" )
 			.toggleClass( "ui-corner-top" );
@@ -287,17 +287,9 @@ $.widget( "ui.accordion", {
 		this._eventHandler( { target: active, currentTarget: active } );
 	},
 
+	// TODO: add tests for negative values in 2.0
 	_findActive: function( selector ) {
-		// handle -1 separately, we should drop support for this
-		// so that we can allow selecting via negative index, like .eq()
-		if ( selector === -1 ) {
-			selector = undefined;
-		}
-		return typeof selector === "number" ?
-			this.headers.eq( selector ) :
-			selector ?
-				this.headers.filter( selector ) : 
-				$( [] );
+		return typeof selector === "number" ? this.headers.eq( selector ) : $( [] );
 	},
 
 	_eventHandler: function( event ) {
@@ -690,7 +682,23 @@ $.extend( $.ui.accordion, {
 	};
 }( jQuery, jQuery.ui.accordion.prototype ) );
 
-// activate method
-jQuery.ui.accordion.prototype.activate = jQuery.ui.accordion.prototype._activate;
+// expanded active option, activate method
+(function( $, prototype ) {
+	prototype.activate = prototype._activate;
+
+	var _findActive = prototype._findActive;
+	prototype._findActive = function( index ) {
+		if ( index === -1 ) {
+			index = false;
+		}
+		if ( index && typeof index !== "number" ) {
+			index = this.headers.index( this.headers.filter( index ) );
+			if ( index === -1 ) {
+				index = false;
+			}
+		}
+		return _findActive.call( this, index );
+	};
+}( jQuery, jQuery.ui.accordion.prototype ) );
 
 })( jQuery );
-- 
cgit v1.2.3