diff --git a/js/fullcalendar.fullcalendar.js b/js/fullcalendar.fullcalendar.js
index 9f67ce8..a9b3d4c 100644
--- a/js/fullcalendar.fullcalendar.js
+++ b/js/fullcalendar.fullcalendar.js
@@ -48,6 +48,11 @@ Drupal.fullcalendar.processOptions = function(settings, dom_id) {
       if (Drupal.fullcalendar.navigate && settings.ajax) {
         var prev_date, next_date, date_argument, arguments, fetch_url;
 
+        if (!settings.loaded && typeof settings.previous_view !== 'undefined') {
+          $('.fullcalendar', calendar).fullCalendar('changeView', settings.previous_view);
+          $('.fullcalendar', calendar).fullCalendar('gotoDate', settings.previous_date.year, settings.previous_date.month, settings.previous_date.day);
+        }
+
         prev_date = $.fullCalendar.formatDate(start, 'yyyy-MM-dd');
         next_date = $.fullCalendar.formatDate(end, 'yyyy-MM-dd');
         date_argument = prev_date + '--' + next_date;
@@ -107,6 +112,20 @@ Drupal.fullcalendar.processOptions = function(settings, dom_id) {
         'field=' + event.field + '&entity_type=' + event.entity_type + '&index=' + event.index + '&day_delta=' + dayDelta + '&minute_delta=' + minuteDelta + '&dom_id=' + event.dom_id,
         Drupal.fullcalendar.update);
       return false;
+    },
+    viewDisplay: function(view) {
+      if (settings.loaded) {
+        current_date = $('.fullcalendar', calendar).fullCalendar('getDate');
+
+        if (typeof settings.previous_date === 'undefined') {
+          settings.previous_date = {};
+        }
+        settings.previous_date.year = parseInt($.fullCalendar.formatDate(current_date, 'yyyy'));
+        month = parseInt($.fullCalendar.formatDate(current_date, 'M'));
+        settings.previous_date.month = month - 1;
+        settings.previous_date.day = parseInt($.fullCalendar.formatDate(current_date, 'dd'));
+        settings.previous_view = view.name;
+      }
     }
   };
 
diff --git a/js/fullcalendar.views.js b/js/fullcalendar.views.js
index 10f9336..5e83796 100644
--- a/js/fullcalendar.views.js
+++ b/js/fullcalendar.views.js
@@ -38,8 +38,10 @@ Drupal.behaviors.fullcalendar = {
         }
       }
 
+      settings.fullcalendar[dom_id].loaded = false;
       // Use .once() to protect against extra AJAX calls from Colorbox.
       $('.fullcalendar', calendar).once().fullCalendar(options);
+      settings.fullcalendar[dom_id].loaded = true;
     }
 
     $('.fullcalendar-status-close', calendar).live('click', function() {
