var chatSettingsEventsObserver = Class.create({
	initialize: function(observer) {
		this.chatWindowSettingsButton = $('open_chat_settings');
		this.chatWindowSettingsWindow = $('chat_settings_window');
		
		this.observer = observer;
		this.activeChat = null;
		
		this.init();
	},

	init: function() {
		// кнопка настроек чата
		this.chatWindowSettingsButton.observe('click', this.chatSettings.bind(this));
		
		this.observer.on('chatList.activateChat', function(chatName) {
			this.activeChat = chatName;

			// прячем окно с настройками
			this.chatWindowSettingsWindow.hide();
		}.bind(this));
		
		this.observer.on('chatWindow.closeActiveChat', function() {
			this.activeChat = null;
			// прячем окно с настройками
			this.chatWindowSettingsWindow.hide();			
		}.bind(this));
	},

	chatSettings: function() {
		if (this.chatWindowSettingsWindow.visible()) {
			this.chatWindowSettingsWindow.hide();
		}
		else {
			// Показываем индикатор загрузки
			$('chat_settings_loading_indicator').show();
			new Ajax.Request('/jabber/chatSettings/', {
				parameters: {
					'chat_name': this.activeChat
				},
				onSuccess: function(r) {
					this.chatWindowSettingsWindow.update(r.responseText);
					$('change_password_link').observe('click', function(e){
						$('change_password_container').toggle();
					});
					
					$('change_password_button').observe('click', function(e){
						if ($('new_password_input').value != '') {
							this.observer.fire('settings.changePassword', $('new_password_input').value);
						}
					}.bind(this));
					// Прячем индикатор загрузки
					$('chat_settings_loading_indicator').hide();
					// кинем ивент, кому интересно тот воспользуется
					this.observer.fire('settings.onSuccess', this.chatWindowSettingsWindow);
					
					// клики по кнопочкам настройками
					this.chatWindowSettingsWindow.select('.setting-js').each(function(item) {
						item.observe('click', function(e) {
							e.preventDefault();
							var eventElement = Event.element(e);
							var settingName = eventElement.getAttribute('id').split('_').last();
							var newSettingValue = eventElement.hasClassName('off') ? 1 : 0;
							
							switch (settingName) {
								case 'disableSounds':
									// выстрел события по отключению звуков
									this.observer.fire('sounds.toggleSound', newSettingValue);
									break;
									
								case 'unnoticeable':
									// выстрел события по отключению нотификаций
									this.observer.fire('notificationBar.makeChatUnnoticeable', [this.activeChat, newSettingValue]);
									break;
							}
							
							// изменим цвет рубильника
							with (eventElement) {
								newSettingValue ? removeClassName('off') : addClassName('off');
							}
							new Ajax.Request('/jabber/chatModifySetting/', {
								method: 'post',
								parameters: {
									'chat_name': this.chatWindowSettingsWindow.down('.chat-name-js').getValue(),
									'setting_name': settingName,
									'value': newSettingValue
								}
							});
						}.bind(this));
					}.bind(this));

					this.chatWindowSettingsWindow.show();
				}.bind(this)
			});
		}
	}
});
