var sep = ',';
var curLexique = '';
var wndLexique = null;


function LexiqueItemClick(pFieldID, pFieldLib, pMultiple) {
	var eSrc = window.event.srcElement;
	if (eSrc.tagName == "IMG") {
		eSrc = eSrc.parentElement;
	}
	var oULList = document.all.root; 
	oULList = findNextUL(eSrc);  // fonction qui permet de retrouver le prochain UL fils de la liste

	if (oULList != null) {
			if (oULList.className == 'lexOpen')
				oULList.className = 'lexClose';
			else
				oULList.className = 'lexOpen';
	}
	
	if (eSrc.tagName == "LI") {
		var strLibSel = eSrc.getAttribute("libsel");
		var strLibParent = eSrc.getAttribute("libpar");	
		if (eSrc.className == "lexItemOver") {
			eSrc.className = "lexItemSelectedOver";
			LexiqueItemAdd(eSrc.id, strLibSel, pFieldID, pFieldLib, pMultiple, strLibParent);
		} else if (eSrc.className == "lexItemSelectedOver") {
			eSrc.className = "lexItemOver";
			LexiqueItemRemove(eSrc.id, strLibSel, pFieldID, pFieldLib);
		} else if (eSrc.className == "lexTreeOver") {
			eSrc.className = "lexTreeSelectedOver";
			LexiqueItemAdd(eSrc.id, strLibSel, pFieldID, pFieldLib, pMultiple, strLibParent);
		} else if (eSrc.className == "lexTreeSelectedOver") {
			eSrc.className = "lexTreeOver";
			LexiqueItemRemove(eSrc.id, strLibSel, pFieldID, pFieldLib);
		}else if (eSrc.className == "lexItemSelection") {
			elt = findNextId(eSrc.id,document.all.root);
			if (elt) {
				strlibsel = elt.getAttribute("libsel");				
				elt.className="lexItem";	
				LexiqueItemRemove(elt.id, strlibsel, pFieldID, pFieldLib);
			}else {
			LexiqueItemRemove(eSrc.id,eSrc.innerHTML, pFieldID, pFieldLib);
			}
			
		} // if className
	} //LI
	
} // LexiqueItemClick

function findNextId(pId,pSrc) {
	for(var i = 0; i < document.all.root.children.length; i++) {
		eRef = document.all.root.children[i]; // li
		if (eRef.id == pId) return eRef;
		 
		if (eRef.children.length > 0) {
			eUL = findNextUL(eRef)
			if (eRef.children.length > 0) {
				for(var j = 0; j < eUL.children.length; j++) {
					eRe = eUL.children[j]; //li
					if(eRe.id == pId) return eRe;
					eUL2 = findNextUL(eRe);
					if (eUL2.children.length > 0) {
						for(var k = 0; k < eUL2.children.length; k++) {
							eR = eUL2.children[k]; //li
							if(eR.id == pId) return eR;
						}
					}
				}
			}
		}else {
			if (eRef.children.length > 0) {
				for(var j = 0; j < eRef.children.length; j++) {
					eRe = eRef.children[j]; //li
					if(eRe.id == pId) return eRe;
					if (eRe.children.length > 0) {
						for(var k = 0; k < eRe.children.length; k++) {
							eR = eRe.children[k]; //li
							if(eR.id == pId) return eR;
						}
					}
				}
			}
		}
	}
	return false;

}//findNextId


// a transformer eventuellement en fonction recursive
function replier() {
	var expand='';
	for(var i = 0; i < document.all.root.children.length; i++) {
		eRef = document.all.root.children[i]; // li
		eUL = findNextUL(eRef);
		
		if (eUL.className == 'lexOpen') {
			eUL.className = 'lexClose';
			expand='0';
		} else {
			eUL.className = 'lexOpen';
			expand='1';
		}

		if (eUL.children.length >= 0) {
			for(var j = 0; j < eUL.children.length; j++) {
				eRe = eUL.children[j]; //li
				eUL2 = findNextUL(eRe);
				if (eUL2.className == 'lexOpen') {
					eUL2.className = 'lexClose';
					expand='0';
				} else {
					eUL2.className = 'lexOpen';
					expand='1';
				}
			}
		}
		 
		if (expand == '0') {
			document.all.imgexpand.src='Media/plus.gif';
		} else {
			document.all.imgexpand.src='Media/minus.gif';
		}
	}
}//replier


function findNextUL(pSrc) {
	var eRef = pSrc;
	for(var i = 0; i < eRef.children.length; i++) {
		if("UL" == eRef.children[i].tagName) return eRef.children[i];
	}
	return false;

}//findNextUL

function LexiqueClick_iframe(pID,url) {
	var eSrc = document.all.item(pID); 
	if (eSrc.className == "lexiqueOpenI") {
		eSrc.className = "lexiqueCloseI";
		curLexique = "";
	} else if (eSrc.className == "lexiqueCloseI") {
		if (curLexique != '') document.all(curLexique).className = "lexiqueCloseI";
		eSrc.className = "lexiqueOpenI";
//		if (eSrc.src!=url) eSrc.src=url;		&& Sinon pb rafraichissement
		eSrc.src=url;
		curLexique = pID;
// Pb les éléments ne sont plus sélectionnés
//		if (window.frames(pID).document.location.href.substr(0,6) == 'http:/')
//			window.frames(pID).document.location.reload(false);
	}
} // LexiqueClick_iframe



function LexiqueClick(pID) {
	var eSrc = document.all.item(pID);
	if (eSrc.className == "lexiqueOpen") {
		eSrc.className = "lexiqueClose";
		curLexique = "";
	} else if (eSrc.className == "lexiqueClose") {
		if (curLexique != '') document.all(curLexique).className = "lexiqueClose";
		eSrc.className = "lexiqueOpen";
		curLexique = pID;
	}

	var obj = parent.document.all;
	if (obj) {
		eSrc = obj.item(pID);
		if (eSrc.className == "lexiqueOpenI") {
			eSrc.className = "lexiqueCloseI";
			curLexique = "";
		} else if (eSrc.className == "lexiqueCloseI") {
			if (curLexique != '') document.all(curLexique).className = "lexiqueCloseI";
			eSrc.className = "lexiqueOpenI";
			curLexique = pID;
		}
	}


} // LexiqueClick

function Doublon(pStr, pItem) {
	while ((iPos = pStr.indexOf(pItem + pItem)) != -1)
	pStr = pStr.substring(0,iPos) + pStr.substring(iPos + pItem.length,10000);
	if (pStr.indexOf(sep) == 0) pStr = pStr.substring(sep.length,10000);
	if (pStr.substring(pStr.length - sep.length, 10000) == sep) pStr = pStr.substring(0,pStr.length - sep.length);	
	
	return pStr;
}

function FieldItemAdd(pItem, pField) {
	var oFld = FieldRef(pField);
	if (oFld == null) return;
	var str = new String(oFld.value) ;
	str = Doublon(str + sep + pItem + sep, sep);
	oFld.value = str;
}

function FieldItemRemove(pItem, pField) {
	var oFld = FieldRef(pField);
	
	if (oFld == null) return;
	var str = oFld.value.toString() ;
	
	// on remplace le séparateur !! attention suivant les cas ', ' ou '; ' !!! à revoir
	// en test : boucle plus tard
	str = str.replace(' '+sep,sep).replace(' '+sep,sep).replace(' '+sep,sep).replace(' '+sep,sep);
	str = str.replace(sep+' ',sep).replace(sep+' ',sep).replace(sep+' ',sep).replace(sep+' ',sep);	
	str = str.replace(';',',').replace(';',',').replace(';',',').replace(';',',').replace(';',',');
	str= trim(str);
	pItem = trim(pItem);
	
	if ((iPos = (sep + str + sep).indexOf(sep + pItem + sep))!=-1) {
		str = Doublon(str.substring(0,iPos) + str.substring(iPos + pItem.length,1000),sep);
	}

	oFld.value = str;
	
}

function FieldItemSelect(pItem, pField) {
	var oFld = FieldRef(pField);
	if (oFld == null) return;
	oFld.value = pItem;
}


function droite(pItemLib) {
  var MyPos;
  var Dep;
  var i = 0;
  while (i < pItemLib.length) {
		MyPos = pItemLib.charAt(i);
		i++;
		if ((MyPos == ">") || (MyPos == ";")) {
			Dep = i;
		}
  }
  pItemLib = pItemLib.substring(Dep, pItemLib.length);
  return pItemLib;
}

function trim(pItemLib) {
  var MyPos;
  var Dep;
  var i = 0;

  Dep = pItemLib.substring(pItemLib.length-1, pItemLib.length);
  
  while (Dep==' ') {
	pItemLib=pItemLib.substring(0, pItemLib.length-1);
	Dep = pItemLib.substring(pItemLib.length-1, pItemLib.length);
  }
  return pItemLib;
}


function LexiqueItemAdd(pItemID, pItemLib, pFieldID, pFieldLib, pMultiple, pLibPar) {
	var res;
	pItemLib = droite(pItemLib);
	if (pMultiple == "S")
	{
		FieldItemSelect(pItemID, pFieldID);
		FieldItemSelect(pItemLib, pFieldLib);
	}
	else
	{		
		FieldItemAdd(pItemLib, pFieldLib);
		FieldItemAdd(pItemID, pFieldID);	
	}
	if (document.all.selectedListDiv) {
		strOn = "return LexiqueItemClick('"+pFieldID+"','"+pFieldLib+"','M')"
		strOnc ='OnClick="'+strOn+'"'
		
		selectedListDiv.innerHTML = selectedListDiv.innerHTML +	'<li id="' + pItemID + '" class="lexItemSelection"'+strOnc+' >' + pLibPar + '</li>';
		if (pMultiple == "S") self.close();
		if (pMultiple == "S") LexiqueClick('lex'+pFieldID);
	}
	else
	{
		if (pMultiple == "S") LexiqueClick('lex' + pFieldID);
	}	
}


function LexiqueItemRemove(pItemID, pItemLib, pFieldID, pFieldLib) {
	FieldItemRemove(pItemID, pFieldID);
	FieldItemRemove(pItemLib, pFieldLib);
	if (self.opener != null) {
		if (document.all.selectedListDiv) {
			for(var i=0; i< selectedListDiv.children.length; i++) {
				if (selectedListDiv.children(i).id == pItemID) {
					selectedListDiv.children(i).removeNode(true);
						FieldItemRemove(droite(pItemLib), pFieldLib);
					return;
				} 
			} 
		}
	} 
} 



function LexiqueWinOpen(pCode, pFieldID, pFieldLib, pMultiple,pFiltre,pGroupe,pLangue) {
	// On tente de fermer si la fenêtre est ouverte
	// On n'utilise pas null car Pb sous Mac
	try {
	  wndLexique.close();
	}
	catch(e) {
		// Rien à faire
	}
	finally {
	}

	if (curLexique != '') document.all(curLexique).className = "lexiqueCloseI";
	wndLexique = top.window.open('../Lexique/Lexique.asp?langue='+pLangue+'&source=' + pCode
		+ '&selection=' + document.all(pFieldID).value.replace('&','¤') + '&selectionLib=' + document.all(pFieldLib).value.replace('&','¤') + '&filtre=' + pFiltre +'&fieldID=' + pFieldID
		+ '&fieldLib=' + pFieldLib + '&multiple=' + pMultiple + '&groupe=' + pGroupe,
	 'new', 'scrollbars=no,toolbar=no,resizable=yes,' + SizeCenter(600, 450));
	wndLexique.focus();
	wndLexique.opener = self;		
		// Rien à faire
}



function LexiqueWinOpenRacine(pCode, pFieldID, pFieldLib, pMultiple,pFiltre,pGroupe,pLangue) {
	// On tente de fermer si la fenêtre est ouverte
	// On n'utilise pas null car Pb sous Mac
	try {
	  wndLexique.close();
	}
	catch(e) {
		// Rien à faire
	}
	finally {
		// Rien à faire
	}

	if (curLexique != '') document.all(curLexique).className = "lexiqueCloseI";
	wndLexique = top.window.open('Lexique/Lexique.asp?langue='+pLangue+'&source=' + pCode
		+ '&selection=' + document.all(pFieldID).value.replace('&','¤') + '&selectionLib=' + document.all(pFieldLib).value.replace('&','¤') + '&filtre=' + pFiltre +'&fieldID=' + pFieldID
		+ '&fieldLib=' + pFieldLib + '&multiple=' + pMultiple + '&groupe=' + pGroupe,
	 'new', 'scrollbars=no,toolbar=no,resizable=yes,' + SizeCenter(600, 450));
	wndLexique.focus();
	wndLexique.opener = self;		
}



function LexiqueWinOpenRech(pCode, pFieldID, pFieldLib, pMultiple,pFiltre,pGroupe,pLangue, pRech) {
	// On tente de fermer si la fenêtre est ouverte
	// On n'utilise pas null car Pb sous Mac
	try {
	  wndLexique.close();
	}
	catch(e) {
		// Rien à faire
	}
	finally {
		// Rien à faire
	}

	if (curLexique != '') document.all(curLexique).className = "lexiqueCloseI";
// Il reste le problème du retour de valeur
/*	wndLexique = top.window.showModalDialog('../Lexique/Lexique.asp?langue='+pLangue+'&source=' + pCode
		+ '&selection=' + document.all(pFieldID).value + '&selectionLib=' + document.all(pFieldLib).value + '&filtre=' + pFiltre +'&fieldID=' + pFieldID
		+ '&fieldLib=' + pFieldLib + '&multiple=' + pMultiple + '&groupe=' + pGroupe + '&rech=' + pRech,
	 'new', 'scroll:no;status:no;resizable:yes;' + SizeDialogCenter(600, -1));
*/
	wndLexique = top.window.open('../Lexique/Lexique.asp?langue='+pLangue+'&source=' + pCode
		+ '&selection=' + document.all(pFieldID).value + '&selectionLib=' + document.all(pFieldLib).value + '&filtre=' + pFiltre +'&fieldID=' + pFieldID
		+ '&fieldLib=' + pFieldLib + '&multiple=' + pMultiple + '&groupe=' + pGroupe + '&rech=' + pRech,
	 'new', 'scrollbars=no,toolbar=no,menubar=no,resizable=no,' + SizeCenter(600, 450));
	wndLexique.focus();
	wndLexique.opener = self;
}



function lexique_onmouseover() {
	var eSrc = window.event.srcElement;
	if (eSrc.nodeName == "LI") {
		eSrc.className = eSrc.className + "Over";
	}
}

function lexique_onmouseout() {
	var eSrc = window.event.srcElement;
	if (eSrc.nodeName == "LI") {
		eSrc.className = eSrc.className.substring(0, eSrc.className.length - 4);
	}
}

function new_fiche(lexique,groupe) {
	switch(lexique) {
		case 'ANNU':
			url = '../annuaire/insert_annuaire.asp?type=organisme&action=ajouter&module=1&quoi=2&group_id='+groupe;
			break;
		case 'ANNUO':
			url = '../annuaire/insert_annuaire.asp?type=organisme&action=ajouter&module=1&quoi=2&group_id='+groupe;
			break;			
		case 'ANNUP':
			url = '../annuaire/insert_annuaire.asp?type=personne&action=ajouter&module=1&quoi=2&group_id='+groupe;
			break;		
		case "DOC_TYPE" : 
			url = '../references/insert_table_reference.asp?gr_table=type_doc&gr_group='+groupe+'&nom_table=type_doc';
			break;
		case "ECHE" : 
			url = '../references/insert_table_reference.asp?gr_table=echelle_action&gr_group='+groupe+'&nom_table=echelle_action';
			break;
		case "CT_TYPE" :
			url = '../references/insert_table_reference.asp?gr_table=type_contacts&gr_group='+groupe+'&nom_table=type_contacts';
			break;
		case "ACT_TYPE" :  
			url = '../references/insert_table_reference.asp?gr_table=type_activite&gr_group='+groupe+'&nom_table=type_activite';
			break;
		case "LANG" :  
			url = '../references/insert_table_reference.asp?gr_table=langues&gr_group='+groupe+'&nom_table=langues';
			break;
		case "DOMA" :
			url = '../references/insert_table_reference.asp?gr_table=domaines&gr_group='+groupe+'&nom_table=domaines';
			break;
		case 'ORGA_AUTE':
			url = '../references/insert_table_reference.asp?gr_table=organisme_auteur&gr_group='+groupe+'&nom_table=organisme_auteur';
			break;
		case "BIB_EDIT" :
			url = '../references/insert_table_reference.asp?gr_table=editeur&gr_group='+groupe+'&nom_table=editeur';
			break;
		case '':
			url = '';
			break;
		default :
			url='';
			break;
	}
	top.window.open(url,'newfiche', 'scrollbars=yes,toolbar=yes,resizable=yes,' + SizeCenter(600, 450))
}

