
var Projektliste = {

	lines: [],
	fx: [],
	
	types: [],
	years: [],
	personen: [],
	links: [],
	sterne: [],
	zimmer: [],

	case_studies: [],
	active_case: false,
	
	
	headers: [], // Alle Überschriften
	data: {},
	request: {},
	openItems: [],

	/**
	 * Set up the vars and bind functions to certain events
	 */
	init: function(data) {
		this.data = data;
		this.headers = $$('#project-list .header .top');

		content = $$('#project-list ol li.wrapper div.detail');
		toggle  = $$('#project-list ol li.wrapper ul li.detail span');
		
		if ($defined(toggle) && $defined(content) && (content.length > 0) && (toggle.length > 0)) {

		this.accordion = new MultipleOpenAccordion(toggle, content, {

				alwaysHide: true,
				opacity: true,
				openAll: false,
				allowMultipleOpen: false,
				start: 'first-open',
				firstElementsOpen: [],
				duration: 300, 
				transition: Fx.Transitions.sineIn,

				onActive: function(toggler, section){
					toggler.addClass('act').getParent().getParent().getChildren()[0].addClass('selected');
					section.addClass('act');

				},

				onBackground: function(toggler, element){
					toggler.removeClass('act').getParent().getParent().getChildren()[0].removeClass('selected');
					element.removeClass('act');
				}
			});
		}


		$$('#project-list ol ul').each(function(item, index) {
/*
			item.id = 'c-' + index;

			item.addEvents({

				mouseenter: function() {
					this.linehover(index);
				}.bind(this),

				mouseleave: function() {
					this.lineremove(index);
				}.bind(this)

			});
*/


/*
				// Add request event to Tag
			this.openItems[index] = new Fx.Style(item.getParent(), 'height', {duration: 300, transition: Fx.Transitions.sineIn});
			item.getElement('a').addEvent('click', function(e) {
				e = new Event(e).stop();
				this.openItems[index].stop().start(371);
				this.hideOthers(index);
			}.bind(this));
*/



			this.lines[ index ] = {
				el: item,
				active: false,
				li: item.getParent()
			};
			this.lines[ index ].li.setProperty('id', this.lines[ index ].li.className.split(' ').getLast());
			
			this.fx[ index ] = new Fx.Style(item.getParent(), 'height', {duration:200, transition: Fx.Transitions.sineIn});
			
		}, this);



		var typenEls = $$('#typen-wrapper ul li');
		if (typenEls.length > 0) {
			$('typ-current').addEvent('click', function(e) {
				$('typ-current').getParent().addClass('active');
			}).getParent().addEvent('mouseleave', function(e) {
				$('typ-current').getParent().removeClass('active');
			});
			
			typenEls.each(function(item) {
				item.addEvent('click', function() {
					item.toggleClass('selected');
					this.setType( item.id.split('-').getLast().toInt() );
				}.bind(this));
			}, this);
		}
		

		
		personenEls = $$('#personen-wrapper ul li');
		if (personenEls.length > 0) {
			$('personen-current').addEvent('click', function(e) {
				$('personen-current').getParent().addClass('active');
			}).getParent().addEvent('mouseleave', function(e) {
				$('personen-current').getParent().removeClass('active');
			});
			
			
			personenEls.each(function(item) {
				item.addEvent('click', function() {
					item.toggleClass('selected');
					this.setPersonen( item.id.split('-').getLast().toInt(), item );
				}.bind(this));
			}, this);
		}
		
		
		
			// Show by star count
		sterneEls = $$('#sterne-wrapper ul li');
		if (sterneEls.length > 0) {
			$('sterne-current').addEvent('click', function(e) {
				$('sterne-current').getParent().addClass('active');
			}).getParent().addEvent('mouseleave', function(e) {
				$('sterne-current').getParent().removeClass('active');
			});
			
			
			sterneEls.each(function(item) {
				item.addEvent('click', function() {
					item.toggleClass('selected');
					this.setSterne( item.id.split('-').getLast().toInt() );
				}.bind(this));
			}, this);
		}
		
		
			// Show by 
		zimmmerEls = $$('#zimmer-wrapper ul li');
		if (zimmmerEls.length > 0) {
			$('zimmer-current').addEvent('click', function(e) {
				$('zimmer-current').getParent().addClass('active');
			}).getParent().addEvent('mouseleave', function(e) {
				$('zimmer-current').getParent().removeClass('active');
			});
			
			
			zimmmerEls.each(function(item) {
				item.addEvent('click', function() {
					item.toggleClass('selected');
					this.setZimmer( item.id.split('-').getLast().toInt(), item );
				}.bind(this));
			}, this);
		}
	
	},
	/*
	requestData: function(e, i) {

		this.hideOthers(i);	
		this.openItems[i].stop().start(371);
		
		return this.openItems[i];
		
		if (this.request.running) {
			this.requestData.delay(100, this, e);
			return;
		}
		
		
		
		this.request = new XHR({method: 'get', onSuccess: this.addResponse.bind(this, {item: $(e.target).getParent().getParent(), req: this.request})}).send(
			this.data.request,
			'eID=tx_projects_detail&L=' + this.data.lid + '&id=' + id 
		);
	},
	
	addResponse: function(parent) {
		
		r = Json.evaluate(this.request.response.text, true);
		divs = parent.item.getParent().getElements('div.detail_wrapper');

		if (divs[0]) {
			el = divs[0].empty();
		} else {
			el = new Element('div', {
				'class' : 'detail_wrapper',
				'style' : {'border-top' : '1px dotted #ccc' }
			}).injectAfter(parent.item);
		}



		el.setHTML(r.data);
		id = parent.item.getParent().id.split('-').getLast().toInt();


		
		if (!this.openItems[id])
			this.openItems[id] = new Fx.Style(parent.item.getParent(), 'height', {duration: 300, transition: Fx.Transitions.sineIn});
		
		this.hideOthers(id);
		this.openItems[id].stop().start(371);
		
	},
	
	hideOthers: function(i) {
		this.openItems.each(function(item, index){
			if (index != i) item.stop().start(40);
		}, this);
	},
		*/
	reset: function(active) {

		if (active != 'type') this.types = [];
		if (active != 'personen') this.personen = [];
		if (active != 'sterne') this.sterne = [];
		if (active != 'zimmer') this.zimmer = [];

		this.resetClickables(active);
		this.headers.each(function(item) { item.removeClass('active'); });

		switch(active) {
			case 'year':
				$('jahr-current').addClass('active');
				break;
				
			case 'personen':
				$('personen-current').addClass('active');
				break;
				
			case 'zimmer':
				$('zimmer-current').addClass('active');
				break;
				
			case 'sterne':
				$('sterne-current').addClass('active');
				break;
		};
	},
	
	resetClickables: function(active) {
		if (active != 'personen') this.clearAll('personen-wrapper');
		if (active != 'type') this.clearAll('typen-wrapper');
		if (active != 'sterne') this.clearAll('sterne-wrapper');
		this.clearAll('zimmer-wrapper');
	},
	
	clearAll: function(parentItem) {
		if ($(parentItem)) 
			if ($(parentItem).getElement('ul'))
				$(parentItem).getElement('ul').getChildren().each(function(item){ item.removeClass('selected'); });
	},
	
	setYear: function(show) {

		this.reset('year');
		if (this.years.contains(show)) {
			this.years.remove(show);
		} else {
			this.years.push(show);
		}

		this.setLines();
	},

	setType: function(show) {

		this.reset('type');

		if (this.types.contains(show)) {
			this.types.remove(show);
		} else {
			this.types.push(show);
		}

		this.setLines();
	},
	
	
	setSterne: function(show) {

		this.reset('sterne');

		if (this.sterne.contains(show)) {
			this.sterne.remove(show);
		} else {
			this.sterne.push(show);
		}

		this.setLines_hotels();
		
		
	},
	
	setZimmer: function(show, item) {


		if (item.hasClass('selected')) {
			this.reset('zimmer');
			item.addClass('selected');
			this.zimmer = show;
		} else {
			this.reset('zimmer');
			this.zimmer = -1;
		}

		this.setLines_hotels();
		
	},
	
	setPersonen: function(show, item) {
	
		if (item.hasClass('selected')) {
			this.reset('personen');
			item.addClass('selected');
			this.personen = show;
		} else {
			this.reset('personen');
			this.personen = -1;
		}

		this.setLines();
		
		//this.setLines();
	},
	
	setLines: function() {
		
		this.lines.each(function(item, e) {
								 
			i = item.el.getParent().getProperty('id').split('-');
			type = (i[1] + '').split('_');
			pers = i[2].toInt();		
			
			h = item.el.getParent().getSize().size.y;
			show = false;
			
			var showPersonen = true;
			
			if (this.personen == 10000)
				showPersonen = (pers >= 1000)
				
			else 
				showPersonen = (pers <= this.personen && pers >= this.personen - 500);
			
			
			if (this.personen == -1) showPersonen = true;
			
			
			if (
				(this.types.length < 1 || this.typesInSelection(type))
				&&
				(this.personen.length < 1 || showPersonen)
			) {
				show = true;
			}
			
			if (!show && h > 0) this.fx[e].stop().start(0);
			else if (show && h < 40) this.fx[e].stop().start(40).chain(function() { this.fx[e].element.setStyle('height', 'auto') }.bind(this));
			
		}.bind(this));
	
	},
	
	setLines_hotels: function() {
		
		this.lines.each(function(item, e) {
								 
			i = item.el.getParent().getProperty('id').split('-');
			type = (i[1] + '').split('_');
			sterne = i[2].toInt();
			zimmer = i[3].toInt();
			
			h = item.el.getParent().getSize().size.y;
			show = false;
			
			
			var showZimmer = true;
			
			if (this.zimmer == 1000 || this.zimmer == 100 || this.zimmer == 50) {
				if (this.zimmer == 1000)
					showZimmer = (zimmer >= 100)
					
				else 
					showZimmer = (zimmer <= this.zimmer && zimmer >= this.zimmer - 50);
			}
			else {
				if (this.zimmer == 10000)
					showZimmer = (zimmer >= 1000)
					
				else 
					showZimmer = (zimmer <= this.zimmer && zimmer >= this.zimmer - 500);
			}
						
			if(this.zimmer == -1) showZimmer = true;
			
			if (
				(this.sterne.length < 1 || this.sterne.contains(sterne))
				&&
				(this.zimmer.length < 1 || showZimmer)
			) {
				show = true;
			}
			
			if (!show && h > 0) this.fx[e].stop().start(0);
			else if (show && h < 40) this.fx[e].stop().start(40).chain(function() { this.fx[e].element.setStyle('height', 'auto') }.bind(this));
			
		}.bind(this));
	},
	
	setLines_loc: function() {
		
		this.lines.each(function(item, e) {
								 
			i = item.el.getParent().getProperty('id').split('-');
			type = (i[1] + '').split('_');
			sterne = i[2].toInt();
			zimmer = i[3].toInt();
			
			h = item.el.getParent().getSize().size.y;
			show = false;
			
			if (
				(this.sterne.length < 1 || this.sterne.contains(sterne))
				&&
				(this.zimmer.length < 1 || this.zimmer.contains(zimmer))
			) {
				show = true;
			}
			
			if (!show && h > 0) this.fx[e].stop().start(0);
			else if (show && h < 40) this.fx[e].stop().start(40).chain(function() { this.fx[e].element.setStyle('height', 'auto') }.bind(this));
			
		}.bind(this));
	},
	
	typesInSelection: function(types) {
		
		co = false;
		for (var i=0; i<types.length; i++) {
			if (this.types.contains(types[i].toInt())) {
				co = true;
				break;
			}
		}
		
		return co;
		
	}/*,
	
	
	linehover: function(i) {

		var proj = [];

		this.lines[i].el.getParent().removeClass('active').removeClass('hover').addClass('hover');
		this.lines[i].active = true;
		
		(function() {
			this.lineactive(i);
		}.bind(this)).delay(100);
		
	},
	
	lineactive: function(i) {
		if (this.lines[i].active) this.lines[i].el.getParent().removeClass('active').removeClass('hover').addClass('active');
	},
	
	lineremove: function(i) {
		this.lines[i].el.getParent().removeClass('active').removeClass('hover').addClass('hover');
		
		(function() {
			this.lines[i].el.getParent().removeClass('active').removeClass('hover');
		}.bind(this)).delay(100);
	}
*/
};

//window.addEvent('domready', Projektliste.init.bind(Projektliste));
