Index: src/mlx/gui/flight.py
===================================================================
--- src/mlx/gui/flight.py	(revision 759)
+++ src/mlx/gui/flight.py	(revision 760)
@@ -301,5 +301,5 @@
                                   xscale = 0.0, yscale = 0.0)
 
-        table = gtk.Table(4, 2)
+        table = gtk.Table(3, 2)
         table.set_row_spacings(4)
         table.set_col_spacings(32)
@@ -339,10 +339,4 @@
         table.attach(self._rememberButton, 1, 2, 2, 3, ypadding = 8)
 
-        self._entranceExam = gtk.CheckButton(xstr("login_entranceExam"))
-        self._entranceExam.set_use_underline(True)
-        self._entranceExam.set_tooltip_text(xstr("login_entranceExam_tooltip"))
-        self._entranceExam.connect("toggled", self._setControls)
-        table.attach(self._entranceExam, 1, 2, 3, 4, ypadding = 12)
-
         self.addButton(xstr("button_login_register"),
                        clicked = self._registerClicked,
@@ -357,10 +351,4 @@
         self._loginButton.set_tooltip_text(xstr("login_button_tooltip"))
 
-
-    @property
-    def entranceExam(self):
-        """Get whether an entrance exam is being performed."""
-        return self._entranceExam.get_active() and \
-               self._pilotID.get_text()!=""
 
     @property
@@ -401,10 +389,6 @@
         pilotID = self._pilotID.get_text()
         password = self._password.get_text()
-        entranceExam = self._entranceExam.get_active()
-        self._password.set_sensitive(not entranceExam)
-        self._rememberButton.set_sensitive(password!="" and not entranceExam)
-        self._entranceExam.set_sensitive(pilotID!="")
-        self._loginButton.set_sensitive(pilotID!="" and
-                                        (password!="" or entranceExam))
+        self._rememberButton.set_sensitive(password!="")
+        self._loginButton.set_sensitive(pilotID!="" and password!="")
 
     def _registerClicked(self, button):
@@ -422,6 +406,5 @@
         self._wizard.login(self._handleLoginResult,
                            self._pilotID.get_text(),
-                           self._password.get_text(),
-                           self.entranceExam)
+                           self._password.get_text())
 
     def _handleLoginResult(self, returned, result):
@@ -439,5 +422,8 @@
 
             config.save()
-            self._wizard.nextPage()
+            if result.rank=="STU":
+                self._wizard.jumpPage("student")
+            else:
+                self._wizard.nextPage()
 
 #-----------------------------------------------------------------------------
@@ -4839,5 +4825,5 @@
     def entranceExam(self):
         """Get whether an entrance exam is about to be taken."""
-        return self._loginPage.entranceExam
+        return self._loginResult is not None and self._loginResult.rank=="STU"
 
     @property
@@ -5132,5 +5118,5 @@
         #self.setCurrentPage(10)
 
-    def login(self, callback, pilotID, password, entranceExam):
+    def login(self, callback, pilotID, password):
         """Called when the login button was clicked."""
         self._loginCallback = callback
@@ -5140,5 +5126,4 @@
             pilotID = loginResult.pilotID
             password = loginResult.password
-            entranceExam = loginResult.entranceExam
             busyMessage = xstr("reload_busy")
         else:
@@ -5149,6 +5134,5 @@
 
         self.gui.webHandler.login(self._loginResultCallback,
-                                  pilotID, password,
-                                  entranceExam = entranceExam)
+                                  pilotID, password)
 
     def reloadFlights(self, callback):
Index: src/mlx/rpc.py
===================================================================
--- src/mlx/rpc.py	(revision 759)
+++ src/mlx/rpc.py	(revision 760)
@@ -239,5 +239,5 @@
             self._loginCount += 1
             self._sessionID = reply.value["sessionID"]
-            return reply.value["name"]
+            return (reply.value["name"], reply.value["rank"])
         else:
             return None
Index: src/mlx/web.py
===================================================================
--- src/mlx/web.py	(revision 756)
+++ src/mlx/web.py	(revision 760)
@@ -659,5 +659,5 @@
     iso88592decoder = codecs.getdecoder("iso-8859-2")
 
-    def __init__(self, callback, pilotID, password, entranceExam):
+    def __init__(self, callback, pilotID, password):
         """Construct the login request with the given pilot ID and
         password."""
@@ -666,5 +666,4 @@
         self._pilotID = pilotID
         self._password = password
-        self._entranceExam = entranceExam
 
     def run(self):
@@ -678,43 +677,29 @@
         password = md5.hexdigest()
 
-        if self._entranceExam:
-            url = MAVA_BASE_URL + "/ellenorzo/getflightplan.php?pid=%s" % \
-                  (pilotID,)
-        else:
-            url = MAVA_BASE_URL + "/leker2.php?pid=%s&psw=%s" % \
-                  (pilotID, password)
+        url = MAVA_BASE_URL + "/leker2.php?pid=%s&psw=%s" %  (pilotID, password)
 
         result = Result()
-        result.entranceExam = self._entranceExam
 
         f = urllib2.urlopen(url, timeout = 10.0)
 
         status = readline(f)
-        if self._entranceExam:
-            result.loggedIn = status != "#NOEXAM"
-        else:
-            result.loggedIn = status == ".OK."
+        result.loggedIn = status == ".OK."
 
         if result.loggedIn:
             result.pilotID = self._pilotID
             result.password = self._password
+            result.rank = "FO"
             result.flights = []
-            # FIXME: this may not be the correct behaviour
-            # for an entrance exam, but the website returns
-            # an error
-            if self._entranceExam:
-                result.pilotName = result.pilotID
-                result.exams = ""
-            else:
-                result.pilotName = self.iso88592decoder(readline(f))[0]
-                result.exams = readline(f)
-
-                while True:
-                    line = readline(f)
-                    if not line or line == "#ENDPIREP": break
-
-                    flight = BookedFlight(line)
-                    flight.readFromWeb(f)
-                    result.flights.append(flight)
+
+            result.pilotName = self.iso88592decoder(readline(f))[0]
+            result.exams = readline(f)
+
+            while True:
+                line = readline(f)
+                if not line or line == "#ENDPIREP": break
+
+                flight = BookedFlight(line)
+                flight.readFromWeb(f)
+                result.flights.append(flight)
 
             result.flights.sort(cmp = lambda flight1, flight2:
@@ -730,5 +715,5 @@
 class LoginRPC(RPCRequest):
     """An RPC-based login request."""
-    def __init__(self, client, callback, pilotID, password, entranceExam):
+    def __init__(self, client, callback, pilotID, password):
         """Construct the login request with the given pilot ID and
         password."""
@@ -737,18 +722,16 @@
         self._pilotID = pilotID
         self._password = password
-        self._entranceExam = entranceExam
 
     def run(self):
         """Perform the login request."""
         result = Result()
-        # FIXME: handle the entrance exam case
-        result.entranceExam = self._entranceExam
 
         self._client.setCredentials(self._pilotID, self._password)
-        pilotName = self._client.login()
-        result.loggedIn = pilotName is not None
+        loginResult = self._client.login()
+        result.loggedIn = loginResult is not None
         if result.loggedIn:
             result.pilotID = self._pilotID
-            result.pilotName = pilotName
+            result.pilotName = loginResult[0]
+            result.rank = loginResult[1]
             result.password = self._password
             result.flights = self._client.getFlights()
@@ -1170,10 +1153,9 @@
         self._addRequest(Register(self._rpcClient, callback, registrationData))
 
-    def login(self, callback, pilotID, password, entranceExam = False):
+    def login(self, callback, pilotID, password):
         """Enqueue a login request."""
         request = \
-          LoginRPC(self._rpcClient, callback, pilotID, password, entranceExam) \
-          if self._config.useRPC and not entranceExam \
-          else Login(callback, pilotID, password, entranceExam)
+          LoginRPC(self._rpcClient, callback, pilotID, password) \
+          if self._config.useRPC else Login(callback, pilotID, password)
 
         self._addRequest(request)
