Index: CHANGELOG
===================================================================
--- CHANGELOG	(revision 3544558f2d1b7b53de77f5ea373850dce8b05947)
+++ CHANGELOG	(revision 8e211adb01bd6145eb250edabff38db449f34d92)
@@ -2,4 +2,5 @@
 ===========================
 
+- Add images pre-loading on login page (#1451160)
 - Add HTTP_X_REAL_IP and HTTP_X_FORWARDED_FOR to successful logins log (#1486441)
 - Fix setting spellcheck languages with extended codes (#1486605)
Index: program/include/rcube_template.php
===================================================================
--- program/include/rcube_template.php	(revision 9b3fdc25c171d2b2461af42224ea16ad6c032c49)
+++ program/include/rcube_template.php	(revision 8e211adb01bd6145eb250edabff38db449f34d92)
@@ -81,4 +81,5 @@
         $this->add_handlers(array(
             'loginform'       => array($this, 'login_form'),
+            'preloader'       => array($this, 'preloader'),
             'username'        => array($this, 'current_username'),
             'message'         => array($this, 'message_container'),
@@ -1070,4 +1071,28 @@
 
         return $out;
+    }
+
+
+    /**
+     * GUI object 'preloader'
+     * Loads javascript code for images preloading
+     *
+     * @param array Named parameters
+     * @return void
+     */
+    private function preloader($attrib)
+    {
+        $images = preg_split('/[\s\t\n,]+/', $attrib['images'], -1, PREG_SPLIT_NO_EMPTY);
+        $images = array_map(array($this, 'abs_url'), $images);
+
+        if (empty($images) || $this->app->task == 'logout')
+            return;
+
+        $this->add_script('$(document).ready(function(){
+            var images = ' . json_serialize($images) .';
+            for (var i=0; i<images.length; i++) {
+                img = new Image();
+                img.src = images[i];
+            }});', 'foot');
     }
 
Index: skins/default/templates/login.html
===================================================================
--- skins/default/templates/login.html	(revision df2a51e3fae66d3b32a634d863af79d0d9a1d77f)
+++ skins/default/templates/login.html	(revision 8e211adb01bd6145eb250edabff38db449f34d92)
@@ -25,4 +25,24 @@
 </div>
 
+<roundcube:object name="preloader" images="
+    /images/icons/folders.png
+    /images/mail_footer.png
+    /images/taskicons.gif
+    /images/display/loading.gif
+    /images/pagenav.gif
+    /images/mail_toolbar.png
+    /images/searchfield.gif
+    /images/icons/glass_roll.png
+    /images/icons/reset.gif
+    /images/icons/attachment.png
+    /images/icons/dot.png
+    /images/icons/unread.png  
+
+    /images/abook_toolbar.png
+    /images/icons/glass.png
+    /images/icons/groupactions.png
+    /images/watermark.gif
+" />
+
 </body>
 </html>
