var map=null;
var mgr=null;
var directions=null;
var directionsPanel=null;
var bounds = new GLatLngBounds();

function createMarker(ind) {
  var markerdata = markers[ind];
  var markericon = new GIcon();
  var iconcolor = 'green';
  	if ( markerdata.in_agenda ) {
  		iconcolor = 'orange';
	}
  	if ( markerdata.partycount > 1 && markerdata.partycount < 6 ) {
		markericon.image = '/images/icon_'+iconcolor+'2_'+markerdata.partycount+'.png';
	} else {
		markericon.image = '/images/icon_'+iconcolor+'2.png';
	}
	markericon.iconSize = new GSize(28, 30);
	markericon.iconAnchor = new GPoint(14,26);
	markericon.infoWindowAnchor = new GPoint(14, 0);
  var moptions = { icon: markericon};
  var marker = new GMarker(new GLatLng(markerdata.x, markerdata.y), moptions);
	GEvent.addListener(marker, "click", function() {
		var tabs = new Array();
		tabs[0] = new GInfoWindowTab(lng.tab.parties,markerdata.title);
		tabs[1] = new GInfoWindowTab(lng.tab.route, "&nbsp;<br /><form action='http://maps.google.com/maps?f=d&source=s_d&hl=nl&geocode=&mra=ls&ie=UTF8' method='get' target='_blank' onsubmit='showDirection(this);return false;'>"+lng.tab.startpoint+": <input type='text' name='saddr' style='border:1px solid #000;width:120px;' /><input type='hidden' name='daddr' value='"+markerdata.x+","+markerdata.y+"' /><input type='submit' value='"+lng.tab.route+"' /></form>");
		marker.openInfoWindowTabsHtml(tabs);
	});
	map.addOverlay(marker);
	bounds.extend(marker.getPoint());
  return marker;
}

function showDirection(frm){
	directions.load("from: "+frm.saddr.value+" to: "+frm.daddr.value,{getPolyline:true});
	GEvent.addListener(directions,'load',handleDirectionPoly); 
}

function handleDirectionPoly() {
 var points = [];
 var poly = directions.getPolyline();
 for (var i = 0; i < poly.getVertexCount(); i++) {
  points[i] = poly.getVertex(i);
 }
 var mypoly = new GPolyline(points, "#219bad", 2, 1);
 map.addOverlay(mypoly);
} 

function loadPartyMarkers2(args){
	showLoading();
	if (!args.type){return false;}
	switch (args.type) {
		case 'party':
			purl = '/markerloader/party/'+args.par_id+'.html';
			break;
		case 'user':
			purl = '/markerloader/user/'+args.user_id+'.html';
			break;
	}
	
	var request = new Request.JSON({
		url: purl,
		onComplete: function(jsonObj) {
			map.clearOverlays();
			bounds = new GLatLngBounds();
			markers = jsonObj.markers;

				var marker = [];
				for ( var i=0;i<markers.length;i++ ) {
					marker.push(createMarker(i));
				}
				
				if (mgr) {
					mgr.clearMarkers();
					mgr.addMarkers(marker, 0);
					mgr.refresh();

					switch (args.type) {
						case 'party':
						map.setCenter(new GLatLng(markers[0].x,markers[0].y), 12);
						break;
					}

				}

				hideLoading();
		}
	}).send();
}

function loadPartyMarkers(start,end,genre){
	showLoading();
	var request = new Request.JSON({
		url: '/markerloader/home/'+start+'/'+end+'/'+genre+'.html',
		onComplete: function(jsonObj) {
			markers = jsonObj.markers;

				var marker = [];
				for ( var i=0;i<markers.length;i++ ) {
					marker.push(createMarker(i));
				}
				if (usr_map_def_centertopoints=='Y') {
					map.setZoom(map.getBoundsZoomLevel(bounds));
					map.setCenter(bounds.getCenter());
				}
				if (mgr) {
					mgr.clearMarkers();
					mgr.addMarkers(marker, 0);
					mgr.refresh();
				}
				
				hideLoading();
		}
	}).send();
}

function setDefaultCoordsZoom(){
	var curcenter = map.getCenter()+"";
	var coords_split = curcenter.replace(')','').replace('(','').replace(' ','').split(',');
	$('usr_map_def_x').value = coords_split[0];
	$('usr_map_def_y').value = coords_split[1];
	$('usr_map_def_zoom').value = map.getZoom();
}

function load() {
if (!map_type) {map_type='';}
	showLoading();
  if (GBrowserIsCompatible()) {
	  if ( map_type == 'small' ) {
		map = new GMap2($("map_small"));
		map.clearOverlays();
		bounds = new GLatLngBounds();
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.enableScrollWheelZoom();
		map.setCenter(new GLatLng(52.295042,5.548096), 7);
		mgr = new MarkerManager(map);
		loadPartyMarkers2(map_args);
	  } else if ( map_type == 'user' ) {
		map = new GMap2($("map_small"));
		map.clearOverlays();
		bounds = new GLatLngBounds();
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.enableScrollWheelZoom();
		map.setCenter(new GLatLng(52.295042,5.548096), 7);
		mgr = new MarkerManager(map);
		loadPartyMarkers2(map_args);
	  } else if ( map_type == 'defaultloc' ) {
		map = new GMap2($("map_form"));
		map.clearOverlays();
		map.addControl(new GSmallMapControl());
		map.enableScrollWheelZoom();
		if ( usr_map_def_x=='NULL' || usr_map_def_y=='NULL' || usr_map_def_zoom=='NULL' ) {
		map.setCenter(new GLatLng(52.295042,5.548096), 7);
		} else {
		map.setCenter(new GLatLng(usr_map_def_x,usr_map_def_y), usr_map_def_zoom);
		}
		GEvent.addListener(map, 'moveend', setDefaultCoordsZoom);
		hideLoading();
	  } else {
		map = new GMap2($("map"));
		map.clearOverlays();
		bounds = new GLatLngBounds();
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.enableScrollWheelZoom();
		if ( usr_map_def_x=='NULL' || usr_map_def_y=='NULL' || usr_map_def_zoom=='NULL' ) {
		map.setCenter(new GLatLng(52.295042,5.548096), 7);
		} else {
		map.setCenter(new GLatLng(usr_map_def_x,usr_map_def_y), usr_map_def_zoom);
		}
		mgr = new MarkerManager(map);
	  }
	directionsPanel = $("directions");
	directions = new GDirections(map, directionsPanel);
  }
}