// JavaScript Document
$(document).ready(function () {
	
	if($.browser.msie && parseInt($.browser.version)==6) {
		$('#browser_warning').css('display', 'block');	
	}
	
	
	$('#fancybox').fancybox();
	
	// Kalender
	
	$('.click_title').click(function() {
		var opening = false;
		$('.highlightable').removeClass('highlight');
		if($('#detail_'+$(this).attr('rel')).attr('open') == 'false') {
			$('#detail_'+$(this).attr('rel')).slideToggle();
			$('.highlightable_'+$(this).attr('rel')).addClass('highlight');
			opening = true;
		}
		
		$('.cal_content[open=true]').each(function() {
			$(this).attr('open', 'false');
			if(!$(this).is(':hidden')) {
				$(this).slideToggle();
			}
		});
		if(opening) {
			$('#detail_'+$(this).attr('rel')).attr('open', 'true');
		}
		return false;
	});
	
	$('.cal_row').mouseenter(function() {
		$('.highlightable_'+$(this).attr('rel')).addClass('highlight');							  
	});
	
	$('.cal_row').mouseleave(function() {
		if($('#detail_'+$(this).attr('rel')).attr('open') == 'false') {
			$('.highlightable_'+$(this).attr('rel')).removeClass('highlight');	
		}
	});
	
	var firstSort = true;
	
	// Klick auf Filter: Alle
	
	$('.all_tags').click(function() {
		$('#tag_title').html('Alle');
		// Allen Elementen der Filternavigation die Klasse current_tag entfernen -> keine Markierung
		$('.sort_tag').each(function(index) {
			$(this).removeClass('current_tag');
		});
		
		// Das Attribut "show" aller Projekte auf true setzen -> werden in der Funktion pushRows wieder angezeigt
		$('.cal_row').each(function(index) {
			$(this).attr('show', 'true');
		});
		
		// "Alle" markieren als momentan aktiver Filter
		$(this).addClass('current_tag');
		
		// Projektblöcke einblenden und auf Positionen schieben
		pushRows(true);
		
		return false;
	});
	
	
	// Klick auf Filter: irgendein Tag
	
	$('.sort_tag').click(function() {
		
		// aktuell geklickten Tag ermitteln
		var tag = $(this).attr('rel');
		$('#tag_title').html(tag.slice(0,1).toUpperCase() + tag.slice(1));
		// Evtl. Markierung vom "Alle"-Tag entfernen
		$('.all_tags').removeClass('current_tag');
		
		// Evtl. Markierung von jedem Tag entfernen
		$('.sort_tag').each(function(index) {
			$(this).removeClass('current_tag');
		});
			
		// Alle Projekte filtern:
		$('.cal_row').each(function(index) {
			// Wenn sie mit geklicktem Tag getaggt sind
			if($(this).attr('tags').indexOf(tag, 0) > -1) {
				// dann anzeigen
				$(this).attr('show', 'true');
			} else {
				// sonst ausblenden
				$(this).attr('show', 'false');
			}
		});
			
		// Den geklickten Tag markieren
		$(this).addClass('current_tag');
		
		// Projektblöcke ein-/ausblenden und auf Positionen schieben
		pushRows(false);
		
		return false;
	});
	
	// Blöcke animiert auf Position bringen bzw. ein-/ausblenden
	
	function pushRows(sortAll) {
		$('.highlightable').removeClass('highlight');
		$('.cal_content[open=true]').each(function() {
			$(this).attr('open', 'false');
			if(!$(this).is(':hidden')) {
				$(this).slideToggle();
			}
		});
		
		// Alle Projektblöcke durchlaufen, die angezeigt werden sollen
		$('.cal_row[show="true"]').each(function(index) {

			if($(this).is(':hidden')) {
				$(this).slideToggle();	
			}
			
		});
		
		
		// Alle Projekt-Blöcke durchlaufen, die nicht angezeigt werden sollen, ausblenden und in Reihe und Glied positionieren
		$('.cal_row[show="false"]').each(function(index) {
			if(!$(this).is(':hidden')) {
				$(this).slideToggle();	
			}
		});
	}
	
	// Veranstaltungen
	
	$('.event').mouseenter(function() {
		$(this).addClass('highlight_borders');
		$(this).find('.highlightable').addClass('highlight');								
	});
	
	$('.event').mouseleave(function() {
		$(this).removeClass('highlight_borders');
		$(this).find('.highlightable').removeClass('highlight');								
	});
	
	// Klick auf Filter: Alle
	
	$('.all_cats').click(function() {
								  
		$('#tag_title').html('Alle');						  
		// Allen Elementen der Filternavigation die Klasse current_tag entfernen -> keine Markierung
		$('.sort_cat').each(function(index) {
			$(this).removeClass('current_tag');
		});
		
		// Das Attribut "show" aller Projekte auf true setzen -> werden in der Funktion pushRows wieder angezeigt
		$('.event').each(function(index) {
			$(this).attr('show', 'true');
		});
		
		// "Alle" markieren als momentan aktiver Filter
		$(this).addClass('current_tag');
		
		// Projektblöcke einblenden und auf Positionen schieben
		pushBlocks();
		
		return false;
	});
	
	
	// Klick auf Filter: irgendein Tag
	
	$('.sort_cat').click(function() {
		
		// aktuell geklickten Tag ermitteln
		var tag = $(this).attr('rel');
		
		$('#tag_title').html(tag);
		// Evtl. Markierung vom "Alle"-Tag entfernen
		$('.all_cats').removeClass('current_tag');
		
		// Evtl. Markierung von jedem Tag entfernen
		$('.sort_cat').each(function(index) {
			$(this).removeClass('current_tag');
		});
			
		// Alle Projekte filtern:
		$('.event').each(function(index) {
			// Wenn sie mit geklicktem Tag getaggt sind
			if($(this).attr('tags').indexOf(tag, 0) > -1) {
				// dann anzeigen
				$(this).attr('show', 'true');
			} else {
				// sonst ausblenden
				$(this).attr('show', 'false');
			}
		});
			
		// Den geklickten Tag markieren
		$(this).addClass('current_tag');
		
		// Projektblöcke ein-/ausblenden und auf Positionen schieben
		pushBlocks();
		
		return false;
	});
	
	
	// Blöcke animiert auf Position bringen bzw. ein-/ausblenden
	
	function pushBlocks() {
		// Spaltenanzahl festlegen
		var columns = 3;
		var column = 0;
		var row = 0;
		// Abstand zwischen Projekt-Blöcken festlegen
		var space = 20;
		var eventArray = new Array();
		eventArray[row] = new Array();
		var eventBorder = 0;
		
		// Alle Projektblöcke durchlaufen, die angezeigt werden sollen
		$('.event[show="true"]').each(function(index) {
			eventArray[row][column] = $(this);
			// Zielposition berechnen und speichern
			if(row == 0) {
				$(this).data('top', space-3);
				$(this).data('left', column * ($(this).width() + space) + 10);
			} else {
				$(this).data('top', $(eventArray[row-1][column]).data('top') + $(eventArray[row-1][column]).height() + space);
				$(this).data('left', column * ($(this).width() + space) + 10);
			}
			// Wenn alle angezeigt werden sollen:
	
				$(this).delay(index*20).animate({"left": $(this).data('left'), "top": $(this).data('top')}, 200, function() {
					$(this).fadeIn(200);
						// Nach erreichen der Position einblenden (passiert nur, wenn der Block davor ausgeblendet war)														
				});	
			// Spalten und Zeilennummer des nächsten Projekts ermitteln
			if(column < columns - 1) {
				column++; 
			} else { 
				column = 0; 
				row++; 
				eventArray[row] = new Array();
			};
			eventBorder = (($(this).data('top') + $(this).height() + space) > eventBorder) ? ($(this).data('top') + $(this).height() + space) : eventBorder;
			
		});
		
		$('#event_container').animate({"height": eventBorder}, 200);
		// Alle Projekt-Blöcke durchlaufen, die nicht angezeigt werden sollen, ausblenden und in Reihe und Glied positionieren
		$('.event[show="false"]').each(function(index) {
			eventArray[row][column] = $(this);
			if(row == 0) {
				$(this).data('top', 5);
				$(this).data('left', column * ($(this).width() + space) + 10);
			} else {
				$(this).data('top', $(eventArray[row-1][column]).data('top') + $(eventArray[row-1][column]).height() + space);
				$(this).data('left', column * ($(this).width() + space) + 10);
			}
			
			$(this).fadeOut(200).css({"left": $(this).data('left'), "top": $(this).data('top')});
			if(column < columns - 1) {
				column++; 
			} else { 
				column = 0; 
				row++;
				eventArray[row] = new Array();
			};
		});
	}
	
	
	// Blöcke ohne Animation auf Position bringen (beim Start der Seite)
	// Funktioniert im Grunde wie pushBlocks nur ohne Animation
	
	function positionBlocks() {
		var columns = 3;
		var column = 0;
		var row = 0;
		var space = 20;
		var eventArray = new Array();
		eventArray[row] = new Array();
		var eventBorder = 0;
		$('.event[show="true"]').each(function(index) {
			eventArray[row][column] = $(this);
			if(row == 0) {
				$(this).css({'top': space-3, 'left': column * ($(this).width() + space) + 10});
			} else {
				$(this).css({'top': $(eventArray[row-1][column]).position().top + $(eventArray[row-1][column]).height() + space, 'left': column * ($(this).width() + space) + 10});	
			}
			$(this).fadeIn(800);
			if(column < columns - 1) {
				column++; 
			} else {
				column = 0; 
				row++;
				eventArray[row] = new Array();
			};
			eventBorder = (($(this).position().top + $(this).height() + space) > eventBorder) ? ($(this).position().top + $(this).height() + space) : eventBorder;
			
		});
		
		// Bei der ersten Positionierung (beim Start) die richtige Höhe des Projekt-Containers ermitteln und zuweisen,
		// da er bei den absoluten Positionen seines Inhalts kein eigenes Volumen hat und damit der Footer
		// direkt unter der Navigation kleben würde
		$('#event_container').css("height", eventBorder);
		
	}
	
	// Beim Start der Seite (document).ready alle Blöcke positionieren
	positionBlocks()
	
	if($(window).height() > $('#wrapper').height()) {
		$('#footer').css('padding-top', $(window).height()-$('#wrapper').height()-50);
	}
	
	// News
	var hash = decodeURI(window.location.hash.toString().substr(1));
	
	if(hash.length > 0 && $('.sort_tag[rel*='+hash+']').size() > 0) {
		$('.sort_tag[rel*='+hash+']').trigger('click');
	}
	
	
	
});


