
window.addEvent('domready', function() {
	
	// TOPMENU
	if($('popupmenu')) {
		new FISpopMenu({ 	
			'id'       : 'popupmenu', 
			'blobuse'  : false,
			'morphuse' : false,
			'duration' : 400
		}); 
	}
	
	if($('kwicks')) {
		var kwicks = $$("#kwicks .kwick");
	
		kwicks.each(function(kwick, i) {
			kwick.originalHeight = kwick.getStyle('height').toInt();
			kwick.originalTop = kwick.getStyle('top').toInt();
			kwick.index = i;
		});
		
		kwicks[0].addEvent('click', function() { location.href = '/services.html'; });
		kwicks[1].addEvent('click', function() { location.href = '/realisation.html'; });
		kwicks[2].addEvent('click', function() { location.href = '/competences.html'; });
		
		var szFull = 200;
		
		// transition: Fx.Transitions.Back.easeOut
		var fx = new Fx.Elements(kwicks, {wait: false, duration: 300 });
		kwicks.each(function(kwick, i) {
			kwick.addEvent("mouseenter", function(event) {
				var top = 0;
				if(kwick.index == kwicks.length - 1) {
					top = kwick.originalTop - (szFull - kwick.originalHeight);
				}
				else if(kwick.index > 0) {
					top = kwick.originalTop - (szFull - kwick.originalHeight) / 2;
				}
				
				var o = {};
				o[i] = {
					height: szFull,
					top: top
				}
				
				kwicks.each(function(other, j) {
					if(i != j) {
						var offset = parseInt((szFull - kwick.originalHeight) / (kwicks.length - 1));
						var offc = other.index - kwick.index;
						var top = 0;
						if(other.index > kwick.index) {
							if(kwick.index == 0 && other.index == 1) {
								top = other.originalTop + 2 * offset;	
							}
							else {
								top = other.originalTop + offset;
							}
						}
						else if(other.index > 0) {
							top = other.originalTop - offset;
						}
						
						var height = other.originalHeight - offset;
						
						o[j] = {
							height: height,
							top: top
						};
					}
				});
				fx.start(o);
			});
		});
		
		$('kwicks').addEvent("mouseleave", function(e) {
			var o = {};
			kwicks.each(function(kwick, i) {
				o[i] = {
					height: kwick.originalHeight,
					top: kwick.originalTop
				}
			});
			fx.start(o);
		})
	}
	
	
	var menu = $('scrollingsubmenu');
	if(menu) {
		var parent = menu.getParent();
		var pos = parent.getPosition();
		var menutop = menu.getPosition().y;
		var menuleft = menu.getPosition().x; 
		var parentsize = parent.getSize();
		
		var scrolloffset = Browser.Engine.webkit || Browser.Engine.gecko ? 0 : -13;
		var menuoffset = Browser.Engine.webkit || Browser.Engine.gecko ? 13 : 0;
		
		menu.moving = false;
		
		var mover = new Fx.Move(menu, {
			relativeTo: $('center'),
			duration: 500,
			position: 'upperRight',
			edge: 'upperRight',
			offset: {x: 0, y: 100}
		});
		
		menu.setTo = function() {
			if(menu.moving) return;
			var scroll = $(document.body).getScroll().y;
			if(scroll <= menutop) {
				menu.setAbsolute();
			}
			else {
				menu.setFixed();
			}
		}
		menu.setAbsolute = function(pos, onComplete) {
			var top = Math.max(pos - menutop, 0);
			menu.setStyles({
				left: null,
				width: null,
				top: top,
				position: 'absolute'
			});
			menu.posY = 0;
			if(onComplete) onComplete();
		};
		menu.setFixed = function(pos) {
			if(menu.moving) return;
			if(pos <= menutop) {
				return menu.setAbsolute(menutop - pos);
			}
			if(menu.getStyle('position') == 'absolute') {
				menu.posY = Math.max(menuoffset, menu.getPosition().y - $(document.body).getScroll().y);
			}
			menu.setStyles({
				position: 'fixed',
				left: menuleft + (Browser.Engine.gecko ? 1 : 0), 
				width: parentsize.x,
				top: menu.posY
			});
		};
		
		$$('.scrollto').each(function(a, i) {
			
			var scrolltarget = $(a.href.replace(/.*#/, ''));
			if(!scrolltarget) return;
			scrolltarget = scrolltarget.getParent('div');
			
			if(i == 0) {
				var top = 0;
			}
			else {
				var top = scrolltarget.getPosition().y;
			}
			var scrollfx = new Fx.Scroll($(document.body), {
				duration: 1000,
				wait:false,
				transition: Fx.Transitions.Cubic.easeInOut
			});
			a.addEvent('click', function(e) {
				new Event(e).stop();
				menu.moving = true;
				
				var abstop = $(document.body).getScroll().y;
				abstop = Math.max(abstop, 0);
				
				menu.setAbsolute(abstop - scrolloffset, function() {
					scrollfx.start(0, top + scrolloffset).chain(
						function() {
							mover.start({
							    position: 'upperRight',
							    offset: {
							    	x:	0, 
							    	y:	scrolltarget.getPosition().y 
							    }
							}).chain(function() {
								menu.moving = false;
								if(top != 0) menu.setFixed(scrolltarget.getPosition().y);
							}); 
						}
					);
				});
			});
		});
		
		
		window.addEvent('scroll', menu.setTo);
		window.addEvent('resize', menu.setTo);
		window.fireEvent('scroll');	
	}
});
