From 4d78932fe86cacbde680f3b4df04b2700622c438 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?=
 <marcosgdf@gmail.com>
Date: Sun, 20 Mar 2016 13:43:03 +0100
Subject: [PATCH] NEW Converted Form::textwithtooltip and Form::textwithpicto
 to static functions

---
 dev/skeletons/skeleton_list.php               |  2 +-
 htdocs/adherents/agenda.php                   |  2 +-
 htdocs/adherents/card.php                     |  8 ++--
 htdocs/adherents/card_subscriptions.php       |  4 +-
 htdocs/adherents/document.php                 |  2 +-
 htdocs/adherents/note.php                     |  2 +-
 htdocs/admin/agenda_extsites.php              |  2 +-
 htdocs/admin/barcode.php                      |  2 +-
 htdocs/admin/commande.php                     |  4 +-
 htdocs/admin/company.php                      |  2 +-
 htdocs/admin/contract.php                     |  4 +-
 htdocs/admin/dict.php                         |  4 +-
 htdocs/admin/expedition.php                   |  4 +-
 htdocs/admin/expensereport.php                |  4 +-
 htdocs/admin/facture.php                      |  4 +-
 htdocs/admin/fichinter.php                    |  4 +-
 htdocs/admin/limits.php                       | 12 +++---
 htdocs/admin/livraison.php                    |  4 +-
 htdocs/admin/mails.php                        | 10 ++---
 htdocs/admin/menus.php                        |  8 ++--
 htdocs/admin/modules.php                      |  4 +-
 htdocs/admin/notification.php                 |  4 +-
 htdocs/admin/payment.php                      |  2 +-
 htdocs/admin/pdf.php                          |  2 +-
 htdocs/admin/propal.php                       |  4 +-
 htdocs/admin/security_file.php                |  2 +-
 htdocs/admin/security_other.php               |  4 +-
 htdocs/admin/supplier_invoice.php             |  4 +-
 htdocs/admin/supplier_order.php               |  4 +-
 htdocs/admin/supplier_payment.php             |  2 +-
 htdocs/admin/supplier_proposal.php            |  4 +-
 htdocs/admin/syslog.php                       |  4 +-
 htdocs/admin/system/database.php              |  4 +-
 htdocs/admin/system/dolibarr.php              |  6 +--
 htdocs/admin/tools/listevents.php             |  2 +-
 htdocs/admin/tools/listsessions.php           |  2 +-
 htdocs/admin/triggers.php                     |  2 +-
 htdocs/admin/websites.php                     |  2 +-
 htdocs/categories/admin/categorie.php         |  2 +-
 htdocs/categories/categorie.php               |  2 +-
 htdocs/comm/mailing/card.php                  |  6 +--
 htdocs/comm/mailing/cibles.php                |  2 +-
 htdocs/comm/mailing/list.php                  |  2 +-
 htdocs/comm/propal.php                        |  4 +-
 htdocs/commande/card.php                      |  4 +-
 htdocs/commande/list.php                      |  4 +-
 htdocs/commande/orderstoinvoice.php           |  2 +-
 htdocs/compta/facture.php                     | 40 +++++++++----------
 htdocs/compta/facture/apercu.php              |  4 +-
 htdocs/compta/facture/fiche-rec.php           | 10 ++---
 htdocs/compta/facture/prelevement.php         |  4 +-
 htdocs/contact/card.php                       |  4 +-
 htdocs/contact/list.php                       |  2 +-
 htdocs/contrat/card.php                       |  2 +-
 htdocs/core/ajax/ajaxdirtree.php              |  2 +-
 htdocs/core/class/html.form.class.php         | 18 ++++-----
 htdocs/core/class/html.formmail.class.php     |  8 ++--
 htdocs/core/class/html.formprojet.class.php   |  2 +-
 htdocs/core/class/html.formsms.class.php      |  4 +-
 htdocs/core/lib/ecm.lib.php                   |  4 +-
 htdocs/core/lib/functions.lib.php             |  2 +-
 htdocs/core/lib/project.lib.php               | 10 ++---
 htdocs/core/lib/sendings.lib.php              |  4 +-
 .../barcode/mod_barcode_product_standard.php  |  2 +-
 .../doc/doc_generic_order_odt.modules.php     |  2 +-
 .../modules/commande/mod_commande_saphir.php  |  2 +-
 .../modules/contract/mod_contract_magre.php   |  2 +-
 .../doc/doc_generic_shipment_odt.modules.php  |  2 +-
 .../expedition/mod_expedition_ribera.php      |  2 +-
 .../doc/doc_generic_invoice_odt.modules.php   |  2 +-
 .../modules/facture/mod_facture_mercure.php   |  8 ++--
 htdocs/core/modules/fichinter/mod_arctic.php  |  2 +-
 .../livraison/mod_livraison_saphir.php        |  2 +-
 .../core/modules/payment/mod_payment_ant.php  |  2 +-
 .../product/mod_codeproduct_elephant.php      |  4 +-
 .../doc/doc_generic_project_odt.modules.php   |  2 +-
 .../modules/project/mod_project_universal.php |  2 +-
 .../task/doc/doc_generic_task_odt.modules.php |  2 +-
 .../project/task/mod_task_universal.php       |  2 +-
 .../doc/doc_generic_proposal_odt.modules.php  |  2 +-
 .../modules/propale/mod_propale_saphir.php    |  2 +-
 .../societe/doc/doc_generic_odt.modules.php   |  2 +-
 .../societe/mod_codeclient_elephant.php       |  4 +-
 .../societe/mod_codecompta_aquarium.php       |  4 +-
 .../mod_facture_fournisseur_tulip.php         |  2 +-
 .../mod_commande_fournisseur_orchidee.php     |  2 +-
 .../mod_supplier_payment_brodator.php         |  2 +-
 ..._generic_supplier_proposal_odt.modules.php |  2 +-
 .../mod_supplier_proposal_saphir.php          |  2 +-
 htdocs/core/tpl/admin_extrafields_add.tpl.php |  8 ++--
 .../core/tpl/admin_extrafields_edit.tpl.php   |  8 ++--
 htdocs/core/tpl/objectline_view.tpl.php       |  4 +-
 htdocs/cron/card.php                          | 12 +++---
 htdocs/cron/list.php                          |  2 +-
 htdocs/don/admin/donation.php                 |  2 +-
 htdocs/ecm/index.php                          |  6 +--
 htdocs/ecm/index_auto.php                     |  4 +-
 htdocs/expedition/card.php                    | 16 ++++----
 htdocs/expedition/list.php                    |  2 +-
 htdocs/expedition/shipment.php                |  4 +-
 htdocs/expensereport/card.php                 |  4 +-
 htdocs/exports/export.php                     | 12 +++---
 htdocs/exports/index.php                      |  2 +-
 htdocs/fourn/commande/card.php                |  8 ++--
 htdocs/fourn/facture/card.php                 | 16 ++++----
 htdocs/imports/import.php                     | 16 ++++----
 htdocs/imports/index.php                      |  2 +-
 htdocs/index.php                              |  2 +-
 htdocs/livraison/card.php                     |  8 ++--
 htdocs/main.inc.php                           |  2 +-
 htdocs/product/admin/dynamic_prices.php       |  2 +-
 htdocs/product/admin/product.php              |  6 +--
 htdocs/product/composition/card.php           |  4 +-
 htdocs/product/dynamic_price/editor.php       |  2 +-
 htdocs/product/fournisseurs.php               |  2 +-
 htdocs/product/list.php                       |  6 +--
 htdocs/product/price.php                      | 14 +++----
 htdocs/product/stock/list.php                 |  4 +-
 htdocs/product/stock/product.php              |  2 +-
 htdocs/projet/admin/project.php               |  8 ++--
 htdocs/projet/card.php                        |  8 ++--
 htdocs/projet/list.php                        |  2 +-
 htdocs/projet/tasks/list.php                  |  2 +-
 htdocs/public/members/public_card.php         |  2 +-
 htdocs/public/members/public_list.php         |  2 +-
 htdocs/public/test/test_forms.php             |  2 +-
 htdocs/societe/admin/societe.php              | 10 ++---
 .../canvas/actions_card_common.class.php      |  6 +--
 .../company/actions_card_company.class.php    |  4 +-
 htdocs/societe/consumption.php                |  4 +-
 htdocs/societe/list.php                       | 14 +++----
 htdocs/societe/price.php                      |  8 ++--
 htdocs/societe/soc.php                        | 20 +++++-----
 htdocs/user/agenda_extsites.php               |  2 +-
 htdocs/user/card.php                          | 28 ++++++-------
 htdocs/user/clicktodial.php                   |  4 +-
 htdocs/user/group/index.php                   |  2 +-
 htdocs/user/index.php                         |  2 +-
 htdocs/user/perms.php                         |  2 +-
 139 files changed, 336 insertions(+), 336 deletions(-)

diff --git a/dev/skeletons/skeleton_list.php b/dev/skeletons/skeleton_list.php
index 2571afcce86..5da8aa6c55a 100644
--- a/dev/skeletons/skeleton_list.php
+++ b/dev/skeletons/skeleton_list.php
@@ -291,7 +291,7 @@ if ($resql)
 	}
 
     $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
-    $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
+    $selectedfields=Form::multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
 	
 	print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">';
 
diff --git a/htdocs/adherents/agenda.php b/htdocs/adherents/agenda.php
index 77fa8022968..7988383b1d7 100644
--- a/htdocs/adherents/agenda.php
+++ b/htdocs/adherents/agenda.php
@@ -105,7 +105,7 @@ if ($object->id > 0)
 	// Morphy
 	print '<tr><td>'.$langs->trans("Nature").'</td><td class="valeur" >'.$object->getmorphylib().'</td>';
 	/*print '<td rowspan="'.$rowspan.'" align="center" valign="middle" width="25%">';
-	 print $form->showphoto('memberphoto',$member);
+	 print Form::showphoto('memberphoto',$member);
 	print '</td>';*/
 	print '</tr>';
 
diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php
index 92b1bcbdd70..9ce04013fbe 100644
--- a/htdocs/adherents/card.php
+++ b/htdocs/adherents/card.php
@@ -1059,7 +1059,7 @@ else
 
 		// Photo
 		print '<td align="center" class="hideonsmartphone" valign="middle" width="25%" rowspan="'.$rowspan.'">';
-		print $form->showphoto('memberphoto',$object)."\n";
+		print Form::showphoto('memberphoto',$object)."\n";
 		if ($caneditfieldmember)
 		{
 			if ($object->photo) print "<br>\n";
@@ -1322,7 +1322,7 @@ else
 			$helpcontent.="<br>";
 			$helpcontent.='<b>'.$langs->trans("Content").'</b>:<br>';
 			$helpcontent.=dol_htmlentitiesbr($texttosend)."\n";
-			$label=$form->textwithpicto($tmp,$helpcontent,1,'help');
+			$label=Form::textwithpicto($tmp,$helpcontent,1,'help');
 
 			// Create form popup
 			$formquestion=array();
@@ -1364,7 +1364,7 @@ else
 			$helpcontent.="<br>";
 			$helpcontent.='<b>'.$langs->trans("Content").'</b>:<br>';
 			$helpcontent.=dol_htmlentitiesbr($texttosend)."\n";
-			$label=$form->textwithpicto($tmp,$helpcontent,1,'help');
+			$label=Form::textwithpicto($tmp,$helpcontent,1,'help');
 
 			// Cree un tableau formulaire
 			$formquestion=array();
@@ -1439,7 +1439,7 @@ else
 			{
 			    $langs->load("errors");
 			    $htmltext=$langs->trans("WarningPasswordSetWithNoAccount");
-			    print ' '.$form->textwithpicto('', $htmltext,1,'warning');
+			    print ' '.Form::textwithpicto('', $htmltext,1,'warning');
 			}
 			print '</td></tr>';
 		}
diff --git a/htdocs/adherents/card_subscriptions.php b/htdocs/adherents/card_subscriptions.php
index 998dc53d525..9563f29d51f 100644
--- a/htdocs/adherents/card_subscriptions.php
+++ b/htdocs/adherents/card_subscriptions.php
@@ -605,7 +605,7 @@ if ($rowid > 0)
 		{
 		    $langs->load("errors");
 		    $htmltext=$langs->trans("WarningPasswordSetWithNoAccount");
-		    print ' '.$form->textwithpicto('', $htmltext,1,'warning');
+		    print ' '.Form::textwithpicto('', $htmltext,1,'warning');
 		}
 		print '</td></tr>';
 	}
@@ -1134,7 +1134,7 @@ if ($rowid > 0)
             $helpcontent.='<b>'.$langs->trans("MailText").'</b>:<br>';
             $helpcontent.=dol_htmlentitiesbr($texttosend)."\n";
 
-            print $form->textwithpicto($tmp,$helpcontent,1,'help');
+            print Form::textwithpicto($tmp,$helpcontent,1,'help');
         }
         print '</td></tr>';
         print '</tbody>';
diff --git a/htdocs/adherents/document.php b/htdocs/adherents/document.php
index 4dd5fd9bf64..b237a7fc91e 100644
--- a/htdocs/adherents/document.php
+++ b/htdocs/adherents/document.php
@@ -131,7 +131,7 @@ if ($id > 0)
         // Morphy
         print '<tr><td class="titlefield">'.$langs->trans("Nature").'</td><td class="valeur" >'.$object->getmorphylib().'</td>';
         /*print '<td rowspan="'.$rowspan.'" align="center" valign="middle" width="25%">';
-        print $form->showphoto('memberphoto',$object);
+        print Form::showphoto('memberphoto',$object);
         print '</td>';*/
         print '</tr>';
 
diff --git a/htdocs/adherents/note.php b/htdocs/adherents/note.php
index a895d6cfef8..6c2214a06c8 100644
--- a/htdocs/adherents/note.php
+++ b/htdocs/adherents/note.php
@@ -94,7 +94,7 @@ if ($id)
     // Morphy
     print '<tr><td class="titlefield">'.$langs->trans("Nature").'</td><td class="valeur" >'.$object->getmorphylib().'</td>';
     /*print '<td rowspan="'.$rowspan.'" align="center" valign="middle" width="25%">';
-    print $form->showphoto('memberphoto',$member);
+    print Form::showphoto('memberphoto',$member);
     print '</td>';*/
     print '</tr>';
 
diff --git a/htdocs/admin/agenda_extsites.php b/htdocs/admin/agenda_extsites.php
index 79e6d3dbd6c..f58bd3378e4 100644
--- a/htdocs/admin/agenda_extsites.php
+++ b/htdocs/admin/agenda_extsites.php
@@ -195,7 +195,7 @@ print "<tr class=\"liste_titre\">";
 print "<td>".$langs->trans("Parameter")."</td>";
 print "<td>".$langs->trans("Name")."</td>";
 print "<td>".$langs->trans("ExtSiteUrlAgenda")." (".$langs->trans("Example").': http://yoursite/agenda/agenda.ics)</td>';
-print "<td>".$form->textwithpicto($langs->trans("FixTZ"), $langs->trans("FillFixTZOnlyIfRequired"), 1).'</td>';
+print "<td>".Form::textwithpicto($langs->trans("FixTZ"), $langs->trans("FillFixTZOnlyIfRequired"), 1).'</td>';
 print '<td align="right">'.$langs->trans("Color").'</td>';
 print "</tr>";
 
diff --git a/htdocs/admin/barcode.php b/htdocs/admin/barcode.php
index b7cc6e94bf2..8aa018c4b90 100644
--- a/htdocs/admin/barcode.php
+++ b/htdocs/admin/barcode.php
@@ -431,7 +431,7 @@ if ($conf->produit->enabled)
 	    			}
 	    			print '<td align="center">';
 	    			$s=$modBarCode->getToolTip($langs,null,-1);
-	    			print $form->textwithpicto('',$s,1);
+	    			print Form::textwithpicto('',$s,1);
 	    			print '</td>';
 	    			print "</tr>\n";
 	    		}
diff --git a/htdocs/admin/commande.php b/htdocs/admin/commande.php
index 9e55369dac9..9d0e903d282 100644
--- a/htdocs/admin/commande.php
+++ b/htdocs/admin/commande.php
@@ -376,7 +376,7 @@ foreach ($dirmodels as $reldir)
                         }
 
 						print '<td align="center">';
-						print $form->textwithpicto('',$htmltooltip,1,0);
+						print Form::textwithpicto('',$htmltooltip,1,0);
 						print '</td>';
 
 						print "</tr>\n";
@@ -524,7 +524,7 @@ foreach ($dirmodels as $reldir)
 
 
 	                            print '<td align="center">';
-	                            print $form->textwithpicto('',$htmltooltip,1,0);
+	                            print Form::textwithpicto('',$htmltooltip,1,0);
 	                            print '</td>';
 
 	                            // Preview
diff --git a/htdocs/admin/company.php b/htdocs/admin/company.php
index 6fa5a6c0e7b..2047a774f4a 100644
--- a/htdocs/admin/company.php
+++ b/htdocs/admin/company.php
@@ -914,7 +914,7 @@ else
 				print '</script>';
 				print "\n";
 				$s.='<a href="#" onClick="javascript: CheckVAT(document.formsoc.tva_intra.value);">'.$langs->trans("VATIntraCheck").'</a>';
-				$s = $form->textwithpicto($s,$langs->trans("VATIntraCheckDesc",$langs->trans("VATIntraCheck")),1);
+				$s = Form::textwithpicto($s,$langs->trans("VATIntraCheckDesc",$langs->trans("VATIntraCheck")),1);
 			}
 			else
 			{
diff --git a/htdocs/admin/contract.php b/htdocs/admin/contract.php
index acfe7de156f..1842ca8c43e 100644
--- a/htdocs/admin/contract.php
+++ b/htdocs/admin/contract.php
@@ -311,7 +311,7 @@ foreach ($dirmodels as $reldir)
                         }
 
 						print '<td align="center">';
-						print $form->textwithpicto('',$htmltooltip,1,0);
+						print Form::textwithpicto('',$htmltooltip,1,0);
 						print '</td>';
 
 						print '</tr>';
@@ -457,7 +457,7 @@ foreach ($dirmodels as $reldir)
 
 
 	                            print '<td align="center">';
-	                            print $form->textwithpicto('',$htmltooltip,1,0);
+	                            print Form::textwithpicto('',$htmltooltip,1,0);
 	                            print '</td>';
 
 	                            // Preview
diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php
index 91dcaf41131..6a02c851631 100644
--- a/htdocs/admin/dict.php
+++ b/htdocs/admin/dict.php
@@ -920,7 +920,7 @@ if ($id)
             if ($fieldlist[$field]=='organization')    { $valuetoshow=$langs->trans("Organization"); }
             if ($fieldlist[$field]=='lang')            { $valuetoshow=$langs->trans("Language"); }
             if ($fieldlist[$field]=='type')            {
-				if ($tabname[$id] == MAIN_DB_PREFIX."c_paiement") $valuetoshow=$form->textwithtooltip($langs->trans("Type"),$langs->trans("TypePaymentDesc"),2,1,img_help(1,''));
+				if ($tabname[$id] == MAIN_DB_PREFIX."c_paiement") $valuetoshow=Form::textwithtooltip($langs->trans("Type"),$langs->trans("TypePaymentDesc"),2,1,img_help(1,''));
 				else $valuetoshow=$langs->trans("Type");
             }
             if ($fieldlist[$field]=='code')            { $valuetoshow=$langs->trans("Code"); }
@@ -963,7 +963,7 @@ if ($id)
             {
                 print '<td align="'.$align.'">';
             	if (! empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i',$tabhelp[$id][$value])) print '<a href="'.$tabhelp[$id][$value].'" target="_blank">'.$valuetoshow.' '.img_help(1,$valuetoshow).'</a>';
-            	else if (! empty($tabhelp[$id][$value])) print $form->textwithpicto($valuetoshow,$tabhelp[$id][$value]);
+            	else if (! empty($tabhelp[$id][$value])) print Form::textwithpicto($valuetoshow,$tabhelp[$id][$value]);
             	else print $valuetoshow;
                 print '</td>';
              }
diff --git a/htdocs/admin/expedition.php b/htdocs/admin/expedition.php
index 42741b49c7a..a7796bfbfa8 100644
--- a/htdocs/admin/expedition.php
+++ b/htdocs/admin/expedition.php
@@ -316,7 +316,7 @@ foreach ($dirmodels as $reldir)
                         }
 
 						print '<td align="center">';
-						print $form->textwithpicto('',$htmltooltip,1,0);
+						print Form::textwithpicto('',$htmltooltip,1,0);
 						print '</td>';
 
 						print '</tr>';
@@ -463,7 +463,7 @@ foreach ($dirmodels as $reldir)
 					    		$htmltooltip.='<br>'.$langs->trans("WatermarkOnDraftOrders").': '.yn($module->option_draft_watermark,1,1);
 
 	                            print '<td align="center">';
-	                            print $form->textwithpicto('',$htmltooltip,1,0);
+	                            print Form::textwithpicto('',$htmltooltip,1,0);
 	                            print '</td>';
 
 	                            // Preview
diff --git a/htdocs/admin/expensereport.php b/htdocs/admin/expensereport.php
index 5c8fa9732e4..66574bac59d 100644
--- a/htdocs/admin/expensereport.php
+++ b/htdocs/admin/expensereport.php
@@ -327,7 +327,7 @@ foreach ($dirmodels as $reldir)
                             }
                         }
 						print '<td align="center">';
-						print $form->textwithpicto('',$htmltooltip,1,0);
+						print Form::textwithpicto('',$htmltooltip,1,0);
 						print '</td>';
 
 						print '</tr>';
@@ -469,7 +469,7 @@ foreach ($dirmodels as $reldir)
 		    				$htmltooltip.='<br>'.$langs->trans("MultiLanguage").': '.yn($module->option_multilang,1,1);
 		    				$htmltooltip.='<br>'.$langs->trans("WatermarkOnDraftOrders").': '.yn($module->option_draft_watermark,1,1);
 		    				print '<td align="center">';
-		    				print $form->textwithpicto('',$htmltooltip,-1,0);
+		    				print Form::textwithpicto('',$htmltooltip,-1,0);
 		    				print '</td>';
 
 		    				// Preview
diff --git a/htdocs/admin/facture.php b/htdocs/admin/facture.php
index b3f1d7a5d51..74164bce35c 100644
--- a/htdocs/admin/facture.php
+++ b/htdocs/admin/facture.php
@@ -444,7 +444,7 @@ foreach ($dirmodels as $reldir)
                             }
 
                             print '<td align="center">';
-                            print $form->textwithpicto('',$htmltooltip,1,0);
+                            print Form::textwithpicto('',$htmltooltip,1,0);
 
                             if ($conf->global->FACTURE_ADDON.'.php' == $file)  // If module is the one used, we show existing errors
                             {
@@ -600,7 +600,7 @@ foreach ($dirmodels as $reldir)
 
 
 	                            print '<td align="center">';
-	                            print $form->textwithpicto('',$htmltooltip,1,0);
+	                            print Form::textwithpicto('',$htmltooltip,1,0);
 	                            print '</td>';
 
 	                            // Preview
diff --git a/htdocs/admin/fichinter.php b/htdocs/admin/fichinter.php
index fd34d01f620..34f25dc2044 100644
--- a/htdocs/admin/fichinter.php
+++ b/htdocs/admin/fichinter.php
@@ -338,7 +338,7 @@ foreach ($dirmodels as $reldir)
                             }
                         }
 						print '<td align="center">';
-						print $form->textwithpicto('',$htmltooltip,1,0);
+						print Form::textwithpicto('',$htmltooltip,1,0);
 						print '</td>';
 
 						print '</tr>';
@@ -479,7 +479,7 @@ foreach ($dirmodels as $reldir)
 		    				$htmltooltip.='<br>'.$langs->trans("MultiLanguage").': '.yn($module->option_multilang,1,1);
 		    				$htmltooltip.='<br>'.$langs->trans("WatermarkOnDraftOrders").': '.yn($module->option_draft_watermark,1,1);
 		    				print '<td align="center">';
-		    				print $form->textwithpicto('',$htmltooltip,-1,0);
+		    				print Form::textwithpicto('',$htmltooltip,-1,0);
 		    				print '</td>';
 
 		    				// Preview
diff --git a/htdocs/admin/limits.php b/htdocs/admin/limits.php
index 3806258d246..00a553cd073 100644
--- a/htdocs/admin/limits.php
+++ b/htdocs/admin/limits.php
@@ -108,12 +108,12 @@ if ($action == 'edit')
 
     $var=!$var;
     print '<tr '.$bc[$var].'><td>';
-    print $form->textwithpicto($langs->trans("MAIN_MAX_DECIMALS_UNIT"),$langs->trans("ParameterActiveForNextInputOnly"));
+    print Form::textwithpicto($langs->trans("MAIN_MAX_DECIMALS_UNIT"),$langs->trans("ParameterActiveForNextInputOnly"));
     print '</td><td><input class="flat" name="MAIN_MAX_DECIMALS_UNIT" size="3" value="' . $conf->global->MAIN_MAX_DECIMALS_UNIT . '"></td></tr>';
 
     $var=!$var;
     print '<tr '.$bc[$var].'><td>';
-    print $form->textwithpicto($langs->trans("MAIN_MAX_DECIMALS_TOT"),$langs->trans("ParameterActiveForNextInputOnly"));
+    print Form::textwithpicto($langs->trans("MAIN_MAX_DECIMALS_TOT"),$langs->trans("ParameterActiveForNextInputOnly"));
     print '</td><td><input class="flat" name="MAIN_MAX_DECIMALS_TOT" size="3" value="' . $conf->global->MAIN_MAX_DECIMALS_TOT . '"></td></tr>';
 
     $var=!$var;
@@ -121,7 +121,7 @@ if ($action == 'edit')
 
     $var=!$var;
     print '<tr '.$bc[$var].'><td>';
-    print $form->textwithpicto($langs->trans("MAIN_ROUNDING_RULE_TOT"),$langs->trans("ParameterActiveForNextInputOnly"));
+    print Form::textwithpicto($langs->trans("MAIN_ROUNDING_RULE_TOT"),$langs->trans("ParameterActiveForNextInputOnly"));
     print '</td><td><input class="flat" name="MAIN_ROUNDING_RULE_TOT" size="3" value="' . $conf->global->MAIN_ROUNDING_RULE_TOT . '"></td></tr>';
 
     print '</table>';
@@ -142,12 +142,12 @@ else
 
     $var=!$var;
     print '<tr '.$bc[$var].'><td>';
-    print $form->textwithpicto($langs->trans("MAIN_MAX_DECIMALS_UNIT"),$langs->trans("ParameterActiveForNextInputOnly"));
+    print Form::textwithpicto($langs->trans("MAIN_MAX_DECIMALS_UNIT"),$langs->trans("ParameterActiveForNextInputOnly"));
     print '</td><td align="right">'.$conf->global->MAIN_MAX_DECIMALS_UNIT.'</td></tr>';
 
     $var=!$var;
     print '<tr '.$bc[$var].'><td>';
-    print $form->textwithpicto($langs->trans("MAIN_MAX_DECIMALS_TOT"),$langs->trans("ParameterActiveForNextInputOnly"));
+    print Form::textwithpicto($langs->trans("MAIN_MAX_DECIMALS_TOT"),$langs->trans("ParameterActiveForNextInputOnly"));
     print '</td><td align="right">'.$conf->global->MAIN_MAX_DECIMALS_TOT.'</td></tr>';
 
     $var=!$var;
@@ -155,7 +155,7 @@ else
 
     $var=!$var;
     print '<tr '.$bc[$var].'><td>';
-    print $form->textwithpicto($langs->trans("MAIN_ROUNDING_RULE_TOT"),$langs->trans("ParameterActiveForNextInputOnly"));
+    print Form::textwithpicto($langs->trans("MAIN_ROUNDING_RULE_TOT"),$langs->trans("ParameterActiveForNextInputOnly"));
     print '</td><td align="right">'.$conf->global->MAIN_ROUNDING_RULE_TOT.'</td></tr>';
 
     print '</table>';
diff --git a/htdocs/admin/livraison.php b/htdocs/admin/livraison.php
index 42d7fa69ac8..7000f526a84 100644
--- a/htdocs/admin/livraison.php
+++ b/htdocs/admin/livraison.php
@@ -305,7 +305,7 @@ foreach ($dirmodels as $reldir)
                         }
 
                         print '<td align="center">';
-                        print $form->textwithpicto('',$htmltooltip,1,0);
+                        print Form::textwithpicto('',$htmltooltip,1,0);
                         print '</td>';
 
                         print '</tr>';
@@ -442,7 +442,7 @@ foreach ($dirmodels as $reldir)
 		    				$htmltooltip.='<br><br><u>'.$langs->trans("FeaturesSupported").'</u>:';
 		    				$htmltooltip.='<br>'.$langs->trans("Logo").': '.yn($module->option_logo,1,1);
 		    				print '<td align="center">';
-		    				print $form->textwithpicto('',$htmltooltip,1,0);
+		    				print Form::textwithpicto('',$htmltooltip,1,0);
 		    				print '</td>';
 
 		    				// Preview
diff --git a/htdocs/admin/mails.php b/htdocs/admin/mails.php
index b2769dc8e2f..7ea89c05757 100644
--- a/htdocs/admin/mails.php
+++ b/htdocs/admin/mails.php
@@ -364,7 +364,7 @@ if ($action == 'edit')
 		$text = $listofmethods[$conf->global->MAIN_MAIL_SENDMODE];
 		if (empty($text)) $text = $langs->trans("Undefined");
 		$htmltext = $langs->trans("ContactSuperAdminForChange");
-		print $form->textwithpicto($text,$htmltext,1,'superadmin');
+		print Form::textwithpicto($text,$htmltext,1,'superadmin');
 		print '<input type="hidden" name="MAIN_MAIL_SENDMODE" value="'.$conf->global->MAIN_MAIL_SENDMODE.'">';
 	}
 	print '</td></tr>';
@@ -396,7 +396,7 @@ if ($action == 'edit')
 		{
 			$text = ! empty($mainserver) ? $mainserver : $smtpserver;
 			$htmltext = $langs->trans("ContactSuperAdminForChange");
-			print $form->textwithpicto($text,$htmltext,1,'superadmin');
+			print Form::textwithpicto($text,$htmltext,1,'superadmin');
 			print '<input type="hidden" id="MAIN_MAIL_SMTP_SERVER" name="MAIN_MAIL_SMTP_SERVER" value="'.$mainserver.'">';
 		}
 	}
@@ -429,7 +429,7 @@ if ($action == 'edit')
 		{
 			$text = (! empty($mainport) ? $mainport : $smtpport);
 			$htmltext = $langs->trans("ContactSuperAdminForChange");
-			print $form->textwithpicto($text,$htmltext,1,'superadmin');
+			print Form::textwithpicto($text,$htmltext,1,'superadmin');
 			print '<input type="hidden" id="MAIN_MAIL_SMTP_PORT" name="MAIN_MAIL_SMTP_PORT" value="'.$mainport.'">';
 		}
 	}
@@ -449,7 +449,7 @@ if ($action == 'edit')
 		else
 		{
 			$htmltext = $langs->trans("ContactSuperAdminForChange");
-			print $form->textwithpicto($conf->global->MAIN_MAIL_SMTPS_ID,$htmltext,1,'superadmin');
+			print Form::textwithpicto($conf->global->MAIN_MAIL_SMTPS_ID,$htmltext,1,'superadmin');
 			print '<input type="hidden" name="MAIN_MAIL_SMTPS_ID" value="'.$mainstmpid.'">';
 		}
 		print '</td></tr>';
@@ -469,7 +469,7 @@ if ($action == 'edit')
 		else
 		{
 			$htmltext = $langs->trans("ContactSuperAdminForChange");
-			print $form->textwithpicto($conf->global->MAIN_MAIL_SMTPS_PW,$htmltext,1,'superadmin');
+			print Form::textwithpicto($conf->global->MAIN_MAIL_SMTPS_PW,$htmltext,1,'superadmin');
 			print '<input type="hidden" name="MAIN_MAIL_SMTPS_PW" value="'.$mainsmtppw.'">';
 		}
 		print '</td></tr>';
diff --git a/htdocs/admin/menus.php b/htdocs/admin/menus.php
index f8b89c515aa..e4556371ffe 100644
--- a/htdocs/admin/menus.php
+++ b/htdocs/admin/menus.php
@@ -171,10 +171,10 @@ if ($action == 'edit')
 	print '<table class="noborder" width="100%">';
 	print '<tr class="liste_titre"><td width="35%">'.$langs->trans("Menu").'</td>';
 	print '<td>';
-	print $form->textwithpicto($langs->trans("InternalUsers"),$langs->trans("InternalExternalDesc"));
+	print Form::textwithpicto($langs->trans("InternalUsers"),$langs->trans("InternalExternalDesc"));
 	print '</td>';
 	print '<td>';
-	print $form->textwithpicto($langs->trans("ExternalUsers"),$langs->trans("InternalExternalDesc"));
+	print Form::textwithpicto($langs->trans("ExternalUsers"),$langs->trans("InternalExternalDesc"));
 	print '</td>';
 	print '</tr>';
 
@@ -210,10 +210,10 @@ else
 	print '<table class="noborder" width="100%">';
 	print '<tr class="liste_titre"><td width="35%">'.$langs->trans("Menu").'</td>';
 	print '<td>';
-	print $form->textwithpicto($langs->trans("InternalUsers"),$langs->trans("InternalExternalDesc"));
+	print Form::textwithpicto($langs->trans("InternalUsers"),$langs->trans("InternalExternalDesc"));
 	print '</td>';
 	print '<td>';
-	print $form->textwithpicto($langs->trans("ExternalUsers"),$langs->trans("InternalExternalDesc"));
+	print Form::textwithpicto($langs->trans("ExternalUsers"),$langs->trans("InternalExternalDesc"));
 	print '</td>';
 	print '</tr>';
 
diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php
index d862b80d6a8..89a60e957d3 100644
--- a/htdocs/admin/modules.php
+++ b/htdocs/admin/modules.php
@@ -267,7 +267,7 @@ if (! empty($categ[$categidx]))
 {
 	$categidx='expdev';
     $head[$h][0] = DOL_URL_ROOT."/admin/modules.php?mode=".$categidx;
-    $head[$h][1] = $form->textwithpicto($langs->trans("ModuleFamilyExperimental"), $langs->trans('DoNotUseInProduction'), 1, 'warning', '', 0, 3);
+    $head[$h][1] = Form::textwithpicto($langs->trans("ModuleFamilyExperimental"), $langs->trans('DoNotUseInProduction'), 1, 'warning', '', 0, 3);
     $head[$h][2] = 'expdev';
     $h++;
 }
@@ -451,7 +451,7 @@ if ($mode != 'marketplace')
         	$text=$langs->trans("ExternalModule",$dirofmodule);
         	if (! empty($objMod->editor_name) && $objMod->editor_name != 'dolibarr') $text.=' - '.$objMod->editor_name;
         	if (! empty($objMod->editor_web) && $objMod->editor_web != 'www.dolibarr.org') $text.=' - '.$objMod->editor_web;
-        	print $form->textwithpicto($version, $text, 1, 'help');
+        	print Form::textwithpicto($version, $text, 1, 'help');
         }
         else print $version;
         print "</td>\n";
diff --git a/htdocs/admin/notification.php b/htdocs/admin/notification.php
index e8ac153bea7..28dbe55c31e 100644
--- a/htdocs/admin/notification.php
+++ b/htdocs/admin/notification.php
@@ -239,12 +239,12 @@ foreach($listofnotifiedevents as $notifiedevent)
 			if (! empty($valuedet) && ! isValidEmail($valuedet,1)) $showwarning++;
 		}
 	    if ((! empty($conf->global->$param)) && $showwarning) $s.=' '.img_warning($langs->trans("ErrorBadEMail"));
-	    print $form->textwithpicto($s,$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients").'<br>'.$langs->trans("YouCanAlsoUseSupervisorKeyword"),1,'help','',0,2);
+	    print Form::textwithpicto($s,$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients").'<br>'.$langs->trans("YouCanAlsoUseSupervisorKeyword"),1,'help','',0,2);
 		print '<br>';
     }
     // New entry input fields
     $s='<input type="text" size="32" name="NOTIF_'.$notifiedevent['code'].'_new_key" value="">';		// Do not use type="email" here, we must be able to enter a list of email with , separator.
-    print $form->textwithpicto($s,$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients").'<br>'.$langs->trans("YouCanAlsoUseSupervisorKeyword"),1,'help','',0,2);
+    print Form::textwithpicto($s,$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients").'<br>'.$langs->trans("YouCanAlsoUseSupervisorKeyword"),1,'help','',0,2);
     print '</td>';
 
     print '<td>';
diff --git a/htdocs/admin/payment.php b/htdocs/admin/payment.php
index fa99e2c202b..f6d7de38048 100644
--- a/htdocs/admin/payment.php
+++ b/htdocs/admin/payment.php
@@ -193,7 +193,7 @@ foreach ($dirmodels as $reldir)
                             }
 
                             print '<td align="center">';
-                            print $form->textwithpicto('',$htmltooltip,1,0);
+                            print Form::textwithpicto('',$htmltooltip,1,0);
 
                             if ($conf->global->PAYMENT_ADDON.'.php' == $file)  // If module is the one used, we show existing errors
                             {
diff --git a/htdocs/admin/pdf.php b/htdocs/admin/pdf.php
index 3b968af09c3..c6564d3f450 100644
--- a/htdocs/admin/pdf.php
+++ b/htdocs/admin/pdf.php
@@ -404,7 +404,7 @@ else	// Show
 	print "<tr ".$bc[$var].">";
 	print '<td>';
 	$text = $langs->trans("ProtectAndEncryptPdfFiles");
-	$desc = $form->textwithpicto($text,$langs->transnoentities("ProtectAndEncryptPdfFilesDesc"),1);
+	$desc = Form::textwithpicto($text,$langs->transnoentities("ProtectAndEncryptPdfFilesDesc"),1);
 	print $desc;
 	print '</td>';
 	print '<td width="60">';
diff --git a/htdocs/admin/propal.php b/htdocs/admin/propal.php
index b4f1fe67e0b..54868b03c9b 100644
--- a/htdocs/admin/propal.php
+++ b/htdocs/admin/propal.php
@@ -356,7 +356,7 @@ foreach ($dirmodels as $reldir)
                         }
 
 						print '<td align="center">';
-						print $form->textwithpicto('',$htmltooltip,1,0);
+						print Form::textwithpicto('',$htmltooltip,1,0);
 						print '</td>';
 
 						print "</tr>\n";
@@ -503,7 +503,7 @@ foreach ($dirmodels as $reldir)
 
 
 	                            print '<td align="center">';
-	                            print $form->textwithpicto('',$htmltooltip,1,0);
+	                            print Form::textwithpicto('',$htmltooltip,1,0);
 	                            print '</td>';
 
 	                            // Preview
diff --git a/htdocs/admin/security_file.php b/htdocs/admin/security_file.php
index 1213a9b2238..5949b61d4d9 100644
--- a/htdocs/admin/security_file.php
+++ b/htdocs/admin/security_file.php
@@ -151,7 +151,7 @@ print '</tr>';
 $var=!$var;
 print '<tr '.$bc[$var].'>';
 print '<td>'.$langs->trans("UMask").'</td><td align="right">';
-print $form->textwithpicto('',$langs->trans("UMaskExplanation"));
+print Form::textwithpicto('',$langs->trans("UMaskExplanation"));
 print '</td>';
 print '<td class="nowrap">';
 print '<input class="flat" name="MAIN_UMASK" type="text" size="6" value="'.htmlentities($conf->global->MAIN_UMASK).'">';
diff --git a/htdocs/admin/security_other.php b/htdocs/admin/security_other.php
index ac0a1e883eb..a72a00b992c 100644
--- a/htdocs/admin/security_other.php
+++ b/htdocs/admin/security_other.php
@@ -140,7 +140,7 @@ if (function_exists("imagecreatefrompng"))
 }
 else
 {
-    $desc = $form->textwithpicto('',$langs->transnoentities("EnableGDLibraryDesc"),1,'warning');
+    $desc = Form::textwithpicto('',$langs->transnoentities("EnableGDLibraryDesc"),1,'warning');
     print $desc;
 }
 print '</td></tr>';
@@ -187,7 +187,7 @@ $sessiontimeout=ini_get("session.gc_maxlifetime");
 if (empty($conf->global->MAIN_SESSION_TIMEOUT)) $conf->global->MAIN_SESSION_TIMEOUT=$sessiontimeout;
 print '<tr '.$bc[$var].'>';
 print '<td>'.$langs->trans("SessionTimeOut").'</td><td align="right">';
-print $form->textwithpicto('',$langs->trans("SessionExplanation",ini_get("session.gc_probability"),ini_get("session.gc_divisor")));
+print Form::textwithpicto('',$langs->trans("SessionExplanation",ini_get("session.gc_probability"),ini_get("session.gc_divisor")));
 print '</td>';
 print '<td class="nowrap">';
 print '<input class="flat" name="MAIN_SESSION_TIMEOUT" type="text" size="6" value="'.htmlentities($conf->global->MAIN_SESSION_TIMEOUT).'"> '.strtolower($langs->trans("Seconds"));
diff --git a/htdocs/admin/supplier_invoice.php b/htdocs/admin/supplier_invoice.php
index 6fa692f47fc..f1f9ce5964c 100644
--- a/htdocs/admin/supplier_invoice.php
+++ b/htdocs/admin/supplier_invoice.php
@@ -291,7 +291,7 @@ foreach ($dirmodels as $reldir)
                         }
 
                         print '<td align="center">';
-                        print $form->textwithpicto('',$htmltooltip,1,0);
+                        print Form::textwithpicto('',$htmltooltip,1,0);
                         print '</td>';
 
                         print '</tr>';
@@ -431,7 +431,7 @@ foreach ($dirmodels as $reldir)
                     $htmltooltip.='<br>'.$langs->trans("PaymentMode").': '.yn($module->option_modereg,1,1);
                     $htmltooltip.='<br>'.$langs->trans("PaymentConditions").': '.yn($module->option_condreg,1,1);
                     print '<td align="center">';
-                    print $form->textwithpicto('',$htmltooltip,1,0);
+                    print Form::textwithpicto('',$htmltooltip,1,0);
                     print '</td>';
                     print '<td align="center">';
                     print '<a href="'.$_SERVER["PHP_SELF"].'?action=specimen&amp;module='.$name.'">'.img_object($langs->trans("Preview"),'order').'</a>';
diff --git a/htdocs/admin/supplier_order.php b/htdocs/admin/supplier_order.php
index 50eb9c9a322..d55b35b7960 100644
--- a/htdocs/admin/supplier_order.php
+++ b/htdocs/admin/supplier_order.php
@@ -307,7 +307,7 @@ foreach ($dirmodels as $reldir)
                         }
 
                         print '<td align="center">';
-                        print $form->textwithpicto('',$htmltooltip,1,0);
+                        print Form::textwithpicto('',$htmltooltip,1,0);
                         print '</td>';
 
                         print '</tr>';
@@ -441,7 +441,7 @@ foreach ($dirmodels as $reldir)
                     $htmltooltip.='<br>'.$langs->trans("PaymentMode").': '.yn($module->option_modereg,1,1);
                     $htmltooltip.='<br>'.$langs->trans("PaymentConditions").': '.yn($module->option_condreg,1,1);
                     print '<td align="center">';
-                    print $form->textwithpicto('',$htmltooltip,1,0);
+                    print Form::textwithpicto('',$htmltooltip,1,0);
                     print '</td>';
                     print '<td align="center">';
                     print '<a href="'.$_SERVER["PHP_SELF"].'?action=specimen&amp;module='.$name.'">'.img_object($langs->trans("Preview"),'order').'</a>';
diff --git a/htdocs/admin/supplier_payment.php b/htdocs/admin/supplier_payment.php
index 41737f7a9d5..aad9bb9040b 100644
--- a/htdocs/admin/supplier_payment.php
+++ b/htdocs/admin/supplier_payment.php
@@ -190,7 +190,7 @@ foreach ($dirmodels as $reldir)
                             }
 
                             print '<td align="center">';
-                            print $form->textwithpicto('',$htmltooltip,1,0);
+                            print Form::textwithpicto('',$htmltooltip,1,0);
 
                             if ($conf->global->PAYMENT_ADDON.'.php' == $file)  // If module is the one used, we show existing errors
                             {
diff --git a/htdocs/admin/supplier_proposal.php b/htdocs/admin/supplier_proposal.php
index 069c90ead8a..5cf09741cf1 100644
--- a/htdocs/admin/supplier_proposal.php
+++ b/htdocs/admin/supplier_proposal.php
@@ -333,7 +333,7 @@ foreach ($dirmodels as $reldir)
                         }
 
 						print '<td align="center">';
-						print $form->textwithpicto('',$htmltooltip,1,0);
+						print Form::textwithpicto('',$htmltooltip,1,0);
 						print '</td>';
 
 						print "</tr>\n";
@@ -480,7 +480,7 @@ foreach ($dirmodels as $reldir)
 
 
 	                            print '<td align="center">';
-	                            print $form->textwithpicto('',$htmltooltip,1,0);
+	                            print Form::textwithpicto('',$htmltooltip,1,0);
 	                            print '</td>';
 
 	                            // Preview
diff --git a/htdocs/admin/syslog.php b/htdocs/admin/syslog.php
index f3cfcff9807..f1d7f489e01 100644
--- a/htdocs/admin/syslog.php
+++ b/htdocs/admin/syslog.php
@@ -225,11 +225,11 @@ foreach ($syslogModules as $moduleName)
 	print '<td align="left">';
 	if ($module->getInfo())
 	{
-		print $form->textwithpicto('', $module->getInfo(), 1, 'help');
+		print Form::textwithpicto('', $module->getInfo(), 1, 'help');
 	}
 	if ($module->getWarning())
 	{
-		print $form->textwithpicto('', $module->getWarning(), 1, 'warning');
+		print Form::textwithpicto('', $module->getWarning(), 1, 'warning');
 	}
 	print '</td>';
 	print "</tr>\n";
diff --git a/htdocs/admin/system/database.php b/htdocs/admin/system/database.php
index 365cfaa449d..dc9f262a159 100644
--- a/htdocs/admin/system/database.php
+++ b/htdocs/admin/system/database.php
@@ -114,8 +114,8 @@ else
 				$show=1;
 			}
 			if ($show==0) print $paramval;
-			if ($show==1) print $form->textwithpicto($paramval,$text);
-			if ($show==2) print $form->textwithpicto($paramval,$text,1,'warning');
+			if ($show==1) print Form::textwithpicto($paramval,$text);
+			if ($show==2) print Form::textwithpicto($paramval,$text,1,'warning');
 			print '</td>';
 			print '</tr>'."\n";
 		}
diff --git a/htdocs/admin/system/dolibarr.php b/htdocs/admin/system/dolibarr.php
index eeea93a2fea..5df1083cd93 100644
--- a/htdocs/admin/system/dolibarr.php
+++ b/htdocs/admin/system/dolibarr.php
@@ -82,7 +82,7 @@ print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("SessionId").'</td><td
 $var=!$var;
 print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("CurrentSessionTimeOut").'</td><td>'.ini_get('session.gc_maxlifetime').' '.$langs->trans("seconds");
 print '</td><td align="right">';
-print $form->textwithpicto('',$langs->trans("SessionExplanation",ini_get("session.gc_probability"),ini_get("session.gc_divisor")));
+print Form::textwithpicto('',$langs->trans("SessionExplanation",ini_get("session.gc_probability"),ini_get("session.gc_divisor")));
 print "</td></tr>\n";
 $var=!$var;
 print '<tr '.$bc[$var].'><td width="300">'.$langs->trans("CurrentTheme").'</td><td colspan="2">'.$conf->theme.'</td></tr>'."\n";
@@ -182,7 +182,7 @@ $val=($a>=0?'+':'').$a;
 $val.=' ('.($a=='unknown'?'unknown':($a>=0?'+':'').($a*3600)).')';
 $val.=' &nbsp; &nbsp; &nbsp; '.getServerTimeZoneString();
 $val.=' &nbsp; &nbsp; &nbsp; '.$langs->trans("DaylingSavingTime").': '.($daylight==='unknown'?'unknown':($a==$c?yn($daylight):yn(0).($daylight?'  &nbsp; &nbsp; ('.$langs->trans('YesInSummer').')':'')));
-print $form->textwithtooltip($val,$txt,2,1,img_info(''));
+print Form::textwithtooltip($val,$txt,2,1,img_info(''));
 print '</td></tr>'."\n";	// value defined in http://fr3.php.net/manual/en/timezones.europe.php
 $var=!$var;
 print '<tr '.$bc[$var].'><td width="300">&nbsp; => '.$langs->trans("CurrentHour").'</td><td>'.dol_print_date(dol_now(),'dayhour','tzserver').'</td></tr>'."\n";
@@ -202,7 +202,7 @@ if ($conf->db->type == 'mysql' || $conf->db->type == 'mysqli')
 	if ($resql)
 	{
 		$obj = $db->fetch_object($resql);
-		print $form->textwithtooltip($obj->Value,$langs->trans('TZHasNoEffect'),2,1,img_info(''));
+		print Form::textwithtooltip($obj->Value,$langs->trans('TZHasNoEffect'),2,1,img_info(''));
 	}
 	print '</td></tr>'."\n";
 }
diff --git a/htdocs/admin/tools/listevents.php b/htdocs/admin/tools/listevents.php
index 4ba759a66fa..ffe6e81af3f 100644
--- a/htdocs/admin/tools/listevents.php
+++ b/htdocs/admin/tools/listevents.php
@@ -270,7 +270,7 @@ if ($result)
 		// More informations
 		print '<td align="right">';
 		$htmltext='<b>'.$langs->trans("UserAgent").'</b>: '.($obj->user_agent?$obj->user_agent:$langs->trans("Unknown"));
-		print $form->textwithpicto('',$htmltext);
+		print Form::textwithpicto('',$htmltext);
 		print '</td>';
 
 		print "</tr>\n";
diff --git a/htdocs/admin/tools/listsessions.php b/htdocs/admin/tools/listsessions.php
index c313c91a7bd..6dee42be6ac 100644
--- a/htdocs/admin/tools/listsessions.php
+++ b/htdocs/admin/tools/listsessions.php
@@ -150,7 +150,7 @@ if ($savehandler == 'files')
 
 		// ID
 		print '<td align="left" class="nowrap">';
-		if ("$key" == session_id()) print $form->textwithpicto($key,$langs->trans("YourSession"));
+		if ("$key" == session_id()) print Form::textwithpicto($key,$langs->trans("YourSession"));
 		else print $key;
 		print '</td>';
 
diff --git a/htdocs/admin/triggers.php b/htdocs/admin/triggers.php
index de59c9136b2..3f75499559a 100644
--- a/htdocs/admin/triggers.php
+++ b/htdocs/admin/triggers.php
@@ -72,7 +72,7 @@ foreach ($triggers as $trigger)
 	$text=$trigger['info'];
 	$text.="<br>\n<strong>".$langs->trans("File")."</strong>:<br>\n".$trigger['relpath'];
 	//$text.="\n".$langs->trans("ExternalModule",$trigger['isocreorexternal']);
-	print $form->textwithpicto('', $text);
+	print Form::textwithpicto('', $text);
 	print '</td>';
 	print '</tr>';
 }
diff --git a/htdocs/admin/websites.php b/htdocs/admin/websites.php
index de4c0472f62..f7b29607bd4 100644
--- a/htdocs/admin/websites.php
+++ b/htdocs/admin/websites.php
@@ -381,7 +381,7 @@ if ($id)
             {
                 print '<td align="'.$align.'">';
             	if (! empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i',$tabhelp[$id][$value])) print '<a href="'.$tabhelp[$id][$value].'" target="_blank">'.$valuetoshow.' '.img_help(1,$valuetoshow).'</a>';
-            	else if (! empty($tabhelp[$id][$value])) print $form->textwithpicto($valuetoshow,$tabhelp[$id][$value]);
+            	else if (! empty($tabhelp[$id][$value])) print Form::textwithpicto($valuetoshow,$tabhelp[$id][$value]);
             	else print $valuetoshow;
                 print '</td>';
              }
diff --git a/htdocs/categories/admin/categorie.php b/htdocs/categories/admin/categorie.php
index d1af6bdafb2..2fb95bdbf33 100644
--- a/htdocs/categories/admin/categorie.php
+++ b/htdocs/categories/admin/categorie.php
@@ -99,7 +99,7 @@ $form = new Form($db);
 $var=!$var;
 print '<tr '.$bc[$var].'>';
 print '<td>'.$langs->trans("CategorieRecursiv").'</td>';
-print '<td align="center" width="20">'. $form->textwithpicto('',$langs->trans("CategorieRecursivHelp"),1,'help').'</td>';
+print '<td align="center" width="20">'. Form::textwithpicto('',$langs->trans("CategorieRecursivHelp"),1,'help').'</td>';
 
 print '<td align="center" width="100">';
 if ($conf->use_javascript_ajax)
diff --git a/htdocs/categories/categorie.php b/htdocs/categories/categorie.php
index 1775c14767d..e8ea62f5607 100644
--- a/htdocs/categories/categorie.php
+++ b/htdocs/categories/categorie.php
@@ -430,7 +430,7 @@ else if ($id || $ref)
         // Morphy
         print '<tr><td>'.$langs->trans("Nature").'</td><td class="valeur" >'.$member->getmorphylib().'</td>';
         /*print '<td rowspan="'.$rowspan.'" align="center" valign="middle" width="25%">';
-        print $form->showphoto('memberphoto',$member);
+        print Form::showphoto('memberphoto',$member);
         print '</td>';*/
         print '</tr>';
 
diff --git a/htdocs/comm/mailing/card.php b/htdocs/comm/mailing/card.php
index 9a7d0349f41..6960a9ced33 100644
--- a/htdocs/comm/mailing/card.php
+++ b/htdocs/comm/mailing/card.php
@@ -826,12 +826,12 @@ else
 				if ($conf->global->MAILING_LIMIT_SENDBYWEB > 0)
 				{
 					$text=$langs->trans('LimitSendingEmailing',$conf->global->MAILING_LIMIT_SENDBYWEB);
-					print $form->textwithpicto($nbemail,$text,1,'warning');
+					print Form::textwithpicto($nbemail,$text,1,'warning');
 				}
 				else
 				{
 					$text=$langs->trans('NotEnoughPermissions');
-					print $form->textwithpicto($nbemail,$text,1,'warning');
+					print Form::textwithpicto($nbemail,$text,1,'warning');
 				}
 
 			}
@@ -1072,7 +1072,7 @@ else
 			if (!empty($conf->global->MAILING_LIMIT_SENDBYWEB) && is_numeric($nbemail) && $conf->global->MAILING_LIMIT_SENDBYWEB < $nbemail)
 			{
 				$text=$langs->trans('LimitSendingEmailing',$conf->global->MAILING_LIMIT_SENDBYWEB);
-				print $form->textwithpicto($nbemail,$text,1,'warning');
+				print Form::textwithpicto($nbemail,$text,1,'warning');
 			}
 			else
 			{
diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php
index 0c133fac6df..a992ed73fd2 100644
--- a/htdocs/comm/mailing/cibles.php
+++ b/htdocs/comm/mailing/cibles.php
@@ -208,7 +208,7 @@ if ($object->fetch($id) >= 0)
 	if (!empty($conf->global->MAILING_LIMIT_SENDBYWEB) && $conf->global->MAILING_LIMIT_SENDBYWEB < $nbemail)
 	{
 		$text=$langs->trans('LimitSendingEmailing',$conf->global->MAILING_LIMIT_SENDBYWEB);
-		print $form->textwithpicto($nbemail,$text,1,'warning');
+		print Form::textwithpicto($nbemail,$text,1,'warning');
 	}
 	else
 	{
diff --git a/htdocs/comm/mailing/list.php b/htdocs/comm/mailing/list.php
index 66474afea8e..7094163c9a7 100644
--- a/htdocs/comm/mailing/list.php
+++ b/htdocs/comm/mailing/list.php
@@ -150,7 +150,7 @@ if ($result)
 			if ($obj->statut != 3 && !empty($conf->global->MAILING_LIMIT_SENDBYWEB) && $conf->global->MAILING_LIMIT_SENDBYWEB < $nbemail)
 			{
 				$text=$langs->trans('LimitSendingEmailing',$conf->global->MAILING_LIMIT_SENDBYWEB);
-				print $form->textwithpicto($nbemail,$text,1,'warning');
+				print Form::textwithpicto($nbemail,$text,1,'warning');
 			}
 			else
 			{
diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php
index 3a2a28c984d..3c330576f04 100644
--- a/htdocs/comm/propal.php
+++ b/htdocs/comm/propal.php
@@ -1441,7 +1441,7 @@ if ($action == 'create')
 	if (!empty($conf->incoterm->enabled))
 	{
 		print '<tr>';
-		print '<td><label for="incoterm_id">'.$form->textwithpicto($langs->trans("IncotermLabel"), $soc->libelle_incoterms, 1).'</label></td>';
+		print '<td><label for="incoterm_id">'.Form::textwithpicto($langs->trans("IncotermLabel"), $soc->libelle_incoterms, 1).'</label></td>';
         print '<td colspan="3" class="maxwidthonsmartphone">';
         print $form->select_incoterms((!empty($soc->fk_incoterms) ? $soc->fk_incoterms : ''), (!empty($soc->location_incoterms)?$soc->location_incoterms:''));
 		print '</td></tr>';
@@ -2064,7 +2064,7 @@ if ($action == 'create')
         print '<td colspan="5">';
 		if ($action != 'editincoterm')
 		{
-			print $form->textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1);
+			print Form::textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1);
 		}
 		else
 		{
diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php
index 7759002fdfd..78de2c70fa7 100644
--- a/htdocs/commande/card.php
+++ b/htdocs/commande/card.php
@@ -1583,7 +1583,7 @@ if ($action == 'create' && $user->rights->commande->creer)
 	if (!empty($conf->incoterm->enabled))
 	{
 		print '<tr>';
-		print '<td><label for="incoterm_id">'.$form->textwithpicto($langs->trans("IncotermLabel"), $objectsrc->libelle_incoterms, 1).'</label></td>';
+		print '<td><label for="incoterm_id">'.Form::textwithpicto($langs->trans("IncotermLabel"), $objectsrc->libelle_incoterms, 1).'</label></td>';
         print '<td colspan="3" class="maxwidthonsmartphone">';
         print $form->select_incoterms((!empty($objectsrc->fk_incoterms) ? $objectsrc->fk_incoterms : ''), (!empty($objectsrc->location_incoterms)?$objectsrc->location_incoterms:''));
 		print '</td></tr>';
@@ -2281,7 +2281,7 @@ if ($action == 'create' && $user->rights->commande->creer)
 	        print '<td colspan="3">';
 			if ($action != 'editincoterm')
 			{
-				print $form->textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1);
+				print Form::textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1);
 			}
 			else
 			{
diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php
index 1a66ccf9f21..692d189e457 100644
--- a/htdocs/commande/list.php
+++ b/htdocs/commande/list.php
@@ -543,10 +543,10 @@ if ($resql)
             print '<td>';
             if ($nbprod)
             {
-                print $form->textwithtooltip('',$text_info,2,1,$text_icon,'',2);
+                print Form::textwithtooltip('',$text_info,2,1,$text_icon,'',2);
             }
             if ($warning) {
-                print $form->textwithtooltip('', $langs->trans('NotEnoughForAllOrders').'<br>'.$text_warning, 2, 1, img_picto('', 'error'),'',2);
+                print Form::textwithtooltip('', $langs->trans('NotEnoughForAllOrders').'<br>'.$text_warning, 2, 1, img_picto('', 'error'),'',2);
             }
             print '</td>';
         }
diff --git a/htdocs/commande/orderstoinvoice.php b/htdocs/commande/orderstoinvoice.php
index e94daeca65a..a482b2b480c 100644
--- a/htdocs/commande/orderstoinvoice.php
+++ b/htdocs/commande/orderstoinvoice.php
@@ -420,7 +420,7 @@ if ($action == 'create' && !$error)
 	print '<tr height="18"><td width="16px" valign="middle">';
 	print '<input type="radio" name="type" value="0"'.(GETPOST('type')==0?' checked':'').'>';
 	print '</td><td valign="middle">';
-	$desc=$html->textwithpicto($langs->trans("InvoiceStandardAsk"),$langs->transnoentities("InvoiceStandardDesc"),1);
+	$desc=Form::textwithpicto($langs->trans("InvoiceStandardAsk"),$langs->transnoentities("InvoiceStandardDesc"),1);
 	print $desc;
 	print '</td></tr>'."\n";
 	print '</table>';
diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php
index 88ec64f0a7b..5a00c796038 100644
--- a/htdocs/compta/facture.php
+++ b/htdocs/compta/facture.php
@@ -2169,7 +2169,7 @@ if ($action == 'create')
 	// Standard invoice
 	print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">';
 	$tmp='<input type="radio" id="radio_standard" name="type" value="0"' . (GETPOST('type') == 0 ? ' checked' : '') . '> ';
-	$desc = $form->textwithpicto($tmp.$langs->trans("InvoiceStandardAsk"), $langs->transnoentities("InvoiceStandardDesc"), 1, 'help', '', 0, 3);
+	$desc = Form::textwithpicto($tmp.$langs->trans("InvoiceStandardAsk"), $langs->transnoentities("InvoiceStandardDesc"), 1, 'help', '', 0, 3);
 	print $desc;
 	print '</div></div>';
 
@@ -2186,7 +2186,7 @@ if ($action == 'create')
 		});
 		</script>';
 
-		$desc = $form->textwithpicto($tmp.$langs->trans("InvoiceDeposit"), $langs->transnoentities("InvoiceDepositDesc"), 1, 'help', '', 0, 3);
+		$desc = Form::textwithpicto($tmp.$langs->trans("InvoiceDeposit"), $langs->transnoentities("InvoiceDepositDesc"), 1, 'help', '', 0, 3);
 		print '<table class="nobordernopadding"><tr><td>';
 		print $desc;
 		print '</td>';
@@ -2210,7 +2210,7 @@ if ($action == 'create')
 			// First situation invoice
 			print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">';
 			$tmp='<input type="radio" name="type" value="5"' . (GETPOST('type') == 5 ? ' checked' : '') . '> ';
-			$desc = $form->textwithpicto($tmp.$langs->trans("InvoiceFirstSituationAsk"), $langs->transnoentities("InvoiceFirstSituationDesc"), 1, 'help', '', 0, 3);
+			$desc = Form::textwithpicto($tmp.$langs->trans("InvoiceFirstSituationAsk"), $langs->transnoentities("InvoiceFirstSituationDesc"), 1, 'help', '', 0, 3);
 			print $desc;
 			print '</div></div>';
 
@@ -2224,7 +2224,7 @@ if ($action == 'create')
 			$text .= '<select class="flat" id="situations" name="situations">';
 			$text .= $opt;
 			$text .= '</select>';
-			$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceSituationDesc"), 1, 'help', '', 0, 3);
+			$desc = Form::textwithpicto($text, $langs->transnoentities("InvoiceSituationDesc"), 1, 'help', '', 0, 3);
 			print $desc;
 			print '</div></div>';
 		}
@@ -2253,7 +2253,7 @@ if ($action == 'create')
 			$text .= '<option value="-1">' . $langs->trans("NoReplacableInvoice") . '</option>';
 		}
 		$text .= '</select>';
-		$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceReplacementDesc"), 1, 'help', '', 0, 3);
+		$desc = Form::textwithpicto($text, $langs->transnoentities("InvoiceReplacementDesc"), 1, 'help', '', 0, 3);
 		print $desc;
 		print '</div></div>';
 	}
@@ -2263,7 +2263,7 @@ if ($action == 'create')
 		$tmp='<input type="radio" name="type" id="radio_replacement" value="0" disabled> ';
 		$text = $tmp.$langs->trans("InvoiceReplacement") . ' ';
 		$text.= '('.$langs->trans("YouMustCreateInvoiceFromThird").') ';
-		$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceReplacementDesc"), 1, 'help', '', 0, 3);
+		$desc = Form::textwithpicto($text, $langs->transnoentities("InvoiceReplacementDesc"), 1, 'help', '', 0, 3);
 		print $desc;
 		print '</div></div>';
 	}
@@ -2305,7 +2305,7 @@ if ($action == 'create')
 				$text .= '<option value="-1">' . $langs->trans("NoInvoiceToCorrect") . '</option>';
 			}
 			$text .= '</select>';
-			$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc"), 1, 'help', '', 0, 3);
+			$desc = Form::textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc"), 1, 'help', '', 0, 3);
 			print $desc;
 
 			print '<div id="credit_note_options" class="clearboth">';
@@ -2321,7 +2321,7 @@ if ($action == 'create')
 			$tmp='<input type="radio" name="type" id="radio_creditnote" value="0" disabled> ';
 			$text = $tmp.$langs->trans("InvoiceAvoir") . ' ';
 			$text.= '('.$langs->trans("YouMustCreateInvoiceFromThird").') ';
-			$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc"), 1, 'help', '', 0, 3);
+			$desc = Form::textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc"), 1, 'help', '', 0, 3);
 			print $desc;
 			print '</div></div>' . "\n";
 		}
@@ -2390,7 +2390,7 @@ if ($action == 'create')
 	if (!empty($conf->incoterm->enabled))
 	{
 		print '<tr>';
-		print '<td><label for="incoterm_id">'.$form->textwithpicto($langs->trans("IncotermLabel"), $objectsrc->libelle_incoterms, 1).'</label></td>';
+		print '<td><label for="incoterm_id">'.Form::textwithpicto($langs->trans("IncotermLabel"), $objectsrc->libelle_incoterms, 1).'</label></td>';
         print '<td colspan="2" class="maxwidthonsmartphone">';
         print $form->select_incoterms((!empty($objectsrc->fk_incoterms) ? $objectsrc->fk_incoterms : ''), (!empty($objectsrc->location_incoterms)?$objectsrc->location_incoterms:''));
 		print '</td></tr>';
@@ -2817,9 +2817,9 @@ else if ($id > 0 || ! empty($ref))
 		$i ++;
 		// Texte
 		$i = 0;
-		$close [$i] ['reason'] = $form->textwithpicto($langs->transnoentities("ConfirmClassifyPaidPartiallyReasonDiscountVat", $resteapayer, $langs->trans("Currency" . $conf->currency)), $close [$i] ['label'], 1);
+		$close [$i] ['reason'] = Form::textwithpicto($langs->transnoentities("ConfirmClassifyPaidPartiallyReasonDiscountVat", $resteapayer, $langs->trans("Currency" . $conf->currency)), $close [$i] ['label'], 1);
 		$i ++;
-		$close [$i] ['reason'] = $form->textwithpicto($langs->transnoentities("ConfirmClassifyPaidPartiallyReasonBadCustomer", $resteapayer, $langs->trans("Currency" . $conf->currency)), $close [$i] ['label'], 1);
+		$close [$i] ['reason'] = Form::textwithpicto($langs->transnoentities("ConfirmClassifyPaidPartiallyReasonBadCustomer", $resteapayer, $langs->trans("Currency" . $conf->currency)), $close [$i] ['label'], 1);
 		$i ++;
 		// arrayreasons[code]=reason
 		foreach ($close as $key => $val) {
@@ -2851,8 +2851,8 @@ else if ($id > 0 || ! empty($ref))
 			$close [1] ['label'] = $langs->trans("ConfirmClassifyPaidPartiallyReasonBadCustomerDesc");
 			$close [2] ['label'] = $langs->trans("ConfirmClassifyAbandonReasonOtherDesc");
 			// Texte
-			$close [1] ['reason'] = $form->textwithpicto($langs->transnoentities("ConfirmClassifyPaidPartiallyReasonBadCustomer", $object->ref), $close [1] ['label'], 1);
-			$close [2] ['reason'] = $form->textwithpicto($langs->transnoentities("ConfirmClassifyAbandonReasonOther"), $close [2] ['label'], 1);
+			$close [1] ['reason'] = Form::textwithpicto($langs->transnoentities("ConfirmClassifyPaidPartiallyReasonBadCustomer", $object->ref), $close [1] ['label'], 1);
+			$close [2] ['reason'] = Form::textwithpicto($langs->transnoentities("ConfirmClassifyAbandonReasonOther"), $close [2] ['label'], 1);
 			// arrayreasons
 			$arrayreasons [$close [1] ['code']] = $close [1] ['reason'];
 			$arrayreasons [$close [2] ['code']] = $close [2] ['reason'];
@@ -3026,7 +3026,7 @@ else if ($id > 0 || ! empty($ref))
 				} else {
 					$text = $langs->trans("CompanyHasAbsoluteDiscount", price($absolute_discount), $langs->transnoentities("Currency" . $conf->currency));
 					$text2 = $langs->trans("AbsoluteDiscountUse");
-					print $form->textwithpicto($text, $text2);
+					print Form::textwithpicto($text, $text2);
 				}
 			}
 		} else {
@@ -3050,7 +3050,7 @@ else if ($id > 0 || ! empty($ref))
 		if ($object->statut != 1 || $object->type == Facture::TYPE_CREDIT_NOTE || $object->type == Facture::TYPE_DEPOSIT) {
 			if ($object->statut == 0 && $object->type != Facture::TYPE_DEPOSIT) {
 				$text = $langs->trans("CompanyHasCreditNote", price($absolute_creditnote), $langs->transnoentities("Currency" . $conf->currency));
-				print $form->textwithpicto($text, $langs->trans("CreditNoteDepositUse"));
+				print Form::textwithpicto($text, $langs->trans("CreditNoteDepositUse"));
 			} else {
 				print $langs->trans("CompanyHasCreditNote", price($absolute_creditnote), $langs->transnoentities("Currency" . $conf->currency)) . '.';
 			}
@@ -3342,21 +3342,21 @@ else if ($id > 0 || ! empty($ref))
 		// Paye partiellement 'escompte'
 		if (($object->statut == 2 || $object->statut == 3) && $object->close_code == 'discount_vat') {
 			print '<tr><td colspan="' . $nbcols . '" align="right" class="nowrap">';
-			print $form->textwithpicto($langs->trans("Discount") . ':', $langs->trans("HelpEscompte"), - 1);
+			print Form::textwithpicto($langs->trans("Discount") . ':', $langs->trans("HelpEscompte"), - 1);
 			print '</td><td align="right">' . price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye) . '</td><td>&nbsp;</td></tr>';
 			$resteapayeraffiche = 0;
 		}
 		// Paye partiellement ou Abandon 'badcustomer'
 		if (($object->statut == 2 || $object->statut == 3) && $object->close_code == 'badcustomer') {
 			print '<tr><td colspan="' . $nbcols . '" align="right" class="nowrap">';
-			print $form->textwithpicto($langs->trans("Abandoned") . ':', $langs->trans("HelpAbandonBadCustomer"), - 1);
+			print Form::textwithpicto($langs->trans("Abandoned") . ':', $langs->trans("HelpAbandonBadCustomer"), - 1);
 			print '</td><td align="right">' . price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye) . '</td><td>&nbsp;</td></tr>';
 			// $resteapayeraffiche=0;
 		}
 		// Paye partiellement ou Abandon 'product_returned'
 		if (($object->statut == 2 || $object->statut == 3) && $object->close_code == 'product_returned') {
 			print '<tr><td colspan="' . $nbcols . '" align="right" class="nowrap">';
-			print $form->textwithpicto($langs->trans("ProductReturned") . ':', $langs->trans("HelpAbandonProductReturned"), - 1);
+			print Form::textwithpicto($langs->trans("ProductReturned") . ':', $langs->trans("HelpAbandonProductReturned"), - 1);
 			print '</td><td align="right">' . price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye) . '</td><td>&nbsp;</td></tr>';
 			$resteapayeraffiche = 0;
 		}
@@ -3366,7 +3366,7 @@ else if ($id > 0 || ! empty($ref))
 			$text = $langs->trans("HelpAbandonOther");
 			if ($object->close_note)
 				$text .= '<br><br><b>' . $langs->trans("Reason") . '</b>:' . $object->close_note;
-			print $form->textwithpicto($langs->trans("Abandoned") . ':', $text, - 1);
+			print Form::textwithpicto($langs->trans("Abandoned") . ':', $text, - 1);
 			print '</td><td align="right">' . price($object->total_ttc - $creditnoteamount - $depositamount - $totalpaye) . '</td><td>&nbsp;</td></tr>';
 			$resteapayeraffiche = 0;
 		}
@@ -3701,7 +3701,7 @@ else if ($id > 0 || ! empty($ref))
         print '<td colspan="3">';
 		if ($action != 'editincoterm')
 		{
-			print $form->textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1);
+			print Form::textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1);
 		}
 		else
 		{
diff --git a/htdocs/compta/facture/apercu.php b/htdocs/compta/facture/apercu.php
index 1172769e95a..1250118f40e 100644
--- a/htdocs/compta/facture/apercu.php
+++ b/htdocs/compta/facture/apercu.php
@@ -177,7 +177,7 @@ if ($id > 0 || ! empty($ref))
                     {
                         $text=$langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency));
                         $text2=$langs->trans("AbsoluteDiscountUse");
-                        print $form->textwithpicto($text,$text2);
+                        print Form::textwithpicto($text,$text2);
                     }
                 }
             }
@@ -206,7 +206,7 @@ if ($id > 0 || ! empty($ref))
                 if ($object->statut == Facture::STATUS_DRAFT && $object->type != Facture::TYPE_DEPOSIT)
                 {
                     $text=$langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->currency));
-                    print $form->textwithpicto($text,$langs->trans("CreditNoteDepositUse"));
+                    print Form::textwithpicto($text,$langs->trans("CreditNoteDepositUse"));
                 }
                 else
                 {
diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php
index 9aa6aca1663..76a991dfdd1 100644
--- a/htdocs/compta/facture/fiche-rec.php
+++ b/htdocs/compta/facture/fiche-rec.php
@@ -342,7 +342,7 @@ if ($action == 'create')
 		print '<table class="border" width="100%">';
 		
 		// Frequency
-		print "<tr><td>".$form->textwithpicto($langs->trans("Frequency"), $langs->transnoentitiesnoconv('toolTipFrequency'))."</td><td>";
+		print "<tr><td>".Form::textwithpicto($langs->trans("Frequency"), $langs->transnoentitiesnoconv('toolTipFrequency'))."</td><td>";
 		print "<input type='text' name='frequency' value='".GETPOST('frequency', 'int')."' size='5' />&nbsp;".Form::selectarray('unit_frequency', array('d'=>$langs->trans('Day'), 'm'=>$langs->trans('Month'), 'y'=>$langs->trans('Year')), (GETPOST('unit_frequency')?GETPOST('unit_frequency'):'m'));
 		print "</td></tr>";
 		
@@ -449,7 +449,7 @@ if ($action == 'create')
 					$text=$product_static->getNomUrl(1);
 					$text.= ' - '.(! empty($objp->custom_label)?$objp->custom_label:$objp->product_label);
 					$description=(! empty($conf->global->PRODUIT_DESC_IN_FORM)?'':dol_htmlentitiesbr($objp->description));
-					print $form->textwithtooltip($text,$description,3,'','',$i);
+					print Form::textwithtooltip($text,$description,3,'','',$i);
 
 					// Show range
 					print_date_range($db->jdate($objp->date_start), $db->jdate($objp->date_end));
@@ -471,7 +471,7 @@ if ($action == 'create')
 					if (! empty($objp->custom_label)) {
 
 						$text.= ' <strong>'.$objp->custom_label.'</strong>';
-						print $form->textwithtooltip($text,dol_htmlentitiesbr($objp->description),3,'','',$i);
+						print Form::textwithtooltip($text,dol_htmlentitiesbr($objp->description),3,'','',$i);
 
 					} else {
 
@@ -897,7 +897,7 @@ else
 				$text=$product_static->getNomUrl(1);
 				$text.= ' - '.(! empty($object->lines[$i]->label)?$object->lines[$i]->label:$object->lines[$i]->product_label);
 				$description=(! empty($conf->global->PRODUIT_DESC_IN_FORM)?'':dol_htmlentitiesbr($object->lines[$i]->desc));
-				print $form->textwithtooltip($text,$description,3,'','',$i);
+				print Form::textwithtooltip($text,$description,3,'','',$i);
 
 				// Show range
 				print_date_range($object->lines[$i]->date_start, $object->lines[$i]->date_end);
@@ -918,7 +918,7 @@ else
 				if (! empty($object->lines[$i]->label)) {
 
 					$text.= ' <strong>'.$object->lines[$i]->label.'</strong>';
-					print $form->textwithtooltip($text,dol_htmlentitiesbr($object->lines[$i]->desc),3,'','',$i);
+					print Form::textwithtooltip($text,dol_htmlentitiesbr($object->lines[$i]->desc),3,'','',$i);
 
 				} else {
 
diff --git a/htdocs/compta/facture/prelevement.php b/htdocs/compta/facture/prelevement.php
index 00254b7440f..b881086657a 100644
--- a/htdocs/compta/facture/prelevement.php
+++ b/htdocs/compta/facture/prelevement.php
@@ -252,7 +252,7 @@ if ($object->id > 0)
 				{
 					$text=$langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency));
 					$text2=$langs->trans("AbsoluteDiscountUse");
-					print $form->textwithpicto($text,$text2);
+					print Form::textwithpicto($text,$text2);
 				}
 			}
 		}
@@ -272,7 +272,7 @@ if ($object->id > 0)
 			if ($object->statut == Facture::STATUS_DRAFT && $object->type != Facture::TYPE_DEPOSIT)
 			{
 				$text=$langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->currency));
-				print $form->textwithpicto($text,$langs->trans("CreditNoteDepositUse"));
+				print Form::textwithpicto($text,$langs->trans("CreditNoteDepositUse"));
 			}
 			else print $langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->currency)).'.';
 		}
diff --git a/htdocs/contact/card.php b/htdocs/contact/card.php
index a2b55c3c034..1d2432a586f 100644
--- a/htdocs/contact/card.php
+++ b/htdocs/contact/card.php
@@ -980,7 +980,7 @@ else
             print '<td>'.fieldLabel('Photo','photoinput').'</td>';
             print '<td colspan="3">';
             if ($object->photo) {
-                print $form->showphoto('contact',$object);
+                print Form::showphoto('contact',$object);
                 print "<br>\n";
             }
             print '<table class="nobordernopadding">';
@@ -1036,7 +1036,7 @@ else
             $formquestion=array(
             array('label' => $langs->trans("LoginToCreate"), 'type' => 'text', 'name' => 'login', 'value' => $login),
             array('label' => $langs->trans("Password"), 'type' => 'text', 'name' => 'password', 'value' => $password),
-            //array('label' => $form->textwithpicto($langs->trans("Type"),$langs->trans("InternalExternalDesc")), 'type' => 'select', 'name' => 'intern', 'default' => 1, 'values' => array(0=>$langs->trans('Internal'),1=>$langs->trans('External')))
+            //array('label' => Form::textwithpicto($langs->trans("Type"),$langs->trans("InternalExternalDesc")), 'type' => 'select', 'name' => 'intern', 'default' => 1, 'values' => array(0=>$langs->trans('Internal'),1=>$langs->trans('External')))
             );
             $text=$langs->trans("ConfirmCreateContact").'<br>';
             if (! empty($conf->societe->enabled))
diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php
index 1dfd6acb8bc..c579c7faf56 100644
--- a/htdocs/contact/list.php
+++ b/htdocs/contact/list.php
@@ -434,7 +434,7 @@ if ($result)
     }
 
     $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
-    $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
+    $selectedfields=Form::multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
     
     print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">';
 
diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php
index c8903d8d363..427e0962b6d 100644
--- a/htdocs/contrat/card.php
+++ b/htdocs/contrat/card.php
@@ -1491,7 +1491,7 @@ else
 							$description = '';	// Already added into main visible desc
 						}
 
-                        echo $form->textwithtooltip($text,$description,3,'','',$cursorline,0,(!empty($line->fk_parent_line)?img_picto('', 'rightarrow'):''));
+                        echo Form::textwithtooltip($text,$description,3,'','',$cursorline,0,(!empty($line->fk_parent_line)?img_picto('', 'rightarrow'):''));
 
                         print '</td>';
                     }
diff --git a/htdocs/core/ajax/ajaxdirtree.php b/htdocs/core/ajax/ajaxdirtree.php
index 8b9102a799f..144245f8aa4 100644
--- a/htdocs/core/ajax/ajaxdirtree.php
+++ b/htdocs/core/ajax/ajaxdirtree.php
@@ -194,7 +194,7 @@ if (file_exists($fullpathselecteddir))
     				$htmltooltip.='<b>'.$langs->trans("ECMNbOfFilesInDir").'</b>: '.((isset($val['cachenbofdoc']) && $val['cachenbofdoc'] >= 0)?$val['cachenbofdoc']:$langs->trans("NeedRefresh")).'<br>';
     				if ($nboffilesinsubdir > 0) $htmltooltip.='<b>'.$langs->trans("ECMNbOfFilesInSubDir").'</b>: '.$nboffilesinsubdir;
     				else $htmltooltip.='<b>'.$langs->trans("ECMNbOfSubDir").'</b>: '.($nbofsubdir >= 0 ? $nbofsubdir : $langs->trans("NeedRefresh")).'<br>';
-    				print $form->textwithpicto('',$htmltooltip,1,"info");
+    				print Form::textwithpicto('',$htmltooltip,1,"info");
     				print "</td>";
 
     				print "</tr></table>\n";
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 6e8af102616..acbe2391816 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -370,7 +370,7 @@ class Form
 
     /**
      *	Show a text and picto with tooltip on text or picto.
-     *  Can be called by an instancied $form->textwithtooltip or by a static call Form::textwithtooltip
+     *  Can be called by an instancied Form::textwithtooltip or by a static call Form::textwithtooltip
      *
      *	@param	string		$text				Text to show
      *	@param	string		$htmltext			HTML content of tooltip. Must be HTML/UTF8 encoded.
@@ -384,7 +384,7 @@ class Form
      *	@return	string							Code html du tooltip (texte+picto)
      *	@see	Use function textwithpicto if you can.
      */
-    function textwithtooltip($text, $htmltext, $tooltipon = 1, $direction = 0, $img = '', $extracss = '', $notabs = 2, $incbefore = '', $noencodehtmltext = 0)
+    public static function textwithtooltip($text, $htmltext, $tooltipon = 1, $direction = 0, $img = '', $extracss = '', $notabs = 2, $incbefore = '', $noencodehtmltext = 0)
     {
         global $conf;
 
@@ -446,7 +446,7 @@ class Form
      *  @param	int		$notabs				0=Include table and tr tags, 1=Do not include table and tr tags, 2=use div, 3=use span
      * 	@return	string						HTML code of text, picto, tooltip
      */
-    function textwithpicto($text, $htmltext, $direction = 1, $type = 'help', $extracss = '', $noencodehtmltext = 0, $notabs = 2)
+    public static function textwithpicto($text, $htmltext, $direction = 1, $type = 'help', $extracss = '', $noencodehtmltext = 0, $notabs = 2)
     {
         global $conf;
 
@@ -479,7 +479,7 @@ class Form
         elseif ($type == 'admin') $img = img_picto($alt, 'star');
         elseif ($type == 'warning') $img = img_warning($alt);
 
-        return $this->textwithtooltip($text, $htmltext, 2, $direction, $img, $extracss, $notabs, '', $noencodehtmltext);
+        return self::textwithtooltip($text, $htmltext, 2, $direction, $img, $extracss, $notabs, '', $noencodehtmltext);
     }
 
     /**
@@ -3098,7 +3098,7 @@ class Form
                 require_once DOL_DOCUMENT_ROOT .'/compta/bank/class/account.class.php';
                 $bankstatic=new Account($this->db);
                 $bankstatic->fetch($selected);
-                print $this->textwithpicto($bankstatic->label,$langs->trans("AccountCurrency").'&nbsp;'.$bankstatic->currency_code);
+                print self::textwithpicto($bankstatic->label,$langs->trans("AccountCurrency").'&nbsp;'.$bankstatic->currency_code);
             } else {
                 print "&nbsp;";
             }
@@ -4744,7 +4744,7 @@ class Form
      *  @param  string  $acceptdelayedhtml      1 if caller request to have html delayed content not returned but saved into global $delayedhtmlcontent (so caller can show it at end of page to avoid flash FOUC effect)
      * 	@return	string   						HTML select string
      */
-    static function selectArrayAjax($htmlname, $url, $id='', $moreparam='', $moreparamtourl='', $disabled=0, $minimumInputLength=1, $morecss='', $callurlonselect=0, $placeholder='', $acceptdelayedhtml=0)
+    public static function selectArrayAjax($htmlname, $url, $id='', $moreparam='', $moreparamtourl='', $disabled=0, $minimumInputLength=1, $morecss='', $callurlonselect=0, $placeholder='', $acceptdelayedhtml=0)
     {
         global $langs;
         global $delayedhtmlcontent;      
@@ -4935,7 +4935,7 @@ class Form
      *	@return	string					HTML multiselect string
      *  @see selectarray
      */
-    static function multiSelectArrayWithCheckbox($htmlname, &$array, $varpage)
+    public static function multiSelectArrayWithCheckbox($htmlname, array &$array, $varpage)
     {
         global $user;
         
@@ -5077,7 +5077,7 @@ class Form
      *  @param	CommonObject	$object		Object we want to show links to
      *  @return	int							<0 if KO, >0 if OK
      */
-    function showLinkedObjectBlock($object)
+    function showLinkedObjectBlock(CommonObject $object)
     {
         global $conf,$langs,$hookmanager;
         global $bc;
@@ -5585,7 +5585,7 @@ class Form
      *      @param  int         $cache              1=Accept to use image in cache
      * 	  	@return string    						HTML code to output photo
      */
-    static function showphoto($modulepart, $object, $width=100, $height=0, $caneditfield=0, $cssclass='photowithmargin', $imagesize='', $addlinktofullsize=1, $cache=0)
+    public static function showphoto($modulepart, $object, $width=100, $height=0, $caneditfield=0, $cssclass='photowithmargin', $imagesize='', $addlinktofullsize=1, $cache=0)
     {
         global $conf,$langs;
 
diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php
index 2cd001bcf8b..ff5ff6a9cc7 100644
--- a/htdocs/core/class/html.formmail.class.php
+++ b/htdocs/core/class/html.formmail.class.php
@@ -348,7 +348,7 @@ class FormMail extends Form
         		{
         			$help.=$key.' -> '.$langs->trans($val).'<br>';
         		}
-        		$out.= $form->textwithpicto($langs->trans("EMailTestSubstitutionReplacedByGenericValues"), $help);
+        		$out.= Form::textwithpicto($langs->trans("EMailTestSubstitutionReplacedByGenericValues"), $help);
         		$out.= "</td></tr>\n";
         	}
 
@@ -432,7 +432,7 @@ class FormMail extends Form
         	if (! empty($this->withto) || is_array($this->withto))
         	{
         		$out.= '<tr><td width="180">';
-        		if ($this->withtofree) $out.= $form->textwithpicto($langs->trans("MailTo"),$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients"));
+        		if ($this->withtofree) $out.= Form::textwithpicto($langs->trans("MailTo"),$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients"));
         		else $out.= $langs->trans("MailTo");
         		$out.= '</td><td>';
         		if ($this->withtoreadonly)
@@ -499,7 +499,7 @@ class FormMail extends Form
         	if (! empty($this->withtocc) || is_array($this->withtocc))
         	{
         		$out.= '<tr><td width="180">';
-        		$out.= $form->textwithpicto($langs->trans("MailCC"),$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients"));
+        		$out.= Form::textwithpicto($langs->trans("MailCC"),$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients"));
         		$out.= '</td><td>';
         		if ($this->withtoccreadonly)
         		{
@@ -521,7 +521,7 @@ class FormMail extends Form
         	if (! empty($this->withtoccc) || is_array($this->withtoccc))
         	{
         		$out.= '<tr><td width="180">';
-        		$out.= $form->textwithpicto($langs->trans("MailCCC"),$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients"));
+        		$out.= Form::textwithpicto($langs->trans("MailCCC"),$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients"));
         		$out.= '</td><td>';
         		if (! empty($this->withtocccreadonly))
         		{
diff --git a/htdocs/core/class/html.formprojet.class.php b/htdocs/core/class/html.formprojet.class.php
index 7ccb382a4a3..859c0e7b586 100644
--- a/htdocs/core/class/html.formprojet.class.php
+++ b/htdocs/core/class/html.formprojet.class.php
@@ -91,7 +91,7 @@ class FormProjets
 			    if (class_exists('Form'))
 			    {
     			    if (empty($form)) $form=new Form($this->db);
-                    print $form->textwithpicto('', $langs->trans("ClosedProjectsAreHidden"));
+                    print Form::textwithpicto('', $langs->trans("ClosedProjectsAreHidden"));
 			    }
 			}
 		}
diff --git a/htdocs/core/class/html.formsms.class.php b/htdocs/core/class/html.formsms.class.php
index 2ba92da0916..d4c95f02837 100644
--- a/htdocs/core/class/html.formsms.class.php
+++ b/htdocs/core/class/html.formsms.class.php
@@ -136,7 +136,7 @@ function limitChars(textarea, limit, infodiv)
             {
                 $help.=$key.' -> '.$langs->trans($val).'<br>';
             }
-            print $form->textwithpicto($langs->trans("SmsTestSubstitutionReplacedByGenericValues"),$help);
+            print Form::textwithpicto($langs->trans("SmsTestSubstitutionReplacedByGenericValues"),$help);
             print "</td></tr>\n";
         }
 
@@ -244,7 +244,7 @@ function limitChars(textarea, limit, infodiv)
             print '<tr><td width="180">';
             //$moretext=$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients");
             $moretext='';
-            print $form->textwithpicto($langs->trans("SmsTo"),$moretext);
+            print Form::textwithpicto($langs->trans("SmsTo"),$moretext);
             print '</td><td>';
             if ($this->withtoreadonly)
             {
diff --git a/htdocs/core/lib/ecm.lib.php b/htdocs/core/lib/ecm.lib.php
index 34294f502e8..6a2fc50b3ac 100644
--- a/htdocs/core/lib/ecm.lib.php
+++ b/htdocs/core/lib/ecm.lib.php
@@ -40,14 +40,14 @@ function ecm_prepare_dasboard_head($object)
     $helptext.=$langs->trans("ECMAreaDesc2");
 
 	$head[$h][0] = DOL_URL_ROOT.'/ecm/index.php';
-	$head[$h][1] = $langs->trans("ECMSectionsManual").$form->textwithpicto('', $helptext, 1, 'info', '', 0, 3);
+	$head[$h][1] = $langs->trans("ECMSectionsManual").Form::textwithpicto('', $helptext, 1, 'info', '', 0, 3);
 	$head[$h][2] = 'index';
 	$h++;
 
 	if (! empty($conf->global->ECM_AUTO_TREE_ENABLED))
 	{
 		$head[$h][0] = DOL_URL_ROOT.'/ecm/index_auto.php';
-		$head[$h][1] = $langs->trans("ECMSectionsAuto").$form->textwithpicto('', $helptext, 1, 'info', '', 0, 3);
+		$head[$h][1] = $langs->trans("ECMSectionsAuto").Form::textwithpicto('', $helptext, 1, 'info', '', 0, 3);
 		$head[$h][2] = 'index_auto';
 		$h++;
 	}
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index d45cdf45492..1a415e0338e 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -908,7 +908,7 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r
 	}
 	else 
 	{
-        if ($showimage) $morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref">'.$form->showphoto($modulepart,$object,0,0,0,'photoref','small',1,0,$maxvisiblephotos).'</div>';
+        if ($showimage) $morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref">'.Form::showphoto($modulepart,$object,0,0,0,'photoref','small',1,0,$maxvisiblephotos).'</div>';
 	}
 	if ($showbarcode) $morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref">'.$form->showbarcode($object).'</div>';
 	if ($object->element == 'societe' && ! empty($conf->use_javascript_ajax) && $user->rights->societe->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) {
diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php
index 92229a72d23..7201b30308c 100644
--- a/htdocs/core/lib/project.lib.php
+++ b/htdocs/core/lib/project.lib.php
@@ -654,8 +654,8 @@ function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$t
 				print '</td>';
 
 				print '<td align="right">';
-				if ((! $lines[$i]->public) && $disabledproject) print $form->textwithpicto('',$langs->trans("YouAreNotContactOfProject"));
-				else if ($disabledtask) print $form->textwithpicto('',$langs->trans("TaskIsNotAffectedToYou"));
+				if ((! $lines[$i]->public) && $disabledproject) print Form::textwithpicto('',$langs->trans("YouAreNotContactOfProject"));
+				else if ($disabledtask) print Form::textwithpicto('',$langs->trans("TaskIsNotAffectedToYou"));
 				print '</td>';
 
 				print "</tr>\n";
@@ -828,8 +828,8 @@ function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$
 		        }
 
 				print '<td align="right">';
-				if ((! $lines[$i]->public) && $disabledproject) print $form->textwithpicto('',$langs->trans("YouAreNotContactOfProject"));
-				else if ($disabledtask) print $form->textwithpicto('',$langs->trans("TaskIsNotAffectedToYou"));
+				if ((! $lines[$i]->public) && $disabledproject) print Form::textwithpicto('',$langs->trans("YouAreNotContactOfProject"));
+				else if ($disabledtask) print Form::textwithpicto('',$langs->trans("TaskIsNotAffectedToYou"));
 				print '</td>';
 
 		        print "</tr>\n";
@@ -1098,7 +1098,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks=
 		if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES))
 		{
 			print '<td class="liste_total" align="right">'.price($total_opp_amount, 0, '', 1, -1, -1, $conf->currency).'</td>';
-			print '<td class="liste_total" align="right">'.$form->textwithpicto(price($ponderated_opp_amount, 0, '', 1, -1, -1, $conf->currency), $langs->trans("OpportunityPonderatedAmountDesc"), 1).'</td>';
+			print '<td class="liste_total" align="right">'.Form::textwithpicto(price($ponderated_opp_amount, 0, '', 1, -1, -1, $conf->currency), $langs->trans("OpportunityPonderatedAmountDesc"), 1).'</td>';
 		}
 		if (empty($conf->global->PROJECT_HIDE_TASKS)) 
 		{
diff --git a/htdocs/core/lib/sendings.lib.php b/htdocs/core/lib/sendings.lib.php
index 8cfd5f202d5..0de36087fdd 100644
--- a/htdocs/core/lib/sendings.lib.php
+++ b/htdocs/core/lib/sendings.lib.php
@@ -256,7 +256,7 @@ function show_list_sending_receive($origin,$origin_id,$filter='')
 					$text=$product_static->getNomUrl(1);
 					$text.= ' - '.$label;
 					$description=(! empty($conf->global->PRODUIT_DESC_IN_FORM)?'':dol_htmlentitiesbr($objp->description));
-					print $form->textwithtooltip($text,$description,3,'','',$i);
+					print Form::textwithtooltip($text,$description,3,'','',$i);
 
 					// Show range
 					print_date_range($objp->date_start,$objp->date_end);
@@ -277,7 +277,7 @@ function show_list_sending_receive($origin,$origin_id,$filter='')
 
 					if (! empty($objp->label)) {
 						$text.= ' <strong>'.$objp->label.'</strong>';
-						print $form->textwithtooltip($text,$objp->description,3,'','',$i);
+						print Form::textwithtooltip($text,$objp->description,3,'','',$i);
 					} else {
 						print $text.' '.nl2br($objp->description);
 					}
diff --git a/htdocs/core/modules/barcode/mod_barcode_product_standard.php b/htdocs/core/modules/barcode/mod_barcode_product_standard.php
index aeb7ea4cd8f..5c3c185f83e 100644
--- a/htdocs/core/modules/barcode/mod_barcode_product_standard.php
+++ b/htdocs/core/modules/barcode/mod_barcode_product_standard.php
@@ -89,7 +89,7 @@ class mod_barcode_product_standard extends ModeleNumRefBarCode
 		// Mask parameter
 		//$texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("BarCodeModel").'):</td>';
 		$texte.= '<tr><td>'.$langs->trans("Mask").':</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="value1" value="'.(! empty($conf->global->BARCODE_STANDARD_PRODUCT_MASK)?$conf->global->BARCODE_STANDARD_PRODUCT_MASK:'').'"'.$disabled.'>',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="value1" value="'.(! empty($conf->global->BARCODE_STANDARD_PRODUCT_MASK)?$conf->global->BARCODE_STANDARD_PRODUCT_MASK:'').'"'.$disabled.'>',$tooltip,1,1).'</td>';
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"'.$disabled.'></td>';
 		$texte.= '</tr>';
 
diff --git a/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php b/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php
index b6d4df5657f..ceccfdc5765 100644
--- a/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php
+++ b/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php
@@ -134,7 +134,7 @@ class doc_generic_order_odt extends ModelePDFCommandes
 		$texthelp.='<br>'.$langs->trans("FollowingSubstitutionKeysCanBeUsed").'<br>';
 		$texthelp.=$langs->transnoentitiesnoconv("FullListOnOnlineDocumentation");    // This contains an url, we don't modify it
 
-		$texte.= $form->textwithpicto($texttitle,$texthelp,1,'help','',1);
+		$texte.= Form::textwithpicto($texttitle,$texthelp,1,'help','',1);
 		$texte.= '<div><div style="display: inline-block; min-width: 100px; vertical-align: middle;">';
 		$texte.= '<textarea class="flat" cols="60" name="value1">';
 		$texte.=$conf->global->COMMANDE_ADDON_PDF_ODT_PATH;
diff --git a/htdocs/core/modules/commande/mod_commande_saphir.php b/htdocs/core/modules/commande/mod_commande_saphir.php
index 1996717e506..52359c73295 100644
--- a/htdocs/core/modules/commande/mod_commande_saphir.php
+++ b/htdocs/core/modules/commande/mod_commande_saphir.php
@@ -66,7 +66,7 @@ class mod_commande_saphir extends ModeleNumRefCommandes
 
 		// Parametrage du prefix
 		$texte.= '<tr><td>'.$langs->trans("Mask").':</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskorder" value="'.$conf->global->COMMANDE_SAPHIR_MASK.'">',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="maskorder" value="'.$conf->global->COMMANDE_SAPHIR_MASK.'">',$tooltip,1,1).'</td>';
 
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
 
diff --git a/htdocs/core/modules/contract/mod_contract_magre.php b/htdocs/core/modules/contract/mod_contract_magre.php
index 54da8fc55c4..8a6ee159a97 100644
--- a/htdocs/core/modules/contract/mod_contract_magre.php
+++ b/htdocs/core/modules/contract/mod_contract_magre.php
@@ -61,7 +61,7 @@ class mod_contract_magre extends ModelNumRefContracts
 		$tooltip.=$langs->trans("GenericMaskCodes5");
 
 		$texte.= '<tr><td>'.$langs->trans("Mask").':</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskcontract" value="'.$conf->global->CONTRACT_MAGRE_MASK.'">',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="maskcontract" value="'.$conf->global->CONTRACT_MAGRE_MASK.'">',$tooltip,1,1).'</td>';
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
 		$texte.= '</tr>';
 		$texte.= '</table>';
diff --git a/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php b/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php
index a2ddb144e6d..969fda5e072 100644
--- a/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php
+++ b/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php
@@ -135,7 +135,7 @@ class doc_generic_shipment_odt extends ModelePdfExpedition
 		$texthelp.='<br>'.$langs->trans("FollowingSubstitutionKeysCanBeUsed").'<br>';
 		$texthelp.=$langs->transnoentitiesnoconv("FullListOnOnlineDocumentation");    // This contains an url, we don't modify it
 
-		$texte.= $form->textwithpicto($texttitle,$texthelp,1,'help','',1);
+		$texte.= Form::textwithpicto($texttitle,$texthelp,1,'help','',1);
 		$texte.= '<div><div style="display: inline-block; min-width: 100px; vertical-align: middle;">';
 		$texte.= '<textarea class="flat" cols="60" name="value1">';
 		$texte.=$conf->global->EXPEDITION_ADDON_PDF_ODT_PATH;
diff --git a/htdocs/core/modules/expedition/mod_expedition_ribera.php b/htdocs/core/modules/expedition/mod_expedition_ribera.php
index c92ea93e6a2..e2a85fceb9f 100644
--- a/htdocs/core/modules/expedition/mod_expedition_ribera.php
+++ b/htdocs/core/modules/expedition/mod_expedition_ribera.php
@@ -60,7 +60,7 @@ class mod_expedition_ribera extends ModelNumRefExpedition
 		$tooltip.=$langs->trans("GenericMaskCodes5");
 
 		$texte.= '<tr><td>'.$langs->trans("Mask").':</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskexpedition" value="'.$conf->global->EXPEDITION_RIBERA_MASK.'">',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="maskexpedition" value="'.$conf->global->EXPEDITION_RIBERA_MASK.'">',$tooltip,1,1).'</td>';
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
 		$texte.= '</tr>';
 		$texte.= '</table>';
diff --git a/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php b/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php
index 6065de505c6..657688cb20e 100644
--- a/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php
+++ b/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php
@@ -134,7 +134,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures
 		$texthelp.='<br>'.$langs->trans("FollowingSubstitutionKeysCanBeUsed").'<br>';
 		$texthelp.=$langs->transnoentitiesnoconv("FullListOnOnlineDocumentation");    // This contains an url, we don't modify it
 
-		$texte.= $form->textwithpicto($texttitle,$texthelp,1,'help','',1);
+		$texte.= Form::textwithpicto($texttitle,$texthelp,1,'help','',1);
 		$texte.= '<div><div style="display: inline-block; min-width: 100px; vertical-align: middle;">';
 		$texte.= '<textarea class="flat" cols="60" name="value1">';
 		$texte.=$conf->global->FACTURE_ADDON_PDF_ODT_PATH;
diff --git a/htdocs/core/modules/facture/mod_facture_mercure.php b/htdocs/core/modules/facture/mod_facture_mercure.php
index 2c873412da5..0dc30a7c416 100644
--- a/htdocs/core/modules/facture/mod_facture_mercure.php
+++ b/htdocs/core/modules/facture/mod_facture_mercure.php
@@ -69,7 +69,7 @@ class mod_facture_mercure extends ModeleNumRefFactures
 
         // Parametrage du prefix
         $texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("InvoiceStandard").'):</td>';
-        $texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskinvoice" value="'.$conf->global->FACTURE_MERCURE_MASK_INVOICE.'">',$tooltip,1,1).'</td>';
+        $texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="maskinvoice" value="'.$conf->global->FACTURE_MERCURE_MASK_INVOICE.'">',$tooltip,1,1).'</td>';
 
         $texte.= '<td align="left" rowspan="3">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
 
@@ -77,17 +77,17 @@ class mod_facture_mercure extends ModeleNumRefFactures
 
         // Parametrage du prefix des replacement
         $texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("InvoiceReplacement").'):</td>';
-        $texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskreplacement" value="'.$conf->global->FACTURE_MERCURE_MASK_REPLACEMENT.'">',$tooltip,1,1).'</td>';
+        $texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="maskreplacement" value="'.$conf->global->FACTURE_MERCURE_MASK_REPLACEMENT.'">',$tooltip,1,1).'</td>';
         $texte.= '</tr>';
         
         // Parametrage du prefix des avoirs
         $texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("InvoiceAvoir").'):</td>';
-        $texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskcredit" value="'.$conf->global->FACTURE_MERCURE_MASK_CREDIT.'">',$tooltip,1,1).'</td>';
+        $texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="maskcredit" value="'.$conf->global->FACTURE_MERCURE_MASK_CREDIT.'">',$tooltip,1,1).'</td>';
         $texte.= '</tr>';
 
         // Parametrage du prefix des acomptes
         $texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("InvoiceDeposit").'):</td>';
-        $texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskdeposit" value="'.$conf->global->FACTURE_MERCURE_MASK_DEPOSIT.'">',$tooltip,1,1).'</td>';
+        $texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="maskdeposit" value="'.$conf->global->FACTURE_MERCURE_MASK_DEPOSIT.'">',$tooltip,1,1).'</td>';
         $texte.= '</tr>';
 
         $texte.= '</table>';
diff --git a/htdocs/core/modules/fichinter/mod_arctic.php b/htdocs/core/modules/fichinter/mod_arctic.php
index 278e20ae7de..1862eab4f5e 100644
--- a/htdocs/core/modules/fichinter/mod_arctic.php
+++ b/htdocs/core/modules/fichinter/mod_arctic.php
@@ -65,7 +65,7 @@ class mod_arctic extends ModeleNumRefFicheinter
 
 		// Parametrage du prefix
 		$texte.= '<tr><td>'.$langs->trans("Mask").':</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskvalue" value="'.$conf->global->FICHINTER_ARTIC_MASK.'">',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="maskvalue" value="'.$conf->global->FICHINTER_ARTIC_MASK.'">',$tooltip,1,1).'</td>';
 
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
 
diff --git a/htdocs/core/modules/livraison/mod_livraison_saphir.php b/htdocs/core/modules/livraison/mod_livraison_saphir.php
index 1192656bf8d..cc2bcfdd281 100644
--- a/htdocs/core/modules/livraison/mod_livraison_saphir.php
+++ b/htdocs/core/modules/livraison/mod_livraison_saphir.php
@@ -64,7 +64,7 @@ class mod_livraison_saphir extends ModeleNumRefDeliveryOrder
 
 		// Parametrage du prefix
 		$texte.= '<tr><td>'.$langs->trans("Mask").':</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskdelivery" value="'.$conf->global->LIVRAISON_SAPHIR_MASK.'">',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="maskdelivery" value="'.$conf->global->LIVRAISON_SAPHIR_MASK.'">',$tooltip,1,1).'</td>';
 
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
 
diff --git a/htdocs/core/modules/payment/mod_payment_ant.php b/htdocs/core/modules/payment/mod_payment_ant.php
index a09ad2355e4..217e4b25fdb 100644
--- a/htdocs/core/modules/payment/mod_payment_ant.php
+++ b/htdocs/core/modules/payment/mod_payment_ant.php
@@ -63,7 +63,7 @@ class mod_payment_ant extends ModeleNumRefPayments
 
 		// Parametrage du prefix
 		$texte.= '<tr><td>'.$langs->trans("Mask").':</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskpayment" value="'.$conf->global->PAYMENT_ANT_MASK.'">',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="maskpayment" value="'.$conf->global->PAYMENT_ANT_MASK.'">',$tooltip,1,1).'</td>';
 
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
 
diff --git a/htdocs/core/modules/product/mod_codeproduct_elephant.php b/htdocs/core/modules/product/mod_codeproduct_elephant.php
index 517cd0a7ce9..b54d6f94062 100644
--- a/htdocs/core/modules/product/mod_codeproduct_elephant.php
+++ b/htdocs/core/modules/product/mod_codeproduct_elephant.php
@@ -91,7 +91,7 @@ class mod_codeproduct_elephant extends ModeleProductCode
 
 		// Parametrage du prefix customers
 		$texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("ProductCodeModel").'):</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="value1" value="'.(! empty($conf->global->PRODUCT_ELEPHANT_MASK_PRODUCT)?$conf->global->PRODUCT_ELEPHANT_MASK_PRODUCT:'').'"'.$disabled.'>',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="value1" value="'.(! empty($conf->global->PRODUCT_ELEPHANT_MASK_PRODUCT)?$conf->global->PRODUCT_ELEPHANT_MASK_PRODUCT:'').'"'.$disabled.'>',$tooltip,1,1).'</td>';
 
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"'.$disabled.'></td>';
 
@@ -99,7 +99,7 @@ class mod_codeproduct_elephant extends ModeleProductCode
 
 		// Parametrage du prefix suppliers
 		$texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("ServiceCodeModel").'):</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="value2" value="'.(! empty($conf->global->PRODUCT_ELEPHANT_MASK_SERVICE)?$conf->global->PRODUCT_ELEPHANT_MASK_SERVICE:'').'"'.$disabled.'>',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="value2" value="'.(! empty($conf->global->PRODUCT_ELEPHANT_MASK_SERVICE)?$conf->global->PRODUCT_ELEPHANT_MASK_SERVICE:'').'"'.$disabled.'>',$tooltip,1,1).'</td>';
 		$texte.= '</tr>';
 
 		$texte.= '</table>';
diff --git a/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php b/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php
index 3ea28a1bd81..b80eded4bd9 100644
--- a/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php
+++ b/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php
@@ -347,7 +347,7 @@ class doc_generic_project_odt extends ModelePDFProjects
 		$texthelp.='<br>'.$langs->trans("FollowingSubstitutionKeysCanBeUsed").'<br>';
 		$texthelp.=$langs->transnoentitiesnoconv("FullListOnOnlineDocumentation");    // This contains an url, we don't modify it
 
-		$texte.= $form->textwithpicto($texttitle,$texthelp,1,'help','',1);
+		$texte.= Form::textwithpicto($texttitle,$texthelp,1,'help','',1);
 		$texte.= '<div><div style="display: inline-block; min-width: 100px; vertical-align: middle;">';
 		$texte.= '<textarea class="flat" cols="60" name="value1">';
 		$texte.=$conf->global->PROJECT_ADDON_PDF_ODT_PATH;
diff --git a/htdocs/core/modules/project/mod_project_universal.php b/htdocs/core/modules/project/mod_project_universal.php
index e76ed349b46..fd85cab63a3 100644
--- a/htdocs/core/modules/project/mod_project_universal.php
+++ b/htdocs/core/modules/project/mod_project_universal.php
@@ -65,7 +65,7 @@ class mod_project_universal extends ModeleNumRefProjects
 
 		// Parametrage du prefix
 		$texte.= '<tr><td>'.$langs->trans("Mask").':</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskproject" value="'.$conf->global->PROJECT_UNIVERSAL_MASK.'">',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="maskproject" value="'.$conf->global->PROJECT_UNIVERSAL_MASK.'">',$tooltip,1,1).'</td>';
 
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
 
diff --git a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php
index caebf1d78d4..19dbe2f5ad2 100644
--- a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php
+++ b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php
@@ -348,7 +348,7 @@ class doc_generic_task_odt extends ModelePDFTask
 		$texthelp.='<br>'.$langs->trans("FollowingSubstitutionKeysCanBeUsed").'<br>';
 		$texthelp.=$langs->transnoentitiesnoconv("FullListOnOnlineDocumentation");    // This contains an url, we don't modify it
 
-		$texte.= $form->textwithpicto($texttitle,$texthelp,1,'help','',1);
+		$texte.= Form::textwithpicto($texttitle,$texthelp,1,'help','',1);
 		$texte.= '<div><div style="display: inline-block; min-width: 100px; vertical-align: middle;">';
 		$texte.= '<textarea class="flat" cols="60" name="value1">';
 		$texte.=$conf->global->PROJECT_TASK_ADDON_PDF_ODT_PATH;
diff --git a/htdocs/core/modules/project/task/mod_task_universal.php b/htdocs/core/modules/project/task/mod_task_universal.php
index 529814079c1..a9eaa4b5a44 100644
--- a/htdocs/core/modules/project/task/mod_task_universal.php
+++ b/htdocs/core/modules/project/task/mod_task_universal.php
@@ -65,7 +65,7 @@ class mod_task_universal extends ModeleNumRefTask
 
 		// Parametrage du prefix
 		$texte.= '<tr><td>'.$langs->trans("Mask").':</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="masktask" value="'.$conf->global->PROJECT_TASK_UNIVERSAL_MASK.'">',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="masktask" value="'.$conf->global->PROJECT_TASK_UNIVERSAL_MASK.'">',$tooltip,1,1).'</td>';
 
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
 
diff --git a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php
index a4158bd686b..e2272ba6ffb 100644
--- a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php
+++ b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php
@@ -139,7 +139,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales
 		$texthelp.='<br>'.$langs->trans("FollowingSubstitutionKeysCanBeUsed").'<br>';
 		$texthelp.=$langs->transnoentitiesnoconv("FullListOnOnlineDocumentation");    // This contains an url, we don't modify it
 
-		$texte.= $form->textwithpicto($texttitle,$texthelp,1,'help','',1);
+		$texte.= Form::textwithpicto($texttitle,$texthelp,1,'help','',1);
 		$texte.= '<div><div style="display: inline-block; min-width: 100px; vertical-align: middle;">';
 		$texte.= '<textarea class="flat" cols="60" name="value1">';
 		$texte.=$conf->global->PROPALE_ADDON_PDF_ODT_PATH;
diff --git a/htdocs/core/modules/propale/mod_propale_saphir.php b/htdocs/core/modules/propale/mod_propale_saphir.php
index 25ccecb253c..d479ad74a2f 100644
--- a/htdocs/core/modules/propale/mod_propale_saphir.php
+++ b/htdocs/core/modules/propale/mod_propale_saphir.php
@@ -66,7 +66,7 @@ class mod_propale_saphir extends ModeleNumRefPropales
 
 		// Parametrage du prefix
 		$texte.= '<tr><td>'.$langs->trans("Mask").':</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskpropal" value="'.$conf->global->PROPALE_SAPHIR_MASK.'">',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="maskpropal" value="'.$conf->global->PROPALE_SAPHIR_MASK.'">',$tooltip,1,1).'</td>';
 
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
 
diff --git a/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php b/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php
index 3c66bd5f11d..548e72b5675 100644
--- a/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php
+++ b/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php
@@ -118,7 +118,7 @@ class doc_generic_odt extends ModeleThirdPartyDoc
 		$texthelp.='<br>'.$langs->trans("FollowingSubstitutionKeysCanBeUsed").'<br>';
 		$texthelp.=$langs->transnoentitiesnoconv("FullListOnOnlineDocumentation");    // This contains an url, we don't modify it
 
-		$texte.= $form->textwithpicto($texttitle,$texthelp,1,'help','',1);
+		$texte.= Form::textwithpicto($texttitle,$texthelp,1,'help','',1);
         $texte.= '<table><tr><td>';
 		$texte.= '<textarea class="flat" cols="60" name="value1">';
 		$texte.=$conf->global->COMPANY_ADDON_PDF_ODT_PATH;
diff --git a/htdocs/core/modules/societe/mod_codeclient_elephant.php b/htdocs/core/modules/societe/mod_codeclient_elephant.php
index 589bf1547c1..82883f1c812 100644
--- a/htdocs/core/modules/societe/mod_codeclient_elephant.php
+++ b/htdocs/core/modules/societe/mod_codeclient_elephant.php
@@ -92,7 +92,7 @@ class mod_codeclient_elephant extends ModeleThirdPartyCode
 
 		// Parametrage du prefix customers
 		$texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("CustomerCodeModel").'):</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="value1" value="'.$conf->global->COMPANY_ELEPHANT_MASK_CUSTOMER.'"'.$disabled.'>',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="value1" value="'.$conf->global->COMPANY_ELEPHANT_MASK_CUSTOMER.'"'.$disabled.'>',$tooltip,1,1).'</td>';
 
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"'.$disabled.'></td>';
 
@@ -100,7 +100,7 @@ class mod_codeclient_elephant extends ModeleThirdPartyCode
 
 		// Parametrage du prefix suppliers
 		$texte.= '<tr><td>'.$langs->trans("Mask").' ('.$langs->trans("SupplierCodeModel").'):</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="value2" value="'.$conf->global->COMPANY_ELEPHANT_MASK_SUPPLIER.'"'.$disabled.'>',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="value2" value="'.$conf->global->COMPANY_ELEPHANT_MASK_SUPPLIER.'"'.$disabled.'>',$tooltip,1,1).'</td>';
 		$texte.= '</tr>';
 
 		$texte.= '</table>';
diff --git a/htdocs/core/modules/societe/mod_codecompta_aquarium.php b/htdocs/core/modules/societe/mod_codecompta_aquarium.php
index c8e005c79c7..528a16b5293 100644
--- a/htdocs/core/modules/societe/mod_codecompta_aquarium.php
+++ b/htdocs/core/modules/societe/mod_codecompta_aquarium.php
@@ -72,8 +72,8 @@ class mod_codecompta_aquarium extends ModeleAccountancyCode
 		$texte.= '<input type="hidden" name="param1" value="COMPANY_AQUARIUM_MASK_SUPPLIER">';
 		$texte.= '<input type="hidden" name="param2" value="COMPANY_AQUARIUM_MASK_CUSTOMER">';
 		$texte.= '<table class="nobordernopadding" width="100%">';
-		$s1= $form->textwithpicto('<input type="text" class="flat" size="4" name="value1" value="'.$conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER.'">',$tooltip,1,1);
-		$s2= $form->textwithpicto('<input type="text" class="flat" size="4" name="value2" value="'.$conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER.'">',$tooltip,1,1);
+		$s1= Form::textwithpicto('<input type="text" class="flat" size="4" name="value1" value="'.$conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER.'">',$tooltip,1,1);
+		$s2= Form::textwithpicto('<input type="text" class="flat" size="4" name="value2" value="'.$conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER.'">',$tooltip,1,1);
 		$texte.= '<tr><td>'.$langs->trans("ModuleCompanyCode".$this->name,$s1,$s2)."<br>\n";
 		$texte.= '</td>';
 		$texte.= '<td align="left">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
diff --git a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php
index ba31d979864..59132d7276f 100644
--- a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php
+++ b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php
@@ -69,7 +69,7 @@ class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersInvoices
 
 		// Parametrage du prefix
 		$texte.= '<tr><td>'.$langs->trans("Mask").':</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskinvoice" value="'.$conf->global->SUPPLIER_INVOICE_TULIP_MASK.'">',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="maskinvoice" value="'.$conf->global->SUPPLIER_INVOICE_TULIP_MASK.'">',$tooltip,1,1).'</td>';
 
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
 
diff --git a/htdocs/core/modules/supplier_order/mod_commande_fournisseur_orchidee.php b/htdocs/core/modules/supplier_order/mod_commande_fournisseur_orchidee.php
index 37b8adab22e..68bdc9cf9e3 100644
--- a/htdocs/core/modules/supplier_order/mod_commande_fournisseur_orchidee.php
+++ b/htdocs/core/modules/supplier_order/mod_commande_fournisseur_orchidee.php
@@ -66,7 +66,7 @@ class mod_commande_fournisseur_orchidee extends ModeleNumRefSuppliersOrders
 
 		// Parametrage du prefix
 		$texte.= '<tr><td>'.$langs->trans("Mask").':</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskorder" value="'.$conf->global->COMMANDE_FOURNISSEUR_ORCHIDEE_MASK.'">',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="maskorder" value="'.$conf->global->COMMANDE_FOURNISSEUR_ORCHIDEE_MASK.'">',$tooltip,1,1).'</td>';
 
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
 
diff --git a/htdocs/core/modules/supplier_payment/mod_supplier_payment_brodator.php b/htdocs/core/modules/supplier_payment/mod_supplier_payment_brodator.php
index fb06c028aed..8dc4bf38ca2 100644
--- a/htdocs/core/modules/supplier_payment/mod_supplier_payment_brodator.php
+++ b/htdocs/core/modules/supplier_payment/mod_supplier_payment_brodator.php
@@ -63,7 +63,7 @@ class mod_supplier_payment_brodator extends ModeleNumRefPayments
 
 		// Parametrage du prefix
 		$texte.= '<tr><td>'.$langs->trans("Mask").':</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="masksupplierpayment" value="'.$conf->global->SUPPLIER_PAYMENT_BRODATOR_MASK.'">',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="masksupplierpayment" value="'.$conf->global->SUPPLIER_PAYMENT_BRODATOR_MASK.'">',$tooltip,1,1).'</td>';
 
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
 
diff --git a/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php b/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php
index 2a37b0c6b87..0a468681edc 100644
--- a/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php
+++ b/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php
@@ -139,7 +139,7 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal
 		$texthelp.='<br>'.$langs->trans("FollowingSubstitutionKeysCanBeUsed").'<br>';
 		$texthelp.=$langs->transnoentitiesnoconv("FullListOnOnlineDocumentation");    // This contains an url, we don't modify it
 
-		$texte.= $form->textwithpicto($texttitle,$texthelp,1,'help','',1);
+		$texte.= Form::textwithpicto($texttitle,$texthelp,1,'help','',1);
 		$texte.= '<div><div style="display: inline-block; min-width: 100px; vertical-align: middle;">';
 		$texte.= '<textarea class="flat" cols="60" name="value1">';
 		$texte.=$conf->global->SUPPLIER_PROPOSAL_ADDON_PDF_ODT_PATH;
diff --git a/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_saphir.php b/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_saphir.php
index 8781628917f..d3aff3364c6 100644
--- a/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_saphir.php
+++ b/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_saphir.php
@@ -66,7 +66,7 @@ class mod_supplier_proposal_saphir extends ModeleNumRefSupplierProposal
 
 		// Parametrage du prefix
 		$texte.= '<tr><td>'.$langs->trans("Mask").':</td>';
-		$texte.= '<td align="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="masksupplier_proposal" value="'.$conf->global->SUPPLIER_PROPOSAL_SAPHIR_MASK.'">',$tooltip,1,1).'</td>';
+		$texte.= '<td align="right">'.Form::textwithpicto('<input type="text" class="flat" size="24" name="masksupplier_proposal" value="'.$conf->global->SUPPLIER_PROPOSAL_SAPHIR_MASK.'">',$tooltip,1,1).'</td>';
 
 		$texte.= '<td align="left" rowspan="2">&nbsp; <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>';
 
diff --git a/htdocs/core/tpl/admin_extrafields_add.tpl.php b/htdocs/core/tpl/admin_extrafields_add.tpl.php
index 8bf6ac5f8a1..cae8973cc7a 100644
--- a/htdocs/core/tpl/admin_extrafields_add.tpl.php
+++ b/htdocs/core/tpl/admin_extrafields_add.tpl.php
@@ -101,10 +101,10 @@
     <tr><td>
     	<textarea name="param" id="param" cols="80" rows="<?php echo ROWS_4 ?>"><?php echo GETPOST('param'); ?></textarea>
     </td><td>
-    <span id="helpselect"><?php print $form->textwithpicto('', $langs->trans("ExtrafieldParamHelpselect"),1,0)?></span>
-    <span id="helpsellist"><?php print $form->textwithpicto('', $langs->trans("ExtrafieldParamHelpsellist"),1,0)?></span>
-    <span id="helpchkbxlst"><?php print $form->textwithpicto('', $langs->trans("ExtrafieldParamHelpchkbxlst"),1,0)?></span>
-    <span id="helplink"><?php print $form->textwithpicto('', $langs->trans("ExtrafieldParamHelplink"),1,0)?></span>
+    <span id="helpselect"><?php print Form::textwithpicto('', $langs->trans("ExtrafieldParamHelpselect"),1,0)?></span>
+    <span id="helpsellist"><?php print Form::textwithpicto('', $langs->trans("ExtrafieldParamHelpsellist"),1,0)?></span>
+    <span id="helpchkbxlst"><?php print Form::textwithpicto('', $langs->trans("ExtrafieldParamHelpchkbxlst"),1,0)?></span>
+    <span id="helplink"><?php print Form::textwithpicto('', $langs->trans("ExtrafieldParamHelplink"),1,0)?></span>
     </td></tr>
     </table>
 </td>
diff --git a/htdocs/core/tpl/admin_extrafields_edit.tpl.php b/htdocs/core/tpl/admin_extrafields_edit.tpl.php
index f12f90d6206..b9d9f1ecfd4 100644
--- a/htdocs/core/tpl/admin_extrafields_edit.tpl.php
+++ b/htdocs/core/tpl/admin_extrafields_edit.tpl.php
@@ -152,10 +152,10 @@ else
     <tr><td>
     	<textarea name="param" id="param" cols="80" rows="<?php echo ROWS_4 ?>"><?php echo dol_htmlcleanlastbr($param_chain); ?></textarea>
     </td><td>
-    <span id="helpselect"><?php print $form->textwithpicto('', $langs->trans("ExtrafieldParamHelpselect"),1,0)?></span>
-    <span id="helpsellist"><?php print $form->textwithpicto('', $langs->trans("ExtrafieldParamHelpsellist"),1,0)?></span>
-    <span id="helpchkbxlst"><?php print $form->textwithpicto('', $langs->trans("ExtrafieldParamHelpchkbxlst"),1,0)?></span>
-    <span id="helplink"><?php print $form->textwithpicto('', $langs->trans("ExtrafieldParamHelplink"),1,0)?></span>
+    <span id="helpselect"><?php print Form::textwithpicto('', $langs->trans("ExtrafieldParamHelpselect"),1,0)?></span>
+    <span id="helpsellist"><?php print Form::textwithpicto('', $langs->trans("ExtrafieldParamHelpsellist"),1,0)?></span>
+    <span id="helpchkbxlst"><?php print Form::textwithpicto('', $langs->trans("ExtrafieldParamHelpchkbxlst"),1,0)?></span>
+    <span id="helplink"><?php print Form::textwithpicto('', $langs->trans("ExtrafieldParamHelplink"),1,0)?></span>
     </td></tr>
     </table>
 </td>
diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php
index c264bac205d..ec00f23e659 100644
--- a/htdocs/core/tpl/objectline_view.tpl.php
+++ b/htdocs/core/tpl/objectline_view.tpl.php
@@ -94,7 +94,7 @@ if (empty($usemargins)) $usemargins=0;
 		
 	    if ($line->fk_product > 0)
 		{
-			echo $form->textwithtooltip($text,$description,3,'','',$i,0,(!empty($line->fk_parent_line)?img_picto('', 'rightarrow'):''));
+			echo Form::textwithtooltip($text,$description,3,'','',$i,0,(!empty($line->fk_parent_line)?img_picto('', 'rightarrow'):''));
 			
 			// Show range
 			echo get_date_range($line->date_start, $line->date_end, $format);
@@ -114,7 +114,7 @@ if (empty($usemargins)) $usemargins=0;
 
 			if (! empty($line->label)) {
 				$text.= ' <strong>'.$line->label.'</strong>';
-				echo $form->textwithtooltip($text,dol_htmlentitiesbr($line->description),3,'','',$i,0,(!empty($line->fk_parent_line)?img_picto('', 'rightarrow'):''));
+				echo Form::textwithtooltip($text,dol_htmlentitiesbr($line->description),3,'','',$i,0,(!empty($line->fk_parent_line)?img_picto('', 'rightarrow'):''));
 			} else {
 				if (! empty($line->fk_parent_line)) echo img_picto('', 'rightarrow');
 				echo $text.' '.dol_htmlentitiesbr($line->description);
diff --git a/htdocs/cron/card.php b/htdocs/cron/card.php
index 90a5dd0f2ed..e8352ef3381 100644
--- a/htdocs/cron/card.php
+++ b/htdocs/cron/card.php
@@ -337,7 +337,7 @@ if (($action=="create") || ($action=="edit"))
 	print "<input type=\"text\" size=\"20\" name=\"module_name\" value=\"".$object->module_name."\" /> ";
 	print "</td>";
 	print "<td>";
-	print $form->textwithpicto('',$langs->trans("CronModuleHelp"),1,'help');
+	print Form::textwithpicto('',$langs->trans("CronModuleHelp"),1,'help');
 	print "</td>";
 	print "</tr>\n";
 
@@ -346,7 +346,7 @@ if (($action=="create") || ($action=="edit"))
 	print "<input type=\"text\" size=\"20\" name=\"classesname\" value=\"".$object->classesname."\" /> ";
 	print "</td>";
 	print "<td>";
-	print $form->textwithpicto('',$langs->trans("CronClassFileHelp"),1,'help');
+	print Form::textwithpicto('',$langs->trans("CronClassFileHelp"),1,'help');
 	print "</td>";
 	print "</tr>\n";
 
@@ -355,7 +355,7 @@ if (($action=="create") || ($action=="edit"))
 	print "<input type=\"text\" size=\"20\" name=\"objectname\" value=\"".$object->objectname."\" /> ";
 	print "</td>";
 	print "<td>";
-	print $form->textwithpicto('',$langs->trans("CronObjectHelp"),1,'help');
+	print Form::textwithpicto('',$langs->trans("CronObjectHelp"),1,'help');
 	print "</td>";
 	print "</tr>\n";
 
@@ -364,7 +364,7 @@ if (($action=="create") || ($action=="edit"))
 	print "<input type=\"text\" size=\"20\" name=\"methodename\" value=\"".$object->methodename."\" /> ";
 	print "</td>";
 	print "<td>";
-	print $form->textwithpicto('',$langs->trans("CronMethodHelp"),1,'help');
+	print Form::textwithpicto('',$langs->trans("CronMethodHelp"),1,'help');
 	print "</td>";
 	print "</tr>\n";
 
@@ -373,7 +373,7 @@ if (($action=="create") || ($action=="edit"))
 	print "<input type=\"text\" size=\"20\" name=\"params\" value=\"".$object->params."\" /> ";
 	print "</td>";
 	print "<td>";
-	print $form->textwithpicto('',$langs->trans("CronArgsHelp"),1,'help');
+	print Form::textwithpicto('',$langs->trans("CronArgsHelp"),1,'help');
 	print "</td>";
 	print "</tr>\n";
 
@@ -382,7 +382,7 @@ if (($action=="create") || ($action=="edit"))
 	print "<input type=\"text\" size=\"50\" name=\"command\" value=\"".$object->command."\" /> ";
 	print "</td>";
 	print "<td>";
-	print $form->textwithpicto('',$langs->trans("CronCommandHelp"),1,'help');
+	print Form::textwithpicto('',$langs->trans("CronCommandHelp"),1,'help');
 	print "</td>";
 	print "</tr>\n";
 
diff --git a/htdocs/cron/list.php b/htdocs/cron/list.php
index 9b08e68297d..aa6bb16fbe9 100644
--- a/htdocs/cron/list.php
+++ b/htdocs/cron/list.php
@@ -288,7 +288,7 @@ if ($num > 0)
 			$texttoshow.='<br>'.$langs->trans('CronArgs').': '. $line->params;
 			$texttoshow.='<br>'.$langs->trans('Comment').': '. $langs->trans($line->note);
 		}
-		print $form->textwithpicto($text, $texttoshow, 1);
+		print Form::textwithpicto($text, $texttoshow, 1);
 		print '</td>';
 
 		print '<td>';
diff --git a/htdocs/don/admin/donation.php b/htdocs/don/admin/donation.php
index d699a9fc7a6..23a2f87ed4e 100644
--- a/htdocs/don/admin/donation.php
+++ b/htdocs/don/admin/donation.php
@@ -433,7 +433,7 @@ if (is_resource($handle))
                 $htmltooltip.='<br>'.$langs->trans("Logo").': '.yn($module->option_logo,1,1);
                 $htmltooltip.='<br>'.$langs->trans("MultiLanguage").': '.yn($module->option_multilang,1,1);
                 print '<td align="center">';
-                print $form->textwithpicto('',$htmltooltip,-1,0);
+                print Form::textwithpicto('',$htmltooltip,-1,0);
                 print '</td>';
 
 				// Preview
diff --git a/htdocs/ecm/index.php b/htdocs/ecm/index.php
index e3fa4ece95d..4009967ac9d 100644
--- a/htdocs/ecm/index.php
+++ b/htdocs/ecm/index.php
@@ -509,7 +509,7 @@ if (empty($action) || $action == 'file_manager' || preg_match('/refresh/i',$acti
 	print img_picto_common('','treemenu/base.gif');
 	print '</td><td align="left">';
 	$txt=$langs->trans("ECMRoot").' ('.$langs->trans("ECMSectionsManual").')';
-	print $form->textwithpicto($txt, $htmltooltip, 1, 'info');
+	print Form::textwithpicto($txt, $htmltooltip, 1, 'info');
 	print '</td>';
 	print '</tr></table></td>';
 	print '<td align="right">';
@@ -519,7 +519,7 @@ if (empty($action) || $action == 'file_manager' || preg_match('/refresh/i',$acti
 	print '<td align="right">&nbsp;</td>';
 	print '<td align="right">&nbsp;</td>';
 	print '<td align="center">';
-	//print $form->textwithpicto('',$htmltooltip,1,"info");
+	//print Form::textwithpicto('',$htmltooltip,1,"info");
 	print '</td>';
 	print '</tr>';
 
@@ -670,7 +670,7 @@ if (empty($action) || $action == 'file_manager' || preg_match('/refresh/i',$acti
     			$htmltooltip.='<b>'.$langs->trans("ECMNbOfFilesInDir").'</b>: '.$val['cachenbofdoc'].'<br>';
     			if ($nbofsubdir) $htmltooltip.='<b>'.$langs->trans("ECMNbOfFilesInSubDir").'</b>: '.$nboffilesinsubdir;
     			else $htmltooltip.='<b>'.$langs->trans("ECMNbOfSubDir").'</b>: '.$nbofsubdir.'<br>';
-    			print $form->textwithpicto('', $htmltooltip, 1, 'info');
+    			print Form::textwithpicto('', $htmltooltip, 1, 'info');
     			print "</td>";
 
     			print '</tr></table>';
diff --git a/htdocs/ecm/index_auto.php b/htdocs/ecm/index_auto.php
index 76ce04235e4..70ce4a87e04 100644
--- a/htdocs/ecm/index_auto.php
+++ b/htdocs/ecm/index_auto.php
@@ -503,7 +503,7 @@ if (empty($action) || $action == 'file_manager' || preg_match('/refresh/i',$acti
 		print img_picto_common('','treemenu/base.gif');
 		print '</td><td align="left">';
 		$txt=$langs->trans("ECMRoot").' ('.$langs->trans("ECMSectionsAuto").')';
-		print $form->textwithpicto($txt, $htmltooltip, 1, 0);
+		print Form::textwithpicto($txt, $htmltooltip, 1, 0);
 		print '</td>';
 		print '</tr></table>';
 		print '</td>';
@@ -549,7 +549,7 @@ if (empty($action) || $action == 'file_manager' || preg_match('/refresh/i',$acti
 		    $htmltooltip='<b>'.$langs->trans("Type").'</b>: '.$langs->trans("ECMSectionAuto").'<br>';
 		    $htmltooltip.='<b>'.$langs->trans("ECMCreationUser").'</b>: '.$langs->trans("ECMTypeAuto").'<br>';
 		    $htmltooltip.='<b>'.$langs->trans("Description").'</b>: '.$val['desc'];
-		    print $form->textwithpicto('', $htmltooltip, 1, 'info');
+		    print Form::textwithpicto('', $htmltooltip, 1, 'info');
 		    print '</div>';
 		    print '</li>';
 
diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php
index 1e3c08bd5fa..8108c0e33cd 100644
--- a/htdocs/expedition/card.php
+++ b/htdocs/expedition/card.php
@@ -703,7 +703,7 @@ if ($action == 'create')
 			if (!empty($conf->incoterm->enabled))
 			{
 				print '<tr>';
-				print '<td><label for="incoterm_id">'.$form->textwithpicto($langs->trans("IncotermLabel"), $object->libelle_incoterms, 1).'</label></td>';
+				print '<td><label for="incoterm_id">'.Form::textwithpicto($langs->trans("IncotermLabel"), $object->libelle_incoterms, 1).'</label></td>';
 		        print '<td colspan="3" class="maxwidthonsmartphone">';
 		        print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:''));
 				print '</td></tr>';
@@ -817,7 +817,7 @@ if ($action == 'create')
                     $text=$product_static->getNomUrl(1);
                     $text.= ' - '.(! empty($line->label)?$line->label:$line->product_label);
                     $description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($line->desc));
-                    print $form->textwithtooltip($text,$description,3,'','',$i);
+                    print Form::textwithtooltip($text,$description,3,'','',$i);
 
                     // Show range
                     print_date_range($db->jdate($line->date_start),$db->jdate($line->date_end));
@@ -838,7 +838,7 @@ if ($action == 'create')
 
                     if (! empty($line->label)) {
                     	$text.= ' <strong>'.$line->label.'</strong>';
-                    	print $form->textwithtooltip($text,$line->desc,3,'','',$i);
+                    	print Form::textwithtooltip($text,$line->desc,3,'','',$i);
                     } else {
                     	print $text.' '.nl2br($line->desc);
                     }
@@ -1491,7 +1491,7 @@ else if ($id || $ref)
 	        print '<td colspan="3">';
 			if ($action != 'editincoterm')
 			{
-				print $form->textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1);
+				print Form::textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1);
 			}
 			else
 			{
@@ -1589,7 +1589,7 @@ else if ($id || $ref)
 				$text=$product_static->getNomUrl(1);
 				$text.= ' - '.$label;
 				$description=(! empty($conf->global->PRODUIT_DESC_IN_FORM)?'':dol_htmlentitiesbr($lines[$i]->description));
-				print $form->textwithtooltip($text,$description,3,'','',$i);
+				print Form::textwithtooltip($text,$description,3,'','',$i);
 				print_date_range($lines[$i]->date_start,$lines[$i]->date_end);
 				if (! empty($conf->global->PRODUIT_DESC_IN_FORM))
 				{
@@ -1605,7 +1605,7 @@ else if ($id || $ref)
 
 				if (! empty($lines[$i]->label)) {
 					$text.= ' <strong>'.$lines[$i]->label.'</strong>';
-					print $form->textwithtooltip($text,$lines[$i]->description,3,'','',$i);
+					print Form::textwithtooltip($text,$lines[$i]->description,3,'','',$i);
 				} else {
 					print $text.' '.nl2br($lines[$i]->description);
 				}
@@ -1657,7 +1657,7 @@ else if ($id || $ref)
 							$detail.= $langs->trans("DetailWarehouseFormat",$entrepot->libelle,$detail_entrepot->qty_shipped).'<br/>';
 						}
 					}
-					print $form->textwithtooltip($langs->trans("DetailWarehouseNumber"),$detail);
+					print Form::textwithtooltip($langs->trans("DetailWarehouseNumber"),$detail);
 				}
 				print '</td>';
 			}
@@ -1675,7 +1675,7 @@ else if ($id || $ref)
 						{
 							$detail.= $langs->trans("DetailBatchFormat",$dbatch->batch,dol_print_date($dbatch->eatby,"day"),dol_print_date($dbatch->sellby,"day"),$dbatch->dluo_qty).'<br/>';
 						}
-						print $form->textwithtooltip($langs->trans("DetailBatchNumber"),$detail);
+						print Form::textwithtooltip($langs->trans("DetailBatchNumber"),$detail);
 					}
 					else 
 					{
diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php
index 4b08afabb21..f1829830daa 100644
--- a/htdocs/expedition/list.php
+++ b/htdocs/expedition/list.php
@@ -177,7 +177,7 @@ if ($resql)
     }
 
     $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
-    $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
+    $selectedfields=Form::multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
     
     print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">';
 
diff --git a/htdocs/expedition/shipment.php b/htdocs/expedition/shipment.php
index 66f9582cfc0..832f05ca803 100644
--- a/htdocs/expedition/shipment.php
+++ b/htdocs/expedition/shipment.php
@@ -554,7 +554,7 @@ if ($id > 0 || ! empty($ref))
 					$text.= ' - '.$label;
 					$description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($objp->description)).'<br>';
                     $description.= $product_static->show_photos($conf->product->multidir_output[$product_static->entity],1,1,0,0,0,80);
-					print $form->textwithtooltip($text,$description,3,'','',$i);
+					print Form::textwithtooltip($text,$description,3,'','',$i);
 
 					// Show range
 					print_date_range($db->jdate($objp->date_start),$db->jdate($objp->date_end));
@@ -575,7 +575,7 @@ if ($id > 0 || ! empty($ref))
 
 					if (! empty($objp->label)) {
 						$text.= ' <strong>'.$objp->label.'</strong>';
-						print $form->textwithtooltip($text,$objp->description,3,'','',$i);
+						print Form::textwithtooltip($text,$objp->description,3,'','',$i);
 					} else {
 						print $text.' '.nl2br($objp->description);
 					}
diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php
index be9d8ab49bd..a31462cd977 100644
--- a/htdocs/expensereport/card.php
+++ b/htdocs/expensereport/card.php
@@ -1135,7 +1135,7 @@ if ($action == 'create')
 	if (! empty($conf->global->EXPENSEREPORT_DEFAULT_VALIDATOR)) $defaultselectuser=$conf->global->EXPENSEREPORT_DEFAULT_VALIDATOR;
 	if (GETPOST('fk_user_validator') > 0) $defaultselectuser=GETPOST('fk_user_validator');
 	$s=$form->select_dolusers($defaultselectuser, "fk_user_validator", 1, "", 0, $include_users);
-	print $form->textwithpicto($s, $langs->trans("AnyOtherInThisListCanValidate"));
+	print Form::textwithpicto($s, $langs->trans("AnyOtherInThisListCanValidate"));
 	print '</td>';
 	print '</tr>';
 	if (! empty($conf->global->EXPENSEREPORT_ASK_PAYMENTMODE_ON_CREATION))
@@ -1264,7 +1264,7 @@ else
 					print '<td>';
 					$include_users = $object->fetch_users_approver_expensereport();
 					$s=$form->select_dolusers($object->fk_user_validator,"fk_user_validator",1,"",0,$include_users);
-					print $form->textwithpicto($s, $langs->trans("AnyOtherInThisListCanValidate"));
+					print Form::textwithpicto($s, $langs->trans("AnyOtherInThisListCanValidate"));
 					print '</td>';
 					print '</tr>';
 				}
diff --git a/htdocs/exports/export.php b/htdocs/exports/export.php
index c1db488f78d..c80e7563cee 100644
--- a/htdocs/exports/export.php
+++ b/htdocs/exports/export.php
@@ -582,7 +582,7 @@ if ($step == 2 && $datatoexport)
             print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?step=2&datatoexport='.$datatoexport.'&action=unselectfield&field='.$code.'">'.img_left('default', 0, 'style="max-width: 20px"').'</a></td>';
             print '<td>';
             //print $text.'-'.$htmltext."<br>";
-            print $form->textwithpicto($text,$htmltext);
+            print Form::textwithpicto($text,$htmltext);
 			//print ' ('.$code.')';
             print '</td>';
         }
@@ -591,7 +591,7 @@ if ($step == 2 && $datatoexport)
         	// Fields not selected
             print '<td>';
 			//print $text.'-'.$htmltext."<br>";
-			print $form->textwithpicto($text,$htmltext);
+			print Form::textwithpicto($text,$htmltext);
 			//print ' ('.$code.')';
             print '</td>';
             print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?step=2&datatoexport='.$datatoexport.'&action=selectfield&field='.$code.'">'.img_right('default', 0, 'style="max-width: 20px"').'</a></td>';
@@ -749,7 +749,7 @@ if ($step == 3 && $datatoexport)
 		    $htmltext.=$langs->trans("SourceExample").': <b>'.$objexport->array_export_examplevalues[0][$code].'</b><br>';
 		}
 		print '<td>';
-		print $form->textwithpicto($text,$htmltext);
+		print Form::textwithpicto($text,$htmltext);
 		print '</td>';
 
 		// Filter value
@@ -760,7 +760,7 @@ if ($step == 3 && $datatoexport)
 			if ($szInfoFiltre)	// Is there an info help for this filter ?
 			{
 				$tmp=$objexport->build_filterField($Typefieldsarray[$code], $code, $ValueFilter);
-				print $form->textwithpicto($tmp, $szInfoFiltre);
+				print Form::textwithpicto($tmp, $szInfoFiltre);
 			}
 			else
 			{
@@ -918,7 +918,7 @@ if ($step == 4 && $datatoexport)
 		{
 		    $htmltext.=$langs->trans("SourceExample").': <b>'.$objexport->array_export_examplevalues[0][$code].'</b><br>';
 		}
-        print $form->textwithpicto($text,$htmltext);
+        print Form::textwithpicto($text,$htmltext);
 		//print ' ('.$code.')';
         print '</td>';
 
@@ -1137,7 +1137,7 @@ if ($step == 5 && $datatoexport)
         print '<td width="16">'.img_picto_common($key,$objmodelexport->getPictoForKey($key)).'</td>';
 	    $text=$objmodelexport->getDriverDescForKey($key);
 	    $label=$listeall[$key];
-	    print '<td>'.$form->textwithpicto($label,$text).'</td>';
+	    print '<td>'.Form::textwithpicto($label,$text).'</td>';
         print '<td>'.$objmodelexport->getLibLabelForKey($key).'</td><td align="right">'.$objmodelexport->getLibVersionForKey($key).'</td></tr>'."\n";
     }
     print '</table>';
diff --git a/htdocs/exports/index.php b/htdocs/exports/index.php
index ca3bcea1458..98460db0a19 100644
--- a/htdocs/exports/index.php
+++ b/htdocs/exports/index.php
@@ -139,7 +139,7 @@ foreach($liste as $key => $val)
 	print '<td width="16">'.img_picto_common($model->getDriverLabelForKey($key),$model->getPictoForKey($key)).'</td>';
 	$text=$model->getDriverDescForKey($key);
 	$label=$liste[$key];
-	print '<td>'.$form->textwithpicto($label,$text).'</td>';
+	print '<td>'.Form::textwithpicto($label,$text).'</td>';
 	print '<td>'.$model->getLibLabelForKey($key).'</td>';
 	print '<td class="nowrap" align="right">'.$model->getLibVersionForKey($key).'</td>';
 	print '</tr>';
diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php
index 2da648e01cd..aadbc7f663f 100644
--- a/htdocs/fourn/commande/card.php
+++ b/htdocs/fourn/commande/card.php
@@ -1612,7 +1612,7 @@ if ($action=='create')
 	if (!empty($conf->incoterm->enabled))
 	{
 		print '<tr>';
-		print '<td><label for="incoterm_id">'.$form->textwithpicto($langs->trans("IncotermLabel"), $object->libelle_incoterms, 1).'</label></td>';
+		print '<td><label for="incoterm_id">'.Form::textwithpicto($langs->trans("IncotermLabel"), $object->libelle_incoterms, 1).'</label></td>';
         print '<td colspan="3" class="maxwidthonsmartphone">';
         print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:''));
 		print '</td></tr>';
@@ -2099,7 +2099,7 @@ elseif (! empty($object->id))
         print '<td colspan="3">';
 		if ($action != 'editincoterm')
 		{
-			print $form->textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1);
+			print Form::textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1);
 		}
 		else
 		{
@@ -2257,7 +2257,7 @@ elseif (! empty($object->id))
 				$text=$product_static->getNomUrl(1,'supplier');
 				$text.= ' - '.$product_static->libelle;
 				$description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($line->description));
-				print $form->textwithtooltip($text,$description,3,'','',$i);
+				print Form::textwithtooltip($text,$description,3,'','',$i);
 
 				// Show range
 				print_date_range($date_start,$date_end);
@@ -2337,7 +2337,7 @@ elseif (! empty($object->id))
 				$text=$product_static->getNomUrl(1,'supplier');
 				$text.= ' - '.$product_static->libelle;
 				$description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($line->description));
-				print $form->textwithtooltip($text,$description,3,'','',$i);
+				print Form::textwithtooltip($text,$description,3,'','',$i);
 
 				// Show range
 				print_date_range($date_start,$date_end);
diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php
index 5dad9e2f706..f76c411b0f2 100644
--- a/htdocs/fourn/facture/card.php
+++ b/htdocs/fourn/facture/card.php
@@ -1402,7 +1402,7 @@ if ($action == 'create')
     print '<tr height="18"><td width="16px" valign="middle">';
     print '<input type="radio" name="type" value="0"'.($_POST['type']==0?' checked':'').'>';
     print '</td><td valign="middle">';
-    $desc=$form->textwithpicto($langs->trans("InvoiceStandardAsk"),$langs->transnoentities("InvoiceStandardDesc"),1);
+    $desc=Form::textwithpicto($langs->trans("InvoiceStandardAsk"),$langs->transnoentities("InvoiceStandardDesc"),1);
     print $desc;
     print '</td></tr>'."\n";
 
@@ -1411,7 +1411,7 @@ if ($action == 'create')
     print '<tr height="18"><td width="16px" valign="middle">';
     print '<input type="radio" name="type" value="3"'.($_POST['type']==3?' checked':'').'>';
     print '</td><td valign="middle">';
-    $desc=$form->textwithpicto($langs->trans("InvoiceDeposit"),$langs->transnoentities("InvoiceDepositDesc"),1);
+    $desc=Form::textwithpicto($langs->trans("InvoiceDeposit"),$langs->transnoentities("InvoiceDepositDesc"),1);
     print $desc;
     print '</td></tr>'."\n";
 
@@ -1421,7 +1421,7 @@ if ($action == 'create')
     print '<tr height="18"><td width="16px" valign="middle">';
     print '<input type="radio" name="type" value="4"'.($_POST['type']==4?' checked':'').'>';
     print '</td><td valign="middle">';
-    $desc=$form->textwithpicto($langs->trans("InvoiceProForma"),$langs->transnoentities("InvoiceProFormaDesc"),1);
+    $desc=Form::textwithpicto($langs->trans("InvoiceProForma"),$langs->transnoentities("InvoiceProFormaDesc"),1);
     print $desc;
     print '</td></tr>'."\n";
     }
@@ -1446,7 +1446,7 @@ if ($action == 'create')
     $text.='<option value="-1">'.$langs->trans("NoReplacableInvoice").'</option>';
     }
     $text.='</select>';
-    $desc=$form->textwithpicto($text,$langs->transnoentities("InvoiceReplacementDesc"),1);
+    $desc=Form::textwithpicto($text,$langs->transnoentities("InvoiceReplacementDesc"),1);
     print $desc;
     print '</td></tr>';
 
@@ -1471,7 +1471,7 @@ if ($action == 'create')
     $text.='<option value="-1">'.$langs->trans("NoInvoiceToCorrect").'</option>';
     }
     $text.='</select>';
-    $desc=$form->textwithpicto($text,$langs->transnoentities("InvoiceAvoirDesc"),1);
+    $desc=Form::textwithpicto($text,$langs->transnoentities("InvoiceAvoirDesc"),1);
     print $desc;
     print '</td></tr>'."\n";
     */
@@ -1516,7 +1516,7 @@ if ($action == 'create')
 	if (!empty($conf->incoterm->enabled))
 	{
 		print '<tr>';
-		print '<td><label for="incoterm_id">'.$form->textwithpicto($langs->trans("IncotermLabel"), $objectsrc->libelle_incoterms, 1).'</label></td>';
+		print '<td><label for="incoterm_id">'.Form::textwithpicto($langs->trans("IncotermLabel"), $objectsrc->libelle_incoterms, 1).'</label></td>';
         print '<td colspan="3" class="maxwidthonsmartphone">';
         print $form->select_incoterms((!empty($objectsrc->fk_incoterms) ? $objectsrc->fk_incoterms : ''), (!empty($objectsrc->location_incoterms)?$objectsrc->location_incoterms:''));
 		print '</td></tr>';
@@ -2086,7 +2086,7 @@ else
         $s.='<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=calculate&calculationrule=totalofround">'.$langs->trans("Mode1").'</a>';
         $s.=' / ';
         $s.='<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=calculate&calculationrule=roundoftotal">'.$langs->trans("Mode2").'</a>';
-        print $form->textwithtooltip($s, $langs->trans("CalculationRuleDesc",$calculationrulenum).'<br>'.$langs->trans("CalculationRuleDescSupplier"), 2, 1, img_picto('','help'));
+        print Form::textwithtooltip($s, $langs->trans("CalculationRuleDesc",$calculationrulenum).'<br>'.$langs->trans("CalculationRuleDescSupplier"), 2, 1, img_picto('','help'));
         print '</td></tr>';
 
         // Amount Local Taxes
@@ -2168,7 +2168,7 @@ else
 	        print '<td colspan="3">';
 			if ($action != 'editincoterm')
 			{
-				print $form->textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1);
+				print Form::textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1);
 			}
 			else
 			{
diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php
index 23d5a61415b..021e08d5b53 100644
--- a/htdocs/imports/import.php
+++ b/htdocs/imports/import.php
@@ -453,7 +453,7 @@ if ($step == 2 && $datatoimport)
 		print '<tr '.$bc[$var].'>';
 		print '<td width="16">'.img_picto_common($key,$objmodelimport->getPictoForKey($key)).'</td>';
     	$text=$objmodelimport->getDriverDescForKey($key);
-    	print '<td>'.$form->textwithpicto($objmodelimport->getDriverLabelForKey($key),$text).'</td>';
+    	print '<td>'.Form::textwithpicto($objmodelimport->getDriverLabelForKey($key),$text).'</td>';
 		print '<td align="center"><a href="'.DOL_URL_ROOT.'/imports/emptyexample.php?format='.$key.$param.'" target="_blank">'.$langs->trans("DownloadEmptyExample").'</a></td>';
 		// Action button
 		print '<td align="right">';
@@ -522,7 +522,7 @@ if ($step == 3 && $datatoimport)
 	print '<tr><td width="25%">'.$langs->trans("SourceFileFormat").'</td>';
 	print '<td>';
     $text=$objmodelimport->getDriverDescForKey($format);
-    print $form->textwithpicto($objmodelimport->getDriverLabelForKey($format),$text);
+    print Form::textwithpicto($objmodelimport->getDriverLabelForKey($format),$text);
     print '</td><td align="right" class="nowrap"><a href="'.DOL_URL_ROOT.'/imports/emptyexample.php?format='.$format.$param.'" target="_blank">'.$langs->trans("DownloadEmptyExample").'</a>';
 
 	print '</td></tr>';
@@ -739,7 +739,7 @@ if ($step == 4 && $datatoimport)
 	print '<tr><td width="25%">'.$langs->trans("SourceFileFormat").'</td>';
 	print '<td>';
     $text=$objmodelimport->getDriverDescForKey($format);
-    print $form->textwithpicto($objmodelimport->getDriverLabelForKey($format),$text);
+    print Form::textwithpicto($objmodelimport->getDriverLabelForKey($format),$text);
 	print '</td></tr>';
 
 	// Separator and enclosure
@@ -940,7 +940,7 @@ if ($step == 4 && $datatoimport)
 		}
 		$htmltext.=$langs->trans("FieldTitle").": <b>".$langs->trans($newlabel)."</b><br>";
 		$htmltext.=$langs->trans("Table")." -> ".$langs->trans("Field").': <b>'.$tablename." -> ".preg_replace('/^.*\./','',$code)."</b><br>";
-		print $form->textwithpicto($more,$htmltext);
+		print Form::textwithpicto($more,$htmltext);
 		print '</td>';
 
 		print '</tr>';
@@ -1203,7 +1203,7 @@ if ($step == 5 && $datatoimport)
 	print '<tr><td width="25%">'.$langs->trans("SourceFileFormat").'</td>';
 	print '<td>';
     $text=$objmodelimport->getDriverDescForKey($format);
-    print $form->textwithpicto($objmodelimport->getDriverLabelForKey($format),$text);
+    print Form::textwithpicto($objmodelimport->getDriverLabelForKey($format),$text);
 	print '</td></tr>';
 
 	// Separator and enclosure
@@ -1247,7 +1247,7 @@ if ($step == 5 && $datatoimport)
 	else
 	{
 	    print '<input type="text" size="4" name="excludefirstline" value="'.$excludefirstline.'">';
-	    print $form->textwithpicto("", $langs->trans("SetThisValueTo2ToExcludeFirstLine"));
+	    print Form::textwithpicto("", $langs->trans("SetThisValueTo2ToExcludeFirstLine"));
 	}
 	print '</td></tr>';
 
@@ -1264,7 +1264,7 @@ if ($step == 5 && $datatoimport)
 	else
 	{
 	    print '<input type="text" size="4" name="endatlinenb" value="'.$endatlinenb.'">';
-	    print $form->textwithpicto("", $langs->trans("KeepEmptyToGoToEndOfFile"));
+	    print Form::textwithpicto("", $langs->trans("KeepEmptyToGoToEndOfFile"));
 	}
 	print '</td></tr>';
 	
@@ -1586,7 +1586,7 @@ if ($step == 6 && $datatoimport)
 	print '<tr><td width="25%">'.$langs->trans("SourceFileFormat").'</td>';
 	print '<td>';
     $text=$objmodelimport->getDriverDescForKey($format);
-    print $form->textwithpicto($objmodelimport->getDriverLabelForKey($format),$text);
+    print Form::textwithpicto($objmodelimport->getDriverLabelForKey($format),$text);
 	print '</td></tr>';
 
 	// File to import
diff --git a/htdocs/imports/index.php b/htdocs/imports/index.php
index 98da9584308..d41b007dc74 100644
--- a/htdocs/imports/index.php
+++ b/htdocs/imports/index.php
@@ -123,7 +123,7 @@ foreach($liste as $key)
 	print '<tr '.$bc[$var].'>';
 	print '<td width="16">'.img_picto_common($model->getDriverLabelForKey($key),$model->getPictoForKey($key)).'</td>';
 	$text=$model->getDriverDescForKey($key);
-	print '<td>'.$form->textwithpicto($model->getDriverLabelForKey($key),$text).'</td>';
+	print '<td>'.Form::textwithpicto($model->getDriverLabelForKey($key),$text).'</td>';
 	print '<td>'.$model->getLibLabelForKey($key).'</td>';
 	print '<td class="nowrap" align="right">'.$model->getLibVersionForKey($key).'</td>';
 	print '</tr>';
diff --git a/htdocs/index.php b/htdocs/index.php
index 3fa01b5cc98..f972dc8665d 100644
--- a/htdocs/index.php
+++ b/htdocs/index.php
@@ -355,7 +355,7 @@ $boxwork.='<table summary="'.dol_escape_htmltag($langs->trans("WorkingBoard")).'
 $boxwork.='<tr class="liste_titre">';
 $boxwork.='<th class="liste_titre" colspan="2">'.$langs->trans("DolibarrWorkBoard").'</th>';
 $boxwork.='<th class="liste_titre" align="right">'.$langs->trans("Number").'</th>';
-$boxwork.='<th class="liste_titre" align="right">'.$form->textwithpicto($langs->trans("Late"),$langs->trans("LateDesc")).'</th>';
+$boxwork.='<th class="liste_titre" align="right">'.Form::textwithpicto($langs->trans("Late"),$langs->trans("LateDesc")).'</th>';
 $boxwork.='<th class="liste_titre">&nbsp;</th>';
 //print '<th class="liste_titre" width="20">&nbsp;</th>';
 if ($showweather) $boxwork.='<th class="liste_titre hideonsmartphone" width="80">&nbsp;</th>';
diff --git a/htdocs/livraison/card.php b/htdocs/livraison/card.php
index 8a815c31edb..34566a70e0b 100644
--- a/htdocs/livraison/card.php
+++ b/htdocs/livraison/card.php
@@ -438,7 +438,7 @@ if ($action == 'create')    // Seems to no be used
 
 				if (! empty($line->label)) {
 					$text.= ' <strong>'.$line->label.'</strong>';
-					print $form->textwithtooltip($text,$line->description,3,'','',$i);
+					print Form::textwithtooltip($text,$line->description,3,'','',$i);
 				} else {
 					print $text.' '.nl2br($line->description);
 				}
@@ -672,7 +672,7 @@ else
 		        print '<td colspan="3">';
 				if ($action != 'editincoterm')
 				{
-					print $form->textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1);
+					print Form::textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1);
 				}
 				else
 				{
@@ -777,7 +777,7 @@ else
 					$text.= ' - '.$label;
 					$description=(! empty($conf->global->PRODUIT_DESC_IN_FORM)?'':dol_htmlentitiesbr($object->lines[$i]->description));
 					//print $description;
-					print $form->textwithtooltip($text,$description,3,'','',$i);
+					print Form::textwithtooltip($text,$description,3,'','',$i);
 					print_date_range($object->lines[$i]->date_start,$object->lines[$i]->date_end);
 					if (! empty($conf->global->PRODUIT_DESC_IN_FORM))
 					{
@@ -792,7 +792,7 @@ else
 
 					if (! empty($object->lines[$i]->label)) {
 						$text.= ' <strong>'.$object->lines[$i]->label.'</strong>';
-						print $form->textwithtooltip($text,$object->lines[$i]->description,3,'','',$i);
+						print Form::textwithtooltip($text,$object->lines[$i]->description,3,'','',$i);
 					} else {
 						print $text.' '.nl2br($object->lines[$i]->description);
 					}
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index 17611868829..ad3378f5421 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -1620,7 +1620,7 @@ function left_menu($menu_array_before, $helppagename='', $notused='', $menu_arra
 	    {
     	    if (! is_object($form)) $form=new Form($db);
     	    $selected=-1;
-            $searchform.=$form->selectArrayAjax('searchselectcombo', DOL_URL_ROOT.'/core/ajax/selectsearchbox.php', $selected, '', '', 0, 1, 'vmenusearchselectcombo', 1, $langs->trans("Search"), 1);
+            $searchform.=Form::selectArrayAjax('searchselectcombo', DOL_URL_ROOT.'/core/ajax/selectsearchbox.php', $selected, '', '', 0, 1, 'vmenusearchselectcombo', 1, $langs->trans("Search"), 1);
 	    }
 	    else
 	    {
diff --git a/htdocs/product/admin/dynamic_prices.php b/htdocs/product/admin/dynamic_prices.php
index c8230f8421e..86f639b1350 100644
--- a/htdocs/product/admin/dynamic_prices.php
+++ b/htdocs/product/admin/dynamic_prices.php
@@ -320,7 +320,7 @@ if ($action == 'create_updater' || $action == 'edit_updater') {
     //Parameters
     print '<tr>';
     $help = $langs->trans("GlobalVariableUpdaterHelp".$type).'<br><b>'.$langs->trans("GlobalVariableUpdaterHelpFormat".$type).'</b>';
-    print '<td class="fieldrequired">'.$form->textwithpicto($langs->trans("Parameters"),$help,1).'</td><td>';
+    print '<td class="fieldrequired">'.Form::textwithpicto($langs->trans("Parameters"),$help,1).'</td><td>';
     require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
     $doleditor=new DolEditor('parameters',empty($price_updaters->parameters)?'':$price_updaters->parameters,'',300,'','',false,false,false,10,80);
     $doleditor->Create();
diff --git a/htdocs/product/admin/product.php b/htdocs/product/admin/product.php
index b996a66c75f..eac5b2bd720 100644
--- a/htdocs/product/admin/product.php
+++ b/htdocs/product/admin/product.php
@@ -390,7 +390,7 @@ foreach ($dirproduct as $dirroot)
 
     			print '<td align="center">';
     			$s=$modCodeProduct->getToolTip($langs,null,-1);
-    			print $form->textwithpicto('',$s,1);
+    			print Form::textwithpicto('',$s,1);
     			print '</td>';
 
     			print '</tr>';
@@ -510,7 +510,7 @@ if ($resql)
         					$htmltooltip.='<br>'.$langs->trans("WatermarkOnDraft").': '.yn((! empty($module->option_draft_watermark)?$module->option_draft_watermark:''), 1, 1);
         
         					print '<td align="center" class="nowrap">';
-        					print $form->textwithpicto('',$htmltooltip,1,0);
+        					print Form::textwithpicto('',$htmltooltip,1,0);
         					print '</td>';
         
         					// Preview
@@ -611,7 +611,7 @@ print '</tr>';
 // Utilisation formulaire Ajax sur choix produit
 $var=!$var;
 print '<tr '.$bc[$var].'>';
-print '<td>'.$form->textwithpicto($langs->trans("UseSearchToSelectProduct"),$langs->trans('UseSearchToSelectProductTooltip'),1).'</td>';
+print '<td>'.Form::textwithpicto($langs->trans("UseSearchToSelectProduct"),$langs->trans('UseSearchToSelectProductTooltip'),1).'</td>';
 if (empty($conf->use_javascript_ajax))
 {
 	print '<td class="nowrap" align="right" colspan="2">';
diff --git a/htdocs/product/composition/card.php b/htdocs/product/composition/card.php
index 9686c4683ae..90726b669a1 100644
--- a/htdocs/product/composition/card.php
+++ b/htdocs/product/composition/card.php
@@ -258,7 +258,7 @@ if ($id > 0 || ! empty($ref))
 
 
 		// Number of parent virtual products
-		//print $form->textwithpicto($langs->trans("ParentProductsNumber").': '.count($prodsfather), $langs->trans('IfZeroItIsNotUsedByVirtualProduct'));
+		//print Form::textwithpicto($langs->trans("ParentProductsNumber").': '.count($prodsfather), $langs->trans('IfZeroItIsNotUsedByVirtualProduct'));
 
 		//if (count($prodsfather) > 0)
 		//{
@@ -305,7 +305,7 @@ if ($id > 0 || ! empty($ref))
 
 
 		// Number of subproducts
-		//print $form->textwithpicto($langs->trans("AssociatedProductsNumber").': '.(empty($conf->global->PRODUCT_SHOW_SUB_SUB_PRODUCTS)?$nbofsubproducts:$nbofsubsubproducts), $langs->trans('IfZeroItIsNotAVirtualProduct'));
+		//print Form::textwithpicto($langs->trans("AssociatedProductsNumber").': '.(empty($conf->global->PRODUCT_SHOW_SUB_SUB_PRODUCTS)?$nbofsubproducts:$nbofsubsubproducts), $langs->trans('IfZeroItIsNotAVirtualProduct'));
 
 		// List of subproducts
 		//if (count($prods_arbo) > 0)
diff --git a/htdocs/product/dynamic_price/editor.php b/htdocs/product/dynamic_price/editor.php
index 54a219c49c9..dc3ef563c16 100644
--- a/htdocs/product/dynamic_price/editor.php
+++ b/htdocs/product/dynamic_price/editor.php
@@ -197,7 +197,7 @@ foreach ($price_globals->listGlobalVariables() as $entry) {
 }
 
 //Price expression editor
-print '<tr><td class="fieldrequired">'.$form->textwithpicto($langs->trans("PriceExpressionEditor"),$help_text,1).'</td><td>';
+print '<tr><td class="fieldrequired">'.Form::textwithpicto($langs->trans("PriceExpressionEditor"),$help_text,1).'</td><td>';
 require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
 $doleditor=new DolEditor('expression',isset($price_expression->expression)?$price_expression->expression:'','',300,'','',false,false,false,4,80);
 $doleditor->Create();
diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php
index 339aad05c34..49a837e1d4c 100644
--- a/htdocs/product/fournisseurs.php
+++ b/htdocs/product/fournisseurs.php
@@ -312,7 +312,7 @@ if ($id > 0 || $ref)
             print '<tr><td>';
 			$textdesc =$langs->trans("CostPriceDescription");
 			$textdesc.="<br>".$langs->trans("CostPriceUsage");
-			$text=$form->textwithpicto($langs->trans("CostPrice"), $textdesc, 1, 'help', '');
+			$text=Form::textwithpicto($langs->trans("CostPrice"), $textdesc, 1, 'help', '');
             print $form->editfieldkey($text,'cost_price',$object->cost_price,$object,$user->rights->produit->creer||$user->rights->service->creer,'amount:6');
             print '</td><td colspan="2">';
             print $form->editfieldval($text,'cost_price',$object->cost_price,$object,$user->rights->produit->creer||$user->rights->service->creer,'amount:6');
diff --git a/htdocs/product/list.php b/htdocs/product/list.php
index bb15fbc4327..4f12671829f 100644
--- a/htdocs/product/list.php
+++ b/htdocs/product/list.php
@@ -127,7 +127,7 @@ if (empty($conf->global->PRODUIT_MULTIPRICES))
 	$titlesellprice=$langs->trans("SellingPrice");
 	if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))
 	{
-		$titlesellprice=$form->textwithpicto($langs->trans("SellingPrice"), $langs->trans("DefaultPriceRealPriceMayDependOnCustomer"));
+		$titlesellprice=Form::textwithpicto($langs->trans("SellingPrice"), $langs->trans("DefaultPriceRealPriceMayDependOnCustomer"));
 	}
 }
 
@@ -414,7 +414,7 @@ else
     		}
 
 			$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
-            $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
+            $selectedfields=Form::multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
     		
             print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">';
     		print '<tr class="liste_titre">';
@@ -663,7 +663,7 @@ else
     							if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire)
     							{
     								$htmltext=$product_fourn->display_price_product_fournisseur(1, 1, 0, 1);
-    								print $form->textwithpicto(price($product_fourn->fourn_unitprice).' '.$langs->trans("HT"),$htmltext);
+    								print Form::textwithpicto(price($product_fourn->fourn_unitprice).' '.$langs->trans("HT"),$htmltext);
     							}
     							else print price($product_fourn->fourn_unitprice).' '.$langs->trans("HT");
     						}
diff --git a/htdocs/product/price.php b/htdocs/product/price.php
index 9dfb40c8a55..6dcd8a7c32d 100644
--- a/htdocs/product/price.php
+++ b/htdocs/product/price.php
@@ -1022,7 +1022,7 @@ if ($action == 'edit_price' && $object->getRights()->creer)
 		$product->fetch($id, $ref, '', 1); //Ignore the math expression when getting the price
 		print '<tr id="price_numeric"><td width="20%">';
 		$text = $langs->trans('SellingPrice');
-		print $form->textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
+		print Form::textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
 		print '</td><td colspan="2">';
 		if ($object->price_base_type == 'TTC') {
 			print '<input name="price" size="10" value="' . price($product->price_ttc) . '">';
@@ -1034,7 +1034,7 @@ if ($action == 'edit_price' && $object->getRights()->creer)
 		// Price minimum
 		print '<tr><td>';
 		$text = $langs->trans('MinPrice');
-		print $form->textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
+		print Form::textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
 		print '</td><td';
 		if (empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE)) {
 			print ' colspan="2"';
@@ -1121,7 +1121,7 @@ if ($action == 'edit_price' && $object->getRights()->creer)
 
 			print '<tr '.$bc[$var].'>';
 			print '<td>';
-			print $form->textwithpicto($langs->trans('SellingPrice') . ' ' . $i, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
+			print Form::textwithpicto($langs->trans('SellingPrice') . ' ' . $i, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
 			print '</td>';
 
 			// VAT
@@ -1395,7 +1395,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))
 		// Price
 		print '<tr><td class="fieldrequired">';
 		$text = $langs->trans('SellingPrice');
-		print $form->textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
+		print Form::textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
 		print '</td><td>';
 		if ($object->price_base_type == 'TTC') {
 			print '<input name="price" size="10" value="' . price($object->price_ttc) . '">';
@@ -1407,7 +1407,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))
 		// Price minimum
 		print '<tr><td>';
 		$text = $langs->trans('MinPrice');
-		print $form->textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
+		print Form::textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
 		if ($object->price_base_type == 'TTC') {
 			print '<td><input name="price_min" size="10" value="' . price($object->price_min_ttc) . '">';
 		} else {
@@ -1481,7 +1481,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))
 		// Price
 		print '<tr><td width="20%">';
 		$text = $langs->trans('SellingPrice');
-		print $form->textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
+		print Form::textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
 		print '</td><td>';
 		if ($prodcustprice->price_base_type == 'TTC') {
 			print '<input name="price" size="10" value="' . price($prodcustprice->price_ttc) . '">';
@@ -1493,7 +1493,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))
 		// Price minimum
 		print '<tr><td>';
 		$text = $langs->trans('MinPrice');
-		print $form->textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
+		print Form::textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
 		print '</td><td>';
 		if ($prodcustprice->price_base_type == 'TTC') {
 			print '<input name="price_min" size="10" value="' . price($prodcustprice->price_min_ttc) . '">';
diff --git a/htdocs/product/stock/list.php b/htdocs/product/stock/list.php
index f561c771ff2..60913635f7a 100644
--- a/htdocs/product/stock/list.php
+++ b/htdocs/product/stock/list.php
@@ -190,7 +190,7 @@ if ($result)
             else
 			{
 				$htmltext=$langs->trans("OptionMULTIPRICESIsOn");
-            	print $form->textwithtooltip($langs->trans("Variable"),$htmltext);
+            	print Form::textwithtooltip($langs->trans("Variable"),$htmltext);
 			}
             print '</td>';
             // Status
@@ -215,7 +215,7 @@ if ($result)
             else
     		{
     			$htmltext=$langs->trans("OptionMULTIPRICESIsOn");
-               	print $form->textwithtooltip($langs->trans("Variable"),$htmltext);
+               	print Form::textwithtooltip($langs->trans("Variable"),$htmltext);
     		}
             print '</td>';
             print '<td></td>';
diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php
index 42fadf54923..3e934ae945d 100644
--- a/htdocs/product/stock/product.php
+++ b/htdocs/product/stock/product.php
@@ -490,7 +490,7 @@ if ($id > 0 || $ref)
         $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER)?$langs->trans("ReStockOnValidateOrder").'<br>':'');
         $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER)?$langs->trans("ReStockOnDispatchOrder").'<br>':'');
         print '<tr><td>';
-        print $form->textwithtooltip($langs->trans("PhysicalStock"), $text_stock_options, 2, 1, img_picto('', 'info'), '', 2);
+        print Form::textwithtooltip($langs->trans("PhysicalStock"), $text_stock_options, 2, 1, img_picto('', 'info'), '', 2);
         print '</td>';
 		print '<td>'.$object->stock_reel;
 		if ($object->seuil_stock_alerte != '' && ($object->stock_reel < $object->seuil_stock_alerte)) print ' '.img_warning($langs->trans("StockLowerThanLimit"));
diff --git a/htdocs/projet/admin/project.php b/htdocs/projet/admin/project.php
index 30018e90294..cccc8e35505 100644
--- a/htdocs/projet/admin/project.php
+++ b/htdocs/projet/admin/project.php
@@ -459,7 +459,7 @@ foreach ($dirmodels as $reldir)
 						}
 
 						print '<td align="center">';
-						print $form->textwithpicto('',$htmltooltip,1,0);
+						print Form::textwithpicto('',$htmltooltip,1,0);
 						print '</td>';
 
 						print '</tr>';
@@ -563,7 +563,7 @@ if (empty($conf->global->PROJECT_HIDE_TASKS))
 							}
 
 							print '<td align="center">';
-							print $form->textwithpicto('',$htmltooltip,1,0);
+							print Form::textwithpicto('',$htmltooltip,1,0);
 							print '</td>';
 
 							print '</tr>';
@@ -707,7 +707,7 @@ foreach ($dirmodels as $reldir)
 								$htmltooltip.='<br>'.$langs->trans("Logo").': '.yn($module->option_logo,1,1);
 
 								print '<td align="center">';
-								print $form->textwithpicto('',$htmltooltip,1,0);
+								print Form::textwithpicto('',$htmltooltip,1,0);
 								print '</td>';
 
 								// Preview
@@ -866,7 +866,7 @@ if (empty($conf->global->PROJECT_HIDE_TASKS))
 									$htmltooltip.='<br>'.$langs->trans("Logo").': '.yn($module->option_logo,1,1);
 
 									print '<td align="center">';
-									print $form->textwithpicto('',$htmltooltip,1,0);
+									print Form::textwithpicto('',$htmltooltip,1,0);
 									print '</td>';
 
 									// Preview
diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php
index 0383d4388f1..d2d6dcb1506 100644
--- a/htdocs/projet/card.php
+++ b/htdocs/projet/card.php
@@ -455,7 +455,7 @@ if ($action == 'create' && $user->rights->projet->creer)
     // Ref
     $suggestedref=($_POST["ref"]?$_POST["ref"]:$defaultref);
     print '<tr><td><span class="fieldrequired">'.$langs->trans("Ref").'</span></td><td><input size="12" type="text" name="ref" value="'.$suggestedref.'">';
-    print ' '.$form->textwithpicto('', $langs->trans("YouCanCompleteRef", $suggestedref));
+    print ' '.Form::textwithpicto('', $langs->trans("YouCanCompleteRef", $suggestedref));
     print '</td></tr>';
 
     // Label
@@ -469,7 +469,7 @@ if ($action == 'create' && $user->rights->projet->creer)
     if (empty($conf->global->PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS) && empty($conf->dol_use_jmobile))
     {
     	$texthelp=$langs->trans("IfNeedToUseOhterObjectKeepEmpty");
-    	print $form->textwithtooltip($text.' '.img_help(),$texthelp,1);
+    	print Form::textwithtooltip($text.' '.img_help(),$texthelp,1);
     }
     else print $text;
     print ' <a href="'.DOL_URL_ROOT.'/societe/soc.php?action=create&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create').'">'.$langs->trans("AddThirdParty").'</a>';
@@ -649,7 +649,7 @@ else
         $suggestedref=$object->ref;
         print '<tr><td class="fieldrequired" width="30%">'.$langs->trans("Ref").'</td>';
         print '<td><input size="12" name="ref" value="'.$suggestedref.'">';
-        print ' '.$form->textwithpicto('', $langs->trans("YouCanCompleteRef", $suggestedref));
+        print ' '.Form::textwithpicto('', $langs->trans("YouCanCompleteRef", $suggestedref));
         print '</td></tr>';
 
         // Label
@@ -662,7 +662,7 @@ else
 	    if (! empty($conf->global->PROJECT_FILTER_FOR_THIRDPARTY_LIST)) $filteronlist=$conf->global->PROJECT_FILTER_FOR_THIRDPARTY_LIST;
         $text=$form->select_thirdparty_list($object->thirdparty->id, 'socid', $filteronlist, 1, 1);
         $texthelp=$langs->trans("IfNeedToUseOhterObjectKeepEmpty");
-        print $form->textwithtooltip($text.' '.img_help(), $texthelp, 1, 0, '', '', 2);
+        print Form::textwithtooltip($text.' '.img_help(), $texthelp, 1, 0, '', '', 2);
         print '</td></tr>';
 
         // Visibility
diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php
index 03e1cf3b340..af5e5a799c3 100644
--- a/htdocs/projet/list.php
+++ b/htdocs/projet/list.php
@@ -380,7 +380,7 @@ if ($resql)
     }
 
 	$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
-	$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
+	$selectedfields=Form::multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
     
     print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">';
     		
diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php
index e79cacd8c16..9e3e44f403f 100644
--- a/htdocs/projet/tasks/list.php
+++ b/htdocs/projet/tasks/list.php
@@ -380,7 +380,7 @@ if ($resql)
     }
     
     $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
-    $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
+    $selectedfields=Form::multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
     
     print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'" id="tablelines3">';
 
diff --git a/htdocs/public/members/public_card.php b/htdocs/public/members/public_card.php
index 908ad220f72..b79acd19ea1 100644
--- a/htdocs/public/members/public_card.php
+++ b/htdocs/public/members/public_card.php
@@ -104,7 +104,7 @@ if ($id > 0)
 		{
 			$form = new Form($db);
 			print '<tr><td>URL Photo</td><td class="valeur">';
-			print $form->showphoto('memberphoto', $object, 64);
+			print Form::showphoto('memberphoto', $object, 64);
 			print '</td></tr>'."\n";
 		}
 		//  foreach($objecto->attribute_label as $key=>$value){
diff --git a/htdocs/public/members/public_list.php b/htdocs/public/members/public_list.php
index 4171bbab2e1..58aab7a6234 100644
--- a/htdocs/public/members/public_list.php
+++ b/htdocs/public/members/public_list.php
@@ -153,7 +153,7 @@ if ($result)
 		if (isset($objp->photo) && $objp->photo != '')
 		{
 			print '<td>';
-			print $form->showphoto('memberphoto', $objp, 64);
+			print Form::showphoto('memberphoto', $objp, 64);
 			print '</td>'."\n";
 		}
 		else
diff --git a/htdocs/public/test/test_forms.php b/htdocs/public/test/test_forms.php
index 732afa2c331..2ea576f3492 100644
--- a/htdocs/public/test/test_forms.php
+++ b/htdocs/public/test/test_forms.php
@@ -66,7 +66,7 @@ print '<br><br>'."\n";
 
 print "Test 4d: a select with ajax refresh and with onchange call of url<br>\n";
 $selected=-1;
-print $form->selectArrayAjax('testselectc', DOL_URL_ROOT.'/core/ajax/selectsearchbox.php', $selected, 'style="min-width: 250px;"', '', 0, 1, '', 1);
+print Form::selectArrayAjax('testselectc', DOL_URL_ROOT.'/core/ajax/selectsearchbox.php', $selected, 'style="min-width: 250px;"', '', 0, 1, '', 1);
 
 print '<br><br>'."\n";
 
diff --git a/htdocs/societe/admin/societe.php b/htdocs/societe/admin/societe.php
index a74a2037b94..cb9704fa4e5 100644
--- a/htdocs/societe/admin/societe.php
+++ b/htdocs/societe/admin/societe.php
@@ -364,7 +364,7 @@ foreach ($dirsociete as $dirroot)
 
     			print '<td align="center">';
     			$s=$modCodeTiers->getToolTip($langs,null,-1);
-    			print $form->textwithpicto('',$s,1);
+    			print Form::textwithpicto('',$s,1);
     			print '</td>';
 
     			print '</tr>';
@@ -437,7 +437,7 @@ foreach ($dirsociete as $dirroot)
     			}
     			print '<td align="center">';
     			$s=$modCodeCompta->getToolTip($langs,null,-1);
-    			print $form->textwithpicto('',$s,1);
+    			print Form::textwithpicto('',$s,1);
     			print '</td>';
     			print "</tr>\n";
     		}
@@ -570,7 +570,7 @@ foreach ($dirsociete as $dirroot)
 					$htmltooltip.='<br>'.$langs->trans("WatermarkOnDraft").': '.yn((! empty($module->option_draft_watermark)?$module->option_draft_watermark:''), 1, 1);
 
 					print '<td align="center" class="nowrap">';
-					print $form->textwithpicto('',$htmltooltip,1,0);
+					print Form::textwithpicto('',$htmltooltip,1,0);
 					print '</td>';
 
 					// Preview
@@ -710,7 +710,7 @@ print '<td width="80">&nbsp;</td></tr>'."\n";
 // Utilisation formulaire Ajax sur choix societe
 $var=!$var;
 print "<tr ".$bc[$var].">";
-print '<td width="80%">'.$form->textwithpicto($langs->trans("DelaiedFullListToSelectCompany"),$langs->trans('UseSearchToSelectCompanyTooltip'),1).' </td>';
+print '<td width="80%">'.Form::textwithpicto($langs->trans("DelaiedFullListToSelectCompany"),$langs->trans('UseSearchToSelectCompanyTooltip'),1).' </td>';
 if (! $conf->use_javascript_ajax)
 {
 	print '<td class="nowrap" align="right" colspan="2">';
@@ -734,7 +734,7 @@ print '</tr>';
 
 $var=!$var;
 print "<tr ".$bc[$var].">";
-print '<td width="80%">'.$form->textwithpicto($langs->trans("DelaiedFullListToSelectContact"),$langs->trans('UseSearchToSelectContactTooltip'),1).'</td>';
+print '<td width="80%">'.Form::textwithpicto($langs->trans("DelaiedFullListToSelectContact"),$langs->trans('UseSearchToSelectContactTooltip'),1).'</td>';
 if (! $conf->use_javascript_ajax)
 {
 	print '<td class="nowrap" align="right" colspan="2">';
diff --git a/htdocs/societe/canvas/actions_card_common.class.php b/htdocs/societe/canvas/actions_card_common.class.php
index 782a7f070c4..30fe69d47b3 100644
--- a/htdocs/societe/canvas/actions_card_common.class.php
+++ b/htdocs/societe/canvas/actions_card_common.class.php
@@ -451,7 +451,7 @@ abstract class ActionsCardCommon
             if ((!$this->object->code_client || $this->object->code_client == -1) && $modCodeClient->code_auto) $this->tpl['customercode'] = $modCodeClient->getNextValue($this->object,0);
             $this->tpl['ismodifiable_customercode'] = $this->object->codeclient_modifiable();
             $s=$modCodeClient->getToolTip($langs,$this->object,0);
-            $this->tpl['help_customercode'] = $form->textwithpicto('',$s,1);
+            $this->tpl['help_customercode'] = Form::textwithpicto('',$s,1);
 
             if (! empty($conf->fournisseur->enabled))
             {
@@ -480,7 +480,7 @@ abstract class ActionsCardCommon
             	if ((!$this->object->code_fournisseur || $this->object->code_fournisseur == -1) && $modCodeFournisseur->code_auto) $this->tpl['suppliercode'] = $modCodeFournisseur->getNextValue($this->object,1);
             	$this->tpl['ismodifiable_suppliercode'] = $this->object->codefournisseur_modifiable();
             	$s=$modCodeFournisseur->getToolTip($langs,$this->object,1);
-            	$this->tpl['help_suppliercode'] = $form->textwithpicto('',$s,1);
+            	$this->tpl['help_suppliercode'] = Form::textwithpicto('',$s,1);
 
             	$this->object->LoadSupplierCateg();
             	$this->tpl['suppliercategory'] = $this->object->SupplierCategories;
@@ -556,7 +556,7 @@ abstract class ActionsCardCommon
             $this->tpl['address'] 			= dol_nl2br($this->object->address);
 
             $img=picto_from_langcode($this->object->country_code);
-            if ($this->object->isInEEC()) $this->tpl['country'] = $form->textwithpicto(($img?$img.' ':'').$this->object->country,$langs->trans("CountryIsInEEC"),1,0);
+            if ($this->object->isInEEC()) $this->tpl['country'] = Form::textwithpicto(($img?$img.' ':'').$this->object->country,$langs->trans("CountryIsInEEC"),1,0);
             $this->tpl['country'] = ($img?$img.' ':'').$this->object->country;
 
             $this->tpl['phone'] 	= dol_print_phone($this->object->phone,$this->object->country_code,0,$this->object->id,'AC_TEL');
diff --git a/htdocs/societe/canvas/company/actions_card_company.class.php b/htdocs/societe/canvas/company/actions_card_company.class.php
index e5a88340f62..1f58f3cdc99 100644
--- a/htdocs/societe/canvas/company/actions_card_company.class.php
+++ b/htdocs/societe/canvas/company/actions_card_company.class.php
@@ -146,7 +146,7 @@ class ActionsCardCompany extends ActionsCardCommon
 				if ($conf->use_javascript_ajax)
 				{
 					$s.='<a href="#" onclick="javascript: CheckVAT(document.formsoc.tva_intra.value);">'.$langs->trans("VATIntraCheck").'</a>';
-					$this->tpl['tva_intra'] =  $form->textwithpicto($s,$langs->trans("VATIntraCheckDesc",$langs->trans("VATIntraCheck")),1);
+					$this->tpl['tva_intra'] =  Form::textwithpicto($s,$langs->trans("VATIntraCheckDesc",$langs->trans("VATIntraCheck")),1);
 				}
 				else
 				{
@@ -185,7 +185,7 @@ class ActionsCardCompany extends ActionsCardCommon
 					if ($conf->use_javascript_ajax)
 					{
 						$s.='<a href="#" onclick="javascript: CheckVAT(document.formsoc.tva_intra.value);">'.$langs->trans("VATIntraCheck").'</a>';
-						$this->tpl['tva_intra'] = $form->textwithpicto($s,$langs->trans("VATIntraCheckDesc",$langs->trans("VATIntraCheck")),1);
+						$this->tpl['tva_intra'] = Form::textwithpicto($s,$langs->trans("VATIntraCheckDesc",$langs->trans("VATIntraCheck")),1);
 					}
 					else
 					{
diff --git a/htdocs/societe/consumption.php b/htdocs/societe/consumption.php
index e99f10bf5a5..9f7a53644ea 100644
--- a/htdocs/societe/consumption.php
+++ b/htdocs/societe/consumption.php
@@ -489,7 +489,7 @@ if ($sql_select)
 		{
 			if ($objp->fk_product > 0) {
 
-				echo $form->textwithtooltip($text,$description,3,'','',$i,0,'');
+				echo Form::textwithtooltip($text,$description,3,'','',$i,0,'');
 
 				// Show range
 				echo get_date_range($objp->date_start, $objp->date_end);
@@ -509,7 +509,7 @@ if ($sql_select)
 
 					if (! empty($objp->label)) {
 						$text.= ' <strong>'.$objp->label.'</strong>';
-						echo $form->textwithtooltip($text,dol_htmlentitiesbr($objp->description),3,'','',$i,0,'');
+						echo Form::textwithtooltip($text,dol_htmlentitiesbr($objp->description),3,'','',$i,0,'');
 					} else {
 						echo $text.' '.dol_htmlentitiesbr($objp->description);
 					}
diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php
index 52bce8ae36c..61dd88c1aa0 100644
--- a/htdocs/societe/list.php
+++ b/htdocs/societe/list.php
@@ -550,7 +550,7 @@ if ($resql)
 	}
 
     $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
-    $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
+    $selectedfields=Form::multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
 	
 	print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">';
 
@@ -566,12 +566,12 @@ if ($resql)
 	if (! empty($arrayfields['state.nom']['checked'])) print_liste_field_titre($langs->trans("StateShort"),$_SERVER["PHP_SELF"],"state.nom","",$param,'',$sortfield,$sortorder);
 	if (! empty($arrayfields['country.code_iso']['checked'])) print_liste_field_titre($langs->trans("Country"),$_SERVER["PHP_SELF"],"country.code_iso","",$param,'align="center"',$sortfield,$sortorder);
 	if (! empty($arrayfields['typent.code']['checked']))      print_liste_field_titre($langs->trans("ThirdPartyType"),$_SERVER["PHP_SELF"],"typent.code","",$param,'align="center"',$sortfield,$sortorder);
-	if (! empty($arrayfields['s.siren']['checked']))          print_liste_field_titre($form->textwithpicto($langs->trans("ProfId1Short"),$textprofid[1],1,0),$_SERVER["PHP_SELF"],"s.siren","",$param,'class="nowrap"',$sortfield,$sortorder);
-	if (! empty($arrayfields['s.siret']['checked']))          print_liste_field_titre($form->textwithpicto($langs->trans("ProfId2Short"),$textprofid[2],1,0),$_SERVER["PHP_SELF"],"s.siret","",$param,'class="nowrap"',$sortfield,$sortorder);
-	if (! empty($arrayfields['s.ape']['checked']))            print_liste_field_titre($form->textwithpicto($langs->trans("ProfId3Short"),$textprofid[3],1,0),$_SERVER["PHP_SELF"],"s.ape","",$param,'class="nowrap"',$sortfield,$sortorder);
-	if (! empty($arrayfields['s.idprof4']['checked']))        print_liste_field_titre($form->textwithpicto($langs->trans("ProfId4Short"),$textprofid[4],1,0),$_SERVER["PHP_SELF"],"s.idprof4","",$param,'class="nowrap"',$sortfield,$sortorder);
-	if (! empty($arrayfields['s.idprof5']['checked']))        print_liste_field_titre($form->textwithpicto($langs->trans("ProfId5Short"),$textprofid[4],1,0),$_SERVER["PHP_SELF"],"s.idprof5","",$param,'class="nowrap"',$sortfield,$sortorder);
-	if (! empty($arrayfields['s.idprof6']['checked']))        print_liste_field_titre($form->textwithpicto($langs->trans("ProfId6Short"),$textprofid[4],1,0),$_SERVER["PHP_SELF"],"s.idprof6","",$param,'class="nowrap"',$sortfield,$sortorder);
+	if (! empty($arrayfields['s.siren']['checked']))          print_liste_field_titre(Form::textwithpicto($langs->trans("ProfId1Short"),$textprofid[1],1,0),$_SERVER["PHP_SELF"],"s.siren","",$param,'class="nowrap"',$sortfield,$sortorder);
+	if (! empty($arrayfields['s.siret']['checked']))          print_liste_field_titre(Form::textwithpicto($langs->trans("ProfId2Short"),$textprofid[2],1,0),$_SERVER["PHP_SELF"],"s.siret","",$param,'class="nowrap"',$sortfield,$sortorder);
+	if (! empty($arrayfields['s.ape']['checked']))            print_liste_field_titre(Form::textwithpicto($langs->trans("ProfId3Short"),$textprofid[3],1,0),$_SERVER["PHP_SELF"],"s.ape","",$param,'class="nowrap"',$sortfield,$sortorder);
+	if (! empty($arrayfields['s.idprof4']['checked']))        print_liste_field_titre(Form::textwithpicto($langs->trans("ProfId4Short"),$textprofid[4],1,0),$_SERVER["PHP_SELF"],"s.idprof4","",$param,'class="nowrap"',$sortfield,$sortorder);
+	if (! empty($arrayfields['s.idprof5']['checked']))        print_liste_field_titre(Form::textwithpicto($langs->trans("ProfId5Short"),$textprofid[4],1,0),$_SERVER["PHP_SELF"],"s.idprof5","",$param,'class="nowrap"',$sortfield,$sortorder);
+	if (! empty($arrayfields['s.idprof6']['checked']))        print_liste_field_titre(Form::textwithpicto($langs->trans("ProfId6Short"),$textprofid[4],1,0),$_SERVER["PHP_SELF"],"s.idprof6","",$param,'class="nowrap"',$sortfield,$sortorder);
 	print_liste_field_titre('');   // type of customer
 	if (! empty($arrayfields['s.fk_prospectlevel']['checked'])) print_liste_field_titre($arrayfields['s.fk_prospectlevel']['label'],$_SERVER["PHP_SELF"],"s.fk_prospectlevel","",$param,'align="center"',$sortfield,$sortorder);
 	if (! empty($arrayfields['s.fk_stcomm']['checked']))      print_liste_field_titre($arrayfields['s.fk_stcomm']['label'],$_SERVER["PHP_SELF"],"s.fk_stcomm","",$param,'align="center"',$sortfield,$sortorder);
diff --git a/htdocs/societe/price.php b/htdocs/societe/price.php
index f9b924c9240..efa75b3c535 100644
--- a/htdocs/societe/price.php
+++ b/htdocs/societe/price.php
@@ -257,7 +257,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) {
 		// Price
 		print '<tr><td width="20%">';
 		$text = $langs->trans('SellingPrice');
-		print $form->textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
+		print Form::textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
 		print '</td><td>';
 		if ($object->price_base_type == 'TTC') {
 			print '<input name="price" size="10" value="' . price($object->price_ttc) . '">';
@@ -269,7 +269,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) {
 		// Price minimum
 		print '<tr><td>';
 		$text = $langs->trans('MinPrice');
-		print $form->textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
+		print Form::textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
 		if ($object->price_base_type == 'TTC') {
 			print '<td><input name="price_min" size="10" value="' . price($object->price_min_ttc) . '">';
 		} else {
@@ -336,7 +336,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) {
 		// Price
 		print '<tr><td width="20%">';
 		$text = $langs->trans('SellingPrice');
-		print $form->textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
+		print Form::textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
 		print '</td><td>';
 		if ($prodcustprice->price_base_type == 'TTC') {
 			print '<input name="price" size="10" value="' . price($prodcustprice->price_ttc) . '">';
@@ -348,7 +348,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) {
 		// Price minimum
 		print '<tr><td>';
 		$text = $langs->trans('MinPrice');
-		print $form->textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
+		print Form::textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1);
 		print '</td><td>';
 		if ($prodcustprice->price_base_type == 'TTC') {
 			print '<input name="price_min" size="10" value="' . price($prodcustprice->price_min_ttc) . '">';
diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php
index 22d3c6294e1..dc20ecba074 100644
--- a/htdocs/societe/soc.php
+++ b/htdocs/societe/soc.php
@@ -935,7 +935,7 @@ else
 	        $text.='&nbsp;';
 	        $text.= $langs->trans("Individual");
 	        $htmltext=$langs->trans("ToCreateContactWithSameName");
-	        print $form->textwithpicto($text, $htmltext, 1, 'help', '', 0, 3);
+	        print Form::textwithpicto($text, $htmltext, 1, 'help', '', 0, 3);
             print '</label>';
             print '</div>';
             print "<br>\n";
@@ -1009,7 +1009,7 @@ else
         print '<input type="text" name="code_client" id="customer_code" size="16" value="'.dol_escape_htmltag($tmpcode).'" maxlength="15">';
         print '</td><td>';
         $s=$modCodeClient->getToolTip($langs,$object,0);
-        print $form->textwithpicto('',$s,1);
+        print Form::textwithpicto('',$s,1);
         print '</td></tr></table>';
         print '</td></tr>';
 
@@ -1027,7 +1027,7 @@ else
             print '<input type="text" name="code_fournisseur" id="supplier_code" size="16" value="'.dol_escape_htmltag($tmpcode).'" maxlength="15">';
             print '</td><td>';
             $s=$modCodeFournisseur->getToolTip($langs,$object,1);
-            print $form->textwithpicto('',$s,1);
+            print Form::textwithpicto('',$s,1);
             print '</td></tr></table>';
             print '</td></tr>';
         }
@@ -1141,7 +1141,7 @@ else
                 print '</script>';
                 print "\n";
                 $s.='<a href="#" class="hideonsmartphone" onclick="javascript: CheckVAT(document.formsoc.tva_intra.value);">'.$langs->trans("VATIntraCheck").'</a>';
-                $s = $form->textwithpicto($s,$langs->trans("VATIntraCheckDesc",$langs->trans("VATIntraCheck")),1);
+                $s = Form::textwithpicto($s,$langs->trans("VATIntraCheckDesc",$langs->trans("VATIntraCheck")),1);
             }
             else
             {
@@ -1550,7 +1550,7 @@ else
             }
             print '</td><td>';
             $s=$modCodeClient->getToolTip($langs,$object,0);
-            print $form->textwithpicto('',$s,1);
+            print Form::textwithpicto('',$s,1);
             print '</td></tr></table>';
 
             print '</td></tr>';
@@ -1583,7 +1583,7 @@ else
                 }
                 print '</td><td>';
                 $s=$modCodeFournisseur->getToolTip($langs,$object,1);
-                print $form->textwithpicto('',$s,1);
+                print Form::textwithpicto('',$s,1);
                 print '</td></tr></table>';
 
                 print '</td></tr>';
@@ -1698,7 +1698,7 @@ else
                     print '</script>';
                     print "\n";
                     $s.='<a href="#" class="hideonsmartphone" onclick="javascript: CheckVAT(document.formsoc.tva_intra.value);">'.$langs->trans("VATIntraCheck").'</a>';
-                    $s = $form->textwithpicto($s,$langs->trans("VATIntraCheckDesc",$langs->trans("VATIntraCheck")),1);
+                    $s = Form::textwithpicto($s,$langs->trans("VATIntraCheckDesc",$langs->trans("VATIntraCheck")),1);
                 }
                 else
                 {
@@ -1860,7 +1860,7 @@ else
             print '<tr class="hideonsmartphone">';
             print '<td>'.fieldLabel('Logo','photoinput').'</td>';
             print '<td colspan="3">';
-            if ($object->logo) print $form->showphoto('societe',$object);
+            if ($object->logo) print Form::showphoto('societe',$object);
             $caneditfield=1;
             if ($caneditfield)
             {
@@ -2044,7 +2044,7 @@ else
                     print '</script>';
                     print "\n";
                     $s.='<a href="#" class="hideonsmartphone" onclick="javascript: CheckVAT( $(\'#tva_intra\').val() );">'.$langs->trans("VATIntraCheck").'</a>';
-                    $s = $form->textwithpicto($s,$langs->trans("VATIntraCheckDesc",$langs->trans("VATIntraCheck")),1);
+                    $s = Form::textwithpicto($s,$langs->trans("VATIntraCheckDesc",$langs->trans("VATIntraCheck")),1);
                 }
                 else
                 {
@@ -2227,7 +2227,7 @@ else
             print '<td colspan="3">';
 			if ($action != 'editincoterm')
 			{
-				print $form->textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1);
+				print Form::textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1);
 			}
 			else
 			{
diff --git a/htdocs/user/agenda_extsites.php b/htdocs/user/agenda_extsites.php
index 95ff6365dac..5d60a701779 100644
--- a/htdocs/user/agenda_extsites.php
+++ b/htdocs/user/agenda_extsites.php
@@ -174,7 +174,7 @@ print "<tr class=\"liste_titre\">";
 print "<td>".$langs->trans("Parameter")."</td>";
 print "<td>".$langs->trans("Name")."</td>";
 print "<td>".$langs->trans("ExtSiteUrlAgenda")." (".$langs->trans("Example").': http://yoursite/agenda/agenda.ics)</td>';
-print "<td>".$form->textwithpicto($langs->trans("FixTZ"), $langs->trans("FillFixTZOnlyIfRequired"), 1).'</td>';
+print "<td>".Form::textwithpicto($langs->trans("FixTZ"), $langs->trans("FillFixTZOnlyIfRequired"), 1).'</td>';
 print '<td align="right">'.$langs->trans("Color").'</td>';
 print "</tr>";
 
diff --git a/htdocs/user/card.php b/htdocs/user/card.php
index a027395a712..0b2ed1b5fa6 100644
--- a/htdocs/user/card.php
+++ b/htdocs/user/card.php
@@ -889,7 +889,7 @@ if (($action == 'create') || ($action == 'adduserldap'))
     // Type
     print '<tr><td>'.$langs->trans("Type").'</td>';
     print '<td>';
-    print $form->textwithpicto($langs->trans("Internal"),$langs->trans("InternalExternalDesc"), 1, 'help', '', 0, 2);
+    print Form::textwithpicto($langs->trans("Internal"),$langs->trans("InternalExternalDesc"), 1, 'help', '', 0, 2);
     print '</td></tr>';
 
     // Address
@@ -1032,7 +1032,7 @@ if (($action == 'create') || ($action == 'adduserldap'))
 	    // THM
 	    print '<tr><td>';
 		$text=$langs->trans("THM");
-		print $form->textwithpicto($text, $langs->trans("THMDescription"), 1, 'help', 'classthm');
+		print Form::textwithpicto($text, $langs->trans("THMDescription"), 1, 'help', 'classthm');
 	    print '</td>';
 	    print '<td>';
 	    print '<input size="8" type="text" name="thm" value="'.GETPOST('thm').'">';
@@ -1042,7 +1042,7 @@ if (($action == 'create') || ($action == 'adduserldap'))
 	    // TJM
 	    print '<tr><td>';
 		$text=$langs->trans("TJM");
-		print $form->textwithpicto($text, $langs->trans("TJMDescription"), 1, 'help', 'classtjm');
+		print Form::textwithpicto($text, $langs->trans("TJMDescription"), 1, 'help', 'classtjm');
 	    print '</td>';
 	    print '<td>';
 	    print '<input size="8" type="text" name="tjm" value="'.GETPOST('tjm').'">';
@@ -1324,11 +1324,11 @@ else
             print '<tr><td>'.$langs->trans("Administrator").'</td><td>';
             if (! empty($conf->multicompany->enabled) && $object->admin && ! $object->entity)
             {
-                print $form->textwithpicto(yn($object->admin),$langs->trans("SuperAdministratorDesc"),1,"superadmin");
+                print Form::textwithpicto(yn($object->admin),$langs->trans("SuperAdministratorDesc"),1,"superadmin");
             }
             else if ($object->admin)
             {
-                print $form->textwithpicto(yn($object->admin),$langs->trans("AdministratorDesc"),1,"admin");
+                print Form::textwithpicto(yn($object->admin),$langs->trans("AdministratorDesc"),1,"admin");
             }
             else
             {
@@ -1339,7 +1339,7 @@ else
             // Type
             print '<tr><td>';
             $text=$langs->trans("Type");
-            print $form->textwithpicto($text, $langs->trans("InternalExternalDesc"));
+            print Form::textwithpicto($text, $langs->trans("InternalExternalDesc"));
             print '</td><td>';
             $type=$langs->trans("Internal");
             if ($object->societe_id > 0) $type=$langs->trans("External");
@@ -1379,7 +1379,7 @@ else
 	            // THM
 			    print '<tr><td>';
 			    $text=$langs->trans("THM");
-			    print $form->textwithpicto($text, $langs->trans("THMDescription"), 1, 'help', 'classthm');
+			    print Form::textwithpicto($text, $langs->trans("THMDescription"), 1, 'help', 'classthm');
 			    print '</td>';
 			    print '<td>';
 			    print ($object->thm!=''?price($object->thm,'',$langs,1,-1,-1,$conf->currency):'');
@@ -1389,7 +1389,7 @@ else
 	            // TJM
 			    print '<tr><td>';
 			    $text=$langs->trans("TJM");
-			    print $form->textwithpicto($text, $langs->trans("TJMDescription"), 1, 'help', 'classtjm');
+			    print Form::textwithpicto($text, $langs->trans("TJMDescription"), 1, 'help', 'classtjm');
 			    print '</td>';
 			    print '<td>';
 			    print ($object->tjm!=''?price($object->tjm,'',$langs,1,-1,-1,$conf->currency):'');
@@ -1806,7 +1806,7 @@ else
 
             // Photo
             print '<td align="center" valign="middle" width="25%" rowspan="'.$rowspan.'">';
-            print $form->showphoto('userphoto',$object,100,0,$caneditfield,'photowithmargin','small');
+            print Form::showphoto('userphoto',$object,100,0,$caneditfield,'photowithmargin','small');
             print '</td>';
 
             print '</tr>';
@@ -1879,7 +1879,7 @@ else
                 $text='<input size="12" maxlength="32" type="password" class="flat" name="password" value="'.$object->pass.'" autocomplete="off">';
                 if ($dolibarr_main_authentication && $dolibarr_main_authentication == 'http')
                 {
-                    $text=$form->textwithpicto($text,$langs->trans("DolibarrInHttpAuthenticationSoPasswordUseless",$dolibarr_main_authentication),1,'warning');
+                    $text=Form::textwithpicto($text,$langs->trans("DolibarrInHttpAuthenticationSoPasswordUseless",$dolibarr_main_authentication),1,'warning');
                 }
             }
             else
@@ -1976,7 +1976,7 @@ else
                     $yn = yn($object->admin);
                     print '<input type="hidden" name="admin" value="'.$object->admin.'">';
                     print '<input type="hidden" name="superadmin" value="'.(empty($object->entity) ? 1 : 0).'">';
-                    if (! empty($conf->multicompany->enabled) && empty($object->entity)) print $form->textwithpicto($yn,$langs->trans("DontDowngradeSuperAdmin"),1,'warning');
+                    if (! empty($conf->multicompany->enabled) && empty($object->entity)) print Form::textwithpicto($yn,$langs->trans("DontDowngradeSuperAdmin"),1,'warning');
                     else print $yn;
                 }
                 print '</td></tr>';
@@ -1989,7 +1989,7 @@ else
            	{
 	           	$type=$langs->trans("Internal");
     	       	if ($object->societe_id) $type=$langs->trans("External");
-        	   	print $form->textwithpicto($type,$langs->trans("InternalExternalDesc"));
+        	   	print Form::textwithpicto($type,$langs->trans("InternalExternalDesc"));
 	           	if ($object->ldap_sid) print ' ('.$langs->trans("DomainUser").')';
            	}
            	else
@@ -2160,7 +2160,7 @@ else
             	// THM
 			    print '<tr><td>';
 			    $text=$langs->trans("THM");
-			    print $form->textwithpicto($text, $langs->trans("THMDescription"), 1, 'help', 'classthm');
+			    print Form::textwithpicto($text, $langs->trans("THMDescription"), 1, 'help', 'classthm');
 			    print '</td>';
 			    print '<td>';
 			    print '<input size="8" type="text" name="thm" value="'.price2num(GETPOST('thm')?GETPOST('thm'):$object->thm).'">';
@@ -2170,7 +2170,7 @@ else
 			    // TJM
 			    print '<tr><td>';
 			    $text=$langs->trans("TJM");
-			    print $form->textwithpicto($text, $langs->trans("TJMDescription"), 1, 'help', 'classthm');
+			    print Form::textwithpicto($text, $langs->trans("TJMDescription"), 1, 'help', 'classthm');
 			    print '</td>';
 			    print '<td>';
 			    print '<input size="8" type="text" name="tjm" value="'.price2num(GETPOST('tjm')?GETPOST('tjm'):$object->tjm).'">';
diff --git a/htdocs/user/clicktodial.php b/htdocs/user/clicktodial.php
index cb1e9f875aa..342b21490ec 100644
--- a/htdocs/user/clicktodial.php
+++ b/htdocs/user/clicktodial.php
@@ -121,7 +121,7 @@ if ($id > 0)
             }
             else
            {
-            	print ' &nbsp; &nbsp; '.$form->textwithpicto($langs->trans("KeepEmptyToUseDefault").': '.$conf->global->CLICKTODIAL_URL,$langs->trans("ClickToDialUrlDesc"));
+            	print ' &nbsp; &nbsp; '.Form::textwithpicto($langs->trans("KeepEmptyToUseDefault").': '.$conf->global->CLICKTODIAL_URL,$langs->trans("ClickToDialUrlDesc"));
            }
             print '</td>';
         	print '</tr>';
@@ -162,7 +162,7 @@ if ($id > 0)
         	}
         	else
         	{
-        		print $form->textwithpicto((empty($object->clicktodial_url)?$langs->trans("DefaultLink").': ':'').$url,$langs->trans("ClickToDialUrlDesc"));
+        		print Form::textwithpicto((empty($object->clicktodial_url)?$langs->trans("DefaultLink").': ':'').$url,$langs->trans("ClickToDialUrlDesc"));
         	}
         	print '</td>';
         	print '</tr>';
diff --git a/htdocs/user/group/index.php b/htdocs/user/group/index.php
index af46fd39d21..580700b69ec 100644
--- a/htdocs/user/group/index.php
+++ b/htdocs/user/group/index.php
@@ -101,7 +101,7 @@ if ($resql)
     $moreforfilter='';
     
 	//$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
-	//$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
+	//$selectedfields=Form::multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
     
     print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">';
     print '<tr class="liste_titre">';
diff --git a/htdocs/user/index.php b/htdocs/user/index.php
index 87236d0e4f8..489799437bb 100644
--- a/htdocs/user/index.php
+++ b/htdocs/user/index.php
@@ -270,7 +270,7 @@ if ($result)
     $moreforfilter='';
     
 	$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
-	$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
+	$selectedfields=Form::multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
     
     print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">';
     print '<tr class="liste_titre">';
diff --git a/htdocs/user/perms.php b/htdocs/user/perms.php
index fa54a128cac..2f1b0e2e437 100644
--- a/htdocs/user/perms.php
+++ b/htdocs/user/perms.php
@@ -374,7 +374,7 @@ if ($result)
 	        	if ($caneditperms)
 	        	{
 	        		print '<td align="center">';
-	        		print $form->textwithtooltip($langs->trans("Inherited"),$langs->trans("PermissionInheritedFromAGroup"));
+	        		print Form::textwithtooltip($langs->trans("Inherited"),$langs->trans("PermissionInheritedFromAGroup"));
 	        		print '</td>';
 	        	}
 	        	print '<td align="center" class="nowrap">';
-- 
GitLab