// ### Google Maps #############################################################
var globalHotelCoords    = [];   // Koordinaten der Hotels
var globalTopHotelCoords = [];   // Koordinaten der TopHotels
var pGoogleMap           = [];   // Instanz(en) der GoogleMap
var infoWindow           = null;
//var ttPoiBubbleDiv = '';

/**
 * GoogleMap ausblenden
 */
function hideGoogleMap(elemId) {
    //jQuery('#idGoogleMap'+elemId).slideUp('slow');
	var mapDiv        = 'idGoogleMap_'+elemId;
    var elemGoogleMap = document.getElementById(mapDiv);
	elemGoogleMap.style.display = 'none';
}

/**
 * Zeigt die GoogleMap an
 */
function showGoogleMap(elemId, IFF, latitude, longitude, name, price, category) {
    var mapDiv        = 'idGoogleMap_'+elemId;
    var elemGoogleMap = document.getElementById(mapDiv);
    var isHib         = false;
    //elemId            = 99;

    // Google-Klasse dynamisch einbinden
    if (typeof TTGoogleMap == 'undefined') {
        var elemScript = document.createElement('script');
        elemScript.type = 'text/javascript';
        elemScript.src  = '/tools/js/TTGoogleMapV3.js';
        var bodyElem = document.getElementsByTagName("body");    
        bodyElem[0].appendChild(elemScript); 
    } else {
        if (!isHib) {
            window.setTimeout(function(){
                jQuery(elemGoogleMap).slideDown('slow', function() {
                    jQuery("#openMap").hide();
                    jQuery("#closeMap").show();
                });
            }, 75);
        }
    }
    
    var pInterval = setInterval(function(){
        if (typeof TTGoogleMap != 'undefined') {
            clearInterval(pInterval);

            elemGoogleMap.style.display = 'block';
            pGoogleMap[elemId] = new TTGoogleMap({
				coords:    new google.maps.LatLng(latitude, longitude), 
                id: mapDiv,
                streetViewControl: false,
				overviewMapControl: true
            });
            var aMarker = [];
            var hotelMarkerCount = 0;
            var arrCityPOIs = [];
			if (window["cityPOIs_" + IFF] != undefined) {
				arrCityPOIs = window["cityPOIs_" + IFF];
			}
			
			var rawData = {
				hotelName : name,
				IFF       : IFF,
				category  : category,
				price     : price,
				id		  : elemId
			};
			
			aMarker.push({
				position: new google.maps.LatLng(latitude, longitude),  
				map: pGoogleMap[elemId], 

				x      : latitude,
				y      : longitude,
				icon   : '/kunden_parameter/nixwieweg2/ibe_v2/images/bubble_map/hotel.png',
				shadow : false,
				title  : name,
				zIndex : 2,
				 data:         {
                        anchorOffset:    [0, -16],
                        titleHTML:       name,
                        instanz:         elemId,
                        thumb:           '/kunden_parameter/nixwieweg2/ibe_v2/images/bubble_map/hotel.png',
                        type:            "",//arrCityPOIs[i].poiType,
                        typeDescription: "",//TTGoogleMap.poiTypes[arrCityPOIs[i].poiType],
                        country:         " ",
                        region:          " ",
						rawData:		 rawData
                    },
				
				callbacks: {
					click: onClickGoogleMap
				}
			});

			hotelMarkerCount++;

            // POIs
            for (var i = 0; i < arrCityPOIs.length; i++) {
                aMarker.push({
                    x:            arrCityPOIs[i].latitude,
                    y:            arrCityPOIs[i].longitude,
                    icon:         '/kunden_parameter/nixwieweg2/ibe_v2/images/bubble_map/' + arrCityPOIs[i].poiType + '.png',
                    shadow:       false,
                    title:        arrCityPOIs[i].headline,
                    extendBounds: false,
                    zIndex:       1,
                    data:         {
                        anchorOffset:    [0, -16],
                        titleHTML:       arrCityPOIs[i].headline,
                        instanz:         elemId,
                        thumb:           arrCityPOIs[i].thumbnail,
                        type:            arrCityPOIs[i].poiType,
                        typeDescription: TTGoogleMap.poiTypes[arrCityPOIs[i].poiType],
                        country:         " ",
                        region:          " ",
						village:		 arrCityPOIs[i].village,
						distanceInterval:arrCityPOIs[i].distanceInterval
                    },
                    callbacks:    {
                        click: onClickGoogleMapPOI
                    }
                });
            }
            
            pGoogleMap[elemId].addMarkers(aMarker, {
                zoom:      true,
                zoomLevel: hotelMarkerCount <= 1 ? 15 : null
            });
            pGoogleMap[elemId].show();
        }
    }, 50);
}

//_______________________________________________________________________________
    function ShowStars(nStars){
		nStars = ""+nStars;
		nStars = nStars.replace(".","");
        var strStars="";
        while(nStars>0){
            strStars+='<img src="/kunden_parameter/nixwieweg2/ibe_v2/images/'+((nStars>5)?'1stern':'stern_halb')+'.gif" border="0">';
            nStars-=10;
        }
        return strStars;
    }

/**
 * Klick auf einen Marker in der GoogleMap
 */
function onClickGoogleMap() {
    var marker = this;
	
	
    pGoogleMap[marker.data.instanz].streetViewPanoService(marker, 200, function(svData, svStatus) {
        var hotData = marker.data.rawData;
        var hotPos  = marker.data.pos;
        var isHib   = marker.data.isHib;
        var instanz = marker.data.instanz;
		var hotelId = marker.data.rawData.id;
		var clearBothDiv = '<div style="clear:both;"></div>';
        
        var np = String(parseInt(parseInt(hotData.IFF) / 5000) * 5000);
        while (np.length < 5) {
            np = "0" + np;
        }
        
        var link = 's_termine(' + hotelId + ');';
        
        // Bubble-Gerüst bauen
        var strHTML = '';
        
        strHTML += '<div class="ttGoogleMapHotelBubbleRow">';
		strHTML += '    <div class="ttGoogleMapHotelBubbleHotelName">' + hotData.hotelName + '</div>';
        strHTML += '    <div class="ttGoogleMapHotelBubbleImg">';
        strHTML += '        <img src="/tools/image.php?pfad=' + imgservPfad + '/images/content/booking_thumbs_' +ttSeason + '_kl/' + np + '/THB_999_H' + parseInt(hotData.IFF) + '.jpg&b=110&h=80" width="110" height="80" border="0" alt="" />';
        strHTML += '    </div>';
        if (detail == 'termine') {
			strHTML += '    <div class="ttGoogleMapHotelBubbleHotelBox">';
			strHTML += '        <div class="ttGoogleMapHotelBubbleStars">' + ShowStars(pStrecke.terminHotelData.stars) + '</div>';
        }
		else {
			strHTML += '    <div class="ttGoogleMapHotelBubbleHotelBox">';
			strHTML += '        <div class="ttGoogleMapHotelBubbleStars">' + ShowStars(hotData.category) + '</div>';
		}
        
        if (detail == 'hotel') {
            strHTML += '    <div class="ttGoogleMapHotelBubblePriceBox">';
            strHTML += '        <div class="ttGoogleMapHotelBubblePriceHotel">p.P.&nbsp;ab&nbsp;<span onclick="' + link + '">' + hotData.price + ',-&nbsp;&euro;</span></div>';
            strHTML += '    </div>';
            strHTML += '<div style="clear:both;"></div>';
            strHTML += '</div>';
        }
		if (detail == 'termine') {
            /*
			strHTML += '    <div class="ttGoogleMapHotelBubblePriceBox">';
            strHTML += '        <div class="ttGoogleMapHotelBubblePriceTermin">p.P.&nbsp;ab&nbsp;<span>' + pStrecke.terminObjects[0].data.price + ',-&nbsp;&euro;</span></div>';
            strHTML += '    </div>';
            strHTML += '<div style="clear:both;"></div>';
            strHTML += '</div>';
			*/
        }
		strHTML += '</div>';
        var infoWin = pGoogleMap[instanz].showInfoWindow(marker, strHTML);
        if (svStatus == 'OK') {
            jQuery(infoWin.content).find('.ttGoogleMapPOIBubbleLinkStreetView').click(function() {
                pGoogleMap[instanz].showStreetView(svData.location.latLng, marker);
            })
        }
    });
}

function onClickGoogleMapPOI(){
    var marker = this;
    
    pGoogleMap[marker.data.instanz].streetViewPanoService(marker, 200, function(svData, svStatus) {
        var streetViewLink = svStatus == 'OK' ? '        <div class="ttGoogleMapPOIBubbleLinkStreetView">Street View</div>' : '';
        var data = marker.data;
        var strHTML = '<div class="ttGoogleMapPOIBubbleRow">'
					+ '        <div class="ttGoogleMapPOIBubbleType">' + data.typeDescription + '</div>'
                    + '    <div class="ttGoogleMapPOIBubbleImg">'
                    + '        <img src="/tools/image.php?pfad=' + imgservPfad + data.thumb + '&b=100&h=75" width="100" height="75" border="0" alt="" />'
                    + '    </div>'
                    + '    <div class="ttGoogleMapPOIBubbleDescription">'
                    + '        <div class="ttGoogleMapPOIBubbleTitle">' + data.titleHTML + '</div>'
					+ '        <div class="ttGoogleMapPOIBubbleDistance">Hotelentfernung: ' + data.distanceInterval + '</div>'
                    + '        <div class="ttGoogleMapPOIBubbleVillage">Ort: ' + data.village+ '</div>'
                    //+ streetViewLink
                    + '    </div>'
                    + '<div style="clear:both;"></div>'
                    + '</div>';
        
        var infoWin = pGoogleMap[data.instanz].showInfoWindow(marker, strHTML);
        if (svStatus == 'OK') {
            jQuery(infoWin.content).find('.ttGoogleMapPOIBubbleLinkStreetView').click(function() {
                pGoogleMap[data.instanz].showStreetView(svData.location.latLng, marker);
            });
        }
    });
}
