//SETTING UP OUR POPUP
//0 means disabled; 1 means enabled;
var popupStatus = 0;
var popup;
var map; // complex object of type OpenLayers.Map
var selectedFeature=null;
var markersSearchResults;
var languagesDivStatus = 0;

function onPopupClose(evt) {
	if(selectedFeature!=null) {
		controls["selectControl"].unselect(selectedFeature);
	}
}

function fillPopup(response) {
	popup.setContentHTML(response.responseText);	

	$("#updatePricesLink").click(function(){
		popup.updateSize();
		$("#pricesTable").hide();
		$("#updatePricesTable").show();
		$("#updatePricesLink").hide();
		$("#cancelUpdatePricesLink").show();
		$("#applyPricesLink").show();
		$("#historyLink").hide();
	});
	
	$("#cancelUpdatePricesLink").click(function(){
		popup.updateSize();
		$("#pricesTable").show();
		$("#updatePricesTable").hide();
		$("#updatePricesLink").show();
		$("#cancelUpdatePricesLink").hide();
		$("#applyPricesLink").hide();
		$("#historyLink").show();
		cancelModifications();
	});
	
	$("#applyPricesLink").click(function(){
		data = "";
		elements = $(".inputFuel");
		var hasDecimales=true;
		for (var i = 0; i < elements.length; i++) {
			if(elements[i].value != "") {
				if(!elements[i].value.contains(".") && !elements[i].value.contains(",") ) hasDecimales=false;
				data = data + "&" + elements[i].name + "=" + elements[i].value.split(",").join(".");
		  	} 
		}

		// add currency value
		data = data + "&currency=" + currency;
		
		if(hasDecimales==true) {
			$.post("/" + locale + "/map/station/"+ $("#stationId").val() + "/update", data, null, "json");
			onPopupClose(null);
			onFeatureSelect(selectedFeature);
		} else {
			alert(gettext("Warning ! Prices must have decimales."));
		}
	});
		  
	$("#historyLink").click(function(){
		if(hasSvgSupport()) {
			$.post("/" + locale + "/map/station/"+ $("#stationId").val() + "/history", null, function(data) { showSvgChart(data) }, "json");
		} else {
			$.post("/" + locale + "/map/station/"+ $("#stationId").val() + "/history/png", null, function(data) { showPngChart(data) }, "html");
		}
		$("#chart").show();
			
		popup.updateSize();
		popup.panIntoView();
		$("#historyLink").hide();
		$("#hideHistoryLink").show();
	});
	
	$("#hideHistoryLink").click(function(){
		$("#chart").html("");
		$("#chart").hide();
		$("#hideHistoryLink").hide();
		$("#historyLink").show();
		popup.updateSize();
		popup.panIntoView();
	});
	
	$(".inputFuel").keypress(function (e)
		{
			if( e.which!=8 && e.which!=0 && e.which!=46 && e.which!=44 && (e.which<48 || e.which>57))
			{
				return false;
			}
		});
		
	$("#addBookmark").click(function(){
		$.post("/" + locale + "/map/station/"+ $("#stationId").val() + "/bookmark", null, function(data) { checkBookmarkAdded(data) }, "json");
	});
	
	$("#addFuelTypeLink").click(function(){
		$("#addFuelTypeDiv").remove();
		$("body").append("<div class=\"bigPopup\" id=\"addFuelTypeDiv\">" +
					"<div id=\"loadingAddFuelType\"><img src=\"/static/ajax-loading.gif\"/></div>" +
					"<div id=\"listFuelTypes\"></div>" +
				"</div>");
		
		$.post("/" + locale + "/map/station/"+ $("#stationId").val() + "/fuelTypes", function(data) {
			$("#listFuelTypes").html(data);
			$("#loadingAddFuelType").hide();
			
			$("#updateFuelTypes_close").click(function() {
				$("#addFuelTypeDiv").remove();
				$("#loadingAddFuelType").html("");
			});
			
			$("#submitFuelTypes").click(function() {
				data = "";
				elements = $(".fuelTypeCheckbox");
				for (var i = 0; i < elements.length; i++) {
					data = data + "&" + elements[i].id + "=" + elements[i].checked;
				}
				$.post("/" + locale + "/map/station/"+ $("#stationId").val() + "/fuelTypes/update", data , function(data) {
					$("#updateFuelTypes_close").trigger("click");
					onFeatureRefresh(selectedFeature);
				});
			});
			
		}, "html");
	});
}

function hasSvgSupport() {
    return document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#CoreAttribute", "1.1")
}

function showSvgChart(data) {
	
	series = [];
	for (i=0;i<data.series.length;i++) {
		series[i] = { data: data.series[i].data, label: data.series[i].label};
	}
	
	var plot = $.plot($("#chart"),
			 series,
             {
               series: {
                   lines: { show: true },
                   points: { show: true }
               },
               grid: { hoverable: true },
               yaxis: { min: 0 },
               xaxis: {
				   mode: "time",
               timeformat: gettext("DATE_FORMAT_FLOT"),
                   minTickSize: [1, "month"]
               },
               legend: {
            	    show: true,
            	    labelFormatter: null,
            	    noColumns: 4,
            	    position: "sw",
               }
               
             });

	function showTooltip(x, y, contents) {
        $('<div id="tooltip">' + contents + '</div>').css( {
            position: 'absolute',
            display: 'none',
            top: y + 7,
            left: x + 7,
            border: '1px solid #fdd',
            padding: '2px',
            'background-color': '#fee',
            opacity: 0.80,
            'z-index': 10100
        }).appendTo("body").fadeIn(200);
    }
	
	var previousPoint = null;
    $("#chart").bind("plothover", function (event, pos, item) {
        $("#x").text(pos.x.toFixed(2));
        $("#y").text(pos.y.toFixed(2));

        if (item) {
            if (previousPoint != item.datapoint) {
                previousPoint = item.datapoint;
                
                $("#tooltip").remove();
                var x = item.datapoint[0].toFixed(2),
                    y = item.datapoint[1].toFixed(3);

                var date = new Date(item.datapoint[0]);
                showTooltip(item.pageX, item.pageY,
                            item.series.label + " : " + y + "<br/> " + date.toString(gettext("DATE_FORMAT")));
            }
        }
        else {
            $("#tooltip").remove();
            previousPoint = null;
        }
    });
    
    $("#chart").bind("mouseout", function (event, pos, item) {
        $("#tooltip").remove();
        previousPoint = null;
		plot.unhighlight();
    });
}

function showPngChart(data){
	$("#chart").append(data);
}

function checkBookmarkAdded(data){
	if(data.success==true) {
		$("#popupBookmarkResult").text(gettext("This station is now bookmarked."));
	} else {
		$("#popupBookmarkResult").text(gettext("Error occured. Try again later."));
	}
	
	popupBookmarkAdded = new OpenLayers.Popup.FramedCloud("popupBookmarkAdded", 
	 selectedFeature.geometry.getBounds().getCenterLonLat(),
	 null,
	 gettext("This station is now bookmarked."),
	 null, false, null);
	map.addPopup(popupBookmarkAdded);
	
	setTimeout("popupBookmarkAdded.destroy()",3000);
}

function onFeatureSelect(feature) {
	selectedFeature = feature;
	
	if(feature.cluster) {
		feature_id=feature.cluster[0].fid;
	} else {
		feature_id=feature.fid;
	}
	var geom = feature.geometry.clone().transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
	
	var uri = "/" + locale + "/map/station/" + feature_id + "/";
	  
	popup = new OpenLayers.Popup.FramedCloud("popup", 
	 feature.geometry.getBounds().getCenterLonLat(),
	 null,
	 "<img src='/static/ajax-loading.gif'/>",
	 null, true, onPopupClose);
	
	OpenLayers.loadURL(uri, '', this, fillPopup);
	
	popup.minSize = new OpenLayers.Size(550,200);
	feature.popup = popup;
	map.addPopup(popup);
	
	$(".helpcell").tooltip();
}

function onFeatureUnselect(feature) {
	map.removePopup(feature.popup);
	feature.popup.destroy();
	feature.popup = null;
	
	// on supprime la popup d'ajout de type carburant si il en existe une
	$("#addFuelTypeDiv").remove();
	
	// on change le nom de la page car si l'utilisateur arrive d'url de type
	// "tostation", le titre portera le nom de la station
	document.title = gettext("KarbuKoo - Find the cheapest fuel");
}

function onFeatureRefresh(feature) {
	// on supprime la popup active
	map.removePopup(feature.popup);
	feature.popup.destroy();
	
	// on la reouvre
	onFeatureSelect(feature);
}

OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {                
    defaultHandlerOptions: {
        'single': false,
        'double': false,
        'pixelTolerance': 0,
        'stopSingle': false,
        'stopDouble': false
    },

    initialize: function(options) {
        this.handlerOptions = OpenLayers.Util.extend(
            {}, this.defaultHandlerOptions
        );
        OpenLayers.Control.prototype.initialize.apply(
            this, arguments
        ); 
        this.handler = new OpenLayers.Handler.Click(
            this, {
                'click': this.onClick 
            }, this.handlerOptions
        );
    }, 

    onClick: function(evt) {
    	lonlat = map.getLonLatFromViewPortPx(evt.xy).transform(map.getProjectionObject(), new OpenLayers.Projection("EPSG:4326"));;
        
    	eval(this.key + "_callback(" + lonlat.lat + "," + lonlat.lon +")");
    }
});



// Initialise the 'map' object
function init() {
 
	map = new OpenLayers.Map ("map",
		{
			controls:[
				new OpenLayers.Control.Navigation(),
				new OpenLayers.Control.PanZoom(),
				new OpenLayers.Control.Permalink('permalink'),
				new OpenLayers.Control.Attribution(),
				new OpenLayers.Control.MousePosition(),
			],
			
			units: 'm',
			projection: new OpenLayers.Projection("EPSG:900913"),
			displayProjection: new OpenLayers.Projection("EPSG:4326")
		}
	);
	 
	layer = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
	map.addLayer(layer);

	/*
	 * Layer style
	 */
	// we want opaque external graphics and non-opaque internal graphics
	var layer_style = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
	layer_style.fillOpacity = 0.2;
	layer_style.graphicOpacity = 1;
	
	/*
	 * Marker style
	 */
	var markerStyle = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
	markerStyle.externalGraphic = "/static/marker.png";
	markerStyle.pointRadius = 10;
	markerStyle.graphicOpacity = 1;
	markerStyle.graphicWidth = 24;
	markerStyle.graphicHeight = 24;

	var markers = new OpenLayers.Layer.Vector( "Markers", {
		projection: new OpenLayers.Projection("EPSG:4326"),
		strategies: [
			new OpenLayers.Strategy.BBOX(),
			new OpenLayers.Strategy.Cluster({distance: 40, threshold: 3})
		],
		protocol: new OpenLayers.Protocol.HTTP({
			url: "/" + locale + "/map/features/",
			format: new OpenLayers.Format.KML()
		}),
		styleMap: new OpenLayers.StyleMap(markerStyle),
		minScale: 200000,
	});
	
	map.addLayer(markers);
	
	
	markersSearchResults = new OpenLayers.Layer.Markers( "MarkersSearchResults" );
	map.addLayer(markersSearchResults);
	
	controls = {
		"locationClick": new OpenLayers.Control.Click({
		    handlerOptions: {
		        "single": true
		    }
		}),
		"selectControl": new OpenLayers.Control.SelectFeature(markers, {
			onSelect: onFeatureSelect,
			onUnselect: onFeatureUnselect
		})
	};
	
	for(var key in controls) {
        control = controls[key];
        // only to route output here
        control.key = key;
        map.addControl(control);
    }
	
	controls["selectControl"].activate();
	
	try {
		if(toStationLat != "" && toStationLon != "") {
			var lonLat = new OpenLayers.LonLat(toStationLon, toStationLat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
			map.setCenter (lonLat, zoom);
			toStationFlag=true;
		} else {
			var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
			map.setCenter (lonLat, zoom);
			toStationFlag=false;
		}
	} catch (err) {
		var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
		map.setCenter (lonLat, zoom);
		toStationFlag=false;
	}

	// listener sur zoomend pour effacer la popup ouverte après un zoom
	map.events.register("zoomend", map, function() {
		if(selectedFeature != null && selectedFeature.popup != null)
    		onFeatureUnselect(selectedFeature);
	});
	
	markers.events.register("featuresadded", markers, function (event) {
		if(toStationFlag==true) {
			// si le flag est vrai (on arrive pour voir une station particulière
			// depuis un moteur de recherche par exemple)
			// dans ce cas on parcourt les features chargées et on trouve celle
			// qui correspond à LonLat de la station voulue
			for(i=0;i<event.features.length;i++) {
				var toStation_lonLat = new OpenLayers.LonLat(toStationLon, toStationLat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
				
				feature = event.features[i];
				
				if(feature.cluster) {
					for(j=0;j<feature.cluster.length;j++) {
						feature_id=feature.cluster[j].fid;
						
						if(feature_id == toStationId) {
							if(markers.getFeatureById(feature.cluster[j].id) != null) {
								selectControl.select(markers.getFeatureById(feature.cluster[j].id));
							}
							break;
						}
					}
				} else {
					feature_id=feature.fid;
					
					if(feature_id == toStationId) {
						selectControl.select(markers.getFeatureById(feature.id));
						break;
					}
				}
			}
			// apres la premiere verification, on remet le flag a false pour
			// permettre un deplacement libre sur la carte
			toStationFlag=false;
		}
	});
}


// loading popup with jQuery magic!
function loadPopup(){
	// loads popup only if it is disabled
	if(popupStatus==0){
		$("#backgroundPopup").css({
"opacity": "0.7"
		});
		$("#loading").hide();
		$("#backgroundPopup").fadeIn("slow");
		$("#popupLogin").fadeIn("slow");
		popupStatus = 1;
	}
}

// disabling popup with jQuery magic!
function disablePopup(){
	// disables popup only if it is enabled
	if(popupStatus==1){
		$("#backgroundPopup").fadeOut("slow");
		$("#popupLogin").fadeOut("slow");
		popupStatus = 0;
	}
}

// centering popup
function centerLoginPopup(){
	// request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupLogin").height();
	var popupWidth = $("#popupLogin").width();
	// centering
	$("#popupLogin").css({
		"position": "absolute",
		"top": windowHeight/2-popupHeight/2,
		"left": windowWidth/2-popupWidth/2
	});
	// only need force for IE6

	$("#backgroundPopup").css({
		"height": windowHeight
	});

}

function cancelModifications() {
	$(".inputFuel").val("");
}

function checkLoginResult(data) {
	if(data.success==true && data.redirect==true) {
		window.location = "/"
	} else if(data.success==true) {
		is_authenticated="True";
		disablePopup();
		$("#username_span").text(data.username);
		$("#user_div").show();
		$("#anonymous_div").hide();
		onPopupClose(null);
		
		// on centre sur le lieu défini par défaut dans le profil
		if(data.lon != undefined && data.lat != undefined) {
			var lonLat = new OpenLayers.LonLat(data.lon, data.lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
			map.setCenter(lonLat, 14);
		}
		
		// on déselectionne les onglets pour eviter que l'onglet favori
		// reste avec de mauvaises informations
		$("#search_bookmarks_tabs").tabs({collapsible: true,selected: -1});
		
		if(data.welcomeMessage != undefined && !data.welcomeMessage) {
			$("#welcome").hide("slow");
		}
		
	} else {
		$("#submitLogin").show();
		$("#loading").hide();
		
		$("#login_response").show();
		$("#login_response").append('<span class="error">' + data.error + '</span>');
	}
}

function onLoginClick() {
	centerLoginPopup();
	loadPopup();
}

function fillPopupRegister(data) {
	$("#popupRegister").html(data);
	
	$("#cancelRegister").click(function() {
		disableRegisterPopup();
	});
	
	$("#submitRegister").click(function(){
		validateRegisterForm();
	});
}

function validateRegisterForm() {
	$(".error").hide();
	var hasError = false;

	if( $("#id_username").val() == '') {
		$("#id_username").after('<span class="error">' + gettext("Mandatory field") + '</span>');
		hasError = true;
	}
	
	if( $("#id_password1").val() == '') {
		$("#id_password1").after('<span class="error">' + gettext("Mandatory field") + '</span>');
		hasError = true;
	}

	if( $("#id_password2").val() == '') {
		$("#id_password2").after('<span class="error">' + gettext("Mandatory field") + '</span>');
		hasError = true;
	}
	
	if( $("#id_password2").val() != $("#id_password1").val()) {
		$("#id_password2").after('<span class="error">' + gettext("Passwords does not match") + '</span>');
		hasError = true;
	}
	
	if( $("#id_email").val() == '') {
		$("#id_email").after('<span class="error">' + gettext("Mandatory field") + '</span>');
		hasError = true;
	}
	
	if(hasError == false) {
		$("#popupRegister").append("<p class=\"center\"><img src=\"/static/ajax-loading.gif\" alt=\"" + gettext("Loading") + "\" id=\"loadingRegisterPopup\" /></p>");
		
		$.post("/" + locale + "/account/register/", { username: $("#id_username").val(), email: $("#id_email").val(), password1: $("#id_password1").val(), password2: $("#id_password2").val() }, function(data) { checkRegisterResult(data)}, "html");

	}
	return false;
}

function checkRegisterResult(data) {
	$("#popupRegister").html(data);
	
	$("#cancelRegister").click(function() {
		disableRegisterPopup();
	});
	
	$("#submitRegister").click(function() {
		validateRegisterForm();
	});
}

function disableRegisterPopup() {
	$("#popupRegister").hide();
	popupStatus=0;
}

function fillPopupProfile(data) {
	$("#userprofile_div").html(data);
	
	initMapProfile();
	$("#home_lat").focus();
	
	$("#cancelProfile").click(function() {
		disableProfilePopup();
	});
	
	$("#submitProfile").click(function(){
		validateProfileForm();
	});
}

function validateProfileForm() {
	$.post("/" + locale + "/account/profile/save", { home_lat: $("#id_home_lat").val(), home_lon: $("#id_home_lon").val(), language: $("#id_profile_language").val(), currency: $("#id_profile_currency").val(), welcomeMessage: $("#id_welcomeMessage").attr('checked') }, function(data) { disableProfilePopup()});
}

function disableProfilePopup() {
	$("#userprofile_div").hide();
	popupStatus=0;
	
	markersProfile.destroy();
	mapProfile.destroy();
}

function submitSearch() {
	// $.getJSON("http://nominatim.openstreetmap.org/search/?q=" +
	// $("#searchInput").val() +
	// "&format=json&viewbox=-5.44921875,42.01171875,8.437500000000002,51.6796875&json_callback=?",
	// function(data) { showSearchResults(data) });
	var url = "http://nominatim.openstreetmap.org/search/?q=" + $("#searchInput").val() + "&format=json&viewbox=-5.44921875,42.01171875,8.437500000000002,51.6796875";
	
	if ($.browser.msie && window.XDomainRequest) {
		// Use Microsoft XDR
        var xdr = new XDomainRequest();
        xdr.open("get", url);
        xdr.onload = function() {
			var regexp=new RegExp("(\"class\")", "g");
            var text = xdr.responseText.replace(regexp, "\"tag\"");
            showSearchResults(jQuery.parseJSON(text));
        };
        xdr.send();
    } else {
    	$.ajax({
            url: url,
            dataType: 'text',
            success: function(data) {
                    var regexp=new RegExp("(\"class\")", "g");
                    var text = data.replace(regexp, "\"tag\"");
                    showSearchResults(jQuery.parseJSON(text));
            }
    	});
	}
}

function showSearchResults(data) {

	$("#searchResults").remove();
	markersSearchResults.clearMarkers();

	var result_html = "<div id='searchResults'>";

	if(data.length>=1) {
		searchin_classes = {'place':'', 'boundary':'', 'highway':''};
		blacklist_types = {'motorway_junction':''};
	
		result_html += "<ul>";
		for(i=0;i<data.length;i++) {
			if( data[i].tag in searchin_classes && !(data[i].type in blacklist_types)) {
				result_html += "<li><a href='javascript:centerOnSearchResult(" + data[i].lat + "," + data[i].lon + ");'>" + data[i].display_name + "</a></li>";
				
				markersSearchResults.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(data[i].lon, data[i].lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject())));
				
			}
		}
		
		result_html += "</ul>";
	} else if(data.length == 1) {
		centerOnSearchResult(data[0].lat, data[0].lon);
	} else {
		result_html += gettext("No result");
	}
	
	result_html += "<a href='javascript:clearSearchResults()'>" + gettext("Cancel results") + "</a></div>";
	
	$("#search").append(result_html);
}

function centerOnSearchResult(lat, lon) {
	markersSearchResults.clearMarkers();
	var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
	map.setCenter(lonLat, 14);
	markersSearchResults.addMarker(new OpenLayers.Marker(lonLat));
}

function clearSearchResults() {
	markersSearchResults.clearMarkers();
	$("#searchResults").remove();
}

function closeWelcome() {
	$("#welcome").hide("slow");
}

function getBookmarksData(){
	$.get("/account/bookmarks", function(data) { refreshBookmarks(data)}, "json");	
}

function refreshBookmarks(data) {
	$("#bookmarksList").remove();
	$("#updateAllBookmarkslink_div").hide();
	
	var result_html = "<div id='bookmarksList'>";

	if(data.length>=1) {
	
		result_html += "<ul>";
		for(i=0;i<data.length;i++) {
			result_html += "<li><a href='javascript:centerOnBookmark(" + data[i].lat + "," + data[i].lon + ");'>"
			
			if(data[i].name.length>0) result_html += data[i].name;
			else result_html += "<a target=\"_blank\" href=\"http://www.openstreetmap.org/edit?lat=" + data[i].lat + "&lon=" + data[i].lon + "&zoom=18\">" + gettext("Add the name to OpenStreetMap") + "</a>";
			result_html += "</a>";
			
			result_html += "&nbsp;<a href=\"javascript:removeBookmark(" + data[i].id + ");\"><img src=\"/static/trash.png\"></a></li>";
		}
		
		result_html += "</ul>";
		$("#updateAllBookmarkslink_div").show();
	} else {
		if( is_authenticated == "True") {
			result_html += gettext("No bookmark");
		} else {
			result_html += gettext("Register to use bookmarks.");
		}
	}
	result_html += "</div>";
	$("#bookmarks").append(result_html);
}

function centerOnBookmark(lat, lon) {
	var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
	map.setCenter(lonLat, 18);
}

function removeBookmark(station_id){
	$.post("/" + locale + "/map/station/" + station_id +"/removeBookmark", function(data) { getBookmarksData()});	
}

function locationClick_callback(x,y) {
	$("#compareLocation").val("lonlat:" + y + "," + x);
	$("#chooseMapLocation").removeAttr("disabled"); 
}

function submitCompare() {
	request = $("#compareLocation").val();
	if(request.match("^lonlat:-?[0-9]*\.[0-9]*,-?[0-9]*\.[0-9]*$")) {
		$.get("/api/compare/", { lonlat: request.split(":")[1], fuel_type: $("#compareFuelType").val(), format: "json" }, function(data) { showCompareResults(data); });
	} else {
		$.get("/api/compare/", { search: request, fuel_type: $("#compareFuelType").val(), format: "json" }, function(data) { showCompareResults(data); });
	}
		
}

function showCompareResults(data) {
	$("#compareResultsList").remove();
	
	var result_html = "<div id='compareResultsList'>";

	if(data.length>=1) {
	
		result_html += "<ul>";
		for(i=0;i<data.length;i++) {
		  
			var date = new Date(data[i].date.substr(0,4), data[i].date.substr(5,2), data[i].date.substr(8,2));
	//alert(gettext("DATE_FORMAT")):
			result_html += "<li>" + data[i].price + " (" + date.toString(gettext("DATE_FORMAT")) + ") - <a href='javascript:centerOnBookmark(" + data[i].lat + "," + data[i].lon + ");'>"
			
			if(data[i].name.length>0) result_html += data[i].name;
			else result_html += "<a target=\"_blank\" href=\"http://www.openstreetmap.org/edit?lat=" + data[i].lat + "&lon=" + data[i].lon + "&zoom=18\">" + gettext("Add the name to OpenStreetMap") + "</a>";
			result_html += "</a>";
			
			result_html += "</li>";
		}
		
		result_html += "</ul>";
	}	result_html += "</div>";
	$("#compare").append(result_html);
}

$(document).ready(function(){
	if( is_authenticated == "True") {
		
		$("#anonymous_div").hide();
		$("#user_div").show();
	}
	
	$("#popupLoginClose").click(function(){
		disablePopup();
	});
	
	$("#backgroundPopup").click(function(){
		disablePopup();
	});
	
	$(document).keypress(function(e){
		if(e.keyCode==27 && popupStatus==1){
			disablePopup();
			disableRegisterPopup();
			disableProfilePopup();
		}
	});
	
	// show search and bookmarks tabs
	$("#search_bookmarks_tabs").tabs({ collapsible: true, selected: -1});
	$("#search_bookmarks_tabs").tabs().bind("tabsselect",function(event, ui) {
		  if(ui.index==3) {
			  // onglet favori
			  getBookmarksData();
		  }
	} );
	
	$("#registerLink").click(function() {
		$("#popupRegister").html("<img src=\"/static/ajax-loading.gif\" alt=\"" + gettext("Loading") + "\" id=\"loadingRegisterPopup\" />");
		$("#popupRegister").show();
		popupStatus=1;
		$.get("/" + locale + "/account/register", function(data) { fillPopupRegister(data)}, "html");
	});
	
	$("#submitLogin").click(function(){
		$(".error").hide();
		var hasError = false;

		if( $("#username").val() == '') {
			$("#username").after('<span class="error">' + gettext("Mandatory field") + '</span>');
			hasError = true;
		}
		if( $("#password").val() == '') {
			$("#password").after('<span class="error">' + gettext("Mandatory field") + '</span>');
			hasError = true;
		}

		if(hasError == false) {
			$(this).hide();
			$("#loading").show();
			
			$.post("/" + locale + "/account/login", { username: $("#username").val(), password: $("#password").val() }, function(data) { checkLoginResult(data)}, "json");

		}
		return false;

	});
	
	$("#username_span").click(function(){
		$("#userprofile_div").html("<div class=\"loading\"><img src=\"/static/ajax-loading.gif\" alt=\"" + gettext("Loading") + "\" id=\"loadingProfilePopup\"/></div>");
		$("#userprofile_div").show();
		popupStatus=1;
	
		$.get("/" + locale + "/account/profile", function(data) { fillPopupProfile(data)}, "html");
	});
	
	$("#updateAllBookmarksLink").click(function () {
		$("#updateAllBookmarks").show();
		
		$.get("/" + locale + "/account/bookmarks/updateAll", function(data) {
			$("#listBookmarkedStations").html(data);
			$("#loadingAllBookmarks").hide();
			
			$("#updateAllBookmarks_close").click(function() {
				$("#updateAllBookmarks").hide();
				$("#listBookmarkedStations").html("");
			});
			
			$("#submitPricesAllBookmarks").click(function () {
			
				 $("#submitPricesAllBookmarks").attr("disabled","disabled");
			
				// premier parcours des champs pour vérifier s'il ont des
				// décimales
				hasDecimales=true;
				elements = $(".inputFuel");
				for (var j = 0; j < elements.length; j++) {
					if(elements[j].value != "") {
						if(!elements[j].value.contains(".") && !elements[j].value.contains(",")) hasDecimales=false;
				  	} 
				}
				
				// add currency value
				data = data + "&currency=" + currency;
				
				hasError=false;
				// on reparcours la liste des champs pour les insérer en base
				if(hasDecimales==true) {
					for(var i=1;i<=$("#nbBookmarks").val();i++) {
						data = "";
						elements = $("#updateForm_" + i + " .inputFuel");
						for (var j = 0; j < elements.length; j++) {
							if(elements[j].value != "") {
								data = data + "&" + elements[j].name + "=" + elements[i].value.split(",").join(".");
						  	} 
						}
						if(data.length>0)
							$.post("/" + locale + "/map/station/"+ $("#updateForm_" + i + " input[name='stationId']").val() + "/update", data, null, "json");
					}
				} else {
					$("#submitPricesAllBookmarks").removeAttr("disabled");
					hasError=true;
					alert(gettext("Warning ! Prices must have decimales."));
				}
				
				if(!hasError) {
					$("#updateAllBookmarks").hide();
					$("#listBookmarkedStations").html("");
				}
			});
			
			$(".inputFuel").keypress(function (e) {
				if( e.which!=8 && e.which!=0 && e.which!=46 && (e.which<48 || e.which>57))
				{
					return false;
				}
			});
			
		}, "html");
	});
	
	$("#id_currency").selectmenu({width:280, maxHeight: 350, style: 'dropdown'});
	$("#id_language").selectmenu({width:150, style: 'dropdown'});

	// on change explicitement les lignes selected du menu select
	// a supprimer si un jour ca marche mieux au niveau du ui-selectmenu
	// directement
	$("#id_language").val(locale);
	$("#id_currency").val(currency);
	
	$("#id_language").change(function() {
		window.location = "/" + $("#id_language").val();
	});
	
	$("#id_currency").change(function() {
		// change value in dom and javascript
		currency=$("#id_currency").val();
		
		// change value in session
		// the callback check if symbol is received to display it
		// else the currency code will be displayed
		$.post("/i18n/setcurrency", { 'currency': currency}, function(data) {
			if(data.length==1) {
				$(".currency").text(data[0].symbol);
			} else {
				$(".currency").text(currency);
			}
		}, "json");
		
	});
	
	if(!welcomeMessage) {
		$("#welcome").hide();
	}
	
	$("#chooseMapLocation").click(function () {
		controls["locationClick"].activate();
		$("#chooseMapLocation").attr('disabled', 'disabled');
		$("#chooseMapLocation").text(gettext("Click on the map..."));
	});
});


