var _poiItems = new Array();
var _poiList = new Object();

// Fuegt die ausgewaehlten POIs dem POI-Manager hinzu.
// Falls die POIs noch nicht vorhanden sind, werden sie
// vorher noch heruntergeladen.
function showPois(item, channelid) {
	// Haben wir die POIs schon bei uns?
	if(_poiItems.indexOf(item) == -1) {
		downloadPois(item, channelid);

		return;
	}

	var list = _poiList[item];

	// Werden diese POIs schon angezeigt?
	if(list.poiSelected == true)
		return;

	_poimanager.addPois(list, item);

	list.poiSelected = true;
}

// Entfernt die abgewaehlten POIs aus dem POI-Manager.
// Der Parameter "channelid" ist hier nur aus Symmetrie-
// gruenden dabei.
function hidePois(item, channelid) {
	if(_poiItems.indexOf(item) == -1)
		return;

	var list = _poiList[item];

	// Sind diese POIs schon entfernt?
	if(list.poiSelected == false)
		return;

	_poimanager.removePois(item);

	list.poiSelected = false;
}

function downloadPois(item, channelid) {
	var a = new AJAX(_poi_gateway_url, function(response, data) {
		if(response == null) {
			alert('Error loading POIs');
			return;
		}

		//GLog.write(response.length + ' POIs');

		_poiItems.push(data.item);
		_poiList[data.item] = new Array();
		_poiList[data.item].poiSelected = false;

		var poi = null;
		for(var i = 0; i < response.length; i++) {
			poi = new Poi(response[i].POIID, data.channelid, data.item, response[i].LAT, response[i].LONG, response[i].TITLE);

			_poiList[data.item].push(poi);
		}

		showPois(data.item, data.channelid);

		return;
	}, {item:item, channelid:channelid}, 'json');
	a.setParameter('method', 'getPoiList');
	a.setParameter('channelId', channelid);
	a.setParameter('language', _map_language);
	a.send();
}

