

// CONTENT SENT FROM SERVER **MUST** BE SENT AS text/xml!!!
function loadXMLDocJP(url) {
	var httpRequest;
	document.getElementById("cityField_jp").disabled=true;	
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        httpRequest = new XMLHttpRequest();
        if (httpRequest.overrideMimeType) {
            httpRequest.overrideMimeType('text/xml');
            // See note below about this line
        }
    } 
    else if (window.ActiveXObject) { // IE
        try {
            httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch (e) {
            try {
                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch (e) {}
        }
    }else {
		// The browser cannot support dynamic City loading - say so
		elem = document.getElementById('cityField_jp');
		clearElemChildren(elem);
		var opt = document.createElement("option");
		opt.value = "";
		opt.appendChild(document.createTextNode('Your browser cannot support City searching'));
		elem.appendChild(opt);
	}
    if (httpRequest) {
        httpRequest.onreadystatechange = function() { 
        	processJPReqChange(httpRequest); 
        };
    	httpRequest.open('GET', url, true);
    	httpRequest.send('');
    }else{
    	return false;
    }
}

function clearJPElemChildren(elem) {
		while (elem.childNodes.length > 0) {
					 elem.removeChild(elem.firstChild);
		}
}
function processJPReqChange(httpRequest) {
    // only if req shows "loaded"
    if (httpRequest.readyState == 4) {
        // only if "OK"
        if (httpRequest.status == 200) {
				
						// ...processing statements go here...
						var elem = document.getElementById('cityField_jp');
						while (elem.childNodes.length > 0) {
								elem.removeChild(elem.firstChild);
						}
						elem.disabled = false;
						buildJPCityList(httpRequest);
						
						
        } else {
					// We had an error - keep the element disabled and write an error
        			elem = document.getElementById('cityField_jp');
			clearJPElemChildren(elem);
			var opt = document.createElement("option");
			opt.value = "";
			opt.appendChild(document.createTextNode('Cannot retrieve City data'));
			elem.appendChild(opt);
        }
    }
}

function buildJPCityList(httpRequest) {
		var select = document.getElementById("cityField_jp");
		var items = httpRequest.responseXML.getElementsByTagName("city");
		appendJPToSelect(select,'', 'City');
		for (var i=0; i<items.length; i++) {
		        appendJPToSelect(select, items[i].attributes[0].value, items[i].childNodes[0].nodeValue);
		}
		if (items.length == 0) { appendJPToSelect(select,"", 'No Cities Found'); }
		// Try to set the city drop-down to the session City value, if it is present.
		var cityField = select;
		if (currCityJP) {
			for( var n=0; n < cityField.options.length; n++) {
				if( cityField.options[n].value.toLowerCase() == currCityJP.toLowerCase() ){
				if((document.all)){
					cityField.options[n].setAttribute('selected',true);
				}
				else{
					cityField.selectedIndex = n;
					}
					break;
				}
			}
		}
}

function appendJPToSelect(select, value, content) {
    var opt;
    opt = document.createElement("option");
    opt.value = value;
    opt.appendChild(document.createTextNode(content));
    select.appendChild(opt);
}

function changedJPCountry() {
	var countryField = document.getElementById("country_jp");
	var stateProvince = document.getElementById("stateProvince_jp");
	var cityField = document.getElementById("cityField_jp");
		if ((countryField.value == "US") || (countryField.value == "CA")) {
				if (stateProvince.value == "") {
						stateProvince.disabled = false;
						clearJPElemChildren(cityField);
						appendJPToSelect(cityField,'', 'City');
						cityField.disabled = true;
				} else { 
				stateProvince.value = "";
				stateProvince.disabled = false;
				clearJPElemChildren(cityField);
				appendJPToSelect(cityField,'', 'City');
				cityField.disabled = true;
				}
		} else {
			if (countryField.value != "") {
				stateProvince.value = "";
				stateProvince.disabled = true;
				constructJPXMLQuery();
			} else {
				stateProvince.value = "";
				stateProvince.disabled = true;
				clearJPElemChildren(cityField);
				appendJPToSelect(cityField,'', 'City');
				cityField.disabled = true;
			}
		}
		if ((countryField.value != "US") && (f.rateRange)) { f.rateRange.disabled = true; f.rateRange.value = ""; }
	else { if (f.rateRange) { f.rateRange.disabled = false; } }
}

function changedJPStateProv() {
	var countryField = document.getElementById("country_jp");
	var stateProvince = document.getElementById("stateProvince_jp");
	var cityField = document.getElementById("cityField_jp");
	if (self.setCountry) { setCountry(f, f.stateProvince); }
	if (self.stateProvince_onChange) { stateProvince_onChange(); }
		if (stateProvince.value != "") {
				if (countryField.value != "") {
						constructJPXMLQuery();
				}
		}	
}

function constructJPXMLQuery() {
	var countryField = document.getElementById("country_jp").value;
	var stateProvince = document.getElementById("stateProvince_jp").value;
	var url = "/dp/en_US/common/search/get_cities.jsp?" + "country=" + countryField + "&state=" + stateProvince;
	loadXMLDocJP(url);
}

// Initialize form correctly
function initJPCities() {
	var countryField = document.getElementById("country_jp");
	var stateProvince = document.getElementById("stateProvince_jp");
	var cityField = document.getElementById("cityField_jp");
	
	if ((countryField.value == "US") || (countryField.value == "CA")) {
		stateProvince.disabled = false;
		if (stateProvince.value != "") {
			constructJPXMLQuery();
		}
	} else {
		if (countryField.value != "") {
			constructJPXMLQuery();
		} else {
			stateProvince.value = "";
			stateProvince.disabled = true;
			cityField.value = "";
			cityField.disabled = true;
		}
	}
	if ((countryField.value != "US") && (f.rateRange)) { f.rateRange.disabled = true; f.rateRange.value = ""; }
	else { if (f.rateRange) { f.rateRange.disabled = false; } }
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

addLoadEvent(function () {
	initJPCities();
});
