<!-- Invisible to Non-JavaScript Browers

// Copyrighted 2008 By Boulevard Group, LLC.  All Rights Reserved

// Global AJAX Domain (Careful: Child of VCard)

var DomainAJAX;
/*
jQuery(document).ready(
	function() {
		DomainAJAX = document.MyForm.domainAJAX.value;
	}
);
*/

// Declare a global  XMLHTTP Request object
var XmlHttpObj;

// Declare global values
var DoDebug = false;
var tpform, tpctl;
var tpctlName = "";
var selectedCBOValue = "";
var selectedCBOText = "";
var tpctlCurrent = "";
var tpctlNext = "";
var tpctlSQLWhere = ""
var tpctlSQLOrderBy = ""
var tpctlValueFld = ""
var tpctlTextFld = ""

var refProject, refStreet, refAddress, refUnit
var strProject, strStreet, strAddress, strUnit

DoDebug = false; // Turn off debug
//DoDebug = true; // Turn on debug
	
// called from onChange or onClick event of the continent dropdown list (Cascade)
function CascadeOnChangeX(dform, dctl) 
{	
	// Initialize
	tpform = dform;
	tpctl = dctl;
	
	tpctlName = dctl.name;
	
	// Clear Combo Box
	clearCBOs();
		
	// Get Project, Street, Address, and Unit Current Values
	var refProject = document.getElementById("cboProject");
	strProject = refProject.options[refProject.selectedIndex].value;
	var refProject2 = document.getElementById("HUDACC_ID");
	refProject2.value = strProject;
	
	var refStreet = document.getElementById("cboStreet");
	strStreet = refStreet.options[refStreet.selectedIndex].value;
	var refStreet2 = document.getElementById("Street");
	refStreet2.value = strStreet;
	
	var refAddress = document.getElementById("cboAddress");
	strAddress = refAddress.options[refAddress.selectedIndex].value;
	var refAddress2 = document.getElementById("Address1D");
	refAddress2.value = strAddress;
	
	var refUnit = document.getElementById("cboUnit");
	strUnit = refUnit.options[refUnit.selectedIndex].value;
	var refUnit2 = document.getElementById("UnitID");
	refUnit2.value = strUnit;

	// Get Values
	
    var cboList = document.getElementById(tpctl.name);
    
    // get selected continent from dropdown list
    selectedCBOValue = cboList.options[cboList.selectedIndex].value;
    selectedCBOText = cboList.options[cboList.selectedIndex].text;
    
    if(DoDebug) {
		alert("CTL="+dctl.name+"\nValue="+selectedCBOValue+"\nText="+selectedCBOText);
    }
    
	// Get Next CBO Name
	getCBOParms();
	
	// Process RESULTS (if there is one)
	
	if (tpctlNext == "RESULT") {
		setResult("UnitID", selectedCBOValue);
		return false;	
	}
	
    // Setup Link to AJAX Webpage
    
    // Get Domain
	DomainAJAX = document.MyForm.domainAJAX.value;
    // url of page that will send xml data back to client browser
    var requestUrl;
    // use the following line if using asp
    requestUrl = "http://' + DomainAJAX + '/NHA/VCardCascade.asp?ctl=" + encodeURIComponent(tpctl.name) + 
					"&value=" + encodeURIComponent(selectedCBOValue) + 
					"&text=" + encodeURIComponent(selectedCBOText) + 
					"&valuefld=" + encodeURIComponent(tpctlValueFld) + 
					"&textfld=" + encodeURIComponent(tpctlTextFld) + 
					"&next=" + encodeURIComponent(tpctlNext) + 
					"&current=" + encodeURIComponent(tpctlCurrent) + 
					"&sqlwhere=" + escape(tpctlSQLWhere) +
					"&orderby=" + escape(tpctlSQLOrderBy) +
					"&project=" + encodeURIComponent(strProject);
	if (DoDebug) {
		alert("URL="+requestUrl);
	}
    
    // Link to Webpage    
	CreateXmlHttpObj();
	
	// verify XmlHttpObj variable was successfully initialized
	if(XmlHttpObj)
	{
        // assign the StateChangeHandler function ( defined below in this file)
        // to be called when the state of the XmlHttpObj changes
        // receiving data back from the server is one such change
		XmlHttpObj.onreadystatechange = StateChangeHandler;
		
		// define the iteraction with the server -- true for as asynchronous.
		XmlHttpObj.open("GET", requestUrl,  false);
		
		// send request to server, null arg  when using "GET"
		XmlHttpObj.send(null);		
	
	} else {
		alert("Cannot create XMLRequest object. Please call support.");
	} 
	
} // End of CascadeOnChangeX

// create an instance of XMLHTTPRequest Object, varies with browser type, try for IE first then Mozilla
function CreateXmlHttpObj()
{
	// try creating for IE (note: we don't know the user's browser type here, just attempting IE first.)
	try
	{
		XmlHttpObj = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
		try
		{
			XmlHttpObj = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch(oc)
		{
			XmlHttpObj = null;
		}
	}
	// if unable to create using IE specific code then try creating for Mozilla (FireFox) 
	if(!XmlHttpObj && typeof XMLHttpRequest != "undefined") 
	{
		XmlHttpObj = new XMLHttpRequest();
	}
	
} // End of CreateXmlHttpObj

// this function called when state of  XmlHttpObj changes
// we're interested in the state that indicates data has been
// received from the server
function StateChangeHandler()
{
	// state ==4 indicates receiving response data from server is completed
	if(XmlHttpObj.readyState == 4)
	{
		// To make sure valid response is received from the server, 200 means response received is OK
		if(XmlHttpObj.status == 200)
		{			
			ProcessPostback();
		}
		else
		{
			alert("Problem retrieving data from the server, status code: "  + XmlHttpObj.status);
		}
	}
	
} // End of StateChangeHandler

// populate the contents of the dropdown list
function ProcessPostback()
{

	// Test for RESULT
	if (tpctlNext == "RESULT") 
	{
		alert("RESULT");
	} 
	else if (tpctlNext == "") 
	{
		alert("NADA");
	} 
	else
	{
		// Point to Next CBO
		var cboList = document.getElementById(tpctlNextCBO);
	
		// Get CBO Nodes
	
		var cbos = XmlHttpObj.responseXML.getElementsByTagName('cbo');
		if (DoDebug) {
			alert("Length="+cbos.length);
		}
	
		// Pass the values and create the Combo Box
	
		for(var i=0; i<cbos.length; i++) {
	
			// Get Text and Value values
			var dValue = getNodeValue(cbos[i], 'value');
			var dText = getNodeValue(cbos[i], 'text');
			if (DoDebug) {
				alert("Item="+i+"\nValue="+dValue+"\nText="+dText);
			}
			
			// Preprocess Text Value (Kluge)
			//alert("CBO="+tpctlName+"\ndText>"+dText+"<");
			if (dText == "N/A" || dText == "*ERROR*") {
				if (tpctlName == "cboAddress") {  // Back one CBO
					dText = strAddress;
				}
			}
			
			// Append to Combo Box
			if (dValue != "*ERROR*" && dText != "*ERROR*") {
				cboList.options[i+1] = new Option(dText, dValue);
			}
			
			// Postprocess CBO Entry
		}
	}
	
} // End of ProcessPostback

//Get Child Node Values
function getNodeValue(obj, tag) 
{
	// Validate arguments
	
	if (obj == null) {
		alert ("XML Object Error. Please call support.");
		return "*ERROR*";
	}
	if (tag == null) {
		alert ("XML Object Tag Error. Please call support.");
		return "*ERROR*";
	}
	
	// Extract Value
	try
	{
		return obj.getElementsByTagName(tag)[0].firstChild.nodeValue;
	}
	catch (e)
	{
		alert("XML Object Access Error.  Please call support.");
		return "*ERROR*";
	}
	
} // End of getNodeValue

//Point to Next (Cascade)
function getCBOParms()
{
	var DoDebug = false;
	
	if (DoDebug) {
		alert("In getCBOParms");
	}
	
	// Get Home CBO Name
	var dCBO = tpctl.name;
	if (DoDebug) {
		alert("CBO Name = " + dCBO);
	}

	// Perform Function By CBO
	
	if (dCBO == "cboRegion")
	{
		tpctlCurrent = "v_AMPRegion";
		tpctlNext = "v_HUDACC";
		if (selectedCBOValue == "ALL") {
			tpctlSQLWhere = ""
		} else {
			tpctlSQLWhere = " AMPRegion = '" + selectedCBOValue + "' ";
		}		
		tpctlSQLOrderBy = "HUDACC_DevtName";
		tpctlValueFld = "HUDACC_ID";
		tpctlTextFld = "HUDACC_DevtName";
		tpctlNextCBO = "cboProject";
	}
	else if (dCBO == "cboProject") 
	{
		tpctlCurrent = "v_HUDACC";
		tpctlNext = "v_Streets";
		tpctlSQLWhere = " HUDACC_ID = '" + selectedCBOValue + "' ";
		tpctlSQLOrderBy = "HUDACC_ID, Street";
		tpctlValueFld = "Street";
		tpctlTextFld = "Street";
		tpctlNextCBO = "cboStreet";
	} 
	else if (dCBO == "cboStreet") 
	{
		tpctlCurrent = "v_Streets";
		tpctlNext = "v_Addresses";
		tpctlSQLWhere = " HUDACC_ID = '" + strProject + "' AND Street = '" + selectedCBOValue + "' ";
		tpctlSQLOrderBy = "HUDACC_ID, Street, Address1ID";
		tpctlValueFld = "Address1";
		tpctlTextFld = "Address1ID";
		tpctlNextCBO = "cboAddress";
	} 
	else if (dCBO == "cboAddress")
	{
		tpctlCurrent = "v_Addresses";
		tpctlNext = "v_Units";
		tpctlSQLWhere = " HUDACC_ID = '" + strProject + "' AND Address1ID = '" + selectedCBOValue + "' ";
		tpctlSQLOrderBy = "HUDACC_ID, ADDRESS1ID, Address2ID";
		tpctlValueFld = "UnitID";
		tpctlTextFld = "Address2ID";
		tpctlNextCBO = "cboUnit";
	} 
	else if (dCBO == "cboUnit")
	{
		// selectedCBOValue has UnitID VAlue
		tpctlCurrent = "v_Units";
		tpctlNext = "RESULT";
		tpctlSQLWhere = "";
		tpctlSQLOrderBy = "";
		tpctlValueFld = "";
		tpctlTextFld = "";
		tpctlNextCBO = "";
	}
	else
	{
		tpctlCurrent = "";
		tpctlNext = "";
		tpctlSQLWhere = "";
		tpctlSQLOrderBy = "";
		tpctlValueFld = "";
		tpctlTextFld = "";
		tpctlNextCBO = "";
	}

} // End of getNextCBO

//Clear Combos (Cascade)
function clearCBOs()
{
	var DoDebug = false;
	
	if (DoDebug) {
		alert("In clearCBOS");
	}
	
	// Get Home CBO Name
	var dCBO = tpctl.name;	
	if (DoDebug) {
		alert("CBO Name = " + dCBO);
	}

	// Perform Function By CBO
	if (dCBO == "cboRegion") 
	{
		clearCBO("cboProject");
		clearResult("HUDACC_ID");
		clearCBO("cboStreet");
		clearResult("Street");
		clearCBO("cboAddress");
		clearResult("Address1D");
		clearCBO("cboUnit");
		clearResult("UnitID");
		tpctlNext = "cboProject";
	
	} 
	if (dCBO == "cboProject") 
	{
		clearCBO("cboStreet");
		clearResult("Street");
		clearCBO("cboAddress");
		clearResult("Address1D");
		clearCBO("cboUnit");
		clearResult("UnitID");
		tpctlNext = "cboStreet";
	
	} 
	else if (dCBO == "cboStreet") 
	{
		clearCBO("cboAddress");
		clearResult("Address1D");
		clearCBO("cboUnit");
		clearResult("UnitID");
		tpctlNext = "cboAddress";
	
	} 
	else if (dCBO == "cboAddress")
	{
		clearCBO("cboUnit");
		clearResult("UnitID");
		tpctlNext = "cboUnit"
	
	} 
	else if (dCBO == "cboUnit")
	{
		clearResult("UnitID");		
	}
	else
	{
	}
	
} // End of clearCBOs

//Clear Combo (Cascade)
function clearCBO(dCBO)
{
	var DoDebug = false;
	
	if (DoDebug) {
		alert("In clearCBO\nCBO Name = " + dCBO);
	}
	
	// Get Pointer et al
	var dctl = document.getElementById(dCBO);
	
	// Clear CBO
	dctl.length = 1;
	dctl.options[0].selected = true;

} // End of clearCombo

// Clear Result (Cascade)
function clearResult(dResult)
{
	var DoDebug = false;
	
	if (DoDebug) {
		alert("In clearResult = " + dResult);
	}
	
	// Get Pointer et al
	var dctl = document.getElementById("alt" + dResult);	
	if (dctl != null) {
		// Clear Result
		dctl.innerHTML = "N/A";
	}

	// Get Pointer et al
	var dctl = document.getElementById(dResult);
	
	if (DoDebug) {
		alert("dctl >"+dctl.name+"<");
	}
	
	// Clear Result
	dctl.value = "N/A";
	
} // End of clearResult

// Set Result (Cascade)
function setResult(dResult, dValue)
{
	//alert("Field>"+dResult+"<\nValue>"+dValue+"<");
	
	// Preprocess dValue
	
	if (dValue == null || dValue == undefined) {
		var wrkdValue = "*Error*";
	} else {
		wrkdValue = dValue;
	}
	
	// Get Pointer et al
	var dctl = document.getElementById("alt" + dResult);
	// Clear Result
	if (dctl != null) {
		dctl.innerHTML = wrkdValue;
	}

	// Get Pointer et al
	var dctl = document.getElementById(dResult);
	
	// Clear Result
	dctl.value = wrkdValue;
	
} // End of setResult

function CascadeOnChange(dform, dctl)
{
	var DoDebug = false;
	
	// Initialize
	tpform = dform;
	tpctl = dctl;
	
	tpctlName = dctl.name;
    if(DoDebug) {
		alert("dctl.name=>"+tpctlName+"<");
    }   
	
	// Clear Combo Box
	clearCBOs();
		
	// Get Region, Project, Street, Address, and Unit Current Values
	
	if (document.getElementById("cboRegion")) {
		var refRegion = document.getElementById("cboRegion");
		strRegion = refRegion.options[refRegion.selectedIndex].value;
		var refRegion2 = document.getElementById("AMPRegion");
		refRegion2.value = strRegion;
	} else {
		//alert("No Region");
	}
	
	var refProject = document.getElementById("cboProject");
	strProject = refProject.options[refProject.selectedIndex].value;
	var refProject2 = document.getElementById("HUDACC_ID");
	refProject2.value = strProject;
	
	var refStreet = document.getElementById("cboStreet");
	strStreet = refStreet.options[refStreet.selectedIndex].value;
	var refStreet2 = document.getElementById("Street");
	refStreet2.value = strStreet;
	
	var refAddress = document.getElementById("cboAddress");
	strAddress = refAddress.options[refAddress.selectedIndex].value;
	var refAddress2 = document.getElementById("Address1D");
	refAddress2.value = strAddress;
	
	var refUnit = document.getElementById("cboUnit");
	strUnit = refUnit.options[refUnit.selectedIndex].value;
	var refUnit2 = document.getElementById("UnitID");
	refUnit2.value = strUnit;

	// Get Values
	
    var cboList = document.getElementById(tpctl.name);
    
    // get selected continent from dropdown list
    selectedCBOValue = cboList.options[cboList.selectedIndex].value;
    selectedCBOText = cboList.options[cboList.selectedIndex].text;
    
    if(DoDebug) {
		alert("CTL="+dctl.name+"\nValue="+selectedCBOValue+"\nText="+selectedCBOText);
    }
    
	// Get Next CBO Name
	getCBOParms();
	
	// Process RESULTS (if there is one)
	
	if (tpctlNext == "RESULT") {
		setResult("UnitID", selectedCBOValue);
		return false;	
	}
	
    // Setup Link to AJAX Webpage
    
    // Get Domain
	DomainAJAX = document.MyForm.domainAJAX.value;

    // url of page that will send xml data back to client browser
    
    //var requestUrl;
    // use the following line if using asp
    //requestUrl = "http://' + DomainAJAX + '/NHA/VCardCascade.asp?ctl=" + encodeURIComponent(tpctl.name) + 
	//				"&value=" + encodeURIComponent(selectedCBOValue) + 
	//				"&text=" + encodeURIComponent(selectedCBOText) + 
	//				"&valuefld=" + encodeURIComponent(tpctlValueFld) + 
	//				"&textfld=" + encodeURIComponent(tpctlTextFld) + 
	//				"&next=" + encodeURIComponent(tpctlNext) + 
	//				"&current=" + encodeURIComponent(tpctlCurrent) + 
	//				"&sqlwhere=" + escape(tpctlSQLWhere) +
	//				"&orderby=" + escape(tpctlSQLOrderBy) +
	//				"&project=" + encodeURIComponent(strProject);
    
    var url = 'http://' + DomainAJAX + '/NHA/VCardCascade.asp';
    var pars = "ctl=" + encodeURIComponent(tpctl.name) + 
				"&value=" + encodeURIComponent(selectedCBOValue) + 
				"&text=" + encodeURIComponent(selectedCBOText) + 
				"&valuefld=" + encodeURIComponent(tpctlValueFld) + 
				"&textfld=" + encodeURIComponent(tpctlTextFld) + 
				"&next=" + encodeURIComponent(tpctlNext) + 
				"&current=" + encodeURIComponent(tpctlCurrent) + 
				"&sqlwhere=" + escape(tpctlSQLWhere) +
				"&orderby=" + escape(tpctlSQLOrderBy) +
				"&project=" + encodeURIComponent(strProject);
	if (DoDebug) {
		alert("URL >"+url+"<\n"+"PARS >"+pars+"<");
	}
		
	var myAjax = new Ajax.Request(
		url, 
		{
			method: 'get', 
			parameters: pars, 
			onComplete: DoPostProcess
		});
		
} // End of DoAjax
	
function DoPostProcess(originalRequest)
{
	var DoDebug = false;
	
	// Test for RESULT
	if (tpctlNext == "RESULT") 
	{
		alert("RESULT");
	} 
	else if (tpctlNext == "") 
	{
		alert("NADA");
	} 
	else
	{
		// Point to Next CBO
		var cboList = document.getElementById(tpctlNextCBO);
	
		// Get CBO Nodes
	
		var cbos = originalRequest.responseXML.getElementsByTagName('cbo');
		if (DoDebug) {
			alert("Length="+cbos.length);
		}
	
		// Pass the values and create the Combo Box
	
		for(var i=0; i<cbos.length; i++) {
	
			// Get Text and Value values
			var dValue = getNodeValue(cbos[i], 'value');
			var dText = getNodeValue(cbos[i], 'text');
			if (DoDebug) {
				alert("Item="+i+"\nValue="+dValue+"\nText="+dText);
			}
			
			// Preprocess Text Value (Kluge)
			//alert("CBO="+tpctlName+"\ndText>"+dText+"<");
			if (dText == "N/A" || dText == "*ERROR*") {
				if (tpctlName == "cboAddress") {  // Back one CBO
					dText = strAddress;
				}
			}
			
			// Append to Combo Box
			if (dValue != "*ERROR*" && dText != "*ERROR*") {
				cboList.options[i+1] = new Option(dText, dValue);
			}
			
			// Postprocess CBO Entry
		}
	}
	
} // End of DoPostProcess

// Make Visible -->










