// JavaScript Document
var JK_Handler = new Class({
   initialize: function() {
        window.addEvent('domready', this.load.bind(this));
    },

	load : function(){
		this.initMenu();	
		this.initSlideShow();
		this.initForm();
		this.initMap();
		
		if(Browser.Engine.trident && Browser.Engine.version == 4){
			$$('img[src$=png]').each(function(item){ 
				item.setProperty('src', item.getProperty('src').replace('.png','.gif'));
			});
		}
	},
	
	initMap:function(){
		var map = $('gmap');
		
		if(map != null && GBrowserIsCompatible()) {
			var gmap = new GMap2(map),
				point = new GLatLng(49.360,11.321647),
				marker = new GMarker(point);
			GEvent.addListener(marker,'click', function(){document.location = 'http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=Sophienweg+12+a+90559+Burgthann&ie=UTF8&hq=&hnear=Sophienweg+12,+90559+Burgthann,+N%C3%BCrnberger+Land,+Bayern,+Germany&ll=49.360772,11.321647&spn=0.007379,0.01929&z=16';});
			gmap.setCenter(point, 16);
			gmap.addOverlay(marker);
			gmap.addControl(new GSmallMapControl());
	      }
	},
	
	initForm : function(){
		var form = $$('form');
		
		if(form != null){
			form.addEvent('submit', function(){
				var email = $("email");
				var filter= /^.+@.+\..{2,3}$/;
				if (!filter.test(email.get('value'))) {
					 $('emailLabel').addClass('error');
					 return false;
				}
				else{
					$('emailLabel').removeClass('error');
					return true;
				}
			});
		}		
	},
	
	initMenu : function(){
		var items = $$('#nav li[class!=active] a'),
			active = $$('#nav .active a'),
			slider = $('menuSlider');
			
		$$('#sidebar span').hide();

		items.addEvent('mouseover', this.slideIn.bind(this));
		items.addEvent('mouseout', this.slideOut.bind(this));

		items.each(function(item){
			var offset = this.getBgPosition(item)
			item.store('originalPosition', offset);	
			item.setStyle('background-position', offset);
		}.bind(this));

		if(active.length == 0){
			slider.hide();
		} else{
			slider.setStyle('top', active[0].getPosition($('sidebar')).y);
		}
		
	},
	
	sliderEffect : null,
	slideIn : function(e){
		e = new Event(e);
		var	target = $(e.target),
			menuEffect = new Fx.Tween(target, { transition : Fx.Transitions.Elastic.easeOut , duration : 'long'}),
			slider = $('menuSlider'),
			sliderEffect = slider.retrieve('effect'),
			offset = target.retrieve('originalPosition');

		e.stop();

		menuEffect.start('background-position', (parseInt(offset[0]) + 20) + ' ' + parseInt(offset[1]));
		target.store('effect', menuEffect);
		
		slider.show();
		if(sliderEffect != undefined){
			sliderEffect.cancel();
		}
		var sliderEffect = new Fx.Tween(slider);
		sliderEffect.start('top', target.getPosition($('sidebar')).y);
		slider.store('effect', sliderEffect);

	},
	
	slideOut : function(e){
		var	target = e.target,
			menuEffect = target.retrieve('effect'),
			slider = $('menuSlider'),
			sliderEffect = slider.retrieve('effect'),
			active = $$('#nav .active a'),
			offset = target.retrieve('originalPosition');
		
		e.stop();
		
		if(menuEffect != undefined){
			 menuEffect.cancel();
		}
		
		menuEffect = new Fx.Tween(target, { transition : Fx.Transitions.Elastic.easeOut });
		menuEffect.start('background-position', offset[0] + ' ' + offset[1] );
		target.store('effect', menuEffect);


		if(sliderEffect != undefined){
			sliderEffect.cancel();
		}
		sliderEffect = new Fx.Tween(slider);
		if(active.length == 0){
			slider.hide();
		} else{
			sliderEffect.start('top', active[0].getPosition($('sidebar')).y);
		}
		slider.store('effect', sliderEffect);
	},
	
	initSlideShow: function(){
		
		var slideshow = $('slideshow');
		
		if(slideshow != null){
			var dummy = new Swiff('/images/monoslideshow.swf', {
			container: slideshow,
			width: 968,
			height: 155,
			params: {
				wmode: "transparent",
				loop: true,
				autoPlay: true
			},
			vars: {
				showLogo: false,
				showVersionInfo: false,
				dataFile: '/images/header/slideshow.xml'
			}
			});
		}
	},
	
	/* HACK for IE :-( */
	getBgPosition : function(item){
		if(Browser.Engine.trident){
			return [item.getStyle('background-position-x'), item.getStyle('background-position-y')];
		}else{
			return item.getStyle('background-position').split(' ')
		}
	}						   
});

var Naturheilpraxis = new JK_Handler();

