/*
-----------------------------------------------------------------------------------------
mapmaker.jquery.js
-----------------------------------------------------------------------------------------
Google Map Maker script v.4
(c) 2012 Richard Stephenson http://www.rpsdigital.com
http://mapmaker.donkeymagic.co.uk/

RPS
Created: 11 April 2010

--------------
NOTES
--------------


--------------
FILE CONTENTS
--------------
## PANELS


-----------------------------------------------------------------------------------------
*/
if(typeof ($.RPS) == "undefined") {
	$.RPS = Object;
}

/*  ## ANIMATE IMAGES  --------------------------------------------------------------*/

$.RPS.mapMaker = {

	//not sure what these are for
	newmap: null,
	logged_in: false,
	member_id: null,

	map: null,
	
	//initial map properties
	map_id: null,
	map_lat: 53.5664141528,
	map_lng: -2.57080078125,
	map_zoom: 5,
	map_type: 0,
	map_name: null,
	
	icon0: null,
	newPoints: [],
	
	savedMap: null,
	savedPoints: [],
	
	html: null,
	overlay: null,
	point: null,
	
	editMode: false, //are we editing a marker
	editNum: null, //which marker are we editing
	
	//Holders for original point data while editing
	originalLat: null,
	originalLng: null,
	originalName: null,
	originalContents: null,
	
	tips: true,
	
	//Initial setup function
	init: function() {
		var mm = $.RPS.mapMaker;
		mm.setupMap();
		mm.addTips();
		mm.addSavedPoints();
		mm.handleForm();
		mm.cancelEdit();
		mm.save();
		mm.onMapChange();
		mm.onUnload();
		mm.shareMap();
	},
	
	setupMap: function() {
		var mm = $.RPS.mapMaker;
		
		//create map and add controls
		mm.map = new GMap2(document.getElementById("map"),{draggableCursor:'arrow',draggingCursor:'arrow'});
		mm.map.setCenter(new GLatLng(mm.map_lat,mm.map_lng),mm.map_zoom);
		
		mm.map.addControl(new GLargeMapControl3D());
		mm.map.addControl(new GMapTypeControl());
		
		mm.map.enableScrollWheelZoom();
		mm.map.enableDoubleClickZoom();
		
		//mm.map.addMapType(G_PHYSICAL_MAP);  //add terrain option
		//set map type 
		switch(mm.map_type) {
			case 0:
				mm.map.setMapType(G_NORMAL_MAP);
				break;
			case 1:
				mm.map.setMapType(G_SATELLITE_MAP);
				break;
			default:
				mm.map.setMapType(G_SATELLITE_MAP);
		}
		
		//create edit icon object
		mm.editIcon = "/images/stat/chart-FF9900.png";
		mm.defaultIcon = "http://www.google.com/mapfiles/marker.png";
		mm.shadow = "http://www.google.com/mapfiles/shadow50.png";
		
		//create default icon object
		mm.icon0 = new GIcon();
		mm.icon0.image = mm.defaultIcon;
		mm.icon0.shadow = mm.shadow;
		mm.icon0.iconSize = new GSize(21,34);
		mm.icon0.shadowSize = new GSize(40,37);
		mm.icon0.iconAnchor = new GPoint(10,34);
		mm.icon0.infoWindowAnchor = new GPoint(10,2);
		mm.icon0.infoShadowAnchor = new GPoint(16,40);
		
		//create map event handlers
		GEvent.bind(mm.map, "click", this, mm.mapClick);
		
		//if previously saved map - update form elements
		$('#save').attr('disabled','disabled');
		if(mm.savedMap == true) {
			$('#map_id').val(mm.map_id);
			$('#map_name').val(mm.map_name);	
		} else {
			$('#map_name').val('');	
		}
		
	},
	
	addTips: function() {
		var mm = $.RPS.mapMaker;
		if(mm.tips) {
			$('body').addClass('getting-started');
			$('#storage h3').text('Getting started');
			$('#storage').append('<div id="instructions"><p>Navigate the map to find a place where you want to add a marker.</p><p>Click on a location on the map to set latitude and longitude for your marker.</p><p><strong>You need to <a href="/register/">register</a> and <a href="/signin/">sign in</a> to be able to save your maps</strong>.</p></div>').find('#instructions');
		} else {
			$('#storage').append('<div id="instructions"><p>No markers</p></div>');
		}
	},
	
	mapClick: function (overlay,point) {
		var mm = $.RPS.mapMaker;
		if (overlay != null) return;
		if(point) {
			if(!mm.editMode) {
				$('#lng').val(point.x);
				$('#lat').val(point.y);		
			} else {
				//mm.moveMarker(mm.editNum);
			}
		}
	},
	
	mapChange: function() {
		var mm = $.RPS.mapMaker;
		$('#save-confirmation').remove();
		if(!mm.editMode && mm.logged_in) {
			mm.savedMap = false;
			$('#save').removeAttr("disabled");
		}
	},
	
	onUnload: function() {
		var mm = $.RPS.mapMaker;
		window.onbeforeunload = function() { 
			if(mm.savedMap == false && mm.logged_in == true) {
				return 'You have unsaved changes';
			}
		}
	},
	
	onMapChange: function() {
		var mm = $.RPS.mapMaker;
		GEvent.addListener(mm.map, "moveend", function() {
			mm.mapChange();
		});
		GEvent.addListener(mm.map, "maptypechanged", function() {
			mm.mapChange();
		});
		$('#map_name').keydown(function() {
			mm.mapChange();		
		});
	},
	
	handleForm: function() {
		var mm = $.RPS.mapMaker;
		$('#markercontrol').submit(function() {
			//get form values
			var lat = $('#lat').val();
			var lng = $('#lng').val();
			var name = $('#name').val();
			var contents = $('#contents').val();
			
			//If not in editMode
			if(!mm.editMode) {
				if(lat != "" && lng != "" && name != "" && contents != "") {
					mm.clearAddMarkerFormValidation();
					if(mm.tips) {
						$('#storage h3').text('Markers');
						$('#instructions').remove();
						$('body').removeClass('getting-started');
					} else {
						$('#instructions').remove();
					}
					mm.mapChange();
					return mm.addPoint(lat,lng,name,contents);
				} else {
					//alert user that the must provide name and contents
					mm.validateAddMarkerForm();
					return false;
				}
			} else { //If in editMode
				if(lat != "" && lng != "" && name != "" && contents != "") {
					var num = mm.editNum;
	
					//Update stored data in newPoints array
					mm.newPoints[num][0] = lat;
					mm.newPoints[num][1] = lng;
					mm.newPoints[num][2] = name;
					mm.newPoints[num][3] = contents;
					
					mm.map.removeOverlay(mm.newPoints[num][4]);
					
					//Create new marker with new data
					var point = new GPoint(mm.newPoints[num][1],mm.newPoints[num][0]);
					var marker = mm.createMarker(point,mm.icon0,mm.newPoints[num][3]);
					mm.map.addOverlay(marker);
					//Store new marker in array too
					mm.newPoints[num][4] = marker;
						
					//Exit editing mode
					mm.newPoints[mm.editNum][4].setImage(mm.defaultIcon);
					mm.editMode = false;
					mm.editNum = '';
					$('#cancel').remove();
					
					mm.moveMarker(num);	
					$('#add-marker').removeClass('editmode');
					$('#addmarkerbut').attr('value','Add Marker');
					
					$('#add-marker h3').text('Add Marker');
					$('#add-marker div.position p').text('Click on the map to set position');
					$('#storagelist li').removeClass('edit');
				
					$('#lat,#lng,#name,#contents').val('');
					mm.updateList('edit',num);
					mm.clearAddMarkerFormValidation();
					if(mm.tips) {
						$('#storage h3').text('Markers');
						$('#instructions').remove();
						$('body').removeClass('getting-started');
					} else {
						$('#instructions').remove();
					}
					mm.mapChange();
					return false;
				} else {
					//alert user that the must provide name and contents
					mm.validateAddMarkerForm();
					return false;
				}
			}
			return false;
		});	
	
	},
	
	validateAddMarkerForm: function() {
		$('#lat, #lng, #name, #contents').each(function() {
			var val = $(this).val();
			if (val == '') {
				$(this).parent().addClass('error')
			} else {
				$(this).parent().removeClass('error')
			}
		});
	},
	
	clearAddMarkerFormValidation: function() {
		$('#add-marker .error').removeClass('error');
	},
	
	updateList: function(type,ref) {
		var mm = $.RPS.mapMaker;
		$('#instructions').remove();
		if(type == 'remove') {
			$('#storagelist li:nth-child(' + (ref+1) +')').addClass('remove').fadeOut('slow',function() {
				$(this).remove()
				$('#storagelist li').remove();
				rebuildList();
			});
		}
		if(type == 'add') {
			$('#storagelist li').remove();
			rebuildList();
			$('#storagelist li:last-child').hide().addClass('add').fadeIn('slow',function() {$(this).removeClass('add')});
		}
		if(type == 'edit') {
			$('#storagelist li').remove();
			rebuildList();
			//$('#storagelist li:last-child').hide().addClass('add').fadeIn('slow',function() {$(this).removeClass('add')});
		}
		function rebuildList() {
			$(mm.newPoints).each(function(i) {
				$('#storagelist').append('<li><span class="marker"><span class="num">' + (i + 1) + '. </span><a href="#" onclick="javascript:$.RPS.mapMaker.viewMarker(' + i + ',this);return false;" class="viewlink">' + mm.newPoints[i][2] + '</a><a href="#" onclick="javascript:$.RPS.mapMaker.removeMarker(' + i + ');return false;" class="removelink" title="Remove marker">Remove</a><a href="#" onclick="javascript:$.RPS.mapMaker.editMarker(' + i + ',this);return false;" class="editlink" title="Edit Marker">Edit</a></span></li>');
			});
			if(mm.newPoints.length == 0) {
				$('#storage').append('<div id="instructions"><p>No markers</p></div>');	
			}
		}
		
	},

	addSavedPoints: function() {
		var mm = $.RPS.mapMaker;
		for(i=0;i<mm.savedPoints.length;i++) {
			mm.addPoint(mm.savedPoints[i][0],mm.savedPoints[i][1],mm.savedPoints[i][2],mm.savedPoints[i][3]);
		}
	},
	
	addPoint: function(lat,lng,name,contents) {
		var mm = $.RPS.mapMaker;
		var point = new GPoint(lng,lat);
		//Add marker to map
		var marker = mm.createMarker(point,mm.icon0,contents);
		mm.map.addOverlay(marker);
		//Store new point in array
		var newPoint = [lat,lng,name,contents,marker];
		mm.newPoints[mm.newPoints.length] = newPoint;
		//update list and tempstorage
		mm.updateList('add',mm.newPoints.length);
		//Empty form ready for next point
		$('#lat,#lng,#name,#contents').val('');
		return false;
	},
	
	createMarker: function(point,icon,contents) {
		var mm = $.RPS.mapMaker;
		var html = '<div id="popup">' + contents + '<\/div>';
		var marker = new GMarker(point,{icon: icon, draggable: true});
		marker.disableDragging();
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml(html);
		});
		GEvent.addListener(marker, "dragstart", function() {
			marker.closeInfoWindow();
		});
		GEvent.addListener(marker, "dragend", function() {
			var newLatLng = this.getLatLng()
			$('#lat').val(newLatLng.lat());
			$('#lng').val(newLatLng.lng());
			mm.moveMarker(mm.editNum);
		});
		return marker;
	},
	
	viewMarker: function(num) {
		var mm = $.RPS.mapMaker;
		if(!mm.editMode) {
			mm.map.setCenter(new GLatLng(mm.newPoints[num][0],mm.newPoints[num][1]),mm.map.getZoom());
			var html = '<div id="popup">' + mm.newPoints[num][3] + '<\/div>';
			mm.newPoints[num][4].openInfoWindowHtml(html);
		}
	},
	
	moveMarker: function(num,cancel) {
		var mm = $.RPS.mapMaker;
		if(!cancel) {
			mm.newPoints[num][0] = $('#lat').val();
			mm.newPoints[num][1] = $('#lng').val();
		} else {
			mm.newPoints[num][0] = mm.originalLat;
			mm.newPoints[num][1] = mm.originalLng;
			mm.newPoints[num][4].disableDragging();
		}
		mm.newPoints[num][4].setPoint(new GLatLng(mm.newPoints[num][0],mm.newPoints[num][1]));
	},
	
	removeMarker: function(num) {
		var mm = $.RPS.mapMaker;
		/* NOTES
		Need to add a generic lightbox/confirm function to replace confirm()
		*/
		if(!mm.editMode) {
			deleteOK = confirm('Permanently delete marker - ' + this.newPoints[num][2] + '?');
			if (deleteOK){
				mm.map.removeOverlay(mm.newPoints[num][4]); //remove marker from map
				mm.newPoints.splice(num,1);	//remove marker info from newPoints array
				mm.updateList('remove',num);
			}
		}
	},
	
	editMarker: function(num,listLink) {
		var mm = $.RPS.mapMaker;
		if(!mm.editMode) {

			$(listLink).parent().parent().addClass('edit');
			
			mm.editNum = num;
			mm.editMode = true;
			
			//store original data
			mm.originalLat = mm.newPoints[num][0];
			mm.originalLng = mm.newPoints[num][1];
			mm.originalName = mm.newPoints[num][2];
			mm.originalContents = mm.newPoints[num][3];
			
			//set centre to point we are editing - important if marker is off screen
			mm.map.setCenter(new GLatLng(mm.newPoints[num][0],mm.newPoints[num][1]),mm.map.getZoom());
			
			//populate form fields
			$('#lat').val(mm.originalLat);
			$('#lng').val(mm.originalLng);
			$('#name').val(mm.originalName);
			$('#contents').val(mm.originalContents);
			
			mm.map.closeInfoWindow();
			
			//add some draggable shit
			var marker = mm.newPoints[num][4];
			marker.enableDragging();
			//Change marker icon
			marker.setImage(mm.editIcon);
			
			//Change form to edit mode
			$('#add-marker').addClass('active');
			$('#add-marker h3').text("Edit Marker");
			$('#add-marker div.position p').text('Drag your Marker to a new position');
			$('#addmarkerbut').attr('value','Apply changes');
			//add cancel button
			$('#add-marker .form-buttons').prepend('<a href="#" id="cancel">Cancel</a>');
		} else {
			return;	
		}
	},
	
	cancelEdit: function() {
		var mm = $.RPS.mapMaker;
		$('#cancel').live('click', function() {
			//Reset original data
			mm.newPoints[mm.editNum][0] = mm.originalLat;
			mm.newPoints[mm.editNum][1] = mm.originalLng;
			mm.newPoints[mm.editNum][2] = mm.originalName;
			mm.newPoints[mm.editNum][3] = mm.originalContents;
			mm.newPoints[mm.editNum][4].setImage(mm.defaultIcon); //change to edit icon
			//set centre to point we are editing
			mm.moveMarker(mm.editNum,true);
			//Empty form fields & remove cancel button
			$('#lat').val('');
			$('#lng').val('');
			$('#name').val('');
			$('#contents').val('');
			$('#cancel').remove();
			
			mm.editMode = false;
			mm.editNum = null;
				
			$('#add-marker').removeClass('editmode');
			$('#addmarkerbut').attr('value','Add Marker');
			$('#add-marker h3').text('Add Marker');
			$('#add-marker div.position p').text('Click on the map to set position');
			$('#storagelist li').removeClass('edit');
			
		});
	},
	
	save: function() {
		var mm = $.RPS.mapMaker;
		$('#datastorage').submit(function(e) {
			e.preventDefault();					   
			if(mm.editMode != true) {
				if(!mm.logged_in) {
					alert("You must be logged in to save a map");
					return false;
				} else {
					//must have a name
					if($('#map_name').val() != '') {
						mm.startSave();
					} else {
						//Please give your map a name
						$('div.map-name').addClass('error');
						return false;
					}
				}
			}
		});

	},
	
	startSave: function() {
		var mm = $.RPS.mapMaker;
		
		//get marker data and store it in form
		var markers = "";
		for (var i=0; i<mm.newPoints.length; i++) {
			markers += mm.newPoints[i][0] + "|" + mm.newPoints[i][1] + "|" + escape(mm.newPoints[i][2]) + "|" + escape(mm.newPoints[i][3]);
			markers += "&";
		}
		markers = markers.substring(0,(markers.length-1)); //remove last ampersand
		$('#map_markers').val(markers);
		
		//get map data and store it in form
		var map_middle =  mm.map.getCenter();
		var map_lat = map_middle.y;
		var map_lng = map_middle.x;
		var map_zoom = mm.map.getZoom();
		var maptypes = mm.map.getMapTypes();
		var map_type = -1;
		for(var i=0; i < maptypes.length; i++) {
			if(maptypes[i] == mm.map.getCurrentMapType()) map_type = i;
		}
		$('#map_lat').val(map_lat);
		$('#map_lng').val(map_lng);
		$('#map_zoom').val(map_zoom);
		$('#map_type').val(map_type);
		mm.ajaxSave();
	},
	
	ajaxSave: function() {
		var mm = $.RPS.mapMaker;
		var url = '/php/save.php'
		//serialize form data
		var data = $('#datastorage').serialize();
		$.ajax({
			type: "POST",
			url: url,
			data: data,
			success: function(msg){
				mm.savedMap = true;
				mm.map_id = msg;
				$('#map_id').val(msg);
				//add some kind of confirmation
				mm.addSaveConfirm();
				$('.error').removeClass('error');
				$('#save').attr('disabled','disabled');
			}
		});
	},
	
	addSaveConfirm: function() {
		$('#content').append('<p id="save-confirmation">Map has been saved successfully</p>');
	},
	
	shareMap: function() {
		var mm = $.RPS.mapMaker;
		$('#share').click(function() {
			//create sharebox holder lightbox
			
			var stuff = '<div id="sb-holder"><ul id="sb-nav"></ul><a href="#close" id="sb-close">Close</a><div id="shareBox"></div></div>';
			
			//add it via lightbox
			$.RPS.lightbox.top = 80;
			$.RPS.lightbox.opacity = 0.6;
			$.RPS.lightbox.addOverlay();
			$.RPS.lightbox.boxDisplay(stuff);
			
			addJs();
			addIframe();
			//addLink();
			//addSocialMedia();
			
			function addJs() {
				$('#sb-nav').append('<li><a href="#sb-javascript">JavaScript</a></li>');
				$('#shareBox').append('<div class="sb-page" id="sb-javascript"><h3>Your map javaScript</h3></div>');
				$('#sb-iframe').append('<p class="instructions">Below is the JavaScript and HTML code to create your own map page.</p>');
				$('#sb-javascript').append('<textarea></textarea>');
				var code = mm.makeJavaScript();
				$('#sb-javascript textarea').val(code);
			}
			
			function addIframe() {
				$('#sb-nav').append('<li><a href="#sb-iframe">iFrame</a></li>');
				$('#shareBox').append('<div class="sb-page" id="sb-iframe"><h3>Share on your blog</h3></div>');
				if(mm.logged_in && mm.savedMap) {
					$('#sb-iframe').append('<p class="instructions">If you would like to add your map to your own website or blog simply copy and paste the code below:</p>');
					$('#sb-iframe').append('<textarea class=""></textarea>');
					var code = mm.makeIframe();
					$('#sb-iframe textarea').val(code);
				} else {
					$('#sb-iframe').append('<p>You need to be signed in and your map needs to be saved to create an iframe</p>');
				}
				
			}
			
			function addLink() {
				$('#sb-nav').append('<li><a href="#sb-link">Link</a></li>');
				$('#shareBox').append('<div class="sb-page" id="sb-link"><h3>Link to your map on Map Maker</h3></div>');
				if(mm.logged_in && mm.savedMap) {
					$('#sb-link').append('<textarea></textarea>');
				} else {
					$('#sb-link').append('<p>Need to be signed in and map saved to create link</p>');
				}
			}
			
			function addSocialMedia() {
				$('#sb-nav').append('<li><a href="#sb-social">Social media</a></li>');
				$('#shareBox').append('<div class="sb-page" id="sb-social"><h3>Social media shizzle</h3></div>');
				if(mm.logged_in && mm.savedMap) {
					$('#sb-social').append('<textarea></textarea>');
				} else {
					$('#sb-social').append('<p>Need to be signed and map saved  do the social media shizzle</p>');
				}
			}
					
			//add tabs & controls
			$('#shareBox .sb-page').hide();
			$('#shareBox .sb-page:first-child').show();
			$('#sb-nav li:first-child').addClass('active');
			
			$('#sb-nav a').click(function() {				  
				var index = $('#sb-nav a').index($(this));
				var nth = index + 1;
				$('#shareBox .sb-page').hide();
				$('#sb-nav li').removeClass('active');
				$('#shareBox .sb-page:nth-child(' + nth + ')').show();
				$('#sb-nav li:nth-child(' + nth + ')').addClass('active');
				return false;
			});
			
			return false;
			
		});
		
		//handle close button
		$('#sb-close').live('click',function() {
			$.RPS.lightbox.finish();
			return false;
		});
		
	},
	
	makeJavaScript: function() {
		var mm = $.RPS.mapMaker;
		
		var code = "";
		code += '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> \n';
		code += '<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\"> \n';
		code += '<head> \n';
		code += '<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"/> \n';
		code += '<title>Simple Google map<\/title> \n';
		code += '<!-- //Change the following line to use your own key available from http://www.google.com/apis/maps/signup.html -->\n';
		code += '<script src=\"http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAARKYMX3qABRwgBGTOLfvdgBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxTmhS_LQj6knfNR9GOtLZ_JFxncNQ\"';
		code += ' type=' + '\"text/javascript\">' + '<' + '/' + 'script>' +  '\n';
		code += '<script type=\"text/javascript\">\n';
		code += '//<![CDATA[\n';
		code += '// Google Map Maker script v.3\n';
		code += '// (c) 2012 Richard Stephenson http://www.rpsdigital.com\n';
		code += '// http://mapmaker.donkeymagic.co.uk\n';
		code += 'var map;\n';
		code += 'var icon0;\n';
		code += 'var newPoints = new Array();\n';
		code += ' \n';
		code += 'function addLoadEvent(func) { \n';
		code += '	var oldonload = window.onload; \n';
		code += '	if (typeof window.onload != \'function\'){ \n';
		code += '		window.onload = func\n';
		code += '	} else { \n';
		code += '		window.onload = function() {\n';
		code += '			oldonload();\n';
		code += '			func();\n';
		code += '		}\n';
		code += '	}\n';
		code += '}\n';
		code += ' \n';
		code += 'addLoadEvent(loadMap);\n';
		code += 'addLoadEvent(addPoints);\n';
		code += ' \n';
		code += 'function loadMap() {\n';
		code += '	map = new GMap2(document.getElementById("map"));\n';
		code += '	map.addControl(new GLargeMapControl());\n';
		code += '	map.addControl(new GMapTypeControl());\n';
		//Get centrepoint, zoom level and map_type
		var mapmiddle =  mm.map.getCenter();
		var maplat = mapmiddle.y;
		var maplng = mapmiddle.x;
		var mapzoomlevel = mm.map.getZoom();
		var maptypes = mm.map.getMapTypes();
		var maptype = -1;
		for(var i=0; i < maptypes.length; i++) {
			if(maptypes[i] == mm.map.getCurrentMapType())maptype = i;
		}
		code += '	map.setCenter(new GLatLng( '+ maplat +', ' + maplng + '), ' +  mapzoomlevel + ');\n';
		if(maptype==0) {
			code += '	map.setMapType(G_NORMAL_MAP);\n';
		} else if(maptype==1) {
			code += '	 map.setMapType(G_SATELLITE_MAP);\n';
		} else {
			code += '	map.setMapType(G_HYBRID_MAP);\n';
		}
		code += ' \n';
		code += '	icon0 = new GIcon();\n';
		code += '	icon0.image = \"http://www.google.com/mapfiles/marker.png\";\n';
		code += '	icon0.shadow = \"http://www.google.com/mapfiles/shadow50.png\";\n';
		code += '	icon0.iconSize = new GSize(20, 34);\n';
		code += '	icon0.shadowSize = new GSize(37, 34);\n';
		code += '	icon0.iconAnchor = new GPoint(9, 34);\n';
		code += '	icon0.infoWindowAnchor = new GPoint(9, 2);\n';
		code += '	icon0.infoShadowAnchor = new GPoint(18, 25);\n';
		code += '}\n';
		code += ' \n';
		code += 'function addPoints() {\n';
		code += ' \n';
		//Build arrays of points
		for(var i = 0; i < mm.newPoints.length; i++) {
			code += "	newPoints[" + i + "] = new Array(" + mm.newPoints[i][0] + ", " + mm.newPoints[i][1] + ", icon0, '" + mm.filterText(mm.newPoints[i][2]) + "', '" + mm.filterText(mm.newPoints[i][3]) + "'); \n";
		}
		code += ' \n';
		code += '	for(var i = 0; i < newPoints.length; i++) {\n';
		code += '		var point = new GPoint(newPoints[i][1],newPoints[i][0]);\n';
		code += '		var popuphtml = newPoints[i][4] ;\n';
		code += '		var marker = createMarker(point,newPoints[i][2],popuphtml);\n';
		code += '		map.addOverlay(marker);\n';
		code += '	}\n';
		code += '}\n';
		code += ' \n';
		code += 'function createMarker(point, icon, popuphtml) {\n';
		code += '	var popuphtml = \"<div id=\\"popup\\">\" + popuphtml + \"<\\/div>\";\n';
		code += '	var marker = new GMarker(point, icon);\n';
		code += '	GEvent.addListener(marker, "click", function() {\n';
		code += '		marker.openInfoWindowHtml(popuphtml);\n';
		code += '	});\n';
		code += '	return marker;\n';
		code += '}\n';
		code += '\/\/]]>\n';
		code += '<' + '/' + 'script>\n';
		code += ' \n';
		code += '<style type=\"text/css\">\n';				
		code += 'div#popup {\n';
		code += 'background: #EFEFEF;\n';
		code += 'border: 1px solid #999999;\n';
		code += 'color: #333;\n';
		code += 'font-family: "Trebuchet MS", Lucida, Verdana, Arial, Helvetica, sans-serif;\n';
		code += 'font-size: 12px;\n';
		code += 'line-height: 15px;\n';
		code += 'margin: 0px;\n';
		code += 'padding: 7px;\n';
		code += 'width: 270px;\n';
		code += '}\n';
		code += 'div#popup a {\n';
		code += 'color: #1122CC;\n';
		code += '}\n';
		code += '<\/style>\n';
		code += '<\/head>\n';
		code += '<body>\n';
		code += '<div id=\"map\" style=\"width:600px;height:450px\"><\/div>\n';
		code += '<\/body>\n';
		code += '<\/html>\n';
		return code;
	},
	
	filterText: function(text) {
		var apostrophe = /'/g;
		var lr = /\r\n/g;
		var ampersand = /&/g;
		text = text.replace(ampersand, "&amp;");
		text = text.replace(apostrophe, "&#39;");
		text = text.replace(lr, "<br />");
		var lr = /\r/g;
		text = text.replace(lr, "<br />");
		//mac
		text = text.replace(/\r\n|\r|\n/g, '');
		return text;
	},

	makeIframe: function() {
		var mm = $.RPS.mapMaker;
		var code = "";
		code += '<iframe src=\"http://mapmaker.donkeymagic.co.uk/map/' + mm.map_id + '" width=\"600px\" height=\"450px\" id="map" frameborder=\"0">\n';
		code += '<\/iframe>\n';
		return code;
	}
		
}

$.RPS.deleteMap = {
	
	init: function() {
		var mm = $.RPS.deleteMap;
		$('a.delete').click(function() {
			var url = $(this).attr('href');
			var confirmation = confirm("Are you sure you want to delete this map?")
			if (confirmation) {
				mm.deleteMap(url,$(this));
				return false;
			} else {
				return false;
			}
		});
	},
	
	deleteMap: function(url,ref) {
		var mm = $.RPS.deleteMap;
		$.ajax({
			type: "GET",
			url: url,
			success: function(msg){
				var deleted = msg;
				if(mesg = 'true') {
					mm.removeMapRow(ref);					
				} else {
					alert('Error - map not deleted');
				}
			}
		});
	},
	
	removeMapRow: function(ref) {
		ref.parent().parent().remove();
	}
	
}





