JSSlidePanel = new Class({

	toggler: null,
	panel: null,
	options: null,
	slideFx: null,
	isOpen: false,

	// ----------------------------------------------------------------------------------------------------
	initialize: function(toggler, panel, options) {

		this.toggler = $(toggler);
		this.panel = $(panel);
		this.options = options;

		if(options.isOpen != null) {
			this.isOpen = options.isOpen;
			if(options.isOpen) this.panel.setStyle('height', this.options.maxHeight);
		}
		this.slideFx = new Fx.Style(panel, 'height', {duration: options.duration});

		// Toggler
		this.toggler.panel = this;
		this.toggler.addEvent(
			'click', function() {
				this.panel.toggle();
			}
		);
		this.toggler.setStyle('cursor', 'pointer');

	},

	// ----------------------------------------------------------------------------------------------------
	toggle: function() {

		this.slideFx.stop();
		this.slideFx.start(this.panel.getStyle('height').toInt(), this.isOpen ? this.options.minHeight : this.options.maxHeight);
		this.isOpen = !this.isOpen;

	},

	// ----------------------------------------------------------------------------------------------------
	open: function() {

		this.slideFx.stop();
		this.slideFx.start(this.panel.getStyle('height').toInt(), this.options.maxHeight);
		this.isOpen = true;

	},

	// ----------------------------------------------------------------------------------------------------
	close: function() {

		this.slideFx.stop();
		this.slideFx.start(this.panel.getStyle('height').toInt(), this.options.minHeight);
		this.isOpen = false;

	}

});

