
	var availableActivities = [ // extend this with new activityobjects
	                  {name:'mailing', obj:'mailing'}
	                 ]

	var activityController = Class.create({
		initialize:function(container){
			this.container = container;
		},
		
		draw: function(){
			var RPCObj = new rpc;
			RPCObj.debug = true;
			RPCObj.attachWaiter(waiter, this);
			RPCObj.attachUnWaiter(unWaiter, this);
			RPCObj.createCall('persclubMailing', this._draw.bind(this), this);
			RPCObj.call('getListCount');
		},
		
		_draw : function(req){
			var basketCount = req.responseJSON.count;
			var rights = req.responseJSON.rights;
			unWaiter();
			this.container.show();
			this.container.update('');
			var html = "<b>Maak een keuze:</b><br/><br/>" +
					"<div class=\"activitySelect\">";
			if (rights.nieuwsbrieven == 1){
				html += "	<div class=\"float\">";
				html += "		<h2>Nieuwsbrieven</h2>" ;
				html += '		<span style="cursor:pointer;text-decoration:underline;" id="newNieuwsbrief">Nieuwe nieuwsbrief opstellen</span><br/>';
				html += '		<span style="cursor:pointer;text-decoration:underline;" id="existingNieuwsbrief">Bestaande nieuwsbrief bekijken</span><br/>';
				html += "	</div>";
			}
			
			if (rights.persberichten == 1){
				html += "	<div class=\"float\">";
				html += "		<h2>Persberichten</h2>" ;
				html += '		<span style="cursor:pointer;text-decoration:underline;" id="newPersbericht">Nieuw persbericht opstellen</span><br/>';
				html += '		<span style="cursor:pointer;text-decoration:underline;" id="existingPersbericht">Bestaand persbericht bekijken</span><br/>';
				html += "	</div>";
			}

			if (rights.persreizen == 1){
				html += "	<div class=\"float\">";
				html += "		<h2>Uitnodiging persreis</h2>" ; 
				html += '		<span style="cursor:pointer;text-decoration:underline;" id="newPersreis">Nieuwe uitnodiging opstellen</span><br/>' ;
				html += '		<span style="cursor:pointer;text-decoration:underline;" id="existingPersreis">Bestaande uitnodiging bekijken</span><br/>';
				html += '		<span style="cursor:pointer;text-decoration:underline;" id="sentPersreis">Verstuurde uitnodigingen bekijken</span><br/>';
				html += "	</div>";
			}

			html += "</div>";
			this.container.insert(html);
			
			// persreis
			if ($('newPersreis')){
				$('newPersreis').observe('click', (function(){
					if (basketCount > 0) {
						this.startActivityObj('persreis');
					}else{
						alert("U heeft nog geen lijst aangemaakt, om een persreis aan te maken dient u eerst een lijst samen te stellen.")
					}
				}).bind(this));
				$('existingPersreis').observe('click', (function(){this.selectPersreis()}).bind(this));
				$('sentPersreis').observe('click', (function(){
					this.selectPersreis(this.writeStatusList.bind(this));
				}).bind(this));
			}
			
			/** LET OP : BETEKENIS NIEUWSBRIEF (mailing) EN PERSBERICHT ZIJN OMGEDRAAID!**/
			// persbericht:
			if ($('newPersbericht')){
				$('newPersbericht').observe('click', (function(){
					if (basketCount > 0) {
						this.startActivityObj('nieuwsbrief');
					}else{
						alert("U heeft nog geen lijst aangemaakt, om een mailing aan te maken dient u eerst een lijst samen te stellen.")
					}
				}).bind(this));
				$('existingPersbericht').observe('click', this.selectNieuwsbrief.bind(this));
			}
			// nieuwsbrief:
			if ($('newNieuwsbrief')){
				$('newNieuwsbrief').observe('click', (function(){
					if (basketCount > 0) {
						this.startActivityObj('mailing');
					}else{
						alert("U heeft nog geen lijst aangemaakt, om een mailing aan te maken dient u eerst een lijst samen te stellen.")
					}
				}).bind(this));
				$('existingNieuwsbrief').observe('click', this.selectMailing.bind(this));
			}
			window.tinyMCE.editors = {};
			window.tinyMCE.activeEditor = null;
		},
		
		openActivity : function(event){
			// refactor this later to activity-select
			var elem = event.element();
			var mailingID = elem.mailingID;
			this.activityObj = new activity.mailing(this.container, this);
			this.activityObj.openActivity(mailingID);
//			this.activityObj.draw();
		},
		
		selectMailing : function(){
			// refactor this later to activity-select
			var RPCObj = new rpc;
			RPCObj.debug = true;
			RPCObj.attachWaiter(waiter, this);
			RPCObj.attachUnWaiter(unWaiter, this);
			RPCObj.createCall('persclubMailing', this._selectMailing.bind(this), this);
			RPCObj.call('getMyMailings');
		},
		
		selectNieuwsbrief : function(){
			// refactor this later to activity-select
			var RPCObj = new rpc;
			RPCObj.debug = true;
			RPCObj.attachWaiter(waiter, this);
			RPCObj.attachUnWaiter(unWaiter, this);
			RPCObj.createCall('persclubNieuwsbrief', this._selectNieuwsbrief.bind(this), this);
			RPCObj.call('getMyMailings');
		},
		
		_selectNieuwsbrief : function(req){
			// refactor this later to activity-select
			if (req.responseJSON.length < 1){
				var div = new Element('div').update("<b>Persbericht bewerken</b><br/><p>Geen persberichten gevonden</p>");
				this.container.update(div);
			}else{
				var div = new Element('div').update("<b>Persbericht bewerken</b><br/><p>Selecteer het persbericht die u wilt bewerken:</p><ul>");
				this.container.update(div);
				req.responseJSON.each(
					(function(mailing){
						var span = new Element('a', {href:"#"}).update(mailing.name);
						span.mailingID = mailing.id;
						div.insert(new Element('li').update(span));
						span.observe('click', this.openNieuwsbrief.bindAsEventListener(this));
					}).bind(this)
				)
				div.insert("</ul>")
			}
		},
		
		openNieuwsbrief : function(event){
			this.clearEditors();
			// refactor this later to activity-select
			var elem = event.element();
			var mailingID = elem.mailingID;
			this.activityObj = new activity.nieuwsbrief(this.container, this);
			this.activityObj.openActivity(mailingID);
//			this.activityObj.draw();
		},
		
		_selectMailing : function(req){
			// refactor this later to activity-select
			if (req.responseJSON.length < 1){
				var div = new Element('div').update("<b>Nieuwsbrief bewerken</b><br/><p>Geen nieuwsbrieven gevonden</p>");
				this.container.update(div);
			}else{
				var div = new Element('div').update("<b>Nieuwsbrief bewerken</b><br/><p>Selecteer de nieuwsbrief die u wilt bewerken:</p><ul>");
				this.container.update(div);
				req.responseJSON.each(
					(function(mailing){
						var span = new Element('a', {href:"#"}).update(mailing.name);
						span.mailingID = mailing.id;
						div.insert(new Element('li').update(span));
						span.observe('click', this.openActivity.bindAsEventListener(this));
					}).bind(this)
				)
				div.insert("</ul>")
			}
		},
		
		selectPersreis : function(callBack){
			if (!callBack) callBack = this._selectPersreis.bind(this);
			// refactor this later to activity-select
			var RPCObj = new rpc;
			RPCObj.debug = true;
			RPCObj.attachWaiter(waiter, this);
			RPCObj.attachUnWaiter(unWaiter, this);
			RPCObj.createCall('persclubPersreis', callBack, this);
			RPCObj.call('getMyMailings');
		},
		
		_selectPersreis : function(req){
			// refactor this later to activity-select
			if (req.responseJSON.length < 1){
				var div = new Element('div').update("<b>Persreizen bekijken</b><br/><p>Geen persreizen gevonden.");
				this.container.update(div);
			}else{
				var div = new Element('div').update("<b>Persreis bekijken</b><br/><p>Selecteer de persreis die u wilt bewerken:</p><ul>");
				this.container.update(div);
				req.responseJSON.each(
					(function(mailing){
						var span = new Element('a', {href:"#"}).update(mailing.name);
						span.mailingID = mailing.id;
						div.insert(new Element('li').update(span));
						span.observe('click', this.openPersreis.bindAsEventListener(this));
					}).bind(this)
				)
				div.insert("</ul>")
			}
		},		
		
		writeStatusList : function(req){
			// refactor this later to activity-select
			if (req.responseJSON.length < 1){
				var div = new Element('div').update("<b>Status uitnodigingen</b><br/><p>Geen persreizen gevonden.</p>");
				this.container.update(div);
			}else{
				var div = new Element('div').update("<b>Status uitnodigingen</b><br/><p>Selecteer de persreis waarvan u de uitnodigingen wilt bekijken:</p><ul>");
				this.container.update(div);
				req.responseJSON.each(
					(function(mailing){
						var span = new Element('a', {href:"#"}).update(mailing.name);
						span.mailingID = mailing.id;
						div.insert(new Element('li').update(span));
						span.observe('click', this.openPersreisStatus.bindAsEventListener(this));
					}).bind(this)
				)
				div.insert("</ul>")
			}
		},		
		
		openPersreis : function(event){
			this.clearEditors();
			var elem = event.element();
			var mailingID = elem.mailingID;
			this.activityObj = new activity.persreis(this.container, this);
			this.activityObj.openActivity(mailingID);			
		},

		openPersreisStatus : function(event){
			this.clearEditors();
			var elem = event.element();
			var mailingID = elem.mailingID;
			try{
				this.activityObj = new activity.persreisStatus(this.container, this);
				this.activityObj.openStatus(mailingID);
			}catch(e){
				if (window.console) {
				}else{
					
				}
			}
		},

		clearEditors : function(){
			var editors = tinyMCE.editors;
			for (editor in editors){
				if (tinyMCE.getInstanceById(editor)){
					tinyMCE.execCommand('mceFocus', false, editor);
					tinyMCE.execCommand('mceRemoveControl', false, editor);
				}
			}
		},
		
		startActivityObj : function(activityStr){
			this.clearEditors(); 
//			
//			try{
				this.activityObj = new activity[activityStr](this.container, this);
//				this.activityObj.draw();
//			}catch(e){
//				if (window.location.toString().indexOf('laptop') > -1) console.log(e);
//			}
		}
		
	})

