var map;
var mgr;
var satMap;
var satMgr;
var panoBlock;
var myPano;
var panoClient;
var origPoint;
var currentPoint;
var countryMarkersXML;
var eventMarkersXML;
var eventmarkers;
//var panoClient;
//var panoDiv;
//var panoBkgr;
//var viewchoice;
var scheduleDiv;
var scheduleText;
var pagetype;
var myXML = "dataMarkers.php";		
function initialize() {
	if(pagetype=='editor'){
	//Use for editor calls
	}
	G_PHYSICAL_MAP.getMinimumResolution = function () { return 4 };
    G_NORMAL_MAP.getMinimumResolution = function () { return 4 };
    G_SATELLITE_MAP.getMinimumResolution = function () { return 4 };
    G_HYBRID_MAP.getMinimumResolution = function () { return 4 };

    G_PHYSICAL_MAP.getMaximumResolution = function () { return 16 };
    G_NORMAL_MAP.getMaximumResolution = function () { return 16 };
    G_SATELLITE_MAP.getMaximumResolution = function () { return 16 };
    G_HYBRID_MAP.getMaximumResolution = function () { return 16 }; 
	
	//panoDiv = document.getElementById("pano");
	scheduleDiv  = document.getElementById("schedule");
	//panoBkgr = panoDiv.style.backgroundImage;
	origPoint = new GLatLng(58.481851,5.245892);
	viewchoice=1;
	//panoClient = new GStreetviewClient();
	newmap(origPoint, 4);
	markersData();
	var mapnav = document.getElementById("mapOut");
	mapnav.addEventListener("mousedown", mapReset, true);
	addScheduleText();
	//var maptoggle = document.getElementById("viewChoice");
	//maptoggle.addEventListener("mousedown", mapToggler, true);
}
function mapReset(){
	window.setTimeout(function() {
      map.panTo(origPoint);
    }, 10);
	map.setZoom(4);
	satMap = null;
	document.getElementById("message").innerHTML = " ";

	//myPano = null;
	//panoDiv.style.backgroundImage = panoBkgr;
	//}
}
function mapToggler() {
	/*if(viewchoice==0){
		viewchoice=1;
	}else{
		viewchoice=0;
		
	}
	
	//panoClient.getNearestPanorama(currentPoint, showPanoData);*/
}
function newmap(point, scale){
	markers = new Array();
	
	map = new GMap2(document.getElementById("mapCanvas"));
	ui = map.getDefaultUI();
	ui.zoom.doubleclick = false;
	ui.controls.maptypecontrol = false;
	ui.controls.scalecontrol = false;
	map.setUI(ui)	
	map.setCenter(origPoint, scale);
	var mgrOptions = { borderPadding: 50, maxZoom: 15, trackMarkers: true };
	mgr = new MarkerManager(map, mgrOptions);
}
function markersData(){
	GDownloadUrl(myXML, function(data, responseCode) {
		var xml = GXml.parse(data);
		countryMarkersXML = xml.documentElement.getElementsByTagName("country");
		eventMarkersXML = xml.documentElement.getElementsByTagName("marker");
		postXMLinit();
	});	
}
function postXMLinit(){
	addMarkers();
}
function addMarkers(){
	var blueIcon = new GIcon(G_DEFAULT_ICON);
	blueIcon.image = "http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png";
	blueIcon.iconSize = new GSize(30, 30);
	blueIcon.shadowSize = new GSize(52, 30);
	blueIcon.iconAnchor = new GPoint(72, 40);


	var countrymarkers = new Array();
	for (var i = 0; i < countryMarkersXML.length; i++) {
		var point = new GLatLng(parseFloat(countryMarkersXML[i].getAttribute("lat")), parseFloat(countryMarkersXML[i].getAttribute("lng")));
    	countrymarkers[i] = new GMarker(point, {title: countryMarkersXML[i].getAttribute("location")});
		countrymarkers[i].location = countryMarkersXML[i].getAttribute("location");
		countrymarkers[i].description = countryMarkersXML[i].getAttribute("description");
		countrymarkers[i].point = point;
		
		GEvent.addListener(countrymarkers[i], "click", function() {	
			currentPoint = this.point;
			markerZoom(6);
			document.getElementById("message").innerHTML = "<h4>"+this.location+"</h4>";
 		});
  	};
	mgr.addMarkers(countrymarkers, 0, 5);
	scheduleText = "<table border='0' cellpadding='0' cellspacing='0'><tr><th>Location</th><th>Days</th><th>Dates</th></tr>";
 	eventmarkers= new Array();
	for (var i = 0; i < eventMarkersXML.length; i++) {
		var point = new GLatLng(parseFloat(eventMarkersXML[i].getAttribute("lat")), parseFloat(eventMarkersXML[i].getAttribute("lng")));
    	eventmarkers[i] = new GMarker(point, {title: eventMarkersXML[i].getAttribute("location")});
		eventmarkers[i].location = eventMarkersXML[i].getAttribute("location");
		eventmarkers[i].dates = eventMarkersXML[i].getAttribute("dates");
	eventmarkers[i].days = eventMarkersXML[i].getAttribute("days");
		eventmarkers[i].address = eventMarkersXML[i].getAttribute("address");
		eventmarkers[i].point = point;	
		scheduleText += "<tr ";
		if(i%2=='1'){
		scheduleText += "class='alt' ";
		}
		scheduleText += "onclick='jumpToPoint("+parseFloat(eventMarkersXML[i].getAttribute("lat"))+", "+parseFloat(eventMarkersXML[i].getAttribute("lng"))+", "+i+");'><td width='150'>"+eventMarkersXML[i].getAttribute("location")+"</td><td width='75'>"+eventMarkersXML[i].getAttribute("days")+"</td><td width='100'>"+eventMarkersXML[i].getAttribute("dates")+"</td></tr>";
		GEvent.addListener(eventmarkers[i], "click", function() {		
			//viewchoice=1;
			document.getElementById("message").innerHTML = "<h4>"+this.location+"</h4>\r<p>"+this.address+"</p>";
			//panoDiv.style.backgroundImage = "none";
			currentPoint = this.point;
			//panoClient.getNearestPanorama(this.point, showPanoData);
			markerZoom(15);
			
 		});
  	};
	scheduleText += "</table>";
	scheduleDiv.innerHTML = scheduleText;
	mgr.addMarkers(eventmarkers, 6, 15);
	
	
	mgr.refresh();
}
function jumpToPoint(myPointLat, myPointLng,myMarker) {
var point = new GLatLng(myPointLat, myPointLng);
currentPoint= point; 
markerZoom(15);
document.getElementById("message").innerHTML = "<h4>"+eventmarkers[myMarker].location+"</h4>\r<p>"+eventmarkers[myMarker].address+"</p>";

}
function markerZoom(zoomLvl){
	window.setTimeout(function() {
      map.panTo(currentPoint);
    }, 10);
	map.setZoom(zoomLvl);
}
function showPanoData(panoData) {
	/*if(panoData.code==200){	
		if(viewchoice==0){
			document.getElementById("viewChoice").innerHTML = "Switch to map view";
			panoramaOptions = { latlng:panoData.location.latlng };
			myPano = new GStreetviewPanorama(document.getElementById("pano"), panoramaOptions);
			GEvent.addListener(myPano, "error", handleNoFlash);
			
		} else {
			document.getElementById("viewChoice").innerHTML = "Switch to Streetview";
			satMap = new GMap2(document.getElementById("pano")); 
			satMap.setMapType(G_NORMAL_MAP);
			satMap.setCenter(currentPoint, 16);
			satMap.addControl(new GSmallZoomControl3D());
		} 
	} else {
		if(viewchoice==0){
			document.getElementById("viewChoice").innerHTML = "Switch to map view";
			satMap = new GMap2(document.getElementById("pano")); 
			satMap.setMapType(G_SATELLITE_MAP);
			satMap.setCenter(currentPoint, 16);
			satMap.addControl(new GSmallZoomControl3D());
		} else{
			document.getElementById("viewChoice").innerHTML = "Switch to Satellite view";
			satMap = new GMap2(document.getElementById("pano")); 
			satMap.setMapType(G_NORMAL_MAP);
			satMap.setCenter(currentPoint, 16);
			satMap.addControl(new GSmallZoomControl3D());
		}
	}*/
	
	
	
}

