/*************DBLayer*********************************************/


//Code From CDCGIS
/*動態控制圖層********************************************************************************/ 
var pDBLayer = null;
var pShpLayer = null;
var today=new Date();	



	
function LayerManager(objMapBase){
	var MapBase = objMapBase;
	var aryDBLayer = new Array();
	/*************************
	aryDBLayer[0][0] = 圖層物件
	aryDBLayer[0][1] = 圖層Index
	aryDBLayer[0][2] = 圖層類別
	aryDBLayer[0][3] = 圖層名稱
	aryDBLayer[0][4] = 圖層是否顯示
	aryDBLayer[0][5] = 圖層SQLQuery 或是 Shp檔名
	*************************/
	
	this.AddpPointLayer = function(strLayerName,SQLStr,_ColorR,_ColorG,_ColorB){
		aryDBLayer[aryDBLayer.length] = new Array();
		aryDBLayer[aryDBLayer.length-1][0] = new TempDBLayer(MapBase,SQLStr,_ColorR,_ColorG,_ColorB);
		aryDBLayer[aryDBLayer.length-1][1] = aryDBLayer.length-1;
		aryDBLayer[aryDBLayer.length-1][2] = 'Point';
		aryDBLayer[aryDBLayer.length-1][3] = strLayerName;
		aryDBLayer[aryDBLayer.length-1][4] = true;
		aryDBLayer[aryDBLayer.length-1][5] = SQLStr;
		//aryDBLayer[aryDBLayer.length-1][0].setSQL(SQLStr);
		aryDBLayer[aryDBLayer.length-1][0].Show();
		MapBase.AddElement(aryDBLayer[aryDBLayer.length-1][0]);
		return aryDBLayer.length-1;
	};
	this.AddNumberPoint= function(strLayerName,innerStr){
		aryDBLayer[aryDBLayer.length] = new Array();
		aryDBLayer[aryDBLayer.length-1][0] = new TempNumberPoint(MapBase,innerStr);
		aryDBLayer[aryDBLayer.length-1][1] = aryDBLayer.length-1;
		aryDBLayer[aryDBLayer.length-1][2] = 'Point';
		aryDBLayer[aryDBLayer.length-1][3] = strLayerName;
		aryDBLayer[aryDBLayer.length-1][4] = true;
	//	aryDBLayer[aryDBLayer.length-1][5] = SQLStr;
		//aryDBLayer[aryDBLayer.length-1][0].setSQL(SQLStr);
		aryDBLayer[aryDBLayer.length-1][0].Show();
		MapBase.AddElement(aryDBLayer[aryDBLayer.length-1][0]);
		return aryDBLayer.length-1;
	};
		this.AddVmlLayer= function(strLayerName,innerStr){
		aryDBLayer[aryDBLayer.length] = new Array();
		aryDBLayer[aryDBLayer.length-1][0] = new TempVmlLayer(MapBase,innerStr);
		aryDBLayer[aryDBLayer.length-1][1] = aryDBLayer.length-1;
		aryDBLayer[aryDBLayer.length-1][2] = 'Point';
		aryDBLayer[aryDBLayer.length-1][3] = strLayerName;
		aryDBLayer[aryDBLayer.length-1][4] = true;
		aryDBLayer[aryDBLayer.length-1][5] = strLayerName;
		aryDBLayer[aryDBLayer.length-1][0].Show();
		MapBase.AddElement(aryDBLayer[aryDBLayer.length-1][0]);
		return aryDBLayer.length-1;
	};
	this.AddpLevelLayer = function(strLayerName,LayerName,pid){
		aryDBLayer[aryDBLayer.length] = new Array();
		aryDBLayer[aryDBLayer.length-1][0] = new TempShpLayer(MapBase,LayerName,null,pid,2);
		aryDBLayer[aryDBLayer.length-1][1] = aryDBLayer.length-1;
		aryDBLayer[aryDBLayer.length-1][2] = 'Poly';
		aryDBLayer[aryDBLayer.length-1][3] = strLayerName;
		aryDBLayer[aryDBLayer.length-1][4] = true;
		aryDBLayer[aryDBLayer.length-1][5] = LayerName;
		aryDBLayer[aryDBLayer.length-1][0].Show();
		MapBase.AddElement(aryDBLayer[aryDBLayer.length-1][0]);
		return aryDBLayer.length-1;
	};
	this.AddpGifLayer = function(strLayerName,LayerName,pid){
		aryDBLayer[aryDBLayer.length] = new Array();
		aryDBLayer[aryDBLayer.length-1][0] = new TempShpLayer(MapBase,LayerName,null,pid,3);
		aryDBLayer[aryDBLayer.length-1][1] = aryDBLayer.length-1;
		aryDBLayer[aryDBLayer.length-1][2] = 'Poly';
		aryDBLayer[aryDBLayer.length-1][3] = strLayerName;
		aryDBLayer[aryDBLayer.length-1][4] = true;
		aryDBLayer[aryDBLayer.length-1][5] = LayerName;
		aryDBLayer[aryDBLayer.length-1][0].Show();
		MapBase.AddElement(aryDBLayer[aryDBLayer.length-1][0]);
		return aryDBLayer.length-1;
	};	
	this.AddShpLayer = function(strLayerName,LayerName,shpname){
		aryDBLayer[aryDBLayer.length] = new Array();
		aryDBLayer[aryDBLayer.length-1][0] = new TempShpLayer(MapBase,LayerName,shpname,null,1);
		aryDBLayer[aryDBLayer.length-1][1] = aryDBLayer.length-1;
		aryDBLayer[aryDBLayer.length-1][2] = 'Poly';
		aryDBLayer[aryDBLayer.length-1][3] = strLayerName;
		aryDBLayer[aryDBLayer.length-1][4] = true;
		aryDBLayer[aryDBLayer.length-1][5] = LayerName;
		aryDBLayer[aryDBLayer.length-1][0].Show();
		MapBase.AddElement(aryDBLayer[aryDBLayer.length-1][0]);
		return aryDBLayer.length-1;
	};
	this.AddpRoadSpeedLayer = function(strLayerName,strShpFileName,pid){
		aryDBLayer[aryDBLayer.length] = new Array();
		aryDBLayer[aryDBLayer.length-1][0] = new TempRoadSpeedLayer(MapBase,strShpFileName,pid);
		aryDBLayer[aryDBLayer.length-1][1] = aryDBLayer.length-1;
		aryDBLayer[aryDBLayer.length-1][2] = 'Poly';
		aryDBLayer[aryDBLayer.length-1][3] = strLayerName;
		aryDBLayer[aryDBLayer.length-1][4] = true;
		aryDBLayer[aryDBLayer.length-1][5] = strShpFileName;
		aryDBLayer[aryDBLayer.length-1][0].Show();
		MapBase.AddElement(aryDBLayer[aryDBLayer.length-1][0]);
		return aryDBLayer.length-1;
	};
	this.AddFreeWaySpeedLayer = function(strLayerName,strShpFileName,pid){
		aryDBLayer[aryDBLayer.length] = new Array();
		aryDBLayer[aryDBLayer.length-1][0] = new tspTempShpLayer(MapBase,strShpFileName);
		aryDBLayer[aryDBLayer.length-1][1] = aryDBLayer.length-1;
		aryDBLayer[aryDBLayer.length-1][2] = 'Poly';
		aryDBLayer[aryDBLayer.length-1][3] = strLayerName;
		aryDBLayer[aryDBLayer.length-1][4] = true;
		aryDBLayer[aryDBLayer.length-1][5] = strShpFileName;
		aryDBLayer[aryDBLayer.length-1][0].Show();
		MapBase.AddElement(aryDBLayer[aryDBLayer.length-1][0]);
		return aryDBLayer.length-1;
	};
	this.getLayerIndex =
	function (strLayerName){
		for(var forIndex=0;forIndex<aryDBLayer.length;forIndex++){
			if (aryDBLayer[forIndex][3] == strLayerName){
				return forIndex;
			}
		}
		return -1;
	}
	
	this.RemovePointLayer = function(intLayerIndex){
		if(aryDBLayer[intLayerIndex]== null)
		   return;
		aryDBLayer[intLayerIndex][0].RemoveSelf();
		aryDBLayer[intLayerIndex] = new Array();
		
	};
	
	this.RemoveAllLayer = function()
	{
		/*
		for (var intLayerIndex=0;intLayerIndex<aryDBLayer.length;intLayerIndex++)
		{
			aryDBLayer[intLayerIndex][0].RemoveSelf();
			aryDBLayer[intLayerIndex] = new Array();
		}
		*/	
		
		try
		{
				
			for (var intLayerIndex=0;intLayerIndex<aryDBLayer.length;intLayerIndex++)
			{
				aryDBLayer[intLayerIndex][0].RemoveSelf();
				aryDBLayer[intLayerIndex] = new Array();
			}	
		
		}
		catch(E){}
		//infoPointLegendSpec.innerHTML = ''; //NeedEdit
		//infoPolyLegendSpec.innerHTML = ''; //NeedEdit
		
		aryDBLayer = new Array();
	};
	
	this.VisibleLayer = function(intLayerIndex){
		
		if (aryDBLayer[intLayerIndex][2]){
			aryDBLayer[intLayerIndex][0].Hide();
			aryDBLayer[intLayerIndex][2] = false;
			
		}else{
			this.ShowLayer(aryDBLayer[intLayerIndex][1]);
			//aryDBLayer[intLayerIndex][0].Show();
			aryDBLayer[intLayerIndex][2] = true;
		}
		
	};
	
	this.ShowLayer = function(intLayerIndex){
		aryDBLayer[intLayerIndex][0].Show();
	};
	
	this.HideLayer = function(intLayerIndex){
		aryDBLayer[intLayerIndex][0].Hide();
	};
	
	this.getLayerLength = function(){
		return aryDBLayer.length;
	};
}


//加入DB點位
function AddDBLayer(pMapBase)
{
	this.Create = function()
	{
		if (pDBLayer==null)
		{
			pMapBase.AddElement(pDBLayer = new TempDBLayer(pMapBase));
		}
		pDBLayer.Show();
	};
}
			
function OpenDBLayer()  // 決定要控制的圖層
{
	this.MapCommand = function(tEvent, pMapBase, hObj)
	{
		if (pDBLayer==null)
		{
			return;
		}
			
		if (pDBLayer.IsVisible())
		{
			pDBLayer.Hide();
		}
		else
			{
			pDBLayer.Show();
		}
	};
}


function TempDBLayer(pMapBase,strSQL,clrR,clrG,clrB)
{
	var _strSQL = strSQL;
	var _ColorR = clrR;
	var _ColorG = clrG;
	var _ColorB = clrB;
	
	var pNode = pMapBase.getHObject();
	var w = pMapBase.getClientWidth();
	var h = pMapBase.getClientHeight();
	var ltpt = pMapBase.ToMapPoint(0, 0);
	var rbpt = pMapBase.ToMapPoint(w, h);
//public
	this.setSQL = function(strSQL){
		_strSQL = strSQL;
	};
	this.getSQL = function(){
		return _strSQL;
	};
	this.Visible = function(Visib) {if (Visib){ this.Show(); }else {this.Hide();}};
	this.IsVisible = function() {return ObjDBMap.style.visibility != "hidden";};
	this.Hide = function() {ObjDBMap.style.visibility = "hidden";};
	this.Show = function() {
	ObjDBMap.style.visibility = "visible";
		//this.RebuildElement();
		};
	this.RemoveSelf = function()
	{
		pNode.removeChild(ObjDBMap);
		m_MapBase = null;
	};
	
	var CalculatePos = function()
	{
		var pt = pMapBase.FromMapPoint(ltpt.X, ltpt.Y);
		ObjDBMap.style.left = pt.X;
		ObjDBMap.style.top = pt.Y;
		var ept = pMapBase.FromMapPoint(rbpt.X, rbpt.Y);
		ObjDBMap.style.width = ept.X - pt.X;//cltWidth * imgRatio;
		ObjDBMap.style.height = ept.Y - pt.Y;//cltHeight * imgRatio;
	};
	
	this.RebuildElement = null;
	this.UpdateElement = function(imgRatio) {CalculatePos();};

//private
	var ObjDBMap;
	

//constructor

	ObjDBMap = pNode.ownerDocument.createElement("img");
	//m_hObj = pNode.ownerDocument.createElement("div");
	//m_hObj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(Opacity=80, style=0)";
	
	ObjDBMap.style.position = "absolute";
	ObjDBMap.style.MozUserSelect="none";
	ObjDBMap.style.visibility = "visible";
	this.RebuildElement = function() 
	{
		//alert('ReBuildSQL:' + _strSQL);
		if (!this.IsVisible())
		{
			return;
		}
		w = pMapBase.getClientWidth();
		h = pMapBase.getClientHeight();
		ltpt = pMapBase.ToMapPoint(0, 0);
		rbpt = pMapBase.ToMapPoint(w, h);
		var mapurl = "AddDBLayer.aspx?clrR=" + _ColorR + "&clrG=" + _ColorG + "&clrB=" + _ColorB + "&Left=" + ltpt.X + "&Top=" + ltpt.Y + "&Right=" + rbpt.X + "&Bottom=" + rbpt.Y + "&Width=" + w + "&Height=" + h + "&SQLStr=" + _strSQL + "&NowTime=" + today.getTime();
		window.open("").document.write(mapurl);
		ObjDBMap.onload = function()
		{
			if (ObjDBMap.readyState == "complete")
			{
				CalculatePos();
				ObjDBMap.style.visibility = "visible";
			}
		};
		ObjDBMap.style.visibility = "hidden";
		ObjDBMap.src = mapurl;
		
		//m_hObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + mapurl + "', sizingMethod='scale')" + 
	};
	ObjDBMap.style.left = 0;
	ObjDBMap.style.top = 0;
	ObjDBMap.style.width = w;
	ObjDBMap.style.height = h;
	ObjDBMap.style.visibility = "visible";
	//ObjDBMap.style.border = "solid 1px green";
	this.RebuildElement();
	
	pNode.appendChild(ObjDBMap);
}


function OpenShpLayer(LayerName)  // 決定要控制的圖層
{
	
	this.MapCommand = function(tEvent, pMapBase, hObj)
	{
		/*if (pShpLayer==null)
			pMapBase.AddElement(pShpLayer = new TempShpLayer(pMapBase,LayerName));
		else if (pShpLayer.IsVisible())
			pShpLayer.Hide();
		else
			pShpLayer.Show();*/
		if (pShpLayer==null)
		{
			return;
		}
			
		if (pShpLayer.IsVisible())
		{
			pShpLayer.Hide();
		}
		else
			{
			pShpLayer.Show();
		}
	};
}
function TempShpLayer(pMapBase, LayerName,shpname,pid,tp)
{
	var pNode = pMapBase.getHObject();
	var w = pMapBase.getClientWidth();
	var h = pMapBase.getClientHeight();
	var ltpt = pMapBase.ToMapPoint(0, 0);
	var rbpt = pMapBase.ToMapPoint(w, h);
//public
	this.Visible = function(Visib) {if (Visib){ this.Show();} else{ this.Hide();}};
	this.IsVisible = function() {return m_hObj.style.visibility != "hidden";};
	this.Hide = function() {
		m_hObj.style.visibility = "hidden";
		};
	this.Show = function() {
		m_hObj.style.visibility = "visible";
		//this.RebuildElement();
		};
	this.RemoveSelf = function()
	{
		pNode.removeChild(m_hObj);
		m_MapBase = null;
	};

	var CalculatePos = function()
	{
		var pt = pMapBase.FromMapPoint(ltpt.X, ltpt.Y);
		m_hObj.style.left = pt.X;
		m_hObj.style.top = pt.Y;
		var ept = pMapBase.FromMapPoint(rbpt.X, rbpt.Y);
		m_hObj.style.width = ept.X - pt.X;//cltWidth * imgRatio;
		m_hObj.style.height = ept.Y - pt.Y;//cltHeight * imgRatio;
	};
	this.RebuildElement = null;
	this.UpdateElement = function(imgRatio) {CalculatePos();};
	this.RebuildElement = function() 
	{
		w = pMapBase.getClientWidth();
		h = pMapBase.getClientHeight();
		ltpt = pMapBase.ToMapPoint(0, 0);
		rbpt = pMapBase.ToMapPoint(w, h);
		var mlx = MapToRealPosX(ltpt.X);
		var mly = MapToRealPosY(ltpt.Y);
		var mrx = MapToRealPosX(rbpt.X);
		var mry = MapToRealPosY(rbpt.Y);
	  var mapurl='../2006_12_eTraffic_swg2/aspx/AddImg.aspx?tp='+tp+'&mlx='+mlx+'&mly='+mly+'&mrx='+mrx+'&mry='+mry+'&w='+w+'&h='+h;
	  switch(tp)
	  {
	  	case 1:
	  	mapurl=mapurl+'&sn='+shpname;
	  	break;
	  	case 2:
	  	case 3:
	  	
	  	mapurl=mapurl+'&id='+pid;
	  	break;
	  
	  }
	  
//	window.open("").document.write( mapurl);
		CalculatePos();	
		m_hObj.style.filter = "progid:DXImageTransform.Microsoft.Chroma(Color=#FFFFFF) progid:DXImageTransform.Microsoft.Alpha(opacity=60)progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+mapurl+"\')";
	//	m_hObj.style.filter = "FILTER: chroma(color:#ffffff); alpha(opacity=60);opacity: .6;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+mapurl+"\')";	
	};
//private
	var m_hObj;
	var tmpArry = new Array();
//constructor
	m_hObj = pNode.ownerDocument.createElement("div");
//	m_hObj.style.filter = "FILTER: chroma(color:#ffffff); alpha(opacity=60);opacity: .6;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+mapurl+"\')";
	m_hObj.style.filter = "progid:DXImageTransform.Microsoft.Chroma(Color=#FFFFFF) progid:DXImageTransform.Microsoft.Alpha(opacity=60)progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+mapurl+"\')";	
	//m_hObj.style.filter = " FILTER: chroma(color:#000000); alpha(opacity=60);opacity: .6; ";	
	m_hObj.style.position = "absolute";
	m_hObj.style.MozUserSelect="none";
	m_hObj.style.visibility = "visible";
	m_hObj.style.width = w;
	m_hObj.style.height = h;
	//m_hObj.style.left=0;
	//m_hObj.style.top=0;
	m_hObj.style.visibility = "visible";
	this.RebuildElement();
	pNode.appendChild(m_hObj);
}

//列印
function doPrintPreview(){
  //打印預覽
  this.MapCommand = function(tEvent, pMapBase, hObj)
	{
  		WB.ExecWB(7,1);
	};
}

function TempRoadSpeedLayer(pMapBase, LayerName, pid)
{

	var pNode = pMapBase.getHObject();
	var w = pMapBase.getClientWidth();
	var h = pMapBase.getClientHeight();
	var ltpt = pMapBase.ToMapPoint(0, 0);
	var rbpt = pMapBase.ToMapPoint(w, h);
//public
	this.Visible = function(Visib) {if (Visib){ this.Show();} else{ this.Hide();}};
	this.IsVisible = function() {return m_hObj.style.visibility != "hidden";};
	this.Hide = function() {
		m_hObj.style.visibility = "hidden";
		};
	this.Show = function() {
		m_hObj.style.visibility = "visible";
		//this.RebuildElement();
		};
	this.RemoveSelf = function()
	{
		pNode.removeChild(m_hObj);
		m_MapBase = null;
	};
	
	
	var CalculatePos = function()
	{
		var pt = pMapBase.FromMapPoint(ltpt.X, ltpt.Y);
		m_hObj.style.left = pt.X;
		m_hObj.style.top = pt.Y;
		var ept = pMapBase.FromMapPoint(rbpt.X, rbpt.Y);
		m_hObj.style.width = ept.X - pt.X;//cltWidth * imgRatio;
		m_hObj.style.height = ept.Y - pt.Y;//cltHeight * imgRatio;
	};
	
	this.RebuildElement = null;
	this.UpdateElement = function(imgRatio) {CalculatePos();};
	
	this.RebuildElement = function() 
	{
		//if (!this.IsVisible())
		//	return;
		
		w = pMapBase.getClientWidth();
		h = pMapBase.getClientHeight();
		ltpt = pMapBase.ToMapPoint(0, 0);
		rbpt = pMapBase.ToMapPoint(w, h);
		var TM2X = MapToRealPosX(ltpt.X);
		var TM2Y = MapToRealPosY(ltpt.Y);
		var TM2X2 = MapToRealPosX(rbpt.X);
		var TM2Y2 = MapToRealPosY(rbpt.Y);
		var mapurl = '../SWG2/TrafficRoadSpeed.aspx?Left='+TM2X +'&Top='+TM2Y +'&Right='+TM2X2 +'&Bottom='+TM2Y2 +'&Width='+w+'&Height='+h+'&MaxNum=113&LayerName=All';
//	window.open("").document.write( mapurl);
		CalculatePos();	
		m_hObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+mapurl+"\')";	
	};

//private
	var m_hObj;
	var tmpArry = new Array();

//constructor

	m_hObj = pNode.ownerDocument.createElement("div");
	
	m_hObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+mapurl+"\')";	
	//m_hObj.style.filter = " FILTER: chroma(color:#000000); alpha(opacity=60);opacity: .6; ";	
	m_hObj.style.position = "absolute";
	m_hObj.style.MozUserSelect="none";
	m_hObj.style.visibility = "visible";
	m_hObj.style.width = w;
	m_hObj.style.height = h;
	//m_hObj.style.left=0;
	//m_hObj.style.top=0;
	m_hObj.style.visibility = "visible";
	this.RebuildElement();
	pNode.appendChild(m_hObj);
}
function tspTempShpLayer(pMapBase, LayerName)
{

	var pNode = pMapBase.getHObject();
	var w = pMapBase.getClientWidth();
	var h = pMapBase.getClientHeight();
	var ltpt = pMapBase.ToMapPoint(0, 0);
	var rbpt = pMapBase.ToMapPoint(w, h);
	//public
	this.Visible = function(Visib) {if (Visib){ this.Show();} else{ this.Hide();}};
	this.IsVisible = function() {return m_hObj.style.visibility != "hidden";};
	this.Hide = function() 
	{
		m_hObj.style.visibility = "hidden";
	};
	this.Show = function()
	{
		m_hObj.style.visibility = "visible";
		//this.RebuildElement();
	};
	this.RemoveSelf = function()
	{
		pNode.removeChild(m_hObj);
		m_MapBase = null;
	};
	
	
	var CalculatePos = function()
	{
		var pt = pMapBase.FromMapPoint(ltpt.X, ltpt.Y);
		m_hObj.style.left = pt.X;
		m_hObj.style.top = pt.Y;
		var ept = pMapBase.FromMapPoint(rbpt.X, rbpt.Y);
		m_hObj.style.width = ept.X - pt.X;//cltWidth * imgRatio;
		m_hObj.style.height = ept.Y - pt.Y;//cltHeight * imgRatio;
	};
	
	this.RebuildElement = null;
	this.UpdateElement = function(imgRatio) {CalculatePos();};
	
	this.RebuildElement = function() 
	{
		//if (!this.IsVisible())
		//	return;
		
		w = pMapBase.getClientWidth();
		h = pMapBase.getClientHeight();
		ltpt = pMapBase.ToMapPoint(0, 0)
		rbpt = pMapBase.ToMapPoint(w, h);
		
		//var ltpt = pMapBase.ToMapPoint(0, 0)	<---地圖螢幕的左上角,丟進去後..轉成SWG2地圖座標
		//var rbpt = pMapBase.ToMapPoint(w, h);	<---地圖螢幕的右下角,丟進去後..轉成SWG2地圖座標
		var TM2X = MapToRealPosX(ltpt.X);	//<---把SWG2的左上X丟入這個Function後會傳回地圖的實際座標
		var TM2Y = MapToRealPosY(ltpt.Y);	//<---把SWG2的左上Y丟入這個Function後會傳回地圖的實際座標
		var TMR2X=MapToRealPosX(rbpt.X);	//<---把SWG2的右下X丟入這個Function後會傳回地圖的實際座標
		var TMR2Y=MapToRealPosY(rbpt.Y);
		
		
		if((pMapBase.getMapLevel() >=1)&&(pMapBase.getMapLevel() <3)) //判斷目前顯示層級
 		{
 			var mapurl = "../2006_12_eTraffic_swg2/aspx/GetFreeWayImg1.aspx?LayerName=" + LayerName + "&Left=" + TM2X + "&Top=" + TM2Y + "&Right=" + TMR2X + "&Bottom=" + TMR2Y + "&Width=" + w + "&Height=" + h + "&MaxNum=113";
		}else
		if((pMapBase.getMapLevel() >=3)&&(pMapBase.getMapLevel() <6)) //判斷目前顯示層級
		{
			var mapurl = "../2006_12_eTraffic_swg2/aspx/GetFreeWayImg2.aspx?LayerName=" + LayerName + "&Left=" + TM2X + "&Top=" + TM2Y + "&Right=" + TMR2X + "&Bottom=" + TMR2Y + "&Width=" + w + "&Height=" + h + "&MaxNum=113";
		}else
		if((pMapBase.getMapLevel() >=6)&&(pMapBase.getMapLevel() <11)) //判斷目前顯示層級
		{
			var mapurl = "../2006_12_eTraffic_swg2/aspx/GetFreeWayImg.aspx?LayerName=" + LayerName + "&Left=" + TM2X + "&Top=" + TM2Y + "&Right=" + TMR2X + "&Bottom=" + TMR2Y + "&Width=" + w + "&Height=" + h + "&MaxNum=113";
		}
		//kk();
		//alert(pMapBase.getMapLevel());
		//var mapurl = "GetSpeedImg.aspx?LayerName=" + LayerName + "&Left=" + TM2X + "&Top=" + TM2Y + "&Right=" + TMR2X + "&Bottom=" + TMR2Y + "&Width=" + w + "&Height=" + h + "&MaxNum=113";
		///var mapurl = "../2006_12_eTraffic_swg22/aspx/GetFreeWayImg.aspx?LayerName=" + LayerName + "&Left=" + TM2X + "&Top=" + TM2Y + "&Right=" + TMR2X + "&Bottom=" + TMR2Y + "&Width=" + w + "&Height=" + h + "&MaxNum=113";
		
		//var mapurl = 'GetImgPng.aspx?TM2X='+TM2X +'&TM2Y='+TM2Y +'&TM2X2='+TM2X2 +'&TM2Y2='+TM2Y2 +'&w='+w+'&h='+h+'&ID='+pid;
		
		//window.open("").document.write( mapurl);
		//m_hObj.onload = function()
		//{
		//	if (m_hObj.readyState == "complete")
		//	{
		
				CalculatePos();
		
		//		m_hObj.style.visibility = "visible";
		//	}
		//}
		//m_hObj.style.visibility = "hidden";
		
		//m_hObj.src = mapurl;
		//m_hObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+mapurl+"\')";	
		m_hObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + mapurl + "', sizingMethod='image')" ;
		//m_hObj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(Opacity=80, style=0)";
				//rogid XImageTransform.Microsoft.Alpha(Opacity=80, style=0)
		//m_hObj.style.src = "\'"+mapurl+"\')";	
			
	};

//private
	var m_hObj;
	var tmpArry = new Array();

//constructor

	//m_hObj = pNode.ownerDocument.createElement("div");
	m_hObj = pNode.ownerDocument.createElement("span");
	//m_hObj = pNode.ownerDocument.createElement("img");
	
	//m_hObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+mapurl+"\')";	
	//m_hObj.style.filter = " FILTER: chroma(color:#000000); alpha(opacity=60);opacity: .6; ";	
	m_hObj.style.position = "absolute";
	m_hObj.style.MozUserSelect="none";
	m_hObj.style.visibility = "visible";
	m_hObj.style.width = w;
	m_hObj.style.height = h;
	//m_hObj.style.left=0;
	//m_hObj.style.top=0;
	m_hObj.style.visibility = "visible";
	
	
	this.RebuildElement();
//ale();
	pNode.appendChild(m_hObj);
}

function TempNumberPoint(pMapBase,innerStr)
{
	var pNode = pMapBase.getHObject();
	var w = pMapBase.getClientWidth();
	var h = pMapBase.getClientHeight();
	var ltpt = pMapBase.ToMapPoint(0, 0);
	var rbpt = pMapBase.ToMapPoint(w, h);
//public
	this.Visible = function(Visib) {if (Visib){ this.Show(); }else {this.Hide();}};
	this.IsVisible = function() {return m_hObj.style.visibility != "hidden";};
	this.Hide = function() {m_hObj.style.visibility = "hidden";};
	this.Show = function() {m_hObj.style.visibility = "visible";};
	this.RemoveSelf = function()
	{
		pNode.removeChild(m_hObj);
		m_MapBase = null;
	};
	
	var CalculatePos = function()
	{
	var pt = pMapBase.FromMapPoint(ltpt.X, ltpt.Y);
		m_hObj.style.left = pt.X;
		m_hObj.style.top = pt.Y;
		var ept = pMapBase.FromMapPoint(rbpt.X, rbpt.Y);
		m_hObj.style.width = ept.X - pt.X;//cltWidth * imgRatio;
		m_hObj.style.height = ept.Y - pt.Y;//cltHeight * imgRatio;
	};
	
//this.RebuildElement = null;
	this.UpdateElement = function(imgRatio) {CalculatePos();};
  this.RebuildElement = function() 
	{
			
	  var w = pMapBase.getClientWidth();
	  var	h = pMapBase.getClientHeight();
	  ltpt = pMapBase.ToMapPoint(0, 0);
		rbpt = pMapBase.ToMapPoint(w, h);
	  var i;
	  var tmpa = new Array();			
    var aaa= function(xx,yy,sx,sy,pic,num)
    {
    	 ScreenClientPt =pMapBase.FromMapPoint(RealToMapPosX(xx),RealToMapPosY(yy));	
    	 tmpa.push('<div style="position: absolute; z-index: 1; left:');
    	 tmpa.push(ScreenClientPt.X-sx);
    	 tmpa.push('px; top:');
    	 tmpa.push(ScreenClientPt.Y-sy);
    	 tmpa.push('px;width:18" align="center" >');	
    	 tmpa.push('<img src="images/print/'+pic+'" style="position: absolute;left:0;top:0;z-index:-1" ><font color="#FFFFFF" size="2">');
    	 tmpa.push(num);
    	 tmpa.push('</font></div>');
    };
	
	  aaa(Coordinate[0],Coordinate[1],16,16,'se0.gif','');
	  for ( i=2; i<(Coordinate.length)/2;i++)
	  {
	     aaa(Coordinate[i*2],Coordinate[i*2+1],9,9,'RedRound.GIF',i-1);
	  }
    aaa(Coordinate[2],Coordinate[3],16,16,'se1.gif','');
    m_hObj.style.left = 0;
	  m_hObj.style.top = 0;	
	  m_hObj.innerHTML =tmpa.join('');
	  CalculatePos();
		m_hObj.style.visibility = "visible";
	};

//private
	var m_hObj;
//constructor
	m_hObj = pNode.ownerDocument.createElement("div");
	m_hObj.style.position = "absolute";
	m_hObj.style.MozUserSelect="none";
	m_hObj.style.visibility = "visible";
	//ObjDBMap.style.border = "solid 1px green";
	this.RebuildElement();
	
	pNode.appendChild(m_hObj);
}
function TempVmlLayer(pMapBase,innerStr)
{
	var pNode = pMapBase.getHObject();
	var w = pMapBase.getClientWidth();
	var h = pMapBase.getClientHeight();
	var ltpt = pMapBase.ToMapPoint(0, 0);
	var rbpt = pMapBase.ToMapPoint(w, h);
//public
	this.Visible = function(Visib) {if (Visib){ this.Show(); }else {this.Hide();}};
	this.IsVisible = function() {return m_hObj.style.visibility != "hidden";};
	this.Hide = function() {m_hObj.style.visibility = "hidden";};
	this.Show = function() {m_hObj.style.visibility = "visible";};
	this.RemoveSelf = function()
	{
		pNode.removeChild(m_hObj);
		m_MapBase = null;
	};
	
	var CalculatePos = function()
	{
	var pt = pMapBase.FromMapPoint(ltpt.X, ltpt.Y);
		m_hObj.style.left = pt.X;
		m_hObj.style.top = pt.Y;
		var ept = pMapBase.FromMapPoint(rbpt.X, rbpt.Y);
		m_hObj.style.width = ept.X - pt.X;//cltWidth * imgRatio;
		m_hObj.style.height = ept.Y - pt.Y;//cltHeight * imgRatio;
	};
	
	this.UpdateElement = function(imgRatio) {CalculatePos();};
  this.RebuildElement = function() 
	{
		var tmpa = innerStr.split(';');
		var sss='';
		ltpt = pMapBase.ToMapPoint(0, 0);
		rbpt = pMapBase.ToMapPoint(w, h);
		for ( i=0; i< tmpa.length-1; i++)
		{
			
			tmpaa = tmpa[i].split(',');
			for ( j=0; j<tmpaa.length; j=j+2 )
			{
		  	ScreenClientPt =pMapBase.FromMapPoint(RealToMapPosX(tmpaa[j]),RealToMapPosY(tmpaa[j+1]));
		  	sss=sss+ScreenClientPt.X+ ','+ScreenClientPt.Y+',';
		  }
		}


		var ass=' <v:polyline style="Z-INDEX:1;LEFT:0;POSITION:absolute;TOP:0" points="'+sss+'" filled="f" strokecolor="#0000ff" strokeweight="3pt"/>';
m_hObj.style.left = 0;
	  m_hObj.style.top = 0;	
	  m_hObj.innerHTML =ass;
	  CalculatePos();
		m_hObj.style.visibility = "visible";
	};

//private
	var m_hObj;
//constructor
	m_hObj = pNode.ownerDocument.createElement("div");
	m_hObj.style.position = "absolute";
	m_hObj.style.MozUserSelect="none";
	m_hObj.style.visibility = "visible";
	//ObjDBMap.style.border = "solid 1px green";
	this.RebuildElement();
	
	pNode.appendChild(m_hObj);
}


