


function ToggleMapAdminInstructions(onoff) {
	if(onoff==1) {
		ToggleDiv("AddlLabel1", 0);
		ToggleDiv("AddlLabel2", 1);
		ToggleDiv("AddlInstructions", 1);
	} else {
		ToggleDiv("AddlLabel1", 1);
		ToggleDiv("AddlLabel2", 0);
		ToggleDiv("AddlInstructions", 0);
	}	
}

function ToggleMapData(theid, onoff) {
	ToggleDiv("MapDataChunk"+theid, onoff);
	if(onoff==1) {
		ToggleDiv("MapDataOff"+theid, 1);
		ToggleDiv("MapDataOn"+theid, 0);
	} else {
		ToggleDiv("MapDataOff"+theid, 0);
		ToggleDiv("MapDataOn"+theid, 1);
	}
}


//	MESSAGE CENTER - OFFSITE EMAILS
function ToggleMsgDetails(theid) {
	var currstat = GetCSSStyle("MsgDetails"+theid, "display");
	if(currstat=="none") {
		ToggleDiv("MsgDetails"+theid, 1);
		ToggleDiv("MsgToggler"+theid+"_Off", 0);
		ToggleDiv("MsgToggler"+theid+"_On", 1);
	} else {
		ToggleDiv("MsgDetails"+theid, 0);
		ToggleDiv("MsgToggler"+theid+"_Off", 1);
		ToggleDiv("MsgToggler"+theid+"_On", 0);
	}
}

/////////////////////////////////////////////////////////////////////
/////		NOTG FUNCTIONS					/////
/////////////////////////////////////////////////////////////////////

function NOTG_Flip_Email() {
	if(GetCheckbox("notg_reminders1")==1) {
		ToggleDiv("notg_emailpanel", 1);
	} else {
		ToggleDiv("notg_emailpanel", 0);
	}
}


/////////////////////////////////////////////////////////////////////
/////		SLIDESHOW FUNCTIONS				/////
/////////////////////////////////////////////////////////////////////

function kickstart_slideshow() {
	//	get array of images
	slide_imgs = document.getElementById("rotatingmodule").getElementsByTagName("div");
	if(slide_curr==(slide_imgs.length-1)) slide_next = 0; else slide_next = slide_curr + 1;
	//	rip thru em all setting z-indexes and opacities
	for(i=0;i<=(slide_imgs.length-1);i++) {
		if(i==slide_curr) {
			//	this is the NEW CURRENT image - set it to HIGH z-index & Opacity
			document.getElementById("RotateImage"+slide_curr).style.direction='ltr';
			document.getElementById("RotateImage"+slide_curr).style.zIndex=(slide_imgs.length+5);
			setOpacity(document.getElementById("RotateImage"+slide_curr), 1);
		} else if(i==slide_next) {
			//	this is the NEW NEXT image - set it to lower z-index & no Opacity
			document.getElementById("RotateImage"+slide_next).style.direction='ltr';
			document.getElementById("RotateImage"+slide_next).style.zIndex=(slide_imgs.length+4);
			setOpacity(document.getElementById("RotateImage"+slide_next), 0);
		} else {
			//	set zindex and opacity to zero
			document.getElementById("RotateImage"+i).style.direction='ltr';
			document.getElementById("RotateImage"+i).style.zIndex=i;
			setOpacity(document.getElementById("RotateImage"+i), 0);
		}
	}
	//	set the opacity vars, then start the fade in 4.5 seconds
	slide_curr_opac = 1; slide_next_opac = 0;
	setTimeout("run_slideshow()", 4500);
}
function run_slideshow() {
	//	shift the opacities
	slide_curr_opac = slide_curr_opac - .08;
	slide_next_opac = slide_next_opac + .08;
	if(slide_curr_opac<.08) {
		slide_curr_opac = 0;
		slide_next_opac = 1;
	}
	document.getElementById("RotateImage"+slide_curr).style.direction='ltr';
	setOpacity(document.getElementById("RotateImage"+slide_curr), slide_curr_opac);
	document.getElementById("RotateImage"+slide_next).style.direction='ltr';
	setOpacity(document.getElementById("RotateImage"+slide_next), slide_next_opac);
	//	see if the fade is done
	if(slide_curr_opac<.08) {
		slide_imgs = document.getElementById("rotatingmodule").getElementsByTagName("div");
		for(i=0;i<slide_imgs.length;i++) {
			document.getElementById("RotateImage"+i).style.zIndex = 3;
		}
		document.getElementById("RotateImage"+slide_next).style.zIndex = 5;
		document.getElementById("RotateImage"+slide_curr).style.zIndex = 4;
		slide_curr = slide_next;
		setTimeout("kickstart_slideshow()", 10);
	} else {
		setTimeout("run_slideshow()", 10);
	}
}

/////////////////////////////////////////////////////////////////////
/////		PHOTO GALLERY DISPLAY FUNCTIONS			/////
/////////////////////////////////////////////////////////////////////

function GalleryLoad() {	
	//	disable BACK button, perhaps FORWARD too
	document.getElementById("GalleryLeftButton").style.display = 'none';
	if(gallcnt<10) document.getElementById("GalleryRightButton").style.display = 'none';
	//	set a border around the first photo, make first caption appear
	document.getElementById("GalleryThumb1").style.border = 'solid red 1px';
	document.getElementById("GalleryCaption1").style.display = 'block';
	//	kick the lightbox into action
	initLightbox();
}

function ShowGalleryPreview(ky) {
	var lft = document.getElementById("GalleryThumb"+ky).style.left;
	lft = parseFloat(lft.replace(/px/,"")) + 10;
	lft = lft - ((gslideron-1)*40);
	var lval = lft + "px";
	SetCSSStyle("GalleryBubble", "left", lval);
	var slidesrc = document.getElementById("GalleryThumb"+ky).src;
	slidesrc = slidesrc.replace(/_thumb/, "_mid");
	document.getElementById("GalleryBubbleImage").src = slidesrc;
	DoFade("GalleryBubble", "+", 0, 50, 3);
}

function HideGalleryPreview(ky) {
	if(typeof GalleryTimer3!='undefined') clearTimeout(GalleryTimer3);
	document.getElementById("GalleryBubble").style.filter = 'alpha(opacity=0)';
	document.getElementById("GalleryBubble").style.MozOpacity = 0;
	document.getElementById("GalleryBubble").style.KhtmlOpacity = 0;
	document.getElementById("GalleryBubble").style.opacity = 0;
}

function GallerySwitchItem(ky) {
	HideGalleryPreview(ky);
	if(typeof GalleryTimer1!='undefined') clearTimeout(GalleryTimer1);
	if(typeof GalleryTimer2!='undefined') clearTimeout(GalleryTimer2);
	for(x=1;x<=gallcnt;x++) {
		if(x!=ky && x!=gvieweron) {
			setOpacity(document.getElementById("GalleryBigPictureFrame"+x), 0);
			SetCSSStyle("GalleryBigPictureFrame" + x, "zIndex", 0);
			SetCSSStyle("GalleryCaption" + x, "zIndex", 0);
		}
	}
	SetCSSStyle("GalleryBigPictureFrame" + gvieweron, "zIndex", 1);
	SetCSSStyle("GalleryBigPictureFrame" + ky, "zIndex", 2);
	SetCSSStyle("GalleryCaption0", "zIndex", 0);
	SetCSSStyle("GalleryCaption" + gvieweron, "zIndex", 1);
	SetCSSStyle("GalleryCaption" + ky, "zIndex", 2);
	  document.getElementById("GalleryCaption"+ky).style.display = 'block';
    if(gvieweron!=ky) document.getElementById("GalleryCaption"+gvieweron).style.display = 'none';
	DoFade("GalleryBigPictureFrame" + gvieweron, "-", 1, 20, 1);
	DoFade("GalleryBigPictureFrame" + ky, "+", 0, 20, 2);
	SetCSSStyle("GalleryThumb" + gvieweron, "border", "solid black 1px");
	SetCSSStyle("GalleryThumb" + ky, "border", "solid red 1px");
	gvieweron = ky;
}

function MoveGallerySlides(dir) {
	if(dir=="R") { var finalpos = gsliderpos - 40; var inc = -4; }
	if(dir=="L") { var finalpos = gsliderpos + 40; var inc = 4; }
	//	see if the NEXT slide is the END one (either way)
	if(gslideron==2 && dir=="L") document.getElementById("GalleryLeftButton").style.display = 'none'; else document.getElementById("GalleryLeftButton").style.display = 'block';
	if((gallcnt-gslideron)<10 && dir=="R") document.getElementById("GalleryRightButton").style.display = 'none'; else document.getElementById("GalleryRightButton").style.display = 'block';
	//	now kick the timer event
	MoveGalleryScroller(dir, finalpos, inc);
}

function MoveGalleryScroller(dir, finalpos, inc) {
	gsliderpos = gsliderpos + inc;
	SetCSSStyle("GallerySlideInnerContainer", "left", gsliderpos + "px");
	if((dir=="R" && gsliderpos>finalpos) || (dir=="L" && gsliderpos<finalpos)) {
		setTimeout("MoveGalleryScroller('" + dir + "'," + finalpos + "," + inc + ")", 2);
	} else {
		if(dir=="L") gslideron--; else gslideron++;
	}
}



/////////////////////////////////////////////////////////////////////
/////		PHOTO GALLERY SETUP FUNCTIONS				/////
/////////////////////////////////////////////////////////////////////

function AddPhoto(captiondefault) {

	var photos_prev = GetValue("photos_prev");
	var photos_tot = GetValue("photos_tot");

	if(photos_tot - photos_prev >= 5) {
		alert("You cannot upload more than five photos at a time.\nPlease select 'I want to add more photos' below to provide additional ones on the next page.");
		return;
	}
	photos_tot++;
	SetValue("photos_tot", photos_tot);

	var rc = [];
	rc[0] = photos_tot + ". <input type=\"file\" name=GalleryFile" + photos_tot + " size=\"35\" style=\"margin-top: 10px; margin-bottom: 10px;\"><br><textarea name=\"GalleryCaption" + photos_tot + "\" id=\"GalleryCaption" + photos_tot + "\" rows=\"5\" cols=35 value=\"" + captiondefault + "\"></textarea>";
  rc[1] = "";
	AddTableRow("GalleryItems", rc, -1);
  InitiateEditor('GalleryCaption' + photos_tot);
	return;
}

function InitiateEditor(idhandle) {
    var new_editor = new tinymce.Editor(idhandle, {
    	mode : "exact",
    	theme : "advanced",
    	plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
    	theme_advanced_buttons1 : "bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright, justifyfull,bullist,numlist,undo,redo,link,unlink,|,table,|,code",
    	theme_advanced_buttons2 : "forecolor,fontselect,fontsizeselect,formatselect,|,cut,copy,paste,pastetext",
    	theme_advanced_buttons3 : "",
    	theme_advanced_toolbar_location : "top",
    	theme_advanced_toolbar_align : "left",
    	theme_advanced_statusbar_location : "bottom",
      valid_elements : "@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p[align],-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote,-table[border=0|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value|_value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big"
    });
    new_editor.render();
}

function ToggleSelPhoto(pid) {
	//	get value of checkbox
	var cval = GetCheckbox("SelShow"+pid);
	if(cval=="") var classname = "PGnosel"; else var classname = "PGselimg";
	SetClass("PickPhoto"+pid, classname);
}

function ToggleCatPhoto(pid) {
	//	get value of checkbox
	var cval = GetCheckbox("SelShowOnCat"+pid);
	if(cval=="") var classname = "PGnosel2"; else var classname = "PGselimg2";
	SetClass("ShowOnCatToggle"+pid, classname);
}

function HideSubmitButton() {
	ToggleParentDiv("SubmitShowButton", 0);
	ToggleParentDiv("SubmitHideButton", 1);
}

function ToggleSubmitValue() {
	var curr = getSelectedRadioValue(document.form1.continueoption);
	if(curr==1) var html = " Continue ";
	if(curr==2) var html = " Submit ";
	SetValue("SubmitButton", html);
}

function ConfirmDeletePhoto() {
	//	make sure they want to delete this photo
	var answer = confirm("Are you sure you want to delete this Photo?")
	if (answer) return true; else return false;
}

/////////////////////////////////////////////////////////////////////
/////		MAPPING FUNCTIONS				/////
/////////////////////////////////////////////////////////////////////

function ToggleMainMap(setto) {
	//	hide the Address Error message, if visible
	ToggleDiv("mapsetpoint_error", 0);
	ToggleDiv("mapsetpoint_error2", 0);
	ToggleDiv("mapdistance_pick", 0);
	//	get value of starting point address
	var mapsetpoint = GetValue("mapsetpoint");
	var trailheadswithin = GetValue("trailheadswithin");
	if(setto==0) {
		//	BY ROUTE -- reload main window here
		var mapaddr = "maps_show.php?view=route&filter=*&startpoint=" + mapsetpoint;
		if(showtrailheads==1) mapaddr = mapaddr + "&trailheadswithin=" + GetValue("trailheadswithin");
		document.getElementById("MapAreaDisplay").src = mapaddr;
		//	reload pulldown options here
		ToggleDiv("MapFilterRoute", 1);
		ToggleDiv("MapFilterDifficulty", 0);
    SetClass("map_tabbing1", "map_tab_on");
    SetClass("map_tabbing2", "map_tab_off");
	} else {
		//	reload main window here
		var mapaddr = "maps_show.php?view=difficulty&filter=*&startpoint=" + mapsetpoint;
		if(showtrailheads==1) mapaddr = mapaddr + "&trailheadswithin=" + GetValue("trailheadswithin");
		document.getElementById("MapAreaDisplay").src = mapaddr;
		//	By DIFFICULTY -- reload pulldown options here
		ToggleDiv("MapFilterRoute", 0);
		ToggleDiv("MapFilterDifficulty", 1);
    SetClass("map_tabbing1", "map_tab_off");
    SetClass("map_tabbing2", "map_tab_on");
	}
	maptoggleto = setto;
	// BuildMapBreadcrumbs();
}

function FireMainMapPage(spointrequired) {
	ToggleDiv("mapsetpoint_error", 0);
	var mapsetpoint = GetValue("mapsetpoint");
	if(mapsetpoint=="" && spointrequired==1) {
		SetDivHTML("mapsetpoint_error", "You did not enter a Starting Address.");
		ToggleDiv("mapsetpoint_error", 1);
		return false;
	}
	ToggleDiv("FindAddressLoading", 1);
	//	get vars to send back
	if(maptoggleto==0) {
		var maptype = "route";
		var mapfilter = GetValue("MapFilterByRoute");
	} else {
		var maptype = "difficulty";
		var mapfilter = GetValue("MapFilterByDifficulty");
	}
	//	build address, kick it to it
	var mapaddr = "maps_show.php?view=" + maptype + "&filter=" + mapfilter + "&startpoint=" + mapsetpoint + "&mtype=main";
	document.getElementById("MapAreaDisplay").src = mapaddr;
	SetValue("mapstartpointbutton", "  UPDATE  ");
}

function FireTrailheadStartAddress() {
	showtrailheads = 0;
	ToggleDiv("mapsetpoint_error", 0);
	var mapsetpoint = GetValue("mapsetpoint");
	if(mapsetpoint=="" && spointrequired==1) {
		SetDivHTML("mapsetpoint_error", "You did not enter a Starting Address.");
		ToggleDiv("mapsetpoint_error", 1);
		return false;
	}
	ToggleDiv("FindAddressLoading", 1);
	//	get vars to send back
	if(maptoggleto==0) {
		var maptype = "route";
		var mapfilter = GetValue("MapFilterByRoute");
	} else {
		var maptype = "difficulty";
		var mapfilter = GetValue("MapFilterByDifficulty");
	}
	//	build address, kick it to it
	var mapaddr = "maps_show.php?view=" + maptype + "&filter=" + mapfilter + "&startpoint=" + mapsetpoint + "&mtype=trailheads";
	document.getElementById("MapAreaDisplay").src = mapaddr;
	SetValue("mapstartpointbutton", "  UPDATE  ");
}

function FireTrailheadSearch() {
	showtrailheads = 1;
	ToggleDiv("mapsetpoint_error", 0);
	var mapsetpoint = GetValue("mapsetpoint");
	if(mapsetpoint=="") {
		SetDivHTML("mapsetpoint_error", "You did not enter a Starting Address.");
		ToggleDiv("mapsetpoint_error", 1);
		return false;
	}
	ToggleDiv("FindTrailLoading", 1);
	//	get vars to send back
	if(maptoggleto==0) {
		var maptype = "route";
		var mapfilter = GetValue("MapFilterByRoute");
	} else {
		var maptype = "difficulty";
		var mapfilter = GetValue("MapFilterByDifficulty");
	}
	//	build address, kick it to it
	var twithin = GetValue("trailheadswithin");
	var mapaddr = "maps_show.php?view=" + maptype + "&filter=" + mapfilter + "&startpoint=" + mapsetpoint + "&trailheadswithin=" + twithin + "&mtype=trailheadsearch";
	document.getElementById("MapAreaDisplay").src = mapaddr;
	SetValue("mapstartpointbutton", "  UPDATE  ");
}

function FireTrailheadSearchDisplay() {
	ToggleDiv("mapsetpoint_error", 0);
	var mapsetpoint = GetValue("mapsetpoint");
	var twithin = GetValue("trailheadswithin");
	//	set the address
	if(maptoggleto==0) {
		var maptype = "route";
		var mapfilter = GetValue("MapFilterByRoute");
	} else {
		var maptype = "difficulty";
		var mapfilter = GetValue("MapFilterByDifficulty");
	}
	var mapaddr = "maps_show.php?view=" + maptype + "&filter=" + mapfilter + "&startpoint=" + mapsetpoint + "&showalltrailheads=" + showalltrailheads;
	if(showtrailheads==1) mapaddr = mapaddr + "&trailheadswithin=" + twithin;
	document.getElementById("MapAreaDisplay").src = mapaddr;
}

function FireDirectionStartPoint() {
	ToggleDiv("directionheader", 0);
	//	load in the ONE or TWO addresses plus EXTRAS
	var map_startaddress = GetValue("map_startaddress");
	if(map_startaddress=="") {
		SetDivHTML("mapsetpoint_error", "You did not enter a Starting Address.");
		ToggleDiv("mapsetpoint_error", 1);
		return false;
	}
	//	hide the Address Error messages, if visible
	ToggleDiv("FindAddressLoading", 1);
	ToggleDiv("mapsetpoint_error", 0);

	//	get vars to send back
	if(maptoggleto==0) {
		var maptype = "route";
		var mapfilter = GetValue("MapFilterByRoute");
	} else {
		var maptype = "difficulty";
		var mapfilter = GetValue("MapFilterByDifficulty");
	}

	//	build address, kick it to it
	var mapaddr = "maps_directions.php?view=" + maptype + "&filter=" + mapfilter + "&customroute=1&saddr=" + map_startaddress + "&mtype=dirstartpoint";
	for(x=1;x<=extrapoints;x++) {
		mapaddr = mapaddr + "&destAddress" + x + "=" + GetValue("destAddress"+x);
		SetValue("mapstartpointbutton_"+x, "  UPDATE  ");
	}
	document.getElementById("DirectionsFrame").src = mapaddr;
	SetValue("mapstartpointbutton", "  UPDATE  ");
}

function FireDirectionLoad() {
	//	load in the ONE or TWO addresses plus EXTRAS
	var map_startaddress = GetValue("map_startaddress");
	var map_endaddress = GetValue("map_endaddress");
	//	see if Starting Address is required yet missing
	if(map_startaddress=="") {
		SetDivHTML("mapsetpoint_error", "You did not enter a Starting Address.");
		ToggleDiv("mapsetpoint_error", 1);
		return false;
	}
	//	hide the Address Error messages, if visible
	ToggleDiv("directionheader", 1);
	ToggleDiv("FindDirectionsLoading", 1);
	ToggleDiv("mapsetpoint_error", 0);
	ToggleDiv("mapsetpoint_error2", 0);
	ToggleDiv("mapdistance_pick", 0);
	SetValue("directionheader", "");
	final_address = map_endaddress;
	for(x=1;x<=extrapoints;x++) {
		ToggleDiv("mapsetpoint_error_extra"+x, 0);
		final_address = GetValue("destAddress"+x);
	}
	//	get vars to send back
	if(maptoggleto==0) {
		var maptype = "route";
		var mapfilter = GetValue("MapFilterByRoute");
	} else {
		var maptype = "difficulty";
		var mapfilter = GetValue("MapFilterByDifficulty");
	}
	//	build address, kick it to it
	var mapaddr = "maps_directions.php?view=" + maptype + "&filter=" + mapfilter + "&customroute=1&saddr=" + map_startaddress + "&eaddr=" + map_endaddress + "&extrapoints=" + extrapoints + "&mtype=dirloaddirections";
	for(x=1;x<=extrapoints;x++) {
		mapaddr = mapaddr + "&destAddress" + x + "=" + GetValue("destAddress"+x);
		SetValue("mapstartpointbutton_"+x, "  UPDATE  ");
	}
	document.getElementById("DirectionsFrame").src = mapaddr;
	SetValue("mapstartpointbutton", "  UPDATE  ");
	SetDivHTML("directionheader", "<img height=10 width=1><br><b>STREET DIRECTIONS FROM<br>" + map_startaddress + " TO " + final_address + "</b><br><img height=10><br>");
}

function FireDirectionLoadDisplay() {
	//	load in the ONE or TWO addresses plus EXTRAS
	var map_startaddress = GetValue("map_startaddress");
	var map_endaddress = GetValue("map_endaddress");
	//	see if Starting Address is required yet missing
	if(map_startaddress=="") {
		SetDivHTML("mapsetpoint_error", "You did not enter a Starting Address.");
		ToggleDiv("mapsetpoint_error", 1);
		return false;
	}
	//	hide the Address Error messages, if visible
	ToggleDiv("directionheader", 1);
	ToggleDiv("mapsetpoint_error", 0);
	ToggleDiv("mapsetpoint_error2", 0);
	ToggleDiv("mapdistance_pick", 0);
	SetValue("directionheader", "");
	final_address = map_endaddress;
	for(x=1;x<=extrapoints;x++) {
		ToggleDiv("mapsetpoint_error_extra"+x, 0);
		final_address = GetValue("destAddress"+x);
	}
	//	get vars to send back
	if(maptoggleto==0) {
		var maptype = "route";
		var mapfilter = GetValue("MapFilterByRoute");
	} else {
		var maptype = "difficulty";
		var mapfilter = GetValue("MapFilterByDifficulty");
	}
	//	build address, kick it to it
	var mapaddr = "maps_directions.php?view=" + maptype + "&filter=" + mapfilter + "&customroute=1&saddr=" + map_startaddress + "&eaddr=" + map_endaddress + "&extrapoints=" + extrapoints + "&mtype=dirloaddirections";
	for(x=1;x<=extrapoints;x++) {
		mapaddr = mapaddr + "&destAddress" + x + "=" + GetValue("destAddress"+x);
		SetValue("mapstartpointbutton_"+x, "  UPDATE  ");
	}
	document.getElementById("DirectionsFrame").src = mapaddr;
	SetValue("mapstartpointbutton", "  UPDATE  ");
	SetDivHTML("directionheader", "<img height=10 width=1><br><b>STREET DIRECTIONS FROM<br>" + map_startaddress + " TO " + final_address + "</b><br><img height=10><br>");

}










function SetMapStartPoint(spointreq) {

	if(showtrailheads==1) ToggleDiv("FindTrailLoading", 1);


	var mapsetpoint = GetValue("mapsetpoint");
	var oldstartpoint = GetValue("oldstartpoint");
	ToggleDiv("mapdistance_pick", 0);
	if(oldstartpoint!="" && oldstartpoint!=mapsetpoint && showtrailheads==1) {
		//	new address entered - previously viewing trailheads
		// showtrailheads = 0;
		ToggleDiv("trailheadresults", 0);
		SetValue("trailheadswithin", "5");
		ToggleDiv("mapdistance_pick", 1);
	}
	if(spointreq==1) {
		//	see if Starting Address is required
		if(mapsetpoint=="") {
			SetDivHTML("mapsetpoint_error", "You did not enter a Starting Address.");
			ToggleDiv("mapsetpoint_error", 1);
			return false;
		}
	}
	//	hide the Address Error message, if visible
	ToggleDiv("mapsetpoint_error", 0);
	ToggleDiv("mapsetpoint_error2", 0);
	//	get vars to send back
	if(maptoggleto==0) {
		var maptype = "route";
		var mapfilter = GetValue("MapFilterByRoute");
	} else {
		var maptype = "difficulty";
		var mapfilter = GetValue("MapFilterByDifficulty");
	}
	//	build address, kick it to it
	var twithin = GetValue("trailheadswithin");
	if(oldstartpoint!="" && oldstartpoint!=mapsetpoint) twithin = "";
	var mapaddr = "maps_show.php?view=" + maptype + "&filter=" + mapfilter + "&startpoint=" + mapsetpoint + "&showalltrailheads=" + showalltrailheads;
	if(showtrailheads==1) mapaddr = mapaddr + "&trailheadswithin=" + twithin;
	// if(oldstartpoint!=mapsetpoint) mapaddr = mapaddr + "&overrideshowtrailheads=1";		//	if they CHANGE the start point, REMOVE trailsearch settings
	document.getElementById("MapAreaDisplay").src = mapaddr;
	SetValue("mapstartpointbutton", "  UPDATE  ");
	SetValue("oldstartpoint", mapsetpoint);
	// BuildMapBreadcrumbs();
}

function BuildMapBreadcrumbs() {
	if(showtrailheads==1) {
		// var prlink1 = "<a href=\"javascript:HideTrailAccess();\">";
		// var prlink2 = "</a>";
		var bcrest = "<b><a href=\"javascript:HideTrailAccess();\">Maps</a></b> &#187; Find Nearby Trail Access";
	} else {
		// var prlink1 = "";
		// var prlink2 = "";
		var bcrest = "<b>Maps</b> &#187;";
	}
	if(maptoggleto==0) {
		// SetDivHTML("MapBreadCrumbs", prlink1 + "Route View" + prlink2 + " &#187; " + bcrest);
		SetDivHTML("MapBreadCrumbs", bcrest);
	} else {
		// SetDivHTML("MapBreadCrumbs", prlink1 + "Difficulty View" + prlink2 + " &#187; " + bcrest);
		SetDivHTML("MapBreadCrumbs", bcrest);
	}
}

function BuildMapDirBreadcrumbs(dirfetched) {
	var map_startaddress = GetValue("map_startaddress");
	var map_endaddress = GetValue("map_endaddress");
	if(map_startaddress!="" && map_endaddress!="") {
		if(maptoggleto==0) var togglename = "route"; else var togglename = "difficulty";
		var prlink1 = "<a href=\"maps_locations.php?view=" + togglename + "\">";
		var prlink2 = "</a>";
		var bcrest = "Get Directions";
	} else {
		var prlink1 = "";
		var prlink2 = "";
		var bcrest = "";
	}
	if(maptoggleto==0) {
		// SetDivHTML("MapDirBreadCrumbs", prlink1 + "Route View" + prlink2 + " &#187; " + bcrest);
	} else {
		// SetDivHTML("MapDirBreadCrumbs", prlink1 + "Difficulty View" + prlink2 + " &#187; " + bcrest);
	}
}

function ShowTrailAccess() {
	//	we'll pass the ADDRESS ENTERED into Directions
	var vl = GetValue("mapsetpoint");
	var newloc = "maps_find.php";
	if(vl!="") newloc = newloc + "?startingaddress=" + vl;
	document.location.href = newloc;
}

function old_ShowTrailAccess() {
	showtrailheads = 1;
	ToggleDiv("trailheaddistance1", 1);
	ToggleDiv("trailheaddistance2", 1);
	ToggleDiv("trailheaddistance3", 1);
	ToggleDiv("TrailheadLocatorInstructions", 1);
	// BuildMapBreadcrumbs();
	// SetMapStartPoint();
}

function HideTrailAccess() {
	showtrailheads = 0;
	ToggleDiv("trailheaddistance1", 0);
	ToggleDiv("trailheaddistance2", 0);
	ToggleDiv("trailheaddistance3", 0);
	ToggleDiv("TrailheadLocatorInstructions", 0);
	// BuildMapBreadcrumbs();
}

function CheckTrailheadToggle() {
	if(showtrailheads!=1) ShowTrailAccess();
}

function FlipToDirections() {
	//	we'll pass the ADDRESS ENTERED into Directions
	document.location.href = 'maps_locations.php?startingaddress=' + GetValue("mapsetpoint");
}

function FlipToMainMap() {
	//	we'll pass the ADDRESS ENTERED into Trailhead Startpoint
	document.location.href = 'maps.php?startingaddress=' + GetValue("mapsetpoint") + "#mapping";
}
function FlipToMainMap2() {
	//	we'll pass the ADDRESS ENTERED into Trailhead Startpoint
	document.location.href = 'maps.php?startingaddress=' + GetValue("map_startaddress") + "#mapping";
}
function FlipToFind() {
	//	we'll pass the ADDRESS ENTERED into Trailhead Startpoint
	document.location.href = 'maps_find.php?startingaddress=' + GetValue("map_startaddress");
}


function PopupHelp(nmb) {
	for(x=1;x<=7;x++) {
		if(x!=nmb) var disp = 0; else var disp = 1;
		ToggleDiv("PHelp"+x, disp);
	}
}

function PopupHelpClose(nmb) {
	ToggleDiv("PHelp"+nmb, 0);
}

function ParentPopupHelp(nmb) {
	for(x=1;x<=7;x++) {
		if(x!=nmb) var disp = 0; else var disp = 1;
		parent.document.getElementById("PHelp"+x).style.display = disp;
	}
}

function GetDirections(saddr,sname,slat,slng,eaddr,ename,elat,elng) {
	document.getElementById('DirectionsFrame').style.height = '425px';
	ToggleDiv("trailheadmap", 0);
	ToggleDiv("trailheaddirections", 1);
	ToggleDiv("MapSaveButton", 0);
	SetDivHTML("directionheader", "<b>STREET DIRECTIONS FROM<br>" + saddr + " TO " + ename + "</b><br><center><br><table><tr><td valign=middle><img src=\"images/loading2.gif\"></td><td valign=middle><b><font color=blue>LOADING DIRECTIONS ...</font></b></td></tr></table>");
	var mpath="maps_directions.php?showback=1&saddr=" + escape(saddr) + "&sname=" + escape(sname) + "&slat=" + escape(slat) + "&slng=" + escape(slng) + "&eaddr=" + escape(eaddr) + "&ename=" + escape(ename) + "&elat=" + escape(elat) + "&elng=" + escape(elng);
	document.getElementById("DirectionsFrame").src = mpath;
}

function DirectionsExit() {
	parent.document.getElementById("trailheadmap").style.display = 'block';
	parent.document.getElementById("trailheaddirections").style.display = 'none';
	var mpath="maps_directions.php?empty=1";
	parent.document.getElementById("DirectionsFrame").src = mpath;
	parent.document.getElementById("MapSaveButton").style.display = 'block';
}

function ToggleAdvancedMapSearch() {

	var currstat = GetCSSStyle("advancedmapsearch", "display");
	if(currstat=="block") {
		var newstat = 0;
		var newimg = "images/expand.png";
	} else {
		var newstat = 1;
		var newimg = "images/collapse.png";
	}
	ToggleDiv("advancedmapsearch", newstat);
	document.getElementById("Mapsearchicon").src = newimg;
}

function UpdateDirectionsPanel(spointreq) {
	//	load in the ONE or TWO addresses plus EXTRAS
	var map_startaddress = GetValue("map_startaddress");
	var map_endaddress = GetValue("map_endaddress");
	//	see if Starting Address is required yet missing
	if(map_startaddress=="") {
		SetDivHTML("mapsetpoint_error", "You did not enter a Starting Address.");
		ToggleDiv("mapsetpoint_error", 1);
		return false;
	}
	//	hide the Address Error messages, if visible
	ToggleDiv("FindAddressLoading", 1);
	ToggleDiv("mapsetpoint_error", 0);
	ToggleDiv("mapsetpoint_error2", 0);
	ToggleDiv("mapdistance_pick", 0);
	SetValue("directionheader", "");
	for(x=1;x<=extrapoints;x++) {
		ToggleDiv("mapsetpoint_error_extra"+x, 0);
	}

	//	get vars to send back
	if(maptoggleto==0) {
		var maptype = "route";
		var mapfilter = GetValue("MapFilterByRoute");
	} else {
		var maptype = "difficulty";
		var mapfilter = GetValue("MapFilterByDifficulty");
	}

	//	build address, kick it to it
	var mapaddr = "maps_directions.php?view=" + maptype + "&filter=" + mapfilter + "&customroute=1&saddr=" + map_startaddress + "&eaddr=" + map_endaddress + "&extrapoints=" + extrapoints + "&mtype=dirstartpoint";
	for(x=1;x<=extrapoints;x++) {
		mapaddr = mapaddr + "&destAddress" + x + "=" + GetValue("destAddress"+x);
		SetValue("mapstartpointbutton_"+x, "  UPDATE  ");
	}
	document.getElementById("DirectionsFrame").src = mapaddr;
	SetValue("mapstartpointbutton", "  UPDATE  ");
	// BuildMapDirBreadcrumbs(1);
}

function ToggleDirMap(setto) {
	if(setto==0) {
		//	By ROUTE -- reload pulldown options here
		ToggleDiv("MapFilterRoute", 1);
		ToggleDiv("MapFilterDifficulty", 0);
		SetCSSStyle("map_tabbing1", "color", "white");
		SetCSSStyle("map_tabbing2", "color", "black");
		maptoggleto = setto;
	} else if(setto==1) {
		//	By DIFFICULTY -- reload pulldown options here
		ToggleDiv("MapFilterRoute", 0);
		ToggleDiv("MapFilterDifficulty", 1);
		SetCSSStyle("map_tabbing1", "color", "black");
		SetCSSStyle("map_tabbing2", "color", "white");
		maptoggleto = setto;
	}
	var map_startaddress = GetValue("map_startaddress");
	var map_endaddress = GetValue("map_endaddress");
	//	get vars to send back
	if(maptoggleto==0) {
		var maptype = "route";
		var mapfilter = GetValue("MapFilterByRoute");
	} else {
		var maptype = "difficulty";
		var mapfilter = GetValue("MapFilterByDifficulty");
	}
	//	build address, kick it to it
	var mapaddr = "maps_directions.php?view=" + maptype + "&filter=" + mapfilter + "&customroute=1&saddr=" + map_startaddress + "&eaddr=" + map_endaddress + "&extrapoints=" + extrapoints + "&mtype=dirstartpoint";
	for(x=1;x<=extrapoints;x++) {
		mapaddr = mapaddr + "&destAddress" + x + "=" + GetValue("destAddress"+x);
		SetValue("mapstartpointbutton_"+x, "  UPDATE  ");
	}
	document.getElementById("DirectionsFrame").src = mapaddr;
}



function SaveDirPage() {
	//	load in the ONE or TWO addresses plus EXTRAS
	var map_startaddress = GetValue("map_startaddress");
	var map_endaddress = GetValue("map_endaddress");
	if(maptoggleto==0) {
		var maptype = "route";
		var mapfilter = GetValue("MapFilterByRoute");
	} else {
		var maptype = "difficulty";
		var mapfilter = GetValue("MapFilterByDifficulty");
	}
	//	build address, kick it to it
	var mapaddr = "maps_save.php?view=" + maptype + "&filter=" + mapfilter + "&customroute=1&saddr=" + map_startaddress + "&eaddr=" + map_endaddress + "&extrapoints=" + extrapoints;
	for(x=1;x<=extrapoints;x++) {
		mapaddr = mapaddr + "&destAddress" + x + "=" + GetValue("destAddress"+x);
	}
	document.location.href = mapaddr;
}

function LoadDirPage() {
	document.location.href = "maps_save.php?todo=load";

}

function CheckMapDelete() {
	if(confirm('Are you sure you want to delete?')) document.location.href = 'maps_save.php?todo=loadprocess&delthis=' + GetValue("savemapas");
	return false;
}




function AddDirectionPoint() {
	//	calc which one we are on, then set the rows
	extrapoints++;
	var tbl = parent.document.getElementById("DirectionPoints");
	SetValue("mapendpointbutton", "UPDATE");
	//	add a new ROW for the INPUT FIELD
	var lastRow = tbl.rows.length;
	var iteration = lastRow;
	var row = tbl.insertRow(lastRow-2);
	//	add the LEFT CELL
	var cellLeft = row.insertCell(0);
	var textNode = document.createTextNode("Address:");
	cellLeft.setAttribute("align", "right");
	cellLeft.setAttribute("style", "font-weight: bolder");
	cellLeft.appendChild(textNode);
	//	add the CENTER CELL
	var cellMid = row.insertCell(1);
	var el = document.createElement('input');
	el.type = 'text';
	el.name = 'destAddress' + extrapoints;
	el.id =   'destAddress' + extrapoints;
	el.size = 25;
	cellMid.appendChild(el);
	//	add the RIGHT CELL
	var cellRight = row.insertCell(2);
	cellRight.innerHTML = "<input type=\"submit\" id=\"mapstartpointbutton_" + extrapoints + "\" class=\"subbutton\" value=\" GO \" onClick=\"FireDirectionLoad(); return false;\">";
	//	NOW ADD A ROW FOR THE 'example'
	var row = tbl.insertRow(lastRow-2);
	var cellLeft = row.insertCell(0);
	var cellMid = row.insertCell(1);
	cellMid.innerHTML = "<small>ie '123 Skyway Drive'</small><br><div id=\"mapsetpoint_error_extra" + extrapoints + "\" style=\"display: none; color: red;\"><b>Sorry, but we could not locate this address.</b></font></div>";
	cellMid.setAttribute("colspan", "2");
	//	if we've reached the limit, show NO MORE button to add
	if(extrapoints>=26) ToggleDiv("Button_AddLocation", 0);
}

function ToggleMoreTrailheads() {
	if(showalltrailheads==1) {
		var newstat = 0;
		SetDivHTML("MoreTrailheadsToggle", "<input type=\"submit\" class=\"bigsubbutton\" value=\" Expand List \" onClick=\"ToggleMoreTrailheads(); return false;\"><br><br>");
		showalltrailheads = 0;
	} else {
		var newstat = 1;
		SetDivHTML("MoreTrailheadsToggle", "<input type=\"submit\" class=\"bigsubbutton\" value=\" Top Five \" onClick=\"ToggleMoreTrailheads(); return false;\"><br><br>");
		showalltrailheads = 1;
	}
	//	now reload the MAP PANEL
	SetMapStartPoint(0);
	// ToggleDiv("MoreTrailheadsList", newstat);
}


function GetCoordDistance(lat1, lon1, lat2, lon2) {
	var R = 6371; // km
	var dLat = ToRad(lat2-lat1);
	var dLon = ToRad(lon2-lon1); 
	var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
	        Math.cos(ToRad(lat1)) * Math.cos(ToRad(lat2)) * 
	        Math.sin(dLon/2) * Math.sin(dLon/2); 
	var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
	var d = R * c;
	return(d);
}



function ToRad(degr) {
	var yo=0;
	yo=(2*Math.PI)/360;
      	return(degr * yo);
}




function ExitDirections() {
	//	toggle to the DIRECTIONS panel
	ToggleDiv("Panel_Map", 1);
	ToggleDiv("Panel_Dir", 0);
	var mpath="maps_directions.php?empty=1";
	document.getElementById("DirectionsFrame").src = mpath;
}

function GD(saddr, daddr) {

	//	toggle to the DIRECTIONS panel
	ToggleDiv("Panel_Dir", 1);
	ToggleDiv("Panel_Map", 0);

      	// === create a GDirections Object ===
	var map = new GMap2(document.getElementById("map_routing"));

    	// === create a GDirections Object ===
      	var gdir = new GDirections(map, document.getElementById("directions"));

      // === Array for decoding the failure codes ===
      var reasons=[];
      reasons[G_GEO_SUCCESS]            = "Success";
      reasons[G_GEO_MISSING_ADDRESS]    = "Missing Address: The address was either missing or had no value.";
      reasons[G_GEO_UNKNOWN_ADDRESS]    = "Unknown Address:  No corresponding geographic location could be found for the specified address.";
      reasons[G_GEO_UNAVAILABLE_ADDRESS]= "Unavailable Address:  The geocode for the given address cannot be returned due to legal or contractual reasons.";
      reasons[G_GEO_BAD_KEY]            = "Bad Key: The API key is either invalid or does not match the domain for which it was given";
      reasons[G_GEO_TOO_MANY_QUERIES]   = "Too Many Queries: The daily geocoding quota for this site has been exceeded.";
      reasons[G_GEO_SERVER_ERROR]       = "Server error: The geocoding request could not be successfully processed.";
      reasons[G_GEO_BAD_REQUEST]        = "A directions request could not be successfully parsed.";
      reasons[G_GEO_MISSING_QUERY]      = "No query was specified in the input.";
      reasons[G_GEO_UNKNOWN_DIRECTIONS] = "The GDirections object could not compute directions between the points.";

      // === catch Directions errors ===
      GEvent.addListener(gdir, "error", function() {
        var code = gdir.getStatus().code;
        var reason="Code "+code;
        if (reasons[code]) {
          reason = reasons[code]
        }
        alert("Failed to obtain directions, "+reason);
      });

        gdir.load("from: "+saddr+" to: "+daddr);

}


function CreateSimpleMarker(point, name, html, imagename) {
	var f = new GIcon();
	f.image = "images/" + imagename + ".png";
	f.iconSize = new GSize(21,21);
	f.iconAnchor = new GPoint(10,10);
	f.infoWindowAnchor = new GPoint(10,1);
	var newMarker = new GMarker(point, {icon: f, draggable: false});
        GEvent.addListener(newMarker, "click", function() {
		newMarker.openInfoWindowHtml(html);
        });
	return newMarker;
}


function CreateSingleMarker(point, name, html, imagename) {
	var f = new GIcon();
	f.image = "images/" + imagename;
	f.iconSize = new GSize(25,36);
	f.iconAnchor = new GPoint(12,36);
	f.infoWindowAnchor = new GPoint(12,1);
	var newMarker = new GMarker(point, {icon: f, draggable: false});
        GEvent.addListener(newMarker, "click", function() {
		newMarker.openInfoWindowHtml(html);
        });
	return newMarker;
}

function createMarker(point, name, html, imagename) {
	var f = new GIcon();
	f.image = "images/mm_20_" + imagename + ".png";
	f.shadow = "images/mm_20_shadow.png";
	f.iconSize = new GSize(12,20);
	f.shadowSize = new GSize(22,20);
	f.iconAnchor = new GPoint(6,20);
	f.infoWindowAnchor = new GPoint(6,1);
	f.infoShadowAnchor = new GPoint(13,13);

	var newMarker = new GMarker(point, {icon: f, draggable: true});

        var linkid = "link"+i;
        GEvent.addListener(newMarker, "click", function() {
		newMarker.openInfoWindowHtml(html);
          	document.getElementById(linkid).style.background="#ffff00";
          	lastlinkid = linkid;
        });
        // save the info we need to use later for the side_bar
        gmarkers[i] = newMarker;
        // add a line to the side_bar html
        side_bar_html += '<div id="'+linkid+'"><a href="javascript:Linkclicked(' + i + ')">' + name + '</a><br></div>';
        i++;
	return newMarker;
}

function togglelocatorpanel() {
	ToggleDiv("LocateForm", 1);
	ToggleDiv("LocateResults", 0);
}

function PrepSearchData() {
	var d = new Date();
	var tme = d.getTime();
	var qstr = "?todo=search&time=" + tme;
	qstr = qstr + "&trailname=" + GetValue("trailname");
	qstr = qstr + "&trailregion=" + GetSelectedOptions("trailregion");
	qstr = qstr + "&trailtype=" + GetSelectedOptions("trailtype");
	qstr = qstr + "&trailsurface=" + GetSelectedOptions("trailsurface");
	qstr = qstr + "&trailpurpose=" + GetSelectedOptions("trailpurpose");
	qstr = qstr + "&trailstatus=" + GetSelectedOptions("trailstatus");
	qstr = qstr + "&trailcolors=" + GetValue("trailcolors");
	qstr = qstr + "&lookupaddress=" + GetValue("lookupaddress");
	qstr = qstr + "&maxdistance=" + GetValue("maxdistance");
	return(qstr);
}


function LaunchLocator() {
	var qstr = PrepSearchData();
	var addr = "maps_locatedisplay.php" + qstr;
	SetSource("MapLocatorDisplay", addr);
	ToggleDiv("LocateResults", 1);
	ToggleDiv("LocateForm", 0);
	return false;
}


function SubmitMapSearch() {
	//	clear out the quick search field, get time in milliseconds
	SetValue("quicksearch", 0);
	//	 now kick the lookup for the map
	var qstr = PrepSearchData();
	var addr = "maps_build.php" + qstr;
	alert(addr);
	SetSource("MapAreaDisplay", addr);
	return false;
}

function SubmitQuickMapSearch() {
	var addr = "maps_build.php?todo=search&quicksearch=" + GetValue("quicksearch");
	SetSource("MapAreaDisplay", addr);
	return false;
}

function ShowMapSearchMap() {
	//	start loading the map display
	var map = new google.maps.Map2(document.getElementById("MapAreaDisplay"), {size: new GSize(460,350)});
	map.setCenter(new google.maps.LatLng(38.9093518938, -92.3724889755), 13);
	var mapControl = new GMapTypeControl();
	map.addControl(mapControl);
	map.addControl(new GLargeMapControl());

	//	split the results into TWO sections - JScode and Links
	var jnk = datashuffle.split("|||");
	//	now add the polylines and such !!
	var jnk2 = jnk[0].split("\n");
	for(x=0;x<jnk2.length;x++) {
		if(jnk2[x]!="") eval(jnk2[x]);
	}
	//	now set the results panel
	SetDivHTML("SearchResultOutput", jnk[1]);

	//	 now show the results, hide the 'hold' panels
	ToggleDiv("SearchResultOutput", 1);
	ToggleDiv("SearchResultHold", 0);
	ToggleDiv("MapAreaIntro", 0);
	ToggleDiv("MapAreaLoading", 0);
	ToggleDiv("MapAreaDisplay", 1);
}


function ThrowPopup(i) {
	// alert(gmarkers[i]);
	GEvent.trigger(gmarkers[i], "click");
}



function ToggleAdvancedSearch(onoff) {
	if(onoff==1) {
		classname1 = "divhidden";
		classname2 = "divvisible";
		classname3 = "divvisible";
	} else {
		classname1 = "divvisible";
		classname2 = "divhidden";
		classname3 = "divhidden";
	}
	SetClass("advanced_on", classname1)
	SetClass("advanced_off", classname2)
	SetClass("advanced_details", classname3)
}





function RunMapSearch() {
	var qdata = "fill in form selections here";
	var html = "<iframe src=\"maps_build.php?" + qdata + "\" id=\"MapIframe\" scrolling=no frameborder=\"0\"></iframe>";
	SetDivHTML("MapBlock", html);
}

function DoMapSearch(override) {
	//	show the "LOADING..." message
	ToggleParentDiv("MapLoading", 1);
	ToggleParentDiv("MapViewer", 0);
	SetSearchResults("");
	var ncid = Date();
	var addr = "maps_build.php?todo=search&";
	var ovar = "";
	if(override!="") {
		//	split override into var and value
		var jnk = override.split("=");
		var ovar = jnk[0];
		var oval = jnk[1];
	}
	if(ovar!="trailregion") addr = addr + "trailregion=" + GetValue("trailregion") + "&";
	if(ovar!="trailtype") addr = addr + "trailtype=" + GetValue("trailtype") + "&";
	if(ovar!="trailpurpose") addr = addr + "trailpurpose=" + GetValue("trailpurpose") + "&";
	if(ovar!="trailname") addr = addr + "trailname=" + GetValue("trailname") + "&";
	if(ovar!="trailstatus") addr = addr + "trailstatus=" + GetValue("trailstatus") + "&";
	if(ovar!="") {
		//	set a new value for this search field, set the search pd as well
		addr = addr + ovar + "=" + oval + "&";
		SetValue(ovar, oval);
	}
	addr = addr + "nocache=" + ncid;
	SetSource("mapframe", addr);
	ToggleParentDiv("mapbacklink", 1);
}

function UnloadMapSearch() {
	//	show the "LOADING..." message
	ToggleParentDiv("MapLoading", 1);
	ToggleParentDiv("MapViewer", 0);
	SetSearchResults("");
	var ncid = Date();
	var addr = "maps_build.php?nocache=" + ncid;
	SetSource("mapframe", addr);
	ToggleDiv("mapbacklink", 0);
	SetValue("trailregion", "");
	SetValue("trailtype", "");
	SetValue("trailpurpose", "");
	SetValue("trailname", "");
	SetValue("trailstatus", "");

}

function SetParentBackLink(criteria) {
	if(criteria=="") var tgl = 0; else var tgl = 1;
	ToggleParentDiv("mapbacklink", tgl);
}

function SetSearchResults(setval) {

	SetParentDivHTML("mapsearchresults", setval);

}



/////////////////////////////////////////////////////////////////////
/////		UNSPECIFIED FUNCTIONS				/////
/////////////////////////////////////////////////////////////////////

function SetFormFocus(fld) {
	document.getElementById(fld).focus();
}

function PrepQuickSearch() {
	SetValue("quicksearchfield", "");
	SetClass("quicksearchfield", "searchstripfieldusing");
}

function PrepSubSearch() {
	SetValue("subsearchterm", "");
	SetClass("subsearchterm", "subsearchusing");
}

function ToggleEvent(expname, stat) {
	if(stat==1) {
		SetClass(expname+"_on", "hidelink");
		SetClass(expname+"_off", "showlink");
		ToggleDiv(expname+"_details", 1);
	} else {
		SetClass(expname+"_on", "showlink");
		SetClass(expname+"_off", "hidelink");
		ToggleDiv(expname+"_details", 0);
	}
}

function AddImages() {
	var imgentered = GetValue("imgentered");
	imgentered++;
	SetValue("imgentered", imgentered);
	if(imgentered%2!=1) var bgc = "#CCCCCC"; else var bgc = "white";
	var carray = "<b>Image #" + imgentered + "</b>:" + "|||" + "<input type=\"file\" size=\"15\" name=artfile" + imgentered + ">" + "|||" + "Align:" + "|||" + "<select name=artalign" + imgentered + "><option value=1>left<option value=3>center<option value=2>right</select>";
	var cproperties = "align|right|valign|top" + "|||align|left|||" + "align|right|valign|top" + "|||" + "_";
	var rproperties = "bgColor|" + bgc + "|||valign|top";
	AddNewTableRow("ImageTable", carray, cproperties, rproperties, (imgentered*2)-2);
	var carray = "Caption:" + "|||" + "<input type=\"text\" size=\"30\" name=artcaption" + imgentered + ">" + "|||" + "<small><span style=\"color: red;\">UPLOAD IMAGE</span></small>";
	var cproperties = "align|right" + "|||" + "_" + "|||" + "colSpan|2";
	var rproperties = "bgColor|" + bgc + "|||valign|top";
	AddNewTableRow("ImageTable", carray, cproperties, rproperties, (imgentered*2)-1);
	return;
}

function AddFiles() {
	var fileentered = GetValue("fileentered");
	fileentered++;
	SetValue("fileentered", fileentered);
	if(fileentered%2!=1) var bgc = "#CCCCCC"; else var bgc = "white";
	var carray = "<b>File #" + fileentered + "</b>:" + "|||" + "<input type=\"file\" size=\"15\" name=\"art2file" + fileentered + "\">";
	var cproperties = "align|right|valign|top" + "|||align|left|colSpan|2";
	var rproperties = "bgColor|" + bgc + "|||valign|top";
	AddNewTableRow("FileTable", carray, cproperties, rproperties, (fileentered*3)-2);
	var carray = "Label:" + "|||" + "<input type=\"text\" size=\"30\" name=art2caption" + fileentered + ">" + "|||" + "<small><span style=\"color: red;\">UPLOAD FILE</span></small>";
	var cproperties = "align|right" + "|||" + "align|left" + "|||" + "align|center";
	var rproperties = "bgColor|" + bgc + "|||valign|top";
	AddNewTableRow("FileTable", carray, cproperties, rproperties, (fileentered*3)-1);
	var carray = "Details:" + "|||" + "<input type=\"text\" size=\"30\" name=art2details" + fileentered + "> <small>(optional)</small>";
	var cproperties = "align|right" + "|||" + "align|left|colSpan|2";
	var rproperties = "bgColor|" + bgc + "|||valign|top";
	AddNewTableRow("FileTable", carray, cproperties, rproperties, (fileentered*3)-0);
	return;
}

function AddRecipientsNew() {
	var recipsentered = GetValue("recipsentered");
	recipsentered++;
	SetValue("recipsentered", recipsentered);
	var carray = recipsentered + ".&nbsp;" + "|||" + "<input type=\"text\" size=\"25\" name=rname" + recipsentered + ">" + "|||" + "<input type=\"text\" size=\"25\" name=raddr" + recipsentered + ">";
	var cproperties = "align|right|valign|top" + "|||align|left" + "|||align|left";
	var rproperties = "valign|top";
	AddNewTableRow("RecipTable", carray, cproperties, rproperties, recipsentered);
}

function AddRecipients() {
	var recipsentered = GetValue("recipsentered");
	recipsentered++;
	SetValue("recipsentered", recipsentered);
	var rowarr = ["<div class=highlightrow>Recipient #" + recipsentered + ":<br>-- Name: <input type=\"text\" size=\"30\" name=rname" + recipsentered + "><br>-- Email: <input type=\"text\" size=\"30\" name=remail" + recipsentered + "></div>"];
	AddTableRow("RecipTable", rowarr, recipsentered-1);
	return;
}

function AddVoteOptions() {
	var voteoptsentered = GetValue("voteoptsentered");
	voteoptsentered++;
	SetValue("voteoptsentered", voteoptsentered);
	var rowarr = [voteoptsentered + ".", "<input type=\"text\" size=\"20\" name=opttxt" + voteoptsentered + ">", "<input type=\"text\" size=\"5\" name=optcnt" + voteoptsentered + ">"];
	AddTableRow("OptTable", rowarr, voteoptsentered-1);
	return;
}

function AddSelectBox(seltype, divname, nameid, optstring, valstring, functioncall) {
	var o = document.getElementById(divname);
	var txtSel = document.createElement("select");
	txtSel.setAttribute("name",nameid);
	txtSel.setAttribute("id",nameid);
	o.appendChild(txtSel);
	if(optstring!="") {
		var objOption
		var jnk1 = optstring.split("|");
		var jnk2 = valstring.split("|");
		for(x=0;x<=jnk1.length-1;x++) {
			objOption = document.createElement("option");
			objOption.text = jnk1[x];
			objOption.value = jnk2[x];
			txtSel.options.add(objOption);
		}
	}
	if(functioncall!="") eval("txtSel.onchange = function() {" + functioncall + "}");
	return;
}


function AddInputField(fieldtype, divname, nameid, attrstring, valstring, functioncall) {
	var o = document.getElementById(divname);
	var txtFld = document.createElement(fieldtype);
	txtFld.setAttribute("name",nameid);
	txtFld.setAttribute("id",nameid);
	if(attrstring!="") {
		var jnk1 = attrstring.split("|");
		var jnk2 = valstring.split("|");
		for(x=0;x<=jnk1.length-1;x++) {
			txtFld.setAttribute(jnk1[x], jnk2[x]);
		}
	}
	if(functioncall!="") eval("txtFld.onchange = function() {" + functioncall + "}");
	o.appendChild(txtFld);
	return;
}

function ToggleDetails(pnl) {
	if(document.getElementById && document.getElementById("indicator"+pnl)) {
		var currstat = document.getElementById("details"+pnl).style.display;
		if(currstat=="none") var changeto = "block"; else var changeto = "none";
		if(currstat=="none") var plmn = "-"; else var plmn = "+";
		document.getElementById("details"+pnl).style.display = changeto;
		document.getElementById("indicator"+pnl).innerHTML = plmn;
	} else if (document.all && document.all("indicator"+pnl)) {
		var currstat = document.all("details"+pnl).style.display;
		if(currstat=="none") var changeto = "block"; else var changeto = "none";
		if(currstat=="none") var plmn = "-"; else var plmn = "+";
		document.all("details"+pnl).style.display = changeto;
		document.all("indicator"+pnl).innerHTML = plmn;
	}
	return false;
}

function ToggleCounts(st) {
	if(document.getElementById && document.getElementById("top"+st+"a")) {
		var currstat = document.getElementById("top"+st+"a").style.display;
		if(currstat=="none") var changeto = "block"; else var changeto = "none";
		if(changeto=="none") var otherstat = "block"; else var otherstat = "none";
		document.getElementById("top"+st+"a").style.display = changeto;
		document.getElementById("top"+st+"b").style.display = otherstat;
	} else if (document.all && document.all("top"+st+"a")) {
		var currstat = document.all("top"+st+"a").style.display;
		if(currstat=="none") var changeto = "block"; else var changeto = "none";
		if(changeto=="none") var otherstat = "block"; else var otherstat = "none";
		document.all("top"+st+"a").style.display = changeto;
		document.all("top"+st+"b").style.display = otherstat;
	}
	return false;
}

function AddItem(itm) {
	if(document.getElementById && document.getElementById("side_"+itm+"_opt")) {
		if(document.getElementById("side_"+itm+"_opt").selectedIndex==-1) return false;
		var vl1 = document.getElementById("side_"+itm+"_opt").options[document.getElementById("side_"+itm+"_opt").selectedIndex].value;
		var vl2 = document.getElementById("side_"+itm+"_opt").options[document.getElementById("side_"+itm+"_opt").selectedIndex].text;
		var optn = document.createElement("OPTION");
		optn.text = vl2; optn.value = vl1;
		document.getElementById("side_"+itm+"_pick").options.add(optn);
		document.getElementById("side_"+itm+"_opt").selectedIndex = -1;
	} else if (document.all && document.all("side_"+itm+"_opt")) {
		if(document.all("side_"+itm+"_opt").selectedIndex==-1) return false;
		var vl1 = document.all("side_"+itm+"_opt").options[document.all("side_"+itm+"_opt").selectedIndex].value;
		var vl2 = document.all("side_"+itm+"_opt").options[document.all("side_"+itm+"_opt").selectedIndex].text;
		var optn = document.createElement("OPTION");
		optn.text = vl2; optn.value = vl1;
		document.all("side_"+itm+"_pick").options.add(optn);
		document.all("side_"+itm+"_opt").selectedIndex = -1;
	}
	SetHidden(itm);
	return false;
}

function MoveItemUp(itm) {
	if(document.getElementById && document.getElementById("side_"+itm+"_opt")) {
		var pk1 = document.getElementById("side_"+itm+"_pick").selectedIndex;
		var pk2 = pk1 - 1;
		document.getElementById("side_"+itm+"_pick").selectedIndex = -1;
		if(pk1<1) return false;
		var ss1 = document.getElementById("side_"+itm+"_pick").options[pk1].value;
		var ss2 = document.getElementById("side_"+itm+"_pick").options[pk1].text;
		var rr1 = document.getElementById("side_"+itm+"_pick").options[pk2].value;
		var rr2 = document.getElementById("side_"+itm+"_pick").options[pk2].text;
		document.getElementById("side_"+itm+"_pick").options[pk1].value = rr1;
		document.getElementById("side_"+itm+"_pick").options[pk1].text = rr2;
		document.getElementById("side_"+itm+"_pick").options[pk2].value = ss1;
		document.getElementById("side_"+itm+"_pick").options[pk2].text = ss2;
	} else if (document.all && document.all("side_"+itm+"_opt")) {
		var pk1 = document.all("side_"+itm+"_pick").selectedIndex;
		var pk2 = pk1 - 1;
		document.all("side_"+itm+"_pick").selectedIndex = -1;
		if(pk1<1) return false;
		var ss1 = document.all("side_"+itm+"_pick").options[pk1].value;
		var ss2 = document.all("side_"+itm+"_pick").options[pk1].text;
		var rr1 = document.all("side_"+itm+"_pick").options[pk2].value;
		var rr2 = document.all("side_"+itm+"_pick").options[pk2].text;
		document.all("side_"+itm+"_pick").options[pk1].value = rr1;
		document.all("side_"+itm+"_pick").options[pk1].text = rr2;
		document.all("side_"+itm+"_pick").options[pk2].value = ss1;
		document.all("side_"+itm+"_pick").options[pk2].text = ss2;
	}
	SetHidden(itm);
	return false;
}

function MoveItemDown(itm) {
	if(document.getElementById && document.getElementById("side_"+itm+"_opt")) {
		var pk1 = document.getElementById("side_"+itm+"_pick").selectedIndex;
		var pk2 = pk1 + 1;
		document.getElementById("side_"+itm+"_pick").selectedIndex = -1;
		if(pk1==-1) return false;
		if(pk2>(document.getElementById("side_"+itm+"_pick").length-1)) return false;
		var ss1 = document.getElementById("side_"+itm+"_pick").options[pk1].value;
		var ss2 = document.getElementById("side_"+itm+"_pick").options[pk1].text;
		var rr1 = document.getElementById("side_"+itm+"_pick").options[pk2].value;
		var rr2 = document.getElementById("side_"+itm+"_pick").options[pk2].text;
		document.getElementById("side_"+itm+"_pick").options[pk1].value = rr1;
		document.getElementById("side_"+itm+"_pick").options[pk1].text = rr2;
		document.getElementById("side_"+itm+"_pick").options[pk2].value = ss1;
		document.getElementById("side_"+itm+"_pick").options[pk2].text = ss2;
	} else if (document.all && document.all("side_"+itm+"_opt")) {
		var pk1 = document.all("side_"+itm+"_pick").selectedIndex;
		var pk2 = pk1 - 1;
		document.all("side_"+itm+"_pick").selectedIndex = -1;
		if(pk1==-1) return false;
		if(pk2>(document.all("side_"+itm+"_pick").length-1)) return false;
		var ss1 = document.all("side_"+itm+"_pick").options[pk1].value;
		var ss2 = document.all("side_"+itm+"_pick").options[pk1].text;
		var rr1 = document.all("side_"+itm+"_pick").options[pk2].value;
		var rr2 = document.all("side_"+itm+"_pick").options[pk2].text;
		document.all("side_"+itm+"_pick").options[pk1].value = rr1;
		document.all("side_"+itm+"_pick").options[pk1].text = rr2;
		document.all("side_"+itm+"_pick").options[pk2].value = ss1;
		document.all("side_"+itm+"_pick").options[pk2].text = ss2;
	}
	SetHidden(itm);
	return false;
}

function DeleteItem(itm) {
	if(document.getElementById && document.getElementById("side_"+itm+"_opt")) {
		var pk1 = document.getElementById("side_"+itm+"_pick").selectedIndex;
		if(pk1==-1) return false;
		// document.getElementById("side_"+itm+"_pick").options.remove(pk1);

		document.getElementById("side_"+itm+"_pick").removeChild(document.getElementById("side_"+itm+"_pick").options[pk1]); 

	} else if (document.all && document.all("side_"+itm+"_opt")) {
		var pk1 = document.all("side_"+itm+"_pick").selectedIndex;
		if(pk1==-1) return false;
		document.all("side_"+itm+"_pick").options.remove(pk1);
	}
	SetHidden(itm);
	return false;
}

function SetHidden(itm) {
	var hstring = "";
	if(document.getElementById && document.getElementById("side_"+itm+"_opt")) {
		for(x=0;x<=document.getElementById("side_"+itm+"_pick").length-1;x++) {
			hstring = hstring + document.getElementById("side_"+itm+"_pick").options[x].value + "^";
		}
		document.getElementById("side_hide_"+itm).value = hstring;
	} else if (document.all && document.all("side_"+itm+"_opt")) {
		for(x=0;x<=document.all("side_"+itm+"_pick").length-1;x++) {
			hstring = hstring + document.all("side_"+itm+"_pick").options[x].value + "^";
		}
		document.all("side_hide_"+itm).value = hstring;
	}
	return false;
}

function ConfirmSend() {
	var agree = confirm("Are you sure you want to officially launch this newsletter?\r\nOnce you click YES there is no turning back ...");
	if(agree) return true; else return false;
}

function ToggleEChoice(entry, choice) {
	ToggleDiv("edisp_"+entry+"_1", 0);
	ToggleDiv("edisp_"+entry+"_2", 0);
	ToggleDiv("edisp_"+entry+"_4", 0);
	ToggleDiv("edisp_"+entry+"_"+choice, 1);
}

function ToggleSChoice(entry, choice) {
	ToggleDiv("esdisp_"+entry+"_1", 0);
	ToggleDiv("esdisp_"+entry+"_2", 0);
	ToggleDiv("esdisp_"+entry+"_"+choice, 1);
}

function ToggleThumb(filepath, linkdiv, display) {



}



