var pixelTolerance= 4;
var idMinX, idMinY, idMaxX, idMaxY;
var idCount = 0;
var selectedId = 1;
var juris;
var municipality;
var prop_street;
var multiResults = new Array();
var cvtResults = new Array();
var glbPollNum = 0;

function identify(x1, y1){
	var idMins = convertPixelToMap(x1-(pixelTolerance/2), y1+(pixelTolerance/2));
	var idMaxs = convertPixelToMap(x1+(pixelTolerance/2), y1-(pixelTolerance/2));
	idMinX = idMins[0];
	idMinY = idMins[1];
	idMaxX = idMaxs[0];
	idMaxY = idMaxs[1];
	selectedId = 1;
	sendIdRequest(true); 
}

function convertPixelToMap(px, py){
	var dx = (maxx - minx)/mwidth;
	var mx = minx + (dx * px);
	var my = miny + (dx * (mheight - py));
	var newpoint = new Array();
	newpoint[0] = mx;
	newpoint[1] = my;
	return newpoint;

}

function sendIdRequest(countOnly, beginRecord){
	var axl = getIdRequest(countOnly, beginRecord);
	var queryUrl = url + "&CustomService=Query";
	http = getHTTPObject();
	if ((http != null)) {
	    http.open("POST", queryUrl, true);
	    if (countOnly) http.onreadystatechange = parseResultForCount;
	    else http.onreadystatechange = parseResult;
	    isWorking = true;
	    showLayer('loading');
	    //alert(axl);
	    http.send(axl);
  	}

}

function getIdRequest(countOnly, beginRecord){
	var axl = '<?xml version="1.0" encoding="UTF-8"?>';

	axl += '<ARCXML version="1.1">\n<REQUEST>\n<GET_FEATURES geometry="false" outputmode="xml" checkesc ="true" ';
	if(countOnly) axl += 'envelope="false" skipfeatures="true">\n';
	else axl += 'envelope="true" skipfeatures="false" beginrecord="' +  beginRecord + '" featurelimit="1">\n'; 
	axl += '<LAYER id="' + ActiveLayer + '" />';
	axl += '<SPATIALQUERY>';
	axl += '<SPATIALFILTER relation="area_intersection" >';
	axl += '<ENVELOPE maxy="' + idMaxY + '" maxx="' + idMaxX + '" miny="' + idMinY + '" minx="' + idMinX + '" />';
	axl += '</SPATIALFILTER>';
	axl += '</SPATIALQUERY>';
	axl += '</GET_FEATURES>';
	axl += '</REQUEST>';
	axl += '</ARCXML>';
	return axl;

}

function parseResultForCount(){
	if (http.readyState == 4) {
	    if (http.status == 200) {
	      var result = http.responseText;
	      //alert(result);
	      idCount = getCount(result); 
	      if(idCount != 0) sendIdRequest(false, 1);
	      else alert("No features found");
	     } else alert("Error retreiving data");
	     	          
       }  
}
function parseResult(){
	if (http.readyState == 4) {
	    if (http.status == 200) {
	      var result = http.responseText;
	      //alert(result);
	      processResult(result,100); 
	      
	     } else alert("Error retreiving data");
		          
       }  
}
function getCount(theReply){
	var theCount;
	var startpos = 0;
	var endpos = 0;
	var pos = theReply.indexOf("FEATURECOUNT");
	var pos1 = theReply.indexOf("count", pos + 12);
	if(pos1 != -1){
		pos1 += 7;
		var pos2 = theReply.indexOf("\"", pos1);
		theCount = parseFloat(theReply.substring(pos1,pos2));
	}
	else theCount=0;
	//alert(theCount);
	hideLayer('loading');
	return theCount;
}
var s = 0;
function processResult2(theReply,i){
  var selectedData = "";
  var endpos = 1;
  var pos = theReply.indexOf("<FIELDS ",endpos);
  for (s;s < i ;s++){
	  if (s > 0){
		  startpos = endpos + 145;
		  endpos = theReply.indexOf('" />',startpos);
			selectedData = theReply.substring(startpos,endpos);
	  }else{
  		if (pos!=-1) {
			var startpos = pos + 8;
			endpos = theReply.indexOf('" />',startpos);
			selectedData = theReply.substring(startpos,endpos);
  		}
		
	  }
	  
	 if(selectedData != ""){
		var fValue1 = getFieldValues(selectedData);
    	var fName1 = getFieldNames(selectedData);
    	//alert(selectedData);
		for (var j = 0;j < fName1.length - 1;j++)
		
			{
			if ((fName1[j] == "WEQL.EQLPARCELS.PIN")||(fName1[j] == " WEQL.EQLPARCELS.PIN"))//"WEQL.EQLPARCELS.PIN")
			{
				multiResults[s+""+0] = fValue1[j] ;
				//alert("PIN =" + multiResults[s+""+0]);
				
			}
			if (fName1[j] == "WEQL.EQLPARCELS.CVT_DESCRIPTION")//"WEQL.EQLPARCELS.CVT_DESCRIPTION")
			{
				multiResults[s+""+1] = fValue1[j];
			}
			if (fName1[j] == "WEQL.EQLPARCELS.PROP_STREET")//"WEQL.EQLPARCELS.PROP_STREET")
			{
				multiResults[s+""+2] = fValue1[j];
			}

			}
			
			
 	 }
 	 //alert(s);
 	 //alert("PIN =" + multiResults[s+""+0]);
  }
   hideLayer('loading');
   s = 0;
}
var c = 0;
function processResult3(theReply,i){
	//alert("in processResult3");
  var selectedData = "";
  var endpos = 1;
  var pos = theReply.indexOf("<FIELDS ",endpos);
  for (c;c < i ;c++){
	  if (c > 0){
		  startpos = endpos + 1;
		  endpos = theReply.indexOf('" />',startpos);
			selectedData = theReply.substring(startpos,endpos);
	  }else{
  		if (pos!=-1) {
			var startpos = pos + 8;
			endpos = theReply.indexOf('" />',startpos);
			selectedData = theReply.substring(startpos,endpos);
  		}
		
	  }
	  
	 if(selectedData != ""){
		var fValue1 = getFieldValues(selectedData);
    	var fName1 = getFieldNames(selectedData);
		//alert(fName1.length);
		//return;
		for (var j = 0;j < fName1.length ;j++){
			if (fName1[j] == "WGIS.LUG_OFFICIALS_GEOGRAPHY.NAME")
			{
				cvtResults[c+""+0] = fValue1[j] ;
				
			}
			if (fName1[j] == "WGIS.LUG_OFFICIALS_GEOGRAPHY.TITLE")
			{
				cvtResults[c+""+1] = fValue1[j];
			}
			//alert(cvtResults[c+""+0] + " - " + cvtResults[c+""+1]);

		}
 	 }
  }
   c = 0;
}
						
function processResult(theReply,i){

  //TODO : Use XML DOM parser instead to parse the response
  
  var selectedData = "";
  var endpos = 1;
  var pos = theReply.indexOf("<FIELDS ",endpos);
  if (pos!=-1) {
	var startpos = pos + 8;
	endpos = theReply.indexOf('" />',startpos);
	selectedData = theReply.substring(startpos,endpos);
  }

 if(selectedData != ""){
	var fValue1 = getFieldValues(selectedData);
        var fName1 = getFieldNames(selectedData);
	if (i == 100){
	displayIdResult(fName1, fValue1);
	}else{
		
		for (var j = 0;j < fName1.length - 1;j++)
		{
			switch(i){
			case 99:
			if (fName1[j] == "WEQL.EQLPARCELS.CVT_CODE")//"WEQL.EQLPARCELS.CVT_CODE")
			{
				juris = fValue1[j];
			}
			if (fName1[j] == "WEQL.EQLPARCELS.CVT_DESCRIPTION")//"WEQL.EQLPARCELS.CVT_DESCRIPTION")
			{
				municipality = fValue1[j];
			}
			//break;
			if (fName1[j] == "WEQL.EQLPARCELS.PROP_STREET")//"WEQL.EQLPARCELS.PROP_STREET")
			{
				prop_street = fValue1[j];
			}
			break;
			
			case 0:
			
			if (fName1[j] == "WGIS.CNTYPRECINCTSSPLIT.PRCNCT_NUM")
			{
				theElecResultsArr[0] = fValue1[j];
			}
			if (fName1[j] == "WGIS.CNTYPRECINCTSSPLIT.WARD_NUM")
			{
				theElecResultsArr[1] = fValue1[j];
			}
			if (fName1[j] == "WGIS.CNTYPRECINCTSSPLIT.ELECTION_ID")
			{
				theElecResultsArr[12] = fValue1[j];
			}
			if (fName1[j] == "WGIS.CNTYPRECINCTSSPLIT.POLL_NUM")
			{
			//alert(fValue1[j]);
			    if (fValue1[j] != 0){
				theElecResultsArr[24] = fValue1[j];
				glbPollNum = fValue1[j];
				}
			}
			break;
			
			case 1:
			if (fName1[j] == "WGIS.STATE_HOUSE_DISTRICTS.NAME")
			{
				theElecResultsArr[2] = fValue1[j];
			}
			if (fName1[j] == "WGIS.STATE_HOUSE_DISTRICTS.DISTRICT_NUM")
			{
				theElecResultsArr[3] = fValue1[j];
			}
			if (fName1[j] == "WGIS.STATE_HOUSE_DISTRICTS.POLITICAL_PARTY")
			{
				theElecResultsArr[13] = fValue1[j];
			}
			if (fName1[j] == "WGIS.STATE_HOUSE_DISTRICTS.WEBSITE")
			{
				theElecResultsArr[15] = fValue1[j];
			}
			
			break;
			
			case 2:
			
			if (fName1[j] == "WGIS.STATE_SENATE_DISTRICTS.NAME")
			{
				theElecResultsArr[4] = fValue1[j];
			}
			if (fName1[j] == "WGIS.STATE_SENATE_DISTRICTS.DISTRICT_NUM")
			{
				theElecResultsArr[5] = fValue1[j];
			}
			if (fName1[j] == "WGIS.STATE_SENATE_DISTRICTS.POLITICAL_PARTY")
			{
				theElecResultsArr[14] = fValue1[j];
			}
			if (fName1[j] == "WGIS.STATE_SENATE_DISTRICTS.WEBSITE")
			{
				theElecResultsArr[16] = fValue1[j];
			}
			break;
			
			case 3:
			
			if (fName1[j] == "WGIS.CNTYBOC.COM_NAME")
			{
				theElecResultsArr[6] = fValue1[j];
			}
			if (fName1[j] == "WGIS.CNTYBOC.DISTRICT")
			{
				theElecResultsArr[7] = fValue1[j];
			}
			if (fName1[j] == "WGIS.CNTYBOC.PARTYABBR")
			{
				theElecResultsArr[8] = fValue1[j];
			}
			break;
			
			case 4:
			if (fName1[j] == "WGIS.SCHOOL_DISTRICTS.NAME")
			{
				theElecResultsArr[11] = fValue1[j];
			}
			
			break;
			
			case 5:
			if (fName1[j] == "WGIS.COMMUNITY_COLLEGE_DISTRICTS.NAME")
			{
				theElecResultsArr[17] = fValue1[j];
			}
			break;
			
			case 6:
			if (fName1[j] == "WGIS.US_CONGRESS_DISTRICTS.NAME")
			{
				theElecResultsArr[18] = fValue1[j];
			}
			if (fName1[j] == "WGIS.US_CONGRESS_DISTRICTS.DISTRICT_NUM")
			{
				theElecResultsArr[19] = fValue1[j];
			}
			
			if (fName1[j] == "WGIS.US_CONGRESS_DISTRICTS.POLITICAL_PARTY")
			{
				theElecResultsArr[21] = fValue1[j];
			}
			
			if (fName1[j] == "WGIS.US_CONGRESS_DISTRICTS.WEBSITE")
			{
				theElecResultsArr[20] = fValue1[j];
			}
			break;
			
			case 7:
			if (fName1[j] == "WGIS.LIBRARY_DISTRICTS.LIBRARY_DISTRICTS")
			{
				theElecResultsArr[22] = fValue1[j];
			}
			break;
			
			case 101:
			if (fName1[j] == "WGIS.CNTYPOLLINGLOCATIONS.ADDRESS")
			{
				theElecResultsArr[9] = fValue1[j];
			}
			if (fName1[j] == "WGIS.CNTYPOLLINGLOCATIONS.LOCATION")
			{
				theElecResultsArr[10] = fValue1[j];
			}
			if (fName1[j] == "WGIS.CNTYPOLLINGLOCATIONS.ZIP")
			{
				theElecResultsArr[23] = fValue1[j];
			}
			
			
			break;
			
			}
		}
		
		
	}
 }   
 hideLayer('loading');
                   
            
}


// get a list of field names from the returned record
function getFieldNames(recordString) {
	var theStuff = new String(recordString);				
	var theList = theStuff.split('" ');
	var fName1 = new Array();
	for (var f=0;f<theList.length;f++) {
		var v = theList[f].split('="');
		fName1[f] = v[0];
	}
	return fName1;

}

// get a list field values from the returned record
function getFieldValues(recordString) {
	var theStuff = new String(recordString);				
	var theList = theStuff.split('" ');
	var fValue1 = new Array();
	for (var f=0;f<theList.length;f++) {
		var v = theList[f].split('="');
		if ((v[1]=="") || (v[1]==null)) v[1] = "&nbsp;";
		fValue1[f] = v[1];
	}
	return fValue1;
}

function displayIdResult(fName1, fValue1){

  var idContent =  "<table class='idTitleBarClass'>";
  idContent += "<tr onmousedown='startMove(event, \"IdResult\")'>";
 idContent += "<td width='95%'><font class='idTitleClass'>Identify Results</font></td>";
 idContent += "<td align='right' width='5%'> <img onmousedown='hideLayer(\"IdResult\");' src='images/close.gif'></td>";
 idContent += "</tr>";
 idContent += "</table>";
 
 idContent += "<table width='100%' cellspacing='5' cellpadding='5'>";
 idContent += "<tr>";
 //idContent += "<table width='100%' cellspacing='5' cellpadding='5'>";
 idContent += "<td class='idNonTitleClass'>Identify Layer : " + LayerName[ActiveLayerIndex] + "<br> Total Count : " + idCount;
 idContent += "</td>";
 idContent += "</tr>";
 
 idContent += "<tr> <td>";
 idContent += "<table border='1' cellpadding='0' cellspacing='2' width='100%'>";
 idContent += "<tr valign='top'>";
 idContent += "<td width='20%'>";
 idContent += "<table border='0' width='100%'>";
 idContent += "<tr class='headerRow'>";
 idContent += "<td>Record Num</td>";
 idContent += "</tr>";
 idContent += "</table>";
 idContent += "<div style='overflow:auto;height:295px;border-width:1px;'>";
 idContent += "<table width='100%' cellpadding='0' cellspacing='0'>";
 for (var i=1;i<=idCount;i++){
 	idContent += " <tr>";
 	idContent += "<td align='middle'>";
 	if(i==selectedId) idContent += "<span class='selectedIdClass'> " + i + "</span>";
 	else {
 		idContent += "<a href='#' onclick='setSelectedId(" + i + ");sendIdRequest(false," + i + " );return false;' style='color:black;font-size:12px;font-family:Arial, Verdana, Helvetica, sans-serif;'>";
 		idContent += "<font class='unselectedIdClass'>" + i + "</font></a>";
 	}
 idContent += "</td></tr>";
 }
 idContent += "</table>"; 
 idContent += "</div>";

 idContent += "</td>";
 idContent += "<td>";
 
 idContent += "<div style='overflow:auto;height:310px;border-width:1px;'>";
 idContent += "<table width='100%' cellpadding='0' cellspacing='0'>";
 idContent += "<tr>";
 idContent += "<td>";
 idContent += "<table cellspadding='0' cellspacing='2' width='100%'>";
 idContent += "<tr>";
 idContent += "<td class='headerRow'><b>Field</b></td><td class='headerRow'><b>Value</b></td>";
 idContent += "</tr>";
 for (var ii=0;ii<fValue1.length;ii++){

 	var evenOdd;
 	if((ii%2) == 0) evenOdd = "evenRow";

 	else evenOdd = "oddRow";

 	idContent += "<tr valign='top'>";
 	idContent += "<td class='" + evenOdd + "'><b>" + fName1[ii] + "</b></td><td class='" + evenOdd + "'>" + fValue1[ii] + "</td>";
 	idContent += "</tr>";
 }
 idContent += "</table>";
 idContent += "</td>";
 idContent += "</tr>";
 idContent += "</table>";
 idContent += "</div>";
 idContent += "</td>";
 idContent += "</tr>";
 idContent += "</table>";
 idContent +="</td>";
 idContent += "</tr>";
 idContent += "<tr>";
 idContent += "<td align='right'><input value='Close' onmousedown='hideLayer(\"IdResult\");' type='button' id='CloseButton' name='CloseButton'></td>";
 idContent += "</tr>";
 idContent += "</table>";
 updateContent('IdResult', idContent);
 showLayer('IdResult');
}

function setSelectedId(indx){
	selectedId = indx;
}