var map, xx, mCtr;
var initLoadDone=false;
var pointArray = new Array();
var xListeners=[];

var distMiles, distMeters, distKMeters, totalDistMiles, totalDistMeters;

var meters2feet = 3.2808399;
var meters2miles = 0.000621371192;
var metersPerMile = 1609.344;

//var elevInfo={};

var aatState, abtState;								// "add after this", "add before this" state indicators
var aatPoint, abtPoint;								// "add after this",  "add before this" point numbers

var ctrlKey=false, shiftKey=false, altKey=false;

var brg, compassBrg;
var compassArray = new Array("North", "NNE", "NE", "ENE", "East", "ESE", "SE", "SSE", "South", "SSW", "SW", "WSW", "West", "WNW", "NW", "NNW", "North");
var ePolyInit=false;
function initializeMapsEnv(){
  google.load("maps", "2.x", {"callback":doMapOnLoad});
}

function doMapOnLoad(parmRoute) {
	if (!ePolyInit) initializeEPoly();
	if (!google.maps.BrowserIsCompatible()){	alert("Your browser is not compatible with Google Maps.\n\nIf you wish to use this Google Maps page,\nyou need to use a modern browser, such as FireFox.");return false;	}

	var cookieSidebar=getCookie('runnerMapSidebar');
	var cookieDblclkZoom=getCookie('runnerMapDblclkZoom');
	var cookieScrollZoom=getCookie('runnerMapScrollZoom');

	var cookieSigninLeft=getCookie('runnerMapUserInfoFormDivLeft');
	var cookieSigninTop=getCookie('runnerMapUserInfoFormDivTop');
	var cookieExportKmlLeft=getCookie('runnerMapExportKmlDivLeft');
	var cookieExportKmlTop=getCookie('runnerMapExportKmlDivTop');
	var cookieTimerLeft=getCookie('runnerMapTimerDivLeft');
	var cookieTimerTop=getCookie('runnerMapTimerDivTop');
	var cookieInputTypeLeft=getCookie('runnerMapInputTypeMsgLeft');
	var cookieInputTypeTop=getCookie('runnerMapInputTypeMsgTop');

	if (cookieSigninLeft && cookieSigninTop){
		$("userInfoFormDiv").style.left=cookieSigninLeft;
		$("userInfoFormDiv").style.top=cookieSigninTop;
	}
	if (cookieExportKmlLeft && cookieExportKmlTop){
		$("exportKmlDiv").style.left=cookieExportKmlLeft;
		$("exportKmlDiv").style.top=cookieExportKmlTop;
	}
	if (cookieTimerLeft && cookieTimerTop){
		$("timerDiv").style.left=cookieTimerLeft;
		$("timerDiv").style.top=cookieTimerTop;
	}

	if (cookieInputTypeLeft && cookieInputTypeTop){
		$("inputTypeMsg").style.left=cookieInputTypeLeft;
		$("inputTypeMsg").style.top=cookieInputTypeTop;
		moveInputHelpDiv();
	}

	if (!cookieDblclkZoom)cookieDblclkZoom='y';
	if (!cookieScrollZoom)cookieScrollZoom='y';
	if (!cookieSidebar)cookieSidebar='y';//{alert("NoCookie");cookieSidebar=true;}else alert("Cookie:"+cookieSidebar);

	if (cookieDblclkZoom=='y') $('cbxDblclkZoom').checked=true;
	else $('cbxDblclkZoom').checked=false;
	if (cookieScrollZoom=='y') $('cbxScrollZoom').checked=true;
	else $('cbxScrollZoom').checked=false;

//	if (cookieSidebar=='y')showSidebar(true);
//	else showSidebar(false);
	if (cookieSidebar=='y')setDivWidths(true);
	else setDivWidths(false);

//	var xListener;
//	var listenerMsg="removing listener handles\n\n";
	while(xListeners.length > 0){
		xListener=xListeners.pop();
//		listenerMsg+=xListener.toSource().substr(0,99)+"\n";
		google.maps.Event.removeListener(xListener);
	}
//	alert(listenerMsg);

	map = new google.maps.Map2($("map"), {draggableCursor:"crosshair"});
	map.addControl(new google.maps.LargeMapControl());
	map.addControl(new google.maps.MapTypeControl());
	map.addMapType(G_PHYSICAL_MAP);
	map.addMapType(G_SATELLITE_3D_MAP);
	map.enableContinuousZoom();
	if (cookieDblclkZoom=='y')map.enableDoubleClickZoom();else map.disableDoubleClickZoom();
	if (cookieScrollZoom=='y')map.enableScrollWheelZoom();else map.disableScrollWheelZoom();
	xListener=google.maps.Event.addListener(map, 'click', mouseClick);xListeners.push(xListener);
	xListener=google.maps.Event.addListener(map, 'dblclick', mouseDblClick);xListeners.push(xListener);
	xListener=google.maps.Event.addListener(map, 'dragend', mapDragEnd);xListeners.push(xListener);
	xListener=google.maps.Event.addListener(map, 'moveend', mapDragEnd);xListeners.push(xListener);
	xListener=google.maps.Event.addDomListener(window, 'resize', winResize);xListeners.push(xListener);
/*
	var listenerMsg="adding listener handles\n\n";
	for (var i=0;i < xListeners.length; i++){listenerMsg+=xListeners[i].toSource().substr(0,99)+"\n";}
	alert(listenerMsg);
*/
	initMouseMoveListener();
	defineIcons();
	if ((!$('route').checked)  && (!$('straight').checked)){
		$('route').checked=true;
	}

/* start my test */
	/*
	GEvent.addListener(map, "singlerightclick", function(point) {
		var context = document.getElementById("context");
		context.style.display = "";
		var pos = new GControlPosition(G_ANCHOR_TOP_LEFT,
								 new GSize(point.x,point.y));
		pos.apply(context);
		document.getElementById("map").appendChild(context);
	});
	*/
/* end of my test */

	var myRad=getSelectedRadioValue(document.formRtSt.rdogRtSt);
	setInputType(myRad.toLowerCase());//alert(myRad);
	xx=0;aatState=0;abtState=0;aatPoint=0;abtPoint=0;pointArray=[];rmvPointsList();
	document.getElementById("msgBrg").innerHTML="n/a";
	userUserName=getCookie('runnerMapUserName');
	if (!userUserName) userUserName="AnonymousUser";
	var fetch = new google.maps.XmlHttp.create();
	if (fetch){
		document.getElementById("loggedInAs").innerHTML="";
		fetch.open("GET", "runnerSignin.php?userUserName="+userUserName+"&userNewUser="+userNewUser+"&newUserF="+newUserF+"&newUserL="+newUserL+"&newUserPW="+newUserPW, true);
		fetch.onreadystatechange = 
					function() {
						if (fetch.readyState == 4) {
							var xmlDoc = fetch.responseXML;
							var logins = xmlDoc.documentElement.getElementsByTagName("login");
							var loginSuccess = logins[0].getAttribute("success");
							if (loginSuccess==1){
								var loginName = logins[0].getAttribute("name");
								var loginNameF = logins[0].getAttribute("namef");
								var loginNameL = logins[0].getAttribute("namel");//alert(loginName+"\n"+loginNameF+"\n"+loginNameL);
								var newStart;
								var newStartLat = parseFloat(logins[0].getAttribute("lat"));
								var newStartLng = parseFloat(logins[0].getAttribute("lng"));
//												var newStartElev = logins[0].getAttribute("elev");
								$('loggedInAs').innerHTML=loginName;//alert(loginName);
								$('msgLoginWelcome').innerHTML="Welcome <span class='welcomeName'>"+loginNameF+" "+loginNameL+"</span>";
//								document.getElementById('userInfoFormDiv').style.display="none";
								$('newUserOnly').style.display="none";
								document.forms.userInfoForm.userUserName.value=loginName;
								document.forms.userInfoForm.cbxNewUser.checked=false;
								document.forms.userInfoForm.newUserL.value="";
								document.forms.userInfoForm.newUserF.value="";
								document.forms.userInfoForm.newUserPW.value="";//alert(newStartLat+" "+newStartLng);

	if (google.loader.ClientLocation){
		var gLoaderClientLocLat=google.loader.ClientLocation.latitude;
		var gLoaderClientLocLng=google.loader.ClientLocation.longitude;
	}

//								var defaultStart = new google.maps.LatLng(44.93758, -93.21350); 
								var defaultStart = new google.maps.LatLng(parseFloat(gLoaderClientLocLat), parseFloat(gLoaderClientLocLng)); 
								if ((newStartLng==0) || (newStartLat==0) || (newStartLng=="") || (newStartLat=="") || (newStartLng==null) || (newStartLat==null)) {
									newStart = defaultStart;
									zoomLvl=pickAZoom();
								} else {
									newStart = new google.maps.LatLng(parseFloat(newStartLat), parseFloat(newStartLng));	
									zoomLvl=15;
								}
								mCtr=newStart;
								map.setCenter(newStart, zoomLvl);
								pointArray[0]=new spot();
//												pointArray[0].elev=newStartElev;
//															buildElevInfo(0,newStartElev);
//															displayElevInfo(0);
								if (userUserName=="AnonymousUser") {
									var rtDiv=$('routeSelect');
									while (rtDiv.hasChildNodes()){rtDiv.removeChild(rtDiv.childNodes[0]);}
									$('divSaveRoute').style.display='none';
								}else{
									fetchMyRoutes();
									var rtDlet=$('routeDelete');
									while (rtDlet.hasChildNodes()){rtDlet.removeChild(rtDlet.childNodes[0]);}
									var spc = document.createTextNode(' ');
									$('routeDelete').appendChild(spc);
									var br = document.createElement('br');
									$('routeDelete').appendChild(br);
									$('divSaveRoute').style.display='block';
									if (newStart==defaultStart){
									}else{
										drawStart(newStart);
									}
								}
							} else {
								$("loggedInAs").innerHTML="Please Signin";
								$("msgLoginWelcome").innerHTML="<span style=\"color:red;\">Login Failed for "+userUserName+"</span>";
							}
						}
					}
		fetch.send(null);
	}
	var cbxKMs=getCookie('runnerMapShowKMs');
	var cbxMiles=getCookie('runnerMapShowMiles');
	if (cbxKMs=="false") $('cbxKmMarker').checked=false;
	else $('cbxKmMarker').checked=true;
	if (cbxMiles=="false") $('cbxMileMarker').checked=false;
	else $('cbxMileMarker').checked=true;
	rmvShowMkrs('all');
//	if (parmRoute)fetchOneRoute(parmRoute);
	var whichTab=getCookie('runnerMapMenuTab');
	if (!whichTab)whichTab='signin';
	doIt(whichTab);
	map.checkResize();

	initLoadDone=true;
//	$('ctlRedoA').href='javascript:this.blur();exit;';
//	$('ctlUndo').className=null;
}

function pickAZoom(){
	if(google.loader.ClientLocation.address.city) return 12;
	if(google.loader.ClientLocation.address.region) return 6;
	if(google.loader.ClientLocation.address.country) return 4;
	return 2;
}

function mapDragEnd(){
	mCtr=map.getCenter();
	return;
}

function winResize(){
	if ($('leftColumn').style.display=='none'){
		setDivWidths(false);
	}else{
		setDivWidths(true);
	}
	map.checkResize();
	map.setCenter(mCtr);
	return;
}

function processStraight(xxS,endPoint) {
	var loc1=pointArray[xxS-1].point.lat()+","+pointArray[xxS-1].point.lng();
	var loc2=endPoint.lat()+","+endPoint.lng();
	var wkPoly=[];
	wkPoly[0]=new google.maps.LatLng(pointArray[xxS-1].point.lat(),pointArray[xxS-1].point.lng());
	wkPoly[1]=new google.maps.LatLng(endPoint.lat(),endPoint.lng());
	xxPoly=new google.maps.Polyline(wkPoly);
	var routeDist=xxPoly.Distance();
	routeDrawCalc(xxS,wkPoly,routeDist);
}

function processRoute(xxR,endPoint) {
	var gdir = new google.maps.Directions();
	if (ctrlKey){
		var loc2=pointArray[xxR-1].point.lat()+","+pointArray[xxR-1].point.lng();
		var loc1=endPoint.lat()+","+endPoint.lng();
	}else{
		var loc1=pointArray[xxR-1].point.lat()+","+pointArray[xxR-1].point.lng();
		var loc2=endPoint.lat()+","+endPoint.lng();
	}
	gdir.load(loc1+" to "+loc2, {getSteps:false, getPolyline:true, preserveViewport:true, locale:"en_US"});
	google.maps.Event.addListener(gdir, "load", function loadComplete(){
			var myPoly=gdir.getPolyline();
			var wkPoly=tersePoly(myPoly);
			var routeDist=gdir.getDistance().meters;
			pointArray[xxR].poly=wkPoly;
			pointArray[xxR].distUnit=routeDist;
			routeDrawCalc(xxR,wkPoly,routeDist);
											}
										);
}

function tersePoly(thePoly) {
	var wkPoly=[];
	var prevNtry="";
	var w=0;
	if(ctrlKey){
		for(var i=thePoly.getVertexCount()-1; i>=0; i--) {
			var wkPoint=new google.maps.LatLng(roundDec(thePoly.getVertex(i)['y'],5),roundDec(thePoly.getVertex(i)['x'],5));
			if (wkPoint==prevNtry){
			}else{
				wkPoly[w]=wkPoint;
				w++;
			}
			prevNtry=wkPoint;
		}
	}else{
		for(var i=0; i<thePoly.getVertexCount(); i++) {
			var wkPoint=new google.maps.LatLng(roundDec(thePoly.getVertex(i)['y'],5),roundDec(thePoly.getVertex(i)['x'],5));
			if (wkPoint==prevNtry){
			}else{
				wkPoly[w]=wkPoint;
				w++;
			}
			prevNtry=wkPoint;
		}
	}
	return wkPoly;
}


//var distMarks=[],dmX=0;

function routeDrawCalc(ptX,poly,routeDist){
	var polyLen=poly.length;
	var p1=new google.maps.LatLng(parseFloat(poly[polyLen-2].lat()), parseFloat(poly[polyLen-2].lng()));
	var p2=new google.maps.LatLng(parseFloat(poly[polyLen-1].lat()), parseFloat(poly[polyLen-1].lng()));
	brg=bearing(p1, p2);
	compassBrg = compassBearing(brg);
	document.getElementById("msgBrg").innerHTML = Math.round(brg) + "&#176; (" + compassBrg + ")";//&#176; is a degrees sign
	distMeters = routeDist;
	distKMeters = distMeters / 1000;
	distMiles = distMeters * meters2miles;
	totalDistMiles+=distMiles;
	totalDistMeters+=distMeters;
	var lineSegment = new google.maps.Polyline(poly);//,{clickable:true});
	map.addOverlay(lineSegment);

	var p,kmPtr,milePtr,wkWas,wkIs,init;

	wkWas=totalDistMeters-distMeters;
	wkIs=distMeters;
	var incr = 1000;
	if (totalDistMeters>20000)incr=5000;
	if (totalDistMeters>50000)incr=10000;
	if (totalDistMeters>100000)incr=25000;
	init=incr-(wkWas%incr);
	var distMarks=[],dmX=0;
//	distMarks=[];dmX=0;
	if (showKM) {
		while (init < wkIs) {
			p = lineSegment.GetPointAtDistance(init);
			kmPtr = new google.maps.Marker(p,{icon:yellowIcon, title:((init+wkWas)/1000)+" Kilometers"});
			map.addOverlay(kmPtr);
			distMarks[dmX]=kmPtr;dmX++;
			init+=incr;
		}
	}
	incr = metersPerMile;
	if (totalDistMiles>20)incr=5*metersPerMile;
	if (totalDistMiles>35)incr=10*metersPerMile;
	if (totalDistMiles>60)incr=25*metersPerMile;
	init=incr-(wkWas%incr);
	if (showMiles) {
		while (init < wkIs) {
			p = lineSegment.GetPointAtDistance(init);
			milePtr = new google.maps.Marker(p,{icon:greenIcon, title:Math.round((init+wkWas)/metersPerMile)+" Miles"});//alert(milePtr.getIcon().toSource());//alert(milePtr.toSource());
			map.addOverlay(milePtr);
			distMarks[dmX]=milePtr;dmX++;
			init+=incr;
		}
	}
	updDistanceInfo(ptX);
	var marker = createMarker(p2, ptX, compassBrg);
	map.addOverlay(marker);
	pointArray[ptX].point=p2;
	pointArray[ptX].distTotal=totalDistMeters;
	pointArray[ptX].distUnit=distMeters;
	pointArray[ptX].marker=marker;
	pointArray[ptX].lineSegment=lineSegment;
	pointArray[ptX].distMarks=distMarks;
	pointArray[ptX].type=(pointArray[ptX].type==""||pointArray[ptX].type==null)?inputType.substr(0,1):pointArray[ptX].type;
	pointArray[ptX].poly=poly;
	xx++;
	if (($('divUndo').className=='ctlDisabled')  ||  (browser.isIE)) enableBtn('Undo');
}

function enableBtn(btnName){
	var ankr, ankrName, img, caption, capTxt;
	var ankrOp=btnName.substr(0,1).toLowerCase();
	ankrOp+=btnName.substr(1);//btnName will usually be first letter uc, but its function's name is first letter lc
	ankr=document.createElement('a');
	ankrName='ctl'+btnName;//+'Ankr';
	ankr.setAttribute('id',ankrName);
	ankr.setAttribute('href','javascript:$("'+ankrName+'").blur();'+ankrOp+'();');
	ankr.className=('controlIcon');

	img=document.createElement('img');
//	img.setAttribute('id','ctl'+btnName+'Img');
	img.setAttribute('src','/maps/ico/icon'+btnName+'.png');
	img.setAttribute('title',btnName);
	img.setAttribute('alt',btnName);
	img.setAttribute('width','32');
	img.setAttribute('height','32');
	img.style.border='0';
	img.style.textDecoration='none';
	ankr.appendChild(img);

	caption=document.createElement('div');
//	caption.setAttribute('id','ctl'+btnName+'Caption');
	caption.className='caption';
	capTxt=document.createTextNode(btnName);
	caption.appendChild(capTxt);
	var rdDiv=$('div'+btnName);
	while (rdDiv.hasChildNodes()){
		rdDiv.removeChild(rdDiv.childNodes[0]);//alert('deleted child node');
	}
	$('div'+btnName).appendChild(ankr);
	$('div'+btnName).appendChild(caption);
	$('div'+btnName).className='ctlEnabled';
}
function disableBtn(btnName){
	var img, caption, capTxt;
	img=document.createElement('img');
	img.setAttribute('src','/maps/ico/icon'+btnName+'.png');
	img.setAttribute('title',btnName);
	img.setAttribute('alt',btnName);
	img.setAttribute('width','32');
	img.setAttribute('height','32');
	img.style.border='0';
	img.style.textDecoration='none';

	caption=document.createElement('div');
	caption.className='caption';
	capTxt=document.createTextNode(btnName);
	caption.appendChild(capTxt);
	var rdDiv=$('div'+btnName);
	while (rdDiv.hasChildNodes()){
		rdDiv.removeChild(rdDiv.childNodes[0]);//alert('deleted child node');
	}
	$('div'+btnName).appendChild(img);
	$('div'+btnName).appendChild(caption);
	$('div'+btnName).className='ctlDisabled';
}
function drawStart(point) {
	distMiles = 0.00;
	distMeters = 0.00;
	distKMeters = 0.00;
	totalDistMiles = 0.00;
	totalDistMeters = 0.00;
	updDistanceInfo(0);
	var marker = createMarker(point, 0);
	map.addOverlay(marker);
	if(!pointArray[0]) {
		pointArray=[];
		pointArray[0]=new spot();
	}
	pointArray[0].point=point;
	pointArray[0].distTotal=totalDistMeters;
	pointArray[0].distUnit=distMeters;
	pointArray[0].marker=marker;
	pointArray[0].type="s";
	pointArray[0].poly=null;
	xx=1;
}

function reverseCourse(){
	var tempXX=xx-1;	// (temp) index for pointArray
	var tempArray=[];	// will be indexed by tempX
	var last=pointArray[tempXX].poly.length-1;
//	alert(pointArray[xxMax].poly[last]);
	tempArray[0]=new spot();
	tempArray[0].point=pointArray[tempXX].poly[last];//alert(tempArray[0].point);
	var tempX=1;
	while (tempXX > 0){//only go down to [1], 'cuz [0] has a null poly, and the first point of the [1].poly is the same as point[0]
		tempArray[tempX]=new spot();
		tempArray[tempX].poly=[];
//		wkPolyLine.getLength()
		tempArray[tempX].distUnit=pointArray[tempXX].distUnit;
//		var polyX=pointArray[tempX].poly.length-1;
		tpX=0;//if (tempXX==2)alert(pointArray[tempXX].poly.toSource());
		for (var polyX=pointArray[tempXX].poly.length-1; polyX > -1; polyX--){
			tempArray[tempX].poly[tpX]=pointArray[tempXX].poly[polyX];
			tpX++;
		}//alert(pointArray[tempXX].toSource()+"\n\n"+tempArray[tempX].toSource());
		tempXX--;tempX++;
	}
	pointArray=tempArray;
	rebuildMap();
}

function rebuildMap() {
	map.clearOverlays();
	var xxMax=xx;
	if (xxMax>0){
		point=pointArray[0].point;
		drawStart(point);
		var wkXX=1;
		for (wkXX=1;wkXX<xxMax;wkXX++) {
			routeDrawCalc(wkXX,pointArray[wkXX].poly,pointArray[wkXX].distUnit,1);
		}
	}
}

function createMarker(point, index, brg) {
	if (index==0)
		arrowIcon=blueDotIcon;
	else {
		arrowIcon=getArrow(brg);
	}
	var marker = new google.maps.Marker(point, {icon:arrowIcon, draggable:true, bounceGravity:0, title:"Point#"+index});
	google.maps.Event.addListener(marker, "click", function() 	{		displayInfo(index);	}		);
	google.maps.Event.addListener(marker, "dragend", function() 	{	updPoint(index, marker.getPoint());	}		);
	return marker;
}

function displayInfo(index) {
	var myConnectAndReverseMsg="CONNECT and REVERSE from here";
	var myCloseMsg="CONTINUE from here back to start point";
	var myAddAfterMsg="ADD AFTER this point";
	var myAddBeforeMsg="ADD BEFORE this point";
	var myDeleteOneMsg="DELETE JUST this one";
	var myDeleteFromHereMsg="DELETE ALL from here";
	var html = [new google.maps.InfoWindowTab("Actions", "<div style='font-size:x-small; white-space:nowrap;'>\
								<a href='javascript:closePointsList();'>Close Route To Start</a><br />\
								<a href='javascript:connectAndReverse("+index+","+pointArray[index].point.lng()+","+pointArray[index].point.lat()+")'>Connect To Here And Reverse Back To Start</a><br />\
								<a href='javascript:addAfterThis("+index+")'>Add A Point AFTER This One</a><br />\
								<a href='javascript:addBeforeThis("+index+")'>Add A Point BEFORE This One</a><br />\
								<a href='javascript:deleteThisONE("+index+")'>Delete Just This Point</a><br />\
								<a href='javascript:deleteFromHere("+index+")'>Delete From Here To End</a>\
								</div>"),
							new google.maps.InfoWindowTab("Point Info", "<div style='font-size:x-small; white-space:nowrap;'>\
								Point #"+index+"<br />\
								Lat: "+roundDec(pointArray[index].point.lat(),5)+"<br />\
								Lng: "+roundDec(pointArray[index].point.lng(),5)+"<br />\
								Elev Meters: "+roundDec(pointArray[index].elev,2)+" Feet: "+roundDec((pointArray[index].elev * meters2feet),2)+"<br />\
								Unit Miles: "+roundDec(pointArray[index].distUnit * meters2miles,4)+" kMeters: "+roundDec((pointArray[index].distUnit / 1000),4)+"<br />\
								Total Miles: "+roundDec(pointArray[index].distTotal * meters2miles,4)+" kMeters: "+roundDec((pointArray[index].distTotal / 1000),4)+"<br /></div>")
							];
	pointArray[index].marker.openInfoWindowTabsHtml(html);
}

var clickPending=false;
function mouseClick(ol,p) {
	if(clickPending){
		clearTimeout(clickPending);
		clickPending=false;
		return;
	}
	clickPending=window.setTimeout(function(){processMapClick(ol,p)},350);
}

function mouseDblClick(){
	if(clickPending){
		clearTimeout(clickPending);
		clickPending=false;
		return;
	}
}

function processMapClick(overlay, point)  {
	clickPending=false;
	if (point){
		pointArray[xx]=new spot();
		point= new google.maps.LatLng(parseFloat(roundDec(point.lat(),5)),parseFloat(roundDec(point.lng(),5)));
		if ((abtState==1) || (aatState==1)){
			if (aatState==1){
				addAfterThis(aatPoint, point);
			}else{
				addBeforeThis(abtPoint, point);
			}
		}else{
			$("msgNum").innerHTML = "Point # " + xx ;
			if (xx==0){
				drawStart(point);
			}else{
				if (inputType=='straight') {
					processStraight(xx,point);
				}else{
					processRoute(xx,point);
				}
			}
		}
	}
}

function mapClick(e) {
	ctrlKey = e.ctrlKey;
	shiftKey = e.shiftKey;
	altKey = e.altKey;
}

var showPoints=true;
var showKM=true;
var showMiles=true;

function rmvShowMkrs(type) {
	var cbxChecked;
	if ((type=="kmMarks") || (type=="all")) {
		cbxChecked = $('cbxKmMarker').checked;
		if (cbxChecked) {
			showKM=true;
			$('kmMarker').className='opq';
		}else{
			showKM=false;
			$('kmMarker').className='trnsprnt';
		}
		$('kmMarker').src="http://chart.apis.google.com/chart?cht=mm&chs=20x20&chco=ffffffcc,ffff00cc,000000ff&ext=.png";
		var expDate=new Date();
		expDate.setDate(+9999);
		document.cookie="runnerMapShowKMs="+cbxChecked+";expires="+expDate;
	}
	if ((type=="mileMarks") || (type=="all")) {
		cbxChecked = $('cbxMileMarker').checked;
		if (cbxChecked) {
			showMiles=true;
			$('mileMarker').className='opq';
		}else{
			showMiles=false;
			$('mileMarker').className='trnsprnt';
		}
		$('mileMarker').src="http://chart.apis.google.com/chart?cht=mm&chs=20x20&chco=ffffffcc,00cc00cc,000000ff&ext=.png";
		var expDate=new Date();
		expDate.setDate(+9999);
		document.cookie="runnerMapShowMiles="+cbxChecked+";expires="+expDate;
	}
	rebuildMap();
}

