integration/lib/jquery-ui/ui/jquery.ui.accordion.js
author Anthony Ly <anthonyly.com@gmail.com>
Tue, 14 May 2013 18:19:04 +0200
changeset 2 78f71aa0a477
parent 1 integration/back-office/lib/jquery-ui/ui/jquery.ui.accordion.js@b95aebb070b5
permissions -rw-r--r--
first commit back office front metadatacomposer
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     1
/*!
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     2
 * jQuery UI Accordion 1.10.3
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     3
 * http://jqueryui.com
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     4
 *
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     5
 * Copyright 2013 jQuery Foundation and other contributors
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     6
 * Released under the MIT license.
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     7
 * http://jquery.org/license
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     8
 *
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     9
 * http://api.jqueryui.com/accordion/
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    10
 *
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    11
 * Depends:
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    12
 *	jquery.ui.core.js
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    13
 *	jquery.ui.widget.js
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    14
 */
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    15
(function( $, undefined ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    16
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    17
var uid = 0,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    18
	hideProps = {},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    19
	showProps = {};
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    20
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    21
hideProps.height = hideProps.paddingTop = hideProps.paddingBottom =
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    22
	hideProps.borderTopWidth = hideProps.borderBottomWidth = "hide";
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    23
showProps.height = showProps.paddingTop = showProps.paddingBottom =
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    24
	showProps.borderTopWidth = showProps.borderBottomWidth = "show";
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    25
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    26
$.widget( "ui.accordion", {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    27
	version: "1.10.3",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    28
	options: {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    29
		active: 0,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    30
		animate: {},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    31
		collapsible: false,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    32
		event: "click",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    33
		header: "> li > :first-child,> :not(li):even",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    34
		heightStyle: "auto",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    35
		icons: {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    36
			activeHeader: "ui-icon-triangle-1-s",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    37
			header: "ui-icon-triangle-1-e"
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    38
		},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    39
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    40
		// callbacks
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    41
		activate: null,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    42
		beforeActivate: null
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    43
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    44
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    45
	_create: function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    46
		var options = this.options;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    47
		this.prevShow = this.prevHide = $();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    48
		this.element.addClass( "ui-accordion ui-widget ui-helper-reset" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    49
			// ARIA
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    50
			.attr( "role", "tablist" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    51
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    52
		// don't allow collapsible: false and active: false / null
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    53
		if ( !options.collapsible && (options.active === false || options.active == null) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    54
			options.active = 0;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    55
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    56
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    57
		this._processPanels();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    58
		// handle negative values
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    59
		if ( options.active < 0 ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    60
			options.active += this.headers.length;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    61
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    62
		this._refresh();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    63
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    64
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    65
	_getCreateEventData: function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    66
		return {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    67
			header: this.active,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    68
			panel: !this.active.length ? $() : this.active.next(),
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    69
			content: !this.active.length ? $() : this.active.next()
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    70
		};
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    71
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    72
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    73
	_createIcons: function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    74
		var icons = this.options.icons;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    75
		if ( icons ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    76
			$( "<span>" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    77
				.addClass( "ui-accordion-header-icon ui-icon " + icons.header )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    78
				.prependTo( this.headers );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    79
			this.active.children( ".ui-accordion-header-icon" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    80
				.removeClass( icons.header )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    81
				.addClass( icons.activeHeader );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    82
			this.headers.addClass( "ui-accordion-icons" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    83
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    84
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    85
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    86
	_destroyIcons: function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    87
		this.headers
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    88
			.removeClass( "ui-accordion-icons" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    89
			.children( ".ui-accordion-header-icon" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    90
				.remove();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    91
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    92
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    93
	_destroy: function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    94
		var contents;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    95
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    96
		// clean up main element
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    97
		this.element
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    98
			.removeClass( "ui-accordion ui-widget ui-helper-reset" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    99
			.removeAttr( "role" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   100
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   101
		// clean up headers
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   102
		this.headers
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   103
			.removeClass( "ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   104
			.removeAttr( "role" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   105
			.removeAttr( "aria-selected" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   106
			.removeAttr( "aria-controls" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   107
			.removeAttr( "tabIndex" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   108
			.each(function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   109
				if ( /^ui-accordion/.test( this.id ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   110
					this.removeAttribute( "id" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   111
				}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   112
			});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   113
		this._destroyIcons();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   114
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   115
		// clean up content panels
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   116
		contents = this.headers.next()
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   117
			.css( "display", "" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   118
			.removeAttr( "role" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   119
			.removeAttr( "aria-expanded" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   120
			.removeAttr( "aria-hidden" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   121
			.removeAttr( "aria-labelledby" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   122
			.removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   123
			.each(function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   124
				if ( /^ui-accordion/.test( this.id ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   125
					this.removeAttribute( "id" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   126
				}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   127
			});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   128
		if ( this.options.heightStyle !== "content" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   129
			contents.css( "height", "" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   130
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   131
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   132
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   133
	_setOption: function( key, value ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   134
		if ( key === "active" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   135
			// _activate() will handle invalid values and update this.options
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   136
			this._activate( value );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   137
			return;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   138
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   139
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   140
		if ( key === "event" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   141
			if ( this.options.event ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   142
				this._off( this.headers, this.options.event );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   143
			}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   144
			this._setupEvents( value );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   145
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   146
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   147
		this._super( key, value );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   148
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   149
		// setting collapsible: false while collapsed; open first panel
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   150
		if ( key === "collapsible" && !value && this.options.active === false ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   151
			this._activate( 0 );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   152
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   153
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   154
		if ( key === "icons" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   155
			this._destroyIcons();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   156
			if ( value ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   157
				this._createIcons();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   158
			}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   159
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   160
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   161
		// #5332 - opacity doesn't cascade to positioned elements in IE
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   162
		// so we need to add the disabled class to the headers and panels
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   163
		if ( key === "disabled" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   164
			this.headers.add( this.headers.next() )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   165
				.toggleClass( "ui-state-disabled", !!value );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   166
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   167
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   168
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   169
	_keydown: function( event ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   170
		/*jshint maxcomplexity:15*/
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   171
		if ( event.altKey || event.ctrlKey ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   172
			return;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   173
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   174
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   175
		var keyCode = $.ui.keyCode,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   176
			length = this.headers.length,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   177
			currentIndex = this.headers.index( event.target ),
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   178
			toFocus = false;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   179
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   180
		switch ( event.keyCode ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   181
			case keyCode.RIGHT:
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   182
			case keyCode.DOWN:
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   183
				toFocus = this.headers[ ( currentIndex + 1 ) % length ];
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   184
				break;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   185
			case keyCode.LEFT:
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   186
			case keyCode.UP:
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   187
				toFocus = this.headers[ ( currentIndex - 1 + length ) % length ];
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   188
				break;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   189
			case keyCode.SPACE:
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   190
			case keyCode.ENTER:
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   191
				this._eventHandler( event );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   192
				break;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   193
			case keyCode.HOME:
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   194
				toFocus = this.headers[ 0 ];
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   195
				break;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   196
			case keyCode.END:
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   197
				toFocus = this.headers[ length - 1 ];
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   198
				break;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   199
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   200
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   201
		if ( toFocus ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   202
			$( event.target ).attr( "tabIndex", -1 );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   203
			$( toFocus ).attr( "tabIndex", 0 );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   204
			toFocus.focus();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   205
			event.preventDefault();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   206
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   207
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   208
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   209
	_panelKeyDown : function( event ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   210
		if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   211
			$( event.currentTarget ).prev().focus();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   212
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   213
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   214
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   215
	refresh: function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   216
		var options = this.options;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   217
		this._processPanels();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   218
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   219
		// was collapsed or no panel
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   220
		if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   221
			options.active = false;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   222
			this.active = $();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   223
		// active false only when collapsible is true
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   224
		} else if ( options.active === false ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   225
			this._activate( 0 );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   226
		// was active, but active panel is gone
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   227
		} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   228
			// all remaining panel are disabled
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   229
			if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   230
				options.active = false;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   231
				this.active = $();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   232
			// activate previous panel
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   233
			} else {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   234
				this._activate( Math.max( 0, options.active - 1 ) );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   235
			}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   236
		// was active, active panel still exists
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   237
		} else {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   238
			// make sure active index is correct
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   239
			options.active = this.headers.index( this.active );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   240
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   241
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   242
		this._destroyIcons();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   243
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   244
		this._refresh();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   245
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   246
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   247
	_processPanels: function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   248
		this.headers = this.element.find( this.options.header )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   249
			.addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   250
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   251
		this.headers.next()
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   252
			.addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   253
			.filter(":not(.ui-accordion-content-active)")
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   254
			.hide();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   255
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   256
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   257
	_refresh: function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   258
		var maxHeight,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   259
			options = this.options,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   260
			heightStyle = options.heightStyle,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   261
			parent = this.element.parent(),
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   262
			accordionId = this.accordionId = "ui-accordion-" +
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   263
				(this.element.attr( "id" ) || ++uid);
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   264
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   265
		this.active = this._findActive( options.active )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   266
			.addClass( "ui-accordion-header-active ui-state-active ui-corner-top" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   267
			.removeClass( "ui-corner-all" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   268
		this.active.next()
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   269
			.addClass( "ui-accordion-content-active" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   270
			.show();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   271
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   272
		this.headers
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   273
			.attr( "role", "tab" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   274
			.each(function( i ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   275
				var header = $( this ),
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   276
					headerId = header.attr( "id" ),
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   277
					panel = header.next(),
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   278
					panelId = panel.attr( "id" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   279
				if ( !headerId ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   280
					headerId = accordionId + "-header-" + i;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   281
					header.attr( "id", headerId );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   282
				}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   283
				if ( !panelId ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   284
					panelId = accordionId + "-panel-" + i;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   285
					panel.attr( "id", panelId );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   286
				}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   287
				header.attr( "aria-controls", panelId );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   288
				panel.attr( "aria-labelledby", headerId );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   289
			})
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   290
			.next()
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   291
				.attr( "role", "tabpanel" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   292
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   293
		this.headers
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   294
			.not( this.active )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   295
			.attr({
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   296
				"aria-selected": "false",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   297
				tabIndex: -1
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   298
			})
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   299
			.next()
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   300
				.attr({
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   301
					"aria-expanded": "false",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   302
					"aria-hidden": "true"
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   303
				})
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   304
				.hide();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   305
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   306
		// make sure at least one header is in the tab order
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   307
		if ( !this.active.length ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   308
			this.headers.eq( 0 ).attr( "tabIndex", 0 );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   309
		} else {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   310
			this.active.attr({
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   311
				"aria-selected": "true",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   312
				tabIndex: 0
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   313
			})
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   314
			.next()
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   315
				.attr({
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   316
					"aria-expanded": "true",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   317
					"aria-hidden": "false"
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   318
				});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   319
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   320
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   321
		this._createIcons();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   322
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   323
		this._setupEvents( options.event );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   324
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   325
		if ( heightStyle === "fill" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   326
			maxHeight = parent.height();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   327
			this.element.siblings( ":visible" ).each(function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   328
				var elem = $( this ),
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   329
					position = elem.css( "position" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   330
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   331
				if ( position === "absolute" || position === "fixed" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   332
					return;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   333
				}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   334
				maxHeight -= elem.outerHeight( true );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   335
			});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   336
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   337
			this.headers.each(function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   338
				maxHeight -= $( this ).outerHeight( true );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   339
			});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   340
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   341
			this.headers.next()
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   342
				.each(function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   343
					$( this ).height( Math.max( 0, maxHeight -
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   344
						$( this ).innerHeight() + $( this ).height() ) );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   345
				})
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   346
				.css( "overflow", "auto" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   347
		} else if ( heightStyle === "auto" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   348
			maxHeight = 0;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   349
			this.headers.next()
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   350
				.each(function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   351
					maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   352
				})
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   353
				.height( maxHeight );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   354
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   355
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   356
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   357
	_activate: function( index ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   358
		var active = this._findActive( index )[ 0 ];
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   359
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   360
		// trying to activate the already active panel
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   361
		if ( active === this.active[ 0 ] ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   362
			return;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   363
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   364
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   365
		// trying to collapse, simulate a click on the currently active header
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   366
		active = active || this.active[ 0 ];
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   367
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   368
		this._eventHandler({
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   369
			target: active,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   370
			currentTarget: active,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   371
			preventDefault: $.noop
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   372
		});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   373
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   374
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   375
	_findActive: function( selector ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   376
		return typeof selector === "number" ? this.headers.eq( selector ) : $();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   377
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   378
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   379
	_setupEvents: function( event ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   380
		var events = {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   381
			keydown: "_keydown"
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   382
		};
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   383
		if ( event ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   384
			$.each( event.split(" "), function( index, eventName ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   385
				events[ eventName ] = "_eventHandler";
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   386
			});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   387
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   388
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   389
		this._off( this.headers.add( this.headers.next() ) );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   390
		this._on( this.headers, events );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   391
		this._on( this.headers.next(), { keydown: "_panelKeyDown" });
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   392
		this._hoverable( this.headers );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   393
		this._focusable( this.headers );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   394
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   395
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   396
	_eventHandler: function( event ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   397
		var options = this.options,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   398
			active = this.active,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   399
			clicked = $( event.currentTarget ),
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   400
			clickedIsActive = clicked[ 0 ] === active[ 0 ],
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   401
			collapsing = clickedIsActive && options.collapsible,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   402
			toShow = collapsing ? $() : clicked.next(),
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   403
			toHide = active.next(),
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   404
			eventData = {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   405
				oldHeader: active,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   406
				oldPanel: toHide,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   407
				newHeader: collapsing ? $() : clicked,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   408
				newPanel: toShow
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   409
			};
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   410
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   411
		event.preventDefault();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   412
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   413
		if (
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   414
				// click on active header, but not collapsible
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   415
				( clickedIsActive && !options.collapsible ) ||
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   416
				// allow canceling activation
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   417
				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   418
			return;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   419
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   420
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   421
		options.active = collapsing ? false : this.headers.index( clicked );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   422
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   423
		// when the call to ._toggle() comes after the class changes
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   424
		// it causes a very odd bug in IE 8 (see #6720)
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   425
		this.active = clickedIsActive ? $() : clicked;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   426
		this._toggle( eventData );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   427
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   428
		// switch classes
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   429
		// corner classes on the previously active header stay after the animation
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   430
		active.removeClass( "ui-accordion-header-active ui-state-active" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   431
		if ( options.icons ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   432
			active.children( ".ui-accordion-header-icon" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   433
				.removeClass( options.icons.activeHeader )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   434
				.addClass( options.icons.header );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   435
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   436
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   437
		if ( !clickedIsActive ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   438
			clicked
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   439
				.removeClass( "ui-corner-all" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   440
				.addClass( "ui-accordion-header-active ui-state-active ui-corner-top" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   441
			if ( options.icons ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   442
				clicked.children( ".ui-accordion-header-icon" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   443
					.removeClass( options.icons.header )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   444
					.addClass( options.icons.activeHeader );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   445
			}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   446
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   447
			clicked
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   448
				.next()
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   449
				.addClass( "ui-accordion-content-active" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   450
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   451
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   452
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   453
	_toggle: function( data ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   454
		var toShow = data.newPanel,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   455
			toHide = this.prevShow.length ? this.prevShow : data.oldPanel;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   456
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   457
		// handle activating a panel during the animation for another activation
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   458
		this.prevShow.add( this.prevHide ).stop( true, true );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   459
		this.prevShow = toShow;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   460
		this.prevHide = toHide;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   461
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   462
		if ( this.options.animate ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   463
			this._animate( toShow, toHide, data );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   464
		} else {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   465
			toHide.hide();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   466
			toShow.show();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   467
			this._toggleComplete( data );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   468
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   469
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   470
		toHide.attr({
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   471
			"aria-expanded": "false",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   472
			"aria-hidden": "true"
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   473
		});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   474
		toHide.prev().attr( "aria-selected", "false" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   475
		// if we're switching panels, remove the old header from the tab order
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   476
		// if we're opening from collapsed state, remove the previous header from the tab order
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   477
		// if we're collapsing, then keep the collapsing header in the tab order
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   478
		if ( toShow.length && toHide.length ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   479
			toHide.prev().attr( "tabIndex", -1 );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   480
		} else if ( toShow.length ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   481
			this.headers.filter(function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   482
				return $( this ).attr( "tabIndex" ) === 0;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   483
			})
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   484
			.attr( "tabIndex", -1 );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   485
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   486
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   487
		toShow
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   488
			.attr({
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   489
				"aria-expanded": "true",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   490
				"aria-hidden": "false"
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   491
			})
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   492
			.prev()
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   493
				.attr({
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   494
					"aria-selected": "true",
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   495
					tabIndex: 0
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   496
				});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   497
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   498
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   499
	_animate: function( toShow, toHide, data ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   500
		var total, easing, duration,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   501
			that = this,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   502
			adjust = 0,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   503
			down = toShow.length &&
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   504
				( !toHide.length || ( toShow.index() < toHide.index() ) ),
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   505
			animate = this.options.animate || {},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   506
			options = down && animate.down || animate,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   507
			complete = function() {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   508
				that._toggleComplete( data );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   509
			};
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   510
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   511
		if ( typeof options === "number" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   512
			duration = options;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   513
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   514
		if ( typeof options === "string" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   515
			easing = options;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   516
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   517
		// fall back from options to animation in case of partial down settings
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   518
		easing = easing || options.easing || animate.easing;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   519
		duration = duration || options.duration || animate.duration;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   520
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   521
		if ( !toHide.length ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   522
			return toShow.animate( showProps, duration, easing, complete );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   523
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   524
		if ( !toShow.length ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   525
			return toHide.animate( hideProps, duration, easing, complete );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   526
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   527
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   528
		total = toShow.show().outerHeight();
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   529
		toHide.animate( hideProps, {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   530
			duration: duration,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   531
			easing: easing,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   532
			step: function( now, fx ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   533
				fx.now = Math.round( now );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   534
			}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   535
		});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   536
		toShow
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   537
			.hide()
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   538
			.animate( showProps, {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   539
				duration: duration,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   540
				easing: easing,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   541
				complete: complete,
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   542
				step: function( now, fx ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   543
					fx.now = Math.round( now );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   544
					if ( fx.prop !== "height" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   545
						adjust += fx.now;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   546
					} else if ( that.options.heightStyle !== "content" ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   547
						fx.now = Math.round( total - toHide.outerHeight() - adjust );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   548
						adjust = 0;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   549
					}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   550
				}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   551
			});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   552
	},
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   553
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   554
	_toggleComplete: function( data ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   555
		var toHide = data.oldPanel;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   556
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   557
		toHide
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   558
			.removeClass( "ui-accordion-content-active" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   559
			.prev()
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   560
				.removeClass( "ui-corner-top" )
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   561
				.addClass( "ui-corner-all" );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   562
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   563
		// Work around for rendering bug in IE (#5421)
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   564
		if ( toHide.length ) {
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   565
			toHide.parent()[0].className = toHide.parent()[0].className;
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   566
		}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   567
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   568
		this._trigger( "activate", null, data );
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   569
	}
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   570
});
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   571
b95aebb070b5 first commit back office front metadatacomposer
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   572
})( jQuery );