(function() {
    var window = this, undefined, widget = window.jsx.widget;

    jsx.widget.MoreInformationPanel = function(element) {
		var self = this;
		element = $(element);
		this.element = element;
		this.isVisible = false;
		this.loaded = false;
		this.panel = $(document.createElement('div')).addClass('collapsible-panel').addClass('loading').addClass('hidden');
		this.labelLoading = $(new Image()).attr('src', '_images/load-medium.gif');
		this.sectionContent = $('.section-content').eq(0);
		
		this.panel.append(this.labelLoading);
		this.sectionContent.append(this.panel);
		this.panel.css('top', this.panel.height());
		this.panel.removeClass('hidden');
		this.isActive = true;
		if (element.hasClass('inactive')) {
			this.isActive = false;
		}
		
		element.find('a#button-more-information').click(
			function(event) {
				if (self.isActive) {
					event.preventDefault();
					self.toggleVisibility();
				}
			}
		);
    };
	jsx.widget.MoreInformationPanel.prototype.toggleVisibility = function() {
		if (this.isVisible) {
			this.hide();
		} else {
			this.show();
		}
	};
	jsx.widget.MoreInformationPanel.prototype.show = function() {
		var self = this;
		this.isVisible = true;
		this.panel.stop();
		this.panel.animate({top:0},
			{
				complete:function() {
					if (!self.loaded) {
						self.load();
					}
				}
			}, 1000
		);
	};
	jsx.widget.MoreInformationPanel.prototype.hide = function() {
		this.isVisible = false;
		this.panel.stop();
		this.panel.animate({top:this.panel.height()}, 500);
	};
	jsx.widget.MoreInformationPanel.prototype.load = function() {
		var ajax, self = this;
		ajax = $(document.createElement('div'));
		if (!this.loaded) {
			ajax.load("more-informations.php div.Informations", 
				function() {
					self.panel.html('');
					self.panel.removeClass('loading');
					ajax.css('opacity', 0);
					self.panel.append(ajax);
					ajax.animate({opacity:1}, 500);
					ajax.find('#btnClose a').eq(0).click(
						function() {
							self.hide();
						}
					);
				}
			);
			this.loaded = true;
		}
	};
})();