//Start setup [Edit below here]

var d = new dynamicSelect();

d.addSelect('bnd');

var http ;
var httpCongress;
var httpHouse;
var httpSenate;
var httpRegion;
var hostName = document.location.host;
var esriBlurb = "/servlet/com.esri.esrimap.Esrimap?ServiceName="

//*********************************************************************
//*			parameters set by Designer			                     *
//*********************************************************************

var URL = "http://" + hostName + esriBlurb + "dced1992lc";
///////////////////////////////////////////////////////////////////////////////////
// Get Counties
var theString = '<ARCXML version="1.1">\n<REQUEST>\n<GET_FEATURES outputmode="xml" geometry="false" envelope="false" checkesc ="true">\n';
theString += '<LAYER id="7" />';
theString += '<QUERY subfields="' + countyNameVar + '" />';
theString += '</GET_FEATURES>';
theString += '</REQUEST>';
theString += '</ARCXML>';

imsQueryURL = URL + "&CustomService=Query";

http = getHTTPObject();
	
	if ((http != null)) {

	    http.open("POST", imsQueryURL, true);
	    http.onreadystatechange = parseCountyLayers;
	    http.send(theString);
	}
/////////////////////////////////////////////////////////////////////////////////////
//Get US Representative

theString = '<ARCXML version="1.1">\n<REQUEST>\n<GET_FEATURES outputmode="xml" geometry="false" envelope="false" checkesc ="true">\n';
theString += '<LAYER id="5" />';
theString += '<QUERY subfields="' + congressLastNameVar + ' ' + congressFirstNameVar + ' ' + congressLegDisVar + '" />';
theString += '</GET_FEATURES>';
theString += '</REQUEST>';
theString += '</ARCXML>';

imsQueryURL = URL + "&CustomService=Query";

httpCongress = getHTTPObject();
	
	if ((httpCongress != null)) {

	    httpCongress.open("POST", imsQueryURL, true);
	    httpCongress.onreadystatechange = parseCongressLayers;
	    httpCongress.send(theString);
	}
/////////////////////////////////////////////////////////////////////////////////
//Get State House

theString = '<ARCXML version="1.1">\n<REQUEST>\n<GET_FEATURES outputmode="xml" geometry="false" envelope="false" checkesc ="true">\n';
theString += '<LAYER id="4" />';
theString += '<QUERY subfields="' + houseLastNameVar + ' ' + houseFirstNameVar + ' ' + houseLegDisVar + '" />';
theString += '</GET_FEATURES>';
theString += '</REQUEST>';
theString += '</ARCXML>';

imsQueryURL = URL + "&CustomService=Query";

httpHouse = getHTTPObject();
	
	if ((httpHouse != null)) {

	    httpHouse.open("POST", imsQueryURL, true);
	    httpHouse.onreadystatechange = parseHouseLayers;
	    httpHouse.send(theString);
	}
/////////////////////////////////////////////////////////////////////////////////////
//Get State Senate

theString = '<ARCXML version="1.1">\n<REQUEST>\n<GET_FEATURES outputmode="xml" geometry="false" envelope="false" checkesc ="true">\n';
theString += '<LAYER id="3" />';
theString += '<QUERY subfields="' + senateLastNameVar + ' ' + senateFirstNameVar + ' ' + senateLegDisVar + '" />';
theString += '</GET_FEATURES>';
theString += '</REQUEST>';
theString += '</ARCXML>';

imsQueryURL = URL + "&CustomService=Query";

httpSenate = getHTTPObject();
	
	if ((httpSenate != null)) {

	    httpSenate.open("POST", imsQueryURL, true);
	    httpSenate.onreadystatechange = parseSenateLayers;
	    httpSenate.send(theString);
	}
///////////////////////////////////////////////////////////////////////////////////
// Get Regions
theString = '<ARCXML version="1.1">\n<REQUEST>\n<GET_FEATURES outputmode="xml" geometry="false" envelope="false" checkesc ="true">\n';
theString += '<LAYER id="2" />';
theString += '<QUERY subfields="' + regionNameVar + '" />';
theString += '</GET_FEATURES>';
theString += '</REQUEST>';
theString += '</ARCXML>';

imsQueryURL = URL + "&CustomService=Query";

httpRegion = getHTTPObject();
	
	if ((httpRegion != null)) {

	    httpRegion.open("POST", imsQueryURL, true);
	    httpRegion.onreadystatechange = parseRegionLayers;
	    httpRegion.send(theString);
	}
/////////////////////////////////////////////////////////////////////////////////
//Setup Options
d.selects['bnd'].addOption('counties');
d.selects['bnd'].options['counties'].createOption('-Select a County-', '');


d.selects['bnd'].addOption('cong');
d.selects['bnd'].options['cong'].createOption('-Select a US Congress Person-', '');


d.selects['bnd'].addOption('house');
d.selects['bnd'].options['house'].createOption('-Select a PA House Person-', '');


d.selects['bnd'].addOption('senate');
d.selects['bnd'].options['senate'].createOption('-Select a PA Senate Person-', '');


d.selects['bnd'].addOption('region');
d.selects['bnd'].options['region'].createOption('-Select a PA Region-', '');

///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////

function GetCountyData(theReply){

	alert(theReply);
}

function dynamicSelect()
{
	this.selects = new Array();
	
	this.addSelect = function(name)
	{
		this.selects[name] = new selectObj();
	}



	this.updateOptions = function(source, target)
	{
		var form = source.form;
		var target = form.elements[target];
		var value = source.options[source.selectedIndex].value;
		while(target.options.length) target.remove(0);
		
		if(!this.selects[source.name].options[value])
		{
			//alert('Invalid selection.'); //For debugging while you set it up
			return;
		}
		
		var data = this.selects[source.name].options[value].options;
		
		for(var x=0; x<data.length; x++)
		{
			try
			{
				target.add(data[x]);
			}
			catch(e)
			{
				target.add(data[x], null);
			}
		}
		
		target.selectedIndex = 0;
	}

}



function selectObj()
{
	this.options = new Array();
	
	this.addOption = function(value)
	{
		this.options[value] = new optionObj();
	}
}



function optionObj()
{
	this.options = new Array();
	
	this.createOption = function(name, value)
	{
		this.options[this.options.length] = new Option(name, value);
	}
}

function getHTTPObject() {
    var xmlhttp;
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return xmlhttp;
}

function parseCountyLayers(){
  if (http.readyState == 4) {
  
   if (http.status == 200) {

		var result = http.responseText;
		//alert(result);
      
      
		var selectedData = "";
		var Tagvalue = new Array();
		var TagStartPos;
		var endpos = 1;
		var pos = result.indexOf("<FIELDS ",endpos);
		var startpos = pos + 8;
		var counter=0;
		  
		while(startpos != -1){
			
			endpos = result.indexOf('" />',startpos);
			selectedData = result.substring(startpos,endpos);
			TagStartPos = selectedData.indexOf('"',1) + 1;
			Tagvalue[counter] = selectedData.substring(TagStartPos);
			pos = result.indexOf("<FIELDS ",endpos);
			if (pos == -1){
				startpos = pos;
			}else{
				startpos = pos + 8;
		    }
			counter = counter + 1;
			 
		}
		
		Tagvalue.sort();
		for (counter=0;counter<=Tagvalue.length - 1;++counter){
			d.selects['bnd'].options['counties'].createOption(Tagvalue[counter], Tagvalue[counter]);
		}
      
  
   } else alert("Error retreiving data");
          
  }  
  
 }
 
 function parseCongressLayers(){
  if (httpCongress.readyState == 4) {
  
   if (httpCongress.status == 200) {

		var result = httpCongress.responseText;
		//alert(result);
      
      
		var selectedData = "";
		var Tagvalue = new Array();
		var strEntry;
		var TagStartPos;
		var endpos = 1;
		var pos = result.indexOf("<FIELDS ",endpos);
		var startpos = pos + 8;
		var counter=0;
		
		
		while(startpos != -1){
			
			endpos = result.indexOf('" ',startpos);
			selectedData = result.substring(startpos,endpos);
			TagStartPos = selectedData.indexOf(congressLastNameVar + '="',1) + congressLastNameVar.length + 2;
			strEntry = selectedData.substring(TagStartPos);
			
			endpos = result.indexOf('" ',endpos + 1);
			selectedData = result.substring(startpos,endpos);
			TagStartPos = selectedData.indexOf(congressFirstNameVar + '="', 1) + congressFirstNameVar.length + 2;
			strEntry += " " + selectedData.substring(TagStartPos);
			
			endpos = result.indexOf('" ',endpos + 1);
			selectedData = result.substring(startpos,endpos);
			TagStartPos = selectedData.indexOf(congressLegDisVar + '="',1) + congressLegDisVar.length + 2;
			strEntry += " (" + selectedData.substring(TagStartPos) + ")";
			strEntry = strEntry.replace(/&quot;/g,'"');
			strEntry = strEntry.replace(/&apos;/g,"'");
			Tagvalue[counter] = strEntry;
	
			endpos = result.indexOf('" />',startpos);
			pos = result.indexOf("<FIELDS ",endpos);
			if (pos == -1){
				startpos = pos;
			}else{
				startpos = pos + 8;
		    }
			counter = counter + 1;
			 
		}
		
		Tagvalue.sort();
		
		var LegDist;
		var Beginning;
		var Ending;
		
		for (counter=0;counter<=Tagvalue.length - 1;++counter){
			LegDist = Tagvalue[counter];
			Beginning = LegDist.indexOf('(',1);
			Ending = LegDist.indexOf(')',1);
			LegDist = LegDist.substring(Beginning + 1,Ending);

			d.selects['bnd'].options['cong'].createOption(Tagvalue[counter], LegDist);
		}
      
  
   } else alert("Error retreiving data");
          
  }  
  
 }
 
  function parseHouseLayers(){
  if (httpHouse.readyState == 4) {
  
   if (httpHouse.status == 200) {

		var result = httpHouse.responseText;
		//alert(result);
      
      
		var selectedData = "";
		var Tagvalue = new Array();
		var strEntry;
		var TagStartPos;
		var endpos = 1;
		var pos = result.indexOf("<FIELDS ",endpos);
		var startpos = pos + 8;
		var counter=0;
		
		
		while(startpos != -1){
			
			endpos = result.indexOf('" ',startpos);
			selectedData = result.substring(startpos,endpos);
			TagStartPos = selectedData.indexOf(houseLastNameVar + '="',1) + houseLastNameVar.length + 2;
			strEntry = selectedData.substring(TagStartPos);
			
			endpos = result.indexOf('" ',endpos + 1);
			selectedData = result.substring(startpos,endpos);
			TagStartPos = selectedData.indexOf(houseFirstNameVar + '="', 1) + houseFirstNameVar.length + 2;
			strEntry += " " + selectedData.substring(TagStartPos);
			
			endpos = result.indexOf('" ',endpos + 1);
			selectedData = result.substring(startpos,endpos);
			TagStartPos = selectedData.indexOf(houseLegDisVar + '="',1) + houseLegDisVar.length + 2;
			strEntry += " (" + selectedData.substring(TagStartPos) + ")";
			strEntry = strEntry.replace(/&quot;/g,'"');
			strEntry = strEntry.replace(/&apos;/g,"'");
			Tagvalue[counter] = strEntry;
			
			endpos = result.indexOf('" />',startpos);
			pos = result.indexOf("<FIELDS ",endpos);
			if (pos == -1){
				startpos = pos;
			}else{
				startpos = pos + 8;
		    }
			counter = counter + 1;
			 
		}
		
		Tagvalue.sort();
		
		var LegDist;
		var Beginning;
		var Ending;
		
		for (counter=0;counter<=Tagvalue.length - 1;++counter){
			LegDist = Tagvalue[counter];
			Beginning = LegDist.indexOf('(',1);
			Ending = LegDist.indexOf(')',1);
			LegDist = LegDist.substring(Beginning + 1,Ending);

			d.selects['bnd'].options['house'].createOption(Tagvalue[counter], LegDist);
		}
      
  
   } else alert("Error retreiving data");
          
  }  
  
 }
 
 function parseSenateLayers(){
  if (httpSenate.readyState == 4) {
  
   if (httpSenate.status == 200) {

		var result = httpSenate.responseText;
		//alert(result);
      
      
		var selectedData = "";
		var Tagvalue = new Array();
		var strEntry;
		var TagStartPos;
		var endpos = 1;
		var pos = result.indexOf("<FIELDS ",endpos);
		var startpos = pos + 8;
		var counter=0;
		
		
		while(startpos != -1){
			
			endpos = result.indexOf('" ',startpos);
			selectedData = result.substring(startpos,endpos);
			TagStartPos = selectedData.indexOf(senateLastNameVar + '="',1) + senateLastNameVar.length + 2;
			strEntry = selectedData.substring(TagStartPos);
			
			endpos = result.indexOf('" ',endpos + 1);
			selectedData = result.substring(startpos,endpos);
			TagStartPos = selectedData.indexOf(senateFirstNameVar + '="', 1) + senateFirstNameVar.length + 2;
			strEntry += " " + selectedData.substring(TagStartPos);
			
			endpos = result.indexOf('" ',endpos + 1);
			selectedData = result.substring(startpos,endpos);
			TagStartPos = selectedData.indexOf(senateLegDisVar + '="',1) + senateLegDisVar.length + 2;
			strEntry += " (" + selectedData.substring(TagStartPos) + ")";
			strEntry = strEntry.replace(/&quot;/g,'"');
			strEntry = strEntry.replace(/&apos;/g,"'");
			Tagvalue[counter] = strEntry;
			
			endpos = result.indexOf('" />',startpos);
			pos = result.indexOf("<FIELDS ",endpos);
			if (pos == -1){
				startpos = pos;
			}else{
				startpos = pos + 8;
		    }
			counter = counter + 1;
			 
		}
		
		Tagvalue.sort();
		
		var LegDist;
		var Beginning;
		var Ending;
		
		for (counter=0;counter<=Tagvalue.length - 1;++counter){
			LegDist = Tagvalue[counter];
			Beginning = LegDist.indexOf('(',1);
			Ending = LegDist.indexOf(')',1);
			LegDist = LegDist.substring(Beginning + 1,Ending);

			d.selects['bnd'].options['senate'].createOption(Tagvalue[counter], LegDist);
		}
      
  
   } else alert("Error retreiving data");
          
  }  
  
 }
 
 function parseRegionLayers(){
  if (httpRegion.readyState == 4) {
  
   if (httpRegion.status == 200) {

		var result = httpRegion.responseText;
		//alert(result);
      
      
		var selectedData = "";
		var Tagvalue = new Array();
		var TagStartPos;
		var endpos = 1;
		var pos = result.indexOf("<FIELDS ",endpos);
		var startpos = pos + 8;
		var counter=0;
		  
		while(startpos != -1){
			
			endpos = result.indexOf('" />',startpos);
			selectedData = result.substring(startpos,endpos);
			TagStartPos = selectedData.indexOf('"',1) + 1;
			Tagvalue[counter] = selectedData.substring(TagStartPos);
			pos = result.indexOf("<FIELDS ",endpos);
			if (pos == -1){
				startpos = pos;
			}else{
				startpos = pos + 8;
		    }
			counter = counter + 1;
			 
		}
		
		Tagvalue.sort();
		for (counter=0;counter<=Tagvalue.length - 1;++counter){
			d.selects['bnd'].options['region'].createOption(Tagvalue[counter], Tagvalue[counter]);
		}
      
  
   } else alert("Error retreiving data");
          
  }  
  
 }