window.addEvent('domready', function()
{
	new googleMap();
});

var googleMap = new Class(
{
    initialize: function()
    {
		this.layer = $('googleMapsLayer');
		this.layerCloseButton = $$('#googleMapsLayer a.close');
		this.layerPrintButton = $$('#googleMapsLayer a.print');
		this.layerContent = $$('#googleMapsLayer #googleMapsLayerContent')[0];
		
		this.forms = $$('.googleMapsForm');
		this.addEvents(this.forms);
    },
    
    
    showLayer: function()
    {
    	var fx = new Fx.Scroll(window).toTop();
    	
    	this.layer.setStyle('display', "block");
    	
    	var fxObj = new Fx.Tween(this.layer, {duration: 800});
    	fxObj.start('opacity',0,1);
    },
    
    
    hideLayer: function()
    {
    	var fxObj = new Fx.Tween(this.layer, {duration: 800});
    	fxObj.start('opacity',1,0);
    },
    
    
    setLayerContent: function(content)
    {
    	this.layerContent.set('html', content);
    },

    
    addEvents: function(forms)
    {
    	this.layerCloseButton.addEvent('click',function(e){
    		e.stop();
    		this.hideLayer();
    	}.bind(this));
    	
    	forms.each(function(form)
    	{
    		form.addEvent('submit',function(e)
    		{
    			e.stop();
    			
    			var error = false;
    			
    			if(form.elements['street'].value == "Strasse")
    			{
    				error = true;
    			}
    			
    			if(form.elements['zipcode'].value == "PLZ")
    			{
    				error = true;
    			}
    			
    			if(form.elements['city'].value == "Stadt")
    			{
    				error = true;
    			}
    			
    			if(error == false)
    			{
					var content = '';
					var toAddress = "to: " + form.elements['toStreet'].value + " " + form.elements['toZipcode'].value + " " + form.elements['toCity'].value;
					var fromAddress = "from: " + form.elements['street'].value + " " + form.elements['zipcode'].value + " " + form.elements['city'].value;
					
					content+= '<div style="width:300px;float:left;padding:0px;height:467px;overflow:auto" id="directions"></div>';
					content+= '<div style="height:477px;width:390px;float:left" id="map"></div><div class="clearfix"></div>';
				
					this.setLayerContent(content);
					this.layerPrintButton.set('href', "printGoogleMap.php?to=" + toAddress + "&from=" + fromAddress);
					
					this.showGoogleMap(fromAddress, toAddress);
    			}
    			else
    			{
    				alert("Bitte überprüfen Sie ihre Angaben");
    			}
    		}.bind(this));
    	}.bind(this));
    },
    
    showGoogleMap: function(fromAddress, toAddress)
    {
    	var map = new GMap2($("map"));
		map.addControl(new GSmallMapControl());
		
		var gdir = new GDirections(map, $("directions"));
		gdir.load(fromAddress + " " + toAddress);
		
		GEvent.addListener(gdir, "load", function(){
			this.showLayer();
		}.bind(this)); 
    }
});

