diff --git a/doc/dev/.cvsignore b/doc/dev/.cvsignore
index c6ec187db905d8c19b9c0bc45bd1765b8a5444b0..83d0b5300940de23d733ab2b157c7dc36e8bed51 100644
--- a/doc/dev/.cvsignore
+++ b/doc/dev/.cvsignore
@@ -1,2 +1,3 @@
-comptahtml
-compta
+comptahtml
+compta
+dolibarr-doxygen2.conf
diff --git a/doc/dev/dolibarr-doxygen-filter.pl b/doc/dev/dolibarr-doxygen-filter.pl
index d1f1bb1847b01eec440466e935fb883169a0200d..a655436ad9afa241731829fd2ff9da9ace7a3f89 100755
--- a/doc/dev/dolibarr-doxygen-filter.pl
+++ b/doc/dev/dolibarr-doxygen-filter.pl
@@ -1,8 +1,9 @@
 #!/usr/bin/perl
 #--------------------------------------------------------------------
-# Script filtrage des sources Dolibarr pour doxygen
-#
-# \version $Id$
+# \brief	This script is a preprocessor for PHP files to be used
+#			on PHP source files before running Doxygen.
+# \version	$Id$
+# \author	Laurent Destailleur
 #--------------------------------------------------------------------
 
 # Usage: dolibarr-doxygen-getversion.pl pathtofilefromdolibarrroot
@@ -19,6 +20,65 @@ while (<FILE>)
 		$_ =~ s/(\\version\s+)[^\s]+\s/$1/i;
 		$_ =~ s/(\w)\s(\w)/$1_$2/g;
 	}
-	print $_;
+	$_ =~ s/exit\s*;/exit(0);/i;
+	$i=0;
+	$len=length($_);
+	$s="";
+	$insidequote=0;
+	$insidedquote=0;
+	$ignore="";
+	while ($i < $len)
+	{
+		$c=substr($_,$i,1);
+		if ($c eq "\\")
+		{
+			if ($insidequote)  { $ignore="'";  };
+			if ($insidedquote) { $ignore="\""; };
+		}
+		else
+		{
+			if ($c eq "'")
+			{
+				if (! $insidedquote)
+				{
+					$c="\"";
+					#print "X".$ignore;
+					if ($ignore ne "'")
+					{
+						#print "Z".$ignore;
+						$insidequote++;
+						if ($insidequote == 2)
+						{
+							$insidequote=0;
+						}
+					}
+				}
+				#print "X".$insidequote;
+			}
+			elsif ($c eq "\"")
+			{
+				#print "Y".$insidequote;
+				if ($insidequote)
+				{
+					$c="'";
+				}
+				else
+				{
+					if ($ignore ne "\"")
+					{
+						$insidedquote++;
+						if ($insidedquote == 2)
+						{
+							$insidedquote=0;
+						}
+					}				
+				}
+			}
+			$ignore="";
+		}
+		$s.=$c;
+		$i++;
+	}
+	print $s;
 }
 close(FILE);
diff --git a/htdocs/admin/barcode.php b/htdocs/admin/barcode.php
index 2896bce0b2868e46f493dfaea60aee0ab618507b..10a1b3d729a37ec453032880a4ed7ee19d7524cc 100644
--- a/htdocs/admin/barcode.php
+++ b/htdocs/admin/barcode.php
@@ -16,15 +16,13 @@
  * 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/admin/barcode.php
 		\ingroup    barcode
 		\brief      Page d'administration/configuration du module Code barre
-		\version    $Revision$
+		\version    $Id$
 */
 
 require("./pre.inc.php");
@@ -135,9 +133,9 @@ if ($resql)
 		print $obj->libelle;
 		print "</td><td>\n";
 		print $langs->trans('BarcodeDesc'.$obj->encoding);  
-		//print "L'EAN se compose de 8 caract�res, 7 chiffres plus une cl� de contr�le.<br>";
-		//print "L'utilisation des symbologies EAN8 impose la souscription et l'abonnement aupr�s d'organisme tel que GENCOD.<br>";
-		//print "Codes num�riques utilis�s exclusivement � l'identification des produits susceptibles d'�tre vendus au grand public.";
+		//print "L'EAN se compose de 8 caract�res, 7 chiffres plus une cl� de contr�le.<br>";
+		//print "L'utilisation des symbologies EAN8 impose la souscription et l'abonnement aupr�s d'organisme tel que GENCOD.<br>";
+		//print "Codes num�riques utilis�s exclusivement � l'identification des produits susceptibles d'�tre vendus au grand public.";
 		print '</td>';
 
 		// Affiche exemple
@@ -201,6 +199,11 @@ if (!isset($_ENV['windir']) && !file_exists($_ENV['windir']))
 	print '<td>'.$langs->trans("GenbarcodeLocation").'</td>';
 	print '<td width="60" align="center">';
 	print '<input type="text" size="40" name="genbarcodelocation" value="'.$conf->global->GENBARCODE_LOCATION.'">';
+	if (! empty($conf->global->GENBARCODE_LOCATION) && ! file_exists($conf->global->GENBARCODE_LOCATION))
+	{
+		$langs->load("errors");
+		print '<br><font class="error">'.$langs->trans("ErrorGenbarCodeNotfound").'</font>';
+	}
 	print '</td>';
 	print '<td width="60" align="center"><input type="submit" class="button" value="'.$langs->trans("Modify").'"></td>';
 	print '</tr>';
@@ -231,9 +234,9 @@ print '</table>';
       print "EAN13";
       print "</td><td>\n";
       
-      print "L'EAN se compose de 13 caract�res, 12 chiffres plus une cl� de contr�le. Il fonctionne de la m�me mani�re que l'UPC, avec lequel il est compatible.<br>";
-      print "L'utilisation des symbologies EAN13 impose la souscription et l'abonnement aupr�s d'organisme tel que GENCOD.<br>";
-      print "Codes num�riques utilis�s exclusivement � l'identification des produits susceptibles d'�tre vendus au grand public.";
+      print "L'EAN se compose de 13 caract�res, 12 chiffres plus une cl� de contr�le. Il fonctionne de la m�me mani�re que l'UPC, avec lequel il est compatible.<br>";
+      print "L'utilisation des symbologies EAN13 impose la souscription et l'abonnement aupr�s d'organisme tel que GENCOD.<br>";
+      print "Codes num�riques utilis�s exclusivement � l'identification des produits susceptibles d'�tre vendus au grand public.";
       print '</td>';
 
       // Affiche exemple
@@ -249,10 +252,10 @@ print '</table>';
       print '<tr '.$bc[$var].'><td width="100">';
       print "UPC";
       print "</td><td>\n";
-      print "L'UPC est l'�quivalent de l'EAN8/13 pour des pays codificateurs autre que l'Europe.<br>";
-      print "Il ne comporte que 11 chiffres plus la cl�.<br>";
-      print "C'est en r�alit� un code EAN13 dont le premier chiffre serait z�ro et dont la pr�sentation serait l�g�rement diff�rente.<br>";
-      print "Codes num�riques utilis�s exclusivement � l'identification des produits susceptibles d'�tre vendus au grand public.";
+      print "L'UPC est l'�quivalent de l'EAN8/13 pour des pays codificateurs autre que l'Europe.<br>";
+      print "Il ne comporte que 11 chiffres plus la cl�.<br>";
+      print "C'est en r�alit� un code EAN13 dont le premier chiffre serait z�ro et dont la pr�sentation serait l�g�rement diff�rente.<br>";
+      print "Codes num�riques utilis�s exclusivement � l'identification des produits susceptibles d'�tre vendus au grand public.";
       print '</td>';
 
       // Affiche exemple
@@ -268,7 +271,7 @@ print '</table>';
       print '<tr '.$bc[$var].'><td width="100">';
       print "ISBN";
       print "</td><td>\n";
-      print "Le code ISBN est un code d�di� au milieu de la presse �crite.";
+      print "Le code ISBN est un code d�di� au milieu de la presse �crite.";
       print '</td>';
 
       // Affiche exemple
@@ -284,11 +287,11 @@ print '</table>';
       print '<tr '.$bc[$var].'><td width="100">';
       print "Code 39";
       print "</td><td>\n";
-      print "Premier code alpha num�rique utilis� massivement dans l'Industrie pour sa capacit� d'encodage (chiffres et lettres)<br>";
-      print "ainsi que par son degr� de s�curit� � l'encodage (clef de contr�le).<br>";
+      print "Premier code alpha num�rique utilis� massivement dans l'Industrie pour sa capacit� d'encodage (chiffres et lettres)<br>";
+      print "ainsi que par son degr� de s�curit� � l'encodage (clef de contr�le).<br>";
       print "Il met a disposition les 10 chiffres, les 26 lettres de l'alphabet et sept symboles.<br>";
-			print "l'ast�risque (*) sert de caract�re de bornage. La lecture est bidirectionnelle.<br>";
-			print "La longueur est variable mais en g�n�ral ne d�passe pas 32 caract�res.";
+			print "l'ast�risque (*) sert de caract�re de bornage. La lecture est bidirectionnelle.<br>";
+			print "La longueur est variable mais en g�n�ral ne d�passe pas 32 caract�res.";
       print '</td>';
 
       // Affiche exemple
@@ -305,11 +308,11 @@ print '</table>';
       print '<tr '.$bc[$var].'><td width="100">';
       print "Code 128";
       print "</td><td>\n";
-      print "Ce code \"derni�re g�n�ration\" alpha num�rique est susceptible d'encoder les 128 caract�res de la table ASCII ( chiffres + lettres + symboles ).<br>";
-			print "Le code 128 poss�de des algorithmes de cryptage s�curis�s assez avanc�s.<br>";
-      print "C'est le plus complet des codes � barres, il propose 3 jeux de 128 caract�res.<br>";
+      print "Ce code \"derni�re g�n�ration\" alpha num�rique est susceptible d'encoder les 128 caract�res de la table ASCII ( chiffres + lettres + symboles ).<br>";
+			print "Le code 128 poss�de des algorithmes de cryptage s�curis�s assez avanc�s.<br>";
+      print "C'est le plus complet des codes � barres, il propose 3 jeux de 128 caract�res.<br>";
 			print "La lecture est bidirectionnelle.<br>";
-			print "La longueur est variable mais en g�n�ral ne d�passe pas 20 caract�res.";
+			print "La longueur est variable mais en g�n�ral ne d�passe pas 20 caract�res.";
       print '</td>';
 
       // Affiche exemple
diff --git a/htdocs/admin/menus/edit.php b/htdocs/admin/menus/edit.php
index 36e601304cbd7bbd86417a77b3365dba2537af14..0b4974c6562fd05119cdf77043b0861a4c6b9084 100644
--- a/htdocs/admin/menus/edit.php
+++ b/htdocs/admin/menus/edit.php
@@ -15,14 +15,13 @@
  * 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/admin/menus/edit.php
 		\ingroup    core
 		\brief      Edition des menus
+		\version	$Id$
 */
 
 require("./pre.inc.php");
diff --git a/htdocs/admin/menus/index.php b/htdocs/admin/menus/index.php
index 5c1ac930f897232f93799cdd0562c4336ca0918c..deb79fbff64086f0c2d1f37ece157c06968fa84e 100644
--- a/htdocs/admin/menus/index.php
+++ b/htdocs/admin/menus/index.php
@@ -18,10 +18,10 @@
  */
 
 /**
-		\file       htdocs/admin/menus/index.php
-        \ingroup    core
-		\brief      Page to show personalized menus
-		\version	$Id$
+   \file       htdocs/admin/menus/index.php
+   \ingroup    core
+   \brief      Index page for menu editor
+   \version    $Id$
 */
 
 require("./pre.inc.php");
@@ -221,11 +221,9 @@ if ($_GET["action"] == 'delete')
     
     $html = new Form($db);
     $html->form_confirm("index.php?menu_handler=".$menu_handler."&menuId=".$_GET['menuId'],$langs->trans("DeleteMenu"),$langs->trans("ConfirmDeleteMenu",$obj->titre),"confirm_delete");
-    print "<br />\n";
+    print "<br>\n";
 }
 
-//print $html->textwithwarning($langs->trans("FeatureExperimental"),$langs->trans("FeatureExperimental"),-1);
-//print '<br>';
 
 print '<form name="newmenu" class="nocellnopadding" action="'.$_SERVER["PHP_SELF"].'">';
 print '<input type="hidden" action="change_menu_handler">';
@@ -245,9 +243,7 @@ print '</tr>';
 print '<tr>';
 print '<td>';
 
-/*************************
- *      ARBORESCENCE     *       
- *************************/	
+// ARBORESCENCE	
 
 $rangLast = 0;
 $idLast = -1;