diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php
index ee4ff76a0081107a7982ef5239eab6ef1d54fad6..5224fa2d72e97aa48202003c710ad6f3fdac9680 100644
--- a/htdocs/categories/class/categorie.class.php
+++ b/htdocs/categories/class/categorie.class.php
@@ -28,6 +28,7 @@
 
 require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
 require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php';
+require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
 
 
 /**
@@ -333,6 +334,17 @@ class Categorie
 				$error++;
 			}
 		}
+		if (! $error)
+		{
+			$sql  = "DELETE FROM ".MAIN_DB_PREFIX."categorie_contact";
+			$sql .= " WHERE fk_categorie = ".$this->id;
+			if (!$this->db->query($sql))
+			{
+				$this->error=$this->db->lasterror();
+				dol_syslog("Error sql=".$sql." ".$this->error, LOG_ERR);
+				$error++;
+			}
+		}
 
 		// Delete category
 		if (! $error)
diff --git a/htdocs/categories/index.php b/htdocs/categories/index.php
index bd293f9febb0a12054910ca02387fb8a707e3951..0e512cdfcf70a302f5d568bb74f817ae69d02e21 100644
--- a/htdocs/categories/index.php
+++ b/htdocs/categories/index.php
@@ -50,6 +50,7 @@ if ($type == 0) $title=$langs->trans("ProductsCategoriesArea");
 elseif ($type == 1) $title=$langs->trans("SuppliersCategoriesArea");
 elseif ($type == 2) $title=$langs->trans("CustomersCategoriesArea");
 elseif ($type == 3) $title=$langs->trans("MembersCategoriesArea");
+elseif ($type == 4) $title=$langs->trans("ContactsCategoriesArea");
 else $title=$langs->trans("CategoriesArea");
 
 $arrayofjs=array('/includes/jquery/plugins/jquerytreeview/jquery.treeview.js', '/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js');
diff --git a/htdocs/categories/photos.php b/htdocs/categories/photos.php
index 8a98ff44c01a519991694cb5b930f735aaad39d0..06345dfb4cb1c80db4efbac3a96e49da6ac7b6ef 100644
--- a/htdocs/categories/photos.php
+++ b/htdocs/categories/photos.php
@@ -94,6 +94,7 @@ if ($object->id)
 	elseif ($type == 1) $title=$langs->trans("SuppliersCategoryShort");
 	elseif ($type == 2) $title=$langs->trans("CustomersCategoryShort");
 	elseif ($type == 3) $title=$langs->trans("MembersCategoryShort");
+	elseif ($type == 4) $title=$langs->trans("ContactCategoriesShort");
 
 	$head = categories_prepare_head($object,$type);
 	dol_fiche_head($head, 'photos', $title, 0, 'category');
diff --git a/htdocs/categories/viewcat.php b/htdocs/categories/viewcat.php
index 3cdb5d516f122c56ba9589fe610fd77bc1faf9c5..da18c5eba76f01a692a4029e443198523113c122 100644
--- a/htdocs/categories/viewcat.php
+++ b/htdocs/categories/viewcat.php
@@ -72,25 +72,32 @@ if ($id > 0 && $removeelem > 0)
 		$result = $tmpobject->fetch($removeelem);
 		$elementtype = 'product';
 	}
-	if ($type==1 && $user->rights->societe->creer)
+	else if ($type==1 && $user->rights->societe->creer)
 	{
 		$tmpobject = new Societe($db);
 		$result = $tmpobject->fetch($removeelem);
 		$elementtype = 'fournisseur';
 	}
-	if ($type==2 && $user->rights->societe->creer)
+	else if ($type==2 && $user->rights->societe->creer)
 	{
 		$tmpobject = new Societe($db);
 		$result = $tmpobject->fetch($removeelem);
 		$elementtype = 'societe';
 	}
-	if ($type == 3 && $user->rights->adherent->creer)
+	else if ($type == 3 && $user->rights->adherent->creer)
 	{
 		require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
 		$tmpobject = new Adherent($db);
 		$result = $tmpobject->fetch($removeelem);
 		$elementtype = 'member';
 	}
+	else if ($type == 4 && $user->rights->societe->creer) {
+		
+		require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
+		$tmpobject = new Contact($db);
+		$result = $tmpobject->fetch($removeelem);
+		$elementtype = 'contact';
+	}
 	
 	$result=$object->del_type($tmpobject,$elementtype);
 	if ($result < 0) dol_print_error('',$object->error);
@@ -125,6 +132,7 @@ if ($type == 0) $title=$langs->trans("ProductsCategoryShort");
 elseif ($type == 1) $title=$langs->trans("SuppliersCategoryShort");
 elseif ($type == 2) $title=$langs->trans("CustomersCategoryShort");
 elseif ($type == 3) $title=$langs->trans("MembersCategoryShort");
+elseif ($type == 4) $title=$langs->trans("ContactCategoriesShort");
 else $title=$langs->trans("Category");
 
 $head = categories_prepare_head($object,$type);
@@ -444,6 +452,59 @@ if ($object->type == 3)
 	}
 }
 
+//Categorie contact
+if($object->type == 4)
+{
+	$contacts = $object->get_type("socpeople","Contact",'contact',"socpeople");
+	if ($contacts < 0)
+	{
+		dol_print_error();
+	}
+	else
+	{
+		print "<br>";
+		print '<table class="noborder" width="100%">'."\n";
+		print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("Contact")."</td></tr>\n";
+
+		if (count($contacts) > 0)
+		{
+			$i = 0;
+			$var=true;
+			foreach ($contacts as $key => $contact)
+			{
+				$i++;
+				$var=!$var;
+				print "\t<tr ".$bc[$var].">\n";
+				print '<td class="nowrap" valign="top">';
+				print $contact->getNomUrl(1,'category');
+				print "</td>\n";
+				// Link to delete from category
+				print '<td align="right">';
+				$typeid=$object->type;
+				$permission=0;
+				if ($typeid == 0) $permission=($user->rights->produit->creer || $user->rights->service->creer);
+				if ($typeid == 1) $permission=$user->rights->societe->creer;
+				if ($typeid == 2) $permission=$user->rights->societe->creer;
+				if ($typeid == 3) $permission=$user->rights->adherent->creer;
+				if ($typeid == 4) $permission=$user->rights->societe->creer;
+				if ($permission)
+				{
+					print "<a href= '".$_SERVER['PHP_SELF']."?".(empty($socid)?'id':'socid')."=".$object->id."&amp;type=".$typeid."&amp;removeelem=".$contact->id."'>";
+					print img_delete($langs->trans("DeleteFromCat")).' ';
+					print $langs->trans("DeleteFromCat")."</a>";
+				}
+				print '</td>';
+				print "</tr>\n";
+			}
+		}
+		else
+		{
+			print "<tr ".$bc[false]."><td>".$langs->trans("ThisCategoryHasNoContact")."</td></tr>";
+		}
+		print "</table>\n";
+	}
+}
+
 
 llxFooter();
 $db->close();
diff --git a/htdocs/compta/facture/impayees.php b/htdocs/compta/facture/impayees.php
index b334053c5b451e92026a826b81e53ad795f3113f..5603bd6417d72a88dcc9811642adf741d32677c9 100644
--- a/htdocs/compta/facture/impayees.php
+++ b/htdocs/compta/facture/impayees.php
@@ -416,6 +416,7 @@ if ($resql)
 		print '<td align="right"><b>'.price($total_paid).'</b></td>';
 		print '<td align="right"><b>'.price($total_ttc - $total_paid).'</b></td>';
 		print '<td align="center">&nbsp;</td>';
+		print '<td align="center">&nbsp;</td>';
 		print "</tr>\n";
 	}
 
diff --git a/htdocs/core/tpl/contacts.tpl.php b/htdocs/core/tpl/contacts.tpl.php
index dc97d84e9b647ebf966e450fd2896f7edcfb559a..33b98d56f48a7f98e727cc3987770f80b3be554e 100644
--- a/htdocs/core/tpl/contacts.tpl.php
+++ b/htdocs/core/tpl/contacts.tpl.php
@@ -14,6 +14,9 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * This template needs:
+ * $object
  */
 
 if (! class_exists('Contact')) {
@@ -30,6 +33,7 @@ if ($module == 'propal')				{ $permission=$user->rights->propale->creer; }
 elseif ($module == 'fichinter')			{ $permission=$user->rights->ficheinter->creer; }
 elseif ($module == 'invoice_supplier')	{ $permission=$user->rights->fournisseur->facture->creer; }
 elseif ($module == 'order_supplier')	{ $permission=$user->rights->fournisseur->commande->creer; }
+elseif ($module == 'project')			{ $permission=$user->rights->projet->creer; }
 elseif (! isset($permission))			{ $permission=$user->rights->$module->creer; } // If already defined by caller page
 
 $formcompany= new FormCompany($db);
diff --git a/htdocs/langs/en_US/categories.lang b/htdocs/langs/en_US/categories.lang
index bddaf125aec287990f06523d3bd94db0740aae63..e883ab24ed0d716274c4c3b9f2c9a2060adb72b7 100644
--- a/htdocs/langs/en_US/categories.lang
+++ b/htdocs/langs/en_US/categories.lang
@@ -17,6 +17,7 @@ SuppliersCategoriesArea=Suppliers categories area
 CustomersCategoriesArea=Customers categories area
 ThirdPartyCategoriesArea=Third parties categories area
 MembersCategoriesArea=Members categories area
+ContactsCategoriesArea=Contacts categories area
 MainCats=Main categories
 SubCats=Subcategories
 CatStatistics=Statistics
@@ -86,6 +87,7 @@ ThisCategoryHasNoProduct=This category does not contain any product.
 ThisCategoryHasNoSupplier=This category does not contain any supplier.
 ThisCategoryHasNoCustomer=This category does not contain any customer.
 ThisCategoryHasNoMember=This category does not contain any member.
+ThisCategoryHasNoContact=This category does not contain any contact.
 AssignedToCustomer=Assigned to a customer
 AssignedToTheCustomer=Assigned to the customer
 InternalCategory=Internal category
diff --git a/htdocs/langs/fr_FR/categories.lang b/htdocs/langs/fr_FR/categories.lang
index c14906dd2fb9f2dcd9fa65b7a9a4647e24b8373f..bf0c646c034e78aa9bc778a2c24e81d0b9252341 100644
--- a/htdocs/langs/fr_FR/categories.lang
+++ b/htdocs/langs/fr_FR/categories.lang
@@ -17,6 +17,7 @@ SuppliersCategoriesArea=Espace des catégories de tiers fournisseurs
 CustomersCategoriesArea=Espace des catégories de tiers clients ou prospects
 ThirdPartyCategoriesArea=Espace des catégories de tiers
 MembersCategoriesArea=Espace des catégories d'adhérents
+ContactsCategoriesArea=Espace des catégories des contacts
 MainCats=Catégories principales
 SubCats=Sous-catégories
 CatStatistics=Statistiques
@@ -86,6 +87,7 @@ ThisCategoryHasNoProduct=Cette catégorie ne contient aucun produit.
 ThisCategoryHasNoSupplier=Cette catégorie ne contient aucun fournisseur.
 ThisCategoryHasNoCustomer=Cette catégorie ne contient aucun client.
 ThisCategoryHasNoMember=Cette catégorie ne contient aucun adhérent.
+ThisCategoryHasNoContact=Cette catégorie ne contient aucun contact.
 AssignedToCustomer=Attribuer à un client
 AssignedToTheCustomer=Attribué au client
 InternalCategory=Catégorie interne
diff --git a/htdocs/projet/contact.php b/htdocs/projet/contact.php
index 2f253112cdff81ab3a31c495597cd62b79b045c2..0674bcaf24b45687c7d4634185174d5138db0a83 100644
--- a/htdocs/projet/contact.php
+++ b/htdocs/projet/contact.php
@@ -31,17 +31,20 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
 $langs->load("projects");
 $langs->load("companies");
 
-$id = GETPOST('id','int');
-$ref= GETPOST('ref','alpha');
+$id     = GETPOST('id','int');
+$ref    = GETPOST('ref','alpha');
+$lineid = GETPOST('lineid','int');
+$socid  = GETPOST('socid','int');
+$action = GETPOST('action','alpha');
 
-$mine = $_REQUEST['mode']=='mine' ? 1 : 0;
+$mine   = GETPOST('mode')=='mine' ? 1 : 0;
 //if (! $user->rights->projet->all->lire) $mine=1;	// Special for projects
 
-$project = new Project($db);
+$object = new Project($db);
 if ($ref)
 {
-    $project->fetch(0,$ref);
-    $id=$project->id;
+    $object->fetch(0,$ref);
+    $id=$object->id;
 }
 
 // Security check
@@ -55,41 +58,42 @@ $result = restrictedArea($user, 'projet', $id);
  */
 
 // Add new contact
-if ($_POST["action"] == 'addcontact' && $user->rights->projet->creer)
+if ($action == 'addcontact' && $user->rights->projet->creer)
 {
 	$result = 0;
-	$result = $project->fetch($id);
+	$result = $object->fetch($id);
 
     if ($result > 0 && $id > 0)
     {
-  		$result = $project->add_contact($_POST["contactid"], $_POST["type"], $_POST["source"]);
+  		$contactid = (GETPOST('userid') ? GETPOST('userid','int') : GETPOST('contactid','int'));
+  		$result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]);
     }
 
 	if ($result >= 0)
 	{
-		header("Location: contact.php?id=".$project->id);
+		header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
 		exit;
 	}
 	else
 	{
-		if ($project->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
+		if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
 		{
 			$langs->load("errors");
 			$mesg = '<div class="error">'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'</div>';
 		}
 		else
 		{
-			$mesg = '<div class="error">'.$project->error.'</div>';
+			$mesg = '<div class="error">'.$object->error.'</div>';
 		}
 	}
 }
 
 // bascule du statut d'un contact
-if ($_GET["action"] == 'swapstatut' && $user->rights->projet->creer)
+if ($action == 'swapstatut' && $user->rights->projet->creer)
 {
-	if ($project->fetch($id))
+	if ($object->fetch($id))
 	{
-	    $result=$project->swapContactStatus(GETPOST('ligne'));
+	    $result=$object->swapContactStatus(GETPOST('ligne'));
 	}
 	else
 	{
@@ -98,14 +102,14 @@ if ($_GET["action"] == 'swapstatut' && $user->rights->projet->creer)
 }
 
 // Efface un contact
-if ($_GET["action"] == 'deleteline' && $user->rights->projet->creer)
+if (($action == 'deleteline' || $action == 'deletecontact') && $user->rights->projet->creer)
 {
-	$project->fetch($id);
-	$result = $project->delete_contact($_GET["lineid"]);
+	$object->fetch($id);
+	$result = $object->delete_contact($_GET["lineid"]);
 
 	if ($result >= 0)
 	{
-		header("Location: contact.php?id=".$project->id);
+		header("Location: contact.php?id=".$object->id);
 		exit;
 	}
 	else
@@ -137,18 +141,18 @@ dol_htmloutput_mesg($mesg);
 
 if ($id > 0 || ! empty($ref))
 {
-	if ( $project->fetch($id,$ref) > 0)
+	if ( $object->fetch($id,$ref) > 0)
 	{
-		if ($project->societe->id > 0)  $result=$project->societe->fetch($project->societe->id);
+		if ($object->societe->id > 0)  $result=$object->societe->fetch($object->societe->id);
 
 		// To verify role of users
-		//$userAccess = $project->restrictedProjectArea($user,'read');
-		$userWrite  = $project->restrictedProjectArea($user,'write');
-		//$userDelete = $project->restrictedProjectArea($user,'delete');
+		//$userAccess = $object->restrictedProjectArea($user,'read');
+		$userWrite  = $object->restrictedProjectArea($user,'write');
+		//$userDelete = $object->restrictedProjectArea($user,'delete');
 		//print "userAccess=".$userAccess." userWrite=".$userWrite." userDelete=".$userDelete;
 
-		$head = project_prepare_head($project);
-		dol_fiche_head($head, 'contact', $langs->trans("Project"), 0, ($project->public?'projectpub':'project'));
+		$head = project_prepare_head($object);
+		dol_fiche_head($head, 'contact', $langs->trans("Project"), 0, ($object->public?'projectpub':'project'));
 
 
 		/*
@@ -163,231 +167,42 @@ if ($id > 0 || ! empty($ref))
 		// Define a complementary filter for search of next/prev ref.
         if (! $user->rights->projet->all->lire)
         {
-            $projectsListId = $project->getProjectsAuthorizedForUser($user,$mine,0);
-            $project->next_prev_filter=" rowid in (".(count($projectsListId)?join(',',array_keys($projectsListId)):'0').")";
+            $objectsListId = $object->getProjectsAuthorizedForUser($user,$mine,0);
+            $object->next_prev_filter=" rowid in (".(count($objectsListId)?join(',',array_keys($objectsListId)):'0').")";
         }
-		print $form->showrefnav($project, 'ref', $linkback, 1, 'ref', 'ref', '');
+		print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', '');
 		print '</td></tr>';
 
 		// Label
-		print '<tr><td>'.$langs->trans("Label").'</td><td>'.$project->title.'</td></tr>';
+		print '<tr><td>'.$langs->trans("Label").'</td><td>'.$object->title.'</td></tr>';
 
 		// Customer
 		print "<tr><td>".$langs->trans("Company")."</td>";
 		print '<td colspan="3">';
-		if ($project->societe->id > 0) print $project->societe->getNomUrl(1);
+		if ($object->societe->id > 0) print $object->societe->getNomUrl(1);
 		else print '&nbsp;';
 		print '</td></tr>';
 
 		// Visibility
 		print '<tr><td>'.$langs->trans("Visibility").'</td><td>';
-		if ($project->public) print $langs->trans('SharedProject');
+		if ($object->public) print $langs->trans('SharedProject');
 		else print $langs->trans('PrivateProject');
 		print '</td></tr>';
 
 		// Statut
-		print '<tr><td>'.$langs->trans("Status").'</td><td>'.$project->getLibStatut(4).'</td></tr>';
+		print '<tr><td>'.$langs->trans("Status").'</td><td>'.$object->getLibStatut(4).'</td></tr>';
 
 		print "</table>";
 
 		print '</div>';
 
-		/*
-		 * Lignes de contacts
-		 */
-		print '<br><table class="noborder" width="100%">';
-
-		/*
-		 * Ajouter une ligne de contact
-		 * Non affiche en mode modification de ligne
-		 */
-		if ($_GET["action"] != 'editline')
-		{
-			print '<tr class="liste_titre">';
-			print '<td>'.$langs->trans("Source").'</td>';
-			print '<td>'.$langs->trans("Company").'</td>';
-			print '<td>'.$langs->trans("Contacts").'</td>';
-			print '<td>'.$langs->trans("ContactType").'</td>';
-			print '<td colspan="3">&nbsp;</td>';
-			print "</tr>\n";
-
-			$var = false;
-
-			print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$project->id.'" method="POST">';
-			print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-			print '<input type="hidden" name="action" value="addcontact">';
-			print '<input type="hidden" name="source" value="internal">';
-			print '<input type="hidden" name="id" value="'.$project->id.'">';
-
-			// Ligne ajout pour contact interne
-			print "<tr ".$bc[$var].">";
-
-			print '<td class="nowrap">';
-			print img_object('','user').' '.$langs->trans("Users");
-			print '</td>';
-
-			print '<td colspan="1">';
-			print $conf->global->MAIN_INFO_SOCIETE_NOM;
-			print '</td>';
-
-			print '<td colspan="1">';
-			// On recupere les id des users deja selectionnes
-			$form->select_users($user->id,'contactid',0);
-			print '</td>';
-			print '<td>';
-			$formcompany->selectTypeContact($project, '', 'type','internal','rowid');
-			print '</td>';
-			print '<td align="right" colspan="3" >';
-			if ($userWrite > 0 || $user->admin)
-			{
-			    print '<input type="submit" class="button" value="'.$langs->trans("Add").'"';
-				if (! ($userWrite > 0 || $user->admin)) print ' disabled="disabled"';
-			    print '>';
-			}
-			print '</td>';
-			print '</tr>';
-
-			print '</form>';
-
-			// Line to add external contact. Only if project is linked to a third party.
-			//if ($project->societe->id)
-			//{
-				print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$id.'" method="POST">';
-				print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-				print '<input type="hidden" name="action" value="addcontact">';
-				print '<input type="hidden" name="source" value="external">';
-				print '<input type="hidden" name="id" value="'.$id.'">';
-
-				$var=!$var;
-				print "<tr ".$bc[$var].">";
-
-				print '<td class="nowrap">';
-				print img_object('','contact').' '.$langs->trans("ThirdPartyContacts");
-				print '</td>';
-
-				print '<td colspan="1">';
-				$selectedCompany = isset($_GET["newcompany"])?$_GET["newcompany"]:$project->societe->id;
-				$selectedCompany = $formcompany->selectCompaniesForNewContact($project, 'id', $selectedCompany, 'newcompany', (empty($project->societe->id)?array():array($project->societe->id)));
-				print '</td>';
-
-				print '<td colspan="1">';
-				$nbofcontacts=$form->select_contacts($selectedCompany, '', 'contactid');
-				//if ($nbofcontacts == 0) print $langs->trans("NoContactDefined");
-				print '</td>';
-				print '<td>';
-				$formcompany->selectTypeContact($project, '', 'type','external','rowid');
-				print '</td>';
-
-				print '<td align="right" colspan="3" >';
-				if ($userWrite > 0 || $user->admin)
-				{
-				    print '<input type="submit" class="button" value="'.$langs->trans("Add").'"';
-				    if (! $nbofcontacts || ! ($userWrite > 0 || $user->admin)) print ' disabled="disabled"';
-				    print '>';
-				}
-				print '</td>';
-				print '</tr>';
-
-				print "</form>";
-			//}
-
-			print '<tr><td colspan="6">&nbsp;</td></tr>';
-		}
-
-		// Liste des contacts lies
-		print '<tr class="liste_titre">';
-		print '<td>'.$langs->trans("Source").'</td>';
-		print '<td>'.$langs->trans("Company").'</td>';
-		print '<td>'.$langs->trans("Contacts").'</td>';
-		print '<td>'.$langs->trans("ContactType").'</td>';
-		print '<td align="center">'.$langs->trans("Status").'</td>';
-		print '<td colspan="2">&nbsp;</td>';
-		print "</tr>\n";
-
-		$companystatic = new Societe($db);
-		$var = true;
-
-		foreach(array('internal','external') as $source)
+		// Contacts lines (modules that overwrite templates must declare this into descriptor)
+		$dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl'));
+		foreach($dirtpls as $reldir)
 		{
-			$tab = $project->liste_contact(-1,$source);
-			$num=count($tab);
-
-			$i = 0;
-			while ($i < $num)
-			{
-				$var = !$var;
-
-				print '<tr '.$bc[$var].' valign="top">';
-
-				// Source
-				print '<td align="left">';
-				if ($tab[$i]['source']=='internal') print $langs->trans("User");
-				if ($tab[$i]['source']=='external') print $langs->trans("ThirdPartyContact");
-				print '</td>';
-
-				// Societe
-				print '<td align="left">';
-				if ($tab[$i]['socid'] > 0)
-				{
-					$companystatic->fetch($tab[$i]['socid']);
-					print $companystatic->getNomUrl(1);
-				}
-				if ($tab[$i]['socid'] < 0)
-				{
-					print $conf->global->MAIN_INFO_SOCIETE_NOM;
-				}
-				if (! $tab[$i]['socid'])
-				{
-					print '&nbsp;';
-				}
-				print '</td>';
-
-				// Contact
-				print '<td>';
-				if ($tab[$i]['source']=='internal')
-				{
-                    $userstatic->id=$tab[$i]['id'];
-                    $userstatic->lastname=$tab[$i]['nom'];
-                    $userstatic->firstname=$tab[$i]['firstname'];
-                    print $userstatic->getNomUrl(1);
-				}
-				if ($tab[$i]['source']=='external')
-				{
-                    $contactstatic->id=$tab[$i]['id'];
-                    $contactstatic->lastname=$tab[$i]['nom'];
-                    $contactstatic->firstname=$tab[$i]['firstname'];
-                    print $contactstatic->getNomUrl(1);
-				}
-				print '</td>';
-
-				// Type de contact
-				print '<td>'.$tab[$i]['libelle'].'</td>';
-
-				// Statut
-				print '<td align="center">';
-				// Activation desativation du contact
-				if ($project->statut >= 0 && $userWrite > 0) print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$project->id.'&amp;action=swapstatut&amp;ligne='.$tab[$i]['rowid'].'">';
-				print $contactstatic->LibStatut($tab[$i]['status'],3);
-				if ($project->statut >= 0 && $userWrite > 0) print '</a>';
-				print '</td>';
-
-				// Icon update et delete
-				print '<td align="center" nowrap>';
-				if ($user->rights->projet->creer && $userWrite > 0)
-				{
-					print '&nbsp;';
-					print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$project->id.'&amp;action=deleteline&amp;lineid='.$tab[$i]['rowid'].'">';
-					print img_delete();
-					print '</a>';
-				}
-				print '</td>';
-
-				print "</tr>\n";
-
-				$i ++;
-			}
-		}
-		print "</table>";
+			$res=@include dol_buildpath($reldir.'/contacts.tpl.php');
+			if ($res) break;
+		}		
 	}
 	else
 	{