var cObserverEdit = Class.create(cView, {
	initialize: function($super, _name, _container, _reference) {
		$super(_name, _container, _reference);
		this.type = '';
		userer.on('login', this.userStatusChange.bind(this));
		userer.on('logout', this.userStatusChange.bind(this));
	},
	showList: function(type) {
		this.container.innerHTML = '';
		universe.activateViewByName('observeredit');
		this.type = type;
		if (!this.data) {
			var keres = new Ajax.Request('userActions.php', {
				method: 'post',
				parameters: 'action=getobservers&type=' + type,
				onSuccess: this.loadListCallback.bind(this)
			});
		} else {
			this.render();
		}
	},
	loadListCallback: function(transport) {	
		var ret = transport.responseText.evalJSON();
		if (ret && ret.observers) {
			this.data = {
				movie: [],
				ppl: [],
				creative: []
			};
			for (var i=0,lngth=ret.observers.length; i<lngth; i++) {
				var item = ret.observers[i];
				if (item.type == 'movie') {
					this.data.movie.push(item);
				} else if (item.type == 'ppl') {
					this.data.ppl.push(item);
				} else if (item.type == 'creative') {
					this.data.creative.push(item);
				}
			}
		}
		this.render();
		userer.on('observerchange', this.onObserverChange.bind(this));
	},
	render: function() {
		var data = {
			observers: []
		};
		if (this.type == 'movie') {
			data.observers = this.data.movie;
		} else if (this.type == 'ppl') {
			data.observers = this.data.ppl;
		} else if (this.type == 'creative') {
			data.observers = this.data.creative;
		}
		templater.render(this.container, 'template_observer_edit', data, this.afterRender.bind(this));
	},
	afterRender: function() {
		universe.bindEntities($$('#observer_edit_div .observer-item'));
		var fns = $$('.observer-delete');
		for (var i=0, lngth=fns.length; i<lngth; i++) {
			var element = fns[i];
			var id = universe.getElementIndex(element, 'filmxid');
			var type = universe.getElementIndex(element, 'observertype');
			element.observe('click', this.deleteObserver.bind(this, type, id));
		}
	},
	userStatusChange: function() {
		if (this.type) this.showList(this.type);
	},
	deleteObserver: function(type, id) {
		userer.saveObserver('remove', type, id);
	},
	onObserverChange: function(action, type, id) {
		delete this.data;
		if (universe.activeView() == this) {
			this.showList(this.type);
		}
	}
});

