

/* Funktionen fuer die TT-Popups */
function popupOpen(windowWidth, windowHeight, popupLink, popupName, noScrollbars){
	 
	 var windowPosLeft = (screen.width - windowWidth) / 2;
	 var windowPosTop = (screen.height - windowHeight) / 2;
	 if(noScrollbars == true) {
		noScrollbars = "no";
	 } else {
	 	noScrollbars = "yes";
	 }	 
	 var winOpen = window.open(popupLink, popupName, "width=" + windowWidth + ",height=" + windowHeight + ",left=" + windowPosLeft + ",top=" + windowPosTop + ",scrollbars =" + noScrollbars + ",dependent=yes");	 
	 if(winOpen !== null) 
	 	winOpen.focus();
}

/* Flughafeninfos */
function goAirport(popupLink){

	if(popupLink != "x"){
	 	var url = "http://cp.traveltainment.de/content_page/index.php3?KID=440200&AF=";
	 	popupLink = url + popupLink;
	 	popupOpen(600, 545, popupLink, "airport");
 	}
}

/* Veranstalter-AGB */
function goVeranstalterAgb(code) {
	var url = "http://www.vidado.com/booking/agb.php?KID=440200&vacode="+code;
	popupOpen(518,650,url,'VeranstalterAGB');
}

/* Bewertungs-Popups */
function openHotelbewertung(iffcode) {
	var url = "http://cp.traveltainment.de/content_page/index.php3?KID=440200&IFF="+iffcode+"&Reiseart=&PG_Art=&Zimmercode=&START=9&VA=&Kenner_Nav=0|1|1|1|1|0|0|0|1&KAT=&season=&startva=&lang=&CRS_CODE=&Ski_Ref_ID=&AF=&ZF=&engine=&HNAME=&timestamp=";
	popupOpen(600,545,url,'Hotelbewertungen');
}

/* Wetterinfos-Popups */
function openWetterinfos(iffcode) {
	var url = "http://cp.traveltainment.de/content_page/index.php3?KID=440200&IFF="+iffcode+"&Reiseart=&PG_Art=&Zimmercode=&START=5&VA=&Kenner_Nav=0|1|1|1|1|0|0|0|1&KAT=&season=&startva=&lang=&CRS_CODE=&Ski_Ref_ID=&AF=&ZF=&engine=&HNAME=&timestamp=";
	popupOpen(600,545,url,'Wetterinfos');
}

/* Regioneninfos-Popups */
function openRegionsinfos(iffcode) {
	var url = "http://cp.traveltainment.de/content_page/index.php3?KID=440200&IFF="+iffcode+"&Reiseart=&PG_Art=&Zimmercode=&START=4&VA=&Kenner_Nav=0|1|1|1|1|0|0|0|1&KAT=&season=&startva=&lang=&CRS_CODE=&Ski_Ref_ID=&AF=&ZF=&engine=&HNAME=&timestamp=";
	popupOpen(600,545,url,'Regionsinfos');
}

/********* Google Maps **********/
function createGoogleMap(options) {
    google.load("maps", "3", {"other_params":"sensor=false", "language" : "de"});

    $(function() {
        var mapblock = $("#block-karte-" + options['index']);

        // Höhe und Breite des Map-Kontainers anpassen
        mapblock.width(mapblock.parent().width() - mapblock.outerWidth(true) + mapblock.width());
        if (options['height'] != "")
            mapblock.height(parseInt(options['height']));
        else
            mapblock.height(mapblock.parent().height());

        // Maptype
        if (options['maptype'] == "Satellite")
            options['maptype'] = google.maps.MapTypeId.SATELLITE;
        else if (options['maptype'] == "Hybrid")
            options['maptype'] = google.maps.MapTypeId.HYBRID;
        else
            options['maptype'] = google.maps.MapTypeId.ROADMAP;

        // Kartenoptionen
        var mapOptions = {
            mapTypeId: options['maptype'],
            mapTypeControl: true,
            mapTypeControlOptions: {mapTypeIds: [google.maps.MapTypeId.ROADMAP,google.maps.MapTypeId.SATELLITE,google.maps.MapTypeId.HYBRID], style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
            navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
            scrollwheel: false,
            zoom: (options['zoom'] == "") ? 15 : parseInt(options['zoom']),
            navigationControl: (options['navigationControl'] === "true"),
            scaleControl: (options['scaleControl'] === "true")
        }

        // Karte erzeugen
        var map = new google.maps.Map(mapblock.get()[0], mapOptions);
        doGoogleMapsGeocode({
            map: map,
            centermap: true,
            adresse: options['adresse'],
            title: options['title'],
            description: options['description'],
            after: options['after']
        });

    });
}

function doGoogleMapsGeocode(options) {
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode(
        {'address': options['adresse']},
        function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                if (options['centermap']) options['map'].setCenter(results[0].geometry.location);

                // Marker erzeugen
                if (options['title'] != null) {
                    createGoogleMapMarker({
                        map: options['map'],
                        marker: [{
                            "title": options["title"],
                            "description": options["description"],
                            "lat": results[0].geometry.location.lat(),
                            "lng": results[0].geometry.location.lng()
                        }]
                    });
                }

                if (options['after'] != null) options['after'](options['map']);

            } else {
                window.alert("Die gewünsche Position konnte leider nicht gefunden werden (Status: " + status + ").");
            }
        }
    );
}

function createGoogleMapMarker(options) {
    for (var i = 0; i < options['marker'].length; i++) {
        var markerOptions = {
            map: options['map'],
            position: new google.maps.LatLng(options['marker'][i]['lat'], options['marker'][i]['lng']),
            title: options['marker'][i]['title']
        }
        if (options['marker'][i]['icon'] != null) markerOptions['icon'] = options['marker'][i]['icon'];
        
        var marker = new google.maps.Marker(markerOptions);

        function attachInfoWindow(marker, text) {
            var infowindow = new google.maps.InfoWindow({content: text});
            google.maps.event.addListener(marker, "click", function() {infowindow.open(options['map'], marker);});
        }

        function openLink(marker, url) {
            google.maps.event.addListener(marker, "click", function() {window.location = url});
        }
        
        // Infofenster an Marker binden
        if (options['marker'][i]['description'] != null) {
            attachInfoWindow(marker, options['marker'][i]['description']);

        // oder Link
        } else if (options['marker'][i]['link'] != null) {
            openLink(marker, options['marker'][i]['link']);
        }
    }
}

