
 //Global XMLHTTP Request object
var XMLhttp;
function XMLHttp_Get(oXmlhttp, url)
{                     
    oXmlhttp.open('GET', url, true);             
    oXmlhttp.send(null); 
}
function CreateXmlHttp(handler)
{ 
	var objXmlHttp = null; //Holds the local xmlHTTP object instance 
	try
	{
	objXmlHttp = new XMLHttpRequest(); // Opera, MSIE 7, Mozilla 
	}
	catch (e)
	{
		try
		{
		objXmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); // IE 5.5+
		}
		catch (e)
		{
		objXmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); // IE 5.x
		}
	}

	if(objXmlHttp != null)
	objXmlHttp.onreadystatechange = handler;

	return objXmlHttp;
} 



var requestURL = window.document.location.toString() + '?fn=';


function custCountryChangeHandler() 
{ 
    //readyState of 4 or 'complete' represents that data has been returned
    if (XMLhttp.readyState == 4 || XMLhttp.readyState == 'complete')
    { 
	//Gather the results from the callback          
	var str = XMLhttp.responseText;    

	// for populating  ddlCities
	if (XMLhttp.responseXML.documentElement != null)
	{
	    UpdateCustomerStateList(XMLhttp.responseXML.documentElement);
	}
    }   
}
function countryChangeHandler() 
{ 
    //readyState of 4 or 'complete' represents that data has been returned
    if (XMLhttp.readyState == 4 || XMLhttp.readyState == 'complete')
    { 
	//Gather the results from the callback          
	var str = XMLhttp.responseText;    

	// for populating  ddlCities
	if (XMLhttp.responseXML.documentElement != null)
	{
	    UpdateStateList(XMLhttp.responseXML.documentElement);
	}
    }   
}

function stateChangeHandler() 
{ 
    //readyState of 4 or 'complete' represents that data has been returned
    if (XMLhttp.readyState == 4 || XMLhttp.readyState == 'complete')
    { 
	//Gather the results from the callback          
	var str = XMLhttp.responseText;    

	// for populating  ddlCities
	if (XMLhttp.responseXML.documentElement != null)
	{
	    UpdateCityList(XMLhttp.responseXML.documentElement);
	}
    }   
}

function ClearList(list, defaultText, defaultValue) {
    for (var count = list.options.length-1; count >-1; count--)
    {
	list.options[count] = null;            
    }        
    list.options[0] = new Option(defaultText, defaultValue, false, false);
}

function UpdateCityList(userNodes)
{
    var cityList = document.getElementById("ddlCities"); 
    var cityNodes = userNodes.getElementsByTagName('city'); 
    var textValueName; 
    var optionItemName;

    ClearList(cityList, 'City', '');

    //Add new city list to the users ddlCities
    for (var count = 0; count < cityNodes.length; count++)
    {
	textValueName = GetInnerText(cityNodes[count]);  
	optionItemName = new Option( textValueName, textValueName,  false, false);
	cityList.options[cityList.length] = optionItemName;  
    }
    cityList.disabled = false;          
    enableMe(cityList); 
}

function UpdateStateList(userNodes)
{
    var stateList = document.getElementById("ddlStates"); 
    var stateNodes = userNodes.getElementsByTagName('state'); 
    var textValueName; 
    var optionItemName;


	var ddlCountries = document.getElementById("ddlCountries");    
	var curCountry = ddlCountries.options[ddlCountries.selectedIndex].value;

	if (curCountry == 'CAN') {
		ClearList(stateList, 'Province', '');
	} else {
		ClearList(stateList, 'State', '');
	}


    //Add new state list to the ddlStates
    for (var count = 0; count < stateNodes.length; count++)
    {
	textValueName = GetInnerText(stateNodes[count]);  
	optionItemName = new Option( textValueName, textValueName,  false, false);
	stateList.options[stateList.length] = optionItemName;  
    }
    enableMe(stateList);         

    //if no states, load cities
    if(stateNodes.length == 0) {
	getCities('');
    } 
}
function UpdateCustomerStateList(userNodes)
{
    var stateList = document.getElementById("listCustomerState"); 
    var stateNodes = userNodes.getElementsByTagName('state'); 
    var textValueName; 
    var optionItemName;

	var ddlCountries = document.getElementById("listCustomerCountry");    
	var curCountry = ddlCountries.options[ddlCountries.selectedIndex].value;

	if (curCountry == 'CAN') {
		ClearList(stateList, 'Province', '');
	} else {
		ClearList(stateList, 'State', '');
	}

    //Add new state list to the ddlStates
    for (var count = 0; count < stateNodes.length; count++)
    {
	textValueName = GetInnerText(stateNodes[count]);  
	optionItemName = new Option( textValueName, textValueName,  false, false);
	stateList.options[stateList.length] = optionItemName;  
    }
    enableMe(stateList);  
}

function cityChangeHandler() 
{ 
    //readyState of 4 or 'complete' represents that data has been returned
    if (XMLhttp.readyState == 4 || XMLhttp.readyState == 'complete')
    { 
	//Gather the results from the callback          
	var str = XMLhttp.responseText;    

	// for populating  ddlCities
	if (XMLhttp.responseXML.documentElement != null)
	{
	    UpdateLocationList(XMLhttp.responseXML.documentElement);
	}
    }   
}



function UpdateLocationList(userNodes)
{
    var locList = document.getElementById("ddlLocations"); 
    var locNodes = userNodes.getElementsByTagName('location'); 
    var tempNode;
    var storeName; 
    var unitNumber; 
    var optionItem;

	ClearList(locList, 'Location', '');

    //Add new location list to the users ddlLocations
    for (var count = 0; count < locNodes.length; count++)
    {
		tempNode = locNodes[count].getElementsByTagName('name');
	storeName = GetInnerText(tempNode[0]);  
	tempNode = locNodes[count].getElementsByTagName('unitNumber');
	unitNumber = GetInnerText(tempNode[0]);

	optionItem = new Option( storeName, unitNumber,  false, false);
	locList.options[locList.length] = optionItem;  
    }           
    locList.disabled = false;
    enableMe(locList);
}

//Returns the node text value 
function GetInnerText (node)
{
    return (node.textContent || node.innerText || node.text) ;
}

function disableMe(list) 
{
	list.disabled = true;
	list.style.backgroundColor = "#efefef";
	list.style.color = "#000000";
}

function enableMe(list) 
{
	list.disabled = false;
	list.style.backgroundColor = "#ffffff";
	list.style.color = "#000000";
}

function getCities(state)
{  
    var ddl=document.getElementById("ddlStates");        
	var ddlCountries = document.getElementById("ddlCountries");    
	var ddlLocations = document.getElementById("ddlLocations");    
	var ddlCities = document.getElementById("ddlCities");    

	ClearList(ddlCities, 'City', '');
	ClearList(ddlLocations, 'Location', '');

	disableMe(ddlCities);
	disableMe(ddlLocations);

	var curCountry = ddlCountries.options[ddlCountries.selectedIndex].value;
	var curStateCode = ddl.options[ddl.selectedIndex].text;        

    //Append the name to search for to the requestURL 
    var url = 'GuestContact.aspx?fn=state&s=' + state + '&c=' + curCountry;

    //Create the XMLHttp object to use in the request 
    //stateChangeHandler will fire when the state has 
    //changed, i.e. data is received back.This is 
    //non-blocking (asynchronous)                  
    XMLhttp = CreateXmlHttp(stateChangeHandler);

    //Send the XMLHttp get to the specified url                
    XMLHttp_Get(XMLhttp, url);                

}
function getCustomerStates(country)
{  
    var ddlStates =document.getElementById("listCustomerState");        

	ClearList(ddlStates, 'State', '');
	disableMe(ddlStates);

    //Append the name to search for to the requestURL 
    var url = 'GuestContact.aspx?fn=custcountry&c=' + country;

    //Create the XMLHttp object to use in the request 
    //stateChangeHandler will fire when the state has 
    //changed, i.e. data is received back.This is 
    //non-blocking (asynchronous)                  
    XMLhttp = CreateXmlHttp(custCountryChangeHandler);

    //Send the XMLHttp get to the specified url                
    XMLHttp_Get(XMLhttp, url);                
}

function getStates(country)
{  
    var ddlStates =document.getElementById("ddlStates");        
	var ddlCountries = document.getElementById("ddlCountries");    
	var ddlLocations = document.getElementById("ddlLocations");    
	var ddlCities = document.getElementById("ddlCities");    

	ClearList(ddlCities, 'City', '');
	ClearList(ddlLocations, 'Location', '');
	ClearList(ddlStates, 'State', '');

	ddlStates.disabled = true;
	ddlCities.disabled = true;
	ddlLocations.disabled = true;
	disableMe(ddlStates);
	disableMe(ddlCities);
	disableMe(ddlLocations);

	var curCountry = ddlCountries.options[ddlCountries.selectedIndex].value;

    //Append the name to search for to the requestURL 
    var url = 'GuestContact.aspx?fn=country&c=' + country;

    //Create the XMLHttp object to use in the request 
    //stateChangeHandler will fire when the state has 
    //changed, i.e. data is received back.This is 
    //non-blocking (asynchronous)                  
    XMLhttp = CreateXmlHttp(countryChangeHandler);

    //Send the XMLHttp get to the specified url                
    XMLHttp_Get(XMLhttp, url);                
}

function getLocations(city)
{
	var ddl=document.getElementById("ddlStates");        
	var ddlCountries = document.getElementById("ddlCountries");    
	var ddlLocations = document.getElementById("ddlLocations");    

	ClearList(ddlLocations, 'Location', '');
	ddlLocations.disabled = true;
	disableMe(ddlLocations);

	var curCountry = ddlCountries.options[ddlCountries.selectedIndex].value;
	var curStateCode = ddl.value;        

	//Append the name to search for to the requestURL 
    var url = 'GuestContact.aspx?fn=city&s=' + curStateCode + '&c=' + curCountry + '&ci=' + city;

    //Create the XMLHttp object to use in the request 
    //stateChangeHandler will fire when the state has 
    //changed, i.e. data is received back.This is 
    //non-blocking (asynchronous)                  
    XMLhttp = CreateXmlHttp(cityChangeHandler);

    //Send the XMLHttp get to the specified url                
    XMLHttp_Get(XMLhttp, url);   

}