/*global $, document */var g_map;
var oContextMenu;
var gmap_id = 0;
var gmap_data_id = 0;
var gmap_new_data_id = 0;
var gmap_data_title = '';
var gmap_data_zoom = 0;
var time_epoch = 0;


var baseIcon;
var letter;
var letteredIcon;
var point;
var marker;

		
function ws_maps_pop() {
	create_popup(815, 0, 'Choose a location', function() {
		
		$.post('/webstore/ajax/map_pop', {}, 
			function(data) {
				$('#tbn_screen_popup_content').html(data.sContent);
				
				//create the map
				gmap_data_zoom = parseInt(15);
			
				if (GBrowserIsCompatible()) {
					g_map = new GMap2(document.getElementById("ws_create_map_container"));
					g_map.setMapType(G_HYBRID_MAP); 
					g_map.addControl(new GLargeMapControl());
					g_map.addControl(new GMapTypeControl());
					g_map.enableContinuousZoom();
					g_map.enableScrollWheelZoom();
					g_map.enableGoogleBar();
					
					g_map.setCenter(new GLatLng(51.50190410761811, -0.14575190842151642), 5);		
					
					baseIcon = new GIcon();
					baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
					baseIcon.iconSize = new GSize(20, 34);
					baseIcon.shadowSize = new GSize(37, 34);
					baseIcon.iconAnchor = new GPoint(9, 34);
					baseIcon.infoWindowAnchor = new GPoint(9, 2);
					baseIcon.infoShadowAnchor = new GPoint(18, 25);
							
					letteredIcon = new GIcon(baseIcon);		
					
					oContextMenu = document.createElement('div');
					$(oContextMenu).css({ border : '1px solid #A0A0A0', backgroundColor : '#CCCCCC', width : '130px', display : 'none' });
					$(oContextMenu).html($('#ws_create_map_context_menu').html());
					$(oContextMenu).children('div').css({ padding: '3px', marginTop : '1px', backgroundColor : '#EEEEEE' }).hover(function() {
						$(this).css({ backgroundColor : '#DDDDDD'});
					}, function() {
						$(this).css({ backgroundColor : '#EEEEEE'});
					});
					
					g_map.getContainer().appendChild(oContextMenu);
					
					
					// === listen for singlerightclick ===
					GEvent.addListener(g_map,"singlerightclick",function(pixel,tile) {
						// store the "pixel" info in case we need it later
						// adjust the context menu location if near an egde
						// create a GControlPosition
						// apply it to the context menu, and make the context menu visible
						clickedPixel = pixel;
						var x=pixel.x;
						var y=pixel.y;
						if (x > g_map.getSize().width - 120) { x = g_map.getSize().width - 120 }
						if (y > g_map.getSize().height - 100) { y = g_map.getSize().height - 100 }
						var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(x,y));  
						pos.apply(oContextMenu);
						$(oContextMenu).show();
					});
			
					
					GEvent.addListener(g_map, "click", function() {
						 $(oContextMenu).hide();
					});
					
					//get_gmap_markers();
					
					
					/*$('.egm_marker_icon').each(
						function() {
							gmap_update_marker(this);
						}
					);*/
				}
			}, 
			'json'
		);
		
	});
}


var change_width = function ()
{
	var width = $("#map_width").val();
	width = parseInt(width);
	if ( width < 300 )
	{
		$("#map_width").val(300);
		width = 300;
	}	
	$("#egm_map_map").width( width );
	
	var point = new GLatLng( parseFloat($('#egm_data_lat').html()), parseFloat($('#egm_data_long').html()) );
	g_map.setCenter(point);
	return true;
}

var change_height = function ()
{
	var height = $("#map_height").val();
	height = parseInt(height);
	if ( height < 300 )
	{
		$("#map_height").val(300);
		height = 300;
	}
	$("#egm_map_map").height( height );
	
	//var point = new GPoint( parseFloat($('#egm_data_lat').html()), parseFloat($('#egm_data_long').html()) );
	//g_map.setCenter(point);
	return true;
}

var get_gmap_lat_long = function(oObj) {
	var lat_long = $.trim(g_map.getCenter().toString());
	lat_long = lat_long.substr(1, lat_long.length - 2);
	
	var aLatLong = lat_long.split(',');
	$(oObj).parent().children('div:eq(1)').children('.egm_marker_lat').text($.trim(aLatLong[0]));
	$(oObj).parent().children('div:eq(2)').children('.egm_marker_long').text($.trim(aLatLong[1]));
	
};


var set_gmap_zoom = function(oObj) {
	g_map.setZoom(parseInt($(oObj).val()));
	
};


var gmap_zoom_in = function() {
	var point = g_map.fromContainerPixelToLatLng(clickedPixel)
    g_map.zoomIn(point,true);
	$(oContextMenu).hide();
};


var gmap_zoom_out = function() {
	var point = g_map.fromContainerPixelToLatLng(clickedPixel)
    g_map.setCenter(point,g_map.getZoom()-1);
	$(oContextMenu).hide();
};


var gmap_centre_map = function() {
	var point = g_map.fromContainerPixelToLatLng(clickedPixel)
   	g_map.setCenter(point);
	$(oContextMenu).hide();

};



var gmap_default_location = function() {
	g_map.clearOverlays();
	
	var sTitle = $('#ws_create_map_title').val();
	var sDesc = $('#ws_create_map_desc').val().replace(/([^>]?)\n/g, '$1<br />\n');
	
	var lat_long = g_map.fromContainerPixelToLatLng(clickedPixel).toString();
	
	lat_long = lat_long.substr(1, lat_long.length - 2);
	
	var aLatLong = lat_long.split(',');
	
	$('#ws_create_map_lat').text($.trim(aLatLong[0])).data('lat', $.trim(aLatLong[0]));
	$('#ws_create_map_lon').text($.trim(aLatLong[1])).data('long', $.trim(aLatLong[1]));
	
	$(oContextMenu).hide();
	
	letter = 'A';
	letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
	
	var sLinks = '<div class="gs-directions-to-from"><div class="gs-label">Get directions:</div><div class="gs-secondary-link"><a href="http://www.google.com/maps?source=uds&amp;daddr='+$.trim(aLatLong[0])+'%2C'+$.trim(aLatLong[1])+'&amp;iwstate1=dir%3Ato" class="gs-secondary-link" target="_blank">To here</a></div><div class="gs-spacer">-</div><div class="gs-secondary-link"><a href="http://www.google.com/maps?source=uds&amp;saddr='+$.trim(aLatLong[0])+'%2C'+$.trim(aLatLong[1])+'&amp;iwstate1=dir%3Afrom" class="gs-secondary-link" target="_blank">From here</a></div></div>';
	
	point = new GLatLng($.trim(aLatLong[0]), $.trim(aLatLong[1])); 
	marker = createMarker(point, 'g_map_marker', '<strong>' + sTitle + '</strong>' + '<br />' + sDesc + '<br />' + sLinks, letteredIcon);
	g_map.addOverlay(marker);
}



var gmap_side_bar_html = "";
var gmap_gmarkers = [];
var gmap_htmls = [];
var gmap_i = 0;

//google maps
function createMarker(point, name, html, letteredIcon) {
  	var marker = new GMarker(point, { icon:letteredIcon });
    GEvent.addListener(marker, "click", function() {
    	marker.openInfoWindowHtml('<div align="left">' + html + '</div>');
   	});
    marker.icon = 'b';
    // save the info we need to use later for the side_bar
    gmap_gmarkers[gmap_i] = marker;
    gmap_htmls[gmap_i] = html;
    // add a line to the side_bar html
    gmap_side_bar_html += '<a href="javascript:myclick(' + gmap_i + ')">' + name + '</a><br>';
    gmap_i++;
    return marker;
}




var gmap_remove_marker = function(oObj) {
	
	var oObjCont = $(oObj).parent().parent().parent();
	
	g_map.removeOverlay($(oObjCont).data('marker'));
	
	$(oObjCont).remove();
};



var set_marker_header = function(oObj) {
	var oParentObj = $(oObj).parent().parent().parent().parent();	
	var sMarkerHeader = 'Marker: ' + $(oParentObj).find('.egm_marker_icon').val() + ' - ' + $(oParentObj).find('.egm_marker_header_text').val();	
	$(oParentObj).children('.egm_marker_header').children('div:eq(1)').text(sMarkerHeader);
};

var gmap_update_marker = function(oObj) {
	
	var oParentObj = $(oObj).parent().parent().parent().parent();
	
	var sLetterIcon = $(oParentObj).find('.egm_marker_icon').val();
	
	var sMarkerHeaderText = $(oParentObj).find('.egm_marker_header_text').val();
	
	var sMarkerText = $(oParentObj).find('.egm_marker_text').val().replace(/([^>]?)\n/g, '$1<br />\n');
	
	var fLat = parseFloat($.trim($(oParentObj).find('.egm_marker_lat').text()));
	var fLong = parseFloat($.trim($(oParentObj).find('.egm_marker_long').text()));
		
	if ($(oParentObj).data('marker')) {
		g_map.removeOverlay($(oParentObj).data('marker'));
	}
	
	
	letteredIcon.image = "http://www.google.com/mapfiles/marker" + sLetterIcon + ".png";
		
	point = new GLatLng(fLat, fLong); 
	marker = createMarker(point, 'g_map' + $('.egm_markers').length, sMarkerHeaderText + '<br />' + sMarkerText, letteredIcon);
	g_map.addOverlay(marker);
	
	$(oParentObj).data('marker', marker);
	
	
};

function setup_map(map_latt, map_long, sTitle, sDesc) {
	if (GBrowserIsCompatible()) {
		g_map = new GMap2(document.getElementById("link_map"));
		//g_map.setMapType(G_HYBRID_MAP); 
		//g_map.addControl(new GLargeMapControl());
		//g_map.addControl(new GMapTypeControl());
		//g_map.enableContinuousZoom();
		//g_map.enableScrollWheelZoom();
		//g_map.enableGoogleBar();
		
		g_map.setCenter(new GLatLng(map_latt, map_long), 10);		
		
		baseIcon = new GIcon();
		baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
		baseIcon.iconSize = new GSize(20, 34);
		baseIcon.shadowSize = new GSize(37, 34);
		baseIcon.iconAnchor = new GPoint(9, 34);
		baseIcon.infoWindowAnchor = new GPoint(9, 2);
		baseIcon.infoShadowAnchor = new GPoint(18, 25);
				
		letteredIcon = new GIcon(baseIcon);
		
		g_map.clearOverlays();
		
		letter = 'A';
		letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
		
		var sLinks = '<div class="gs-directions-to-from"><div class="gs-label">Get directions:</div><div class="gs-secondary-link"><a href="http://www.google.com/maps?source=uds&amp;daddr='+map_latt+'%2C'+map_long+'&amp;iwstate1=dir%3Ato" class="gs-secondary-link" target="_blank">To here</a></div><div class="gs-spacer">-</div><div class="gs-secondary-link"><a href="http://www.google.com/maps?source=uds&amp;saddr='+map_latt+'%2C'+map_long+'&amp;iwstate1=dir%3Afrom" class="gs-secondary-link" target="_blank">From here</a></div></div>';
		
		point = new GLatLng(map_latt, map_long); 
		marker = createMarker(point, 'g_map_marker', '<strong>' + sTitle + '</strong>' + '<br />' + sDesc + '<br />' + sLinks, letteredIcon);
		g_map.addOverlay(marker);
	}
}
