// global flag
var isIE = false;

// global request and XML document objects
var req;

//the object in which to place the results
var targetDiv;

var delayedTimer = false;
var dblClickTime = false;
/**
* retrieve XML document (reusable generic function);
* parameter is URL string (relative or complete) to
* an .xml file whose Content-Type is a valid XML
* type, such as text/xml; XML source must be from
* same domain as HTML file
*/
function loadXMLDoc(url, handlerfunction) {
	if (window.XMLHttpRequest) {
		// branch for native XMLHttpRequest object
		req = new XMLHttpRequest();
		req.onreadystatechange = handlerfunction;
		req.open("GET", url, true);
		req.send(null);
	} else if (window.ActiveXObject) {
	    // branch for IE/Windows ActiveX version
		isIE = true;
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) {
			req.onreadystatechange = handlerfunction;
			req.open("GET", url, true);
			req.send();
		}
    }
}

// display details retrieved from XML document
function lookupRegions(evt){
	if(delayedTimer) window.clearTimeout(delayedTimer); 	//stop the previous lookup
	
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	if (evt) {
		var theInput = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
		//if (theInput && theInput.value) {
		if (theInput) {
			try {
				targetMenu	= document.getElementById('region');

				if(!targetMenu) return false;
				
				mnuCategory = document.getElementById('cat');
				mnuCountry	= document.getElementById('country');
				var SelectedCountry	= mnuCountry.options[mnuCountry.selectedIndex].value;
				var SelectedCategory = mnuCategory.options[mnuCategory.selectedIndex].value;
				var baseUrl 			= (ClassPath)? ClassPath : 'inc/jobClasses/';
				var theUrl				= baseUrl + 'inc/regions.php?cntry=' + SelectedCountry;
		
				if(SelectedCategory){
					theUrl += '&cat=' + SelectedCategory;
				}

				/**
				* delay the searchevent with dblClickTime/2 - 
				* this gives us time to check if the user enters another key :) and reduces the number of server-requests
				*/
				delayedTimer = window.setTimeout('loadXMLDoc("' + theUrl + '", replaceRegionMenu)', dblClickTime/2);              
			}
			catch(e) {
				var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
				alert("Unable to get XML data:\n" + msg);
				return;
			}
		}
	}
}

/**
* manually load regions when page load (not event-driven)
*/
function loadRegions(curRegion){
	if(delayedTimer) window.clearTimeout(delayedTimer); 	//stop the previous lookup

	try {
		targetMenu	= document.getElementById('region');
	
		if(!targetMenu) return false;

		mnuCategory = document.getElementById('cat');
		mnuCountry	= document.getElementById('country');
		var SelectedCountry	= mnuCountry.options[mnuCountry.selectedIndex].value;
		var SelectedCategory = mnuCategory.options[mnuCategory.selectedIndex].value;
		var theUrl				= 'inc/jobClasses/inc/regions.php?cntry=' + SelectedCountry;

		if(curRegion){
			theUrl += '&region=' + curRegion;
		}

		if(SelectedCategory){
			theUrl += '&cat=' + SelectedCategory;
		}

		/**
		* delay the searchevent with dblClickTime/2 - 
		* this gives us time to check if the user enters another key :) and reduces the number of server-requests
		*/
		delayedTimer = window.setTimeout('loadXMLDoc("' + theUrl + '", replaceRegionMenu)', dblClickTime/2);              
	}
	catch(e) {
		var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
		alert("Unable to get XML data:\n" + msg);
		return;
	}
}


/**
* show the result that has been returned by the xmlhttprequestobject
*/
function replaceRegionMenu() {
	/**
	* reset the city-searchfields
	*/
	if(document.getElementById('city')){
		document.getElementById('city').value = '';
		document.getElementById('search_city').value = '';
	}

	regionMenu = document.getElementById('region');

	regionMenu.style.display = 'block';
//	regionMenu.innerHTML = "<option value=''>loading...</option>";

	// remove old options
	regionMenu.innerHTML = "";

    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {

        		// DO NOT use innerHTML for setting the options, it WONT work in Internet Explorer
        		var menuOptions = eval('(' + req.responseText + ')');
				for (var i in menuOptions){
					regionMenu.options[regionMenu.options.length] = new Option(menuOptions[i].label, menuOptions[i].value);
					if(menuOptions[i].selected){
						regionMenu.options[regionMenu.options.length -1].selected = true;
					}
				}

				if(regionMenu.options.length <= 1){
					regionMenu.setAttribute('disabled', 'disabled');
				}else{
					regionMenu.removeAttribute('disabled');
				}
         } else {
            alert("There was a problem retrieving the XML data:\n" + req.statusText);
         }
    }
}

function lookupCountries(evt){
	if(delayedTimer) window.clearTimeout(delayedTimer); 	//stop the previous lookup
	
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	if (evt) {
		var theInput = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
		if (theInput) {
			try {
				targetMenu	= document.getElementById('region');

				if(!targetMenu) return false;
				
				mnuCategory = document.getElementById('cat');
				mnuCountry	= document.getElementById('country');
				var SelectedCountry = mnuCountry.options[mnuCountry.selectedIndex].value;
				var SelectedCategory = mnuCategory.options[mnuCategory.selectedIndex].value;
				var theUrl	= 'inc/jobClasses/inc/countries.php?cat=' + SelectedCategory + '&cntry=' + SelectedCountry;

				/**
				* delay the searchevent with dblClickTime/2 - 
				* this gives us time to check if the user enters another key :) and reduces the number of server-requests
				*/
				delayedTimer = window.setTimeout('loadXMLDoc("' + theUrl + '", replaceCountryMenu)', dblClickTime/2);              
			}
			catch(e) {
				var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
				alert("Unable to get XML data:\n" + msg);
				return;
			}
		}
	}
}

/**
* show the result that has been returned by the xmlhttprequestobject
*/
function replaceCountryMenu() {
	countryMenu = document.getElementById('country');

	// remove old options
	countryMenu.innerHTML = "";

    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
        		// DO NOT use innerHTML for setting the options, it WONT work in Internet Explorer
        		var menuOptions = eval('(' + req.responseText + ')');
				for (var i in menuOptions){
					countryMenu.options[countryMenu.options.length] = new Option(menuOptions[i].label, menuOptions[i].value);
					if(menuOptions[i].selected){
						countryMenu.options[countryMenu.options.length -1].selected = true;
					}
				}

				if(countryMenu.options.length <= 1){
					countryMenu.setAttribute('disabled', 'disabled');
				}else{
					countryMenu.removeAttribute('disabled');
				}
				
				// also replace regions-menu
				loadRegions();
         } else {
            alert("There was a problem retrieving the XML data:\n" + req.statusText);
         }
    }
}