
	var activity = Class.create({
		initialize:function(container, controller){
			this.container = container;
			this.controller = controller;
			this.drawers = $H({});
			this.disablePersonification = false;
		},
		
		addDrawer : function(container, title, onOpenCallBack, onCloseCallBack){
			if (!onOpenCallBack) onOpenCallBack = function(){};
			if (!onCloseCallBack) onCloseCallBack = function(){};
			
			var drawerIndex = this.drawers.keys().length + 1;
			var mainContainer = new Element('div', {className:'drawer', id:title});
			container.insert(mainContainer);
			var img = new Element('img', {id:title + '_openImg', className:'drawerArrow', src:"images/ar_right.gif"});
			img.drawerID  = title;
			img.onCloseCallBack = onCloseCallBack;
			img.onOpenCallBack = onOpenCallBack;
			mainContainer.insert(img);
			img.observe('click', this.openDrawer.bind(this))

			var spanner = new Element('span', {className:'title', id:title + '_drawerTitle'}).update(title);
			spanner.drawerID  = title;
			spanner.onCloseCallBack = onCloseCallBack;
			spanner.onOpenCallBack = onOpenCallBack;
			mainContainer.insert(spanner);
			spanner.observe('click', this.openDrawer.bind(this))
			
			var div = new Element('div', {className:'drawerContents', id:title+"_drawerContents", style:"display:none;"});
			div.isOpen = false;
			container.insert(div);
			this.drawers.set(title, mainContainer);
			return div;
		},
		
		openDrawer : function(event, element){
			if (event){
				var elem = event.element();
			}else{
				var elem = element;
			}
			var drawerID = elem.drawerID;
			var drawerContent = $(drawerID + "_drawerContents");
			if (!drawerContent.isOpen){
				new Effect.SlideDown(drawerContent, {duration:'0.2'});
				$(drawerID + "_openImg").setAttribute('src', "images/ar_bottom.gif");
				drawerContent.isOpen = true;
				var callBack = elem.onOpenCallBack;
			}else{
				new Effect.SlideUp(drawerContent, {duration:'0.2'});
				$(drawerID + "_openImg").setAttribute('src', "images/ar_right.gif");
				drawerContent.isOpen = false;
				var callBack = elem.onCloseCallBack;
			}
			callBack(drawerContent);
		},
		
		setDrawerStatus : function(drawer, status){
			var elem = $(drawer);
			if (!elem) {
				if (window.console) console.log(drawer + " not found");
				return;	
			}
			switch (status) {
			case 'ok':
				elem.setStyle('background-color:#98ff9f;');
				break;
			case 'fatal':
				elem.setStyle('background-color:#ff9898;');
				break;
			case 'error':
				elem.setStyle('background-color:#ffd298;');
				break;
			default:
				elem.setStyle('background-color:#EEEEEE;');
				break;
			}
		},
		
		updateTitle1 : function(e){
			var value = e.element().getValue();
			var title = $(this.instID + '_mailingTitle1');
			if (title.getValue() == '') title.value = value;
		},
		
		resetDrawerStatus : function(){
			this.drawers.values().each(
				(function(drawer){
					this.setDrawerStatus(drawer.id, '');
				}).bind(this)
			)
		},
		goBack : function(){
			this.controller.draw();
		},
		
		waiter : function (){
			$('persWaiter').show();
		},
		
		unWaiter : function (){
			$('persWaiter').hide();
		}		
		
	})
