var jobsearchXmlHttp = null;

function jobsearchCreateXmlHttp() {
	try {
		jobsearchXmlHttp = new XMLHttpRequest();
	} catch (e) {
		try {
			jobsearchXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) { 
			return false;
		}
 	}
	return true;
}

function jobsearchChange(field) {
	var getValue = function(field) {
		if( document.getElementById(field).options )
			return document.getElementById(field).options[document.getElementById(field).selectedIndex].value;
		else
			return document.getElementById(field).value;
	}

	if( !jobsearchCreateXmlHttp || ! jobsearchCreateXmlHttp() ) { // If no request object is available, submit form
		if( field ) return ! field.form.submit();
		else return true;
	}

	if ( field ) { // If a field has been changed, reset its dependencies
		document.getElementById("jobsearchCompany").disabled = true;
		document.getElementById("jobsearchCountry").disabled = true;
		document.getElementById("jobsearchFunction").disabled = true;
		
		var company = getValue("jobsearchCompany");
		var country = getValue("jobsearchCountry");
		var currentFunction = getValue("jobsearchFunction");
		
		jobsearchXmlHttp.onreadystatechange = function () { // Set callback hook to request object
			if( jobsearchXmlHttp.readyState != 4 ) return true; // Response state is not ready yet
			if( jobsearchXmlHttp.status != 200 ) return true; // Response status is invalid
			//alert(jobsearchXmlHttp.responseText); 
			var responseXml = jobsearchXmlHttp.responseXML;
			if( ! responseXml ) return false; // Response representation is not available
			try {
				responseXml.normalizeDocument();
			} catch( e ){ ; }
			if( ! responseXml.documentElement ) return false; // XML representation is invalid
			try {
				for( var i = 0; i < jobsearchFields.length; i++ ) {
					var field = jobsearchFields[i];
					var selectionBox = document.getElementById( field[0] );
					var nodeList = responseXml.getElementsByTagName( field[1] );
					if( nodeList && selectionBox) {
						dseClearSelect(selectionBox);
						dseAddOption(selectionBox, field[2], "", false, true);
						for( var j = 0; j < nodeList.length; j++ ) {
							var text = nodeList[j].firstChild.nodeValue;
							var value = nodeList[j].getAttribute('value');
							var disabled = (nodeList[j].getAttribute("group") == "group");
							var selected = (nodeList[j].getAttribute("selected") == "selected");
							dseAddOption(selectionBox, text, value, disabled, selected);
						}
					}
					selectionBox.disabled = false;
     			}
			} catch ( e ) { ; }
			return true;
		}
		jobsearchXmlHttp.open("GET", jobsearchAjaxURL + "&mode=ajax&country="+escape(country)+"&company="+escape(company)+"&function="+escape(currentFunction)); // Create parameterized XML request address
		jobsearchXmlHttp.send(null); // Send XML request
		return false;
 	}
	return false;
}

function jobsearchSubmit() {
	var form = document.getElementById("jobsearchForm");
	if (form) form.submit();
}
function jobsearchReset() {
	var form = document.getElementById("jobsearchForm");
	if (form) form.reset();
}

//disabled options
function dseAddOptionW3C(select, text, value, disabled, selected) {
	var option = document.createElement("option");
	option.value = value;
	if (disabled) option.className = "FormOptionDisabled";
	option.text = text;
	option.disabled = disabled;
	if (selected) option.selected = true;
	select.add(option, null);
	if (selected) select.selectedIndex = select.length -1;
	return select.length - 1;
}

function dseAddOptionIE6(select, text, value, disabled, selected) {
	var option = null;
	if (disabled) {
		option = document.createElement("optGroup");
		if (disabled) option.className = "FormOptionDisabled";
		option.label = text;
	} else {
		option = document.createElement("option");
		option.appendChild(document.createTextNode(text));
		if (disabled) option.className = "FormOptionDisabled";
		option.value = value;
		 /* IE6 preSet Hack */
		if (dseIE6First && selected) option.selected = true;
	}
	select.appendChild(option);
	if (selected) select.selectedIndex = select.length -1;
	return select.length - 1;
}

/*  IE implementation (not showing disabled options) */
function dseAddOptionIE(select, text, value, disabled, selected) {
	if (disabled) return -1;
	var option = document.createElement("option");
	option.value = value;
	if (disabled) option.className = "FormOptionDisabled";
	option.text = text;
	if (selected) option.selected = true;
	select.add(option);
	if (selected) select.selectedIndex = select.length -1;
	return select.length - 1;
}

function dseClearSelectW3C(select) {
	select.length = 0;
	dseClearSelectIE6(select);
}

function dseClearSelectIE6(select) {
	while (select.firstChild) select.removeChild(select.firstChild);            
}

function dseInit() {
	dseClearSelect = dseClearSelectW3C;
	dseAddOption = dseAddOptionW3C;
	if (window.opera) {
		/*  alert("Opera") // works with this version for W3c */
	} else if (document.all) {
		if (navigator.appVersion.indexOf("MSIE") > -1 && navigator.appVersion.indexOf("MSIE 5") == -1 && navigator.appVersion.indexOf("MSIE 4") == -1) {
			/* alert("not IE 4/IE 5") // needs workaround with &lt;optGroup&gt;-tags */
			dseAddOption = dseAddOptionIE6;
			dseClearSelect = dseClearSelectIE6;
		} else {
			/* alert("IE 5") // doesn't support disabled options */
			dseAddOption = dseAddOptionIE;
		}
	} else if (navigator.appVersion.indexOf("KHTML") > -1) {
		/*  alert("KHTML") // same as IE */
		dseAddOption = dseAddOptionIE; 
	} else {
		/*  alert("w3c") // GECKO */
	}
}

var dseAddOption;
var dseIE6First = false;


