var allLocations = new Array();
(function($) {
		
		$('#dest-points a.getdirectionto').bind('click', function() {
			toDirections('to',$(this).attr('id'))
			return false;
		});
		$('#dest-points a.getdirectionfrom').bind('click', function() {
			toDirections('from',$(this).attr('id'))
			return false;
		});		  
		  
	function MSNMap() {
		this._map = null;
		this._id = null;
		this._data = null;
		this._categories = [];
		this._contextPin = null;
		this._loadIds = null;
		this._cstmCount = 0;
		this._defaults = {
			xml : '/xml/map.xml',
			dashboard : 'Normal',
			sortable : true,
			listView : false,
			printNames : true,
			miniMap : false,
			kilometers : false,
			context : false,
			acceptQuery : false,
			printMap : false
		};
		this._regional = {
			moreinfo : 'More Info',
			showMiniMap : 'Show Mini Map',
			hideMiniMap : 'Hide Mini Map',
			addToPlanner : 'Add to Route Planner',
			removePlanner : 'Remove from Route Planner',
			centerPoint : 'Center point on map',
			hidePoint : 'Hide point on map',
			showPoint : 'Show point on map',
			hideSection : 'Hide Section',
			showSection : 'Show Section',
			custom : 'Custom',
			myRoute : 'My Route',
			viewPrint : 'View Printable Directions',
			printDirections : 'Print'
		};
	}
	
	$.extend(MSNMap.prototype, {
		setDefaults : function(el, settings) {
			var obj = this;
			$.extend(obj._defaults, settings || {});
			
			obj._id = el.id;
			if(!obj._defaults.printMap) {
				obj.activateControls();
			}
			obj.getData();
			
			$(window).unload(function() { if(obj._map) { obj._map.Dispose(); } });
		},
		activateControls: function() {	
			var obj = this;
						
			if(obj._defaults.sortable) {
				$("#route-list").sortable({ 
					items: "li", 
					revert: false, 
					handle: "span", 
					containment: '#route-list', 
					axis: 'y' 
				}); 
			}			
			
			//$('#add-custom').submit(function() { obj.findCustom(); return false; });
			//$('#get-route').click(function() { obj.getRouteList(); return false; });
			//$('#clear-route').click(function() { obj.clearRouteList(); return false; });
			//$('#cstm-reset').click(function() { $(this).parents('form').trigger('reset'); return false; });

			$("form#route-form").submit(function() { 
				obj._map.GetRoute(document.getElementById('txtStart').value, document.getElementById('txtEnd').value,null,VERouteType.Quickest,onGotRoute); 
				/*var options = new VERouteOptions();
					options.RouteCallback = onGotRoute;
				
				obj._map.GetDirections(document.getElementById('txtStart').value, document.getElementById('txtEnd').value, options);*/
				return false;
			});

			if(obj._defaults.context) {
				$('#context-add a').click(function() {
					if($('#context-add div').is(':visible')) {
						$('#context-add div').hide();
					} else {
						$('#context-add div').show();
					}
					return false;
				});	
				$('.context-zoom').click(function() {
						obj._map.SetCenterAndZoom(obj._contextPin, this.rel);
						obj.hideContext();
				});
				$('.context-center').click(function() {
						obj._map.SetCenter(obj._contextPin);
						obj.hideContext();
				});
			}
		},
		getData : function() {
			var obj = this;
			$.get(obj._defaults.xml, function(data) { 
				var items = [];
				$('item', data).each(function(i) {
					items[i] = {};
					$(this).children().each(function() {
						items[i][this.tagName] = $(this).text();									 
					});
				});
				obj._data = items;
				
				if(obj._defaults.acceptQuery) {
					var q = window.location.search.substring(1);
					if(q.length>0) {
						var query = obj.parseQuery(q);
						if(query.ids!==null&&query.ids!==undefined) {
							obj._loadIds = query.ids.split(',');
						}
					}
				}
				if(!obj._defaults.printMap) {
					obj.createMap();
				} else { 
					obj.createPrintMap();
				}
				if(q!==undefined&&q.length>0) {
					if(query.name!==undefined && query.address!==undefined) {
						obj.findCustom(query.name, query.address);
					}
				}
			});
		},
		parseQuery : function(str) {
			var vars = str.split("&");
			var pairs = {};
			for (var i=0;i<vars.length;i++) {
				var p = vars[i].split("=");
				pairs[p[0]] = this.urlDecode(p[1]);
			}
			return pairs;
		},
		urlDecode : function(encodedString) {
			var output = encodedString;
			var binVal, thisString;
			var myregexp = /(%[^%]{2})/;
			while ((match = myregexp.exec(output)) !== null && match.length > 1 && match[1] !== '') {
				binVal = parseInt(match[1].substr(1),16);
				thisString = String.fromCharCode(binVal);
				output = output.replace(match[1], thisString);
			}
			return output;
		},
		createMap : function() {
			var obj = this;
			obj._map = new VEMap(obj._id);
			switch(this._defaults.dashboard) {
				case 'Tiny':
					this._map.SetDashboardSize(VEDashboardSize.Tiny);
					break;
				case 'Small':
					this._map.SetDashboardSize(VEDashboardSize.Small);
					break;
				case 'Hide':
					this._map.HideDashboard();
					break;
			}
			
			var fp = obj.getLatLong(obj._data[0]['georss:point']);
			obj._map.LoadMap(new VELatLong(fp[0], fp[1]), 11);
			obj._map.SetMapStyle(VEMapStyle.Shaded);
			obj._map.SetMouseWheelZoomToCenter(false);
			obj._map.Hide3DNavigationControl();
			
			if(obj._defaults.context) {
				obj._map.AttachEvent("onclick", function(e) { obj.showContext(obj, e); });
				obj._map.AttachEvent("onmousedown", this.hideContext);
			}
			
			if(obj._defaults.miniMap) { 
				obj.showMiniMap(); 
			}
			obj.getCategories();
		},
		createPrintMap : function() {
			var obj = this;
			obj._map = new VEMap(obj._id);
			this._map.HideDashboard();
			obj._map.LoadMap();
			obj._map.SetMapStyle(VEMapStyle.Shaded);
			obj._map.Hide3DNavigationControl();
			obj.getRouteList();
		},
		getLatLong : function(point) {
			var pts = point.split(" ");
			return pts;
		},
		showMiniMap : function() {
			var obj = this;
			var pos = $('#'+obj._id).height();
								
			var block = $('<div />')
						.addClass('mini-control').attr({id: 'mini-show', title: obj._regional.showMiniMap})
						.toggle(function() {
							block.hide();
							$('#MSVE_minimap').animate({top: "-=152px"}, "slow", function() {
								block.attr({id: 'mini-hide', title: obj._regional.hideMiniMap}).show();
							}); 
						}, function() {
							block.hide();
							$('#MSVE_minimap').animate({top: "+=152px"}, "slow", function() {
								block.attr({id: 'mini-show', title: obj._regional.showMiniMap}).show();
							});
						});
        	
			if (this._map.GetMapMode() == VEMapMode.Mode3D) { obj._map.SetMapMode(VEMapMode.Mode2D); }
            this._map.ShowMiniMap(0, pos, VEMiniMapSize.Small);  
			
			$('#MSVE_minimap_resize').remove();
			$('#'+obj._id).append(block);
		},
		getCategories : function() {
			var obj = this;
			$.each(this._data, function(i, val) {
				var dup = false;
				var tem = val.type;
				$.each(obj._categories, function(j, val2) {
					if(tem == val2) { 
						dup = true; 
					}
				}); 
				if(!dup) { 
					obj._categories.push(tem); 
				}
			});
			if(this._defaults.listView||this._loadIds!==null||!this._defaults.printNames) {
				this.loadPoints(null);
			} else {
				this.printCategories();
				this.loadPoints(this._categories[0]);
			}
		},
		printCategories : function() {
			var obj = this;
			var div = $('<div />').attr('id', 'categories').insertBefore($('#'+this._id));
			$.each(this._categories, function(i, val) {
				$('<div />').addClass('category').html(val)
					.click(function() {
						obj.loadPoints(val);
					}).appendTo(div);					  
			});
		},
		loadPoints : function(cat) {
			var obj = this;
			var cats = cat===null?obj._categories:[cat];
			var notMade = obj.checkLayers(cat);

			if(notMade) {
				$.each(cats, function(i, val) {
					var layer = new VEShapeLayer();
					layer.id = val;
					//layer.SetClusteringConfiguration(VEClusteringType.Grid);
					var shapes = [];
					var block = obj.createBlock(layer, val);
					
					$.each(obj._data, function(j) {
						if(obj._data[j].type==val) {
							if(obj._loadIds!==null) {
								$.each(obj._loadIds, function(k, val2) {
									if(obj._data[j].id==val2) {
										var d = obj.createPoints(layer, shapes, j);
										$('> div:last', block).append(d);
									}
								});
							} else {
								var d = obj.createPoints(layer, shapes, j);
								$('> div:last', block).append(d);
							}
						}
					});
					
					if(obj._loadIds!==null&&$('.place', block).length>0) {
						$('#places-wrapper').append(block);
					} else if(obj._defaults.printNames&&obj._loadIds===null) {
						$('#places-wrapper').append(block);
					}
					
					if(shapes.length) {
						obj._map.AddShapeLayer(layer);
						layer.AddShape(shapes);
					}
				});
				if(!obj._defaults.listView) {
					this.loadAccordion();
				}
				this.getBestView();
			}
		}, 
		createBlock : function(layer, val) {
			var block = $('<div />').addClass('places').attr('id', 'cat-'+val.replace(/\W/gi,''));
			$('<div />').addClass('container').appendTo(block);
			if(!this._defaults.listView) { 
				var title = $('<div />').addClass('title').html(val).prependTo(block);
				if(this._loadIds===null) {
					$('<span title="'+this._regional.hideSection+'" />').addClass('close').html('X')
						.click(function() {
							var el = $(this).parents('.places');
							layer.Hide();
							if($(el).hasClass('selected')) {
								var sibs = $(el).nextAll(':visible');
								if(!sibs.length) { 
									sibs = $(el).prevAll(':visible');
								}
								$("#places-wrapper").accordion("activate", $('.title', $(sibs[0])));
							}
							$(el).slideUp('fast');

							return false;
						}).prependTo(title);
				}
			}
			return block;
		},
		checkLayers : function(cat) {
			var mapLayers = this._map.GetShapeLayerCount();
			for(var h=0; h<mapLayers; h++) {
				var l = this._map.GetShapeLayerByIndex(h);
				if(l.id!==undefined && l.id==cat) {
					l.Show();
					$('#cat-'+cat.replace(/\W/gi,'')).show();
					$("#places-wrapper").accordion("activate", $('.title', '#cat-'+cat.replace(/\W/gi,'')));
					this.getBestView();
					return false;
				}
			}
			return true;
		},
		createPoints : function(layer, shapes, j, cstm) {
			var obj = this;
			var info = '';
			var point = obj.getLatLong(obj._data[j]['georss:point']); 
			var shape = new VEShape(VEShapeType.Pushpin, new VELatLong(point[0], point[1]));
			shapes.push(shape);
			
			var shapeCount = cstm?obj._cstmCount:shapes.length;
			shape.SetCustomIcon('<div class="pushpin"><img src="'+obj._data[j].pushpin+'" alt="" /><span>'+shapeCount+'</span></div>');
			shape.SetTitle(obj._data[j].title);
			if(obj._data[j].image!==''&&obj._data[j].image!==undefined) {
				info += '<div id="pin-image"><img src="'+obj._data[j].image+'" alt="" /></div>';
			}
			if(obj._data[j].description!==''&&obj._data[j].description!==undefined) {
				info += obj._data[j].description;
			}
			if(obj._data[j].moreinfo!==''&&obj._data[j].moreinfo!==undefined) {
				info += '/<p><a onclick="toDirections('+obj._data[j].id+',\'to\');return false;" href="#">To Here</a><br /><a onclick="toDirections('+obj._data[j].id+',\'from\');return false;" href="#">From Here</a></p>';
				allLocations[j] = obj._data[j].address;
				
				
				//$('a.fromDirections').bind("click", function(e){ alert("h"); return false; });				
			//	<p><a onclick="map.HideInfoBox();" href="'+obj._data[j].moreinfo+'" target="_blank">More Info</a></p>';
			//<p><a onclick="toDirections('+obj._data[j].id+');" href="#">To</a></p>';
			}
			shape.SetDescription(info);
			/*$('a').addClass('toDirections')
					.html('Tooo')
					.click(function () {
						obj.toDirections2(obj._data[j].id);
					}).appendTo('.too');*/
			if(obj._defaults.printNames) {
				var pin = $('<div title="'+obj._regional.centerPoint+'" />').addClass('pushpin')
					.append('<img src="'+obj._data[j].pushpin+'" alt="" />')
					.click(function () {
						obj.centerMap(layer.GetShapeByIndex(shapeCount-1), 15);
					}).append('<span>'+shapeCount+'</span>');
				
				var name = $('<div title="'+obj._regional.hidePoint+'" />').addClass('name').html(obj._data[j].title).click(function() { 
						obj.createCover(this, layer.GetShapeByIndex(shapeCount-1));												 
						obj._map.HideInfoBox(); 
					});
				
				var add = $('<div title="'+obj._regional.addToPlanner+'" />').addClass('add-route').html(obj._regional.addToPlanner).click(function() {
						obj.addToRoute(j, this);
						$(this).hide();
					});
							
				var div = $('<div />').addClass('place').prepend(pin).append(name, add)
					.hover(function() { obj.showInfoBox(layer.GetShapeByIndex(shapeCount-1)); }, 
						   function() { obj._map.HideInfoBox(); 
					});
					
				return div;
			}		
		},
		createCover : function(el, shape) {
			var obj = this;
			var p = $(el).parents('.place');
			var _height = p.height()+parseInt(p.css('padding-top'), 10)+parseInt(p.css('padding-bottom'), 10);
			var _width =  p.width()+parseInt(p.css('padding-left'), 10)+parseInt(p.css('padding-right'), 10);
			
			shape.Hide();
			p.css('position', 'relative');
			var cover = $('<div title="'+obj._regional.showPoint+'" />').height(_height	).width(_width)
				.css({backgroundColor: '#000', position: 'absolute', top: '0', left: '0', zIndex: '500', opacity: '.15'})
				.prependTo(p).click(function() {
					p.removeAttr('style');
					$(this).remove();
					shape.Show(); 
					obj.showInfoBox(shape); 
				});
				
			if(BROWSER=='msie6'||BROWSER=='msie7') {
				p.height(_height-parseInt(p.css('padding-top'), 10)-parseInt(p.css('padding-bottom'), 10));
				cover.css('filter', 'alpha(opacity=15)');
			}
		},
		findCustom: function(cstmName, cstmAddress) {
			var obj = this;
			var name = cstmName?cstmName:$.trim($('#cstm-name').val());
			var address = cstmAddress?cstmAddress:$.trim($('#cstm-address').val());
			try {
				//what, where, findType, shapeLayer, startIndex, numberOfResults, showResults, createResults, useDefaultDisambiguation, setBestMapView, callback
				obj._map.Find(null, address, null, null, null, null, null, null, null, false, function(l, resultsArray, places, hasMore, veErrorMessage) {
					if(places) {
						obj.loadCustom('custom', name, places);
					}
				});
			} catch(e) { alert(e.message); }
		},
		loadCustom : function(cat, name, point) {
			var num = this._data.length;
			var shapes = []; 
			var notMade = this.checkLayers(cat);
			var layer = null;
			var block = null;

			if(notMade) {
				layer = new VEShapeLayer();
				layer.id = cat;
				block = this.createBlock(layer, cat);
				if(this._loadIds===null&&!this._listView) {
					var obj = this;
					$('<div />').addClass('category').html(cat)
						.click(function() {
							obj.loadPoints(cat);
						}).appendTo('#categories');
				}
			} else {
				var mapLayers = this._map.GetShapeLayerCount();
				for(var h=0; h<mapLayers; h++) {
					var l = this._map.GetShapeLayerByIndex(h);
					if(l.id=='custom') {
						layer = l;
						block = $('#cat-custom');
						break;
					}
				}
			}
			
			this._data[num] = {};
			this._data[num].id = num;
			this._data[num].title = name;
			this._data[num].address = point[0].Name;
			this._data[num].description = '';
			this._data[num].image = '';
			this._data[num].pushpin = 'images/map/pins/pin-violet.gif';
			this._data[num].moreinfo = '';
			this._data[num]['georss:point'] = point[0].LatLong.Latitude+" "+point[0].LatLong.Longitude;
			this._data[num].type = cat;
			this._cstmCount++;

			var d = this.createPoints(layer, shapes, num, this._cstmCount);
			$('> div:last', block).append(d);

			if(notMade) { 
				this._map.AddShapeLayer(layer); 
			}		
			layer.AddShape(shapes);
			this.getBestView();
			
			if(this._defaults.printNames) { 
				$('#places-wrapper').append(block);	
				if(notMade&&!this._defaults.listView) {
					this.loadAccordion(); 
				}
			}
		},
		loadAccordion : function() {
			$("#places-wrapper").accordion("destroy").find('.selected').removeClass('selected');
			$('.ui-accordion-left, .ui-accordion-right').remove();
			$("#places-wrapper").accordion({ 
				header: '.title', 
				clearStyle: true,
				autoHeight: false
				});
			if(this._loadIds===null) {
				$("#places-wrapper").accordion("activate", '.title:last');
			}
		},
		getBestView : function() {
			var mapLayers = this._map.GetShapeLayerCount();
			var viewArray = [];
			for(var i=0; i<mapLayers; i++) {
				var l = this._map.GetShapeLayerByIndex(i);
				var c = l.GetShapeCount();
				for(var j=0; j<c; j++) {
					viewArray.push(l.GetShapeByIndex(j));
				}
			}
			this._map.SetMapView(viewArray);
		},
		showInfoBox : function(shape) {
			if(shape.GetVisibility()) {
				this._map.ShowInfoBox(shape);
			}
		},
		centerMap : function(shape, zoom) {
			var obj = this;
			obj._map.HideInfoBox();
			obj._map.SetCenterAndZoom(new VELatLong(shape.Latitude, shape.Longitude), zoom);
			setTimeout(function(){obj.showInfoBox(shape);}, 500);
		},
		addToRoute : function(num, el) {
			var name = this._defaults.sortable?'<span class="dragPoint">'+this._data[num].title+'</span>':this._data[num].title;
			var routeItem = $('<li />').html(name).data('point', num);
			
			$('<img class="remove" title="'+this._regional.removePlanner+'" src="images/map/x.gif" />').click(function() {
				$(this).parents('li').remove();
				$(el).show();
			}).appendTo(routeItem);
			
			$('#route-list').append(routeItem);
			
			if(this._defaults.sortable) {
				$('#route-list').sortable('refresh');				
			}

		},
		getRouteList : function() {
			var obj = this;
			var myOptions = new VERouteOptions();
			var routeOrder = [];
			obj.routePoints = [];
			
			if(!obj._defaults.printMap) {
				
				$('li', '#route-list').each(function(i) {
					var tempID = $(this).data('point');
					var place = obj._data[tempID].address;					
					if(place==='') {
						var shape = obj.getLatLong(obj._data[tempID]['georss:point']);
						place = new VELatLong(shape[0], shape[1]);
					}
					obj.routePoints[i] = place;
					routeOrder.push(place);
				});
			} else {
				$('span', '#addresses').each(function(i) {
					var place = $(this).text();
					obj.routePoints[i] = place;
					routeOrder.push(place);
				});
			}
			
			if(routeOrder.length < 2) {
				alert("Please add another location to your trip");
			} else {
				myOptions.DrawRoute      = true;
				myOptions.Element 		 = obj;
				myOptions.RouteCallback  = obj.printRoute;
				if(obj._defaults.kilometers) {
					myOptions.DistanceUnit = VERouteDistanceUnit.Kilometer;
				}
				obj._map.GetDirections(routeOrder, myOptions);		
			}
		},
		clearRouteList : function() {
			$('.remove', '#route-list').trigger('click');	
			$('#route-info').html('').dialog("close");
			$('.show-dir').remove();
			
			try { this._map.DeleteRoute(); }            
			catch (err) { alert(err.message); } 
			
			this.getBestView();
		},
		printRoute : function(route) {
			var obj = this.Element;
			
			if(!obj._defaults.printMap) {
				var l = '/print-map.php?address[]=';
				$.each(obj.routePoints, function(i) {
					l += obj.routePoints[i];	
					if((i+1)!=obj.routePoints.length) {	l += '&address[]='; }
				});
				
				$('.show-dir').remove();
				$('<div />').addClass('show-dir').html('View Printable Directions').click(function() {
					var printWindow = window.open(l, 'PrintWindow', 'status=1, menubar=1, location=1, resizable=1, scrollbars=1, width=850, height=700');
					printWindow.moveTo(0,0);
				}).insertAfter($('#'+obj._id)).effect("highlight", {}, 3000);
			} else {
				var legs     = route.RouteLegs;
				var _unit 	 = obj._defaults.kilometers?' km':' mi';
				var time 	 = obj.convertTime(route.Time);

				var stops 	 = legs.length>1?'<strong>Stops: </strong>'+ (legs.length-1):'&nbsp;';
				var info = '<table cellspacing="0" cellpadding="0">\n';
					info += '<tr>\n';
					info += '<td class="first"><strong>Start: </strong>'+ obj.routePoints[0]+'</td>\n';
					info += '<td>'+stops+'</td>\n';
					info += '</tr>\n';
					info += '<tr>\n';
					info += '<td class="first"><strong>Finish: </strong>'+obj.routePoints[(obj.routePoints.length-1)]+'</td>\n';
					info += '<td><strong>Trip: </strong>' + route.Distance.toFixed(1) + _unit + ', ' + time + '</td>\n';
					info += '</tr>\n';
					info += '</table>';
				$(info).insertAfter('h1');
				
				var numTurns = 0;
				var numStops = 0;
				var leg      = null;

				var turns	 = '<ol>';
				turns += '<li class="location"><span class="pre">Start: </span><div>'+obj.routePoints[0]+'</div></li>';
				$.each(legs, function(i) {
					leg = legs[i]; 
					numStops++;
					var turn = null;  
					$.each(leg.Itinerary.Items, function(j) {
						turn = leg.Itinerary.Items[j];
						
						numTurns++;
						if(numTurns!==leg.Itinerary.Items.length) {
							turns += '<li><span class="pre">' + numTurns + '.</span><span class="text">' + turn.Text + '</span><span class="distance">' + turn.Distance.toFixed(1) + _unit +'</span></li>';
						}
					});
					numTurns=0;
					if(numStops!==legs.length) {
						turns += '<li class="location"><span class="pre">Arrive: </span><div> '+obj.routePoints[numStops]+'</div><span class="distance">' + leg.Distance.toFixed(1) + _unit +'</span></li>';
					}
				});
				turns += '<li class="location"><span class="pre">Finish: </span><div>'+obj.routePoints[numStops]+'</div><span class="distance">' + route.Distance.toFixed(1) + _unit +'</span></li>';
				turns += '</ol>';
				$('#route').append(turns); 		
			}
		},
		convertTime : function(time) {
			var hrs, mins;
			var tmpTime = ((time/60)/60).toString();
			
			if(tmpTime.indexOf('.')!=-1) {
				var tmp = tmpTime.split('.');
				hrs = tmp[0];
				mins = parseFloat("."+tmp[1]);
				mins = ((mins*60)/100).toFixed(2);
				mins = parseInt(mins*100, 10);
			}
			
			return (hrs>0?hrs + " hours ":"") + mins + " minutes";
		},
		showContext : function(obj, ev) {
			if(ev.rightMouseButton) {
				obj._contextPin = obj._map.PixelToLatLong(new VEPixel(ev.mapX, ev.mapY));
				var offset = $('#context-menu').parent().offset();
				var osLeft = $('#context-menu').parent()[0].offsetLeft;
				var osTop = $('#context-menu').parent()[0].offsetTop;
				obj._map.FindLocations(obj._contextPin, function(locations) {
					if(locations!==null) { 
						$('#context-title').html(locations[0].Name+'<br />');
					}
					$('#context-title').append("Lat: "+obj._contextPin.Latitude.toFixed(2)+" Long: "+obj._contextPin.Longitude.toFixed(2));
					
					$('<img />').addClass('context-pin')
						.attr('src', 'images/map/red_circ.gif')
						.css({position: 'absolute', left: (ev.clientX-offset.left+osLeft)+'px', top: (ev.clientY-offset.top+osTop)+'px', cursor: 'pointer', zIndex: 1000})
						.insertBefore('#context-menu');
						
					$('#context-menu').css({left: (ev.clientX-offset.left+osLeft)+10+'px', top: (ev.clientY-offset.top+osTop)+'px'}).show();
					
				  $('#context-add form').bind("submit", function() {
						if(locations===null) {
							locations = [];
							locations[0] = {};
							locations[0].Name = '';
							locations[0].LatLong = {};
							locations[0].LatLong.Latitude = obj._contextPin.Latitude;
							locations[0].LatLong.Longitude = obj._contextPin.Longitude;
						}
																 
						obj.loadCustom('custom', $('#context-add #name').val(), locations);

						$('#context-add div').hide().find('#name').val('');
						obj.hideContext();
						
						return false;
					});
				});			
			}
		},
		hideContext : function() {
			$('#context-title').html('');
			$('#context-menu, #context-add div').hide();
			$('#context-add form').unbind("submit");
			$('.context-pin').remove();
		},
		toDirections2: function(obj, mapaddress) {
			j = 1;
			//if (direction == 'to') { 
				document.getElementById('txtEnd').value =  obj._data[j].address;
			//} else {
				//document.getElementById('txStart').value = obj._map[j].address;
			//}
			
		}
	});
	
	$.fn.msnMap = function(options){
		return this.each(function() {
			$.msnMap.setDefaults(this, options);
		});
	};
	$.msnMap = new MSNMap();

})(jQuery);

function toDirections(mapid,direction) {
	var mapid = parseInt(mapid) -1;

	//document.getElementById("directions").style.display = "block";
	//document.getElementById("routefinder").style.display = "block";
	if (direction == 'to') { 
		document.getElementById('txtEnd').value = allLocations[mapid]; 
	} else {
		document.getElementById('txtStart').value = allLocations[mapid]; 
	}
	return false;
}

function onGotRoute(route) {
   var routeinfo="<div class='driving-directions'><h4>Driving Directions</h4>";
   routeinfo += "<strong>Route info:</strong><br />";
   routeinfo += "<strong>Total distance:</strong>";
   routeinfo += route.Itinerary.Distance+" ";
   routeinfo += route.Itinerary.DistanceUnit+"<br />";

   var steps="";
   var stepsemail="Driving Directions%0D%0A";
   var len = route.Itinerary.Segments.length;
   for(var i = 0; i<len ;i++) {
	  steps+=route.Itinerary.Segments[i].Instruction+" -- (";
	  stepsemail+=route.Itinerary.Segments[i].Instruction+" -- (";
	  steps+=route.Itinerary.Segments[i].Distance+") ";
	  stepsemail+=route.Itinerary.Segments[i].Distance+") ";
	  steps+=route.Itinerary.DistanceUnit+"<br />";
	  stepsemail+=route.Itinerary.DistanceUnit+"%0D%0A";
   }
   routeinfo += "<strong>Steps:</strong><br />"+steps;

   //routeinfo += "<span class='direction-function'><a href=\"javascript:print()\">Print</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href=\"mailto:?body="+stepsemail+"\">E-mail</a> </span><br /><br />";
   routeinfo += "</div>";
   //alert(routetinfo);
   
   //$('div#routefinder').show();
   $('#directions').show().html(routeinfo);
}