var oGeo = {
    loading: false,
    submitMemo: '',
	request: function(form, resultDiv, loadingText)
	{
		if (!oGeo.loading) {
			new Ajax.Request('http://opengeo.pl/wp-content/plugins/api-opengeo/api-opengeo.php', {
				method: form.method,
				parameters: $(form).serialize(),
				onLoading: function() {
					oGeo.loading = true;
					if (form.submit) {
						form.submit.disabled = true; // disable submit
						oGeo.submitMemo = form.submit.value;
						form.submit.value = loadingText;
					};
					$(resultDiv).hide();
				},
				onSuccess: function(request) {
					oGeo.loading = false;
					if (form.submit) {
						form.submit.disabled = false; // enable submit
						form.submit.value = oGeo.submitMemo;
						oGeo.submitMemo = '';
					}
					$(resultDiv).removeClassName('error').update(request.responseText).blindDown();
				},
				onFailure: function(request) {
					oGeo.loading = false;
					if (form.submit) {
						form.submit.disabled = false; // enable submit
						form.submit.value = oGeo.submitMemo;
						oGeo.submitMemo = '';
					}
					$(resultDiv).addClassName('error').update(request.responseText).blindDown();
				}
			});
		}
		return false;
	},
	geoMapsRequest: function(form, map, geocoder, loadingText)
	{
		if (!oGeo.loading) {
			new Ajax.Request('http://opengeo.pl/wp-content/plugins/api-opengeo/api-opengeo.php', {
				method: form.method,
				parameters: $(form).serialize(),
				onLoading: function() {
					oGeo.loading = true;
					if (form.submit) {
						form.submit.disabled = true; // disable submit
						oGeo.submitMemo = form.submit.value;
						form.submit.value = loadingText;
					};
				},
				onSuccess: function(request) {
					oGeo.loading = false;
					if (form.submit) {
						form.submit.disabled = false; // enable submit
						form.submit.value = oGeo.submitMemo;
						oGeo.submitMemo = '';
					}
					
					if (geocoder) {
						address = ['Polska'];
						var tmp = request.responseText.split('<strong>');
						c = 4;
						for (i in tmp) {
							numm = tmp[i].indexOf('</strong>');
							if (numm > 0) {
								c = c - 1;
								address[c] = tmp[i].substring(0, numm);
								if (c == 1) break;
							}
						}
						
						geocoder.getLatLng(
							address.join(', '),
							function(point) {
								if (point) {
									if(marker){map.removeOverlay(marker);}
									var marker = new GMarker(point);
									map.panTo(point);
									map.addOverlay(marker);
									marker.openInfoWindowHtml(request.responseText);
									GEvent.addListener(marker, "click", function() {
										marker.openInfoWindowHtml(request.responseText);
									  });
								}
							}
						);
					}
				},
				onFailure: function(request) {
					oGeo.loading = false;
					if (form.submit) {
						form.submit.disabled = false; // enable submit
						form.submit.value = oGeo.submitMemo;
						oGeo.submitMemo = '';
					}
					
					map.openInfoWindow(new GLatLng(55, 17), '<strong>Szukany adres IP nie istnieje w bazie openGeo!</strong><br />Możesz dodać go <a href="/dodaj-adresy-ip-do-bazy/">tutaj</a>.');
				}
			});
		}
		return false;
	}
};