var map;
var mapDiv;
var gmarkers = [];
var glabels = [];
var infoWindow;
var iconmarkers = [];
var htmls = [];
var elevator;
var elevValue;

// Create Right Click Control
var contextMenuControl;

function initialize(initLat,initLng,initLine,initIcon,initDiv) {	
	var Lat = initLat;
	var Lng = initLng;
	if (!Lat) Lat = 19.16373;
	if (!Lng) Lng = 97.99308;
	var myLatlng = new google.maps.LatLng(Lat,Lng);
	var myOptions = {
	  zoom: 10,
	  center: myLatlng,
	  mapTypeId: google.maps.MapTypeId.ROADMAP
	}
	mapDiv = initDiv;
	map = new google.maps.Map(document.getElementById(initDiv), myOptions);
	
	// Marker
	var marker = new google.maps.Marker({map: map,position: myLatlng,icon: initIcon, draggable: true});
	marker.setMap(map);
	
	// Add dragging event listeners.
	google.maps.event.addListener(marker, 'drag', function() {
		getCoordinate(marker);
	});
	
}

/* get Coordinate */
function getCoordinate(marker) {
	 var latlng = marker.getPosition();
	 document.getElementById("latitude").value = latlng.lat().toFixed(5);
	 document.getElementById("longitude").value = latlng.lng().toFixed(5);
}
/* end get Coordinate */

// Label for Marker
function Label(txt,latlng,map) { 
	// Initialization 
	this.txt_ = txt;
	this.latlng_ = latlng;
	this.map_ = map;
	this.div_ = null;
	
	// Explicitly call setMap() on this overlay   
	this.setMap(map); 
};

Label.prototype = new google.maps.OverlayView;

// Implement onAdd
Label.prototype.onAdd = function() { 
	// Create the DIV and set some basic attributes.   
	var div = document.createElement('DIV');
	div.style.position = "absolute";
	
	this.div_ = div;
	
	var pane = this.getPanes().overlayLayer; 
	pane.appendChild(this.div_); 
};

// Implement onRemove
Label.prototype.onRemove = function() { 
	this.div_.parentNode.removeChild(this.div_); 
	this.div_ = null;
};

// Implement draw
Label.prototype.draw = function() { 
	var projection = this.getProjection(); 
	var position = projection.fromLatLngToDivPixel(this.latlng_); 
	this.div_.style.left = position.x + 'px'; 
	this.div_.style.top = position.y + 'px'; 
	this.div_.style.display = 'block'; 
	this.div_.innerHTML = this.txt_;
};

// Get Lat/Lng
function getLatLng(latlng) {
	var location = [];
	location[0] = latlng.lat().toFixed(5);
	location[1] = latlng.lng().toFixed(5);
	return location;
}

function getElevation(latlng) {

	var locations = [];
	locations.push(latlng);
	
	// Create a LocationElevationRequest object using the array's one value
	var positionalRequest = {
	  'locations': locations
	}
	
	// Initiate the location request
	elevator.getElevationForLocations(positionalRequest, function(results, status) {
	  if (status == google.maps.ElevationStatus.OK) {
	
		// Retrieve the first result
		if (results[0]) {
			elevValue = results[0].elevation.toFixed(2);
		} else {
		  elevValue = 'NA';
		}
	  } else {
		elevValue = 'NA';
	  }
	});
}

