var NetManagerPluginAccordion = NetManagerBase.extend({
													  
	options: {
		
		firstFolderExpanded 	: true,			// Boolean 		:	If true, the accordion starts with the first folder expanded
		folderExpanded 			: 0,			// Boolean 		:	If true, the accordion starts with the first folder expanded
		autoCollapse 			: false,		// Boolean 		:	If true, when expanding a folder all other folders will be collapsed
		folderType 				: 'folder',		// String 		:	Type of the accordion folders
		itemType 				: 'item',
		optionColumn 			: true,			// Boolean 		:	Type of the accordion items
		optionAdd 				: true,			// Boolean 		:	If true, adds option to add items
		optionSettings 			: true,			// Boolean 		:	If true, adds option to edit items
		optionDelete 			: true,			// Boolean 		:	If true, adds option to delete items
		optionCalendar 			: true,			// Boolean 		:	If true, adds option to schedule items
		optionCheckbox 			: false, 		// Boolean 		:	If true, adds option to schedule items
		currentItem             : null,
		addCheckbox             : true 
	},
	
	initialize: function(options) {
		
		this.setOptions(options);				// Set the options
		this.generateAccordion();				// Generate the accordion
	},
	
	generateAccordion: function() {
		
		this.accordion = document.getElementById(this.options.idAccordion);
		$(this.accordion).addClass('accordion');
		
		for(i = 0; i < this.options.folders.length; i++) {
			
			var oFolder = new Element('div').setProperty('id','folder_id_' + this.options.folders[i].id).addClass('folder').inject(this.accordion);
			var oFolderHeader = new Element('div').addClass('folderHeader').inject(oFolder);
			oFolderHeader.addEvent('click', this.toggleAccordion.bind(this, oFolderHeader));
			var oFolderHeaderTitle = new Element('h4').setHTML(this.options.folders[i].foldername).inject(oFolderHeader);
			var oFolderHeaderTitleName = new Element('span').addClass('title').setHTML(this.options.folderType + ': ').injectTop(oFolderHeaderTitle);
			var oFolderContent = new Element('div').addClass('folderContent').inject(oFolder);
			
			if(this.options.optionAdd) {
				
				var oOptionAdd = new Element('p').addClass('option optionAdd').inject(oFolderContent);
				var oOptionAddSpan = new Element('span').inject(oOptionAdd);
				var oOptionAddLink = new Element('a').addClass(this.options.folders[i].href_key).setProperties({'href': '/' + sController + '/admin-form-' + this.options.folders[i].href_key + '/iParentId/' + this.options.folders[i].id, 'title': this.options.itemType + ' toevoegen'}).setHTML(this.options.itemType + ' toevoegen').inject(oOptionAddSpan);
				var oOptionAddIcon = new Element('span').addClass('icon').injectTop(oOptionAddLink);
			}
			
			if($defined(this.options.folders[i].items)) {
				
				var oTable = new Element('table').setProperties({
					'cellpadding': 0,
					'cellspacing': 0
				}).inject(oFolderContent);
				var oTableHead = new Element('thead').inject(oTable);
				var oTableHeadRow = new Element('tr').inject(oTable);
				
				for(j = 0; j < this.options.columns.length; j++) {
					
					var oColumn = new Element('th').setHTML(this.options.columns[j]).inject(oTableHeadRow);
				}
				if (this.options.optionColumn) {
					var oColumnOptions = new Element('th').addClass('options').setHTML('').inject(oTableHeadRow);
				}
				oTableHeadRow.getFirst().addClass('firstCell');
				var oTableBody = new Element('tbody').inject(oTable);
				
				for(k = 0; k < this.options.folders[i].items.length; k++) {
					
					this.currentItem = this.options.folders[i].items[k];
					var oTableBodyRow = new Element('tr').addEvents({
						'mouseenter': function() { this.addClass('hover'); },
						'mouseleave': function() { this.removeClass('hover'); }
					});
					oTableBodyRow.inject(oTableBody);
					
					for(l = 0; l < this.options.folders[i].items[k].properties.length; l++) {
						
						//console.dir(this.options.folders[i].items[k]);
						if(l == 0 && this.options.optionCheckbox == true) {
							
							var oProperty = new Element('td').addClass('tdCheckbox').inject(oTableBodyRow);
							var oOptionOnline = new Element('input').setProperties({type:'checkbox',value:this.options.folders[i].items[k].id});
							oOptionOnline.inject(oProperty);
							
							if(this.options.folders[i].items[k].properties[l] == 1) {
								
								oOptionOnline.setProperty('checked', true);
								
							} else {
								
								oProperty.getParent().addClass('offline');
							}
							
							oOptionOnline.addEvent('click',function(e) {
								var eOptClick = new Event(e), oAjax = new NetManagerPluginAjax();
								oAjax.getAjax('/trip/admin-trip-toggle-online/id/' + $(eOptClick.target).getParent().getParent().getProperty('id'), function(){}, false);
								$(eOptClick.target).getParent().getParent().toggleClass('offline');
							});
							
						} else {
							
							var oProperty = new Element('td').setHTML(this.options.folders[i].items[k].properties[l]).inject(oTableBodyRow);
						}
					}
					if (this.options.optionColumn) {
					var oOptions = new Element('td').addClass('options').inject(oTableBodyRow);
					
					if(this.options.optionSettings) {
						var oOptionSettings = new Element('a').addClass('option optionSettings ' + this.options.folders[i].href_key).setProperties({'href': '/' + sController + '/admin-form-' + this.options.folders[i].href_key + '/iTripId/' + this.options.folders[i].items[k].id+ '/iParentId/' + this.options.folders[i].id, 'title': 'Bewerken'}).setHTML('Bewerken').inject(oOptions);
					}
					
					if(this.options.optionDelete) {
						
						var oOptionDelete = new Element('a').addClass('option optionDelete ' + this.options.folders[i].href_key).setProperties({'href': 'javascript:void(0);', 'title': 'Verwijderen'}).setHTML('Verwijderen').inject(oOptions);
						
						oOptionDelete.addEvent('click', this.deleteRow.bind(this));
					}
					
					if(this.options.optionCalendar) {
						
						var oOptionCalendar = new Element('a').addClass('option optionCalendar').setProperties({'href': '/trip/admin-availability-trip/iTripId/' + this.options.folders[i].items[k].id, 'title': 'Agenderen'}).setHTML('Agenderen').inject(oOptions);
					}
					
					var iOptionAmmount = 0;
					
					oOptions.getElements('a').each(function(el) {
															
						iOptionAmmount = iOptionAmmount + 1;
					});
					
					oOptions.setStyle('width', iOptionAmmount * 24);
					
					}
					oTableBodyRow.getFirst().addClass('firstCell');
					oTableBodyRow.setProperty('id', this.options.folders[i].items[k].id);
				}
			}
			
			if(this.options.optionAdd) {
				
				var oOptionAdd = new Element('p').addClass('option optionAdd').inject(oFolderContent);
				var oOptionAddSpan = new Element('span').inject(oOptionAdd);
				var oOptionAddLink = new Element('a').addClass(this.options.folders[i].href_key).setProperties({'href': '/' + sController + '/admin-form-' + this.options.folders[i].href_key + '/iParentId/' + this.options.folders[i].id, 'title': this.options.itemType + ' toevoegen'}).setHTML(this.options.itemType + ' toevoegen').inject(oOptionAddSpan);
				var oOptionAddIcon = new Element('span').addClass('icon').injectTop(oOptionAddLink);
			}
		}
		
		if(this.options.firstFolderExpanded && this.options.folderExpanded == 0) {
			
			this.accordion.getElement('.folderHeader').fireEvent('click');
		}
		
		if(this.options.folderExpanded > 0) {
			
			$('folder_id_' + this.options.folderExpanded).getElement('.folderHeader').fireEvent('click');
		}
	},
	
	toggleAccordion: function(el) {
		
		if(this.options.autoCollapse) {
			
			var oCurrentFolder = el.getParent();
			
			this.accordion.getElements('.folder').each(function(el) {
																
				if(oCurrentFolder.getElement('.folderHeader') != el) {
					
					oCurrentFolder.removeClass('active');
				}
			});
		}
		
		el.getParent().toggleClass('active');
	},
	
	addRow: function(obj) {
		
		console.log('add row ' + obj.id);
	}, 
	
	updateRow: function (obj) {
		
		console.log('update row ' + obj.id);
		this.accordion.getElement(obj.id);
	},
	
	deleteRow: function(event) {
																 
		var e = new Event(event).stop();
		this.rowId = $(e.target).getParent().getParent().getProperty('id');
		console.log(this.rowId);
		this.deletePrompt = this.getWizard('delete-prompt');
		// Set variable options
		this.deletePrompt.setOptions({
			title  : 'Delete trip',
			width  : 440,
			height : 280,
			zindex : 200
		});
			
		this.deletePrompt.addButton({icon:'cancel', text:'Sluiten', event: this.deletePrompt.closeWizard.bind(this.deletePrompt)});
		this.deletePrompt.addButton({icon:'apply', text:'Verwijderen', event: this.deleteTrip.bind(this)});
		var url  = '/trip/admin-form-confirm-delete-trip/id/' + this.rowId;
		
		this.deletePrompt.getContent(url);
		this.deletePrompt.show();
	},
	
	deleteTrip: function() {
		var oAjax = new NetManagerPluginAjax();
		oAjax.sendPostXhr('/trip/admin-delete-trip/id/' + this.rowId);
		this.deletePrompt.closeWizard();
		
		if ($defined(this.rowId)) {
			var rowSlider = new Fx.Slide(this.rowId, {duration:300}).slideOut();
			$(this.rowId).remove();
		}
	}
});

NetManagerPluginAccordion.implement(new Options);