var hotelMarkers = new Array();
var infoWindows = new Array();
var map;
var numWindows = 0;

var Lang;
var Dest;

function mapInit(_Dest, _Lang, _Zoom, _Lat, _Lng) {  
	

    Lang = _Lang;
    Dest = _Dest;

    var latlng = new google.maps.LatLng(_Lat, _Lng);   
    
    var myOptions = {      
		zoom: _Zoom,      
		center: latlng,      
		mapTypeId: google.maps.MapTypeId.TERRAIN,
        scrollwheel: false
	};    
	map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);  
	
	function addMapMarker(_hotels, _hotelMarkers){
	
        
        for (var i = 0; i < _hotels.length; i++) {
            
            
    		var hotel = _hotels[i];
            
            if (hotel!=undefined) {
                
                var myLatLng = new google.maps.LatLng(hotel[1], hotel[2]);
        		var hotelPointer = new google.maps.MarkerImage("/img/pins/" + hotel[4] + ".png", 
                                                               new google.maps.Size(21, 31), 
                                                               new google.maps.Point(0,0), 
                                                               new google.maps.Point(10, 27));

                // Marker
        		var marker = new google.maps.Marker({
        			position: myLatLng,
        			map: map,
        			title: hotel[0],
        			icon: hotelPointer,
        			visible: true
                    
                });
        	
                id =  _Lang + '|' + _Dest + '|' + hotel[3];

                setInfoMessage(marker, id, numWindows);
        		setMouseOverFunction(marker);
        		_hotelMarkers[i] = marker;
        		numWindows++;
            }
      	}
	}
    
	function setInfoMessage(marker, _id, _numWindows){
		var thisWin = _numWindows;
        
        var inlineHtml = '<div class="hotellbubbla" style="overflow:hidden;"><img alt="Progress" src="../../img/ajax-loader.gif" id="loader"/></div>';
        
        var infowindow = new google.maps.InfoWindow(
			{ content: inlineHtml });  
        
        google.maps.event.addListener(marker, 'click', function() {  
            
            infowindow.open(map,marker);	
            
            //$("#loader").show();

            //loadpage = "../../price_spec.htm .hotellbox";
            loadpage = "/cgi-bin/wspd_cgi.sh/pop_run_hotell.p?id=" + _id;
            $(".hotellbubbla").load(loadpage, function(){ 
                $("#loader").hide();
            });
            
			
			for (var k in infoWindows){  
				if (k!= thisWin) infoWindows[k].close();

            } 
		});
		infoWindows[numWindows] = infowindow;
	}
    function setMouseOverFunction(marker){
		google.maps.event.addListener(marker, 'mouseover', function() {    
            var icon;
            for (var k in hotelMarkers) {
                if (hotels[k][0] == marker.title) {
                    document.getElementById("hotell_" + hotels[k][3]).className = "active";
                    icon = hotels[k][4];
                }
            }
            
			this.setIcon(new google.maps.MarkerImage("/img/pins/" + icon + "_red.png", 
                                                     new google.maps.Size(21, 31), 
                                                     new google.maps.Point(0,0), 
                                                     new google.maps.Point(10, 27)));

        });
        google.maps.event.addListener(marker, 'mouseout', function() {    
            var icon;
            for (var k in hotelMarkers) {    
                if (hotels[k][0] == marker.title) {
                    document.getElementById("hotell_" + hotels[k][3]).className = "on";
                    icon = hotels[k][4];
                }
            }

            this.setIcon(new google.maps.MarkerImage("/img/pins/" + icon + ".png", 
                                                     new google.maps.Size(21, 31), 
                                                     new google.maps.Point(0,0), 
                                                     new google.maps.Point(10, 27)));
        });
    }
		
	addMapMarker(hotels, hotelMarkers);

    google.maps.event.addListener(map, 'bounds_changed', function() {    
        isOutsideMap();
    });

    google.maps.event.addListener(map, 'center_changed', function() {    
        isOutsideMap();
    });

}

function zoomTo(lat,lng, infoWin){
	map.setZoom(18);
	map.panTo(new google.maps.LatLng(lat,lng));
	infoWindows[infoWin].close();
}

function goTo(_Zoom, _lat, _lng){
	map.setZoom(_Zoom);
	map.panTo(new google.maps.LatLng(_lat,_lng));
}

function isOutsideMap(){
   
    //document.getElementById("div_remark").style.visibility = "hidden";

    for (var k in hotelMarkers){  
        if (!map.getBounds().contains( hotelMarkers[k].position )){
            if (document.getElementById("hotell_" + hotels[k][3])!=null) 
                document.getElementById("hotell_" + hotels[k][3]).className = "off";
            //document.getElementById("div_remark").style.visibility = "visible";
        } else {
            if(document.getElementById("hotell_" + hotels[k][3])!=null)
                document.getElementById("hotell_" + hotels[k][3]).className = "on";
        }
    } 
}

function lightUp(_hotel){

    for (var k in hotelMarkers) {
        
        if (hotels[k][3] == _hotel) {
            
            hotelMarkers[k].setIcon(new google.maps.MarkerImage("/img/pins/" + hotels[k][4] + "_red.png", 
                                    new google.maps.Size(21, 31), 
                                    new google.maps.Point(0,0), 
                                    new google.maps.Point(10, 27)));
        }
    }
}

function lightDown(_hotel){

    for (var k in hotelMarkers) {
        if (hotels[k][3] == _hotel) {

            hotelMarkers[k].setIcon(new google.maps.MarkerImage("/img/pins/" + hotels[k][4] + ".png", 
                                    new google.maps.Size(21, 31), 
                                    new google.maps.Point(0,0), 
                                    new google.maps.Point(10, 27)));
        }
    }
}

function openInfoWin (_hotel){
    for (var k in hotelMarkers) {
        if (hotels[k][3] == _hotel) {
            infoWindows[k].open(map, hotelMarkers[k]);
            
            loadpage = "/cgi-bin/wspd_cgi.sh/pop_run_hotell.p?id=" +  Lang + '|' + Dest + '|' + _hotel;
            $(".hotellbubbla").load(loadpage, function(){ 
                $("#loader").hide();
            });
            
			
			for (var j in infoWindows){  
				if (j!=k) infoWindows[j].close();

            } 

        }
    }
}

