var name;
var url;
var address;
var point;
var geocoder;

function searchLocation(address) {
	string = 'Poland, '+address
	geocoder.getLatLng(string, function(latlng) {
		if (!latlng) {
			alert(string + ' not found');
			return false;
		} else {
			setStationMap(latlng);
			locate(latlng);
			return true;
		}
	});
}

function locate(latlng) {
	new Ajax.Request(root+"/stations/locate/"+id, {
		method: 'post',
		parameters: {lat: latlng.lat(), lng: latlng.lng()},
	});
}

function setStationMap(point) {
	map.setCenter(point, 12);
	var marker = createMarker(point, name, url, address, fuels);
	map.addOverlay(marker);
}

function getStation(sid) {
	var searchUrl = root+'/stations/getLocation/'+sid;

	GDownloadUrl(searchUrl, function(data) {
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName('marker');

		if (markers.length == 0) {
			return false;
		}

		name = markers[0].getAttribute('name');
		url = markers[0].getAttribute('url');
		address = markers[0].getAttribute('address');
		point = new GLatLng(parseFloat(markers[0].getAttribute('lat')), parseFloat(markers[0].getAttribute('lng')));

		if (markers[0].getAttribute('lat') == '0.000000') {
			searchLocation(address);
		}

		var fs = markers[0].getElementsByTagName('fuel');
		var fuels = new Array();
		if (fs.length > 0) {
			for (var k = 0; k < fs.length; k++) {
				price = fs[k].getAttribute('price');
				if (price) {
					fuels[k] = fs[k].getAttribute('name')+' - '+fs[k].getAttribute('price')+' zł';
				} else {
					fuels[k] = fs[k].getAttribute('name');
				}
			}
		}

		map.setCenter(point, 12);

		var marker = createMarker(point, name, url, address, fuels);
		map.addOverlay(marker);

		return true;
	});
}

function createMarker(point, name, url, address, fuels) {
	var marker = new GMarker(point);
	var html = '<h3><a href="'+root+url+'">' + name + '</a></h3><p><address>' + address + '</address></p><p><strong>Oferuje:</strong></p>';
	if (fuels) {
		html = html+'<ul><li>';
		html = html+fuels.join('</li><li>');
		html = html+'</li></ul>';
		html = html+'<br /><br />';
	}
	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
	});
	return marker;
}
