var clickHandler;
var map;
var myPano;
var lat;
var lng;
var locations;
var bounds;

$(document).ready(function() {
   
    if (GBrowserIsCompatible()) {
        pano = document.getElementById("pano");
        if(pano){  
            myPano = new GStreetviewPanorama(document.getElementById("pano"));
            GEvent.addListener(myPano, "error", handleNoFlash); 
        }else{
           myPano = false; 
        }
        map_element = document.getElementById("map");
        
        if(map_element){
            map = new GMap2(document.getElementById("map"));
            if(map){
               
                map.addControl(new GLargeMapControl());
                map.addControl(new GMapTypeControl());
                map.setCenter(new GLatLng(50.077886, 14.447647), 10);
            
                svOverlay = new GStreetviewOverlay();
                map.addOverlay(svOverlay);

                
                if(content){
                	processLocations(content,false);
                }
            }
        
        }else{
             map_element = document.getElementById("map_move");
            
                if(!map_element)
                    return;
               
                map = new GMap2(document.getElementById("map_move"));
                if(map){
                     
                    map.addControl(new GLargeMapControl());
                    map.addControl(new GMapTypeControl());
                    map.setCenter(new GLatLng(50.077886, 14.447647), 13);
                    
                    svOverlay = new GStreetviewOverlay();
                    map.addOverlay(svOverlay);
                  
                    
                   
                    
                    if(content){
                    	marker = processLocations(content,true,myPano);
                    	
                    	
                    	
                    }
                }
         }
        
    }
       
    $('a#zoom_show_all').click(function() {
        zoomShowAll();
    });
});

function handleNoFlash(errorCode) {
        
      if (errorCode == 603) {
        alert("Error: Flash doesn't appear to be supported by your browser");
        return;
      
    }
    
    //600 no para
}  

   





function processLocations(content,move) {
    locations = content;
       
    $('p#location_list').html('');
    var length = locations.length;
    for (var i = 0; i < length; i++){
      	var element = locations[i];	
      	var relativepath = "/images/ico/ico_parkovani.gif"; 
    	// create custom icon
			//var icon = new GIcon();
			//icon.image = relativepath;
			//icon.iconSize = new GSize(36, 36);
			//icon.iconAnchor = new GPoint(6, 18);
			//icon.infoWindowAnchor = new GPoint(5, 1);

			
			//, {title: element.name}
			//,icon
			//{icon, draggable: true,title: element.name}
			
	   	//var marker = new GMarker(new GLatLng(element.latitude, element.longitude),icon);
	   	
	   	if(move){
	   	    var marker = new GMarker(new GLatLng(element.latitude, element.longitude),{draggable: true});
	   	   GEvent.addListener(marker, "dragstart", function() {
              map.closeInfoWindow();
            });

            GEvent.addListener(marker, "dragend", function() {
                 var point = marker.getPoint();
		          map.panTo(point);
                 $('#latitude').val(point.lat())
                 $('#longitude').val(point.lng());
                 if(myPano){
                      myPano = new GStreetviewPanorama(document.getElementById("pano"));
                         GEvent.addListener(myPano, "error", handleNoFlash); 
                        $("#pano").show();
                        street = new GLatLng(point.lat(),point.lng());
                        myPOV = {yaw:370.64659986187695,pitch:0};
                        myPano.setLocationAndPOV(street);
                 }
                 

                //marker.openInfoWindowHtml("Just bouncing along..."+part[0]);
            });
            
            
             GEvent.addListener(marker, "drag", function() {
                var point = marker.getPoint();
		          //map.panTo(point);

                
                 
                 $('#latitude').val(point.lat())
                 $('#longitude').val(point.lng());
                //marker.openInfoWindowHtml("Just bouncing along..."+part[0]);
            });
	   	    
	   	 
	   	}else{
	   	     var marker = new GMarker(new GLatLng(element.latitude, element.longitude));

	   	   
	   	}
	   	
        map.addOverlay(marker);
        
        if(myPano){
            GEvent.addListener(marker, 'click', function(overlay) {
                
                 myPano = new GStreetviewPanorama(document.getElementById("pano"));
                 GEvent.addListener(myPano, "error", handleNoFlash); 
                $("#pano").show();
                var point = marker.getPoint();
                map.panTo(point);
                street = new GLatLng(point.lat(),point.lng());
                myPOV = {yaw:370.64659986187695,pitch:0};
                myPano.setLocationAndPOV(street);
                //marker.openInfoWindowHtml('Name: <b>'+element.name);       
            });
        }
        
        
      
    	
    }
       
    zoomShowAll();
}

function moveMapTo(index) {
    map.panTo(new GLatLng(locations[index].latitude, locations[index].longitude));
}

function zoomShowAll() {
    bounds = new GLatLngBounds();
    map.setCenter(new GLatLng(0,0),0);
    
    
     var length = locations.length;
     for (var i = 0; i < length; i++){
        bounds.extend(new GLatLng(locations[i].latitude, locations[i].longitude));
         }
     
/*
     locations.forEach(function(elemet, id, array) {
        bounds.extend(new GLatLng(locations[id].latitude, locations[id].longitude));
    });
  */  
    


    //map.setZoom(map.getBoundsZoomLevel(bounds));
    map.setZoom(11);
    var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) /2;
    var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) /2;
   
    map.setCenter(new GLatLng(clat,clng),13);
}
