diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationController.java
index 64546df01804d4d83f8ebcccbc834c767d8104d8..9755e849f3ab0785c959a27f915891ad86776e52 100755
--- a/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationController.java
+++ b/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationController.java
@@ -21,6 +21,8 @@ package no.nibio.vips.logic.controller.servlet;
 
 import java.io.File;
 import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Collections;
@@ -105,6 +107,48 @@ public class ObservationController extends HttpServlet {
                 Integer pestOrganismId;
                 Set<Integer> organizationGroupId;
                 Boolean viewOthersObservations;
+                
+                // Default period is current season
+                Calendar cal = Calendar.getInstance();
+                cal.setTime(SystemTime.getSystemTime());
+                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                Date timeOfObservationFrom;
+                Date timeOfObservationTo;
+                Boolean userDefinedFrom = false;
+                Boolean userDefinedTo = false;
+                try
+                {
+                    timeOfObservationFrom = format.parse(request.getParameter("timeOfObservationFrom"));
+                    userDefinedFrom = true;
+                }
+                catch(NullPointerException | ParseException ex)
+                {
+                    cal.set(cal.get(Calendar.YEAR), Calendar.JANUARY, 1, 0, 0, 0);
+                    timeOfObservationFrom = cal.getTime();
+                }
+                try
+                {
+                    timeOfObservationTo = format.parse(request.getParameter("timeOfObservationTo"));
+                    userDefinedTo = true;
+                }
+                catch(NullPointerException | ParseException ex)
+                {
+                    cal.set(cal.get(Calendar.YEAR), Calendar.DECEMBER, 31, 23, 59, 59);
+                    timeOfObservationTo = cal.getTime();
+                }
+                
+                // If only one date is set, the unset date should not limit the data set
+                if(!userDefinedFrom && userDefinedTo)
+                {
+                    cal.set(Calendar.YEAR, cal.get(Calendar.YEAR) - 100);
+                    timeOfObservationFrom = cal.getTime();
+                }
+                if(userDefinedFrom && !userDefinedTo)
+                {
+                    cal.set(Calendar.YEAR, cal.get(Calendar.YEAR) + 100);
+                    timeOfObservationTo = cal.getTime();
+                }
+                
                 try 
                 {
                     statusTypeId = request.getParameter("statusTypeId") != null ? Integer.valueOf(request.getParameter("statusTypeId")) : -1;
@@ -129,18 +173,18 @@ public class ObservationController extends HttpServlet {
                     viewOthersObservations = false;
                     organizationGroupId = null;
                 }
-
+                
                 // First: Get observations for organization or user
                 if(viewOthersObservations && SessionControllerGetter.getUserBean().authorizeUser(user, 
                         VipsLogicRole.OBSERVATION_AUTHORITY, 
                         VipsLogicRole.ORGANIZATION_ADMINISTRATOR, 
                         VipsLogicRole.SUPERUSER))
                 {
-                    observations = SessionControllerGetter.getObservationBean().getObservations(user.getOrganizationId().getOrganizationId());
+                    observations = SessionControllerGetter.getObservationBean().getObservations(user.getOrganizationId().getOrganizationId(), timeOfObservationFrom, timeOfObservationTo);
                 }
                 else 
                 {
-                    observations = SessionControllerGetter.getObservationBean().getObservationsForUser(user);
+                    observations = SessionControllerGetter.getObservationBean().getObservationsForUser(user, timeOfObservationFrom, timeOfObservationTo);
                 }
                 
                 // Then: Filter on other criteria
@@ -191,6 +235,8 @@ public class ObservationController extends HttpServlet {
                 request.setAttribute("shortcuts", shortcuts);
                 request.setAttribute("allPests", SessionControllerGetter.getOrganismBean().sortOrganismsByLocalName(allPests, SessionLocaleUtil.getCurrentLocale(request).getLanguage()));
                 request.setAttribute("hierarchyCategories", SessionControllerGetter.getOrganismBean().getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request)));
+                request.setAttribute("timeOfObservationFrom", userDefinedFrom ? timeOfObservationFrom : null);
+                request.setAttribute("timeOfObservationTo", userDefinedTo ? timeOfObservationTo : null);
                 request.setAttribute("selectedPestOrganismId", pestOrganismId);
                 request.setAttribute("selectedStatusTypeId", statusTypeId);
                 request.setAttribute("viewOthersObservations",viewOthersObservations);
diff --git a/src/main/java/no/nibio/vips/logic/controller/session/ObservationBean.java b/src/main/java/no/nibio/vips/logic/controller/session/ObservationBean.java
index ba2bd2dac38a4f1b00752b80d5cfb63d3d0994c8..0c72eaadb74fa921b5fc523267cf9518a82596d2 100755
--- a/src/main/java/no/nibio/vips/logic/controller/session/ObservationBean.java
+++ b/src/main/java/no/nibio/vips/logic/controller/session/ObservationBean.java
@@ -78,6 +78,22 @@ public class ObservationBean {
         return observations;
     }
     
+    public List<Observation> getObservations(Integer organizationId, Date periodStart, Date periodEnd)
+    {
+        Organization organization = em.find(Organization.class,organizationId);
+        List<Observation> observations = em.createNamedQuery("Observation.findByOrganizationIdAndPeriod")
+                .setParameter("organizationId", organization)
+                .setParameter("start", periodStart)
+                .setParameter("end", periodEnd)
+                .getResultList();
+        
+        observations = this.getObservationsWithGeoInfo(observations);
+        observations = this.getObservationsWithLocations(observations);
+        observations = this.getObservationsWithObservers(observations);
+        
+        return observations;
+    }
+    
     public List<Observation> getObservations(Integer organizationId, Integer statusTypeId)
     {
         Organization organization= em.find(Organization.class, organizationId);
@@ -105,6 +121,20 @@ public class ObservationBean {
         return retVal;
     }
     
+    public List<Observation> getObservationsForUser(VipsLogicUser user, Date periodStart, Date periodEnd)
+    {
+        List<Observation> retVal = this.getObservationsWithGeoInfo(em.createNamedQuery("Observation.findByUserIdAndPeriod")
+                .setParameter("userId", user.getUserId())
+                .setParameter("start", periodStart)
+                .setParameter("end", periodEnd)
+                .getResultList());
+        
+        retVal = this.getObservationsWithLocations(retVal);
+        retVal = this.getObservationsWithObservers(retVal);
+        
+        return retVal;
+    }
+    
     public List<Observation> getObservationsForUser(VipsLogicUser user, Integer statusTypeId)
     {
         List<Observation> retVal = this.getObservationsWithGeoInfo(em.createNamedQuery("Observation.findByUserIdAndStatusTypeId")
diff --git a/src/main/java/no/nibio/vips/logic/entity/Observation.java b/src/main/java/no/nibio/vips/logic/entity/Observation.java
index 110984161a49fc3fc6c2d4163bb00fc0c4dc4b4c..78b386dc1e2f0ee93f9ad83f1c9b340523a03267 100755
--- a/src/main/java/no/nibio/vips/logic/entity/Observation.java
+++ b/src/main/java/no/nibio/vips/logic/entity/Observation.java
@@ -64,9 +64,11 @@ import org.hibernate.annotations.TypeDefs;
     @NamedQuery(name = "Observation.findAll", query = "SELECT o FROM Observation o"),
     @NamedQuery(name = "Observation.findByObservationId", query = "SELECT o FROM Observation o WHERE o.observationId = :observationId"),
     @NamedQuery(name = "Observation.findByUserId", query = "SELECT o FROM Observation o WHERE o.userId IN(:userId)"),
+    @NamedQuery(name = "Observation.findByUserIdAndPeriod", query = "SELECT o FROM Observation o WHERE o.timeOfObservation BETWEEN :start AND :end AND o.userId IN(:userId)"),
     @NamedQuery(name = "Observation.findByUserIdAndStatusTypeId", query = "SELECT o FROM Observation o WHERE o.userId IN(:userId) AND o.statusTypeId= :statusTypeId"),
     @NamedQuery(name = "Observation.findByUserIdAndOrganism", query = "SELECT o FROM Observation o WHERE o.userId IN(:userId) AND o.organism =  :organism"),
     @NamedQuery(name = "Observation.findByOrganizationId", query = "SELECT o FROM Observation o WHERE o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR  v.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId))"),
+    @NamedQuery(name = "Observation.findByOrganizationIdAndPeriod", query = "SELECT o FROM Observation o WHERE o.timeOfObservation BETWEEN :start AND :end AND o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR  v.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId))"),
     @NamedQuery(name = "Observation.findByOrganizationIdAndStatusTypeId", query = "SELECT o FROM Observation o WHERE o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR  v.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) AND o.statusTypeId= :statusTypeId"),
     @NamedQuery(name = "Observation.findByOrganizationIdAndStatusTypeIdAndBroadcastMessage", query = "SELECT o FROM Observation o WHERE o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR  v.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) AND o.statusTypeId= :statusTypeId AND o.broadcastMessage IS TRUE"),
     @NamedQuery(name = "Observation.findByOrganizationIdAndStatusTypeIdAndBroadcastMessageAndPeriod", query = "SELECT o FROM Observation o WHERE o.timeOfObservation BETWEEN :start AND :end AND o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR  v.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) AND o.statusTypeId= :statusTypeId AND o.broadcastMessage IS TRUE"),
diff --git a/src/main/webapp/templates/observationList.ftl b/src/main/webapp/templates/observationList.ftl
index 11aab27f5966f320775ec4c1b96653d31c262139..52594948cb63419d846366bc70ace2a3b9d58413 100755
--- a/src/main/webapp/templates/observationList.ftl
+++ b/src/main/webapp/templates/observationList.ftl
@@ -21,20 +21,32 @@
 </#macro>
 <#macro custom_css>
 	<link href="/css/3rdparty/chosen.min.css" rel="stylesheet" />
+        <link rel="stylesheet" type="text/css" href="/css/3rdparty/jquery.datetimepicker.css"/>
 </#macro>
-        <#macro custom_js>
+<#macro custom_js>
 	<script type="text/javascript" src="/js/3rdparty/chosen.jquery.min.js"></script>
+        <script type="text/javascript" src="/js/3rdparty/jquery.datetimepicker.js"></script>
+        <script type="text/javascript" src="/js/3rdparty/modernizr_custom.js"></script>
 	<script type="text/javascript">
 		$(document).ready( function() {
-			// Activating chosen plugin
-			$(".chosen-select").chosen();
+                    // Make sure that there is a date picker present for HTML5 
+                    // date input fields
+                    if (!Modernizr.inputtypes.date) {
+                        $('input[type=date]').datetimepicker({
+                                    timepicker: false,
+                                    lang:"no",
+                                    dayOfWeekStart: 1,
+                                    format: "Y-m-d"
+                            });
+                    }
+                    // Activating chosen plugin
+                    $(".chosen-select").chosen();
 		});
 	</script>
 </#macro>
 <#macro page_contents>
 <div class="singleBlockContainer">
         <h1>${i18nBundle.observations}</h1>
-        <p>TODO: Add map and filter for time</p>
         <#if messageKey?has_content>
 		<div class="alert alert-success">${i18nBundle(messageKey)}</div>
 	</#if>
@@ -67,10 +79,10 @@
                     </select>
                 </div>
                 <div class="form-group">
-                    <input type="date" class="form-control" name="timeOfObservationFrom" value="" placeholder="Dato fra"/>
+                    <input type="date" class="form-control" name="timeOfObservationFrom" value="${(timeOfObservationFrom?date)!""}" placeholder="${i18nBundle.dateStart}"/>
                 </div> &nbsp;&ndash;&nbsp;
                 <div class="form-group">
-                    <input type="date" class="form-control" name="timeOfObservationTo" value="" placeholder="Dato til"/>
+                    <input type="date" class="form-control" name="timeOfObservationTo" value="${(timeOfObservationTo?date)!""}" placeholder="${i18nBundle.dateEnd}"/>
                 </div>
             </div>
             <div class="form-inline">