//	$Id: lists.js 577 2007-07-04 15:36:35Z thierry $

var	ajaxPrefix = '/ajax/';

function addOption(_s, _v, _i)	//	select, value, id
{
var	o;	//	option

	o = new Option(_v, _i, false);
	try {
		_s.add(o, null);
	} catch(e) {
		_s.add(o);
	}
	return o;
}

function ajaxListUpdate(_p, _l, _i, _s)	//	page, list, id, selection
{
var d, f, i, o, p, r, s;	//	done, first item, id, option, param string, request, select

	try {
		r = new XMLHttpRequest();	// Firefox, Opera 8.0+, Safari
	} catch (e) {	// Internet Explorer
		try {
			r = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				r = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
				alert("Your browser does not support AJAX!");
				return false;
			}
		}
	}

	if(_i==null) {
		i = null;
	} else if(_i.type=='select-one') {
		i = (_i.selectedIndex>=0) ? _i.options[_i.selectedIndex].value : '0';
	} else {
		i = _i;
	}

	p = (i==null) ? '' : '?id='+i;

	s = document.getElementById(_l);
	f = '';
	if(s.length>0) {
		o = s.options[0];
		if(o.value=='0') {
			f = o.text;
		}
	}
	while(s.length>0) {
		s.remove(s.length-1);
	}
	s.size = 0;

	d = 0;
	if(i!='0') {
		addOption(s, 'Loading...', '0');

		r.onreadystatechange = function()
		{
			if(r.readyState==4 && d==0) {	//	check r.status==200
				d++;	//	IE5 fix: do not allow to be called multiple times
				ajaxFillList(s, r.responseText, _s, f);
			}
		}

		r.open('GET', ajaxPrefix + _p + p, true);
		r.send(null);
	} else {
		if(f!='') {
			addOption(s, f, '0');
		}
		s.disabled = true;
	}
}

function ajaxFillList(_s, _t, _d, _f)	//	select, text, default, first item
{
var	a, o, v;	//	array, option, selection, value

	a = eval(_t);
	if(typeof a=='object') {
		_s.disabled = false;
		for(i=0; i<a.length; i++) {
			v = a[i].split(':', 2);
			o = addOption(_s, v[1], v[0]);
			o.selected = (v[0]==_d);
		}
		if(_f!='') {
			_s.options[0].text = _f;
		} else {
			_s.remove(0);
		}
	} else {
		_s.options[0].text = 'Error loading data...';
	}
}
