var AW = window.AW || {};
AW.com = AW.com || {};
AW.com.Accordion = Accordion = function( __id ) {

	//VARIABLE ASSIGNMENT////////////////////////////
	this._id = __id;
	this.hasCollapseAllBehavior = false;
	this.$panes;
	this.$paneButtons;
	this.$collapsiblePanels;
	this.$simplePanels;
	this.$globalCollapseControl;
    this.initialize( );
};

AW.com.Accordion.prototype = {
    initialize: function( ) {
		var instance = this;
		var tempArr  = [ ];
		
		instance.$panes = $( ".accordionPattern dt" ).map( function( ){ return $( this ); } );
		instance.$panes.each( function( ){ this.css( "cursor", "pointer" ); this.next( "dd" ).map( function( ){ tempArr.push( $( this ) ); } ); } );
		instance.$collapsiblePanels = $( tempArr );		
		this.initPanels( );
		this.createEvents( );
    },
	initPanels: function( ){
		//Collapse all panels
		this.$collapsiblePanels.each( function( ){ this.css( "display", "none" ); } );
	},
	createEvents: function( ) {
		//Assign reference to this instance to a variable
		var instance = this;
		instance.$panes.each( function( i ){
			this.bind( 'click.pane', { instance: instance, index: i }, instance._mouseClickHandler );
		} );
	},
	toggleCollapse: function( index ){
		//Assign reference to this instance to a variable
		var instance = this;
		var panel = instance.$collapsiblePanels.get( index );
		
		if( panel.css( "display" ) == "none" )
			panel.slideDown( "slow" );
		else
			panel.slideUp( "slow" );
	},
	collapseAll: function( ){
		this.$collapsiblePanels.each( function( i ){ this.slideUp( "slow" ); } );
	},
	_mouseClickHandler: function( e ){
		var instance = e.data.instance;
		e.preventDefault( );
		e.stopPropagation( );

		if( instance.hasCollapseAllBehavior )
			instance.collapseAll( );
			
		instance.toggleCollapse( e.data.index );
	}
};

$( document ).ready(function( ) {
                //Create new Expand Collapse Pattern from page/////////////
    $( ".accordionPattern" ).each( function( ) {
		var newAccordion = new AW.com.Accordion( $( this ).attr( 'id' ) );
		if( $( this ).hasClass( "collapseAll" ) )
			newAccordion.hasCollapseAllBehavior = true;
	} );
} );

