function createRequestObject() {
	var ro;
	var browser = navigator.appName;
	if (browser == "Microsoft Internet Explorer") {
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		ro = new XMLHttpRequest();
	}
	return ro;
}
var http = createRequestObject();

function sndReq(action) {
	http.open("get", action);
	http.onreadystatechange = handleResponse;
	http.send(null);
}

function handleResponse() {
	if (http.readyState == 4){
		var response = http.responseText;
		// alert (response);
		doRefresh(workAnswer(response));
	}
}

function initRefresh(source) {
	var opt;
	var url = 'index.php?tx_astrainerdb_pi1[action]=ajax&id=' + $('pageid').value + '&L=' + $('langid').value;
	var fields = new Array('country', 'city', 'module', 'language');
	for (var i in fields) {
		opt = $(fields[i]).options;
		url += '&' + fields[i] + '=' + encodeURIComponent(opt[opt.selectedIndex].value);
	}
	url += '&source='+source.id;
	sndReq(url);
}
function $(id) {
	return document.getElementById(id);
}
function removeAllEntries(field) {
	$(field).options.length = 1; // keep first entry
}
function addEntry(field, value, label, defaultValue) {
	var newEntry = new Option(label, value, false, (value==defaultValue));
	$(field).options[$(field).options.length] = newEntry;
}

function workAnswer(answer) {
	var rows = answer.split("\n");
	var result = new Array();
	var curIndex = 0;
	for (var i in rows) {
		var row = rows[i];
		if (row.length > 0) {
			if (row.indexOf('|') == -1) {
				curIndex = row;
				result[curIndex] = new Array();
			} else if (curIndex != 0) {
				result[curIndex][result[curIndex].length] = row.split('|');
			}
		}
	}
	return result;
}
		

function doRefresh(values) {
	for (var i in values) {
		refreshField(i, values[i]);
	}
}
function refreshField(field, newOptions) {
	var defaultValue = $(field).options[$(field).options.selectedIndex].value;
	removeAllEntries(field);
	for (var i in newOptions) {
		addEntry(field, newOptions[i][0], newOptions[i][1], defaultValue);
	}
}

