var mapa;
var mapLayers = new Array();
var mapsPole = new Array();
var ownPoint = '';
var IconImageDef = 'http://www.google.com/intl/en_us/mapfiles/ms/micons/';
var modul_def = "/default";
var modul_admin = "/admin";
//google.load('maps', '2');

mapLayers[2] = true;

google.setOnLoadCallback(GoogleMAPA);

var GoogleCompatible;

function GoogleMAPA() 
{
	if (GoogleCompatible = google.maps.BrowserIsCompatible()) 
	{
		document.body.onUnload = GUnload();
		//vytvoreni samotne mapy
		mapa = new google.maps.Map2(document.getElementById('google_mapa'));
		// jeji nastaveni - stredu a urovne priblizeni
		mapa.setCenter(new google.maps.LatLng(49.79545,15.732422), 7);
		mapa.addControl(new GLargeMapControl3D());
		mapa.addControl(new GMapTypeControl());
        mapa.enableScrollWheelZoom();
		GoogleMAPAinit();
	}
	else
		alert('Vypada to ze vas prohlizec nepodporuje Google Maps!');
}

	function mapsSearch() {
		var geocoder = new GClientGeocoder();
		geocoder.getLocations(
			document.getElementById("text").value,
			function(response) {
				if ( response.Status.code != "200") {
					alert(document.getElementById("text").value + " nenalezeno " + response.Status.code );
				} else {
					position = new GLatLng(response.Placemark[0].Point.coordinates[1], response.Placemark[0].Point.coordinates[0]);
					mapa.setCenter(position,14);
				}
	      	}
		);
	}
	
function initEditMaps(v_lat,v_lng)
{
	var dynamicMarker = new GMarker(new GLatLng(v_lat,v_lng), {draggable: true});
	GEvent.addListener(dynamicMarker, "dragstart", function() 
		{
		}
	);
    GEvent.addListener(dynamicMarker, "dragend", function() 
		{
		    var latlng = dynamicMarker.getLatLng();
		    document.getElementById("lat").value = latlng.lat();
		    document.getElementById("lng").value = latlng.lng();
	    }
	);
    mapa.addOverlay(dynamicMarker);
	var SD = google.maps.LatLng(v_lat, v_lng);
	mapa.panTo(SD);
}

	function sendCoord(position, mode) {
		var type;
		var notRunner = '';
		if (!document.getElementById("dotType"))
			type = "2"; 
		else{
			type = document.getElementById("dotType").options[document.getElementById("dotType").selectedIndex].value;
			if (formValidation('Form_Maps_DotOptions')){
				var name = document.getElementById("dotName").value;
				var url = document.getElementById("dotURL").value;
				var picture = document.getElementById("dotPicture").value;
				var description = document.getElementById("dotDescription").value;
				var notRunner = "/name/" + name + "/url/" + url + "/picture/" + picture + "/description/" + description + "/";
			}
			else
			  return false;		
		}
		var modul;
		if (mode == 0)
			modul = modul_def;
		else
			modul = modul_admin;
		$.getJSON(location.protocol+"//"+location.hostname + JSbaseUrl + modul +"/maps/map-add-point/type/" + type + "/lat/" + position.Ye + "/len/" + position.Va + notRunner, function(json){
		      if (json.chyba == 'ok'){
		    	  var Icon = createIcon(json.icon.img_file, json.icon.sh_file, json.icon.img_width, json.icon.img_height, json.icon.sh_width, json.icon.sh_height, json.icon.icon_anchor_x, json.icon.icon_anchor_y, json.icon.win_anchor_x, json.icon.win_anchor_y);    	
//		    	  addMarker(position, type, json.profile, Icon, true);
		      }
		      else
		    	 if (json.chyba == 'notlog') 
		    	    alert('Nejste prihlasen');
		      	 if (json.chyba == "ah")
		      		alert('Uz jeden bod na mape mate');
	    });
		return true;
	}
	
	function addMarker(position, type, icona,info) {
		 markerOptions = { icon:icona };
		 var marker = new google.maps.Marker(position, markerOptions);
   	 	 mapa.addOverlay(marker);
		
		 var event = GEvent.addListener(marker, "click", function() {   	  	 		
   	  	 	 mapa.setCenter(position);
  	 		 marker.openInfoWindowHtml(info,{ suppressMapPan:true });
   	  	 });
   	  	 return marker;
	}
	
	function addAddressMarker(arr,address, type, icona,info) {
		var geocoder = new GClientGeocoder();
		var position = new GLatLng(0,0);
		geocoder.getLocations(
			address,
			function(response) {
				if ( response.Status.code != "200") {
				} else {
					position = new GLatLng(response.Placemark[0].Point.coordinates[1], response.Placemark[0].Point.coordinates[0]);
					var Marker = addMarker(position,type,icona,info);
					arr.splice(0,0,Marker);
					Marker.Hide();
				}
	      	}
		);
	}
	
	function deletePoint(){
		if (confirm('Opravdu chcete smazat bod?')){
			alert('vymazat');
		}
	
			//document.forms["Form_Maps_DotType"].submit();
	}
	
	function createIcon(img_file, sh_file, img_width, img_height, sh_width, sh_height, icon_anchor_x, icon_anchor_y, win_anchor_x, win_anchor_y) 
	{
		var Icon = new GIcon(G_DEFAULT_ICON);
		Icon.image = Icon.shadow = IconImageDef;
		Icon.image += img_file;
		Icon.shadow  += sh_file;
		Icon.iconSize = new GSize(img_width,img_height);
		Icon.shadowSize = new GSize(sh_width,sh_height);
		Icon.iconAnchor = new GPoint(icon_anchor_x,icon_anchor_y);
		Icon.infoWindowAnchor = new GPoint(win_anchor_x,win_anchor_y);
		return Icon;		
	}
	
	function mapsChoose(mode) {
		point = mapsPole[document.getElementById("select").selectedIndex];
		position = new GLatLng(point.coordinates[1], point.coordinates[0]);
		if (sendCoord(position, mode))
			document.getElementById("fieldset-mapsSelect").style.display = 'none';
	}
	
	function mapsChangeFilter(arr, checked, mode)
	{
		for (idx in arr)
		{
			elem=arr[idx];
			if (checked == true)
				elem.show();
			else
				elem.hide();
		}
	}
	
	function mapsChangeDotType(type){
		$.getJSON(location.protocol+"//"+location.hostname + JSbaseUrl + "/admin/maps/get-dots-by-type/type/" + type, function(json){
			if (json.chyba == 'ok'){
				var dotOfType = document.getElementById("dotOfType");
				while (dotOfType.length)
					dotOfType.remove(this.length-1);
				for (x in json.dots)
				{ 
					try
					{
						dotOfType.add(new Option(json.dots[x].name, json.dots[x].idd),null);
					}
					catch(ex)
					{
						dotOfType.add(new Option(json.dots[x].name, json.dots[x].idd));
					}
					
					
				}				
			}
		      else
		    	 if (json.chyba == 'false') 
		    	    alert('Chyba');		    
	    });
	}
	
	function deleteOwnPoint(){
		if (confirm('Opravdu chcete smazat vlastni bod?')){
			$.getJSON(location.protocol+"//"+location.hostname + JSbaseUrl + "/default/maps/delete-own-point/", function(json){
			      if (json.chyba == 'ok'){
			    	 mapa.removeOverlay(ownPoint);
			    	 ownPoint = '';
			    	 alert('Bod byl vymazan');
			      }
			      else
			    	 if (json.chyba == 'notlog') 
			    	    alert('Nejste prihlasen');
			      	 if (json.chyba == "nopoint")
			      		alert('Jeste nemate vytvoreny bod');
			    
		    });
		}
	}
	
	function loadMarkers(layersTrue, mode) {
		var params = "";
		for (i in layersTrue)
			params = params + "fil" + i + "/" + layersTrue[i] + "/";
		var modul;
		if (mode == 0)
			modul = modul_def;
		else
			modul = modul_admin;
		$.getJSON(location.protocol+"//"+location.hostname + JSbaseUrl + modul +"/maps/map-change-layers/count/"+ layersTrue.length + "/"+ params, function(json){
				if (json.chyba == 'ok'){
					mapa.clearOverlays();		
					for (x in json.markers){
						position = new GLatLng(json.markers[x].lat, json.markers[x].lng);
						var Icon = createIcon(json.markers[x].icon.img_file, json.markers[x].icon.sh_file, json.markers[x].icon.img_width, json.markers[x].icon.img_height, json.markers[x].icon.sh_width, json.markers[x].icon.sh_height, json.markers[x].icon.icon_anchor_x, json.markers[x].icon.icon_anchor_y, json.markers[x].icon.win_anchor_x, json.markers[x].icon.win_anchor_y);
//						addMarker(position, json.markers[x].typ, json.markers[x].options, Icon, json.markers[x].ownPoint);
					}			
				}
				else if (json.chyba == 'nic')
					mapa.clearOverlays();	
				else
			      	alert('Chyba vypsani bodu');
			});
	}

