////////////////////////
// topoopr.js
// 2D Simple
// 拓扑层操作
// 王磊 2008-09-18
////////////////////////

//增加拓扑点
var strAddTopoPoint;
function initStrAddTopoPoint()
{
	strAddTopoPoint = "var oClassFactory = oMapViewer.classFactory;" + "\n";
	strAddTopoPoint += "var centerX = oMapViewer.renderContext.coordSystem.centerPoint.x; " + "\n";
	strAddTopoPoint += "var centerY = oMapViewer.renderContext.coordSystem.centerPoint.y;" + "\n";
	strAddTopoPoint += "var curScale = oMapViewer.renderContext.coordSystem.curScale;" + "\n";
	strAddTopoPoint += "var scale = curScale*0.0000001;" + "\n";
	strAddTopoPoint += "\n";
	strAddTopoPoint += "var Layer_Name = '添加点层';" + "\n";
	strAddTopoPoint += "var factory = oMapViewer.classFactory;" + "\n";
	strAddTopoPoint += "var pointRed,pointGreen,pointBlue;" + "\n";
	strAddTopoPoint += "function createLegends()" + "\n";
	strAddTopoPoint += "{" + "\n";
	strAddTopoPoint += "	pointRed=factory.createLegend();" + "\n";
	strAddTopoPoint += "    pointRed.initSimplePoint(1,factory.createColor(196,0,128),true);" + "\n";
	strAddTopoPoint += "    pointGreen=factory.createLegend();" + "\n";
	strAddTopoPoint += "    pointGreen.initSimplePoint(1,factory.createColor(0,255,0),true);" + "\n";
	strAddTopoPoint += "    pointBlue=factory.createLegend();" + "\n";
	strAddTopoPoint += "    pointBlue.initSimplePoint(1,factory.createColor(0,0,255),true);" + "\n";
	strAddTopoPoint += "}" + "\n";
	strAddTopoPoint += "function addPoints()" + "\n";
	strAddTopoPoint += "{" + "\n";
	strAddTopoPoint += "    addOnePoint('拓扑点一',centerX-2*scale,centerY-2*scale,pointRed);" + "\n";
	strAddTopoPoint += "    addOnePoint('拓扑点二',centerX+2*scale,centerY+2*scale,pointGreen);" + "\n";
	strAddTopoPoint += "}" + "\n";
	strAddTopoPoint += "function addOnePoint(pointName,x,y,legend)" + "\n";
	strAddTopoPoint += "{" + "\n";
	strAddTopoPoint += "    var pointObject=topoLayer.addPointObject(x,y);" + "\n";
	strAddTopoPoint += "    pointObject.text=pointName;" + "\n";
	strAddTopoPoint += "    pointObject.legend=legend;" + "\n";
	strAddTopoPoint += "}" + "\n";
	strAddTopoPoint += "function createTopoLayer()" + "\n";
	strAddTopoPoint += "{" + "\n";
	strAddTopoPoint += "    createLegends();" + "\n";
	strAddTopoPoint += "    topoLayer=oMapViewer.topoLineLayers.addLayer(Layer_Name);" + "\n";
	strAddTopoPoint += "    addPoints();" + "\n";
	strAddTopoPoint += "    oMapViewer.redraw();" + "\n";
	strAddTopoPoint += "}" + "\n";
	strAddTopoPoint += "createTopoLayer();" + "\n";

	return strAddTopoPoint;
}

function addTopoPointLink()
{
	displayCode(initStrAddTopoPoint());
}

function runAddTopoPointLink()
{
	displayCode(initStrAddTopoPoint());
	//window.execScript(initStrAddTopoPoint());
	runCodeTopoLayer(initStrAddTopoPoint());
}

//添加拓扑线
var strAddTopoLine;
function initStrAddTopoLine()
{
	strAddTopoLine = "var oClassFactory = oMapViewer.classFactory;" + "\n";
	strAddTopoLine += "var centerX = oMapViewer.renderContext.coordSystem.centerPoint.x; " + "\n";
	strAddTopoLine += "var centerY = oMapViewer.renderContext.coordSystem.centerPoint.y;" + "\n";
	strAddTopoLine += "var curScale = oMapViewer.renderContext.coordSystem.curScale;" + "\n";
	strAddTopoLine += "var scale = curScale*0.0000001;" + "\n";
	strAddTopoLine += "" + "\n";
	strAddTopoLine += "var Layer_Name='NewTopoLineLayer';" + "\n";
	strAddTopoLine += "var topoLayer;" + "\n";
	strAddTopoLine += "var factory = oMapViewer.classFactory;" + "\n";
	strAddTopoLine += "var pointRed,pointGreen,pointBlue;" + "\n";
	strAddTopoLine += "var lineGreen;" + "\n";
	strAddTopoLine += "function createLegends()" + "\n";
	strAddTopoLine += "{" + "\n";
	strAddTopoLine += "    pointRed=factory.createLegend();" + "\n";
	strAddTopoLine += "    pointRed.initSimplePoint(1,factory.createColor(196,0,128),true);" + "\n";
	strAddTopoLine += "    pointGreen=factory.createLegend();" + "\n";
	strAddTopoLine += "    pointGreen.initSimplePoint(1,factory.createColor(0,255,0),true);" + "\n";
	strAddTopoLine += "    pointBlue=factory.createLegend();" + "\n";
	strAddTopoLine += "    pointBlue.initSimplePoint(1,factory.createColor(0,0,255),true);" + "\n";
	strAddTopoLine += "    lineGreen=factory.createLegend();" + "\n";
	strAddTopoLine += "    lineGreen.initSimpleLine(1,factory.createColor(0,128,0));" + "\n";
	strAddTopoLine += "}" + "\n";
	strAddTopoLine += "function addPoints()" + "\n";
	strAddTopoLine += "{" + "\n";
	strAddTopoLine += "    addOnePoint('拓扑点一',centerX-3*scale,centerY,pointRed);" + "\n";
	strAddTopoLine += "    addOnePoint('拓扑点二',centerX+3*scale,centerY,pointGreen);" + "\n";
	strAddTopoLine += "}" + "\n";
	strAddTopoLine += "function addOnePoint(pointName,x,y,legend)" + "\n";
	strAddTopoLine += "{" + "\n";
	strAddTopoLine += "    var pointObject=topoLayer.addPointObject(x,y);" + "\n";
	strAddTopoLine += "    pointObject.text=pointName;" + "\n";
	strAddTopoLine += "    pointObject.legend=legend;" + "\n";
	strAddTopoLine += "    nameMapping[pointName]=pointObject.oid;" + "\n";
	strAddTopoLine += "}" + "\n";
	strAddTopoLine += "function addLineGroup(groupString,legend)" + "\n";
	strAddTopoLine += "{" + "\n";
	strAddTopoLine += "    var pointNames=groupString.split(' ');" + "\n";
	strAddTopoLine += "    if(pointNames.length<=0)" + "\n";
	strAddTopoLine += "        return;" + "\n";
	strAddTopoLine += "    var name1,name2;" + "\n";
	strAddTopoLine += "    var startName, endName;" + "\n";
	strAddTopoLine += "    var lineName;" + "\n";
	strAddTopoLine += "    var groupName;" + "\n";
	strAddTopoLine += "    startName=pointNames[0];" + "\n";
	strAddTopoLine += "    endName=pointNames[pointNames.length-1];" + "\n";
	strAddTopoLine += "    groupName = startName + '-' + endName;" + "\n";
	strAddTopoLine += "    var objs=factory.createNumberArray();" + "\n";
	strAddTopoLine += "    var lineIndex;" + "\n";
	strAddTopoLine += "    for(var i=0;i<pointNames.length-1;i++)" + "\n";
	strAddTopoLine += "    {" + "\n";
	strAddTopoLine += "        name1=pointNames[i];" + "\n";
	strAddTopoLine += "        name2=pointNames[i+1];" + "\n";
	strAddTopoLine += "        lineName=name1+'-'+name2;" + "\n";
	strAddTopoLine += "        lineIndex=addOneLine(name1,name2,lineName,groupName,legend);" + "\n";
	strAddTopoLine += "        if(lineIndex>=0)" + "\n";
	strAddTopoLine += "        objs.add(lineIndex);" + "\n";
	strAddTopoLine += "    }" + "\n";
	strAddTopoLine += "    var groupObject=topoLayer.addLineGroupObject(objs);" + "\n";
	strAddTopoLine += "}" + "\n";
	strAddTopoLine += "function addOneLine(startPointName,endPointName,lineName,groupName,legend)" + "\n";
	strAddTopoLine += "{" + "\n";
	strAddTopoLine += "    var indexStart;" + "\n";
	strAddTopoLine += "    var indexEnd;		" + "\n";
	strAddTopoLine += "    indexStart=nameMapping[startPointName];" + "\n";
	strAddTopoLine += "    indexEnd=nameMapping[endPointName];" + "\n";
	strAddTopoLine += "    if(indexStart==null || indexEnd==null)" + "\n";
	strAddTopoLine += "        return -1;" + "\n";
	strAddTopoLine += "    var lineObject=topoLayer.addLineObject(indexStart,indexEnd);" + "\n";
	strAddTopoLine += "    lineObject.legend=legend;" + "\n";
	strAddTopoLine += "    lineObject.attr=lineName;" + "\n";
	strAddTopoLine += "    lineObject.text='拓扑线';" + "\n";
	strAddTopoLine += "    return lineObject.oid;" + "\n";
	strAddTopoLine += "}" + "\n";
	strAddTopoLine += "function createTopoLayer()" + "\n";
	strAddTopoLine += "{" + "\n";
	strAddTopoLine += "    createLegends();" + "\n";
	strAddTopoLine += "    topoLayer=oMapViewer.topoLineLayers.addLayer(Layer_Name);" + "\n";
	strAddTopoLine += "    nameMapping=new Object();" + "\n";
	strAddTopoLine += "    addPoints();" + "\n";
	strAddTopoLine += "    addLineGroup('拓扑点一 拓扑点二',lineGreen);" + "\n";
	strAddTopoLine += "    topoLayer.enableParaDrawing=true;" + "\n";
	strAddTopoLine += "    topoLayer.paraLenFromLine=12;" + "\n";
	strAddTopoLine += "    topoLayer.paraLenAlongLine=10;" + "\n";
	strAddTopoLine += "    topoLayer.paraLenBase=20;	" + "\n";
	strAddTopoLine += "    oMapViewer.isSelectGroup=true;	" + "\n";
	strAddTopoLine += "    topoLayer.markDuplicateLines();" + "\n";
	strAddTopoLine += "    oMapViewer.redraw();		" + "\n";
	strAddTopoLine += "}" + "\n";
	strAddTopoLine += "createTopoLayer();" + "\n";
	strAddTopoLine += "" + "\n";

	return strAddTopoLine;
}

function addTopoLineLink()
{
	displayCode(initStrAddTopoLine());
}

function runAddTopoLine()
{
	displayCode(initStrAddTopoLine());
	//window.execScript(initStrAddTopoLine());
	runCodeTopoLayer(initStrAddTopoLine());
}

//添加避让层叠线
var strAddCascadeLine;
function initStrAddCascadeLine()
{
	strAddCascadeLine = "var centerX = oMapViewer.renderContext.coordSystem.centerPoint.x; " + "\n";
	strAddCascadeLine += "var centerY = oMapViewer.renderContext.coordSystem.centerPoint.y;" + "\n";
	strAddCascadeLine += "var curScale = oMapViewer.renderContext.coordSystem.curScale;" + "\n";
	strAddCascadeLine += "var scale = curScale*0.0000001;" + "\n";
	strAddCascadeLine += "" + "\n";
	strAddCascadeLine += "var Layer_Name='重线避让层';" + "\n";
	strAddCascadeLine += "var topoLayer;" + "\n";
	strAddCascadeLine += "var factory = oMapViewer.classFactory;" + "\n";
	strAddCascadeLine += "var nameMapping;" + "\n";
	strAddCascadeLine += "var lineRed,lineGreen,lineBlue;" + "\n";
	strAddCascadeLine += "var pointRed,pointGreen,pointBlue;" + "\n";
	strAddCascadeLine += "" + "\n";
	strAddCascadeLine += "function createLegends()" + "\n";
	strAddCascadeLine += "{" + "\n";
	strAddCascadeLine += "	pointRed=factory.createLegend();" + "\n";
	strAddCascadeLine += "	pointRed.initSimplePoint(1,factory.createColor(196,0,128),true);" + "\n";
	strAddCascadeLine += "	pointGreen=factory.createLegend();" + "\n";
	strAddCascadeLine += "	pointGreen.initSimplePoint(1,factory.createColor(0,255,0),true);" + "\n";
	strAddCascadeLine += "  pointBlue=factory.createLegend();" + "\n";
	strAddCascadeLine += "	pointBlue.initSimplePoint(1,factory.createColor(0,0,255),true);" + "\n";
	strAddCascadeLine += "	lineRed=factory.createLegend();" + "\n";
	strAddCascadeLine += "	lineRed.initSimpleLine(1,factory.createColor(0,196,64));" + "\n";
	strAddCascadeLine += "	lineGreen=factory.createLegend();" + "\n";
	strAddCascadeLine += "	lineGreen.initSimpleLine(2,factory.createColorAdvance(128,0,128,0.3));" + "\n";
	strAddCascadeLine += "	lineBlue=factory.createLegend();" + "\n";
	strAddCascadeLine += "	lineBlue.initSimpleLine(1,factory.createColor(0,0,128));" + "\n";
	strAddCascadeLine += "}" + "\n";
	strAddCascadeLine += "function addPoints()" + "\n";
	strAddCascadeLine += "{" + "\n";
	strAddCascadeLine += "	addOnePoint('C', centerX-3.0*scale, centerY, pointRed);	//北京 " + "\n";
	strAddCascadeLine += "	addOnePoint('D', centerX+3.0*scale, centerY, pointBlue); //石家庄" + "\n";
	strAddCascadeLine += "	addOnePoint('A', centerX - 8.0*scale, centerY - 1.5*scale,pointGreen); //济南" + "\n";
	strAddCascadeLine += "	addOnePoint('B', centerX - 8.0*scale, centerY+1.5*scale, pointBlue); //太远" + "\n";
	strAddCascadeLine += "	addOnePoint('E', centerX + 8.0*scale , centerY-1.5*scale,pointGreen); //因床" + "\n";
	strAddCascadeLine += "	addOnePoint('F', centerX + 8.0*scale, centerY+1.5*scale, pointGreen);//西安" + "\n";
	strAddCascadeLine += "}" + "\n";
	strAddCascadeLine += "function addOnePoint(pointName,x,y,legend)" + "\n";
	strAddCascadeLine += "{" + "\n";
	strAddCascadeLine += "	var pointObject=topoLayer.addPointObject(x,y);" + "\n";
	strAddCascadeLine += "	pointObject.text=pointName;" + "\n";
	strAddCascadeLine += "	pointObject.legend=legend;" + "\n";
	strAddCascadeLine += "	nameMapping[pointName]=pointObject.oid;" + "\n";
	strAddCascadeLine += "}" + "\n";
	strAddCascadeLine += "function addLineGroup(groupString,legend)" + "\n";
	strAddCascadeLine += "{" + "\n";
	strAddCascadeLine += "	var pointNames=groupString.split(' ');" + "\n";
	strAddCascadeLine += "	if(pointNames.length<=0)" + "\n";
	strAddCascadeLine += "	  return;" + "\n";
	strAddCascadeLine += "" + "\n";
	strAddCascadeLine += "	var name1,name2;" + "\n";
	strAddCascadeLine += "	var startName, endName;" + "\n";
	strAddCascadeLine += "	var lineName;" + "\n";
	strAddCascadeLine += "	var groupName;" + "\n";
	strAddCascadeLine += "" + "\n";
	strAddCascadeLine += "	startName=pointNames[0];" + "\n";
	strAddCascadeLine += "	endName=pointNames[pointNames.length-1];" + "\n";
	strAddCascadeLine += "	groupName=startName+'-'+endName;" + "\n";
	strAddCascadeLine += "" + "\n";
	strAddCascadeLine += "	var objs=factory.createNumberArray();" + "\n";
	strAddCascadeLine += "	var lineIndex;" + "\n";
	strAddCascadeLine += "" + "\n";
	strAddCascadeLine += "	for(var i=0;i<pointNames.length-1;i++)" + "\n";
	strAddCascadeLine += "  {" + "\n";
	strAddCascadeLine += "		name1=pointNames[i];" + "\n";
	strAddCascadeLine += "		name2=pointNames[i+1];" + "\n";
	strAddCascadeLine += "		lineName=name1+'-'+name2;" + "\n";
	strAddCascadeLine += "		lineIndex=addOneLine(name1,name2,lineName,groupName,legend);" + "\n";
	strAddCascadeLine += "		if(lineIndex>=0)" + "\n";
	strAddCascadeLine += "		objs.add(lineIndex);" + "\n";
	strAddCascadeLine += "}" + "\n";
	strAddCascadeLine += "" + "\n";
	strAddCascadeLine += "	var groupObject=topoLayer.addLineGroupObject(objs);" + "\n";
	strAddCascadeLine += "}" + "\n";
	strAddCascadeLine += "function addOneLine(startPointName,endPointName,lineName,groupName,legend)" + "\n";
	strAddCascadeLine += "{" + "\n";
	strAddCascadeLine += "        var indexStart;" + "\n";
	strAddCascadeLine += "	var indexEnd;	" + "\n";
	strAddCascadeLine += "" + "\n";
	strAddCascadeLine += "	indexStart=nameMapping[startPointName];" + "\n";
	strAddCascadeLine += "	indexEnd=nameMapping[endPointName];" + "\n";
	strAddCascadeLine += "	if(indexStart==null || indexEnd==null)" + "\n";
	strAddCascadeLine += "		return -1;" + "\n";
	strAddCascadeLine += "" + "\n";
	strAddCascadeLine += "        var lineObject=topoLayer.addLineObject(indexStart,indexEnd);" + "\n";
	strAddCascadeLine += "	lineObject.legend=legend;" + "\n";
	strAddCascadeLine += "" + "\n";
	strAddCascadeLine += "	lineObject.attr=lineName;" + "\n";
	strAddCascadeLine += "	lineObject.text=groupName;" + "\n";
	strAddCascadeLine += "	return lineObject.oid;" + "\n";
	strAddCascadeLine += "}" + "\n";
	strAddCascadeLine += "function createTopoLayer()" + "\n";
	strAddCascadeLine += "{" + "\n";
	strAddCascadeLine += "	topoLayer=oMapViewer.topoLineLayers.addLayer(Layer_Name);" + "\n";
	strAddCascadeLine += "	nameMapping=new Object();" + "\n";
	strAddCascadeLine += "	addPoints();" + "\n";
	strAddCascadeLine += "	addLineGroup('A B',lineBlue);" + "\n";
	strAddCascadeLine += "	addLineGroup('A C D E',lineRed);" + "\n";
	strAddCascadeLine += "	addLineGroup('A C D F',lineGreen);" + "\n";
	strAddCascadeLine += "         addLineGroup('B C D F',lineBlue);" + "\n";
	strAddCascadeLine += "" + "\n";
	strAddCascadeLine += "	topoLayer.enableParaDrawing=true;" + "\n";
	strAddCascadeLine += "	topoLayer.paraLenFromLine=12;" + "\n";
	strAddCascadeLine += "	topoLayer.paraLenAlongLine=10;" + "\n";
	strAddCascadeLine += "	topoLayer.paraLenBase=20;" + "\n";
	strAddCascadeLine += "	//oMapViewer.isSelectGroup=true;" + "\n";
	strAddCascadeLine += "	topoLayer.markDuplicateLines();" + "\n";
	strAddCascadeLine += "" + "\n";
	strAddCascadeLine += "	oMapViewer.redraw();" + "\n";
	strAddCascadeLine += "}" + "\n";
	strAddCascadeLine += "createLegends();" + "\n";
	strAddCascadeLine += "createTopoLayer();" + "\n";
	strAddCascadeLine += "" + "\n";


	return strAddCascadeLine;
}

function addCascadeLineLink()
{
	displayCode(initStrAddCascadeLine());
}

function runAddCascadeLine()
{
	displayCode(initStrAddCascadeLine());
	//window.execScript(initStrAddCascadeLine());
	runCodeTopoLayer(initStrAddCascadeLine());
}

//请空拓扑层
var strRemoveTopoLayer;
function initStrRemoveTopoLayer()
{
	strRemoveTopoLayer = "oMapViewer.topoLineLayers.removeAllLayers();" + "\n";
	strRemoveTopoLayer += "oMapViewer.redraw();" + "\n";
	
	return strRemoveTopoLayer;
}

function removeTopoLayerLink()
{
	displayCode(initStrRemoveTopoLayer());
}

function runRemoveTopoLayer()
{
	displayCode(initStrRemoveTopoLayer());
	runCodeTopoLayer(initStrRemoveTopoLayer());
}

//
function displayCode(strCode)
{
	document.getElementById("code").innerHTML = "";
	document.getElementById("code").value = strCode;
}

function runCodeTopoLayer(info)
{
	commonView();
	window.execScript(info);
}