var enableGeo = false;
var objMap;
var arrMapMarkers = [];
var initialLocation;
var infowindow;
var objMarker;

function appendBootstrap() {
	var script = document.createElement("script");
	script.type = "text/javascript";
	script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=initMap";
	document.body.appendChild(script);
}

function initMap() {
	//alert("initMap is called");
	
	//Start location is Nippon Office
	var startLat	= "3.045575410523872";
	var startLng	= "101.55071681481934";
	var latlng		= new google.maps.LatLng(startLat, startLng);
	infowindow		= new google.maps.InfoWindow();
	
	var mapOptions 	= {
			zoom: 15,
			center: latlng,
			mapTypeControl: true,
			mapTypeControlOptions: {
				style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
			},
			navigationControl: true,
			navigationControlOptions: {
				style: google.maps.NavigationControlStyle.DEFAULT
			},
			mapTypeId: google.maps.MapTypeId.ROADMAP
	};		
	
	objMap		= new google.maps.Map(document.getElementById("find-map"), mapOptions);		
	placeMarker(latlng);			
	setInfoWindow(objMarker, latlng, "")
	
	google.maps.event.addListener(objMap, 'click', function(event) {
		setInfoWindow(objMarker, latlng)
	});	
	
	
	if (enableGeo) {
		getGeolocation();
	}
		
}

function setInfoWindow(marker, coords, dealerID) {
	if(dealerID != "") {
		var isHQ = 0;
	}
	else {
		var isHQ = 1;	
	}
	contentString	= "<iframe src=\"" + rootURL + "iframe_gmap_dealerinfo.php?isHQ=" + isHQ + "&dealerID=" + dealerID + "&newlat=" + coords.lat() + "&newlng=" + coords.lng() + "\"  scrolling=\"auto\" style=\"border: 0; width: 280px; height:165px; overflow: auto;\" frameborder=\"0\"></iframe>";		
	
	infowindow	= new google.maps.InfoWindow({
						content: contentString,
						maxWidth: 300,
						position: coords
	});

	infowindow.open(objMap, marker);
}

function placeMarker(coords) {	
	if(placeMarker.arguments.length >= 2 ) {
		dealerID = placeMarker.arguments[1];
	}
	else {
		dealerID = "";	
	}
	
	deleteMarkers();
	
	objMarker = new google.maps.Marker({
		draggable: false,										
		position: coords,
		map: objMap
	});		
													
	
	google.maps.event.addListener(objMarker, 'click', function() {	
		setInfoWindow(objMarker, coords, dealerID);
	});
	
	
	objMap.setCenter(coords);
	//arrMapMarkers.push(objMarker);
}

function moveToDealer(dealerLat, dealerLng, dealerID) {
	var coords = new google.maps.LatLng(dealerLat, dealerLng);
	placeMarker(coords, dealerID);	
	setInfoWindow(objMarker, coords, dealerID)
	
	//Set the hidden values
	document.getElementById("hdnMapLat").value = dealerLat;
	document.getElementById("hdnMapLng").value = dealerLng;
	document.getElementById("hdnMapDealerID").value = dealerID;
}

function clearMarkers() {
	if(arrMapMarkers) {
		for(i in arrMapMarkers) {
			arrMapMarkers[i].setMap(null);	
		}
	}
}

function showMarkers() {
	if(arrMapMarkers) {
		for(i in arrMapMarkers) {
			arrMapMarkers[i].setMap(objMap);	
		}
	}
}

function deleteMarkers() {
	if(arrMapMarkers) {
		for(i in arrMapMarkers) {
			arrMapMarkers[i].setMap(null);	
		}
	}
	arrMapMarkers.length = 0;
}

function getGeolocation() {
	// Try W3C Geolocation method (Preferred)
  if(navigator.geolocation) {
    browserSupportFlag = true;
    navigator.geolocation.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
      contentString = "Location found using W3C standard";
      map.setCenter(initialLocation);
      infowindow.setContent(contentString);
      infowindow.setPosition(initialLocation);
      infowindow.open(map);
    }, function() {
      handleNoGeolocation(browserSupportFlag);
    });
  } else if (google.gears) {
    // Try Google Gears Geolocation
    browserSupportFlag = true;
    var geo = google.gears.factory.create('beta.geolocation');
    geo.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.latitude,position.longitude);
      contentString = "Location found using Google Gears";
      map.setCenter(initialLocation);
      infowindow.setContent(contentString);
      infowindow.setPosition(initialLocation);
      infowindow.open(map);
    }, function() {
      handleNoGeolocation(browserSupportFlag);
    });
  } else {
    // Browser doesn't support Geolocation
    browserSupportFlag = false;
    handleNoGeolocation(browserSupportFlag);
  }	  
}

function handleNoGeolocation(errorFlag) {
  if (errorFlag == true) {
    initialLocation = sLocation;
    contentString = "Error: The Geolocation service failed.";
  } else {
    initialLocation = siberia;
    contentString = "Error: Your browser doesn't support geolocation. Are you in Siberia?";
  }
  map.setCenter(initialLocation);
  infowindow.setContent(contentString);
  infowindow.setPosition(initialLocation);
  infowindow.open(map);
}

var cboState;

function loadStateLocations(stateID) {	
	cboState = stateID;
	$.ajax({
	   type: "POST",
	   url: rootURL + "ajax/getStateLocations.php",
	   data: "loadDealer=1&cboState=" + stateID + "&cboLocation=<?php echo $cboLocation; ?>",
	   success: function(msg){
		 //alert( "Data Saved: " + msg );
		 $("#divStateLocations").html(msg);			     
	   }
	 });
	
	//deleteMarkers();
}

function loadDealers(locationID) {	
	$.ajax({
	   type: "POST",
	   url: rootURL + "ajax/getDealers.php",
	   data: "cboState=" + cboState  + "&cboLocation=" + locationID,
	   success: function(msg){
		 //alert( "Data Saved: " + msg );
		 $("#find-map-outlets").html(msg);	
		 $('#find-map-outlets').jScrollPane();
	   }
	 });
	
	//deleteMarkers();
}

function printDealerMap() {
	var strParam	= "mapLat=" + document.getElementById("hdnMapLat").value +
						"&mapLng=" + document.getElementById("hdnMapLng").value +
						"&dealerID=" + document.getElementById("hdnMapDealerID").value;
	window.open(rootURL + 'print_dealer_map.php?' + strParam);	
	//window.open('findastore/print.php?' + strParam);	
}

$(function() {
	// this initialises the demo scollpanes on the page.
	$('#find-map-outlets').jScrollPane();

	reinitialiseScrollPane = function()
	{
		$('#find-map-outlets').jScrollPane();
	}		
});