// aimsQuery.js
/*
*  JavaScript template file for ArcIMS HTML Viewer
*		dependent on aimsXML.js, ArcIMSparam.js, aimsCommon.js, aimsMap.js, aimsIdentify.js, aimsSelect.js, and aimsLayers.js
*		To be interactive, dependent also on aimsDHTML.js, aimsClick.js, and aimsNavigation.js
*/

aimsQueryPresent=true;

var showSampleValues=false;

var storedQueryCount = 0;

var storedQueryName = new Array();
var storedQueryString = new Array();
var storedQueryVariable = new Array();
var storedQueryVarCount = new Array();
var storedQueryFieldList = new Array();
var storedQueryIndex = 0;


/*
***************************************************************************************

Querying functions 

***************************************************************************************
*/


// query form
function queryForm() {
	if (checkIfActiveLayerAvailable()) {
		fieldIndex=0;
		showSampleValues=false;
		
		setLayerFields(ActiveLayerIndex);
		if (showSampleValues) {
			var theText = writeFieldSample(LayerFields[fieldIndex]);
			sendToServer(imsQueryURL,theText,40);
		} else {
			writeQueryForm(0);
		}
	}
		
}

// find Form
function findForm() {
	if (checkIfActiveLayerAvailable()) {
		setLayerFields(ActiveLayerIndex);
		if (useTextFrame) {
			parent.TextFrame.document.location= appDir + "findForm.htm";
		} else {
			Win1 = open(appDir + "findForm.htm","QueryWindow","width=575,height=150,scrollbars=yes,resizable=yes");
		}
	}
}



// process query
function sendQueryString(newString) {
	//if (LayerIDField[ActiveLayerIndex]!="#ID#") {
		newString = fixSingleQuotes(newString);
		newString = swapQuotes(newString);
	//}
	//alert(newString);
	newString = makeXMLsafe(newString);
	setQueryString=newString;
	selectionMode=1;
	selectData.length=0;
	LayerFields.length=0;
	LayerFieldType.length=0;
	LayerFieldCount=0;
	highlightedOne="";
	showBuffer=false;
	showRetrieveData();
	var theString = writeQueryXML(newString);
	sendToServer(imsQueryURL,theString,queryXMLMode);
	queryForm();
}

// write out XML request to query attributes
function writeQueryXML(queryString) {
	if (swapSelectFields) {
		selectFields=selFieldList[ActiveLayerIndex];
	}
	var theString = '<ARCXML version="1.1">\n<REQUEST>\n<GET_FEATURES outputmode="xml" geometry="false" envelope="true"';
	theString += ' featurelimit="' + maxFeaturesReturned + '" beginrecord="' + queryStartRecord + '">\n';
	theString += '<LAYER id="' + ActiveLayer + '" />';
	if (useLimitExtent) {
		// keep this within the limitExtent
		theString += '<SPATIALQUERY subfields="' + selectFields + '" where="' + queryString + '">';
		theString += '<SPATIALFILTER relation="area_intersection">\n';
		theString += '<ENVELOPE maxx="' + forceComma(limitRight) + '" maxy="' + forceComma(limitTop) + '" minx="' + forceComma(limitLeft) + '" miny="' + forceComma(limitBottom) + '" />\n';
		theString += '</SPATIALFILTER>\n';
		theString += '</SPATIALQUERY>\n';
	} else {
	//theString += '<QUERY subfields="' + selectFields + '" where="' + queryString + '" />';
	theString += '<SPATIALQUERY subfields="' + selectFields + '" where="' + queryString + '" />';
	}
	theString += '</GET_FEATURES>';
	theString += '</REQUEST>';
	theString += '</ARCXML>';
	//alert("writeQueryXML()\nQuery XML Request:\n" + theString);
	selectLayer=ActiveLayer;
	selectType=ActiveLayerType;
	selectCount=0;
	hightlightedOne="";
	selectPoints.length=1;
	selectLeft.length=1;
	selectRight.length=1;
	selectTop.length=1;
	selectBottom.length=1;
	return theString;
	
}

// write out XML request to get field value samples
function writeFieldSample(theField) {
	var theFields = theField;
	var theString = '<ARCXML version="1.1">\n<REQUEST>\n<GET_FEATURES outputmode="xml" geometry="false" envelope="false"';
	theString += ' featurelimit="' + numberDataSamples + '">\n';
	theString += '<LAYER id="' + ActiveLayer + '" />';
	//theString += '<QUERY subfields="' + theFields + '" where="' + LayerIDField[ActiveLayerIndex] + ' GT 0" />';
	theString += '<QUERY subfields="' + theFields + '" />';
	theString += '</GET_FEATURES>';
	theString += '</REQUEST>';
	theString += '</ARCXML>';
	//alert(theString);
	selectLayer=ActiveLayer;
	selectType=ActiveLayerType;
	selectCount=0;
	hightlightedOne="";
	selectPoints.length=1;
	selectLeft.length=1;
	selectRight.length=1;
	selectTop.length=1;
	selectBottom.length=1;
	//alert(theString);
	return theString;
}
// send find request
function getFind(theValue) {
	//alert(theValue);
	selectCount=0;
	showBuffer=false;
	highlightedOne="";
	selectPoints.length=0;
	selectLeft.length=0;
	selectRight.length=0;
	selectTop.length=0;
	selectBottom.length=0;
	drawSelectBoundary=false;
	showGeocode=false;
	clickCount=0;
	totalMeasure=0;
	currentMeasure=0;
	selectionMode=1;
	var theNewQueryString = "";
	var theTempString = "";
	var fieldListString = LayerIDField[ActiveLayerIndex] + " " + LayerShapeField[ActiveLayerIndex];
	var elemCount = 0;
	for (var i=0;i<LayerFields.length;i++) {
		if (LayerFieldType[i].indexOf("12",0)!=-1) {
			theTempString = "(" + LayerFields[i] + " LIKE '%" + theValue + "%')";
			if (elemCount>0) theTempString = " OR " + theTempString;
			if (theNewQueryString.length + theTempString.length < 1024) {
				theNewQueryString = theNewQueryString + theTempString;
				fieldListString = fieldListString + " " + LayerFields[i];
				elemCount += 1;
			}
			
		}
	}
	if (theNewQueryString!="") {
		showRetrieveData();
		showBuffer=false;
		theNewQueryString=makeXMLsafe(theNewQueryString);
		setQueryString = theNewQueryString;
		var theString = writeFindRequest(theNewQueryString,fieldListString);
		//alert(theString);
		sendToServer(imsQueryURL,theString,findXMLMode);
	} else {
		alert(msgList[80]);
	}
}

// write out find form
function writeFindRequest(findQuery,fieldList) {
	var theString = '<ARCXML version="1.1">\n<REQUEST>\n<GET_FEATURES outputmode="xml" geometry="false" envelope="true"';
	theString += ' featurelimit="' + maxFeaturesReturned + '" beginrecord="' + queryStartRecord + '">\n';
	theString += '<LAYER id="' + ActiveLayer + '" />\n';
	if (useLimitExtent) {
		// keep this within the limitExtent
		theString += '<SPATIALQUERY subfields="' + fieldList + '" where="' + findQuery + '" />';
		theString += '<SPATIALFILTER relation="area_intersection">\n';
		theString += '<ENVELOPE maxx="' + forceComma(limitRight) + '" maxy="' + forceComma(limitTop) + '" minx="' + forceComma(limitLeft) + '" miny="' + forceComma(limitBottom) + '" />\n';
		theString += '</SPATIALFILTER>\n';
		theString += '</SPATIALQUERY>\n';
	} else {
	theString += '<QUERY subfields="' + fieldList + '" where="' + findQuery + '" />';
	}
	theString += '</GET_FEATURES>\n';
	theString += '</REQUEST>\n';
	theString += '</ARCXML>';
	alert(theString);
	selectLayer=ActiveLayer;
	selectType=ActiveLayerType;
	selectCount=0;
	hightlightedOne="";
	selectPoints.length=1;
	selectLeft.length=1;
	selectRight.length=1;
	selectTop.length=1;
	selectBottom.length=1;
	return theString;

}


// parse layer field value samples
function parseFieldSamples(theReply) {
//	alert("Reply Length: " + theReply.length);
//	alert(theReply);
	var fList="";
	var lpos1 = 1;
	var lpos2 = 1;
	var epos = 1;
	var spos = 1;
	var morePoints=true;
	var moreFeatures=true;
	var pos = 0;
	var startpos = 0;
	var endpos = 0;
	var featureCount = justGetFeatureCount(theReply);
	var tempString="";
	if (featureCount > 0) {
		var tempSelectData = new Array();
		tempSelectData.length=featureCount;
//		selectData.length=featureCount;
		for (var i=0;i<featureCount;i++) {
			pos = theReply.indexOf("<FIELDS ",endpos);
			startpos = pos + 8;
			endpos =theReply.indexOf(' />',startpos);
			inData = theReply.substring(startpos,endpos);
			//inData = fixSingleQuotes(inData);
			//selectData[i] = clearLeadingSpace(inData);
			//selectData[i] = escape(inData);
			tempSelectData[i] = inData;
//			selectData[i] = inData;
		}
		// eliminate duplicate values and sort in alphabetical order
		for (var n=0;n<featureCount;n++) {
			for (var i=featureCount;i > 0;i--) {
				elem1 = tempSelectData[i-1];
				elem2 = tempSelectData[i];
				if (elem2 < elem1) { 
					tempSelectData[i-1] = elem2;
					tempSelectData[i] = elem1;
				}
			}
		}
		selectData.length=featureCount;
		var n=0;
		selectData[0] = tempSelectData[0];
		for (var i=0;i<featureCount-1;i++) {
			elem1 = tempSelectData[i];
			elem2 = tempSelectData[i+1];
			if (elem2 > elem1){
				//alert(elem2.substring(elem2.length-2,elem2.length));		
				selectData[n] = elem2;
				n=n+1;	

			}
		}
		selectData.length=n;
	} else {
		selectData.length=0;
	}
}

// write out a query form
function writeQueryForm(theValue) {
	var startpos = 0;
	var endpos = 0;
	var SampleCount = selectData.length;
	var theIndex = fieldIndex;
	var sampleList = new Array();
	var qField = LayerFields[fieldIndex] + '="';
	var valueTitle = buttonList[2];
	var tempString = "";
	if (showSampleValues) {
		for (var i=0;i<SampleCount;i++) {
			startpos = selectData[i].indexOf(qField,0);
			startpos = startpos + qField.length;
			endpos = selectData[i].indexOf('"',startpos);
			if (LayerFieldType[theIndex].indexOf("12",0)!=-1) {
				// a Character field
				//var vData = escape(selectData[i].substring(startpos,endpos));
				var vData = makeXMLsafe(selectData[i].substring(startpos,endpos));
				//vData = fixSingleQuotes(vData);
				sampleList[i] = dQuote + vData + dQuote;
				
			} else if (LayerFieldType[theIndex]=="91") {
				// a Date field
				var theDateObj = new Date(parseFloat(selectData[i].substring(startpos,endpos)));
				
				var d = theDateObj.toUTCString();
				sampleList[i] = d.replace(/GMT|UTC/,"");
				theDateObj = null;
				
			} else {
				sampleList[i] = selectData[i].substring(startpos,endpos);
			}
		}
		valueTitle = buttonList[3];
	}
	
		var Win1 = parent.CustFrame;
		Win1.document.open();
		var t = "parent.MapFrame";	

	Win1.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><HEAD>');
	Win1.document.writeln('<body bgcolor="#FFFFE1" leftmargin=0 topmargin=0">');
		Win1.document.writeln('			<table border="0" cellspacing="0" cellpadding="2" width=100%>');
Win1.document.writeln('<tr><td colspan="2">&nbsp;</td></tr>');
Win1.document.writeln('<tr><td colspan="2" align="center" bgcolor="#6666cc"><font style="font-family: Arial; font-size: 16px" color="white"><b>Query</b></font></td></tr>');
Win1.document.writeln('<tr><td colspan="2" align="center" bgcolor="#EBEBEB"><font style="font-family: Arial; font-size: 12px" color="black">&nbsp;</font></td></tr>');
Win1.document.writeln('<tr><td colspan="2" align=left"><font style="font-family: Arial; font-size: 12px" color="black"> The Query function can be used to access a wealth of detailed information on geographical objects in Richmond.<p> <b>The Query function will be available in the Fee-based GIS Inquiry tool only.</b></p></font></td></tr>');
Win1.document.writeln('<tr><td colspan="2" align=center"><font style="font-family: Arial; font-size: 12px" color="blue"> Coming soon!</b></p></font></td></tr>');
	Win1.document.writeln('	</table>');
		Win1.document.writeln('	</font></center></body></html>');
	
		Win1.document.close();
		Win1=null;
		sampleList=null;
}


// temporarily change getSampleValues to true and load queryform
function tempGetSamples(theField) {
	showSampleValues=true;
//	if (useTextFrame) {
//		var Win1 = parent.TextFrame;
//		
//	} else {
//		var Win1 = //open("","QueryWindow","width=575,height=150,scrollbars=yes,resizable=yes");
//	}
//	Win1.document.open();
//	Win1.document.writeln('<html><meta http-equiv="Content-Type" //content="text/html; charset=' + charSet + '"><HEAD>');
//	Win1.document.writeln('<body BGCOLOR="' + textFrameBackColor + '" TEXT="Black" //size="-1">');
//	Win1.document.writeln('<div align="center"><font style="font-family: Arial; //font-size: 12px" color="black"><b>');
//	Win1.document.writeln(msgList[74] + LayerName[ActiveLayerIndex] + '. . //.</b></font><br>');
//	Win1.document.writeln('<font style="font-family: Arial; font-size: 12px" //color="black">' + msgList[75] + numberDataSamples + msgList[76] + //'</font></div></body></html>');
//	Win1.document.close();
//	Win1=null;
	
	var theText = writeFieldSample(theField);
	//alert(theText);
	sendToServer(imsQueryURL,theText,40);

}

// get the StoredQueries in the MapService
function getStoredQueries() {
	if (checkIfActiveLayerAvailable()) {
		var theString = '<ARCXML version="1.1">\n<REQUEST>\n<GET_SERVICE_INFO renderer="false" extensions="true" fields="false" />\n';
		theString += '</REQUEST>\n</ARCXML>';
		sendToServer(imsQueryURL,theString,55);
	}
}

// get the StoredQueries in the MapService
function parseStoredQueries(theReply) {
	//alert(theReply);
	storedQueryCount=0;
	storedQueryName.length=1;
	storedQueryString.length=1;
	storedQueryVariable.length=1;
	storedQueryVarCount.length=1;
	storedQueryFieldList.length=1;
	storedQueryIndex=0;
	var endpos = 1;
	var pos = -1;
	var blurb = 'id="' + ActiveLayer;
	var startpos = theReply.indexOf("<LAYERINFO",1);
	var thePos = 1;
	while (thePos!=-1) {
		startpos = theReply.indexOf("<LAYERINFO",1);
		endpos = theReply.indexOf(">",startpos);
		thePos = theReply.indexOf(blurb,1);
		if (thePos!=-1) {
			pos = thePos;
			thePos=-1;
		} 
	}
	var sqpos = 0;
	var sqvpos = 0;
	var sqpos2 = 0;
	var vCount=0;
	if (pos!=-1) {
		var fieldCount = 0;
		epos = theReply.indexOf("</LAYERINFO>",pos);
		startpos=0;
		endpos=pos;
		sqpos = theReply.indexOf("<STOREDQUERY name=",endpos);
		sqpos2 = theReply.indexOf("</STOREDQUERY>",endpos);
		while ((epos>sqpos) && (sqpos!=-1)) {
			
			if (sqpos!=-1) {
				startpos = sqpos + 19;
				endpos = theReply.indexOf(dQuote, startpos);
				blurb = theReply.substring(startpos,endpos);
				//alert(blurb);
				storedQueryName[storedQueryCount] = blurb;
				
				//startpos = theReply.indexOf("<QUERY where=",endpos);
				var sp2 = theReply.indexOf("<QUERY ",endpos);
				sp2 += 7;
				startpos = theReply.indexOf("where=",sp2);
				startpos += 7;
				endpos = theReply.indexOf(dQuote, startpos);
				blurb = theReply.substring(startpos,endpos);
				storedQueryString[storedQueryCount] = blurb;
				startpos = theReply.indexOf("subfields=",sp2); 
				startpos += 11;
				endpos = theReply.indexOf(dQuote, startpos);
				storedQueryFieldList[storedQueryCount] = theReply.substring(startpos,endpos);
				storedQueryVariable[storedQueryCount]="";			
				sqvpos = theReply.indexOf("<SQVAR",startpos);
				vCount = 0;
				while ((sqvpos!=-1) && (sqvpos<sqpos2)) {
					endpos = sqvpos;
					startpos = theReply.indexOf("name=",endpos);
					startpos += 6;
					endpos = theReply.indexOf(dQuote, startpos);
					blurb = theReply.substring(startpos,endpos);
					if (vCount > 0) blurb = "|" + blurb;
					storedQueryVariable[storedQueryCount] = storedQueryVariable[storedQueryCount] + blurb;
					vCount += 1;
					sqvpos = theReply.indexOf("<SQVAR",startpos);
				}
				storedQueryVarCount[storedQueryCount] = vCount;
			
				storedQueryCount += 1;
			}
			
			
			sqpos = theReply.indexOf("<STOREDQUERY name=",endpos);
			sqpos2 = theReply.indexOf("</STOREDQUERY>",sqpos);
		}
	}
	blurb=null;
	if (storedQueryCount==0) {
		alert(LayerName[ActiveLayerIndex] + msgList[77]);
	} else {
		storedQueryForm();
	}
}

// storedQuery Form
function storedQueryForm() {
	if (checkIfActiveLayerAvailable()) {
		writeStoredQueryForm(storedQueryIndex);
	}
}

function writeStoredQueryForm(theIndex) {
	storedQueryIndex=theIndex;
	if (storedQueryVarCount==0) {
		sendStoredQuery(theIndex,"");
	} else {
	
		if (useTextFrame) {
			var Win1 = parent.TextFrame;
			Win1.document.open();
			var t = "parent.MapFrame";
			
		} else {
			var Win1 = open("","QueryWindow","width=575,height=150,scrollbars=yes,resizable=yes");
			var t = "opener";
			if (parent.MapFrame!=null) t = "opener.parent.MapFrame";
		}
		
		Win1.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><HEAD>');
		Win1.document.writeln('			<script language="javascript">');
		Win1.document.writeln('var t = ' + t);
		
		Win1.document.writeln('function setStyle() {');
		Win1.document.writeln('	var f = document.forms[0];');
		Win1.document.writeln('	var theCount = t.storedQueryIndex;');
		Win1.document.writeln('	var okValue = 0;');
		Win1.document.writeln('	if (t.storedQueryVarCount[theCount]==1) {');
		Win1.document.writeln('		var theValue = f.theStyle.value;');
		Win1.document.writeln('		if (theValue!="") okValue = 1;');
		Win1.document.writeln('	} else {');
		Win1.document.writeln('		var theValue = f.theStyle[0].value;');
		Win1.document.writeln('		if (f.theStyle[0].value!="") okValue = 1;');
		Win1.document.writeln('		for (var i=1;i<t.storedQueryVarCount[theCount];i++) {');
		Win1.document.writeln('			theValue = theValue + "|" + f.theStyle[i].value;');
		Win1.document.writeln('			if (f.theStyle[i].value!="") okValue += 1;');
		Win1.document.writeln('		}');
		Win1.document.writeln('	}');
		Win1.document.writeln('	if (okValue==t.storedQueryVarCount[theCount]) {');
		Win1.document.writeln('		t.sendStoredQuery(theCount,theValue);');
		Win1.document.writeln('	} else {');
		Win1.document.writeln('		alert("Please enter appropriate value");');
		Win1.document.writeln('	}');
		Win1.document.writeln('}');
		Win1.document.writeln('function selectQuery() {');
		Win1.document.writeln('	var f = document.forms[0];');
		Win1.document.writeln('	var theIndex = f.theQuery.selectedIndex;');
		Win1.document.writeln('	t.writeStoredQueryForm(theIndex);');
		Win1.document.writeln('}');
		Win1.document.writeln('</script>');
		Win1.document.writeln('</head>');
		
		Win1.document.writeln('<body bgcolor="Black" text="White" topmargin=0 leftmargin=0 rightmargin=0 onload="window.focus()">');
		Win1.document.writeln('<div align="center">');
		Win1.document.writeln('<font style="font-family: Arial; font-size: 12px" color="black"><b>');
		Win1.document.writeln('<form action="" name="theStoreQueryForm" onsubmit="setStyle(); return false;">');
		Win1.document.writeln('<table cellspacing="2" nowrap bgcolor="' + textFrameFormColor + '" width=100%>');
		Win1.document.writeln('<tr><th colspan="3" align="CENTER">');
		Win1.document.writeln('<font style="font-family: Arial; font-size: 12px" color="black"><b>' + msgList[78] + '</b><br></font>');
		Win1.document.writeln('<font style="font-family: Arial; font-size: 12px" color="black"><b>' + msgList[79] + '</b></font>');
		Win1.document.writeln('</th></tr>');
		Win1.document.writeln('<tr>');
		Win1.document.writeln('<td align="Left">');
		Win1.document.writeln('<font style="font-family: Arial; font-size: 12px" color="black">' + LayerName[ActiveLayerIndex]);
		Win1.document.writeln('<select name="theQuery" onchange="selectQuery()">')
		for (var i=0;i<storedQueryCount;i++) {
			Win1.document.write('	<option value=' + i);
			if (i==storedQueryIndex) Win1.document.write(' selected');
			Win1.document.writeln('>' + storedQueryName[i]);
		
		}
		Win1.document.writeln('</select>');
		Win1.document.writeln('</font></td>');
		Win1.document.writeln('<td align="RIGHT"><font style="font-family: Arial; font-size: 12px" color="black">');
		for (var i=0;i<storedQueryVarCount[storedQueryIndex];i++) {
			Win1.document.write(buttonList[2]);
			if (storedQueryVarCount[storedQueryIndex]>1) Win1.document.write(' ' + (i+1));
			Win1.document.writeln(':');
			Win1.document.writeln('<input type=text name="theStyle" value=""><br>');
		}
		Win1.document.writeln('</font>');
		Win1.document.writeln('</td>');
		Win1.document.writeln('<td align="CENTER">');
		Win1.document.writeln('<input type="Button" name="setDU" value="' + buttonList[6] + '" onclick="setStyle()">  <br>');
		
		Win1.document.writeln('</td></tr></table></form>');
		Win1.document.writeln('</b></font></div>');
		Win1.document.writeln('</body></html>');
		Win1.document.close();
		Win1=null;
	
	}

}

// create the querystring for storedQuery and send it
function sendStoredQuery(theIndex,theValue) {
	showRetrieveData();
	var oldString = storedQueryString[theIndex];
	if (storedQueryVarCount[theIndex]>0) {
		var var1 = storedQueryVariable[theIndex].split("|");
		var var2 = theValue.split("|");
		for (var i=0;i<var1.length;i++) {
			oldString = swapStuff(oldString,var1[i],var2[i]);
		}
	
	} else {
		oldString = swapStuff(oldString,storedQueryVariable[theIndex],theValue);
	}
	//var newString = parseEntity(oldString);
	var newString = makeXMLsafe(oldString);
	//alert(newString);
	setQueryString = newString;
	selectionMode=1;
	var theString = writeQueryXML(newString);
	//alert("StoredQuery Request:\n" + theString);
	sendToServer(imsQueryURL,theString,queryXMLMode);
}

// see if there are storedQueries (Search) 
function checkStoredQueries(theReply) {
	var startpos = theReply.indexOf("<STOREDQUERY",1);
	if (startpos==-1) {
		//no storedqueries. . . do not display button
		useStoredQuery=false;
	}
		
}

function writeStartQueryXML(queryString, idAndShapeOnly) {
	if (swapSelectFields) {
		selectFields=selFieldList[ActiveLayerIndex];
	}
	var theString = '<ARCXML VERSION="1.1">\n<REQUEST>\n<GET_FEATURES outputmode="xml" geometry="false" envelope="true"';
	theString += ' compact="true" featurelimit="' + maxFeaturesReturned + '" beginrecord="0">\n';
	theString += '<LAYER id="' + LayerID[ActiveLayerIndex] + '" />';
	if (idAndShapeOnly) {
		theString += '<QUERY subfields="#ID# #SHAPE#" where="' + queryString + '" />';
	} else {
		theString += '<QUERY subfields="' + selectFields + '" where="' + queryString + '" />';
	}
	theString += '</GET_FEATURES>';
	theString += '</REQUEST>';
	theString += '</ARCXML>';
	//alert(theString);
	return theString;
	
}

function setStartQuery() {
	var theString = writeStartQueryXML(highlightedOne,true);
	sendToServer(imsQueryURL, theString, 20);
}

function parseStartQuery(theReply) {
	//alert(theReply);
	var theError = getXMLErrorMessage(theReply);
	if (theError=="") {
		if (queryZoom) {
			getXYs(theReply);
			startLeft = eLeft;
			startTop = eTop;
			startRight = eRight;
			startBottom = eBottom;
			var fWidth = eRight - eLeft;
			var fHeight = eTop - eBottom;
			var mWMargin = 0;
			var mHMargin = 0;
			//alert(LayerType[ActiveLayerIndex]);
			if (LayerType[ActiveLayerIndex]=="point") {	
				selectType="point";
				//alert("fullWidth=" + fullWidth + "\nfullHeight=" + fullHeight);
				mWMargin = fullWidth * selectPointMargin;
				mHMargin = fullHeight * selectPointMargin;
			} else {
				mWMargin = fWidth * selectMargin;
				mHMargin = fHeight * selectMargin; 
			}
			//alert("mWMargin=" + mWMargin + "\nmHMargin=" + mHMargin);
			eLeft = eLeft - mWMargin;
			eRight = eRight + mWMargin;
			eTop = eTop + mHMargin;
			eBottom = eBottom - mHMargin;
			startLeft = eLeft;
			startTop = eTop;
			startRight = eRight;
			startBottom = eBottom;
			
	
		}
		sendMapXML();
	} else {
		alert(theError);
	}
}



