                                   ($deferred (fn [deferred]
                                                ($ (resolve deferred nil)))))
                           (fn []
-                            (set! MODULE-FINDER-SCRIPTS-DLED? true)
-                            (set! INITIALIZE-EXHIBIT3-INTERVAL-VAL
-                                  (js/setInterval check-and-initialize-exhibit3 1000))))))
+                            (set! MODULE-FINDER-SCRIPTS-DLED? true)))))
+              (if (and (not (aget js/window "Exhibit3_Initialized"))
+                       (nil? INITIALIZE-EXHIBIT3-INTERVAL-VAL))
+                (set! INITIALIZE-EXHIBIT3-INTERVAL-VAL
+                      (js/setInterval check-and-initialize-exhibit3 1000)))
               (hide ($ :#timetable-builder))
               (show ($ :#module-finder))
               (.removeClass (parent ($ :#timetable-builder-tab-link)) "active")

       :private true}
  MODULE-FINDER-SCRIPTS-DLED? false)

(defn- timetable-builder-tab-click-handler
  "Click event handler for the `Timetable Builder` tab"
  []
  (hide ($ :#module-finder))
  (.removeClass (parent ($ :#module-finder-tab-link)) "active")
  (.addClass (parent ($ :#timetable-builder-tab-link)) "active")

                            "examDateIdx" examDateIdx}]))
           modulesArray))))

(defn- check-and-initialize-exhibit3
  "Used by `js/setInterval` to repeatedly check for initialization of
   the module finder page"
