diff --git a/htdocs/core/ajaxfileupload.php b/htdocs/core/ajaxfileupload.php
index cc51d9c2836f1be5288f14d420f48f8b90cb061d..8af04307419672c2d67eb540bba5049d89d89fdb 100644
--- a/htdocs/core/ajaxfileupload.php
+++ b/htdocs/core/ajaxfileupload.php
@@ -22,11 +22,12 @@ if (! defined('NOREQUIREHTML'))  define('NOREQUIREHTML','1'); // If we don't nee
 //if (! defined("NOLOGIN"))        define("NOLOGIN",'1');       // If this page is public (can be called outside logged session)
 
 
-$res=@include("../../main.inc.php");								// For "custom" directory
-if (! $res) $res=@include("../main.inc.php");						// For root directory
+$res=@include("../main.inc.php");								    // For "root" directory
+if (! $res) $res=@include("../../main.inc.php");					// For "custom" directory
 if (! $res) @include("../../../../dolibarr/htdocs/main.inc.php");	// Used on dev env only
 
 require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php");
+require_once(DOL_DOCUMENT_ROOT."/lib/images.lib.php");
 
 error_reporting(E_ALL | E_STRICT);
 
@@ -37,19 +38,23 @@ error_reporting(E_ALL | E_STRICT);
 $fk_element = GETPOST('fk_element');
 $element = GETPOST('element');
 
+
+/**
+ *
+ */
 class UploadHandler
 {
     private $options;
     private $fk_elment;
     private $element;
-    
+
     function __construct($options=null,$fk_element=null,$element=null) {
-    	
+
     	global $conf;
-    	
+
     	$this->fk_element=$fk_element;
     	$this->element=$element;
-    	
+
         $this->options = array(
             'script_url' => $_SERVER['PHP_SELF'],
             'upload_dir' => $conf->$element->dir_output . '/' . $fk_element . '/',
@@ -86,7 +91,7 @@ class UploadHandler
             $this->options = array_merge_recursive($this->options, $options);
         }
     }
-    
+
     private function get_file_object($file_name) {
         $file_path = $this->options['upload_dir'].$file_name;
         if (is_file($file_path) && $file_name[0] !== '.') {
@@ -97,8 +102,8 @@ class UploadHandler
             $file->url = $this->options['upload_url'].rawurlencode($file->name);
             foreach($this->options['image_versions'] as $version => $options) {
                 if (is_file($options['upload_dir'].$file_name)) {
-                    $file->{$version.'_url'} = $options['upload_url']
-                        .rawurlencode($file->name);
+                    $tmp=explode('.',$file->name);
+                    $file->{$version.'_url'} = $options['upload_url'].rawurlencode($tmp[0].'_mini.'.$tmp[1]);
                 }
             }
             $file->delete_url = $this->options['script_url']
@@ -108,7 +113,7 @@ class UploadHandler
         }
         return null;
     }
-    
+
     private function get_file_objects() {
         return array_values(array_filter(array_map(
             array($this, 'get_file_object'),
@@ -116,9 +121,14 @@ class UploadHandler
         )));
     }
 
+    /**
+     *  Create thumbs
+     *  options is array('max_width', 'max_height')
+     */
     private function create_scaled_image($file_name, $options) {
         $file_path = $this->options['upload_dir'].$file_name;
         $new_file_path = $options['upload_dir'].$file_name;
+
         if (create_exdir($options['upload_dir']) >= 0)
         {
         	list($img_width, $img_height) = @getimagesize($file_path);
@@ -134,6 +144,11 @@ class UploadHandler
 	        }
 	        $new_width = $img_width * $scale;
 	        $new_height = $img_height * $scale;
+
+
+	        $res=true;
+	        $res=vignette($file_path,$options['max_width'],$options['max_height'],'_mini');
+            /* Replaced with more efficient function vignette
 	        $new_img = @imagecreatetruecolor($new_width, $new_height);
 	        switch (strtolower(substr(strrchr($file_name, '.'), 1))) {
 	            case 'jpg':
@@ -164,14 +179,18 @@ class UploadHandler
 	        // Free up memory (imagedestroy does not delete files):
 	        @imagedestroy($src_img);
 	        @imagedestroy($new_img);
-	        return $success;
+            */
+
+	        //return $success;
+	        if (preg_match('/error/i',$res)) return false;
+	        return true;
         }
         else
         {
         	return false;
         }
     }
-    
+
     private function has_error($uploaded_file, $file, $error) {
         if ($error) {
             return $error;
@@ -201,7 +220,7 @@ class UploadHandler
         }
         return $error;
     }
-    
+
     private function handle_file_upload($uploaded_file, $name, $size, $type, $error) {
         $file = new stdClass();
         $file->name = basename(stripslashes($name));
@@ -238,10 +257,12 @@ class UploadHandler
             $file_size = filesize($file_path);
             if ($file_size === $file->size) {
                 $file->url = $this->options['upload_url'].rawurlencode($file->name);
-                foreach($this->options['image_versions'] as $version => $options) {
-                    if ($this->create_scaled_image($file->name, $options)) {
-                        $file->{$version.'_url'} = $options['upload_url']
-                            .rawurlencode($file->name);
+                foreach($this->options['image_versions'] as $version => $options)
+                {
+                    if ($this->create_scaled_image($file->name, $options))
+                    {
+                        $tmp=explode('.',$file->name);
+                        $file->{$version.'_url'} = $options['upload_url'].rawurlencode($tmp[0].'_mini.'.$tmp[1]);
                     }
                 }
             } else if ($this->options['discard_aborted_uploads']) {
@@ -257,10 +278,10 @@ class UploadHandler
         }
         return $file;
     }
-    
+
     public function get() {
         $file_name = isset($_REQUEST['file']) ?
-            basename(stripslashes($_REQUEST['file'])) : null; 
+            basename(stripslashes($_REQUEST['file'])) : null;
         if ($file_name) {
             $info = $this->get_file_object($file_name);
         } else {
@@ -269,7 +290,7 @@ class UploadHandler
         header('Content-type: application/json');
         echo json_encode($info);
     }
-    
+
     public function post() {
         $upload = isset($_FILES[$this->options['param_name']]) ?
             $_FILES[$this->options['param_name']] : array(
@@ -314,7 +335,7 @@ class UploadHandler
         }
         echo json_encode($info);
     }
-    
+
     public function delete() {
         $file_name = isset($_REQUEST['file']) ?
             basename(stripslashes($_REQUEST['file'])) : null;
@@ -333,6 +354,12 @@ class UploadHandler
     }
 }
 
+
+
+/*
+ * View
+ */
+
 $upload_handler = new UploadHandler(null,$fk_element,$element);
 
 header('Pragma: no-cache');
@@ -352,5 +379,10 @@ switch ($_SERVER['REQUEST_METHOD']) {
         break;
     default:
         header('HTTP/1.0 405 Method Not Allowed');
+        exit;
 }
+
+
+$db->close();
+
 ?>
\ No newline at end of file
diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php
index c08006e2935027963ce96f12ca37d3e96927dc4b..46d699019fcc65a75e17715f2af10b8e83d4b667 100644
--- a/htdocs/core/class/html.formfile.class.php
+++ b/htdocs/core/class/html.formfile.class.php
@@ -22,7 +22,7 @@
  *	\file       htdocs/core/class/html.formfile.class.php
  *  \ingroup    core
  *	\brief      File of class to offer components to list and upload files
- *	\version	$Id: html.formfile.class.php,v 1.38 2011/07/05 09:14:27 hregis Exp $
+ *	\version	$Id: html.formfile.class.php,v 1.39 2011/07/05 22:40:36 eldy Exp $
  */
 
 
@@ -738,7 +738,7 @@ class FormFile
 	function form_ajaxfileupload($object)
 	{
 		global $langs;
-		
+
 		// PHP post_max_size
 		$post_max_size				= ini_get('post_max_size');
 		$mul_post_max_size			= substr($post_max_size, -1);
@@ -751,16 +751,16 @@ class FormFile
 		$upload_max_filesize		= $mul_upload_max_filesize*(int)$upload_max_filesize;
 		// Max file size
     	$max_file_size 				= (($post_max_size < $upload_max_filesize) ? $post_max_size : $upload_max_filesize);
-		
+
 		print '<script type="text/javascript">
 				$(function () {
 					\'use strict\';
-					
+
 					var max_file_size = \''.$max_file_size.'\';
-					
+
 					// Initialize the jQuery File Upload widget:
 					$("#fileupload").fileupload( { maxFileSize: max_file_size} );
-					
+
 					// Load existing files:
 					$.getJSON($("#fileupload form").prop("action"), { fk_element: "'.$object->id.'", element: "'.$object->element.'"}, function (files) {
 						var fu = $("#fileupload").data("fileupload");
@@ -772,7 +772,7 @@ class FormFile
 								$(this).show();
 							});
 					});
-					
+
 					// Open download dialogs via iframes,
 					// to prevent aborting current uploads:
 					$("#fileupload .files a:not([target^=_blank])").live("click", function (e) {
@@ -781,11 +781,11 @@ class FormFile
 							.prop("src", this.href)
 							.appendTo("body");
 					});
-					
+
 					// Confirm delete file
 					$("#fileupload").fileupload({
 						destroy: function (e, data) {
-							var that = $(this).data("fileupload"); 
+							var that = $(this).data("fileupload");
 							if ( confirm("Delete this file ?") == true ) {
 					            if (data.url) {
 					                $.ajax(data)
@@ -805,7 +805,7 @@ class FormFile
 					});
 				});
 				</script>';
-		
+
 		print '<div id="fileupload">';
 		print '<form action="'.DOL_URL_ROOT.'/core/ajaxfileupload.php" method="POST" enctype="multipart/form-data">';
 		print '<input type="hidden" name="fk_element" value="'.$object->id.'">';
@@ -820,6 +820,7 @@ class FormFile
 		print '<button type="reset" class="cancel">'.$langs->trans('CancelUpload').'</button>';
 		print '</div></form>';
 		print '<div class="fileupload-content">';
+
 		print '<table width="100%" class="files">';
 		print '<tr class="liste_titre">';
 		print '<td>'.$langs->trans("Documents2").'</td>';
@@ -828,10 +829,12 @@ class FormFile
 		print '<td colspan="3"></td>';
 		print '</tr>';
 		print '</table>';
+
 		print '<div class="fileupload-progressbar"></div>';
+
 		print '</div>';
 		print '</div>';
-		
+
 		// Include template
 		include(DOL_DOCUMENT_ROOT.'/core/tpl/ajaxfileupload.tpl.php');
 
diff --git a/htdocs/core/tpl/ajaxfileupload.tpl.php b/htdocs/core/tpl/ajaxfileupload.tpl.php
index f1d6026c98182e561440109f26fb667811bd8a7d..cfbfdad12e3c5d41fe445d5f68447e5ead36f48f 100644
--- a/htdocs/core/tpl/ajaxfileupload.tpl.php
+++ b/htdocs/core/tpl/ajaxfileupload.tpl.php
@@ -15,7 +15,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
- * $Id: ajaxfileupload.tpl.php,v 1.6 2011/07/05 09:30:11 hregis Exp $
+ * $Id: ajaxfileupload.tpl.php,v 1.7 2011/07/05 22:40:35 eldy Exp $
  */
 ?>
 
@@ -65,22 +65,12 @@
                 {{else}}${error}
                 {{/if}}
             </td>
-        {{else}}
-            <td class="name">
-				<img src="<?php echo DOL_URL_ROOT; ?>/theme/common/mime/${mime}" border="0">
-                <a href="${url}"{{if thumbnail_url}} target="_blank"{{/if}}>${name}</a>
+            <td align="right" class="delete">
+                <button data-type="${delete_type}" data-url="${delete_url}"><?php echo $langs->trans('Delete'); ?></button>
             </td>
-			<td class="preview">
-                {{if thumbnail_url}}
-                    <a href="${url}" target="_blank"><img src="${thumbnail_url}"></a>
-                {{/if}}
-            </td>
-            <td class="size">${sizef}</td>
-            <td colspan="2"></td>
         {{/if}}
-        <td align="right" class="delete">
-            <button data-type="${delete_type}" data-url="${delete_url}"><?php echo $langs->trans('Delete'); ?></button>
-        </td>
     </tr>
 </script>
+
+<br>
 <!-- END PHP TEMPLATE -->
\ No newline at end of file
diff --git a/htdocs/lib/images.lib.php b/htdocs/lib/images.lib.php
index 4a91c5af79fa98d5179a65f9ac3900a1d0657f73..d7841216fdb13c94f6df376f0b6fdca21fcd71d4 100644
--- a/htdocs/lib/images.lib.php
+++ b/htdocs/lib/images.lib.php
@@ -21,7 +21,7 @@
 /**
  *  \file		htdocs/lib/images.lib.php
  *  \brief		Set of function for manipulating images
- * 	\version	$Id$
+ * 	\version	$Id: images.lib.php,v 1.22 2011/07/05 22:40:36 eldy Exp $
  */
 
 // Define size of logo small and mini
@@ -287,10 +287,10 @@ function dol_imageResizeOrCrop($file, $mode, $newWidth, $newHeight, $src_x=0, $s
 /**
  *    	Create a thumbnail from an image file (Supported extensions are gif, jpg, png and bmp).
  *      If file is myfile.jpg, new file may be myfile_small.jpg
- *    	@param     file           	PAth of file to resize
+ *    	@param     file           	Path of source file to resize
  *    	@param     maxWidth       	Largeur maximum que dois faire la miniature (-1=unchanged, 160 by default)
  *    	@param     maxHeight      	Hauteur maximum que dois faire l'image (-1=unchanged, 120 by default)
- *    	@param     extName        	Extension to differenciate thumb file name
+ *    	@param     extName        	Extension to differenciate thumb file name ('_small', '_mini')
  *    	@param     quality        	Quality of compression (0=worst, 100=best)
  *      @param     outdir           Directory where to store thumb
  *      @param     targetformat     New format of target (1,2,3,4 or 0 to keep old format)
@@ -327,12 +327,12 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName='_small', $
 	elseif(!is_numeric($maxWidth) || empty($maxWidth) || $maxWidth < -1){
 		// Si la largeur max est incorrecte (n'est pas numerique, est vide, ou est inferieure a 0)
         dol_syslog('Wrong value for parameter maxWidth',LOG_ERR);
-	    return 'Wrong value for parameter maxWidth';
+	    return 'Error: Wrong value for parameter maxWidth';
 	}
 	elseif(!is_numeric($maxHeight) || empty($maxHeight) || $maxHeight < -1){
 		// Si la hauteur max est incorrecte (n'est pas numerique, est vide, ou est inferieure a 0)
         dol_syslog('Wrong value for parameter maxHeight',LOG_ERR);
-	    return 'Wrong value for parameter maxHeight';
+	    return 'Error: Wrong value for parameter maxHeight';
 	}
 
 	$fichier = realpath($file); 	// Chemin canonique absolu de l'image
@@ -374,7 +374,7 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName='_small', $
 		if (! function_exists($imgfonction))
 		{
 			// Fonctions de conversion non presente dans ce PHP
-			return 'Creation de vignette impossible. Ce PHP ne supporte pas les fonctions du module GD '.$imgfonction;
+			return 'Error: Creation of thumbs not possible. This PHP does not support GD function '.$imgfonction;
 		}
 	}
 
diff --git a/htdocs/societe/document.php b/htdocs/societe/document.php
index c5af4de609cbd6ae7df8aa7329ec624f3c576938..9a6495b4c6e6bbef1e87ea1e83b7d24bd0eea3d0 100644
--- a/htdocs/societe/document.php
+++ b/htdocs/societe/document.php
@@ -23,7 +23,7 @@
  *  \file       htdocs/societe/document.php
  *  \brief      Tab for documents linked to third party
  *  \ingroup    societe
- *  \version    $Id: document.php,v 1.33 2011/07/05 17:21:19 hregis Exp $
+ *  \version    $Id: document.php,v 1.34 2011/07/05 22:40:35 eldy Exp $
  */
 
 require("../main.inc.php");
@@ -85,7 +85,7 @@ if ( $_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC))
 	                // Create small thumbs for company (Ratio is near 16/9)
 	                // Used on logon for example
 	                $imgThumbSmall = vignette($upload_dir . "/" . $_FILES['userfile']['name'], $maxwidthsmall, $maxheightsmall, '_small', $quality, "thumbs");
-	
+
 	                // Create mini thumbs for company (Ratio is near 16/9)
 	                // Used on menu or for setup page for example
 	                $imgThumbMini = vignette($upload_dir . "/" . $_FILES['userfile']['name'], $maxwidthmini, $maxheightmini, '_mini', $quality, "thumbs");
@@ -209,23 +209,22 @@ if ($socid > 0)
 			$ret=$html->form_confirm($_SERVER["PHP_SELF"].'?socid='.$socid.'&urlfile='.urldecode($_GET["urlfile"]), $langs->trans('DeleteFile'), $langs->trans('ConfirmDeleteFile'), 'confirm_deletefile', '', 0, 1);
 			if ($ret == 'html') print '<br>';
 		}
-		
+
 		$formfile=new FormFile($db);
-		
+
+        // Show upload form
 		if ($conf->global->MAIN_USE_JQUERY_FILEUPLOAD)
 		{
 			$formfile->form_ajaxfileupload($object);
 		}
 		else
 		{
-			// Affiche formulaire upload
 			$formfile->form_attach_new_file($_SERVER["PHP_SELF"].'?socid='.$socid,'',0,0,$user->rights->societe->creer);
-	
-	
-			// List of document
-			$param='&socid='.$object->id;
-			$formfile->list_of_documents($filearray,$object,'societe',$param);
-		}
+        }
+
+		// List of document
+		$param='&socid='.$object->id;
+		$formfile->list_of_documents($filearray,$object,'societe',$param);
 
 		print "<br><br>";
 
@@ -289,6 +288,6 @@ else
 $db->close();
 
 
-llxFooter('$Date: 2011/07/05 17:21:19 $ - $Revision: 1.33 $');
+llxFooter('$Date: 2011/07/05 22:40:35 $ - $Revision: 1.34 $');
 
 ?>