/**
 * Schiffspositionen über GoogleMaps via Flash
 *
 *
 * Variablen:
 * -------------------------------------------
 * GM_Size:Object {width : 80%, height : 60%}
 * flashvars:Object {key : GOOGLE_MAPS_KEY, w : BROWSER_WIDTH, h : BROWSER_HEIGHT}
 * params:Object {allowfullscreen : "false", menu : "false", allowscriptaccess : "always"}
 * attributes:Object {id : "googlemap", name : "googlemap"}
 *
 *
 * Funktionen:
 * -------------------------------------------
 * GoogleMaps_Create:Function
 * @return boolean
 *
 * GoogleMaps_DisplayLayer:Function
 * @return void
 *
 * GoogleMaps_PrepareSending:Function
 * @param lat, lan, zoom, key, shipname
 * @return void
 *
 * GoogleMaps_SendMap:Function
 * @param lat, lan, zoom, key, shipname
 * @return void
 * 
 */

/**
 * Liefert den Google Maps API Schlüssel entsprechend der Domain
 *
 * @see http://docs.aida.de/display/IT/AO+Google+Maps+Key
 * @return string
 */
function Aida_GoogleMaps_getKey()
{
    var host = window.location.host;
    
    if (host == 'www.aida.de') {
        return 'ABQIAAAAqNV8FaaUnXoVjoNgks48-xRY3ttughbhQPT2aLpLHLYno_8kLRSG6DRYdHwkl4mK95_owBDKqfcfZQ';
    } else if (host == 'cmsprod.aida.de') {
        return 'ABQIAAAA3WTF0TTb821Jn4_k0ftHbhRplgnFT7kEipmZ5QvPL8GcjxJBhBQQAkZpIX7gvy8pTVVPRPiEy0qeFQ';
    } else if (host == 'cmstest.aida.de') {
        return 'ABQIAAAAy-bl1WNWNaxpCpavGnE7khSUS8je0Y_2qfmUTe_IWyis9zVl_RRI2k-HG8cX_VFJT8CPJQQB-y4bvQ';
    } else if (host == 'www.aida-weblounge.de') {
        return 'ABQIAAAA3WTF0TTb821Jn4_k0ftHbhR-vqOOzcqR87Oidy9NqTNFMGCdTBRMno6heu4ueg7enx1EF5c799qadA';
    } else if (host == 'sme.aida.nr') {
        return 'ABQIAAAATnFGhCc6ZogDSfZhZtI84RRzYvWKM-gwY_Q28x_Hf5ZrLSh-gBTNwZNaDhpI1KZ4wRYZcwHDjGvKrQ';
    } 

    return 'ABQIAAAAqNV8FaaUnXoVjoNgks48-xRY3ttughbhQPT2aLpLHLYno_8kLRSG6DRYdHwkl4mK95_owBDKqfcfZQ';
}

/**
 * Erstellt alle benötigten Elemente für den Overlay und dem Flash
 *
 * @return boolean
 */
function GoogleMaps_Create() {
	
    var objBody = $('body').first();

    /*
    objBody.appendChild(Builder.node(
      	'div',{id:'GoogleMap_FlashOverlay', style: 'display: none;'})
    );
    */
    
    var GoogleMap_FlashOverlay = document.createElement('div');
    GoogleMap_FlashOverlay.setAttribute('id', 'GoogleMap_FlashOverlay');
    GoogleMap_FlashOverlay.setAttribute('style', 'display: none;');
    GoogleMap_FlashOverlay.style.cssText = 'display: none;';
    objBody[0].appendChild(GoogleMap_FlashOverlay);

    /*
    objBody.appendChild(
    	Builder.node(
    		'div',{id:'GoogleMap_Flash', style: 'display: block;'}, 
    		[
              Builder.node('div',{id:'googlemap'}),
              Builder.node('a',{id:'GoogleMap_FlashClose', href: '#' },
                  Builder.node('img', { src: "fileadmin/www.aida.de/v3/images/lightbox/close.gif" })
              )
            ])
    );
    */
    var GoogleMap_Flash = document.createElement('div');
    GoogleMap_Flash.setAttribute('id', 'GoogleMap_Flash');
    GoogleMap_Flash.setAttribute('style', 'display: block;');
    objBody[0].appendChild(GoogleMap_Flash);    

	    var googlemap = document.createElement('div');
	    googlemap.setAttribute('id', 'googlemap');
	    GoogleMap_Flash.appendChild(googlemap);
	    
	    
	    var GoogleMap_FlashClose = document.createElement('a');
	    GoogleMap_FlashClose.setAttribute('id', 'GoogleMap_FlashClose');
	    GoogleMap_FlashClose.setAttribute('href', '#');
	    GoogleMap_Flash.appendChild(GoogleMap_FlashClose);
	
		    var GoogleMap_FlashClose_Image = document.createElement('img');
		    GoogleMap_FlashClose_Image.setAttribute(
		    	'src', 'fileadmin/www.aida.de/v3/images/lightbox/close.gif'
		    );
		    GoogleMap_FlashClose.appendChild(GoogleMap_FlashClose_Image);
    
	// Dimension 
	GM_Size = {
		width : Math.round($(document).width() * 0.8),
		height : Math.round($(document).height() * 0.6)
	}
	
	var flashvars = {
        key: Aida_GoogleMaps_getKey(),
	    w: GM_Size.width,
	    h: GM_Size.height
	};
	var params = {
		allowfullscreen: "false",
		menu: "false",
		allowscriptaccess: "always"
	};
	var attributes = {
		id: "googlemap",
		name: "googlemap"
	};
	swfobject.embedSWF("fileadmin/www.aida.de/v3/flash/googlemap.swf", "googlemap", GM_Size.width, GM_Size.height, "9.0.0", "", flashvars, params, attributes);
	
	// Layer beim Klick auf den Hintergrund ausblenden
	$('#GoogleMap_FlashOverlay').click( function() {
		GoogleMaps_DisplayLayer();
	});
	// Layer beim Klick auf des Close-Buttons ausblenden
	$('#GoogleMap_FlashClose').click(function(e) {
		(e.preventDefault) ? e.preventDefault() : e.returnValue = false;
		GoogleMaps_DisplayLayer();
	});
	
	return true;
	
}


/**
 * Blendet die Layer für die GoogleMaps API (Flash) ein/aus
 *
 * @return void
 */
function GoogleMaps_DisplayLayer() {
	
	// Ermitteln der tatsächlichen  Seiten-Dimensionen
	if (document.height) {
		wWidth = document.width;
		wHeight = document.height;
	} else if (document.body && document.body.scrollHeight) {
		wWidth = document.body.scrollWidth;
		wHeight = document.body.scrollHeight;
	}
	
	// Scrollstatus ermitteln
	offsetScrollTop = $(document).scrollTop();
	offsetScrollLeft = $(document).scrollLeft();

	
	// CSS für Hintergrund-Layer definieren
	$('#GoogleMap_FlashOverlay').css({
		'width' : wWidth + 'px',
		'height' : wHeight + 'px',
		opacity : 0.8
	});
	// CSS für Flash-Layer definieren
	$('#GoogleMap_Flash').css({
		'width' : GM_Size.width + 'px',
		'height' : GM_Size.height + 'px',
		'top' : offsetScrollTop + 'px',
		'left' : offsetScrollLeft + 'px'
	});
	
	/**
	 * Flashbühne per Position ein-/ausblenden
	 * Position wird dabei zwischen -2000 x/y zur aktuellen Betrachter-Position gewechselt
	 * Dadurch wird der Flash-Initial-Bug umgangen
	 */
	switch ($('#GoogleMap_FlashOverlay').css('display').toLowerCase()) {
		
		case 'none':
			$('#GoogleMap_Flash').css({
				'top' : offsetScrollTop + 'px',
				'left' : offsetScrollLeft + 'px'
			});
			break;
		
		case 'block':
			$('#GoogleMap_Flash').css({
				'top' : '-2000px',
				'left' : '-2000px'
			});
			break;
		
	}
	
	// Layer ein-/ausblenden
	$('#GoogleMap_FlashOverlay').toggle();
	
}

/**
 * Vorbereiten der Positionsübermittlung an das Flash
 *
 * @param lat integer
 * @param lng integer
 * @param zoom integer
 * @param key string
 * @param shipname string
 * @return void
 */
function GoogleMaps_PrepareSending(lat, lng, zoom, key, shipname){
	GoogleMaps_DisplayLayer();
	$('#googlemap').GoogleMaps_SendLoadingToFlash();
	window.setTimeout('GoogleMaps_SendMap(' + lat + ', ' + lng + ', ' + zoom + ', "' + key + '", "' + shipname + '")', 1000);
}

/**
 * Position an das Flash übermitteln
 *
 * @param lat integer
 * @param lng integer
 * @param zoom integer
 * @param key string
 * @param shipname string
 * @return void
 */
function GoogleMaps_SendMap(lat, lng, zoom, key, shipname) {
	$('#googlemap').GoogleMaps_SendMarkerToFlash(lat, lng, zoom, key, shipname);
}
