// JavaScript Document
// LabelMgr.js
// 标注管理

function LabelMgrUnit()
{
	//添加标注
	this.addLabel = function(name, category, x, z)
	{
		var y = oEarthViewer.camera.getGroundHeight(x, z) + 2;
		var modelUrl = this.getModelUrlByCategory(category);
		var labelModel = labelLayer.addModelObject(x, y, z, modelUrl);
		labelModel.text = name;

		//将添加模型的角度添加到集合中
		var oLabelRevolveModel = new LabelRevolveModel();
		oLabelRevolveModel.setX(x);
		oLabelRevolveModel.setY(y);
		oLabelRevolveModel.setZ(z);
		revolveModelList[name] = oLabelRevolveModel;
	};
	
	this.getModelUrlByCategory = function(category)
	{
		var modelUrl = "";
			
	if (category == "警察")
			modelUrl = virdirurl + "models/jingche/model.xz";
		else if (category == "消防车")
			modelUrl = virdirurl + "models/xiaofangche/model.xz";
		else if (category == "瞭望塔")
		  modelUrl = virdirurl + "models/liaowangta/model.xz";
		else if (category == "水塔")
		  modelUrl = virdirurl + "models/shuita/model.xz";
		else if (category == "布防")
		  modelUrl = virdirurl + "models/bufang/model.xz";
		else if (category == "小镇")
		  modelUrl = virdirurl + "models/xiaozhen/model.xz";
		else if (category == "指挥中心")
		  modelUrl = virdirurl + "models/zhongxin/model.xz";
		else if (category == "越野车")
		  modelUrl = virdirurl + "models/yueyeche/model.xz";
		else if (category == "消防员")
		  modelUrl = virdirurl + "models/xiaofangyuan/model.xz";
		else if (category == "运输队员")
		  modelUrl = virdirurl + "models/yunshu/model.xz";
			
		return modelUrl;
		
		//return "E:\\workspace\\森林防火\\tanke.xz";
	};
	
	//移动模型
	this.move = function(moveType)
	{
		if (selObj == null)
			return;
		
		var moveLength = document.getElementById("modelMoveLength").value;
		var pt = selObj.points.getAt(0);
		var delta = parseFloat(moveLength);
		
		if (moveType == "up")
			selObj.updatePosition(pt.x, pt.y, pt.z + delta);
		else if (moveType == "down")
			selObj.updatePosition(pt.x, pt.y, pt.z - delta);
		else if (moveType == "left")
			selObj.updatePosition(pt.x - delta, pt.y, pt.z);
		else if (moveType == "right")
			selObj.updatePosition(pt.x + delta, pt.y, pt.z);
			
		oEarthViewer.redraw();
	};
	
	//旋转模型
	this.revolve = function(revolveType)
	{
		if (selObj == null)
			return;
			
		var revolveValue = document.getElementById("revolveValue").value;
		
		var modelX = 0;
		var modelY = 0;
		var modelZ = 0;
		var keyValue = "";
		
		for (var key in revolveModelList)
		{
			if (key == selObj.text)
			{
				modelX = revolveModelList[key].getX();
				modelY = revolveModelList[key].getY();
				modelZ = revolveModelList[key].getZ();
				keyValue = key;
			}
		}
		
		if (revolveType == "x")
		{
			var angleP = oEarthViewer.classFactory.createPoint3d(parseInt(revolveValue) + parseInt(modelX), 0, 0);
			selObj.angleParam = angleP;
			
			
			delete revolveModelList[keyValue];
		
			var newLabelRevolveModel = new LabelRevolveModel();
			newLabelRevolveModel.setX(modelX + parseInt(revolveValue));
			newLabelRevolveModel.setY(modelY);
			newLabelRevolveModel.setZ(modelZ);
			revolveModelList[keyValue] = newLabelRevolveModel;
		}
		else if (revolveType == "y")
		{
			var angleP = oEarthViewer.classFactory.createPoint3d(0, parseInt(revolveValue) + parseInt(modelY), 0);
			selObj.angleParam = angleP;
			
			
			delete revolveModelList[keyValue];
		
			var newLabelRevolveModel = new LabelRevolveModel();
			newLabelRevolveModel.setX(modelX);
			newLabelRevolveModel.setY(modelY + parseInt(revolveValue));
			newLabelRevolveModel.setZ(modelZ);
			revolveModelList[keyValue] = newLabelRevolveModel;
		}
		else if (revolveType == "z")
		{
			var angleP = oEarthViewer.classFactory.createPoint3d(0, 0, parseInt(revolveValue) + parseInt(modelZ));
			selObj.angleParam = angleP;
			
			delete revolveModelList[keyValue];
		
			var newLabelRevolveModel = new LabelRevolveModel();
			newLabelRevolveModel.setX(modelX);
			newLabelRevolveModel.setY(modelY);
			newLabelRevolveModel.setZ(modelZ + parseInt(revolveValue));
			revolveModelList[keyValue] = newLabelRevolveModel;
		}
		
		oEarthViewer.redraw();
	};
	
	this.zoom = function(zoomType)
	{
		var zoomValue = document.getElementById("modelZoomValue").value;
		
		if (selObj == null)
			return;
			
		//放大
		if (zoomType == "zoomin")
		{
			var scaleP = selObj.scaleParam;
			scaleP.x += (scaleP.x * zoomValue);
			scaleP.y += (scaleP.y * zoomValue);
			scaleP.z += (scaleP.z * zoomValue);
			selObj.scaleParam = scaleP;
			oEarthViewer.redraw();
		}
		else if (zoomType == "zoomout")
		{
			var scaleP = selObj.scaleParam;
			
			if (zoomValue == 1)
			{
				scaleP.x -= (scaleP.x * zoomValue / 2);
				scaleP.y -= (scaleP.y * zoomValue / 2);
				scaleP.z -= (scaleP.z * zoomValue / 2);
			}
			else
			{
				scaleP.x -= (scaleP.x * zoomValue);
				scaleP.y -= (scaleP.y * zoomValue);
				scaleP.z -= (scaleP.z * zoomValue);
			}
			
			selObj.scaleParam = scaleP;
			oEarthViewer.redraw();
		}
	};
}