From 2d478334485b7afd6ff3e8f1b9720191a4aa5309 Mon Sep 17 00:00:00 2001
From: ARNO* <arno@rezo.net>
Date: Mon, 29 Aug 2005 18:19:24 +0000
Subject: [PATCH] Bug javascript/AJAX: les references aux id changent quand on
 fait des chargements dynamiques - il faut donc pouvoir utiliser findObj sans
 memoriser la reference aux id.

---
 ecrire/layer.js | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/ecrire/layer.js b/ecrire/layer.js
index deb6f90f13..3080446c94 100644
--- a/ecrire/layer.js
+++ b/ecrire/layer.js
@@ -3,11 +3,11 @@ var vis = new Array();
 
 	var memo_obj = new Array();
 
-	function findObj(n) { 
+	function findObj_test_forcer(n, forcer) { 
 		var p,i,x;
 
 		// Voir si on n'a pas deja memoriser cet element		
-		if (memo_obj[n]) {
+		if (memo_obj[n] && !forcer) {
 			return memo_obj[n];
 		}
 		
@@ -26,11 +26,19 @@ var vis = new Array();
 		if(!x && document.getElementById) x = document.getElementById(n); 
 		
 		// Memoriser l'element
-		memo_obj[n] = x;
+		if (!forcer) memo_obj[n] = x;
 		
 		return x;
 	}
 	
+	function findObj(n) { 
+		return findObj_test_forcer(n, false);
+	}
+	// findObj sans memorisation de l'objet - avec Ajax, les elements se deplacent dans DOM
+	function findObj_forcer(n) { 
+		return findObj_test_forcer(n, true);
+	}
+	
 	function hide_obj(obj) {
 		element = findObj(obj);
 		if(element) {
@@ -99,10 +107,11 @@ var xmlhttp = new Array();
 
 function charger_id_url(myUrl,myField) 
 {
-	var Field = findObj(myField); // selects the given element
+	var Field = findObj_forcer(myField); // selects the given element
+
 	if (!Field) return;
 	
-	image = document.getElementById('img_'+myField);
+	image = findObj_forcer('img_'+myField);
 	
 	if (image) image.style.visibility = "visible";
 	
-- 
GitLab