(function($){
	var methods = {
		getLocationFromPoint : function(point,callback){	
			$.get("http://ws.geonames.org/findNearbyPlaceNameJSON",
			{
				lat:point.lat,
				lng:point.lon,
				lang:"it"
				
			},
			function(data){
				
				if(data.hasOwnProperty("status")){
					var loc={"countryName":"Italia","adminCode1":"07","fclName":"city, village,...","countryCode":"IT","lng":12.4839019775391,"fcodeName":"capital of a political entity","distance":"0","toponymName":"Roma","fcl":"P","name":"Roma","fcode":"PPLC","geonameId":3169070,"lat":41.8947384616695,"adminName1":"Lazio","population":2563241};
  					callback(loc);
  					return;
  				}
				
				callback(data.geonames[0]);
			},"json");
  		},
  		getPointFromLocation : function(location,callback) {
  			$.post("http://ws.geonames.org/searchJSON",
  			{
  				q:location  						
  			},
  			function(data){
  				var point={lat:"41.8947384616695",lon:"12.4839019775391"};
  				
  				if(data.hasOwnProperty("status")){
  					callback(point);
  					return;
  				}
  				
  				if(data.totalResultsCount!=0){
  					point.lat=data.geonames[0].lat;
  					point.lon=data.geonames[0].lng;
  				}
  				callback(point);
  			},"json");
  		}
  		
  		
  };
	
	var geonames=function(method,arguments,callback){
		if(methods[method]&&callback&&arguments){      	
	    	methods[method].call(this,arguments,callback);
	    }else{
	      $.trace('Metodo '+method+' non esiste o parametri insufficenti : geonames(metodo,arguments,callback)');
	    }  
	};

  $.fn.geonames=geonames;
  $.geonames=geonames;
  
})(jQuery);
