var MapLoaded = false;
var LayersLoaded = false;
var MapCtrlLoaded = false;
var SVGFile = null;
var SVGRoot = null;
var decal = 32;
var JumpRegionsArray = new Array();
var center_point = null;
function mWidth()
{
	return svgmap.width;
}
function mHeight()
{
	return svgmap.height;
}
function GetCoords()
{
	return TranslateCoord(mWidth()/2, mHeight()/2);
}

function SvgMapLoaded(evt)
{
  MapLoaded = true;
  svgmap.getSVGDocument().ParentWindow = this;  
  LoadSVGFile();
  if(self.MapLoadFinished!=null)
  {
     MapLoadFinished();
  }
}
function MapZoomed(evt)
{
  if(center_point != null)
  {
	CenterPoint(center_point[0], center_point[1]);
	center_point = null;
    	return false;
  }
  return true;
}
function MapControlLoaded(evt)
{
   MapCtrlLoaded = true;
   document.mapctrl.window.config.OnZoomMap = zoomMap;
   document.mapctrl.window.config.OnScrollMap = scrollMap;
}
function LayersControlLoaded()
{
	LayersLoaded = true;
	frames['layersframe'].window.OnTreeNodeChecked = OnLayersTreeNodeChecked;
}
function LoadSVGFile()
{
	var tsvg = svgmap;
	SVGFile = tsvg;
	SVGRoot = tsvg.getSVGDocument();
	LoadJumpRegions(SVGRoot);
}
function OnLayersTreeNodeChecked(layer, checked)
{
	LayersListSelObjectChange(layer, checked);
}

function LayersListSelObjectChange(target_name, checked, citem)
{
	document.svgmap.window.HideLayer(target_name, checked);
}
function OnSelectJumpRegion(selObj)
{
	if(selObj.options[selObj.selectedIndex].value != null)
	{
		var obj = null;
		for(var i = 0; i < JumpRegionsArray.length; i++)
		{
			if(JumpRegionsArray[i].getAttribute("id") == selObj.options[selObj.selectedIndex].value)
			{
				obj = JumpRegionsArray[i];
				break;
			}
		}
		if(obj == null)
			return;
		var src_x = obj.getBBox().x + obj.getBBox().width/2;
		var src_y = obj.getBBox().y + obj.getBBox().height/2;
		var sh = 0;
		if(obj.getBBox().width < obj.getBBox().height)
		{
			sh = obj.getBBox().height/mHeight();
		}
		else
		{
			sh = obj.getBBox().width/mWidth();
		}
		CenterPointS(src_x, src_y, sh);
	}
}
function CenterPointS(src_x, src_y, scale)
{
	var svg_root = document.svgmap.getSVGDocument().getDocumentElement();     	
	var tm = svgmap.window.view_box.getCTM();

	var sc = svg_root.getCurrentScale();
	sc = sc*tm.a/scale;

	document.svgmap.window.SuspendLoad();
	svg_root.currentScale = sc;
	CenterPoint(src_x, src_y);
	document.svgmap.window.ResumeLoad();
}

function CenterPoint(src_x, src_y)
{
	document.svgmap.window.SuspendLoad();
	var svg_root = document.svgmap.getSVGDocument().getDocumentElement();

	var scale = document.svgmap.window.GetCurrentScale();
	var tm = svgmap.window.view_box.getCTM();
	tm = tm.translate((src_x - tm.e)/scale, (src_y - tm.f)/scale);
	var stm = svgmap.window.view_box.getTM();
	if(stm.f != 0.0)
		tm = tm.translate(0, -stm.f/scale);
	if(stm.e != 0.0)
		tm = tm.translate(-stm.e/scale, 0);

	tm = tm.translate(0, -mHeight()/2);
	tm = tm.translate(-mWidth()/2, 0);

	tm = tm.inverse();

	svg_root.currentTranslate.x=tm.e;
	svg_root.currentTranslate.y=tm.f;	
document.svgmap.window.ResumeLoad();
}
function scrollMap(dx, dy) 
{
	svgdoc=document.svgmap.getSVGDocument(); root=svgdoc.firstChild();
	if (dx!=0) root.currentTranslate.x=root.currentTranslate.x+(dx*decal);
	if (dy!=0) root.currentTranslate.y = root.currentTranslate.y+(dy*decal);
}
function TranslateCoord(src_x, src_y)
{		  
  var svgdoc=document.svgmap.getSVGDocument(); 
  var svg_root=svgdoc.firstChild();

  var tm = svgmap.window.view_box.getCTM();
  tm = tm.translate(src_x, src_y);
  var x = tm.e;
  var y = tm.f;
  var s = tm.a;
  
  return new Array(x, y, s);
}
function zoomMap(k) 
{
	if(k>0)
	{
		k = 1.5;
	}
	else
	{
		k = 0.5;
	}
	var svg_root = document.svgmap.getSVGDocument().getDocumentElement();
	var sc = svg_root.currentScale * k;
	if( (sc<=0.04) )
	{
		sc = 0.04;
	}
	if( (sc>8) )
	{
		sc = 8;
	}
	var tr1 = TranslateCoord(mWidth()/2, mHeight()/2);
	center_point = new Array( tr1[0], tr1[1]);

	svg_root.currentScale =  sc;
}
function LoadJumpRegions(root)
{
	layer = root.getElementById("JumpRegions");
	if(layer)
	{
		j = 0;
		AddElement(window.JumpRegions, "-", null, true, false);
		for(i = 0; i < layer.childNodes.length; i++)
		{
			if( (layer.childNodes.item(i).nodeType != 3) && (layer.childNodes.item(i).nodeType != 8))
			{
				JumpRegionsArray[j] = layer.childNodes.item(i);
				AddElement(window.JumpRegions, layer.childNodes.item(i).getAttribute("region"), layer.childNodes.item(i).getAttribute("id"), false, false);
				j++;
			}
		}
	}
}
function AddElement(list, name, value, Sel, defSel)
{
	if(list)
	{
		var	newOpt = new Option(name, value, defSel, Sel);
		index = list.options.length;
		list.options[index] = newOpt;
	}
}

function LoadCheck()
{
 if(MapLoaded && LayersControlLoaded && MapCtrlLoaded)
 {
//   LoadSVGFile();
   //alert();
 }
 else
 {
 	setTimeout(LoadCheck, 200);
 }
}
setTimeout(LoadCheck, 200);

