// store values
var EDGECOLOR=4;
var EDGESTYLE='Solid';
var EDGETHICKNESS=1;
var EDGEVISIBLE =true;
var LINECOLOR=5;
var LINESTYLE='Solid';
var LINETHICKNESS=2;
var FILLCOLOR=5;
var FILLSTYLE='Solid';
var FILLHATCHPATTERN='Diagonal45';
var FILLBKGNDCOLOR=9;
var FILLBKGNDMODE='Transparent';
var TEXTHEIGHT='Auto';
var TEXTHEIGHTUNIT='Auto';
var TEXTROTATION=0;
var TEXTCOLOR=5;
var TEXTFONT='Arial';
var TEXTFONTSTYLE='Regular';
var TEXTBACKMODE=0;
var TEXTBACKCOLOR=1;
var TEXTHALIGN=0;
var TEXTVALIGN=0;
var SYMBOLHEIGHT='Auto';
var SYMBOLWIDTH='Auto';
var SYMBOLUNIT='Auto';
var SYMBOLROTATION=0;
var SYMBOLNAME = 'DefaultSymbolName';

// default buffer center values
var bufferRadius = 0;
var bufferUnits = "MI";
var bufferObjectSelectionLayer = "";
var bufferSelectionMode = "Intersection";

// internal vars
var circleCounter =0;
var polylineCounter =0;
var polygonCounter =0;
var textCounter =0;
var pointType = 'digitize';
var autoSizeModifier = 40;
var	add_symbol_continuously = false;


// ====================================================================
// onDigitizedPolyline(map, point)
// 
// Called when digitizePolyline() is called from 'digitize.js'.
// ====================================================================
var circleCounter =0;
var polylineCounter =0;
var polygonCounter =0;
var textCounter =0;
var symbolCounter =0;

function onDigitizedPolyline(map, numPoints, points){
	polylineCounter = polylineCounter +1;
	var redlineSet = map.getRedlineSetup();
	var line = redlineSet.getLineAttr();
	line.setColor(LINECOLOR);			
	line.setStyle(LINESTYLE);
	line.setThickness(LINETHICKNESS);
	var Text = "Polyline" + polylineCounter;
    var myLayer = map.getMapLayer("Redline Layer");
    if (myLayer == null){
        myLayer = map.createLayer("redline", "Redline Layer");
	}
	// set priority to be on top
	myLayer.setPriority(100);
    var obj = myLayer.getMapObject(Text);
    if (obj == null){
    	var obj = myLayer.createMapObject(Text, Text, "");
	}
    var user_vertices = map.createObject("mgcollection");
    user_vertices.add(numPoints);
    obj.addPolylinePrimitive(points, user_vertices, false);
}

// ====================================================================
// onDigitizedPolygon(map, numPoints, point)
// 
// Called when digitizePolygon() is called from 'digitize.js'.
// ====================================================================
function onDigitizedPolygon(map, numPoints, points)
{
	polygonCounter = polygonCounter + 1;
	var redlineSet = map.getRedlineSetup();
	var line = redlineSet.getLineAttr();
	line.setColor(LINECOLOR);			
	line.setStyle(LINESTYLE);
	line.setThickness(LINETHICKNESS);
	
	var fill = redlineSet.getFillAttr();
	fill.setColor(FILLCOLOR);
	fill.setStyle(FILLSTYLE);	
	fill.setHatchPattern(FILLHATCHPATTERN);
	fill.setBackColor(FILLBKGNDCOLOR);
	fill.setBackMode(FILLBKGNDMODE);
	
	var Text = "Polygon" + polygonCounter;
    var myLayer = map.getMapLayer("Redline Layer");
    if (myLayer == null) {
        myLayer = map.createLayer("redline", "Redline Layer");
	}
	// set priority to be on top
	myLayer.setPriority(100);
    var obj = myLayer.getMapObject(Text);
    if (obj == null)
        var obj = myLayer.createMapObject(Text, Text, "");
    var user_vertices = map.createObject("mgcollection");
    user_vertices.add(numPoints);
    obj.addPolygonPrimitive(points, user_vertices, false);
}

// ====================================================================
// onDigitizedCircle(map, units, center, radius)
// 
// Called when digitizeCircle() is called from 'digitize.js'.
// ====================================================================
function onDigitizedCircle(map, units, center, radius)
{
	circleCounter = circleCounter + 1;
	var redlineSet = map.getRedlineSetup();
	var edge = redlineSet.getEdgeAttr();
	edge.setColor(EDGECOLOR);			
	edge.setStyle(EDGESTYLE);
	edge.setThickness(EDGETHICKNESS);
	edge.setVisible(EDGEVISIBLE);
	var fill = redlineSet.getFillAttr();
	fill.setColor(FILLCOLOR);
	fill.setStyle(FILLSTYLE);	
	fill.setHatchPattern(FILLHATCHPATTERN);
	fill.setBackColor(FILLBKGNDCOLOR);
	fill.setBackMode(FILLBKGNDMODE);
	var Text = "Circle" + circleCounter; 
    var myLayer = map.getMapLayer("Redline Layer");
    if (myLayer == null) {
        	myLayer = map.createLayer("redline", "Redline Layer");
	}
	// set priority to be on top
	myLayer.setPriority(100);
	
    var object = myLayer.getMapObject(Text);
    if (object == null)
        	var object = myLayer.createMapObject(Text, Text, "")
	var circle = object.addCirclePrimitive(center, false,radius,units,200)
}

// ====================================================================
// onDigitizedPoint(map, point)
// 
// Called when digitizePoint() is called from 'digitize.js'.
// ====================================================================
function onDigitizedPoint(map, point) {
	// add_text()
	if (pointType == "Text"){
		textCounter = textCounter + 1;
		var redlineSet = map.getRedlineSetup();
		var text = redlineSet.getTextAttr();
		var isAuto = false;

		// auto size, determine by current scale
		if( TEXTHEIGHT == 'Auto' || TEXTHEIGHTUNIT == 'Auto' ) {
			var currScale =  map.getScale();
			isAuto = true;
			// auto set size
			TEXTHEIGHT = currScale/autoSizeModifier;			
			TEXTHEIGHTUNIT = 'FT';			
		}

		// set text params
		text.setHeight(TEXTHEIGHT, TEXTHEIGHTUNIT);
		text.setRotation(TEXTROTATION);
		text.setColor(TEXTCOLOR);
		text.setFontName(TEXTFONT);
		text.setFontStyle(TEXTFONTSTYLE);	
		text.setBackMode(TEXTBACKMODE);
		text.setBackColor(TEXTBACKCOLOR);
		text.setHorizAlign(TEXTHALIGN);
		text.setVertAlign(TEXTVALIGN);
		
		// increase counter
		var Text = "Text" + textCounter;
		
		// get Redline layer
	    var myLayer = map.getMapLayer("Redline Layer");
	    if (myLayer == null){
	       	myLayer = map.createLayer("redline", "Redline Layer");
		}		
		// set priority to be on top
		myLayer.setPriority(100);
		
		// get text object
	    var object = myLayer.getMapObject(Text);
	    if (object == null){
	        var object = myLayer.createMapObject(Text, Text, "")
		}
		
		// prompt for text string
		var myText = prompt("Please enter text string.","Redline Text");
		
		// create text object
		if (myText != null){
			var text = object.addTextPrimitive(point, false,myText)
		}
		
		// reset auto status
		if( isAuto ) {
			TEXTHEIGHT = TEXTHEIGHTUNIT = 'Auto';
		}
	}
	// add_symbol()
	else if (pointType == "Symbol"){	
		var redlineSet = map.getRedlineSetup();
		var symbol = redlineSet.getSymbolAttr();
		var isAuto = false;

		// auto size, determine by current scale
		if( SYMBOLHEIGHT == 'Auto' || SYMBOLWIDTH == 'Auto' || SYMBOLUNIT == 'Auto' ) {
			var currScale =  map.getScale();
			isAuto = true;
			// auto set size
			SYMBOLHEIGHT = SYMBOLWIDTH = currScale/autoSizeModifier;			
			SYMBOLUNIT = 'FT';			
		}
		
		// set symbol params
		symbol.setHeight(SYMBOLHEIGHT, SYMBOLUNIT);
		symbol.setWidth(SYMBOLWIDTH, SYMBOLUNIT);
		symbol.setRotation(SYMBOLROTATION);
		symbol.setSymbol(SYMBOLNAME);

		// increase counter
		symbolCounter = symbolCounter +1;
		var Text = "Symbol"+symbolCounter;

		// get Redline Layer
	    var myLayer = map.getMapLayer("Redline Layer");
	    if (myLayer == null){
	       	myLayer = map.createLayer("redline", "Redline Layer");
		}		
		// set priority to be on top
		myLayer.setPriority(100);
		
		// get symbol object
	    var object = myLayer.getMapObject(Text);
	    if (object == null){
	        var object = myLayer.createMapObject(Text, Text, "")
		}
		// add symbol
		
		object.addSymbolPrimitive(point, false)
		
		// reset auto status
		if( isAuto ) {
			SYMBOLHEIGHT = SYMBOLWIDTH = SYMBOLUNIT = 'Auto';
		}
		
		// if we are in 'continuous mode' from tools_symbol.cfm
		if( add_symbol_continuously ) {
			setTimeout("add_symbol();", 10);
		}
		
	}
	return;
}