var markerPresetActive=true;
var markerZoomSelect=null;
var markerPresetSelect=null;	
	
function Marker(name,address,zoom,latLng)
{
	if(name)this.name=name;
	if(latLng)this.latLng=latLng;
	if(address)this.address=address;
	if(zoom)this.zoom=zoom;
	
	this.own=new MarkerOwn(zoom);
	this.marker=this.own;
}

Marker.prototype.name='Unnamed Marker'
Marker.prototype.zoom=null
Marker.prototype.latLng=null;
Marker.prototype.address='';

Marker.prototype.isPreset=false
Marker.prototype.isPresetRoot=false
//Marker.prototype.preset='';
Marker.prototype.presetSelect='';
Marker.prototype.inherit='';

Marker.prototype.parent=null;
Marker.prototype.type='marker'
Marker.prototype.selected=false;

Marker.prototype.xAL=null;
Marker.prototype.geoCoderAddress=null;
Marker.prototype.response=null;

Marker.prototype.title='';

Marker.prototype.infoOn=null;		
Marker.prototype.infoOpen=0;

//Marker.prototype.managerIndex=null;

Marker.prototype.zoomVisible=true;
Marker.prototype.visible=false;
Marker.prototype.infoTabbedCurrent=0;
Marker.prototype.gMarker=null;
Marker.prototype.eventHandle=null;

function MarkerOwn(zoom)
{	
		this.infoTabbedLable=['Lable 1']
		this.infoTabbedHTML=['']
}

MarkerOwn.prototype.infoTabbed=[null]
MarkerOwn.prototype.infoTabbedWrap=['']
MarkerOwn.prototype.infoTabbedSize=[null]

MarkerOwn.prototype.infoSimpleSize=null
MarkerOwn.prototype.infoOffset=new GSize(0,-32)		

MarkerOwn.prototype.icon=null
MarkerOwn.prototype.list=0
MarkerOwn.prototype.listIcon=null


MarkerOwn.prototype.clickable=true
MarkerOwn.prototype.draggable=true
MarkerOwn.prototype.drag=false
MarkerOwn.prototype.dragCrossMove=false
MarkerOwn.prototype.bouncy=true
MarkerOwn.prototype.bounceGravity=1
MarkerOwn.prototype.infoSimple=''
MarkerOwn.prototype.infoSimpleWrap=''

MarkerOwn.prototype.infoSimpleOverflow='auto'
MarkerOwn.prototype.infoSimpleMaxWidth=658
MarkerOwn.prototype.infoSimpleMinWidth=217
MarkerOwn.prototype.infoSimpleMaxHeight=436
MarkerOwn.prototype.infoSimpleMinHeight=58
MarkerOwn.prototype.infoSimpleOpts=null
MarkerOwn.prototype.infoSimpleOpenOn=0
MarkerOwn.prototype.infoSimpleCloseOn=0

MarkerOwn.prototype.infoTabbedOverflow='auto'
MarkerOwn.prototype.infoTabbedMaxWidth=658
MarkerOwn.prototype.infoTabbedMinWidth=217
MarkerOwn.prototype.infoTabbedMaxHeight=436
MarkerOwn.prototype.infoTabbedMinHeight=58
MarkerOwn.prototype.infoTabbedSelectedTab=0
MarkerOwn.prototype.infoTabbedOpts=null
MarkerOwn.prototype.infoTabbedOpenOn=0
MarkerOwn.prototype.infoTabbedCloseOn=0
MarkerOwn.prototype.infoBlowupOpts=null
MarkerOwn.prototype.infoBlowupZoomLevel=null
MarkerOwn.prototype.infoBlowupMapType=null
MarkerOwn.prototype.infoBlowupMapTypeIndex=0
MarkerOwn.prototype.infoBlowupOpenOn=0
MarkerOwn.prototype.infoBlowupCloseOn=0
MarkerOwn.prototype.hasOnClick=false
MarkerOwn.prototype.hasOnDblClick=false



function nodeToggleXALDetail(node)
{
	if(!node)node=currentNode
	var nodeObj=mapNodes[node]
	
	var element=document.getElementById(nodeObj.type+'XALDetail')
	if(element.className=='xALDetailClosed')
	{
		element.className='xALDetail'
		document.getElementById(nodeObj.type+'XALPlusMinus').className='nodeOpenIcon'
	}
	else
	{
		element.className='xALDetailClosed'
		document.getElementById(nodeObj.type+'XALPlusMinus').className='nodeClosedIcon'
	}

}


function nodePutXAL(node)
{
	if(!node)node=currentNode
	var nodeObj=mapNodes[node]
	var out='',x;
	if(nodeObj.xAL)
	{
		var out='<DIV CLASS="xALAddress" onClick="nodeToggleXALDetail('+nodeObj.type+'CurrentNode)">'
			+'<SPAN ID="'+nodeObj.type+'XALPlusMinus"><IMG CLASS="nodeClosedIcon" ALIGN="absmiddle" SRC="gfx/dummy.gif" BORDER="0"></SPAN>'
			+'&nbsp;xAL Address:</DIV>'
			+'<DIV CLASS="xALDetailClosed" ID="'+nodeObj.type+'XALDetail"><TABLE CELLPADDING=0 CELLSPACING=0 CLASS="layout">'
		for(x in nodeObj.xAL)
		{
			switch(x)
			{
				case 'Accuracy':
					if(nodeObj.xAL[x])
					{
						out+='<TR><TD ALIGN="right"><B>Accuracy:&nbsp;</B></TD><TD>'
						switch(nodeObj.xAL[x])
						{
							case 0:
								out+='Unknown location.';
							break;
							case 1:
								out+='Country level accuracy.';
							break;
							case 2:
								out+='Region (state, province, prefecture, etc.) level accuracy.';
							break;
							case 3:
								out+='Sub-region (county, municipality, etc.) level accuracy.';
							break;
							case 4:
								out+='Town (city, village) level accuracy.';
							break;
							case 5:
								out+='Post code (zip code) level accuracy.';
							break;
							case 6:
								out+='Street level accuracy.';
							break;
							case 7:
								out+='Intersection level accuracy.';
							break;
							case 8:
								out+='Address level accuracy.';
							break;
						}
						out+='</TD></TR>'
					}
				break;
				case 'ThoroughfareName':
					if(nodeObj.xAL[x])out+='<TR><TD ALIGN="right"><B>Thoroughfare:</B>&nbsp;</TD><TD>'+nodeObj.xAL[x]+'</TD></TR>';
				break;
				case 'PostalCodeNumber':
					if(nodeObj.xAL[x])out+='<TR><TD ALIGN="right"><B>Postal Code:&nbsp;</B></TD><TD>'+nodeObj.xAL[x]+'</TD></TR>';
				break;
				case 'LocalityName':
					if(nodeObj.xAL[x])out+='<TR><TD ALIGN="right"><B>Locality:&nbsp;</B></TD><TD>'+nodeObj.xAL[x]+'</TD></TR>';
				break;
				case 'DependentLocalityName':
					if(nodeObj.xAL[x])out+='<TR><TD ALIGN="right"><B>Dependent Locality:&nbsp;</B></TD><TD>'+nodeObj.xAL[x]+'</TD></TR>';
				break;
				case 'SubAdministrativeAreaName':
					if(nodeObj.xAL[x])out+='<TR><TD ALIGN="right"><B>Sub Administrative Area:&nbsp;</B></TD><TD>'+nodeObj.xAL[x]+'</TD></TR>';
				break;
				case 'AdministrativeAreaName':
					if(nodeObj.xAL[x])out+='<TR><TD ALIGN="right"><B>Administrative Area:&nbsp;</B></TD><TD>'+nodeObj.xAL[x]+'</TD></TR>';
				break;
				case 'CountryName':
					if(nodeObj.xAL[x])out+='<TR><TD ALIGN="right"><B>Country Name:&nbsp;</B></TD><TD>'+nodeObj.xAL[x]+'</TD></TR>';
				break;
				case 'CountryNameCode':
					if(nodeObj.xAL[x])out+='<TR><TD ALIGN="right"><B>Country Name Code:&nbsp;</B></TD><TD>'+nodeObj.xAL[x]+'</TD></TR>';
				break;
				case 'address':
					if(nodeObj.xAL[x])out+='<TR><TD ALIGN="right"><B>Address:&nbsp;</B></TD><TD>'+nodeObj.xAL[x]+'</TD></TR>';
				break;
				case 'Point':
					if(nodeObj.xAL[x])
					{
						out+='<TR><TD VALIGN="top" ALIGN="right"><B>Latitude:&nbsp;</B></TD><TD>'+formatLat(nodeObj.xAL[x].lat())+'</TD></TR>'
						+'<TR><TD VALIGN="top" ALIGN="right"><B>Longitude:&nbsp;</B></TD><TD>'+formatLng(nodeObj.xAL[x].lng())+'</TD></TR>';
					}
				break;
			}
		
		}
		out+='</TABLE></DIV>'
	}
	document.getElementById(nodeObj.type+'XAL').innerHTML=out;
}


function markerSetName(name,node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	nodeObj.name=name
	var element;
	if(element=document.getElementById('nodeName_'+node))
	{
		element.innerHTML=name;
		//nodeNameEdit=false;
		//if(node==currentNode)element.className='nodeNameSelected';
	}
	if(nodeObj.isPreset)
	{
		window[nodeObj.type+'PresetSelect'].setOptionValue(node,{value:node,text:'<SPAN CLASS="nodeIcon" ID="nodeIcon_'+node+'" NAME="nodeIcon_'+node+'">'+nodeGetIcon(node)+'</SPAN>'+name})
		window[nodeObj.type+'PresetsSelect'].setOptionValue(node,{value:node,text:'<SPAN CLASS="nodeIcon" ID="nodeIcon_'+node+'" NAME="nodeIcon_'+node+'">'+nodeGetIcon(node)+'</SPAN>'+name})
	}
	if(element=document.getElementById('markerName'))element.value=name;
}

function setNodeName(name,node)
{
	var element,nodeObj=mapNodes[node]
	nodeObj.name=name
	if(element=document.getElementById('nodeName_'+node))
	{
		element.innerHTML=name;
		nodeNameEdit=false;
		if(node==currentNode)element.className='nodeNameSelected';
	}
	
	if(nodeObj.isPreset)
	{
		window[nodeObj.type+'PresetSelect'].setOptionValue(node,{value:node,text:'<SPAN CLASS="nodeIcon" ID="nodeIcon_'+node+'" NAME="nodeIcon_'+node+'">'+nodeGetIcon(node)+'</SPAN>'+name})
		window[nodeObj.type+'PresetsSelect'].setOptionValue(node,{value:node,text:'<SPAN CLASS="nodeIcon" ID="nodeIcon_'+node+'" NAME="nodeIcon_'+node+'">'+nodeGetIcon(node)+'</SPAN>'+name})
	}

	if(element=document.getElementById(nodeObj.type+'Name'))element.value=name;
}

function setNodeAddress(address,node)
{
	if(!node)node=currentNode
	var nodeObj=mapNodes[node]
	//document.getElementById('nodeAddressInput').value=address
	nodeObj.address=address;
	nodePutAddressIcon(node)
	//geocoder.getLatLng(address,new Function('point','setNodePoint(point,\''+node+'\')'));
}

function setNodePoint(point,node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	if(typeof point=='object' && nodeObj.gMarker)point=nodeObj.gMarker.getPoint()
	nodeObj.latLng=point;
	nodePutLatLng(node)
	nodePutLatLngIcon(node)
	
	nodeObj.xAL=null
	nodePutXAL(node)
}

function setNodeLatLngFromMapCenter(node)
{
	if(!node)node=currentNode
	var nodeObj=mapNodes[node]
	var center=gmap.getCenter()
	nodeObj.latLng=new GLatLng(center.lat(),center.lng())
	nodePutLatLngIcon(node)
	nodePutLatLng(node)
	if(nodeObj.gMarker)nodeObj.gMarker.setPoint(nodeObj.latLng)
	else if(nodeObj.gOverlay)overlaySet(node)
}


function nodeSetZoomFromMap(node)
{
	if(!node)node=currentNode
	var nodeObj=mapNodes[node]
	nodeObj.zoom=map.zoom
	window[nodeObj.type+'PutZoom'](node)
}

function markerPutZoom(node)
{
	if(!node)node=currentNode
	var nodeObj=mapNodes[node]
	markerZoomSelect.selectValue(nodeObj.zoom)
	nodePutZoomIcon(node)
}

function markerSetZoom(zoom,node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	if((typeof zoom!='object') && !nodeObj.isPreset && (nodeObj.parent.uid!='root'))
	{
		var group=nodeObj.parent.group
		if(zoom<group.minZoom)zoom=group.minZoom
		if(zoom>group.maxZoom)zoom=group.maxZoom
	}
	nodeObj.zoom=zoom;
	markerPutZoom(node)
}

function applyNodeZoom(node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	var zoom;
	if(typeof (zoom=nodeObj.zoom)!='object')
	{
		setTimeout('gmap.setZoom('+zoom+')',0);
	}
}

function setNodeLatLng(lat,lng,node)
{
	if(!node)node=currentNode
	var nodeObj=mapNodes[node]
	
	if(!nodeObj.latLng)
	{
		nodeObj.latLng=new GLatLng(0,0)
		nodePutLatLngIcon(node)
	}
	if(typeof lat!='object' && typeof lat!='undefined' && isNaN(lat=parseLatLng(lat)))
	{
		alert('Ivalid Latitude Value!');
		return
	}
	if(typeof lng!='object' && typeof lng!='undefined' && isNaN(lng=parseLatLng(lng)))
	{
		alert('Ivalid Longitude Value!');
		return
	}
	if(typeof lat=='object' || typeof lat=='undefined')lat=nodeObj.latLng.lat()
	if(typeof lng=='object' || typeof lng=='undefined')lng=nodeObj.latLng.lng()
	nodeObj.latLng=new GLatLng(lat,lng)
	nodePutLatLng(node)
	
	if(nodeObj.gMarker)nodeObj.gMarker.setPoint(nodeObj.latLng)
	if(nodeObj.gOverlay)overlaySet(node)
}


function nodePutLatLng(node)
{
	if(!node)node=currentNode
	var nodeObj=mapNodes[node]

	if(window[nodeObj.type+'CurrentNode']==node)
	{
		document.getElementById(nodeObj.type+'Lat').value=(nodeObj.latLng)?formatLat(nodeObj.latLng.lat()):'n/a';
		document.getElementById(nodeObj.type+'Lng').value=(nodeObj.latLng)?formatLng(nodeObj.latLng.lng()):'n/a';
	}
}

function centerNodeLatLng(node)
{
	if(!node)node=currentNode
	var nodeObj=mapNodes[node]
	
	var point=nodeObj.latLng;
	if(point)gmap.setCenter(point);
}


function markerPutZoomSelect(node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	var x;
	if(!markerZoomSelect)
	{
		markerZoomSelect=new SelectBox('markerZoom','marker',function(option){markerSetZoom(option.value,markerCurrentNode)})
		markerZoomSelect.setOptions(optionsZoomNode)
		markerZoomSelect.selectedIndex=0;
	}
	markerZoomSelect.draw()
}


function markerPutNodeDrag(node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	document.getElementById('nodeMarkerDrag').checked=nodeObj.marker.drag;
	nodePutDragIcon(node)
}


function setNodeMarkerDrag(onOff,node)
{
	if(!node)node=markerCurrentNode
	var inherit,nodeObj=mapNodes[node]
	if(inherit=(nodeObj.isPreset?node:nodeObj.inherit))
	{
		var inherits=presets.markerInherit[inherit]
		for(x in inherits)
		{
			_setNodeMarkerDrag(onOff,x)
		}
		nodePutIcon(inherit)
	}
	_setNodeMarkerDrag(onOff,node)
	markerPutNodeDrag(node)
}


function _setNodeMarkerDrag(onOff,node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	nodeObj.marker.drag=onOff
	if(nodeObj.gMarker)
	{
		if(onOff)nodeObj.gMarker.enableDragging()	
		else nodeObj.gMarker.disableDragging()
	}
	//markerPutNodeDrag(node)
}

function setNodeMarkerDraggable(onOff,node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	nodeObj.marker.draggable=onOff
	
	markerPutDraggable(node)
	markerSet(node)
}

function markerPutDraggable(node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	
	var draggable=nodeObj.marker.draggable
	//document.getElementById('nodeMarkerDraggable').checked=draggable;
	document.getElementById('nodeMarkerDrag').disabled=!draggable;
	document.getElementById('nodeMarkerDragCrossMove').disabled=!draggable;
	document.getElementById('nodeMarkerBouncy').disabled=!draggable;
	document.getElementById('nodeMarkerBounceGravity').disabled=!draggable;
}

function setNodeMarkerClickable(onOff,node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	nodeObj.marker.clickable=onOff
	markerSet(node)
}

function setNodeMarkerDragCrossMove(onOff,node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	nodeObj.marker.dragCrossMove=onOff
	markerSet(node)
}

function setNodeMarkerBouncy(onOff,node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	nodeObj.marker.bouncy=onOff
	markerSet(node)
}
function setNodeMarkerBounceGravity(gravity,node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	nodeObj.marker.bounceGravity=Math.abs(parseFloat(gravity))
	document.getElementById('nodeMarkerBouncy').value=nodeObj.marker.bounceGravity;
	markerSet(node)
}
function setNodeMarkerTitle(title,node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	nodeObj.title=title
	markerSet(node)
}

function nodeMarkerSetup(node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]

	markerPutZoomSelect(node)
	markerPutPresetSelect(node)
	//markerRebuildInfoSimple(node)
	//markerRebuildInfoTabbed(node)
	//rebuildMarkerIcon(node)
}

function markerPutNode(node)
{
	//GLog.write('markerPutNode('+node+')')
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	if(nodeObj)
	{
		if(!nodeObj.infoSimpleSize)markerRebuildInfoSimple()
		if(!nodeObj.infoTabbedSize)markerRebuildInfoTabbed()
		
		markerPutPreset(node)
	
		var element=document.getElementById('markerName')
		element.value=nodeObj.name
		element.disabled=(nodeObj.isPresetRoot);
		element=document.getElementById('markerAddress')
		element.value=(nodeObj.address)?nodeObj.address:'';
		element.disabled=(nodeObj.isPresetRoot);
		
		document.getElementById('nodeMarkerDrag').checked=nodeObj.marker.drag;
		//document.getElementById('nodeMarkerClickable').checked=nodeObj.marker.clickable;
		document.getElementById('nodeMarkerDragCrossMove').checked=nodeObj.marker.dragCrossMove;
		document.getElementById('nodeMarkerBouncy').checked=nodeObj.marker.bouncy;
		document.getElementById('nodeMarkerBounceGravity').value=nodeObj.marker.bounceGravity;
		document.getElementById('title').value=nodeObj.title;
		
		nodePutXAL(node)
		markerPutDraggable(node)
		nodePutLatLng(node)
		markerPutInfoSimple(node)
		markerPutInfoTabbed(node)
		markerPutInfoBlowup(node)
		putSelectedIcon(node)
		
		if(innerHTMLFix)
		{
			markerPutZoomSelect(node)
			markerPutPresetSelect(node)
		}
		markerZoomSelect.selectValue(nodeObj.zoom);
		markerPresetSelect.selectValue(nodeObj.presetSelect)
		
		sections.marker.showSectionContent()
		sections.icons.showSectionContent()
		document.getElementById('markerInfoSimpleEdit').style.visibility='visible';
		document.getElementById('markerInfoTabbedEdit').style.visibility='visible';
		sections.infoWindowBlowup.showSectionContent()
		sections.infoWindowTabbed.showSectionContent()
		sections.infoWindowSimple.showSectionContent()

	}
	else
	{
		sections.marker.hideSectionContent()
		sections.icons.hideSectionContent()
		
		if(isIE)
		{
			if(editDoc.simple)
			{
				if(editDoc.simple.selection)editDoc.simple.selection.empty();
				editDoc.simple.designMode='off'
			}
			if(editDoc.tabbed)
			{
				if(editDoc.tabbed.selection)editDoc.tabbed.selection.empty();
				editDoc.tabbed.designMode='off'
			}
			document.getElementById('markerInfoSimpleEdit').style.visibility='hidden';
			document.getElementById('markerInfoTabbedEdit').style.visibility='hidden';
		}
		sections.infoWindowBlowup.hideSectionContent()
		sections.infoWindowTabbed.hideSectionContent()
		sections.infoWindowSimple.hideSectionContent()

	}	
}

function markerPutPreset()
{
	var elements=document.getElementsByName('markerPreset')
	for(var x=0;x<elements.length;x++)
	{
		elements[x].checked=markerPresetActive;
		elements[x].disabled=!mapNodes[currentNode].presetSelect
	}
	document.getElementById('markerLockPreset').checked=mapNodes[markerCurrentNode].inherit
	document.getElementById('markerCopyFromPreset').disabled=(markerPresetActive || mapNodes[currentNode].inherit || !mapNodes[currentNode].presetSelect)
	document.getElementById('markerCopyToPreset').disabled=(markerPresetActive || mapNodes[currentNode].inherit || !mapNodes[currentNode].presetSelect)
	//document.getElementById('markerAddToPresets').disabled=markerPresetActive
	document.getElementById('markerNodePreset').disabled=markerPresetActive
	document.getElementById('markerLockPreset').disabled=(markerPresetActive || mapNodes[currentNode].isPreset || !mapNodes[currentNode].presetSelect)
	if(innerHTMLFix)markerPutPresetSelect()
	if(markerPresetSelect)markerPresetSelect.setDisabled(markerPresetActive)
}

function markerSetLockPreset(onOff,node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	if(nodeObj.presetSelect)
	{
		if(onOff)nodeLockPreset(node)
		else nodeUnlockPreset(node)
		markerPutNode(node);
		markerSet(node)
	}
	markerPutPreset()
}


function markerSetPresetActive(onOff)
{
	if(mapNodes[currentNode].type!='marker' || mapNodes[currentNode].isPreset)
	{
		markerPresetActive=onOff=true;
	}
	else if(!mapNodes[markerCurrentNode].presetSelect && !markerPresetActive)onOff=false;
	else
	{
		if(markerPresetActive=onOff)markerCurrentNode=mapNodes[markerCurrentNode].presetSelect
		else markerCurrentNode=currentNode
		markerPutNode(markerCurrentNode)
	}
	markerPutPreset()
}

function markerSetPresetSelect(toNode,node)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	if(nodeObj.inherit)
	{
		if(toNode)nodeSetLockPreset(node,toNode)
		else nodeUnlockPreset(node)
	}
	nodeObj.presetSelect=toNode
	if(!toNode)nodePut(node)
	markerSet(node)
	markerPutNode(node)
}


function markerPutPresetSelect()
{
	if(!markerPresetSelect)
	{
		markerPresetSelect=new SelectBox('markerNodePreset','marker',function(option){markerSetPresetSelect(option.value)})
		var options=[optionNoPreset]
		var treeObj=mapNodesTree.getFirstChild(markerPresets.uid,true)
		var uid;
		do
		{
			uid=treeObj.uid
			options.push({value:uid,text:'<SPAN CLASS="nodeIcon" ID="nodeIcon_'+uid+'" NAME="nodeIcon_'+uid+'">'+nodeGetIcon(uid)+'</SPAN>'+presets.marker[uid].name})
		}
		while(treeObj=mapNodesTree.getNext(uid))
		markerPresetSelect.setOptions(options)
		markerPresetSelect.selectedIndex=0;
	}
	markerPresetSelect.draw()
}

function markerAddToPresets(node,event)
{
	if(event.shiftKey)var preset=mapNodesTree.addLastChild(markerPresets.uid,new Marker(mapNodes[node].name))
	else var preset=mapNodesTree.addFirstChild(markerPresets.uid,new Marker(mapNodes[node].name))
	markerCopyToPreset(node,mapNodes[preset])
	nodeAddPreset(preset)
	nodePut(preset)
	return node
}

function markerCopyPutFromPreset(node,preset)
{
	markerCopyFromPreset(node,preset)
	nodePut(node)
	marker_Set(node)
	markerPutNode(node)
}

function markerCopyPutToPreset(node,preset)
{
	markerCopyToPreset(node,preset)
	nodePut(markerPresetUid)
	markerSet(markerPresetUid)
	markerPutNode(markerPresetUid)
}



function markerCopyFromPreset(node,preset)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	if(!preset)
	{
		if(nodeObj.presetSelect)preset=mapNodes[nodeObj.presetSelect]
		else return
	}
	
	var x
	for(x in nodeObj.marker)
	{
		if(preset.marker.hasOwnProperty(x))
		{
			switch(x)
			{
				case 'infoSimpleSize':
					//markerRebuildInfoSimple(node)	
				break;
				case 'infoTabbedHTML':
				case 'infoTabbedLable':
					nodeObj.marker[x]=preset.marker[x].toString().split(',')
				break;
				case 'infoTabbedWrap':
				break;
				case 'infoTabbed':
				case 'infoTabbedSize':
					//markerRebuildInfoTabbed(node)	
				break;
				default:
					nodeObj.marker[x]=preset.marker[x]
				break;
			}
		}
		else delete(nodeObj.marker[x])
	}

}



function markerCopyToPreset(node,preset)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	if(!preset)
	{
		if(nodeObj.presetSelect)preset=mapNodes[nodeObj.presetSelect]
		else return
	}
	
	var x
	for(x in nodeObj.marker)
	{
		if(nodeObj.marker.hasOwnProperty(x))
		{
			switch(x)
			{
				case 'infoSimpleSize':
					//markerRebuildInfoSimple(preset.uid)	
				break;
				case 'infoTabbedHTML':
				case 'infoTabbedLable':
					preset.marker[x]=nodeObj.marker[x].toString().split(',')
				break;
				case 'infoTabbedWrap':
				break;
				case 'infoTabbed':
				case 'infoTabbedSize':
					//markerRebuildInfoTabbed(preset.uid)	
				break;
				default:
					preset.marker[x]=nodeObj.marker[x]
				break;
			}
		}
		else delete(preset.marker[x])
	}
}

function markerGetPresetInfo(node)
{
	var out='';
	if(node)var preset=mapNodes[node]
	else var preset=markerPreset
	if(preset)
	{
		if(preset.isPreset)var marker=preset.marker;
		else var marker=preset.own;
		
		var icon=(marker.icon!=null)?marker.icon:stdIcon;
		out+='<U>Name:</U> '+preset.name+'<BR>'
		+'<IMG STYLE="position:absolute;z-index:1;'
		+((natPNG)?'':'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+icon.image+'\');')
		+'"'
		+' WIDTH="'+icon.iconSize.width+'" HEIGHT="'+icon.iconSize.height+'"'
		+' SRC="'+((natPNG)?icon.image:'gfx/dummy.gif')+'" BORDER="0">'
		+'<IMG STYLE="position:relative;z-index:0;'
		+((natPNG)?'':'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+icon.shadow+'\');')
		+'"'
		+' WIDTH="'+icon.shadowSize.width+'" HEIGHT="'+icon.shadowSize.height+'"'
		+' SRC="'+((natPNG)?icon.shadow:'gfx/dummy.gif')+'" BORDER="0">'
		+'<BR>'
		//if(marker.zoom)out+='<IMG CLASS="nodeZoomIcon" ALIGN="absmiddle" SRC="gfx/dummy.gif" BORDER="0">&nbsp;<U>Zoom:</U> '+marker.zoom+'<BR>'
		out+='<IMG CLASS="node'+((marker.drag)?'':'No')+'DragIcon" ALIGN="absmiddle" SRC="gfx/dummy.gif" BORDER="0">&nbsp;<U>Drag:</U> '+((marker.drag)?'enabled':'disabled')+'<BR>'
		if(marker.infoSimpleOpenOn || marker.infoSimpleCloseOn)
		{
			out+='<IMG CLASS="nodeInfoSimpleIcon" ALIGN="absmiddle" SRC="gfx/dummy.gif" BORDER="0">&nbsp;<B>Simple Info:</B><BR>'
			+'<U>Open on:</U> '+eventStr[marker.infoSimpleOpenOn]+'<BR>'
			+'<U>Close on:</U> '+eventStr[marker.infoSimpleCloseOn]+'<BR>'
		}
		if(marker.infoTabbedOpenOn || marker.infoTabbedCloseOn)
		{
			out+='<IMG CLASS="nodeInfoTabbedIcon" ALIGN="absmiddle" SRC="gfx/dummy.gif" BORDER="0">&nbsp;<B>Tabbed Info:</B><BR>'
			+'<U>Open on:</U> '+eventStr[marker.infoTabbedOpenOn]+'<BR>'
			+'<U>Close on:</U> '+eventStr[marker.infoTabbedCloseOn]+'<BR>'
		}
		if(marker.infoBlowupOpenOn || marker.infoBlowupCloseOn)
		{
			out+='<IMG CLASS="nodeInfoBlowupIcon" ALIGN="absmiddle" SRC="gfx/dummy.gif" BORDER="0">&nbsp;<B>Map Blowup Info:</B><BR>'
			+'<U>Open on:</U> '+eventStr[marker.infoBlowupOpenOn]+'<BR>'
			+'<U>Close on:</U> '+eventStr[marker.infoBlowupCloseOn]+'<BR>'
		}
	}
	return out
}
