window.addEvent('domready', function() {
	var _f;
	geoloc(getNearestOfficine);

	function geoloc(f) {
		if(navigator.geolocation) {
			navigator.geolocation.getCurrentPosition(
				function(position) {
					if(position && position.coords) {
						f(position.coords);
					} else {
						geolocip(f)
					}
				},
				function(error) {
					geolocip(f)
				}
			);
		} else if(google.gears) {
			var geo = google.gears.factory.create('beta.geolocation');
			geo.getCurrentPosition(
				function(position) {
					if(position) {
						f(position);
					} else {
						geolocip(f)
					}
				},
				function() {
					geolocip(f)
				}
			);
		} else {
			geolocip(f);
		}
	}

	function httpRequest() {
		var http_request = null;
		if (window.XMLHttpRequest) { // Mozilla, Safari, ...
	    	http_request = new XMLHttpRequest();
		    if (http_request.overrideMimeType) http_request.overrideMimeType('text/xml');
		} else if (window.ActiveXObject) { // IE
			try {
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					http_request = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
		}
		return http_request;
	}

	function doit() {
		ok1 = false;
		if(req.readyState == 4) {
			var rep = eval(req.responseText);
			if(rep) {
				_f({latitude:rep[5], longitude:rep[6], city:rep[3]+' ('+rep[1]+')'});
			} else {
				_f(false);
			}
		}
	}
	function geolocip(f) {
		_f = f;
		req = httpRequest();
		req.onreadystatechange = doit;
		req.open('GET', 'index.php?option=com_pharmacie&controller=controller&task=geolocByIp&format=raw', true);
		req.send(null);
	}

	function getNearestOfficine(coords){
		if (coords){
			var lat = coords.latitude;
			var lng = coords.longitude;

			var form = new Request({
				url: 'index.php?option=com_pharmacie&controller=controller&task=nearestOfficine&format=raw',
				method : 'post',
				data : '&lat='+lat+'&lng='+lng,
				async : true,
				onComplete : function(responseText, reponseXML){
					var result = JSON.decode(responseText);
					var bloc_geoloc = $('geo');
					if(result && bloc_geoloc){
						var h4 			= new Element('h4',{'text':'Par géolocalisation'});
						var ul_scroll 	= new Element('ul');
						var div_scroll 	= new Element('div',{'class':'scroll','id':'scrool-geo'});
						var a_no_giro	= new Element('a',{'href':$('recherche_pharmacie').get('action')+'?lat='+lat+'&lng='+lng+'&giropharm=0','class':'','text':'Liste des pharmacies n\'appartenant pas au groupement Giropharm'})
						result.each(function (officine){
							var a_title				= null;
							var a_site 				= null;
							var officine_tel 		= null;
							var officine_li 		= new Element('li');
							var officine_dl 		= new Element('dl');
							var officine_dt			= new Element('dt');
							var officine_title 		= new Element('span',{'text':officine.nom})
							var officine_dd_adresse	= new Element('dd');
							var officine_dd_adresse1= new Element('dd');
							var officine_dd_tel		= new Element('dd');
							var officine_adresse 	= new Element('span',{'text':officine.adresse})
							var officine_adresse1 	= new Element('span',{'text':officine.cp+' '+officine.ville})
							if (!officine.mail)
								officine_tel= new Element('span',{'text':'tél: '+officine.tel})
							else
								officine_tel = new Element('span',{'text':'tél: '+officine.tel+' / '+officine.mail})

							if (officine.site){
								a_title = new Element('a',{'class':'title','href':officine.site});
								a_site = new Element('a',{'class':'decouvrir','href':officine.site,'text':'D&eacute;couvrir la pharmacie'});
							}
							if (a_title!=null){
								officine_title.inject(a_title);
								a_title.inject(officine_dt);
							}else{
								officine_title.inject(officine_dt);
							}
							officine_dt.inject(officine_dl);
							officine_adresse.inject(officine_dd_adresse);
							officine_dd_adresse.inject(officine_dl);
							officine_adresse1.inject(officine_dd_adresse1);
							officine_dd_adresse1.inject(officine_dl);
							officine_tel.inject(officine_dd_tel);
							officine_dd_tel.inject(officine_dl);
							officine_dl.inject(officine_li);
							officine_li.inject(ul_scroll);
						});

						h4.inject(bloc_geoloc)
						ul_scroll.inject(div_scroll)
						a_no_giro.inject(div_scroll)
						div_scroll.inject(bloc_geoloc)
						div_scroll.setStyle('overflow','auto');
						var news_list_Scroll = new MooScroll({selector:'#scrool-geo'});
					}
				}
			});
			form.send();
		}
	}

});


