var markerDragDelayTimer=false;
var editWin={};
var editDoc={};

var currentInfoWindow=null
var currentMarkerPoint=null
var currentMarkerInfoPixelOffset=null
var lastMarkerOpened=null
var lastMarkerOpenedType=0;


function remarkerSetInfo(node,change)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	switch(nodeObj.infoOpen)
	{
		case 1:
			markerResetInfoSimple(node,change)
		break;
		case 2:
			markerResetInfoTabbed(node,change)
		break;
		case 3:
			markerResetInfoBlowup(node,change)
		break;
	}
}


function setEditHTML(type)
{
	//GLog.write('setEditHTML '+node+' '+type)

	switch(type)
	{
		case 'overlay':
			var node=overlayCurrentNode
			var nodeObj=mapNodes[node]
			nodeObj.overlay.HTML=editDoc['overlay'].body.innerHTML
			overlayRebuild(node)
			overlaySet(node,true)
		break;
		case 'simple':
			var node=markerCurrentNode
			var nodeObj=mapNodes[node]
			nodeObj.marker.infoSimple=editDoc['simple'].body.innerHTML
			markerRebuildInfoSimple(node)
			markerResetInfoSimple(node,true)
		break;
		case 'tabbed':
			var node=markerCurrentNode
			var nodeObj=mapNodes[node]
			var current=nodeObj.infoTabbedCurrent
			nodeObj.marker.infoTabbedHTML[current]=editDoc['tabbed'].body.innerHTML;
			var build=markerBuildInfoTabbedHTML(node,current)
			nodeObj.marker.infoTabbedWrap[current]=build.HTML;
			nodeObj.marker.infoTabbedSize[current]=build.size;
			nodeObj.marker.infoTabbed[current]=new GInfoWindowTab(nodeObj.marker.infoTabbedLable[current],nodeObj.marker.infoTabbedWrap[current])
			markerResetInfoTabbed(node,true)
		break;
	}
}



function openMarkerInfoWindow(node,event,force)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]
	
	nodeObj.infoOn=null;

	if(force==1 || (event==nodeObj.marker.infoSimpleOpenOn && nodeObj.infoOpen!=1) || (event==nodeObj.marker.infoSimpleOpenOn && event==E_MARKER_DRAG))
	{
		if(lastMarkerOpened)lastMarkerOpened.infoOpen=0;
		if(lastMarkerOpenedType!=1)nodeObj.gMarker.openInfoWindowHtml(nodeObj.marker.infoSimpleWrap,markerGetInfoSimpleOpts(node))
		else
		{
			gmap.getInfoWindow().reset(nodeObj.latLng, [new GInfoWindowTab('',nodeObj.marker.infoSimpleWrap)], nodeObj.marker.infoSimpleSize , nodeObj.marker.infoOffset)
			gmap.getInfoWindow().show() 
		}
		nodeObj.infoOn=event;
		if(event==E_MARKER_DRAG)
		{
			if(markerDragDelayTimer)clearTimeout(markerDragDelayTimer)
			markerDragDelayTimer=setTimeout('nodeGetObj(\''+node+'\').infoOpen=1;markerDragDelayTimer=null',200);
		}
		else nodeObj.infoOpen=1;
		lastMarkerOpened=nodeObj
		lastMarkerOpenedType=1;
		return
	}
	if(force==2 || (event==nodeObj.marker.infoTabbedOpenOn && nodeObj.infoOpen!=2) || (event==nodeObj.marker.infoTabbedOpenOn && event==E_MARKER_DRAG))
	{
		if(lastMarkerOpened)lastMarkerOpened.infoOpen=0;
		if(lastMarkerOpenedType!=2)nodeObj.gMarker.openInfoWindowTabsHtml(nodeObj.marker.infoTabbed,markerGetInfoTabbedOpts(node))
		else
		{
			if(event==E_MARKER_DRAG)selected=gmap.getInfoWindow().getSelectedTab()
			else var selected=nodeObj.marker.infoTabbedSelectedTab
			var size=markerGetInfoTabbedMaxSize(node)//nodeObj.marker.infoTabbedSize[selected]
			gmap.getInfoWindow().reset(nodeObj.latLng, nodeObj.marker.infoTabbed, size, nodeObj.marker.infoOffset, selected)
			gmap.getInfoWindow().show() 
		}
		
		nodeObj.infoOn=event;
		if(event==E_MARKER_DRAG)
		{
			if(markerDragDelayTimer)clearTimeout(markerDragDelayTimer)
			markerDragDelayTimer=setTimeout('nodeGetObj(\''+node+'\').infoOpen=2;markerDragDelayTimer=null',200);
		}
		else nodeObj.infoOpen=2;
		lastMarkerOpened=nodeObj
		lastMarkerOpenedType=2;
		return
	}
	if(force==3 || (event==nodeObj.marker.infoBlowupOpenOn && nodeObj.infoOpen!=3) || (event==nodeObj.marker.infoTabbedOpenOn && event==E_MARKER_DRAG))
	{
		if(lastMarkerOpened)lastMarkerOpened.infoOpen=0;
		nodeObj.gMarker.showMapBlowup(markerGetInfoBlowupOpts(node))

		/*if(lastMarkerOpenedType!=3)nodeObj.gMarker.showInfoBlowup(markerGetInfoBlowupOpts(node))
		else
		{
			gmap.getInfoWindow().reset(nodeObj.latLng, currentMarkerTabs, currentMarkerSize, nodeObj.marker.infoOffset)
			gmap.getInfoWindow().show() 
		}*/
		
		nodeObj.infoOn=event;
		if(event==E_MARKER_DRAG)
		{
			if(markerDragDelayTimer)clearTimeout(markerDragDelayTimer)
			markerDragDelayTimer=setTimeout('nodeGetObj(\''+node+'\').infoOpen=3;markerDragDelayTimer=null',200);
		}
		else nodeObj.infoOpen=3;
		lastMarkerOpened=nodeObj
		lastMarkerOpenedType=3;
		return
	}
}

function closeMarkerInfoWindow(node,event,force)
{
	if(!node)node=markerCurrentNode
	var nodeObj=mapNodes[node]

	if(nodeObj.infoOpen) 
	{
		if(force==1 || event==nodeObj.marker.infoSimpleCloseOn && nodeObj.infoOpen==1)
		{
			nodeObj.infoOpen=0;
			gmap.getInfoWindow().hide() 
			//gmap.closeInfoWindow()
		}
		if(force==2 || event==nodeObj.marker.infoTabbedCloseOn && nodeObj.infoOpen==2)
		{
			nodeObj.infoOpen=0;
			gmap.getInfoWindow().hide() 
			//gmap.closeInfoWindow()
		}
		if(force==3 || event==nodeObj.marker.infoBlowupCloseOn && nodeObj.infoOpen==3)
		{
			nodeObj.infoOpen=0;
			gmap.getInfoWindow().hide() 
			//gmap.closeInfoWindow()
		}
	}
	nodeObj.infoOn=null;
}


