sfHover = function() {
    var sfEls = document.getElementById("mainlevelmainnav").getElementsByTagName("LI");
    for (var i=0; i<sfEls.length; i++) {
       sfEls[i].onmouseover=function() {
          this.className+=" sfhover";
       }
       sfEls[i].onmouseout=function() {
          this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
       }
    }
 }

 if (window.attachEvent) window.attachEvent("onload", sfHover);

window.addEvent('domready', function() {
	var contacts = $('contacts');
	if (!contacts) return;
	
	var tooltip = null;
	
	var dispose = function() {
		if (tooltip) {
			var t = $('contact-' + tooltip.logicId());
			if (t) t.removeClass('hover');
			tooltip.dispose();
		}
		
		tooltip = null;
	};
	
	var mouseEnter = function(evt) {
		var target = $(evt.target);
		var rounds = 5;
		
		while(rounds-- > 0 && !target.hasClass('contact'))
			target = target.getParent();
		
		if (!target.hasClass('contact')) return;
		
		$clear(disposalTimer);
		if (tooltip) {
			if (target.logicId() == tooltip.logicId())
				return;
			else
				dispose();
		}
		
		tooltip = $(target).clone();
		tooltip.getElements('script').dispose();
		tooltip.set('id', 'tooltip-' + target.logicId());
		tooltip.inject('contacts', 'bottom');
		
		var y = Math.min(
				contacts.getElements('div.contact')[0].getPosition().y,
				target.getPosition().y + target.getSize().y - tooltip.getSize().y
		);
		
		tooltip.setStyles({
			position: 'absolute',
			left: target.getPosition().x + 280,
			top: y,
			width: '400px'
		});
		
		tooltip.addClass('active');
		
		tooltip.addEvent('mouseenter', mouseEnter);
		target.addClass('hover');
	};
	
	
	var disposalTimer = null;
	
	contacts.getElements('div.contact').addEvents({
		'mouseenter': mouseEnter,
		
		'mouseleave': function() {
			disposalTimer = dispose.delay(100);
		}
	});
	
	contacts.removeClass('hover-expand');
	contacts.addClass('js-expand');
});
 
/* Calendar */
window.addEvent('domready', function() {
	var hover = null;
	$$('table.calendar tr.day-as-above').addEvents({
		mouseenter: function(evt) {
			var tr = $(evt.target);

		// search tr (event my be fired by a children of it)
			while(tr && tr.get('tag') != 'tr' && tr.get('tag') != 'body')
				tr = tr.getParent();

			if (!tr || tr.get('tag') == 'body') return;
			
		// find the row with day
			while(tr && !tr.hasClass('day'))
				tr = tr.getPrevious();
			
			if (!tr) return;
			
			tr.addClass('active');
			
			if (hover) 
				hover.removeClass('active');

			hover = tr;
		},
	
		mouseleave: function() {
			if (hover) {
				hover.removeClass('active');
				hover = null;
			}
		}
	});
});

/* Gallery */
window.addEvent('domready', function() {
	if (!$('thumb-container')) return;
	
// Resize page's height and label position
	var oldHeight;
	var geoUpdate = function(height) {
		if (!height) height = oldHeight;
		if (!height) return;
		
		$('thumb-container').tween('height', height - 16);
		$('gallery-container').tween('height', height);
		$('gallery-image-label').tween('top', height + 175 - $('gallery-image-label').getSize().y);
		$('gallery-image-label').setStyle('left', $('gallery-text').getPosition().x + 507);
		
		oldHeight = height;
	};
	
	window.addEvent('resize', geoUpdate);
	
	$('thumb-container').set('tween', {link: 'chain', duration: 'short'});
	$('gallery-container').set('tween', {link: 'chain', duration: 'short'});
	$('gallery-container').setStyle('overflow', 'hidden');
	
	$('gallery-image-label').set('tween', {link: 'chain', duration: 350});
	$('gallery-image-label').setStyles({
		position: 'absolute',
		width: 185,
		paddingTop: 5,
		paddingLeft: 0,
		borderTop: '1px solid #a7a7a8'
	});
	
	$('gallery-image').addEvent('load', function() {
		geoUpdate($('gallery-image').getSize().y);
	});
	
	(function() {
		geoUpdate(Math.max(320, $('gallery-image').getSize().y));
	}).delay(100);
	
// attach to thumbs' links
	$$('#thumb-container a').addEvent('click', function(evt) {
		var img = $(evt.target);
		var galImg = $('gallery-image');
		if ('img' != img.get('tag')) img.getElement('img');
		if ('img' != img.get('tag')) return;
		
		var src = img.src;
		src = src.substr(0, src.indexOf('?mode')) + '?mode=gal_big';
		
		if (galImg.get('src') == src.substr(src.length - galImg.get('src').length)) return;

		var startTime = new Date().getTime();
		var tween = galImg.get('tween', {property: 'opacity', duration: 350, link: 'cancel'});
		tween.start(0);
		
		new Asset.image(src, {
			onLoad: function(e) {
				galImg.set('src', src);
				galImg.set('alt', img.get('alt'));
				$('gallery-image-label').set('html', img.get('alt'));
				geoUpdate(e.getSize().y);
			},
				
			onError: function() {
				alert('Fehler beim Laden des Bildes');
			}
		});
		
		fastGeoUpdate = false;
		
		(function() {
			fastGeoUpdate = true;
			galImg.set('src', src);
			galImg.set('alt', img.get('alt'));
			$('gallery-image-label').set('html', img.get('alt'));
			tween.start(1);
		}).delay(600);
		
		evt.preventDefault();
	});
});

Element.implement({
	logicId: function() {
		var pos = this.get('id').indexOf('-');
		if (!pos) return "";
		
		return this.get('id').substr(pos + 1);
	}
});

