var drawTargetLayer = true;
var bufferDistance = 5;
var bufferSmoothEdges = 1/100;

var getBufferedData = false;
// delimiter to be used between coordinates in strings in ArcXML request
var coordsDelimiter = " ";
// delimiter to be used between pairs of coordinates in strings in ArcXML request
var pairsDelimiter = ";";

/*
***************************************************************************************

Buffer functions 

***************************************************************************************
*/

// add buffer stuff to Map XML request
function addBufferToMap() {
	var buffString = "";
	//ActiveLayerIndex is the layer index in the AXL of the crime location
	//TargetLayerID is the layer ID of the crime shapefile in the AXL - usually is 0
	buffString += '<LAYER type="featureclass" name="Buffer Shape" visible="true">\n';
	buffString += '<DATASET fromlayer="' + ActiveLayerIndex + '" />\n';	//buffer polygon around this feature
	buffString += '<SPATIALQUERY where="' + setQueryString + '" >\n';
	buffString += '<BUFFER distance="' + bufferDistance + '" bufferunits="' + ScaleBarUnits.toLowerCase() + '" />\n';
	buffString += '</SPATIALQUERY>\n';
	buffString += '<SIMPLERENDERER>\n';
     	buffString += '<SIMPLEPOLYGONSYMBOL fillcolor="'+selectColor+'" filltype="solid" filltransparency="0.4"  boundarytransparency="0.5" boundarycolor="255,51,102" boundarywidth="4" />\n';
	buffString += '</SIMPLERENDERER>\n';
	buffString += '</LAYER>\n';
	buffString += '<LAYER type="featureclass" name="Crime Incident Symbols" visible="true">\n';
	buffString += '<DATASET fromlayer="' + ActiveLayerIndex + '" />\n';
	buffString += '<SPATIALQUERY where="' + setQueryString + '" >\n';
	buffString += '<BUFFER distance="' + bufferDistance + '" ';
	buffString += ' bufferunits="' + ScaleBarUnits.toLowerCase() + '"';
	buffString += '>\n';
	buffString += '<TARGETLAYER id="' + bufferTargetLayerIndex + '" />\n';
	buffString += '<SPATIALQUERY where="' + crimelist + '" />\n';
	buffString += '</BUFFER>\n';
	buffString += '</SPATIALQUERY>\n';
	buffString += '<VALUEMAPRENDERER lookupfield="CATEGORY">\n';
	buffString += '  <EXACT value="Arson" label="Arson">\n';
	buffString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="56" fontcolor="255,0,0" fontsize="20" />\n';
	buffString += '  </EXACT>\n';
	buffString += '  <EXACT value="Assaults" label="Assault">\n';
	buffString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="34" fontcolor="51,0,153" fontsize="26" />\n';
	buffString += '  </EXACT>\n';
	buffString += '  <EXACT value="Auto Theft" label="Auto Theft">\n';
	buffString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="80" fontcolor="204,0,51" fontsize="18" />\n';
	buffString += '  </EXACT>\n';
	buffString += '  <EXACT value="Commercial Burglary" label="Commercial Burglary">\n';
	buffString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="64" fontcolor="102,51,0" fontsize="18" />\n';
	buffString += '  </EXACT>\n';
	buffString += '  <EXACT value="Drugs or Narcotics" label="Drugs or Narcotics">\n';
	buffString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="47" fontcolor="255,0,153" fontsize="24" />\n';
	buffString += '  </EXACT>\n';
	buffString += '  <EXACT value="Drunk in Public" label="Drunk in Public">\n';
	buffString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="48" fontcolor="153,51,204" fontsize="20" />\n';
	buffString += '  </EXACT>\n';
	buffString += '  <EXACT value="DUI" label="DUI">\n';
	buffString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Cartography" fontstyle="regular" character="90" fontcolor="153,0,0" fontsize="18" />\n';
	buffString += '  </EXACT>\n';
	buffString += '  <EXACT value="Grand Theft" label="Grand Theft">\n';
	buffString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="41" fontcolor="204,102,102" fontsize="20" />\n';
	buffString += '  </EXACT>\n';
	buffString += '  <EXACT value="Hate Crimes" label="Hate Crimes">\n';
	buffString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="69" fontcolor="255,0,204" fontsize="20" />\n';
	buffString += '  </EXACT>\n';
	buffString += '  <EXACT value="Petty Theft" label="Petty Theft">\n';
	buffString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="Arial" fontstyle="bold" character="36" fontcolor="102,51,255" fontsize="14" />\n';
	buffString += '  </EXACT>\n';
	buffString += '  <EXACT value="Robbery" label="Robbery">\n';
	buffString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="37" fontcolor="102,0,153" fontsize="20" />\n';
	buffString += '  </EXACT>\n';
	buffString += '  <EXACT value="Residential Burglary" label="Residential Burglary">\n';
	buffString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="78" fontcolor="0,153,0" fontsize="18" />\n';
	buffString += '  </EXACT>\n';
	buffString += '  <EXACT value="Vandalism" label="Vandalism">\n';
	buffString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="55" fontcolor="204,0,153" fontsize="22" />\n';
	buffString += '  </EXACT>\n';
	buffString += '  <EXACT value="Vehicle Burglary" label="Vehicle Burglary">\n';
	buffString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Cartography" fontstyle="regular" character="104" fontcolor="102,102,102" fontsize="20" />\n';
	buffString += '  </EXACT>\n';
	buffString += '  <EXACT value="Weapons" label="Weapons">\n';
	buffString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="46" fontcolor="153,0,153" fontsize="20" />\n';
	buffString += '  </EXACT>\n';
	buffString += '</VALUEMAPRENDERER>\n';
	buffString += '</LAYER>\n';
	return buffString;
}


function WriteToFile(bname) {
     var filename = 'c://aatemp.txt';
//alert("write file");
     var fso = new ActiveXObject('Scripting.FileSystemObject');
     if (fso.FileExists(filename)) {
          var a, ForAppending, file;
          ForAppending = 8;
          file = fso.OpenTextFile(filename, ForAppending, false);
          file.WriteLine(bname);
          }
     else {
          var file = fso.CreateTextFile(filename, true);
          file.WriteLine(bname);
          }
     file.Close();
} 


//buffer the geocoded location
function addGeocodeBufferToMap() {
	var theString = "";
	theString += '<LAYER type="acetate" name="GeoCode1">\n';
	theString += '<OBJECT units="database">\n<POINT coords="' + geocodeX + coordsDelimiter + geocodeY + '">\n';
	theString += '<SIMPLEMARKERSYMBOL  type="circle"  color="' + geocodePointColor + '" width="' + geocodePointSize +'" overlap="false" />\n</POINT></OBJECT>\n';
	if (geocodeLabel!="") {
		theString += '<OBJECT units="database">\n<TEXT coords="' + geocodeX + coordsDelimiter + geocodeY + '" label=" ' + geocodeLabel + '">\n';
		theString += '<TEXTMARKERSYMBOL fontcolor="' + geocodePointColor + '" fontsize="11" glowing="255,204,204" halignment="right" valignment="top" overlap="false" /></TEXT>\n';
	}
	theString += '</OBJECT>\n';
	theString += bufferDrawCircle();
	theString += '</LAYER>\n';	
	theString += '<LAYER type="featureclass" name="GeoCode Point" visible="true">\n';
	theString += '<DATASET fromlayer="0" />\n';
	theString += '<SPATIALQUERY where="' + crimelist + '" >\n';
	theString += '<SPATIALFILTER relation="area_intersection" >\n';
	theString += '<BUFFER distance="' + bufferDistance + '" bufferunits="' + ScaleBarUnits.toLowerCase() + '" />\n';
	theString += '<MULTIPOINT><POINT x="' + geocodeX + '" y="' + geocodeY + '" /></MULTIPOINT>\n';
	theString += '</SPATIALFILTER>\n';
	theString += '</SPATIALQUERY>\n';
	theString += '<VALUEMAPRENDERER lookupfield="CATEGORY">\n';
	theString += '  <EXACT value="Arson" label="Arson">\n';
	theString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="56" fontcolor="255,0,0" fontsize="20" />\n';
	theString += '  </EXACT>\n';
	theString += '  <EXACT value="Assaults" label="Assault">\n';
	theString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="34" fontcolor="51,0,153" fontsize="26" />\n';
	theString += '  </EXACT>\n';
	theString += '  <EXACT value="Auto Theft" label="Auto Theft">\n';
	theString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="80" fontcolor="204,0,51" fontsize="18" />\n';
	theString += '  </EXACT>\n';
	theString += '  <EXACT value="Commercial Burglary" label="Commercial Burglary">\n';
	theString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="64" fontcolor="102,51,0" fontsize="18" />\n';
	theString += '  </EXACT>\n';
	theString += '  <EXACT value="Drugs or Narcotics" label="Drugs or Narcotics">\n';
	theString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="47" fontcolor="255,0,153" fontsize="24" />\n';
	theString += '  </EXACT>\n';
	theString += '  <EXACT value="Drunk in Public" label="Drunk in Public">\n';
	theString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="48" fontcolor="153,51,204" fontsize="20" />\n';
	theString += '  </EXACT>\n';
	theString += '  <EXACT value="DUI" label="DUI">\n';
	theString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Cartography" fontstyle="retular" character="90" fontcolor="153,0,0" fontsize="18" />\n';
	theString += '  </EXACT>\n';
	theString += '  <EXACT value="Grand Theft" label="Grand Theft">\n';
	theString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="41" fontcolor="204,102,102" fontsize="20" />\n';
	theString += '  </EXACT>\n';
	theString += '  <EXACT value="Hate Crimes" label="Hate Crimes">\n';
	theString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="69" fontcolor="255,0,204" fontsize="20" />\n';
	theString += '  </EXACT>\n';
	theString += '  <EXACT value="Petty Theft" label="Petty Theft">\n';
	theString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="Arial" fontstyle="bold" character="36" fontcolor="102,51,255" fontsize="14" />\n';
	theString += '  </EXACT>\n';
	theString += '  <EXACT value="Robbery" label="Robbery">\n';
	theString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="37" fontcolor="102,0,153" fontsize="20" />\n';
	theString += '  </EXACT>\n';
	theString += '  <EXACT value="Residential Burglary" label="Residential Burglary">\n';
	theString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="78" fontcolor="0,153,0" fontsize="18" />\n';
	theString += '  </EXACT>\n';
	theString += '  <EXACT value="Vandalism" label="Vandalism">\n';
	theString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="55" fontcolor="204,0,153" fontsize="22" />\n';
	theString += '  </EXACT>\n';
	theString += '  <EXACT value="Vehicle Burglary" label="Vehicle Burglary">\n';
	theString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Cartography" fontstyle="regular" character="104" fontcolor="102,102,102" fontsize="20" />\n';
	theString += '  </EXACT>\n';
	theString += '  <EXACT value="Weapons" label="Weapons">\n';
	theString += '  <TRUETYPEMARKERSYMBOL transparency="1.0" font="ESRI Crime Analysis" fontstyle="regular" character="46" fontcolor="153,0,153" fontsize="20" />\n';
	theString += '  </EXACT>\n';
	theString += '</VALUEMAPRENDERER>\n';
	theString += '</LAYER>\n';

//WriteToFile(theString);

	return theString;
}


//spatial query to return crime records
function writeQueryBufferXML(countOnly, beginRecord) {
	var theString = '<?xml version="1.0" encoding="UTF-8"?>\n';
	theString += '<ARCXML version="1.1">\n<REQUEST>\n';
	theString += '<GET_FEATURES geometry="false" outputmode="xml" checkesc ="true" ';
	if(countOnly) theString += 'envelope="false" skipfeatures="true" featurelimit="'+maxFeat+'">\n';
	else theString += 'envelope="true" skipfeatures="false" beginrecord="' +  beginRecord + '" featurelimit="'+maxFeat+'">\n'; 
	theString += '<LAYER id="' + ActiveLayer + '" />\n';
	if (ActiveLayerIndex != 0) {	//BUFFER
		theString += '<SPATIALQUERY where="' + setQueryString + '">\n';
		theString += '<BUFFER distance="' + bufferDistance + '" bufferunits="' + ScaleBarUnits + '" >\n'; 
		theString += '<TARGETLAYER id="0"/>\n';
		theString += '<SPATIALQUERY where="' + crimelist + '" subfields="' + selectFields + '" />\n';
		theString += '</BUFFER>\n';
		theString += '</SPATIALQUERY>\n';
	}else{				//GEOCODE
		theString += '<SPATIALQUERY where="' + crimelist + '" subfields="' + selectFields + '">\n';
		theString += '<SPATIALFILTER relation="area_intersection" >\n';
		theString += '<BUFFER distance="' + bufferDistance + '" bufferunits="' + ScaleBarUnits + '" />\n';
		theString += '<MULTIPOINT><POINT x="' + geocodeX + '" y="' + geocodeY + '" /></MULTIPOINT>\n';
		theString += '</SPATIALFILTER>\n';
		theString += '</SPATIALQUERY>\n';
	}
	theString += '</GET_FEATURES>';
	theString += '</REQUEST>';
	theString += '</ARCXML>';
	return theString;
}
