var Moevenpick = {};
Moevenpick.Teaser = {
	timer: null,
	effect: null,
	over: function(e) {
		if(this.timer !== null) {
			this.timer.stop();
			this.timer = null;
		}
		
		var li = e.element().parentNode;
		if(li.tagName == 'LI') {
			var display = $$('#Teaser div.display')[0];
			$$('#Teaser ul.info li').each(function(e) {
				e.removeClassName('out');
			});
			li.addClassName('out');
		
			var foldout = li.select('div.foldout')[0];
			if(foldout) {	
				display.setStyle({
					position: 'absolute',
					top: $('Teaser').cumulativeOffset().top+'px',
					left: $('Teaser').cumulativeOffset().left+570+'px'	
				});
				display.select('div.padding')[0].update(foldout.innerHTML);
				this.effect = Effect.Appear(display, {duration:0.25});
			} else {
				this.effect = Effect.Appear(display, {duration:0.25, to:0});
			}
		}
	},
	out: function(e) {
		if(this.timer !== null) {
			this.timer.stop();
			this.timer = null;
		}
		var li = e.element().parentNode;
		if(li.tagName == 'LI') {
			var foldout = li.select('div.foldout')[0];		
			if(foldout) {
				this.timer = new PeriodicalExecuter(function(p) {
					$$('#Teaser ul.info li').each(function(e) {
						e.removeClassName('out');
					});
					this.effect = Effect.Fade($$('#Teaser div.display')[0], {duration:0.25, to:0});
					p.stop();
				}, 0.75);				
			} else {				
				li.removeClassName('out');
			}
			return;			
		} else {
			this.timer = new PeriodicalExecuter(function(p) {
				$$('#Teaser ul.info li').each(function(e) {
					e.removeClassName('out');
				});
				this.effect = Effect.Fade($$('#Teaser div.display')[0], {duration:0.25, to:0});
				p.stop();
			}, 0.75);
		}
	},
	init: function() {
		$$('#Teaser ul.info li a').each(function(e){
			e.observe('mouseover', function(e) { this.over(e); }.bind(this));			
			e.observe('mouseout', function(e) {	this.out(e); }.bind(this));
		}.bind(this));
		
		$$('#Teaser div.display').each(function(e) {
			e.observe('mouseover', function(e) { this.over(e); }.bind(this));			
			e.observe('mouseout', function(e) {	this.out(e); }.bind(this));
		}.bind(this));
	}
};

Moevenpick.Wines = {
	effect: null,
	over: function(e) {	
		var wine = e.element().parentNode.parentNode;
		var info = wine.select('div.info')[0];
		
			if(Prototype.Browser.IE && (typeof window.XMLHttpRequest == "undefined")) {
				if(!$('Wines-Display-IE6-Hack')) {					
					var div = document.createElement("div");
					var id = document.createAttribute("id");
						id.nodeValue = 'Wines-Display-IE6-Hack';
						div.setAttributeNode(id);

					$$('body')[0].appendChild(div);					
				}
				var display = $('Wines-Display-IE6-Hack');
			} else {
				var display = $$('#Wines div.display')[0];
			}
			display.update(info.innerHTML);			
			
			var left = e.element().cumulativeOffset().left-(display.getDimensions().width/2)+(wine.getDimensions().width/2);
			
			if(left < 0) left = 1;
			
			display.setStyle({
				position: 'absolute',
				display: 'none',
				top: $('Wines').cumulativeOffset().top-(display.getDimensions().height)+'px',
				left: left+'px'			
			});			
			this.effect = Effect.Appear(display, {duration:0.35});			
	},
	out: function(e) {
		this.effect.cancel();
		if(Prototype.Browser.IE && (typeof window.XMLHttpRequest == "undefined")) {
			$('Wines-Display-IE6-Hack').setStyle({display:'none'});
		} else {
			$$('#Wines div.display')[0].setStyle({display:'none'});
		}
	},
	next: function(e) {	
		this.timer = new PeriodicalExecuter(function(p) {
			var stage = $$('#Wines div.stage')[0];
			stage.setStyle({width:'auto'});		
			var left = parseInt(stage.getStyle('left'))-4;
			var width = $$('#Wines div.mask')[0].getDimensions().width;
			
			if(left < ((($$('#Wines div.wine').length * 54)-width)*-1))
				left = (($$('#Wines div.wine').length * 54)-width)*-1;			
		
			stage.setStyle({left:left+'px',width:stage.getDimensions().width+60+'px'});	
		}, 0.025);
	},
	prev: function(e) {
		this.timer = new PeriodicalExecuter(function(p) {
			var stage = $$('#Wines div.stage')[0];
			stage.setStyle({width:'auto'});			
			var left = parseInt(stage.getStyle('left'))+4;
			
			if(left > 0)
				left = 0;
	
			stage.setStyle({left:left+'px',width:stage.getDimensions().width+60+'px'});			
		}, 0.025);		
	},
	init: function() {
		$$('#Wines div.wine').each(function(e) {		
			var info = e.select('div.info');
			
			if(info[0]) {		
				e.observe('mouseover', function(e) { this.over(e); }.bind(this));			
				e.observe('mouseout', function(e) {	this.out(e); }.bind(this));
			}
		}.bind(this));
		
		$$('#Wines div.prev a').each(function(e) {		
			e.observe('click', function(e) { e.stop(); });			
			e.observe('mouseover', function(e) { this.prev(e); e.stop(); }.bind(this));			
			e.observe('mouseout', function(e) {	
				if(this.timer !== null) {
					this.timer.stop(); 
					this.timer = null;
				}
				e.stop();
			}.bind(this));
		}.bind(this));
		
		$$('#Wines div.next a').each(function(e) {			
			e.observe('click', function(e) { e.stop(); });			
			e.observe('mouseover', function(e) { this.next(e); e.stop(); }.bind(this));			
			e.observe('mouseout', function(e) {	
				if(this.timer !== null) {
					this.timer.stop(); 
					this.timer = null;
				}
				e.stop();
			}.bind(this));
		}.bind(this));		

		
	}
};
Moevenpick.Menu = {
	over: function(e) {
		var e = $(e.element().parentNode);
		if(e.previousSiblings()[0]) {
			e.previousSiblings()[0].addClassName('none');	
		}
	},
	out: function(e) {
		var e = $(e.element().parentNode);
		if(e.previousSiblings()[0]) {
			e.previousSiblings()[0].removeClassName('none');	
		}
	},
	build: function() {
		var a = [];
		var width = 0;
		$$('#Menu li a').each(function(e) {
			if(!e.hasClassName('active')) {
				a.push(e);
			}
			width += e.getDimensions().width;
		});
		width = $('Menu').getDimensions().width -width;
		while(width > 0) {
			a.each(function(e) {
				if(width < 2) {
					e.setStyle({paddingLeft:(parseInt(e.getStyle('paddingLeft')+1))+'px'});
					width -= 1;
				} else {
					e.setStyle({paddingLeft:(parseInt(e.getStyle('paddingLeft'))+1)+'px',paddingRight:(parseInt(e.getStyle('paddingRight'))+1)+'px'});
					width -= 2;
				}				
				if(width === 0) {
					return;
				}				
			});
		}
		
	},
	init: function() {
		$$('#Menu li a').each(function(e) {			
			e.observe('mouseover', function(e) { this.over(e) }.bind(this));			
			e.observe('mouseout', function(e) {	this.out(e) }.bind(this));
		}.bind(this));
		Moevenpick.Menu.build()
	}
};
Moevenpick.Font = {
	set: function(e) {
		$$('#Meta li.size').each(function(e) {
			e.removeClassName('active');
		}.bind(this));
		
		e.element().parentNode.addClassName('active');
		
		var size = e.element().readAttribute('class').split('-')[1];
		var sizes = {normal:'75%', big: '85%', large: '100%'};
		
		if(sizes[size]) {
			$$('body')[0].setStyle({fontSize: sizes[size]});
		}
		
	},
	init: function() {
		$$('#Meta li.size a').each(function(e) {
			e.observe('click', function(e) { this.set(e); e.element().blur(); e.stop(); }.bind(this));
		}.bind(this));
	}
};

Event.observe(document, 'dom:loaded', function() {
	if($('Teaser')) {
		Moevenpick.Teaser.init();
		/*swfobject.embedSWF("/swf/teaser.swf", "Flash", "635", "270", "9.0.0", "/swf/install.swf", {}, {  wmode:"transparent"}, {});*/
		/*swfobject.embedSWF("/swf/wines.swf", "Map", "284", "248", "9.0.0", "/swf/install.swf", {}, {}, {});*/
	}
	if($('Wines')) {
		Moevenpick.Wines.init();	
	}
	Moevenpick.Menu.init();
	Moevenpick.Font.init();
});
