
jQuery.noConflict();
(function($) { 
  $(function() {

	var mapStyle = [ 
		{ 
			featureType: "road", 
			elementType: "all", 
			stylers: [ 
				{ visibility: "simplified" }, 
				{ saturation: 54 }, 
				{ lightness: -36 } 
			] 
		},
		{ 
			featureType: "all", elementType: "all", stylers: [ { saturation: -100 } ] },{ featureType: "landscape", elementType: "all", stylers: [ { visibility: "off" }, { lightness: 100 } ] },{ featureType: "water", elementType: "all", stylers: [ { lightness: -48 }, { visibility: "on" } ] },{ featureType: "transit", elementType: "all", stylers: [ { lightness: 2 }, { visibility: "off" } ] },{ featureType: "poi", elementType: "all", stylers: [ { visibility: "off" } ] },{ featureType: "administrative.country", elementType: "all", stylers: [ { saturation: 1 }, { lightness: -56 }, { visibility: "off" } ] 
		}
	];
	
	var mapTypeControlOptions = {
       mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'aots']
    }
    
    var styledMapOptions = {
      name: "AOTS"
	}

	var aotsMapType = new google.maps.StyledMapType(
		mapStyle, styledMapOptions);



	if($('#lat').is('input'))
	{
		
		var $lat = $('#lat');
		var $lng = $('#lng');
		var $zoom = $('#zoom');
		var $data = $('#data');
		$('label[for="lat"]').before('<div id="adminMap" style="width: 390px; height: 350px;"></div>');
		
		var $form = $lat.parents('form');
		
		
		var latVal = 0;
		var lngVal = 0;
		var zoom = 0;
		latVal = parseFloat($lat.val());
		lngVal = parseFloat($lng.val());
		vzoom = parseInt($zoom.val());
		
		if(!latVal)
		{
			latVal = 51.50024104755396;
			lngVal = -0.1262664795242472;
			vzoom = 9;
		}
		
// 		if()
		$('#adminMap').gmap( 
		{
			'center': new google.maps.LatLng(latVal, lngVal), 
			mapTypeControlOptions : mapTypeControlOptions,
			'callback': function(map) 
			{
				map.mapTypes.set('aots', aotsMapType);
				map.setMapTypeId('aots');

// 				map.setZoom(zoom);
				$('#adminMap').gmap('option', 'zoom', vzoom);
				$(map).addEventListener('zoom_changed',
					function()
					{
						$zoom.val(map.getZoom());
						return true;
					}
				);	
				
				$(map).addEventListener('center_changed',
					function()
					{
						var posCenter = map.getCenter();
						setAdminLatLng(posCenter);
						return true;
					}
				);	
				
				eval('var arrMarkersData = '+$data.val()+';');
				
				for(var i=0; i<arrMarkersData.length; i++)
				{
					$('#adminMap').gmap('addMarker', 
						{
							'position': new google.maps.LatLng(arrMarkersData[i].lat, arrMarkersData[i].lng), 
							'title': '', 
							'draggable': true, 
							'bound': false
						}, 
						function(map, marker) 
						{
						}
						).click( 
							function() 
							{
								// tutaj bedziemy sie pytac o usuwanie
								var res = confirm('Do you want to remove this marker?');
								if(res)
								{
// 									console.log(this);
									this.setVisible(false);
								}
							}
						);
				}
				
				
				$(map).click( function(event) 
					{
						var $marker =$('#adminMap').gmap('addMarker', 
							{
								'position': new google.maps.LatLng(event.latLng.lat(), event.latLng.lng()),
								'title': 'test', 
								'draggable': true, 
								'bound': false
							}, 
							function(map, marker) 
							{
// 								console.log(marker);
							}
						).click( 
							function() 
							{
								// tutaj bedziemy sie pytac o usuwanie
								var res = confirm('Do you want to remove this marker?');
								if(res)
								{
// 									console.log(this);
									this.setVisible(false);
								}
							}
						);
					}
				);
			}
		
		});

		$form.submit(
			function()
			{
				var arrMarkers = $('#adminMap').gmap('getMarkers');
				var arrMarkersVisible = [];
				var count = arrMarkers.length;
				var strExport = '[';
				
				for(var i=0; i<count; i++)
				{
					if(arrMarkers[i].getVisible())
						arrMarkersVisible.push(arrMarkers[i]);
				}
				
				var count = arrMarkersVisible.length;
				for(var i=0; i<count; i++)
				{
					var mrk = arrMarkersVisible[i];
					
					
					strExport += ' { ';
					strExport += ' lat: '+mrk.getPosition().lat()+', ';
					strExport += ' lng: '+mrk.getPosition().lng();
					strExport += ' } ';
					if((i+1) < count)
					{
						strExport += ', ';
					}
				}
				
				strExport += ']';
				
				$data.val(strExport);
// 				console.log(strExport);
				return true;
			}
		);
		
	}
	
	function setAdminLatLng(gPosition)
	{
		$('input#lat').val( gPosition.lat() );
		$('input#lng').val( gPosition.lng() );
	}
	

    $('#map_canvas').width(390).height(350);
    
    var $mapCanvas = $('#map_canvas');
	if($mapCanvas.is('div'))
	{
		var mLat = 0;
		mLat = parseFloat($mapCanvas.find('span.lat').text());
		var mLng = 0;
		mLng = parseFloat($mapCanvas.find('span.lng').text());
		var vZm = parseInt($mapCanvas.find('span.zoom').text());
		
		eval('var arrMarkersData = '+$('#map_canvas span.data').html()+';');
		
		
// 		alert(mLat+":"+mLng);
// 		return true;
		$mapCanvas.gmap( 
			{
				'center': new google.maps.LatLng(mLat, mLng), 
				mapTypeControlOptions : mapTypeControlOptions,
				'callback': function(map) 
				{
					map.mapTypes.set('aots', aotsMapType);
					map.setMapTypeId('aots');
					$('#map_canvas').gmap('option', 'zoom', vZm);
					
					
					for(var i=0; i<arrMarkersData.length; i++)
					{
						$('#map_canvas').gmap('addMarker', 
							{
								'position': new google.maps.LatLng(arrMarkersData[i].lat, arrMarkersData[i].lng), 
								'title': '', 
								'draggable': false, 
								'bound': false
							}, 
							function(map, marker) 
							{
							}
							);
					}
					
					
/*					var $marker = $('#map_canvas').gmap('addMarker', 
						{
							'position': new google.maps.LatLng(mLat, mLng), 
							'title': '', 
							'draggable': false, 
							'bound': false
						}, 
						function(map, marker) 
						{
						
						
						}
					);*/
				}
			}
		);
	}
	
 });
 
})(jQuery);

