diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php
index ffb71c6b2849c7a1df16d5a72d98ed7dddf9d1c9..3604d56edc1297948908df2a053147e195673509 100644
--- a/htdocs/comm/propal.php
+++ b/htdocs/comm/propal.php
@@ -1044,6 +1044,67 @@ else if ($action == 'down' && $user->rights->propale->creer)
 	exit;
 }
 
+if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
+{
+	if ($action == 'addcontact' && $user->rights->propale->creer)
+	{
+		$result = $object->fetch($id);
+	
+		if ($result > 0 && $id > 0)
+		{
+			$result = $object->add_contact($_POST["contactid"], $_POST["type"], $_POST["source"]);
+		}
+	
+		if ($result >= 0)
+		{
+			Header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
+			exit;
+		}
+		else
+		{
+			if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
+			{
+				$langs->load("errors");
+				$mesg = '<div class="error">'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'</div>';
+			}
+			else
+			{
+				$mesg = '<div class="error">'.$object->error.'</div>';
+			}
+		}
+	}
+	
+	// Bascule du statut d'un contact
+	else if ($action == 'swapstatut' && $user->rights->propale->creer)
+	{
+		if ($object->fetch($id) > 0)
+		{
+			$result=$object->swapContactStatus(GETPOST('ligne'));
+		}
+		else
+		{
+			dol_print_error($db);
+		}
+	}
+	
+	// Efface un contact
+	else if ($action == 'deletecontact' && $user->rights->propale->creer)
+	{
+		$object->fetch($id);
+		$result = $object->delete_contact($lineid);
+	
+		if ($result >= 0)
+		{
+			Header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
+			exit;
+		}
+		else
+		{
+			dol_print_error($db);
+		}
+	}
+}
+
 
 /*
  * View
@@ -1479,9 +1540,21 @@ if ($id > 0 || ! empty($ref))
 	
 	print '</table><br>';
 
+	if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
+	{
+		require_once(DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php');
+		$formcompany= new FormCompany($db);
+		 
+		$blocname = 'contacts';
+		$title = $langs->trans('ContactsAddresses');
+		include(DOL_DOCUMENT_ROOT.'/core/tpl/bloc_showhide.tpl.php');
+	}
+	
     if (! empty($conf->global->MAIN_DISABLE_NOTES_TAB))
     {
-    	include(DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php');
+    	$blocname = 'notes';
+    	$title = $langs->trans('Notes');
+    	include(DOL_DOCUMENT_ROOT.'/core/tpl/bloc_showhide.tpl.php');
     }
 
 	/*
diff --git a/htdocs/comm/propal/contact.php b/htdocs/comm/propal/contact.php
index 54081f5bc2120fdfe760af988f89673b0636b0bd..ae741698641db33157c1fe305155fd6e61652f2a 100644
--- a/htdocs/comm/propal/contact.php
+++ b/htdocs/comm/propal/contact.php
@@ -93,7 +93,7 @@ else if ($action == 'swapstatut' && $user->rights->propale->creer)
 }
 
 // Efface un contact
-else if ($action == 'deleteline' && $user->rights->propale->creer)
+else if ($action == 'deletecontact' && $user->rights->propale->creer)
 {
 	$object->fetch($id);
 	$result = $object->delete_contact($lineid);
@@ -126,8 +126,6 @@ llxHeader('', $langs->trans("Proposal"), "Propal");
 $form = new Form($db);
 $formcompany= new FormCompany($db);
 $formother = new FormOther($db);
-$contactstatic=new Contact($db);
-$userstatic=new User($db);
 
 
 /* *************************************************************************** */
@@ -205,185 +203,10 @@ if ($id > 0 || ! empty($ref))
 		/*
 		 * Lignes de contacts
 		 */
-		print '<br><table class="noborder" width="100%">';
-
-		/*
-		 * Ajouter une ligne de contact
-		 * Non affiche en mode modification de ligne
-		 */
-		if ($action != 'editline' && $user->rights->propale->creer)
-		{
-			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='.$id.'" method="POST">';
- 			print '<input type="hidden" name="id" value="'.$id.'">';
-			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">';
-
-            // Line to add an internal contact
-            print "<tr ".$bc[$var].">";
-
-			print '<td nowrap="nowrap">';
-			print img_object('','user').' '.$langs->trans("Users");
-			print '</td>';
-
-			print '<td>';
-			print $conf->global->MAIN_INFO_SOCIETE_NOM;
-			print '</td>';
-
-			print '<td>';
-			// On recupere les id des users deja selectionnes
-			//$userAlreadySelected = $object->getListContactId('internal');	// On ne doit pas desactiver un contact deja selectionne car on doit pouvoir le selectionner une deuxieme fois pour un autre type
-			$form->select_users($user->id,'contactid',0,$userAlreadySelected);
-			print '</td>';
-			print '<td>';
-			$formcompany->selectTypeContact($object, '', 'type','internal');
-			print '</td>';
-			print '<td align="right" colspan="3" ><input type="submit" class="button" value="'.$langs->trans("Add").'"></td>';
-			print '</tr>';
-
-			print '</form>';
-
-			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="id" value="'.$id.'">';
-			print '<input type="hidden" name="source" value="external">';
-
-            // Line to add an external contact
-            $var=!$var;
-            print "<tr ".$bc[$var].">";
-
-			print '<td nowrap="nowrap">';
-			print img_object('','contact').' '.$langs->trans("ThirdPartyContacts");
-			print '</td>';
-
-			print '<td>';
-			$selectedCompany = isset($_GET["newcompany"])?$_GET["newcompany"]:$object->client->id;
-			$selectedCompany = $formcompany->selectCompaniesForNewContact($object, 'id', $selectedCompany, 'newcompany');
-			print '</td>';
-
-			print '<td>';
-			$nbofcontacts=$form->select_contacts($selectedCompany, '', 'contactid');
-			if ($nbofcontacts == 0) print $langs->trans("NoContactDefined");
-			print '</td>';
-			print '<td>';
-			$formcompany->selectTypeContact($object, '', 'type','external');
-			print '</td>';
-			print '<td align="right" colspan="3" ><input type="submit" class="button" value="'.$langs->trans("Add").'"';
-			if (! $nbofcontacts) print ' disabled="disabled"';
-			print '></td>';
-			print '</tr>';
-
-			print '</form>';
-
-            print '<tr><td colspan="7">&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)
-		{
-			$tab = $object->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]['lastname'];
-                    $userstatic->firstname=$tab[$i]['firstname'];
-                    print $userstatic->getNomUrl(1);
-                }
-                if ($tab[$i]['source']=='external')
-                {
-                    $contactstatic->id=$tab[$i]['id'];
-                    $contactstatic->lastname=$tab[$i]['lastname'];
-                    $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 ($object->statut >= 0) print '<a href="contact.php?id='.$object->id.'&amp;action=swapstatut&amp;ligne='.$tab[$i]['rowid'].'">';
-				print $contactstatic->LibStatut($tab[$i]['status'],3);
-				if ($object->statut >= 0) print '</a>';
-				print '</td>';
-
-				// Icon update et delete
-				print '<td align="center" nowrap="nowrap" colspan="2">';
-				if ($user->rights->propale->creer)
-				{
-					print '&nbsp;';
-					print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=deleteline&amp;lineid='.$tab[$i]['rowid'].'">';
-					print img_delete();
-					print '</a>';
-				}
-				print '</td>';
-
-				print "</tr>\n";
-
-				$i ++;
-			}
-		}
-		print "</table>";
+		print '<br>';
+		
+		include(DOL_DOCUMENT_ROOT.'/core/tpl/contacts.tpl.php');
+		
 	}
 	else
 	{
diff --git a/htdocs/comm/propal/note.php b/htdocs/comm/propal/note.php
index 80ab342df3f49c14c37d1e1d32be3f09072c4269..8bc2d5f7eea70174b3b7a4ea7cf21c370c9a0135 100644
--- a/htdocs/comm/propal/note.php
+++ b/htdocs/comm/propal/note.php
@@ -32,54 +32,33 @@ $langs->load('propal');
 $langs->load('compta');
 $langs->load('bills');
 
-$id = isset($_GET["id"])?$_GET["id"]:'';
+$id = GETPOST('id','int');
+$ref=GETPOST('ref','alpha');
+$action=GETPOST('action','alpha');
 
 // Security check
 if ($user->societe_id) $socid=$user->societe_id;
 $result = restrictedArea($user, 'propale', $id, 'propal');
 
+$object = new Propal($db);
 
 
 /******************************************************************************/
 /*                     Actions                                                */
 /******************************************************************************/
 
-if ($_POST["action"] == 'update_public' && $user->rights->propale->creer)
-{
-	$propal = new Propal($db);
-	$propal->fetch($_GET["id"]);
-
-	$db->begin();
-
-	$res=$propal->update_note_public($_POST["note_public"],$user);
-	if ($res < 0)
-	{
-		$mesg='<div class="error">'.$propal->error.'</div>';
-		$db->rollback();
-	}
-	else
-	{
-		$db->commit();
-	}
-}
-
-if ($_POST['action'] == 'update' && $user->rights->propale->creer)
-{
-	$propal = new Propal($db);
-	$propal->fetch($_GET["id"]);
-
-	$db->begin();
-
-	$res=$propal->update_note($_POST["note"],$user);
-	if ($res < 0)
-	{
-		$mesg='<div class="error">'.$propal->error.'</div>';
-		$db->rollback();
-	}
-	else
-	{
-		$db->commit();
-	}
+if ($action == 'setnote_public' && $user->rights->propale->creer)
+{
+	$object->fetch($id);
+	$result=$object->update_note_public(GETPOST('note_public','alpha'));
+	if ($result < 0) dol_print_error($db,$object->error);
+}
+
+else if ($action == 'setnote' && $user->rights->propale->creer)
+{
+	$object->fetch($id);
+	$result=$object->update_note(GETPOST('note','alpha'));
+	if ($result < 0) dol_print_error($db,$object->error);
 }
 
 
@@ -92,21 +71,18 @@ llxHeader();
 
 $form = new Form($db);
 
-$id = $_GET["id"];
-$ref= $_GET["ref"];
 if ($id > 0 || ! empty($ref))
 {
 	if ($mesg) print $mesg;
 
 	$now=gmmktime();
 
-	$propal = new Propal($db);
-	if ($propal->fetch($id, $ref))
+	if ($object->fetch($id, $ref))
 	{
 		$societe = new Societe($db);
-		if ( $societe->fetch($propal->socid) )
+		if ( $societe->fetch($object->socid) )
 		{
-			$head = propal_prepare_head($propal);
+			$head = propal_prepare_head($object);
 			dol_fiche_head($head, 'note', $langs->trans('Proposal'), 0, 'propal');
 
 			print '<table class="border" width="100%">';
@@ -115,7 +91,7 @@ if ($id > 0 || ! empty($ref))
 
 			// Ref
 			print '<tr><td width="25%">'.$langs->trans('Ref').'</td><td colspan="3">';
-			print $form->showrefnav($propal,'ref',$linkback,1,'ref','ref','');
+			print $form->showrefnav($object,'ref',$linkback,1,'ref','ref','');
 			print '</td></tr>';
 
 			// Ref client
@@ -125,15 +101,15 @@ if ($id > 0 || ! empty($ref))
 			print '</td>';
 			print '</tr></table>';
 			print '</td><td colspan="3">';
-			print $propal->ref_client;
+			print $object->ref_client;
 			print '</td>';
 			print '</tr>';
 
 			// Customer
-			if ( is_null($propal->client) )
-				$propal->fetch_thirdparty();
+			if ( is_null($object->client) )
+				$object->fetch_thirdparty();
 			print "<tr><td>".$langs->trans("Company")."</td>";
-			print '<td colspan="3">'.$propal->client->getNomUrl(1).'</td></tr>';
+			print '<td colspan="3">'.$object->client->getNomUrl(1).'</td></tr>';
 
 			// Ligne info remises tiers
 			print '<tr><td>'.$langs->trans('Discounts').'</td><td colspan="3">';
@@ -148,17 +124,17 @@ if ($id > 0 || ! empty($ref))
 
 			// Date
 			print '<tr><td>'.$langs->trans('Date').'</td><td colspan="3">';
-			print dol_print_date($propal->date,'daytext');
+			print dol_print_date($object->date,'daytext');
 			print '</td>';
 			print '</tr>';
 
 			// Date fin propal
 			print '<tr>';
 			print '<td>'.$langs->trans('DateEndPropal').'</td><td colspan="3">';
-			if ($propal->fin_validite)
+			if ($object->fin_validite)
 			{
-				print dol_print_date($propal->fin_validite,'daytext');
-				if ($propal->statut == 1 && $propal->fin_validite < ($now - $conf->propal->cloture->warning_delay)) print img_warning($langs->trans("Late"));
+				print dol_print_date($object->fin_validite,'daytext');
+				if ($object->statut == 1 && $object->fin_validite < ($now - $conf->propal->cloture->warning_delay)) print img_warning($langs->trans("Late"));
 			}
 			else
 			{
@@ -166,45 +142,8 @@ if ($id > 0 || ! empty($ref))
 			}
 			print '</td>';
 			print '</tr>';
-
-			// Note publique
-			print '<tr><td valign="top">'.$langs->trans("NotePublic").' :</td>';
-			print '<td valign="top" colspan="3">';
-			if ($_GET["action"] == 'edit')
-			{
-				print '<form method="post" action="note.php?id='.$propal->id.'">';
-				print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-				print '<input type="hidden" name="action" value="update_public">';
-				print '<textarea name="note_public" cols="80" rows="8">'.$propal->note_public."</textarea><br>";
-				print '<input type="submit" class="button" value="'.$langs->trans("Save").'">';
-				print '</form>';
-			}
-			else
-			{
-				print ($propal->note_public?nl2br($propal->note_public):"&nbsp;");
-			}
-			print "</td></tr>";
-
-			// Note privee
-			if (! $user->societe_id)
-			{
-				print '<tr><td valign="top">'.$langs->trans("NotePrivate").' :</td>';
-				print '<td valign="top" colspan="3">';
-				if ($_GET["action"] == 'edit')
-				{
-					print '<form method="post" action="note.php?id='.$propal->id.'">';
-					print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-					print '<input type="hidden" name="action" value="update">';
-					print '<textarea name="note" cols="80" rows="8">'.$propal->note."</textarea><br>";
-					print '<input type="submit" class="button" value="'.$langs->trans("Save").'">';
-					print '</form>';
-				}
-				else
-				{
-					print ($propal->note?nl2br($propal->note):"&nbsp;");
-				}
-				print "</td></tr>";
-			}
+			
+			include(DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php');
 
 			print "</table>";
 
@@ -215,15 +154,16 @@ if ($id > 0 || ! empty($ref))
 			 */
 
 			print '<div class="tabsAction">';
-			if ($user->rights->propale->creer && $_GET['action'] <> 'edit')
+			if ($user->rights->propale->creer && $action <> 'edit')
 			{
-				print '<a class="butAction" href="note.php?id='.$propal->id.'&amp;action=edit">'.$langs->trans('Modify').'</a>';
+				print '<a class="butAction" href="note.php?id='.$object->id.'&amp;action=edit">'.$langs->trans('Modify').'</a>';
 			}
 			print '</div>';
 		}
 	}
 }
-$db->close();
+
 
 llxFooter();
+$db->close();
 ?>
diff --git a/htdocs/core/lib/propal.lib.php b/htdocs/core/lib/propal.lib.php
index 9b86b3739259fb753a2229d7c99b75001c5881a7..3ef03979045b3f830e0579198452c1a2331c7842 100644
--- a/htdocs/core/lib/propal.lib.php
+++ b/htdocs/core/lib/propal.lib.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2006-2010 Laurent Destailleur  <eldy@users.sourceforge.net>
- * Copyright (C) 2005-2010 Regis Houssin        <regis@dolibarr.fr>
+ * Copyright (C) 2005-2012 Regis Houssin        <regis@dolibarr.fr>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -62,11 +62,14 @@ function propal_prepare_head($object)
 		$head[$h][2] = 'preview';
 		$h++;
 	}
-
-	$head[$h][0] = DOL_URL_ROOT.'/comm/propal/contact.php?id='.$object->id;
-	$head[$h][1] = $langs->trans('ContactsAddresses');
-	$head[$h][2] = 'contact';
-	$h++;
+	
+	if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB))
+	{
+		$head[$h][0] = DOL_URL_ROOT.'/comm/propal/contact.php?id='.$object->id;
+		$head[$h][1] = $langs->trans('ContactsAddresses');
+		$head[$h][2] = 'contact';
+		$h++;
+	}
 
     // Show more tabs from modules
     // Entries must be declared in modules descriptor with line
diff --git a/htdocs/core/tpl/bloc_showhide.tpl.php b/htdocs/core/tpl/bloc_showhide.tpl.php
new file mode 100644
index 0000000000000000000000000000000000000000..ff90233652120009deaa4207001680334743378c
--- /dev/null
+++ b/htdocs/core/tpl/bloc_showhide.tpl.php
@@ -0,0 +1,62 @@
+<?php
+/* Copyright (C) 2012 Regis Houssin <regis@dolibarr.fr>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+// Hide by default
+$hide = (empty($object->extraparams[$blocname]['showhide']) ? true : false);
+
+?>
+
+<!-- BEGIN PHP TEMPLATE BLOC SHOW/HIDE -->
+
+<script type="text/javascript">
+$(document).ready(function() {
+	$("#hide-<?php echo $blocname ?>").click(function(){
+		setShowHide(0);
+		$("#<?php echo $blocname ?>_bloc").hide("blind", {direction: "vertical"}, 800).removeClass("nohideobject");
+		$(this).hide();
+		$("#show-<?php echo $blocname ?>").show();
+	});
+	$("#show-<?php echo $blocname ?>").click(function(){
+		setShowHide(1);
+		$("#<?php echo $blocname ?>_bloc").show("blind", {direction: "vertical"}, 800).addClass("nohideobject");
+		$(this).hide();
+		$("#hide-<?php echo $blocname ?>").show();
+	});
+	function setShowHide(status) {
+		var id			= <?php echo $object->id; ?>;
+		var element		= '<?php echo $object->element; ?>';
+		var htmlelement	= '<?php echo $blocname ?>';
+		var type		= 'showhide';
+		
+		$.get("<?php echo dol_buildpath('/core/ajax/extraparams.php', 1); ?>?id="+id+"&element="+element+"&htmlelement="+htmlelement+"&type="+type+"&value="+status);
+	}
+});
+</script>
+
+<div style="float:right; position: relative; top: 3px; right:5px;" id="hide-<?php echo $blocname ?>" class="linkobject<?php echo ($hide ? ' hideobject' : ''); ?>"><?php echo img_picto('', '1uparrow.png'); ?></div>
+<div style="float:right; position: relative; top: 3px; right:5px;" id="show-<?php echo $blocname ?>" class="linkobject<?php echo ($hide ? '' : ' hideobject'); ?>"><?php echo img_picto('', '1downarrow.png'); ?></div>
+<div id="<?php echo $blocname ?>_title" class="liste_titre"><?php echo $title; ?></div>
+
+<div id="<?php echo $blocname ?>_bloc" class="<?php echo ($hide ? 'hideobject' : 'nohideobject'); ?>">
+
+<?php include(DOL_DOCUMENT_ROOT.'/core/tpl/'.$blocname.'.tpl.php'); ?>
+
+</div>
+<br>
+
+<!-- END PHP TEMPLATE BLOC SHOW/HIDE -->
\ No newline at end of file
diff --git a/htdocs/core/tpl/contacts.tpl.php b/htdocs/core/tpl/contacts.tpl.php
new file mode 100644
index 0000000000000000000000000000000000000000..16a3e1a40d78e452d789e25e45f7f32b9377be4a
--- /dev/null
+++ b/htdocs/core/tpl/contacts.tpl.php
@@ -0,0 +1,168 @@
+<?php
+/* Copyright (C) 2012 Regis Houssin <regis@dolibarr.fr>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+$module = $object->element;
+if ($module == 'propal') $module = 'propale';
+else if ($module == 'fichinter') { $module = 'ficheinter'; }
+
+$companystatic=new Societe($db);
+$contactstatic=new Contact($db);
+$userstatic=new User($db);
+
+?>
+
+<!-- BEGIN PHP TEMPLATE CONTACTS -->
+<table class="noborder allwidth">
+
+<?php if ($user->rights->$module->creer) { ?>
+	<tr class="liste_titre">
+		<td><?php echo $langs->trans("Source"); ?></td>
+		<td><?php echo $langs->trans("Company"); ?></td>
+		<td><?php echo $langs->trans("Contacts"); ?></td>
+		<td><?php echo $langs->trans("ContactType"); ?></td>
+		<td colspan="3">&nbsp;</td>
+	</tr>
+	
+	<?php $var=false; ?>
+	
+	<form action="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id; ?>" method="POST">
+	<input type="hidden" name="token" value="<?php echo $_SESSION['newtoken']; ?>" />
+	<input type="hidden" name="id" value="<?php echo $object->id; ?>" />
+	<input type="hidden" name="action" value="addcontact" />
+	<input type="hidden" name="source" value="internal" />
+	
+	<tr <?php echo $bc[$var]; ?>>
+		<td nowrap="nowrap"><?php echo img_object('','user').' '.$langs->trans("Users"); ?></td>
+		<td><?php echo $conf->global->MAIN_INFO_SOCIETE_NOM; ?></td>
+		<td><?php echo $form->select_users($user->id,'contactid',0,$userAlreadySelected); ?></td>
+		<td><?php echo $formcompany->selectTypeContact($object, '', 'type','internal'); ?></td>
+		<td align="right" colspan="3" ><input type="submit" class="button" value="<?php echo $langs->trans("Add"); ?>"></td>
+	</tr>
+	</form>
+	
+	<form action="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id; ?>" method="POST">
+	<input type="hidden" name="token" value="<?php echo $_SESSION['newtoken']; ?>" />
+	<input type="hidden" name="id" value="<?php echo $object->id; ?>" />
+	<input type="hidden" name="action" value="addcontact" />
+	<input type="hidden" name="source" value="internal" />
+
+	<?php $var=!$var; ?>
+	
+	<tr <?php echo $bc[$var]; ?>>
+		<td nowrap="nowrap"><?php echo img_object('','contact').' '.$langs->trans("ThirdPartyContacts"); ?></td>
+		<td>
+			<?php $selectedCompany = isset($_GET["newcompany"])?$_GET["newcompany"]:$object->socid; ?>
+			<?php $selectedCompany = $formcompany->selectCompaniesForNewContact($object, 'id', $selectedCompany, 'newcompany'); ?>
+		</td>
+		<td>
+			<?php $nbofcontacts=$form->select_contacts($selectedCompany, '', 'contactid'); ?>
+			<?php if ($nbofcontacts == 0) echo $langs->trans("NoContactDefined"); ?>
+		</td>
+		<td>
+			<?php $formcompany->selectTypeContact($object, '', 'type','external'); ?>
+		</td>
+		<td align="right" colspan="3" >
+			<input type="submit" class="button" value="<?php echo $langs->trans("Add"); ?>"<?php if (! $nbofcontacts) echo ' disabled="disabled"'; ?>>
+		</td>
+	</tr>
+	</form>
+	
+	<tr>
+		<td colspan="7">&nbsp;</td>
+	</tr>
+<?php } ?>
+
+	<tr class="liste_titre">
+		<td><?php echo $langs->trans("Source"); ?></td>
+		<td><?php echo $langs->trans("Company"); ?></td>
+		<td><?php echo $langs->trans("Contacts"); ?></td>
+		<td><?php echo $langs->trans("ContactType"); ?></td>
+		<td align="center"><?php echo $langs->trans("Status"); ?></td>
+		<td colspan="2">&nbsp;</td>
+	</tr>
+
+	<?php $var=true; ?>
+	
+	<?php
+	foreach(array('internal','external') as $source) {
+		$tab = $object->liste_contact(-1,$source);
+		$num=count($tab);
+	
+		$i = 0;
+		while ($i < $num) {
+			$var = !$var;
+	?>
+	
+	<tr <?php echo $bc[$var]; ?> valign="top">
+		<td align="left">
+			<?php if ($tab[$i]['source']=='internal') echo $langs->trans("User"); ?>
+			<?php if ($tab[$i]['source']=='external') echo $langs->trans("ThirdPartyContact"); ?>
+		</td>
+		<td align="left">
+			<?php
+			if ($tab[$i]['socid'] > 0)
+			{
+				$companystatic->fetch($tab[$i]['socid']);
+				echo $companystatic->getNomUrl(1);
+			}
+			if ($tab[$i]['socid'] < 0)
+			{
+				echo $conf->global->MAIN_INFO_SOCIETE_NOM;
+			}
+			if (! $tab[$i]['socid'])
+			{
+				echo '&nbsp;';
+			}
+			?>
+		</td>
+		<td>
+			<?php 
+			if ($tab[$i]['source']=='internal')
+			{
+				$userstatic->id=$tab[$i]['id'];
+				$userstatic->lastname=$tab[$i]['lastname'];
+				$userstatic->firstname=$tab[$i]['firstname'];
+				echo $userstatic->getNomUrl(1);
+			}
+			if ($tab[$i]['source']=='external')
+			{
+				$contactstatic->id=$tab[$i]['id'];
+				$contactstatic->lastname=$tab[$i]['lastname'];
+				$contactstatic->firstname=$tab[$i]['firstname'];
+				echo $contactstatic->getNomUrl(1);
+			}
+			?>
+		</td>
+		<td><?php echo $tab[$i]['libelle']; ?></td>
+		<td align="center">
+			<?php if ($object->statut >= 0) echo '<a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&amp;action=swapstatut&amp;ligne='.$tab[$i]['rowid'].'">'; ?>
+			<?php echo $contactstatic->LibStatut($tab[$i]['status'],3); ?>
+			<?php if ($object->statut >= 0) echo '</a>'; ?>
+		</td>
+		<td align="center" nowrap="nowrap" colspan="2">
+			<?php if ($user->rights->$module->creer) { ?>
+				&nbsp;<a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=deletecontact&amp;lineid='.$tab[$i]['rowid']; ?>"><?php echo img_delete(); ?></a>
+			<?php } ?>
+		</td>
+	</tr>
+	
+<?php $i++; ?>
+<?php } } ?>
+	
+</table>
+<!-- END PHP TEMPLATE CONTACTS -->
\ No newline at end of file
diff --git a/htdocs/core/tpl/notes.tpl.php b/htdocs/core/tpl/notes.tpl.php
index 9975de606ddc129e89ac7e4e5631b6ad5f74fe56..3f78504c025c3e292b8402506f1238dd8ed5d4b8 100644
--- a/htdocs/core/tpl/notes.tpl.php
+++ b/htdocs/core/tpl/notes.tpl.php
@@ -16,7 +16,6 @@
  *
  */
 
-$hide = $object->extraparams['notes']['showhide'];
 $module = $object->element;
 $note_public = 'note_public';
 $note_private = 'note';
@@ -25,38 +24,7 @@ else if ($module == 'fichinter') { $module = 'ficheinter'; $note_private = 'note
 
 ?>
 
-<!-- BEGIN PHP TEMPLATE -->
-
-<script type="text/javascript">
-$(document).ready(function() {
-	$("#hide-notes").click(function(){
-		setShowHide(1);
-		$("#notes_bloc").hide("blind", {direction: "vertical"}, 800).removeClass("nohideobject");
-		$(this).hide();
-		$("#show-notes").show();
-	});
-	$("#show-notes").click(function(){
-		setShowHide(0);
-		$("#notes_bloc").show("blind", {direction: "vertical"}, 800).addClass("nohideobject");
-		$(this).hide();
-		$("#hide-notes").show();
-	});
-	function setShowHide(status) {
-		var id			= <?php echo $object->id; ?>;
-		var element		= '<?php echo $object->element; ?>';
-		var htmlelement	= 'notes';
-		var type		= 'showhide';
-		
-		$.get("<?php echo dol_buildpath('/core/ajax/extraparams.php', 1); ?>?id="+id+"&element="+element+"&htmlelement="+htmlelement+"&type="+type+"&value="+status);
-	}
-});
-</script>
-
-<div style="float:right; position: relative; top: 3px; right:5px;" id="hide-notes" class="linkobject<?php echo ($hide ? ' hideobject' : ''); ?>"><?php echo img_picto('', '1uparrow.png'); ?></div>
-<div style="float:right; position: relative; top: 3px; right:5px;" id="show-notes" class="linkobject<?php echo ($hide ? '' : ' hideobject'); ?>"><?php echo img_picto('', '1downarrow.png'); ?></div>
-<div class="liste_titre"><?php echo $langs->trans('Notes'); ?></div>
-
-<div id="notes_bloc" class="<?php echo ($hide ? 'hideobject' : 'nohideobject'); ?>">
+<!-- BEGIN PHP TEMPLATE NOTES -->
 <table class="border allwidth">		
 	<tr>
 		<td width="25%" valign="top"><?php echo $form->editfieldkey("NotePublic",$note_public,$object->note_public,$object,$user->rights->$module->creer,'textarea'); ?></td>
@@ -71,7 +39,4 @@ $(document).ready(function() {
 	<?php } ?>
 	
 </table>
-</div>
-<br>
-
-<!-- END PHP TEMPLATE -->
\ No newline at end of file
+<!-- END PHP TEMPLATE NOTES-->
\ No newline at end of file