         else
             @hideTaskForm()
 
-    toggleTaskForm: (updatePreferences) ->
+    toggleTaskForm: (updatePreferences, mustFade) ->
 
         if @newTaskForm.is ':visible'
-            @hideTaskForm(updatePreferences)
+            @hideTaskForm(updatePreferences, mustFade)
         else
-            @showTaskForm(updatePreferences)
+            @showTaskForm(updatePreferences, mustFade)
 
-    showTaskForm: (updatePreferences) ->
-        @newTaskForm.show()
+    showTaskForm: (updatePreferences, mustFade) ->
+
+        if mustFade? && mustFade
+            @newTaskForm.fadeIn(1000)
+        else
+            @newTaskForm.show()
+
         @toggleButton.text 'Hide the form'
         if updatePreferences? && updatePreferences
             $.cookie('todos_prefs:show_form', 'true')
 
-    hideTaskForm: (updatePreferences) ->
-        @newTaskForm.hide()
+    hideTaskForm: (updatePreferences, mustFade) ->
+
+        if mustFade? && mustFade
+            @newTaskForm.fadeOut(1000)
+        else
+            @newTaskForm.hide()
+
         @toggleButton.text 'Show the form'
         if updatePreferences? && updatePreferences
             $.cookie('todos_prefs:show_form', 'false')

        Input handling
    ###

    inputHandler: () ->

        @newTaskFormInput.keyup (event) =>

        @newTaskButtonHandler()
        @newTaskFormInput.val "What do you have to do next ?"

    # "new task" Button behaviour management
    newTaskButtonHandler: () ->
        if !@hasUserTyped || !@newTaskFormInput.val()
            @newTaskFormButton.addClass 'disabled'
