var aRequestedFieldValues = new Array();
function UpdateDependentField(sFieldName, sParentValue) {
	try {
		elDependentField = document.getElementsByName(sFieldName)[0];
		if (elDependentField == undefined || elDependentField.type != 'select-one') return;
		if (sParentValue == '') {
			ResetField(elDependentField);
			return;
		}
		aDependentFieldValues = GetFieldValues(sFieldName, sParentValue);
		SetFieldValues(elDependentField, aDependentFieldValues);
		elDependentField.disabled = sParentValue == '';
		if (elDependentField.onchange != undefined) elDependentField.onchange(elDependentField.value);
	}catch(err) {
		if (err == 1 && aAllowAjaxTo[sFieldName]) { //try AJAX in first time
			ResetField(elDependentField);
			LoadFieldValues(sFieldName, sParentValue);
			return;
		} else if (err == 2 && aAllowAjaxTo[sFieldName] && !aRequestedFieldValues[sFieldName+sParentValue]) { //try AJAX again
			ResetField(elDependentField);
			LoadFieldValues(sFieldName, sParentValue);
			return;
		}
		ResetField(elDependentField);
		return;
	}
}
function GetFieldValues(sFieldName, sPart) {
	if (aDFValues[sFieldName] == undefined) throw 1; //wasn't loaded at all
	if (aDFValues[sFieldName][sPart] == undefined) throw 2; //was already loading something
	if (aDFValues[sFieldName][sPart]['value'].length == 0) throw 3; //loaded zero set

	return aDFValues[sFieldName][sPart];
}
function SetFieldValues(elField, aFieldValues) {
	elField.innerHTML = '';

	if (sSelectIt.length) elField.options.add(new Option(sSelectIt, '', true, false));
	for (var i = 0; i < aFieldValues['value'].length; i++)
		elField.options.add(new Option(aFieldValues['name'][i], aFieldValues['value'][i], true, false));
}
function ResetField(elField){
	elField.innerHTML = '';
	if (elField.onchange != undefined) elField.onchange('');
	elField.disabled = true;
}
function LoadFieldValues(sFieldName, sParentValue) {
	jQuery.getScript("alv/dfields/df_values.php?field_name="+sFieldName+'&field_part='+sParentValue, function(){
		UpdateDependentField(sFieldName, sParentValue);
	});
	aRequestedFieldValues[sFieldName+sParentValue] = true;
}
$(document).ready(function() {
	if (bRunOnReadyHandler) {
		for (var i = 0; i < aDFParentFields.length; i++) {
			el = document.getElementsByName(aDFParentFields[i]+'[0]')[0];
			if (el != undefined) { el.value = ''; el.onchange(''); }
			el = document.getElementsByName(aDFParentFields[i]+'[1]')[0];
			if (el != undefined) { el.value = ''; el.onchange(''); }
		}
	}
});