diff --git a/htdocs/admin/barcode.php b/htdocs/admin/barcode.php
index ca9d7c677921785897290bb562b9d0b94b32c864..f3e93a6fd84c16dd806c6fb200e77f9d766521c1 100644
--- a/htdocs/admin/barcode.php
+++ b/htdocs/admin/barcode.php
@@ -28,6 +28,7 @@
 */
 
 require("./pre.inc.php");
+require_once(DOL_DOCUMENT_ROOT."/includes/barcode/html.formbarcode.class.php");
 
 $dir = DOL_DOCUMENT_ROOT."/includes/modules/barcode/";
 
@@ -60,6 +61,7 @@ else if ($_POST["action"] == 'setproductusebarcode')
 
 
 $html = new Form($db);
+$formbarcode = new FormBarCode($db);
 
 llxHeader('',$langs->trans("BarcodeSetup"),'BarcodeConfiguration');
 
@@ -164,7 +166,7 @@ if ($resql)
 		print '</td>';
 
 		print '<td align="center">';
-		print $html->setBarcodeEncoder($obj->coder,$barcodelist,$obj->rowid,'form'.$i);
+		print $formbarcode->setBarcodeEncoder($obj->coder,$barcodelist,$obj->rowid,'form'.$i);
 		print "</td></tr>\n";
 		$var=!$var;
 		$i++;
@@ -237,7 +239,7 @@ print '</table>';
       print '<td align="center"><img src="'.dol_genbarcode('123456789012','EAN',1).'"></td>';
       
       print '<td align="center">';
-      print $html->setBarcodeEncoder('EAN13','form'.$i);
+      print $formbarcode->setBarcodeEncoder('EAN13','form'.$i);
 	    print "</td></tr>\n";
 	    $i++;
 
@@ -256,7 +258,7 @@ print '</table>';
       print '<td align="center"><img src="'.dol_genbarcode('123456789012','UPC',1).'"></td>';
       
       print '<td align="center">';
-      print $html->setBarcodeEncoder('UPC','form'.$i);
+      print $formbarcode->setBarcodeEncoder('UPC','form'.$i);
 	    print "</td></tr>\n";
 	    $i++;
 	    
@@ -272,7 +274,7 @@ print '</table>';
       print '<td align="center"><img src="'.dol_genbarcode('123456789','ISBN',1).'"></td>';
       
       print '<td align="center">';
-      print $html->setBarcodeEncoder('ISBN','form'.$i);
+      print $formbarcode->setBarcodeEncoder('ISBN','form'.$i);
 	    print "</td></tr>\n";
 	    $i++;
 	    
@@ -292,7 +294,7 @@ print '</table>';
       print '<td align="center"><img src="'.dol_genbarcode('1234567890','39',1).'"></td>';
       
       print '<td align="center">';
-      print $html->setBarcodeEncoder('C39','form'.$i);
+      print $formbarcode->setBarcodeEncoder('C39','form'.$i);
 	    print "</td></tr>\n";
 	    $i++;
 	    
@@ -313,7 +315,7 @@ print '</table>';
       print '<td align="center"><img src="'.dol_genbarcode('ABCD1234567890','128',1).'"></td>';
       
       print '<td align="center">';
-      print $html->setBarcodeEncoder('C128','form'.$i);
+      print $formbarcode->setBarcodeEncoder('C128','form'.$i);
 	    print "</td></tr>\n";
 	    $i++;
 	    
@@ -329,7 +331,7 @@ print '</table>';
       print '<td align="center"><img src="'.dol_genbarcode('1234567890','I25',1).'"></td>';
       
       print '<td align="center">';
-      print $html->setBarcodeEncoder('I25','form'.$i);
+      print $formbarcode->setBarcodeEncoder('I25','form'.$i);
 	    print "</td></tr>\n";
 	    $i++;
 */
diff --git a/htdocs/admin/produit.php b/htdocs/admin/produit.php
index 58474fa1b24248b00f7b58a98a46d1a9c79485fc..03e555191089fb1049500a5cf5e7de361d578c8a 100644
--- a/htdocs/admin/produit.php
+++ b/htdocs/admin/produit.php
@@ -1,5 +1,5 @@
 <?php
-/* Copyright (C) 2004-2006 Laurent Destailleur  <eldy@users.sourceforge.net>
+/* Copyright (C) 2004-2008 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C)      2006 Andre Cianfarani     <acianfa@free.fr>
  * Copyright (C) 2006-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  * Copyright (C)      2007 Auguria SARL         <info@auguria.org>
@@ -20,7 +20,6 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
  * $Id$
- * $Source$
  */
 
 /**
@@ -31,6 +30,7 @@
 */
 
 require("./pre.inc.php");
+require_once(DOL_DOCUMENT_ROOT."/includes/barcode/html.formbarcode.class.php");
 
 $langs->load("admin");
 $langs->load("propal");
@@ -135,6 +135,8 @@ else if ($_POST["action"] == 'setdefaultbarcodetype')
  * Affiche page
  */
 
+$formbarcode=new FormBarCode($db);
+
 llxHeader('',$langs->trans("ProductSetup"));
 
 print_fiche_titre($langs->trans("ProductSetup"),'','setup');
@@ -279,7 +281,7 @@ if ($conf->barcode->enabled && $conf->global->PRODUIT_USE_BARCODE)
 	print "<tr ".$bc[$var].">";
 	print '<td>'.$langs->trans("SetDefaultBarcodeType").'</td>';
 	print '<td width="60" align="right">';
-	print $html->select_barcode_type($conf->global->PRODUIT_DEFAULT_BARCODE_TYPE,"coder_id",1);
+	print $formbarcode->select_barcode_type($conf->global->PRODUIT_DEFAULT_BARCODE_TYPE,"coder_id",1);
 	print '</td><td align="right">';
 	print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
 	print "</td>";
@@ -363,5 +365,5 @@ if ($conf->left_menu == 'default.php' || $conf->left_menu == 'auguria_backoffice
 
 $db->close();
 
-llxFooter();
+llxFooter('$Date$ - $Revision$');
 ?>
diff --git a/htdocs/html.form.class.php b/htdocs/html.form.class.php
index 0ab7e50a029415eca3d0734f00a47cf687b1cee9..2a67cd8d09f8112fd56696e75e274705ef101c43 100644
--- a/htdocs/html.form.class.php
+++ b/htdocs/html.form.class.php
@@ -3554,114 +3554,7 @@ class Form
 		return $ret;	
 	}
 	
-	/**
-	 *    \brief      Liste de s�lection du g�n�rateur de codes barres
-	 *    \param      selected          Id code pr�-s�lectionn�
-	 *    \param      code_id           Id du code barre
-	 *    \param      idForm            Id du formulaire
-	 */
-	function setBarcodeEncoder($selected=0,$barcodelist,$code_id,$idForm='formbarcode')
-	{
-		global $conf, $langs;
-		
-		$disable = '';
-		
-		// On v�rifie si le code de barre est d�j� s�lectionn� par d�faut dans le module produit
-		if ($conf->produit->enabled && $conf->global->PRODUIT_DEFAULT_BARCODE_TYPE == $code_id)
-		{
-			$disable = 'disabled="disabled"';
-		}
-		
-		$select_encoder = '<form action="barcode.php" method="post" id="'.$idForm.'">';
-		$select_encoder.= '<input type="hidden" name="action" value="update">';
-		$select_encoder.= '<input type="hidden" name="code_id" value="'.$code_id.'">';
-		$select_encoder.= '<select class="flat" name="coder" onChange="barcode_coder_save(\''.$idForm.'\')">';
-		$select_encoder.= '<option value="0"'.($selected==0?' selected="true"':'').' '.$disable.'>'.$langs->trans('Disable').'</option>';
-		$select_encoder.= '<option value="-1" disabled="disabled">--------------------</option>';
-		foreach($barcodelist as $key => $value)
-		{
-			$select_encoder.= '<option value="'.$key.'"'.($selected==$key?' selected="true"':'').'>'.$value.'</option>';
-		}
-		$select_encoder.= '</select></form>';
 
-		return $select_encoder;
-	}
-   
-   /**
-     *    \brief      Retourne la liste des types de codes barres
-     *    \param      selected          Id code pr�-s�lectionn�
-     *    \param      htmlname          Nom de la zone select
-     *    \param      useempty          Affiche valeur vide dans liste
-     */
-    function select_barcode_type($selected='',$htmlname='coder_id',$useempty=0)
-    {
-        global $langs;
-        
-        $sql = "SELECT rowid, code, libelle";
-        $sql.= " FROM ".MAIN_DB_PREFIX."c_barcode_type";
-        $sql.= " WHERE coder > 0";
-        $sql.= " ORDER BY rowid";
-        $result = $this->db->query($sql);
-        if ($result)
-        {
-            $num = $this->db->num_rows($result);
-            $i = 0;
-            
-            if ($useempty && $num > 0) 
-            {
-            	print '<select class="flat" name="'.$htmlname.'">';
-            	print '<option value="0">&nbsp;</option>';
-            }
-            else
-            {
-            	print '<select disabled="disabled" class="flat" name="'.$htmlname.'">';
-            	print '<option value="0" selected="true">'.$langs->trans('NoActivatedBarcode').'</option>';
-            }
- 
-            while ($i < $num)
-            {
-                $obj = $this->db->fetch_object($result);
-                if ($selected == $obj->rowid)
-                {
-                    print '<option value="'.$obj->rowid.'" selected="true">';
-                }
-                else
-                {
-                    print '<option value="'.$obj->rowid.'">';
-                }
-                print $obj->libelle;
-                print '</option>';
-                $i++;
-            }
-            print "</select>";
-        }
-        else {
-            dolibarr_print_error($this->db);
-        }
-    }
-    
-   /**
-     *    	\brief      Affiche formulaire de selection du type de code barre
-     *    	\param      page        	Page
-     *    	\param      selected    	Id condition pr�-s�lectionn�e
-     *    	\param      htmlname    	Nom du formulaire select
-     */
-    function form_barcode_type($page, $selected='', $htmlname='barcodetype_id')
-    {
-        global $langs,$conf;
-        if ($htmlname != "none")
-        {
-            print '<form method="post" action="'.$page.'">';
-            print '<input type="hidden" name="action" value="setbarcodetype">';
-            print '<table class="noborder" cellpadding="0" cellspacing="0">';
-            print '<tr><td>';
-            $this->select_barcode_type($selected, $htmlname, 1);
-            print '</td>';
-            print '<td align="left"><input type="submit" class="button" value="'.$langs->trans("Modify").'">';
-            print '</td></tr></table></form>';
-        }
-    }
-    
     /**
      *    \brief     Retourne la liste des ecotaxes avec tooltip sur le libelle
      *    \param     selected    code ecotaxes pre-selectionne
diff --git a/htdocs/includes/barcode/html.formbarcode.class.php b/htdocs/includes/barcode/html.formbarcode.class.php
new file mode 100644
index 0000000000000000000000000000000000000000..6cad9fcd71537c997260fbfd373af6f01c34bd25
--- /dev/null
+++ b/htdocs/includes/barcode/html.formbarcode.class.php
@@ -0,0 +1,162 @@
+<?php
+/* Copyright (C) 2007 Regis Houssin        <regis@dolibarr.fr>
+ * Copyright (C) 2008 Laurent Destailleur  <eldy@users.sourceforge.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Id$
+ */
+
+/**
+        \file       htdocs/html.form.class.php
+        \brief      Fichier de la classe des fonctions pr�d�finie de composants html
+        \version    $Revision$
+*/
+
+
+/**
+        \class      Form
+        \brief      Classe permettant la g�n�ration de composants html
+*/
+
+class FormBarCode
+{
+	var $db;
+	var $error;
+
+
+	/**
+		\brief     Constructeur
+		\param     DB      handler d'acc�s base de donn�e
+	*/
+	function FormBarCode($DB)
+	{
+		$this->db = $DB;
+		
+		return 1;
+	}
+
+
+	/**
+	 *    \brief      Liste de s�lection du g�n�rateur de codes barres
+	 *    \param      selected          Id code pr�-s�lectionn�
+	 *    \param      code_id           Id du code barre
+	 *    \param      idForm            Id du formulaire
+	 */
+	function setBarcodeEncoder($selected=0,$barcodelist,$code_id,$idForm='formbarcode')
+	{
+		global $conf, $langs;
+		
+		$disable = '';
+		
+		// On v�rifie si le code de barre est d�j� s�lectionn� par d�faut dans le module produit
+		if ($conf->produit->enabled && $conf->global->PRODUIT_DEFAULT_BARCODE_TYPE == $code_id)
+		{
+			$disable = 'disabled="disabled"';
+		}
+		
+		$select_encoder = '<form action="barcode.php" method="post" id="'.$idForm.'">';
+		$select_encoder.= '<input type="hidden" name="action" value="update">';
+		$select_encoder.= '<input type="hidden" name="code_id" value="'.$code_id.'">';
+		$select_encoder.= '<select class="flat" name="coder" onChange="barcode_coder_save(\''.$idForm.'\')">';
+		$select_encoder.= '<option value="0"'.($selected==0?' selected="true"':'').' '.$disable.'>'.$langs->trans('Disable').'</option>';
+		$select_encoder.= '<option value="-1" disabled="disabled">--------------------</option>';
+		foreach($barcodelist as $key => $value)
+		{
+			$select_encoder.= '<option value="'.$key.'"'.($selected==$key?' selected="true"':'').'>'.$value.'</option>';
+		}
+		$select_encoder.= '</select></form>';
+
+		return $select_encoder;
+	}
+   
+   /**
+     *    \brief      Retourne la liste des types de codes barres
+     *    \param      selected          Id code pr�-s�lectionn�
+     *    \param      htmlname          Nom de la zone select
+     *    \param      useempty          Affiche valeur vide dans liste
+     */
+    function select_barcode_type($selected='',$htmlname='coder_id',$useempty=0)
+    {
+        global $langs;
+        
+        $sql = "SELECT rowid, code, libelle";
+        $sql.= " FROM ".MAIN_DB_PREFIX."c_barcode_type";
+        $sql.= " WHERE coder > 0";
+        $sql.= " ORDER BY rowid";
+        $result = $this->db->query($sql);
+        if ($result)
+        {
+            $num = $this->db->num_rows($result);
+            $i = 0;
+            
+            if ($useempty && $num > 0) 
+            {
+            	print '<select class="flat" name="'.$htmlname.'">';
+            	print '<option value="0">&nbsp;</option>';
+            }
+            else
+            {
+            	print '<select disabled="disabled" class="flat" name="'.$htmlname.'">';
+            	print '<option value="0" selected="true">'.$langs->trans('NoActivatedBarcode').'</option>';
+            }
+ 
+            while ($i < $num)
+            {
+                $obj = $this->db->fetch_object($result);
+                if ($selected == $obj->rowid)
+                {
+                    print '<option value="'.$obj->rowid.'" selected="true">';
+                }
+                else
+                {
+                    print '<option value="'.$obj->rowid.'">';
+                }
+                print $obj->libelle;
+                print '</option>';
+                $i++;
+            }
+            print "</select>";
+        }
+        else {
+            dolibarr_print_error($this->db);
+        }
+    }
+    
+   /**
+     *    	\brief      Affiche formulaire de selection du type de code barre
+     *    	\param      page        	Page
+     *    	\param      selected    	Id condition pr�-s�lectionn�e
+     *    	\param      htmlname    	Nom du formulaire select
+     */
+    function form_barcode_type($page, $selected='', $htmlname='barcodetype_id')
+    {
+        global $langs,$conf;
+        if ($htmlname != "none")
+        {
+            print '<form method="post" action="'.$page.'">';
+            print '<input type="hidden" name="action" value="setbarcodetype">';
+            print '<table class="noborder" cellpadding="0" cellspacing="0">';
+            print '<tr><td>';
+            $this->select_barcode_type($selected, $htmlname, 1);
+            print '</td>';
+            print '<td align="left"><input type="submit" class="button" value="'.$langs->trans("Modify").'">';
+            print '</td></tr></table></form>';
+        }
+    }
+
+}
+
+?>
diff --git a/htdocs/product/barcode.php b/htdocs/product/barcode.php
index 2a2ff1c186ed4eafe1472226b1bca19f46c926b5..4b6bf45a13b285a074e74d6cc62ca5b4401ec0b3 100644
--- a/htdocs/product/barcode.php
+++ b/htdocs/product/barcode.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2001-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
- * Copyright (C) 2004-2006 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2004-2008 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2005-2007 Regis Houssin        <regis@dolibarr.fr>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -18,7 +18,6 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
  * $Id$
- * $Source$
  */
 
 /**
@@ -31,6 +30,7 @@
 require("./pre.inc.php");
 require_once(DOL_DOCUMENT_ROOT."/lib/product.lib.php");
 require_once(DOL_DOCUMENT_ROOT."/product.class.php");
+require_once(DOL_DOCUMENT_ROOT."/includes/barcode/html.formbarcode.class.php");
 
 $langs->load("products");
 $langs->load("bills");
@@ -76,6 +76,7 @@ if ($_POST['action'] ==	'setbarcode'	&& $user->rights->barcode->creer)
 llxHeader("","",$langs->trans("BarCode"));
 
 $html = new Form($db);
+$formbarcode = new FormBarCode($db);
 
 $product = new Product($db);
 if ($_GET["ref"]) $result = $product->fetch('',$_GET["ref"]);
@@ -132,7 +133,7 @@ print '</tr></table>';
 print '</td><td colspan="2">';
 if ($_GET['action'] == 'editbarcodetype')
 {
-	$html->form_barcode_type($_SERVER['PHP_SELF'].'?id='.$product->id,$product->barcode_type,'barcodetype_id');
+	$formbarcode->form_barcode_type($_SERVER['PHP_SELF'].'?id='.$product->id,$product->barcode_type,'barcodetype_id');
 }
 else
 {