diff --git a/aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html b/aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html
index e23e103fca8d7496e7faec521a05645b3b098764..d0761f8102f60e1ea899a8b1ba1d11c1e2402535 100644
--- a/aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html
+++ b/aleksis/apps/alsijil/templates/alsijil/class_register/week_view.html
@@ -11,6 +11,9 @@
 {% endblock %}
 
 {% block content %}
+  <script type="text/javascript" src="{% static "js/helper.js" %}"></script>
+  {{ week_select|json_script:"week_select" }}
+  <script type="text/javascript" src="{% static "js/chronos/week_select.js" %}"></script>
   <div class="row">
     {% if group %}
       <div class="col s12 m2 push-m10 l1 push-l11">
@@ -30,7 +33,11 @@
     </div>
   </div>
 
-  <h4>{% blocktrans with el=el week=week.week %}CW {{ week }}: {{ instance }}{% endblocktrans %} </h4>
+
+  <div class="row">
+    <h4 class="col s12 m6">{% blocktrans with el=el week=week.week %}CW {{ week }}: {{ instance }}{% endblocktrans %} </h4>
+    {% include "chronos/partials/week_select.html" with wanted_week=week %}
+  </div>
 
   {% if lesson_periods %}
     <div class="row">
diff --git a/aleksis/apps/alsijil/urls.py b/aleksis/apps/alsijil/urls.py
index 3f68362598ec4c8e624f0d5df42e3d028de7ceb9..7e7139c6c26fe7aa600b6b311b55ae731389c13b 100644
--- a/aleksis/apps/alsijil/urls.py
+++ b/aleksis/apps/alsijil/urls.py
@@ -9,9 +9,15 @@ urlpatterns = [
         views.lesson,
         name="lesson_by_week_and_period",
     ),
-    path("week", views.week_view, name="week_view"),
-    path("week/<int:year>/<int:week>", views.week_view, name="week_view_by_week"),
+    path("week/", views.week_view, name="week_view"),
+    path("week/<int:year>/<int:week>/", views.week_view, name="week_view_by_week"),
+    path("week/year/cw/", views.week_view, name="week_view_placeholders"),
     path("week/<str:type_>/<int:id_>/", views.week_view, name="week_view"),
+    path(
+        "week/year/cw/<str:type_>/<int:id_>/",
+        views.week_view,
+        name="week_view_placeholders",
+    ),
     path(
         "week/<int:year>/<int:week>/<str:type_>/<int:id_>/",
         views.week_view,
diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index c5213e5f23aeade67cc70c7dde5471eb32b21696..9c90ede28c1db9d34a2e7f1bff53e89cb53e3757 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -2,21 +2,21 @@ from datetime import date, datetime, timedelta
 from typing import Optional
 
 from django.core.exceptions import PermissionDenied
-from django.db.models import Count, Exists, F, OuterRef, Q, Subquery, Sum
+from django.db.models import Count, Exists, OuterRef, Q, Subquery, Sum
 from django.http import Http404, HttpRequest, HttpResponse, HttpResponseNotFound
 from django.shortcuts import get_object_or_404, redirect, render
 from django.urls import reverse, reverse_lazy
 from django.utils.translation import ugettext as _
 
 from calendarweek import CalendarWeek
-from django_tables2 import RequestConfig, SingleTableView
+from django_tables2 import SingleTableView
 from reversion.views import RevisionMixin
 from rules.contrib.views import PermissionRequiredMixin
 
 from aleksis.apps.chronos.managers import TimetableType
-from aleksis.apps.chronos.models import LessonPeriod, LessonSubstitution
+from aleksis.apps.chronos.models import LessonPeriod
 from aleksis.apps.chronos.util.chronos_helpers import get_el_by_pk
-from aleksis.apps.chronos.util.date import week_weekday_to_date
+from aleksis.apps.chronos.util.date import get_weeks_for_year, week_weekday_to_date
 from aleksis.core.mixins import AdvancedCreateView, AdvancedDeleteView, AdvancedEditView
 from aleksis.core.models import Group, Person, SchoolTerm
 from aleksis.core.util import messages
@@ -296,6 +296,7 @@ def week_view(
 
     context["extra_marks"] = ExtraMark.objects.all()
     context["week"] = wanted_week
+    context["weeks"] = get_weeks_for_year(year=wanted_week.year)
     context["lesson_periods"] = lesson_periods
     context["persons"] = persons
     context["group"] = group
@@ -304,14 +305,21 @@ def week_view(
 
     week_prev = wanted_week - 1
     week_next = wanted_week + 1
-    context["url_prev"] = "%s?%s" % (
-        reverse("week_view_by_week", args=[week_prev.year, week_prev.week]),
-        request.GET.urlencode(),
-    )
-    context["url_next"] = "%s?%s" % (
-        reverse("week_view_by_week", args=[week_next.year, week_next.week]),
-        request.GET.urlencode(),
-    )
+    args_prev = [week_prev.year, week_prev.week]
+    args_next = [week_next.year, week_next.week]
+    args_dest = []
+    if type_ and id_:
+        args_prev += [type_.value, id_]
+        args_next += [type_.value, id_]
+        args_dest += [type_.value, id_]
+
+    context["week_select"] = {
+        "year": wanted_week.year,
+        "dest": reverse("week_view_placeholders", args=args_dest),
+    }
+
+    context["url_prev"] = reverse("week_view_by_week", args=args_prev)
+    context["url_next"] = reverse("week_view_by_week", args=args_next)
 
     return render(request, "alsijil/class_register/week_view.html", context)