var debug;

window.onload=start;
window.document.onkeydown = catchNavigationKey;

//addToStart(changeTitle);
//addToStart(showMandatory);
//addToStart(linkImgCollapser);
/*addToStart(function(){
	window.document.body.oncontextmenu = catchContextMenu;
});
*/

/*******************************************************************************
*  Cette fonction est utilisée pour lancer plusieurs fonctions, stockées dans  *
*  dans un tableau, sur l'événement onload d'une page                          *
*******************************************************************************/
function start(){
	var ls = window.listStart;
		if(ls){
		for(i=0; i<ls.length; i++){
			fnc = ls[i];
			if(typeof(fnc) == 'function'){
				fnc();
			}
			else{
				eval(fnc);
			}
		}
	}
}

/*******************************************************************************
*  Cette fonction ajoute une fonction dans le tableau des fonctions à lancer   *
*******************************************************************************/
function addToStart(fnc){
  if(!window.listStart) window.listStart = new Array();
  window.listStart.push(fnc)
}

/*******************************************************************************
*  Cette fonction change le titre de la fenêtre par celui de la page courante  *
*  c'est utile quand on utilise des frames ou des iframes                      *
*******************************************************************************/
function changeTitle(){
	//parent.document.title=document.title;
}

/*******************************************************************************
*  Cette fonction bloque le menu contextuel (bouton droit) sur la fen?tre,     *
*  mais pas sur les zones de saisies                                           *
*******************************************************************************/
function catchContextMenu(e){
	if(debug){return true;}//Si on a activé le debug, on ne fait rien
	if(!e){e=window.event;}//récupération event pour ie
	if(e==null){return true;}

	var target;
	if(e.target){target = e.target;}//récupération target w3c
	else if(e.srcElement){target = e.srcElement;}//récupération target ie
	if(target==null){return false;}

	//on permet le contextMenu pour les textareas et les inputs text et password
	var type=target.type;
	if(target.nodeName=="TEXTAREA" ||
	  (target.nodeName=="INPUT" && (type=="text" || type=="password"))){
	  return true;
	}
	return false;
}


/*******************************************************************************
*  Cette fonction bloque les touches servant à la navigation (arrière, avant), *
*  mais pas sur les zones de saisies                                           *
*******************************************************************************/
function catchNavigationKey(e){
	if(debug){return true;}//Si on a activé le debug, on ne fait rien
	if(!e){e=window.event;}//récupération event pour ie
	if(e==null){return true;}

	//blocage touche alt gauche et alt droite (pagination)
	if((e.keyCode==37 || e.keyCode==39) && e.altKey){
		return false;
	}
	//blocage touche f5
	if(e.keyCode==116){
		try{e.keyCode = 505;}//remap de la touche pour ie seulement
		catch(errRemap){}
		return false;//annulation w3c
	}
	//test touche backspace
	if(e.keyCode==8){
		var target;
		if(e.target){target = e.target;}//récupération target w3c
		else if(e.srcElement){target = e.srcElement;}//récupération target ie

		if(target.nodeName==null){return false;}

		var nodeName=target.nodeName;
		var type=target.type;
		//on permet la touche backspace que pour les textareas 
		//et les inputs text et password
		if(target.nodeName=="TEXTAREA" ||
		  (target.nodeName=="INPUT" && (type=="text" || type=="password"))){
		  return true;
		}
		return false;
	}
	return true;
}

/*******************************************************************************
*          FONCTION QUI RENVOI L'INDEX DE L'ONGLET PASSE EN PARAMETRE          *
*                                                                              *
* @param tab : l'onglet                                                        *
*******************************************************************************/
function getSelectedTabIndex(tab){
	var tabs=tab.parentNode;
	var lstTab=tabs.getElementsByTagName("li");

	var i=0;
	while(i<lstTab.length && lstTab[i]!=tab){
		i++;
	}
	return i;
}

/*******************************************************************************
*    FONCTION QUI AFFICHE LE CONTENU CORRESPONDANT A L'ONGLET SELECTIONNEE     *
*                                                                              *
* @param link : Le lien de l'onglet qui est selectionné                        *
*******************************************************************************/
function showTabPanel(link){
	//Test si lien onglet désactivé, on ne fait rien
	if(Element.hasClassName(link, "desactive")){return false;}

	var index=getSelectedTabIndex(link.parentNode);

	//r?cup?ration de la boîte ul : a->li->ul
	var tabs=link.parentNode.parentNode;
	var lstTab=tabs.getElementsByTagName("li");
	//on enleve le style activé sur tout les onglets
	for(var i=0;i<lstTab.length;i++){
		var anchor=lstTab[i].getElementsByTagName("a")[0];
		Element.removeClassName(anchor, "active");
	}
	//On ajoute le style activé sur le lien
	Element.addClassName(link, "active");
	link.blur();

	//récupération de la boîte tabbox : a->li->ul->tabbox
	var tabbox=link.parentNode.parentNode.parentNode;
	//récupération de tout les élément "DIV" (tabPanels) 
	//qui sont des enfant 'direct' de tabbox
	var tabPanels=new Array();
	for(var i=0;i<tabbox.childNodes.length;i++){
		if(tabbox.childNodes[i].tagName=="DIV"){
			tabPanels.push(tabbox.childNodes[i]);
		}
	}
	//on cache tout les tabPanels
	for(var i=0;i<tabPanels.length;i++){
		Element.removeClassName(tabPanels[i], "active");
	}

	//on affiche le tabPanel associé au lien
	if(tabPanels.length>index){
		Element.addClassName(tabPanels[index], "active");
		tabPanels[index].focus();
	}
}

/*******************************************************************************
*  Cross-Browser event registration                                            *
*         FONCTION QUI AJOUTE UN GESTIONNAIRE D'EVENEMENT SUR UN OBJET         *
*                                                                              *
* @param obj : L'objet sur lequel on ajoute le gestionnaire d'?venement        *
* @param eventType : Le type d'évenement à gérer (String)                      *
* @param function2Call : La fonction à appeler quand l'évenement est lancé     *
* @param useCaption : Bouléen qui indique si la propagation doit s'arrêter     *
*                     Ne fonctionne pas sur ie (donc on ne l'utilise pas)      *
*                                                                              *
*******************************************************************************/
function addEvent(obj, eventType, function2Call, useCaption){
	if(obj==null){return false;}

	if(obj.addEventListener){ //mode W3C
		obj.addEventListener(eventType, function2Call, useCaption);
		return true;
	}
	else{
		if(obj.attachEvent){ //mode ie
			var retVal = obj.attachEvent("on"+eventType, function2Call);
			return retVal;
		}
		else{return false;}
	}
}
/*******************************************************************************
*  Cette fonction gére l'événement click sur les lignees d'un tableau et       *
*  appelle la fonction passé en paramêtre avec la ligne.                       *
*  tableId corespond à l'id du tableau                                         *
*  function2Call correspond à la fonction à appeler sur le click de la ligne   *
*******************************************************************************/
function handleClickOnTableRow(tableId, function2Call){
	var tblLst=document.getElementById(tableId);
	var lstTBodies=tblLst.getElementsByTagName("tbody");
	if(lstTBodies!=null && lstTBodies.length==1){
		var rows=lstTBodies[0].getElementsByTagName("tr");
		for(var i=0;i<rows.length;i++){
			rows[i].onclick=function(){function2Call(this);}
		}
	}
}
/*******************************************************************************
*  Cette fonction alimente une zone de destination à partir d'une autre zone   *
*  lorsque celle-ci perds le focus si la zone de destination n'est pas vide    *
*  Si le paramétres forceErase est à true, la zone de destination sera changée *
*  même si il y a du contenu dedans.                                           *
*******************************************************************************/
function fillObjectOnBlur(sourceObject, destinationObject, forceErase){
	if(sourceObject==null || destinationObject==null){return false;}
	if(forceErase==null){forceErase=false;}
	addEvent(sourceObject, "blur", 
			function(){
				var destValue;
				var destNodeName=destinationObject.nodeName;
				if(destNodeName=="INPUT" || destNodeName=="TEXTAREA" || destNodeName=="SELECT"){
					destValue=destinationObject.value;
				}
				else{
					destValue=sourceObject.innerHTML;
				}
				if(destValue=="" || forceErase){
					var srcValue;
					var srcNodeName=sourceObject.nodeName;
					if(srcNodeName=="INPUT" || srcNodeName=="TEXTAREA" || srcNodeName=="SELECT"){
						srcValue=sourceObject.value;
					}
					else{
						srcValue=sourceObject.innerHTML;
					}
					var tmpValue=srcValue;
					var destMaxLength=destinationObject.maxLength;
					if(destMaxLength!=null && !isNaN(destMaxLength)){
						tmpValue=tmpValue.substring(0,destMaxLength);
					}
					if(destNodeName=="INPUT" || destNodeName=="TEXTAREA" || destNodeName=="SELECT"){
						destinationObject.value=tmpValue;
					}
					else{
						sourceObject.innerHTML=tmpValue;
					}
				}
			},
			false);
}

/*******************************************************************************
*  Cette fonction renvoi un objet "Option" vide                                *
*  @return L'option vide créée                                                 *
*******************************************************************************/
function getEmptyOption(){
	var tmpOption=document.createElement("option");
	tmpOption.value="";
	tmpOption.text=" ";
	return tmpOption;
}

/*******************************************************************************
*             FONCTION DE REMPLISSAGE D'UNE LISTE DEROULANTE A PARTIR          *
*             D'UN DOCUMENT XML                                                *
*                                                                              *
* @param selectboxId : L'id de la liste déroulante (String)                    *
* @param xmlDocument : Le document XML                                         *
* @param rootNode : Le nom de l'élément racine                                 *
*                   (dans lequel on cherche les données)                       *
* @param valueNode : Le nom de l'élement où se trouve la donnée                *
*                    qui sert de valeur à l'option                             *
* @param textNode : Le nom de l'élement où se trouve la donnée                 *
*                    qui sert de texte à l'option                              *
* @param needEmptyOption : Un booléen qui indique si on met une option à vide  *
*******************************************************************************/
/*function fillSelectBox(selectboxId, xmlDocument, rootNode, valueNode, textNode, needEmptyOption){
	//Récupération de la liste déroulante, sauvegarde de la valeur en cours 
	//remise à blanc de la liste
	var selectBox=document.getElementById(selectboxId);
	var bkSelectedValue=selectBox.value;
	selectBox.options.length=0;

	var els=xmlDocument.getElementsByTagName(rootNode);
	//Si aucun élémeent à afficher : on essaie de récupérer l'élément noinfo
	if(els.length==0){
		var tmpOption=getEmptyOption();
		var noInfos=xmlDocument.getElementsByTagName("noinfo");
		if(noInfos!=null && noInfos.length>0){
			tmpOption.text=noInfos[0].firstChild.data;
		}
		selectBox.options[selectBox.length]=tmpOption;
		return false;
	}

	//Ajout d'une option à vide si demandée
	if(needEmptyOption==null || needEmptyOption){
		selectBox.options[selectBox.length]=getEmptyOption();
	}

	for(var i=0;i<els.length;i++){
		var tmpOption=document.createElement("option");
		tmpOption.value=getSimpleNodeContent(els[i], valueNode);
		tmpOption.text=getSimpleNodeContent(els[i], textNode);
		selectBox.options[selectBox.length]=tmpOption;
	}
	//on remet la valeur sauvegardée.
	selectBox.value=bkSelectedValue;
}

/*******************************************************************************
*             FONCTION DE RECUPERATION DU CONTENU D'UN ELEMENT XML             *
*                                                                              *
* @param el : L'élément sur lequel on veut récupérer un contenu                *
* @param tagName : Le nom de l'élément fils que l'on veut récupérer            *
*                  (Si passé en paramêtre)                                     *
* @return : Le premier noeud fils de l'élément                                 *
*******************************************************************************/
	function getSimpleNodeContent(el, tagName){
		var args=getSimpleNodeContent.arguments;
		var tmpChild;
		if(args.length==2){
			var lstTags=el.getElementsByTagName(tagName);
			if(lstTags.length==0 || lstTags.item(0)==null){return null;}
			tmpChild=lstTags.item(0).firstChild;
		}
		else{
			tmpChild=el.firstChild;
		}
		if(tmpChild==null){return null;}
		return tmpChild.data;
	}

/*******************************************************************************
*       FONCTION DE RECUPERATION DU CONTENU EN TEXTE D'UN ELEMENT XML          *
*                                                                              *
* @param el : L'élément sur lequel on veut récupérer un contenu                *
* @param tagName : Le nom de l'élément fils que l'on veut récupérer            *
*                  (Si passé en paramêtre)                                     *
* @return : Le texte contenu dans l'élément ou blanc                           *
*******************************************************************************/
	function getTextNodeContent(el, tagName){
		var args=getTextNodeContent.arguments;
		var tmpText;

		if(args.length==2){
			tmpText=getSimpleNodeContent(el, tagName);
		}
		else{
			tmpText=getSimpleNodeContent(el);
		}
		return tmpText!=null?tmpText:"";
	}
/*}*/

/*******************************************************************************
*             FONCTION DE RECUPERATION DE LA SOURCE D'UN EVENEMENT             *
*                                                                              *
* @param e : L'objet event depuis lequel on va récupérer la source             *
* @return : L'objet source de l'évenement ou null                              *
*                                                                              *
*******************************************************************************/
function getEventTarget(e){
	if(!e){var e = window.event;}
	if(e==null){return false;}
	var targ=null;
	if(e.target){
		targ = e.target;//Récupération de la source de l'événement (mode W3C)
	}
	else{
		if (e.srcElement){
			targ = e.srcElement;//Récupération de la source de l'événement (mode IE)
		}
	}
	return targ==null?false:targ;
}

/*******************************************************************************
*          FONCTION D'ARRET D'EVENEMENT COMPATIBLE IE ET AUTRE NAVIGATEUR      *
*                                                                              *
* @param e : L'objet event a annuler                                           *
*                                                                              *
*******************************************************************************/
function stopPropagation(e){
	if(!e){var e = window.event;}
	if(e==null){return false;}
	//Arrêt de la propagation de l'événement (mode W3C)
	try{e.stopPropagation();}
	catch(err){
		//Arrêt de la propagation de l'événement (mode IE)
		try{window.event.cancelBubble = true;}
		catch(err2){}
	}
}

/*******************************************************************************
*     AJOUTE UNE LIGNE A UN TABLEAU POUR SIGNIFIER QU'IL N'Y A PAS D'INFOS     *
*                                                                              *
* @param table : L'objet tableau dans lequel on met ma ligne                   *
* @param colspan : le colspan pour la ligne                                    *
* @param msg : le texte à afficher dans la cellule                             *
*                                                                              *
*******************************************************************************/
function addTableRowNoInfo(table, colspan, msg){
	if(table==null){return false;}
	if(typeof colspan !='number'){return false;}
	var lstTbodies=table.getElementsByTagName("tbody");
	if(lstTbodies==null || lstTbodies.length==0){return false;}
	var cell=document.createElement("td");
	cell.colSpan=colspan;
	cell.innerHTML=msg;
	var line=document.createElement("tr");
	line.className="nodata";
	line.appendChild(cell);
	lstTbodies[0].appendChild(line);
}

/*******************************************************************************
*        FONCTION DE REINDEXATION DES COULEURS DES LIGNES D'UN TABLEAU         *
*        (SEULS LES LIGNES DES TBODYS SONT PRISES EN COMPTE)                   *
*                                                                              *
* @param table : L'objet tableau à réindexer                                   *
* @param className : Si passé en paramètre le préfixe de la classe             *
*                    Si les classes à alterner sont "toto0" et "toto1",        *
*                    on passe en paramètre "toto"                              *
*                    Par défaut le nom de la classe est "list"                 *
*                                                                              *
*******************************************************************************/
function updateTableRowClassName(table, className){
	if(table==null){return false;}
	if(className==null){className="list";}
	var lstTbodies=table.getElementsByTagName("tbody");
	if(lstTbodies==null || lstTbodies.length==0){return false;}
	var bkColor=0;
	for(var i=0;i<lstTbodies.length;i++){
		var lstRow=lstTbodies[i].getElementsByTagName("tr");
		for(var j=0;j<lstRow.length;j++){
			if(j==0){
				lstRow[j].className=className+bkColor;
			}
			else{
				lstRow[j].className=className+(j % 2);
			}
			bkColor=((j+1) % 2);
		}
	}
}

/*******************************************************************************
*                 FONCTION DE CREATION D'UN OBJET INPUT TEXT                   *
*                                                                              *
* @param id : L'id de la textBox                                               *
* @param name : Le nom de la textBox                                           *
* @param className : La classe css de la textBox                               *
* @param maxlength : La longueur maximum de la textBox                         *
* @return : La textbox créée                                                   *
*******************************************************************************/
function getNewTextBox(id, name, className, maxLength){
	var txtTmp=document.createElement("input");
	txtTmp.type="text";
	if(id!=null){txtTmp.id=id;}
	if(name!=null){txtTmp.name=name;}
	if(className!=null){txtTmp.className=className;}
	if(maxLength!=null){txtTmp.maxLength=maxLength;}
	return txtTmp;
}
/*******************************************************************************
*                 FONCTION DE CREATION D'UN OBJET IMAGE                        *
*                                                                              *
* @param src : Le chemin de l'image sur le serveur (String)                    *
* @param title : Le texte qui sera affichée dans l'infobulle (String)          *
* @param alt : Le texte qui sera affichée si l'image ne s'affiche pas (String) *
* @param function2Call : La fonction à appeler lors du click sur l'image       *
*                        (function). Si diff?rent de null, le cursor est de    *
*                        type "pointer".                                       *
* @return : L'image créée                                                      *
*******************************************************************************/
function getNewImage(src, title, alt, function2Call){
	//création de l'image
	var img=document.createElement("img");
	img.src=src;
	if(alt!=null){img.alt=alt;}
	if(title!=null){img.title=title;}
	if(typeof function2Call == "function"){
		img.onclick=function(){function2Call(this);};
		img.style.cursor="pointer";
	}
	return img;
}
/*******************************************************************************
*             FONCTION DE RECUPERATION D'UN OBJET A PARTIR DE SON NOM          *
*                                                                              *
* @param lstInputs : Un tableau d'objets inputs (Array)                        *
* @param name2Find : Le nom (name) à chercher pour les objets (String)         *
* @param findAll : Facultatif, si à true, on cherchera tout les objets ayant   *
*                  le nom passé en paramêtre, le premier sinon. (Boolean)      *
* @return : L'objet input trouvé, ou un tableau d'objets si findAll est à true *
*******************************************************************************/
function getInputByName(lstInputs, name2Find, findAll){
	if(lstInputs==null){return null;}
	if(!findAll && lstInputs[name2Find]!=null){return lstInputs[name2Find];}

	var lstInputs2Return=new Array();
	var i=0;
	while(i<lstInputs.length){
		if(lstInputs[i].name==name2Find){
			if(!findAll){
				return lstInputs[i];
			}
			else{
				lstInputs2Return.push(lstInputs[i]);
			}
		}
		i++;
	}
	return !findAll?null:lstInputs2Return;
}
/*******************************************************************************
*              FONCTION DE RECUPERATION D'UNE LIGNE D'UN TABLEAU               *
*                       A PARTIR D'UNE CLE DANS UN CHAMP                       *
*                                                                              *
* @param table : L'objet table contenant la ligne à retrouver (Object)         *
* @param rowkey : La valeur de clé à retrouver (String)                        *
* @param inputName : Facultatif, si renseigné, on regardera dans ce champ      *
*                  de la ligne pour comparer la clé (String)                   *
* @return : L'objet ligne correspondant à la clé, false si non trouvé          *
*******************************************************************************/
function getTableRowByKey(table, rowkey, inputName){
	var lstTbodies=table.getElementsByTagName("tbody");
	var lstRows=lstTbodies[0].getElementsByTagName("tr");
	var i=0;
	var notFound=true;
	var tmpInputName=(inputName!=null && inputName!="")?inputName:"xhrowkey";
	//recherche de la ligne
	while(notFound && i<lstRows.length){
		var lstInputs=lstRows[i].getElementsByTagName("input");
		var tmpInput=getInputByName(lstInputs, tmpInputName);
		if(tmpInput!=null){
			if(tmpInput.value==rowkey){
				return lstRows[i];
			}
		}
		i++;
	}
	return false;
}

function show_calendar(field, date){
	calendar_field=field;
	if(date!=null && date != ""){
		calendar_month=date.substring(3,5);
		calendar_year=date.substring(6);
	}
	else{
		calendar_month=null;
		calendar_year=null;
	}
	var url="calendar.php";
	var name="";
	var height=210;
	var width=250;
	var top=(screen.height-height)/2;
	var left=(screen.width-width)/2;
	var optionalArgs="top="+top+", left="+left+
	                 ", height="+height+", width="+width+
					 ", dependent=yes";
	window.open(url, name, optionalArgs);
}

function getInfo4Cal(){
	return new Array(calendar_month, calendar_year, 2, true, calendar_field);
}

function openDatePicker(e){
	var input=getEventTarget(e);
	stopPropagation(e);
	var dateField=document.getElementById(input.getAttribute("for"));
	show_calendar(dateField, dateField.value);
}


function closeMe(){
	var mainWin=window.parent;
	var popup=mainWin.document.getElementById("sft_popup");
	popup.popup.hide();
	popup.parentNode.removeChild(popup);
}

function showMandatory(){
	if(window.addEventListener){ //mode W3C
		//obj.addEventListener(eventType, function2Call, useCaption);
		return true;
	}
	else{
		if(window.attachEvent){ //mode ie
			var body=document.getElementsByTagName("body")[0];
			var mandatories=document.getElementsByClassName("mandatory", body);
			for(var i=0;i<mandatories.length;i++){
				var node=document.createElement("span");
				node.className="pseudoBeforeMandatory";
				node.innerHTML="* ";
				mandatories[i].insertBefore(node, mandatories[i].firstChild);
			}
		}
	}
}

function makeBox(node){
	var popupBox=document.createElement("div");
	popupBox.className="popup";
	var header=popupBox.appendChild(document.createElement("div"));
	header.className="header";
	var imgHeader=header.appendChild(document.createElement("img"));
	imgHeader.src="styles/default/images/menu_header1.gif";
	header.appendChild(document.createElement("div"));
	var body=popupBox.appendChild(document.createElement("div"));
	body.className="body";
	if(node!=null){body.appendChild(node);}
	var footer=popupBox.appendChild(document.createElement("div"));
	footer.className="footer";
	var imgFooter=footer.appendChild(document.createElement("img"));
	imgFooter.src="styles/default/images/footer.gif";
	return popupBox;
}

function makeIframeBox(pagePath){
	var iframe=document.createElement("iframe");
	iframe.src=pagePath;
	iframe.frameBorder="0";
	return makeBox(iframe);
}

function checkNumber(e){
	//specialKeys = 8:backspace, 9:tab, 13:enter, 35:end, 36:home, 
	//				37:left arrow, 39:right arrow, 46:delete
	var specialKeys=[8,9,13,35,36,37,39,46];
	if(!e)e=window.event;
	if( specialKeys.indexOf(e.keyCode)!=-1 ||
		(e.keyCode>=48 && e.keyCode<=57 && e.shiftKey) || 
		(e.keyCode>=96 && e.keyCode<=105)){
			return true;
	}
	stopPropagation(e);
	return false;
}

function getNewImageInput(id, name, src, alt, func2Call){
	var inputImage=document.createElement("input");
	if(id!=null){
		inputImage.id=id;
	}
	if(name!=null){
		inputImage.name=name;
	}
	inputImage.type="image";
	inputImage.src=src;
	inputImage.alt=alt;
	if(func2Call!=null){
		inputImage.onclick=func2Call;
	}
	return inputImage;
}

function replaceHTMLMarkup(value){
	var searchArray=new Array("&lt;", "&gt;", "&amp;");
	var replaceArray=new Array("<", ">", "&");
	var tmpValue=value;

	for(var i=0;i<searchArray.length;i++){
		re=new RegExp(searchArray[i], "g");
		tmpValue=tmpValue.replace(re, replaceArray[i]);
	}
	return tmpValue;
}

function linkImgCollapser(){
	var infosCollapsers=Element.getElementsByClassName(document, "infoCollapser");
	for(var i=0;i<infosCollapsers.length;i++){
		infosCollapsers[i].onclick=collapseInformations;
	}
}

function collapseInformations(e){
	var img=getEventTarget(e);
	stopPropagation(e);
	var fieldset=img.parentNode.parentNode;
	fieldset.collapse=!fieldset.collapse;
	var displayValue=fieldset.collapse?"none":"";
	img.src=fieldset.collapse?"styles/default/images/plus.gif":"styles/default/images/moins.gif";
	var nodes=fieldset.childNodes;
	for (var i = 0; i < nodes.length; i++){
		var nodeName=nodes[i].nodeName;
		if(nodes[i].nodeName!="LEGEND" && nodes[i].nodeName!="#text"){
			nodes[i].style["display"]=displayValue;
		}
	}
}

