var DcmTreeViewName = "dcmTreeView";

var DCM_ROOT_ID   		= "ROOT";
var DCM_ROOT_LABEL = sysGetMessage("dcm.tree.root");



//Les types de documents
DOCUMENT_DOSSIER_PHOTO = "Document-DossierPhoto";
DOCUMENT_PHOTO = "Document-Photo";
DOCUMENT_DOSSIER = "Document-Dossier";
DOSSIER_DORIS = "(documentType)"


var CREATE_BASKET_ELEMENT = "CREATE_BASKET_ELEMENT";
var DELETE_BASKET_ELEMENT = "DELETE_BASKET_ELEMENT";
var MOVE_UP_BASKET_ELEMENT = "moveUp";
var MOVE_DOWN_BASKET_ELEMENT = "moveDown";

var DcmIcons =
{
   DOSSIER_PHOTO 		: "folderphoto.png",
   DOSSIER_PHOTO_OPEN 	: "openfolderphoto.png",
   DOSSIER		 		: "foldericon.png",
   DOSSIER_OPEN		 	: "openfoldericon.png",
   PHOTO		 		: "photo.png",
   FILE					: "file.png"
}; 

var DcmAction =
{
   GET_DCM_CHILDREN	          : "getChildren",
   GET_BASKET_ELEMENTS        : "getBasketElementsByIds",
   CHECK_MULTI_LEVEL          : "checkMultiLevel",
   CHECK_MOVE_FOR_MULTI_LEVEL :"checkMoveForMultiLevel"
}; 

function Dcm_getTreeView()
{
   return TreeView_getCacheInstance(DcmTreeViewName);
}


function initAllDcmFile()
{
    var dcmCmdFrame = open("", "dcm_cmd"); 
    dcmCmdFrame.allDcmFile = new Array();
}


// -----------------------------------------------------------------------------
// Objet LocationTreeHandler
// Doit implémenter les méthodes :
// TreeViewItem [] getChildren(parentId);
// -----------------------------------------------------------------------------
function DcmTreeHandler(dataActionUrl)
{
   if ( dataActionUrl == null )
      dataActionUrl = sysGetAppRoot() + "/servlet/DcmManager";

   this.action = dataActionUrl + "?";
   setPhotoFolderExist(false);
}


DcmTreeHandler.prototype.moveItem = function(item, newParentItem)
{
   return item;
}

DcmTreeHandler.prototype.checkMultiLevel = function()
{
   var action = this.action + "action=" + DcmAction.CHECK_MULTI_LEVEL;
   var xmlRes = XMLUtil_GetContent(action);
   if (xmlRes == "TRUE")
      return true;
   else
      return false;   

}

DcmTreeHandler.prototype.checkMoveForMultiLevel = function(itemId, moveType)
{
   var action = this.action + "action=" + DcmAction.CHECK_MOVE_FOR_MULTI_LEVEL;
   action = action + "&basketId=" + itemId;
   action =  action + "&moveType=" + moveType;
   
   var xmlRes = XMLUtil_GetContent(action);
   if (xmlRes == "TRUE")
      return true;
   else
      return false;   
}


// Cette fonction charge l'arbre entière
DcmTreeHandler.prototype.loadTree = function (TV)
{
   //TV.clearAll();
   // Crée la racine
   var data = new DcmElement( "DCM_ROOT_ID", null, DOCUMENT_DOSSIER, null, null, null, null, null, null, null);
   var rootItem = TV.addItem(null, DCM_ROOT_ID, DCM_ROOT_LABEL, true, "", data);

   // Charge les elements et tous les enfants
   var dcmTreeItems = this.getChildren(DCM_ROOT_ID);
   if ( dcmTreeItems )
   {
      for (var i=0; i<dcmTreeItems.length; i++)
      {
         var item = dcmTreeItems[i];
         var parentId = item.data.getParentId();
         
         if (parentId != null && parentId != "") //chargement de l'item sous un parent précis
         	TV.addItem(item.data.getParentId(), item.id, item.name, item.isFolder, 1, item.data);
         else //chargement de l'item directement sous la racine
         	TV.addItem(DCM_ROOT_ID, item.id, item.name, item.isFolder, 0, item.data);
         
         if(item.id==sysGetAttribute(DCM_LAST_SELECTED_MENU_ITEM_KEY)) 
         {
         	TV.setSelected(item);
         }
         	
      }
   }  
            	  //	TV.setSelectedItem(sysGetAttribute(DCM_LAST_SELECTED_MENU_ITEM_KEY));
         
}

// Appelle l'action avec les paramétres action=getChildren & item=parentId
// Renvoie un tableau de TreeViewItem ou null
DcmTreeHandler.prototype.getChildren = function (parentId)
{
	var action = this.action + "action=" + DcmAction.GET_DCM_CHILDREN;
	
	if (parentId == null)
	   action = action + "&parentId=" + DCM_ROOT_ID;
    else
    	action =  action + "&parentId=" + parentId;
   
   var xmlDoc = XMLUtil_LoadXML(action);
   if ( xmlDoc == null  )
   {
      // Message d'erreur géré au niveau de fct XMLUtil_LoadXML()
      return null;
   }
   var errMsg = XMLUtil_IsError(xmlDoc);
   if ( errMsg )
   {
      alert(errMsg);
      return null;
   }
   var ret = this._xmlDocToTreeViewItems(xmlDoc);
   return ret;
}

// Récupération d'élements de la corbeille
DcmTreeHandler.prototype.getBasketElementsById = function (basketIds)
{
   var action = this.action + "action=" + DcmAction.GET_BASKET_ELEMENTS;	
   action = action + "&basketIds=" + basketIds;   
   var xmlDoc = XMLUtil_LoadXML(action);
   if ( xmlDoc == null  )
   {
      // Message d'erreur géré au niveau de fct XMLUtil_LoadXML()
      return null;
   }
   var errMsg = XMLUtil_IsError(xmlDoc);
   if ( errMsg )
   {
      alert(errMsg);
      return null;
   }
   var ret = this._xmlDocToTreeViewItems(xmlDoc);

   return ret;
}

// Lire le document xml renvoyé par le serveur et crée les TreeViewItem correspondants
DcmTreeHandler.prototype._xmlDocToTreeViewItems = function (xmlDoc)
{
   var ret = null;
   var elements = xmlDoc.getElementsByTagName("ELEMENT");
   if ( (elements != null) && (elements.length > 0) )
   {
      ret = new Array(elements.length);
      for (var i=0; i< elements.length; i++)
      {
         var ele = elements[i];
         var eleId = ele.getAttribute("id");
         var name = ele.getAttribute("label");
         var type = ele.getAttribute("docType");
         
         var isFolder = (type.substring(0, 16) == DOCUMENT_DOSSIER);
         var level = ele.getAttribute("level");
         
         var description = ele.getAttribute("description");
         var fileName = ele.getAttribute("fileName");
         var actionUrl = ele.getAttribute("actionUrl");
         var parentId = ele.getAttribute("parentId");
         var accessibility = ele.getAttribute("accessibility");
         var prevId = ele.getAttribute("prevId");
         var nextId = ele.getAttribute("nextId");
         var rankFolder = ele.getAttribute("rankFolder");
         var multiLevel = ele.getAttribute("multiLevel");
         
         if(type==DOCUMENT_DOSSIER_PHOTO)
         {
            setPhotoFolderExist(true);
         }
         
         var tv = sysGetAttribute(DcmTreeViewName + ".TreeView");        
         //var data = new DcmElement(eleId, parentId, type, actionUrl, description, accessibility, prevId, nextId, rankFolder, multiLevel);
         //var treeItem = new TreeViewItem( eleId, name, isFolder, type, data);
         var data = tv.actionHandler.getDcmElement(eleId, parentId, type, actionUrl, description, accessibility, prevId, nextId, rankFolder, multiLevel);
         var treeItem = tv.actionHandler.getTreeViewItem( eleId, name, isFolder, type, data);
         ret[i] = treeItem;
         // CSI 22022007 Fonctions originales
         // alert("set setDcmFileProperties for " + eleId + " " + name + " " + description);
         setDcmFileProperties(eleId, type, name,description, accessibility);
         // CSI TODO Ajout des infos confidentialité
      }
   }
   return ret;
}

DcmTreeHandler.prototype.onItemSelected = function (item)      
{
       var ele = document.getElementById(item.id);
   	   ele.setAttribute("documenttype", item.data.getType());
	   DcmTreeMenuSetLastSelectedItemElement(ele);
	   if(item.id!=DCM_ROOT_ID)
	   {
	      var eleParent = document.getElementById(item.parent.id);
  	      DcmTreeMenuSetParentSelectedItemElement(eleParent);
	      eleParent.setAttribute("documenttype", item.parent.data.getType());
	   }
	   if (item.isFolder == false) 
	   {//si l'élément n'est un dossier ouvrir l'action correspondante
	      eval(item.data.getActionUrl());   
       }  
       // csi 22022007 Fonctions originales
       // csi TODO 22022007 Gestion de la confidentialité
       RefreshFrameConf(item.id,'');
}

/**
 * Si suppression du dossier photo, mise à jour de isPhotoFolderExist
 */
DcmTreeHandler.prototype.deleteItem = function (item)      
{
   if(item.type==DOCUMENT_DOSSIER_PHOTO)
   {
      setPhotoFolderExist(false);
   }
   return true;
}

// csi 220307 Pour que les objets js soient construits soient toujours valides (IE)
DcmTreeHandler.prototype.getDcmFile = function (basketId, fileType, fileLabel, fileDescription, accessibility)
{
   var newDcmFile = new DcmFile(basketId);           
   newDcmFile.setFileType(fileType);
   newDcmFile.setFileLabel(fileLabel);
   newDcmFile.setFileDescription(fileDescription);            
   newDcmFile.setAccessibility(accessibility);
   return newDcmFile;
}

// csi 220307 Pour que les objets js soient construits soient toujours valides (IE)
DcmTreeHandler.prototype.getDcmFileForConf = function (basketId, fieldName, fieldValue)
{
   var newDcmFile = new DcmFile(basketId);           
   newDcmFile.setConf(fieldName,fieldValue);
   return newDcmFile;
}


// csi 220307 Pour que les objets js soient construits soient toujours valides (IE)
DcmTreeHandler.prototype.getDcmElement = function (eleId, parentId, type, actionUrl, description, accessibility, prevId, nextId, rankFolder, multiLevel)
{
   var data = new DcmElement(eleId, parentId, type, actionUrl, description, accessibility, prevId, nextId, rankFolder, multiLevel);
   return data;
}

// csi 220307 Pour que les objets js soient construits soient toujours valides (IE)
DcmTreeHandler.prototype.getTreeViewItem = function (eleId, name, isFolder, type, data)
{
   var treeItem = new TreeViewItem( eleId, name, isFolder, type, data);
   return treeItem;
}

         
         







// -----------------------------------------------------------------------------
// Objet DmcElement contenant 
// 	1- l'identifiant de l'élément
//	2- L'identifiant du parent s'il existe
//	3- L'icone de l'élément
//  4- L'action à appelé lorsqu'on clique sur l'item
// -----------------------------------------------------------------------------

function DcmElement(id, parentId, type, actionUrl, label, accessibility, prevId, nextId, rankFolder, multiLevel)
{
   this.id = id;
   this.label = label;
   this.parentId = parentId;
   this.actionUrl = actionUrl;
   this.type = type;
   this.accessibility = accessibility;
   this.prevId =prevId;
   this.nextId = nextId;
   this.rankFolder = rankFolder;
   this.multiLevel = multiLevel;
   this.DCM_ROOT_ICON = "icons/css/flora2/webtreedcm/";
   if (type == DOCUMENT_DOSSIER_PHOTO)
   {
   		this.icon = DcmIcons.DOSSIER_PHOTO;
   		this.iconOpen = DcmIcons.DOSSIER_PHOTO_OPEN;
   }
   else if (type == DOCUMENT_DOSSIER || type == DOSSIER_DORIS)
   {
   		this.icon = DcmIcons.DOSSIER;
   		this.iconOpen = DcmIcons.DOSSIER_OPEN;
   }
   else if (type == DOCUMENT_PHOTO)
   {
   		this.icon = DcmIcons.PHOTO;
   		this.iconOpen = DcmIcons.PHOTO;
   }
   else
   {
   		this.icon = DcmIcons.FILE;
   		this.iconOpen = DcmIcons.FILE;
   }
   return this;
}

DcmElement.prototype.setViewTreeItem = function(viewTreeItem)
{
   this.viewTreeItem = viewTreeItem;
}

// Renvoie la description de l'élément
DcmElement.prototype.getLabel = function()
{   
   return this.label;
}

// Renvoie l'icone de l'élément
DcmElement.prototype.getIcon = function()
{   
   return this.DCM_ROOT_ICON+this.icon;
}

// Renvoie l'icone de l'élément
DcmElement.prototype.getOpenedIcon = function()
{   
   return this.DCM_ROOT_ICON+this.iconOpen;
}

// Renvoie l'identifiant du parent de l'élément
DcmElement.prototype.getParentId = function()
{   
   return this.parentId;
}

// Renvoie l'action correspondante à cet item
DcmElement.prototype.getActionUrl = function()
{   
   return this.actionUrl;
}

// Renvoie l'action correspondante à cet item
DcmElement.prototype.getType = function()
{   
   return this.type;
}

// Renvoie l'id de l'item précédent
DcmElement.prototype.getPrevId = function()
{   
   return this.prevId;
}


// Renvoie l'id de l'item suivant
DcmElement.prototype.getNextId = function()
{   
   return this.nextId;
}



/*
* Variable permettant de mémoriser l'id de l'élément 
situé juste au-dessus et en-dessous de l'élément sélectionné
*/
var EZ_PREV_SELECTED_MENU_ITEM_KEY = "DcmPrevSelectedMenuItem";
var EZ_NEXT_SELECTED_MENU_ITEM_KEY = "DcmNextSelectedMenuItem";
var DCM_PARENT_SELECTED_MENU_ITEM_KEY = "DcmParentSelectedMenuItem";
var DCM_LAST_SELECTED_MENU_ITEM_KEY = "DcmLastSelectedMenuItem";
var EZ_DCM_CONF_OPEN = "ezDcmConfOpen";
var MULTI_VALUE_SEP = "\037";

/*
* Déclaration de l'objet DcmDefaultConf
*/
function DcmDefaultConf(basketId)

{
   this.confFields = new Array();
   this.objectLoad = false;
   return this;
}

// Positionnement de la valeur d'un champ de la confidentialité
DcmDefaultConf.prototype.setConf = function (fieldConfName, fieldConfValue)
{
   this.confFields[fieldConfName] = (new String(fieldConfValue)).toString();
}

/*
* Déclaration de l'objet DcmFile
*/
function DcmFile(basketId)
{
   this.confFields = new Array();
   this.basketId = basketId;      
   return this;
}

// Positionnement de la valeur d'un champ de la confidentialité
DcmFile.prototype.setConf = function (fieldConfName, fieldConfValue)
{
   this.confFields[fieldConfName] = (new String(fieldConfValue)).toString();
}

// Positionnement du type du document
DcmFile.prototype.setFileType = function (fileType)
{
    this.fileType = fileType;
}

// Positionnement du label du document
DcmFile.prototype.setFileLabel = function (fileLabel)
{
    this.fileLabel = fileLabel;
}

// Positionnement de la description du document
DcmFile.prototype.setFileDescription = function (fileDescription)
{
    this.fileDescription = fileDescription;
}

// Positionnement de la conf du document
DcmFile.prototype.setAccessibility = function (accessibility)
{
    this.accessibility = accessibility;
}

//Récupération de l'élément sélectionné dans le menu
function DcmTreeMenuGetLastSelectedItemElement()
{
   var id = sysGetAttribute(DCM_LAST_SELECTED_MENU_ITEM_KEY);
   if ( id != null )
   {
      dcmtree_frame = open("","dcm_tree");
      if ( dcmtree_frame == null )
      {
         alert("La frame dcm_tree est introuvable");
         return null;
      }    
      return dcmtree_frame.document.getElementById(id);
   }
   return null;
}

function DcmTreeMenuSetLastSelectedItemElement(elt)
{
   sysSetAttribute(DCM_LAST_SELECTED_MENU_ITEM_KEY, elt.id);
}

function DcmTreeMenuGetParentSelectedItemElement()
{
	 var id = sysGetAttribute(DCM_PARENT_SELECTED_MENU_ITEM_KEY);
	 
   
   if ( id != null )
   {
      dcmtree_frame = open("","dcm_tree");
      if ( dcmtree_frame == null )
      {
         alert("La frame dcm_tree est introuvable");
         return null;
      }    
      return dcmtree_frame.document.getElementById(id);
   }
   return null;
}

/**
 * @return treeViewItem ou null
 */
function DcmGetTreeItemSelected()
{
   var tv = sysGetAttribute(DcmTreeViewName + ".TreeView");
   if(tv!=null)
      return tv.getSelectedItem();
   else
      return null;
}

function DcmTreeMenuSetParentSelectedItemElement(elt)
{
   sysSetAttribute(DCM_PARENT_SELECTED_MENU_ITEM_KEY, elt.id);
}

/*Récupération de l'élément suivant ou précédent l'élément 
sélectionné dans le menu*/
function DcmTreeMenuGetNextOrPrevSelectedItemElement(key)
{
   var id = sysGetAttribute(key);
   if ( id != null )
   {
      dcmtree_frame = open("","dcm_tree");
      if ( dcmtree_frame == null )
      {
         alert("La frame dcm_tree est introuvable");
         return null;
      }      
      return dcmtree_frame.document.getElementById(id);
   }
   return null;
}

//définit ou non l'existance d'un dossier photo
function setPhotoFolderExist(value)
{
    var dcmCmdFrame = open("", "dcm_cmd"); 
    dcmCmdFrame.PhotoFolderExist=value;
}

//@return true si un dossier photo exist
function isPhotoFolderExist()
{
    var dcmCmdFrame = open("", "dcm_cmd");
    if(dcmCmdFrame!=null)
    {
       if( dcmCmdFrame.PhotoFolderExist!=null )
         return dcmCmdFrame.PhotoFolderExist;
       return false;
    }
    alert("frame dcm_cmd introuvable!");
    return true; //précaution
}

//Positionnement du type de document
//un élément de allDcmFile identifié par son idBasket.
//Si cet élément n'existe pas, il est créé
function setDcmFileProperties(basketId, fileType, fileLabel, fileDescription, accessibility)
{
    var dcmCmdFrame = open("", "dcm_cmd");   
    var dcmElementFound = false;    
    if (dcmCmdFrame != null)
    {
        var DcmFileArray = dcmCmdFrame.allDcmFile;
        var DcmFileElement = null;
        //On cherche l'élément correspondant à idBasket
        for (var i=0;i<DcmFileArray.length && !dcmElementFound ;i++)
        {
            var DcmFileElement = DcmFileArray[i];
            if (DcmFileElement != null)
            {
	            if (DcmFileElement.basketId == basketId)
	               {
	                   dcmElementFound = true;
	                   break;
	               }
            }
            
        }
        if ( !dcmElementFound )
        {
            // var newDcmFile = new DcmFile(basketId);           
            // newDcmFile.setFileType(fileType);
            // newDcmFile.setFileLabel(fileLabel);
            // newDcmFile.setFileDescription(fileDescription);            
            // newDcmFile.setAccessibility(accessibility);
            // csi 220307 Eviter les pbs de liberation d'objets avec IE
            var tv = sysGetAttribute(DcmTreeViewName + ".TreeView");
            var newDcmFile = tv.actionHandler.getDcmFile(basketId, fileType, fileLabel, fileDescription, accessibility);             
            DcmFileArray.push(newDcmFile);
        }
        else
        {
            DcmFileElement.setFileType(fileType);
            DcmFileElement.setFileLabel(fileLabel);
            DcmFileElement.setFileDescription(fileDescription);
            DcmFileElement.setAccessibility(accessibility);
        }        
        //alert(fileType);
        //alert(fileLabel);
        //alert(fileDescription);
    }
    else
    {
        alert("frame dcm_cmd introuvable !");
    }   
}

//Retourne true si il existe déjà un un dossier photo
function existDcmElementDossierPhoto()
{     
    return isPhotoFolderExist();
}

//Positionnement de la valeur d'une colonne pour
//un élément de allDcmFile identifié par son idBasket.
//Si cet élément n'existe pas, il est créé
function setDcmFileConfValue(basketId, fieldName, fieldValue)
{
    //alert("setDcmFileConfValue");
    var dcmCmdFrame = open("", "dcm_cmd");   
    var dcmElementFound = false;    
    if (dcmCmdFrame != null)
    {
        var DcmFileArray = dcmCmdFrame.allDcmFile;
        var DcmFileElement = null;
        //On cherche l'élément correspondant à idBasket
        for (var i=0;i<DcmFileArray.length && !dcmElementFound ;i++)
        {
            var DcmFileElement = DcmFileArray[i];
            if (DcmFileElement.basketId == basketId)
            {
                dcmElementFound = true;
                break;
            }            
        }
        if ( !dcmElementFound )
        {
            //alert(basketId+" not found in allDcmFile");            
            //var newDcmFile = new DcmFile(basketId);           
            //alert("Alimentation nouvel element DcmFile: basketId = "+basketId+" fieldName = "+fieldName+" fieldValue = "+fieldValue);
            //newDcmFile.setConf(fieldName,fieldValue);
            var tv = sysGetAttribute(DcmTreeViewName + ".TreeView");
            var newDcmFile = tv.actionHandler.getDcmFileForConf(basketId, fieldName, fieldValue);             
            DcmFileArray.push(newDcmFile);
        }
        else
        {
            //alert("Maj élément DcmFile: basketId = "+DcmFileElement.basketId+" fieldName = "+fieldName+" fieldValue = "+fieldValue);
            //Il y a un problème dés que l'on essaie de changer des valeurs existantes ???
            DcmFileElement.setConf(fieldName,fieldValue);
        }        
    }
    else
    {
        alert("frame dcm_cmd introuvable !");
    }   
}

//Mise à jour des champs de la frame dcm_conf
//à partir des éléments contenus dans la tableau allDcmFile (Pour l'entrée basketId spécifiée)
function RefreshFrameConf(basketId, confCols)
{       
    // alert("RefreshFrameConf for " + basketId);
    dcmElementFound = false;
    var dcmCmdFrame =  open("", "dcm_cmd");   
    if (sysGetAttribute(EZ_DCM_CONF_OPEN))
    {
       var dcmConfFrame =  open("", "dcm_conf");       
    }
    else
    {
       var dcmConfFrame =  "";       
    }    
            
    if (dcmCmdFrame && dcmConfFrame)
    {     
        dcmConfFrame.focus();
        var DcmFileArray = dcmCmdFrame.allDcmFile;        
        // alert("RefreshFrameConf len allDcmFile ="+DcmFileArray.length);
        //Parcours des éléments pour trouver l'entrée correspondante à basketId
        for (var i=0;i<DcmFileArray.length;i++)
        {
            var dcmFile = DcmFileArray[i];
            if (dcmFile.basketId == basketId)
            {                             
                //alert(basketId+" trouvé!!");
                //Mise à jour description
                var descriptionValue = dcmFile.fileDescription;
                // alert("descriptionValue="+descriptionValue);
                dcmSetFieldValue("formconf",null,null, "dcm_conf",null,"DESCRIPTION",null,descriptionValue );
                //Mise à jour label
                var labelValue = dcmFile.fileLabel;
                //alert("labelValue="+labelValue);
                dcmSetFieldValue("formconf",null,null, "dcm_conf",null,"LABEL",null,labelValue );
                // csi 230207 Mode minimal gestion confidentialité
                var access = dcmFile.accessibility;
                dcmSetFieldValue("formconf",null,null, "dcm_conf",null,"ACCESSIBLE",null,access );

                dcmElementFound = true;
                if(confCols!=null && confCols != '')
                {
                   var tabCols = confCols.split(",");
                   for (var i=0; i<tabCols.length; i++) 
                   {                  
                      //Mise à jour confidentialité
                      var fieldName = tabCols[i];
                      //alert(fieldName);
                      var fieldValue = dcmFile.confFields[fieldName];                   
                      var valueBasketId = dcmFile.basketId;
                      //alert("RefreshFrameConf basketId = "+valueBasketId+"fieldName="+fieldName+" fieldValue="+fieldValue);                   
                      if (fieldValue != null)
                      {
                          dcmSetFieldValue("formconf",null,null, "dcm_conf",null,fieldName,null,fieldValue );
                      }
                      else
                      {                   
                          //alert("fieldValue null fieldName = "+fieldName+" basketId = "+basketId);
                          //alert("USE SAVE DEFAULT VALUE");                       
                          fieldValue = getConfDefaultvalue(fieldName);
                          dcmSetFieldValue("formconf",null,null, "dcm_conf",null,fieldName,null,fieldValue );
                      }
                      var nameObj = "dcmConfFrame.date_"+fieldName;
                      var dateObj = eval(nameObj);
                      if (dateObj && fieldValue)  //ici c'est que l'on traite un champ avec un contrôle date
                      {
                          dateObj.setDate(fieldValue);
                      } 
                      else
                      {
                         if (dateObj)
                         {
                           //alert (fieldName);
                           fieldValue = getConfDefaultvalue(fieldName);
                           //alert(fieldValue);
                           dateObj.setDate(fieldValue);
                         }
                      }
                   }
                }        
                break;
            }        
        }
        if (!dcmElementFound)
        {
            //L'élément n'est pas touvé, il faut rafraichir la vue avec les valeurs par défaut
            //Ne fonctionne pas ...
            //dcmConfFrame.location.reload();               
        }
    }    
}

//Dysfonctionnement dans l'utilisation de findFrameWithinApp
//A l'intérieur de FindField
//Cette fonction utilise open( "", frameName) pour trouver une frame par son nom
function dcmSetFieldValue(formName, action, p0, frameName, p1, inputName, p2, value )
{
   var targetInput = dcmFindField(frameName, inputName);
   if ( targetInput == null )
   {
      alert("dcmSetFieldValue " + inputName + "not found in " + frameName);
      // alert(mess_field_not_found + inputName);
      return;
   }
   // Il faut distinguer les champs de type liste multiple
   // pour les alimenter avec le séparateur MULTI_VALUE_SEP
   for (var i=0;i<targetInput.form.elements.length;i++)
   {
      var elt = targetInput.form.elements[i];
      if (elt.name == inputName)
      {
         var elt_type = elt.type;
         if (elt_type == 'select-multiple')
         {
            var dataSeparator = getMultipleSeparator(inputName);
            var newVal= "";
            var parts = value.split(dataSeparator);
            for (var j=0; j<parts.length; j++) 
            {  
               if (j == 0)
                  newVal = parts[j];
               else               
                  newVal = newVal + MULTI_VALUE_SEP + parts[j];
            }                        
            setOrAddFieldValue(targetInput.form, inputName, newVal, "");   
         }
         else
            setOrAddFieldValue(targetInput.form, inputName, value, "");         
      }
   }
}

// Le séparateur d'une liste NAME est indiqué dans le champ NAME_LISTESEP
// quand le tag DB:InputGrid est utilisé
function getMultipleSeparator(fieldName)
{
   var DEFAULT_LIST_SEPARATOR = "/";
   var sepFieldName = fieldName + "_LISTESEP";
   var sepvar = document.getElementById(sepFieldName);
   if (sepvar)
   {      
      //alert(sepvar.value);
      return sepvar.value;
   }
   else
   {
      //alert("default separator");
      return DEFAULT_LIST_SEPARATOR;       
   }      
} 

//**
function dcmFindField(frameName, inputName)
{
   var targetFrame = open( "", frameName);    
   if ( targetFrame == null )
   {
      alert(mess_frame_not_found + frameName);
      return;
   }
   else
   {
      //alert("frame trouvée : " + targetFrame.name + " " + targetFrame.location.href);
   }
   var targetForm = null;
   var targetInput = null;

   for (var i=0; (i<targetFrame.document.forms.length) && (targetInput==null); i++)
   {
      // Recherche le champ input_name dans frame_dest
      targetForm = targetFrame.document.forms[i];
      for(var j=0; j < targetForm.elements.length; j++)
      {
         if ( targetForm.elements[j].name == inputName )
         {
            targetInput = targetForm.elements[j];
            break;
         }
      }
   }
   return targetInput;
}

//Return true si l'ocx MAXIMG a ete initialise correctement dans la frame de commande
function getOcxMode()
{
    var dcmCmdFrame =  open("", "dcm_cmd");   
    var useMaxim = false;
    if (dcmCmdFrame)
    {        
       useMaxim = dcmCmdFrame.useOcx;  
    }    
    else
    {
        alert("frame dcm_cmd introuvable");
    }
    return(useMaxim);
}

//Saisie du label et de al description obligatoire
function validateLabelDescription(FolderLabelObject, FolderDescriptionObject)
{
    var boolret = true;
    
    if (FolderLabelObject)
    {
        if (!FolderLabelObject.value)
            {
                alert(mess_dcm_label_oblig);
                FolderLabelObject.focus();
                boolret = false;
            }
    }
    
    if (FolderDescriptionObject)
    {
        if (!FolderDescriptionObject.value)
            {
                alert(mess_dcm_description_oblig);
                FolderDescriptionObject.focus();
                boolret = false;
            }
    }    
    return (boolret);
}

//URL du site web qui vient d'être choisi
function setWebSiteChoice(urlSite)
{
    var dcmCmdFrame =  open("", "dcm_cmd");   
    if (dcmCmdFrame)
    {        
       dcmCmdFrame.choiceWebSite = urlSite;  
    }    
    else
    {
        alert("frame dcm_cmd introuvable");
    }
}

//**
function getWebSiteChoice()
{

    var urlSite;
    var dcmCmdFrame =  open("", "dcm_cmd");   
    if (dcmCmdFrame)
    {        
       urlSite = dcmCmdFrame.choiceWebSite;  
    }    
    else
    {
        alert("frame dcm_cmd introuvable");
    }
    return(urlSite);

}

//**
function initWebSiteChoice()
{
    var dcmCmdFrame =  open("", "dcm_cmd");   
    if (dcmCmdFrame)
    {        
       dcmCmdFrame.choiceWebSite = "";  
    }    
    else
    {
        alert("frame dcm_cmd introuvable");
    }
}

//**
function resetLockOnClose()
{
    var dcmCmdFrame =  open("", "dcm_cmd");   
    if (dcmCmdFrame)
    {        
       dcmCmdFrame.unLockOnClose = false;  
    }    
    else
    {
        alert("frame dcm_cmd introuvable");
    }
}

//**
function setUserNoWantOcx ()
{
    var dcmCmdFrame =  open("", "dcm_cmd");   
    if (dcmCmdFrame)
    {        
       dcmCmdFrame.usernowantocx = true;  
    }    
    else
    {
        alert("frame dcm_cmd introuvable");
    }    
}

//**
function getUserNoWantOcx()
{
    var boolret = false;       
    var dcmCmdFrame =  open("", "dcm_cmd");   
    if (dcmCmdFrame)
    {        
       boolret = dcmCmdFrame.usernowantocx;  
    }    
    else
    {
        alert("frame dcm_cmd introuvable");
    }    
    return (boolret);
}
//Pour savoir si la fenêtre de conf est ouverte ...
function setConfFrameStatus(boolValue)
{
    var dcmCmdFrame =  open("", "dcm_cmd");   
    if (dcmCmdFrame)
    {        
       dcmCmdFrame.frameconfisopen = boolValue;  
    }    
    else
    {
        alert("frame dcm_cmd introuvable");
    }    
}


//**
function setRecordId (recordIdValue)
{
    var dcmCmdFrame =  open("", "dcm_cmd");   
    if (dcmCmdFrame)
    {        
       dcmCmdFrame.recordId = recordIdValue;  
    }    
    else
    {
        alert("frame dcm_cmd introuvable");
    }    
}

//**
function setDescriptionValue (descriptionValue)
{
    var dcmCmdFrame =  open("", "dcm_cmd");   
    if (dcmCmdFrame)
    {        
       //alert("set description = " + descriptionValue);
       dcmCmdFrame.description = descriptionValue;  
    }    
    else
    {
        alert("frame dcm_cmd introuvable");
    }    
}

//**
function getDescriptionValue ()
{
    var dcmCmdFrame =  open("", "dcm_cmd");   
    var retValue = "";
    if (dcmCmdFrame)
    {        
       retValue = dcmCmdFrame.description;  
       //alert("getDescription ret = " + retValue);
    }    
    else
    {
        alert("frame dcm_cmd introuvable");
    }    
    return (retValue);
}

function TreeDcmClick(menuId)
{
	/*
   var vElt = document.getElementById(menuId);
   if ( vElt == null ) return;
   var itemType = vElt.getAttribute("ezItemType");
   var itemDcm = vElt.getAttribute("ezItemDcm");   
   if ( itemType == "dir" )
   {
      DcmTreeMenuSetLastSelectedItemElement(vElt);
   }
   else
   {
      TreeMenuClick(menuId);
   }
   TreeDcmSetNextAndPrev(vElt);
   */
}

function TreeDcmSetNextAndPrev(vElt)
{
	/*
   if (vElt)
   {
      var vNextElt = vElt.nextSibling;
      var vPrevElt = vElt.previousSibling;

      if ((navigator.appName == "Microsoft Internet Explorer"))
      {
         if (vNextElt == null)
         {
            vNextElt = vElt.parentNode;
            if ((vNextElt != null)  && (vNextElt.getAttribute("ezItemType") == "dirContent"))
            {
               vNextElt = vNextElt.nextSibling;
               if ( (vNextElt != null) && (vNextElt.nodeType == 3) ) vNextElt = vNextElt.nextSibling; 
            }
         }
         if (vPrevElt == null)
         {
            vPrevElt = vElt.parentNode;
            if ((vPrevElt != null)  && (vPrevElt.getAttribute("ezItemType") == "dirContent"))
            {
               vPrevElt = vPrevElt.previousSibling;
               if ( (vNextElt != null) && (vPrevElt.nodeType == 3) ) vPrevElt = vNextElt.previousSibling; 
            }
         }
      }
      
      while( ((vNextElt != null) && (vNextElt.nodeType == 3)) ||
            ((vNextElt != null) && (vNextElt.getAttribute("ezItemType") == "dirContent")) ||
            ((vNextElt != null) && (vNextElt.nodeName == "IMG")) )  
         {
            vNextElt = vNextElt.nextSibling;
            if (vNextElt == null)
            {
               vNextElt = vElt.parentNode;
               if ((vNextElt != null)  && (vNextElt.getAttribute("ezItemType") == "dirContent"))
               {
                  vNextElt = vNextElt.nextSibling;
                  if ( (vNextElt != null) && (vNextElt.nodeType == 3) ) vNextElt = vNextElt.nextSibling; 
               }
            }
         }
         
      if (vNextElt != null)
      {
         sysSetAttribute(EZ_NEXT_SELECTED_MENU_ITEM_KEY, vNextElt.id);
         alert(vNextElt.id);
         alert(vNextElt.getAttribute("idParent"));
      }
      else
      {
         sysSetAttribute(EZ_NEXT_SELECTED_MENU_ITEM_KEY, "null");
      }
      
      
      while(((vPrevElt != null) && (vPrevElt.nodeType == 3)) ||
            ((vPrevElt != null) && (vPrevElt.getAttribute("ezItemType") == "dirContent")) ||
            ((vNextElt != null) && (vNextElt.nodeName == "IMG")) )  
         {
            vPrevElt = vPrevElt.previousSibling;
            if (vPrevElt == null)
            {
               vPrevElt = document.getElementById(vElt.getAttribute("idParent"));
               if (vPrevElt != null)
                  vPrevElt = vPrevElt.nextSibling;
            }
         }

      if (vPrevElt != null)
      {
         sysSetAttribute(EZ_PREV_SELECTED_MENU_ITEM_KEY, vPrevElt.id);
         alert(vPrevElt.id);
      }
      else
      {
         sysSetAttribute(EZ_PREV_SELECTED_MENU_ITEM_KEY, "null");
      }
   }
   */
}

/**
 * @author csi
 * @author tdn
*/
function TreeDcmRefresh(TV)
{
		itemSelected=TV.getSelectedItem();
		//alert(itemSelected.id);
		if(itemSelected) 
		{
		var ele = document.getElementById(itemSelected.id);
   	   ele.setAttribute("documenttype", itemSelected.data.getType());
	   var eleParent = document.getElementById(itemSelected.parent.id);
	   eleParent.setAttribute("documenttype", itemSelected.parent.data.getType());
	   TV.ensureItemVisible(itemSelected);
	   if(ele.getAttribute("documenttype")==DOCUMENT_DOSSIER_PHOTO ||ele.getAttribute("documenttype")==DOCUMENT_DOSSIER )
	   TV.onToggle(itemSelected.id);
		}
	     
}

function TreeDcmLoadImageOnStartup()
{
   var vElt = DcmTreeMenuGetLastSelectedItemElement();
   if ( vElt == null ) return;
   var itemType = vElt.getAttribute("ezItemType");
   var itemDcm = vElt.getAttribute("ezItemDcm");   
   if ( itemType == "item" )
   {
      if (vElt.getAttribute('ezAction') != undefined) 
      {
         var vAct = vElt.getAttribute('ezAction');
         if ( (vAct != undefined) && (vAct != null) && (vAct != '')) 
            eval(vAct);
      }
   }
}

//Mise à jour du label et de la description d'un élément de la dcm tree view
function updateDcmTreeView (basketId, fileLabel, fileDescription)
{
    var dcmtree_frame = open("","dcm_tree");
    if ( dcmtree_frame == null )
    {
       alert("La frame dcm_tree est introuvable");
    }      
    else
    {
       // csi 230207 Fonctions originelles avec le TV
       // var divCurElement = dcmtree_frame.document.getElementById(basketId);
       // divCurElement.childNodes[2].nodeValue = " "+fileLabel;      
       // divCurElement.setAttribute("title", fileDescription);
    }    
}

//Sauvegarde des valeurs par défaut des différents champs concernant la confidentialité
function saveConfDefaultValues(confCols)
{
    var dcmCmdFrame =  open("", "dcm_cmd");   
    var dcmConfFrame =  open("", "dcm_conf");       
    if (dcmCmdFrame && dcmConfFrame)
    {        
        var dcmDefaultConf = dcmCmdFrame.dcmDefaultConf;        
        dcmDefaultConf.objectLoad = true;
        //alert ("dcmDefaultConf="+dcmDefaultConf);
        var tabCols = confCols.split(",");
        for (var i=0; i<tabCols.length; i++) 
        {                  
           var fieldName = tabCols[i];
           var field = dcmConfFrame.document.getElementById(fieldName);
           var fieldValue = field.value;           
           dcmDefaultConf.setConf(fieldName,fieldValue);
           ///alert ("SET DEFAULT VALUE of "+fieldName+" = "+fieldValue);
        }        
    }        
}

//Récupération de la valeur par défaut d'un champ de la confidentialité
function getConfDefaultvalue(fieldName)
{
    var dcmCmdFrame =  open("", "dcm_cmd");   
    var fieldValue = "";
    if (dcmCmdFrame)
    {        
        var dcmDefaultConf = dcmCmdFrame.dcmDefaultConf;        
        fieldValue = dcmDefaultConf.confFields[fieldName];
    }            
    return (fieldValue);
}


//Pour savoir si la confidentialité par défaut est déjà connue
function defaultConfIsLoaded()
{
    var boolRet = false;
    var dcmCmdFrame =  open("", "dcm_cmd");   
    if (dcmCmdFrame)
    {        
        var dcmDefaultConf = dcmCmdFrame.dcmDefaultConf;        
        boolRet = dcmDefaultConf.objectLoad;
    }            
    return (boolRet);
}

//**
function toolBoxManageChange()
{
    var dcmViewFrame =  open("", "dcm_view");   
    if (dcmViewFrame)
    {        
        var maxImg = dcmViewFrame.MaxImg;        
        if (getOcxMode())
        {
            if (getViewerToolBox())
            {
                maxImg.ViewMaximgToolBar(false);
                setViewerToolBox(false);
            }
            else
            {
                maxImg.ViewMaximgToolBar(true);
                setViewerToolBox(true);            
            }
        }
        else
        {
            alert(mess_dcm_no_ocx);
        }
    }            
}

//**
function toolBoxManage()
{
    var dcmViewFrame =  open("", "dcm_view");   
    if (dcmViewFrame)
    {        
        var maxImg = dcmViewFrame.MaxImg;        
        if (getOcxMode())
        {
            if (getViewerToolBox())
            {
                maxImg.ViewMaximgToolBar(true);
            }
            else
            {
                maxImg.ViewMaximgToolBar(false);
            }
        }
        else
        {
            alert(mess_dcm_no_ocx);
        }
    }            
}


//**
function setViewerToolBox (boolValue)
{
    var dcmCmdFrame =  open("", "dcm_cmd");   
    if (dcmCmdFrame)
    {        
        dcmCmdFrame.viewerToolBox = boolValue;        
    }            
}

//**
function getViewerToolBox()
{
    var boolRet = false;
    var dcmCmdFrame =  open("", "dcm_cmd");   
    if (dcmCmdFrame)
    {        
        boolRet = dcmCmdFrame.viewerToolBox;        
    }            
    return boolRet;
}

//**
/*
Déplacements autorisés :
	-Dossier de niveau 0
	-Dossier photo
	-Elément à l'intérieur d'un dossier (Quel que soit le niveau du dossier)
	-Pas de sortie ou d'entrée dans un dossier
	
csi 230307 Pour la ged à 1 niveau, on conserve l'ancien fonctionnement
(Déplacement de dossier autorisé, déplacement entre dossiers autorisé)
avec rechargement de l'arbre à chaque déplacement.
Pour la ged à N niveaux :
	Le déplacement de dossier ou entre dossiers n'est pas autorisé
	La mise à jour de l'arbre s'effectue sans rechargement complet
*/
function dcm_ActionElement(elementaction)
{
    var tv = sysGetAttribute(DcmTreeViewName + ".TreeView");
    var canMove = false;
    var multiLevel = false;
    // Déterminer multiLevel via xmlHttp
    multiLevel = tv.actionHandler.checkMultiLevel();
    // multiLevel = true;
    // En cas de multiLevel, canMove = fonction serveur
    if (elementaction.lastIndexOf("dcm-element-up") > -1)
        elementaction="moveUp";
    if (elementaction.lastIndexOf("dcm-element-down") > -1)
        elementaction="moveDown";      
        
    var idElt = DcmTreeMenuGetLastSelectedItemElement();
    if (idElt)
    {   
         var itemId = idElt.getAttribute('id');
   	     var curItem = getCurItem(idElt);
   	     var oldParentId = curItem.parent.id;
   	     if (oldParentId == null)
     	    oldParentId = "";
         if (elementaction=="moveUp")
         {
            if (multiLevel)
               canMove = canMoveUpPhotoElementMultiLevel(itemId);            
            else
               canMove = canMoveUpPhotoElement(idElt);
         }
         else
         {
            if (multiLevel)         
               canMove = canMoveDownPhotoElementMultiLevel(itemId);
            else
               canMove = canMoveDownPhotoElement(idElt);               
         }
             
         if (canMove)
         {
           // Mode déplacement avec rafraichissement complet               
           var rootUrl = sysGetAppBaseUrl();
           var action = rootUrl + "servlet/DcmManager?action="+elementaction+"&basketId="+itemId;
           var xmlStr = XMLUtil_GetContent(action);         
           if (multiLevel)
           {
	          if (elementaction == "moveUp")
	             curItem.moveUp();
	          if (elementaction == "moveDown")
	             curItem.moveDown();          
           }
           else
           {            
	           var DCM_TREE = open("","dcm_tree");
	           if ( DCM_TREE != null )
	           {
	              DCM_TREE.location.reload();
	           }
	           else
	              alert("Fenêtre dcm_tree introuvable !")
           }
            /*
            var itemId = idElt.getAttribute('id');
            var rootUrl = sysGetAppBaseUrl();
            var isValid = true;
            var xmlNewParentItem = null;
            var newParentItem = null;
            var action = rootUrl + "servlet/DcmManager?action="+elementaction+"&basketId="+itemId;
            var xmlStr = XMLUtil_GetContent(action);
            if (xmlStr != "")
            {
               var xmlNewParentItem = XMLUtil_MakeDocument(xmlStr);               
               var tabs = tv.actionHandler._xmlDocToTreeViewItems(xmlNewParentItem);              
               if (tabs != null)
               {
                  newParentItem = tabs[0];
                  newParentItem.tree = tv;
               }
            }
            if (newParentItem != null)
            {
               var newParentId = newParentItem.id;
               // Il faut prendre l'objet du tree existant
               newParentItem = tv.allItems[newParentId];
               
               if (newParentId == null)
                  newParentId = "";
               // alert( "old = " + oldParentId + " new = " + newParentId);
               if (oldParentId != newParentId)
               {
                   // alert( "toggle old = " + oldParentId + " new = " + newParentId);
	               DcmRefreshTreeElementsForMove(curItem, newParentItem);                         
               }
               else
               {
	               if (elementaction == "moveUp")
	                  curItem.moveUp();
	               if (elementaction == "moveDown")
	                  curItem.moveDown();               
               }               
            }
            else
            {
               if (elementaction == "moveUp")
                  curItem.moveUp();
               if (elementaction == "moveDown")
                  curItem.moveDown();
            }
            */
         // Mode déplacement avec rafraichissement complet
/*
            var itemId = idElt.getAttribute('id');
            var rootUrl = sysGetAppBaseUrl();
            var action = rootUrl + "servlet/DcmManager?action="+elementaction+"&basketId="+itemId;
            var xmlStr = XMLUtil_GetContent(action);
            
            var DCM_TREE = open("","dcm_tree");
            if ( DCM_TREE != null )
            {
               DCM_TREE.location.reload();
            }
            else
               alert("Fenêtre dcm_tree introuvable !") 
*/               
         }
         else
         {
            alert (mess_dcm_move_element);
         }
    }
    else
    {
         alert (mess_dcm_select_element);
    }
}

// csi 26022007 Gestion des précédents/suivants avec le treeView
// Récupération de l'objet js du suivant
function getNextItem(idElt)
{
   var nextItem =  null;

   dcmtree_frame = open("","dcm_tree");
   if ( dcmtree_frame == null )
   {
      alert("La frame dcm_tree est introuvable");
      return null;
   }
   var treeView = dcmtree_frame.treeView;   
   var curId = idElt.getAttribute('id');
   var curItem = treeView.allItems[curId];
   var nextId = curItem.data.getNextId();
   if (nextId != null)
   {
      nextItem = treeView.allItems[nextId];
   }
   
   return nextItem;
}

// csi 26022007 Gestion des précédents/suivants avec le treeView
// Récupération de l'objet js du précédent
function getPrevItem(idElt)
{
   var prevItem =  null;

   dcmtree_frame = open("","dcm_tree");
   if ( dcmtree_frame == null )
   {
      alert("La frame dcm_tree est introuvable");
      return null;
   }
   var treeView = dcmtree_frame.treeView;   
   var curId = idElt.getAttribute('id');
   var curItem = treeView.allItems[curId];
   var prevId = curItem.data.getPrevId();
   if (prevId != null)
   {
      prevItem = treeView.allItems[prevId];
   }
   
   return prevItem;
}

function getCurItem(idElt)
{
   dcmtree_frame = open("","dcm_tree");
   if ( dcmtree_frame == null )
   {
      alert("La frame dcm_tree est introuvable");
      return null;
   }
   var treeView = dcmtree_frame.treeView;   
   var curId = idElt.getAttribute('id');
   var curItem = treeView.allItems[curId];
   
   return curItem;
}


//**
// csi 26022007 Fonctions originelles de la ged
// Attention celà nécessite le reload à chaque action pour les maj
// (Ajout ou déplacement) avec un chargement par level à chaque demande
function canMoveUpPhotoElementMultiLevel(idElt)
{
    var tv = sysGetAttribute(DcmTreeViewName + ".TreeView");
    var move = tv.actionHandler.checkMoveForMultiLevel(idElt, "moveUp");
    return move;
/* 
    var move = false;
    
    // 1-Pas de sortie d'un dossier photo
    if (idElt.getAttribute('documenttype') == "Document-Photo")
    {
        var prevItem = getPrevItem(idElt);  
        if (prevItem)
        {
           // alert(prevItem.data.getType());
           if (prevItem.data.getType() == "Document-Photo")
              move = true;
           else
              move = false; 
        }        
	}    
    // 2-Mouvement toujours autorisé pour les dossiers de premier niveau
    else if (idElt.getAttribute('documenttype') == "Document-DossierPhoto" ||
        idElt.getAttribute('documenttype') == "Document-Dossier")
    {    
	     var curItem = getCurItem(idElt);
	     var parentId = curItem.data.parentId;
	     // alert("[" + curItem.data.parentId + "]");
	     // Pas de déplacement pour un sous dossier
	     if (parentId != "")
	        move = false;
	     else
	        move = true;
    }
    else
    {
    
	   // 3-Pas d'entrée dans un dossier photo
	   var prevItem = getPrevItem(idElt);  
       if (prevItem)
       {
          // alert(prevItem.data.getType());
          if (prevItem.data.getType() == "Document-DossierPhoto")
             move = false;
          else
             move = true; 
       }
       else
       {
          move= true;
  	      var curItem = getCurItem(idElt);
	      var parentId = curItem.data.parentId;
	      // alert("[" + curItem.data.parentId + "]");
	      // Pas de sortie d'un dossier
	      // (Elément précédent n'a pas le même père)
	      var prevItem = getPrevItem(idElt);
	      if (prevItem == null)
	      {
	         move = false;
	      }
	      else
	      {
             // Si elem précédent = dossier, non autorisé
	         if (prevItem.data.getType() == "Document-Dossier")
	             move = false;	                   
	      }

       }
	}   
	*/          
}

//**
// csi 26022007 Fonctions originelles de la ged
// Attention celà nécessite le reload à chaque action pour les maj
// (Ajout ou déplacement)
function canMoveDownPhotoElementMultiLevel(idElt)
{
    var tv = sysGetAttribute(DcmTreeViewName + ".TreeView");
    var move = tv.actionHandler.checkMoveForMultiLevel(idElt, "moveDown");
    return move;
    
    /*
    var move = false;    
    // 1-Pas de sortie d'un dossier photo (Mouvement autorisé si pas dernier du dir)
    if (idElt.getAttribute('documenttype') == "Document-Photo")
    {
        var nextItem = getNextItem(idElt);  
        if (nextItem)
        {
           move = true;
        }       
        else 
        {
           move = false; 
        }        
	}    
	
	// 2-Mouvement toujours autorisé pour les dossiers de premier niveau uniquement
    else if (idElt.getAttribute('documenttype') == "Document-DossierPhoto" ||
        idElt.getAttribute('documenttype') == "Document-Dossier")
    {
	     var curItem = getCurItem(idElt);
	     var parentId = curItem.data.parentId;
	     // alert("[" + curItem.data.parentId + "]");
	     if (parentId != "")
	        move = false;
	     else
	        move = true;
    }
    else
    {
    
	   // 2-Pas d'entrée dans un dossier photo d'un élément extérieur à ce dossier
	   var nextItem = getNextItem(idElt);  
       if (nextItem)
       {
          // alert(prevItem.data.getType());
          if (nextItem.data.getType() == "Document-DossierPhoto")
             move = false;
          else
          {
	          // Pas de sortie d'un dossier
	          // (L'élément suivant n'a pas le même père)
	          move= true;
	          var curItem = getCurItem(idElt);
	          var parentId = curItem.data.parentId;
	          var parentNextId = nextItem.data.parentId;
	          if ( parentId != parentNextId)
	          {
	             move = false;          
	          }
	          else
	          {
	             // Si elem suivant = sous dossier, non autorisé
		          if (nextItem.data.getType() == "Document-Dossier")
		             move = false;	             
	          }
          }

       }
       else
       {
          move = false;
       }
          
	}   
       
    return move;
    /*
    if (idElt.getAttribute('documenttype') == "Document-Photo")
    {
     var idNextElt = DcmTreeMenuGetNextOrPrevSelectedItemElement(EZ_NEXT_SELECTED_MENU_ITEM_KEY);
     if (idNextElt)
     {
        if (idNextElt.getAttribute('documenttype') == "Document-Photo")
           move = true;
        else
           move = false;
     }
    }
    else if (idElt.getAttribute('documenttype') == "Document-DossierPhoto" ||
        idElt.getAttribute('documenttype') == "Document-Dossier")
    {
     move = true;
    }
    else
    {
     var idNextElt = DcmTreeMenuGetNextOrPrevSelectedItemElement(EZ_NEXT_SELECTED_MENU_ITEM_KEY);
     if (idNextElt)
     {
        if ((idElt.getAttribute('idParent') != "null") && (
              idNextElt.getAttribute('idParent') == "null"))
        {
           move = true;
        }
        else if (idNextElt.getAttribute('documenttype') == "Document-DossierPhoto")
           move = false;
        else
           move = true;
     }
     else
        move = true;
    }
    return move;
    * */
}


function canMoveDownPhotoElement(idElt)
{
    var move = false;
    
    // 1-Pas de sortie d'un dossier photo (Mouvement autorisé si pas dernier du dir)
    if (idElt.getAttribute('documenttype') == "Document-Photo")
    {
        var nextItem = getNextItem(idElt);  
        if (nextItem)
        {
           move = true;
        }       
        else 
        {
           move = false; 
        }        
	}    
	
	// 2-Mouvement toujours autorisé pour les dossiers
    else if (idElt.getAttribute('documenttype') == "Document-DossierPhoto" ||
        idElt.getAttribute('documenttype') == "Document-Dossier")
    {
     move = true;
    }
    else
    {
    
	   // 2-Pas d'entrée dans un dossier photo d'un élément extérieur à ce dossier
	   var nextItem = getNextItem(idElt);  
       if (nextItem)
       {
          // alert(prevItem.data.getType());
          if (nextItem.data.getType() == "Document-DossierPhoto")
             move = false;
          else
             move = true; 
       }
       else
          move= true;       
	}   
       
    return move;
}

function canMoveUpPhotoElement(idElt)
{
    var move = false;
    
    // 1-Pas de sortie d'un dossier photo
    if (idElt.getAttribute('documenttype') == "Document-Photo")
    {
        var prevItem = getPrevItem(idElt);  
        if (prevItem)
        {
           // alert(prevItem.data.getType());
           if (prevItem.data.getType() == "Document-Photo")
              move = true;
           else
              move = false; 
        }        
	}    
    // 2-Mouvement toujours autorisé pour les dossiers
    else if (idElt.getAttribute('documenttype') == "Document-DossierPhoto" ||
        idElt.getAttribute('documenttype') == "Document-Dossier")
    {
     move = true;
    }
    else
    {
    
	   // 3-Pas d'entrée dans un dossier photo
	   var prevItem = getPrevItem(idElt);  
       if (prevItem)
       {
          // alert(prevItem.data.getType());
          if (prevItem.data.getType() == "Document-DossierPhoto")
             move = false;
          else
             move = true; 
       }
       else
          move= true;       
	}   
       
    return move;
}


function setVisibleCmdDiv ()
{
    var dcmCmdFrame =  open("", "dcm_cmd");   
    if (dcmCmdFrame)
    {        
        var cmddiv = dcmCmdFrame.document.getElementById("cmddiv");
        cmddiv.style.display='block';
    }            
}

//Positionnement par défaut de la valeur d'un input html
//à partir du nom du fichier choisi
function Dcm_SetAutomaticValueFromFile (fileHtml, inputHtml)
{      
   var vFilePath = document.getElementById(fileHtml);     
   var vInput = document.getElementById(inputHtml);
   if ((!vFilePath) || (!vInput))
   {
      alert(fileHtml + " " + inputHtml + " sont obligatoires");
      return;
   }
   var FilePath = vFilePath.value;
   
   if (FilePath.lastIndexOf("/") != -1)
   {
      var tabFilePath = FilePath.split("/");
   }
   else
   {
      var tabFilePath = FilePath.split("\\");
   }                        
   var fullFileName = tabFilePath[tabFilePath.length-1];
   var tabFileName = fullFileName.split(".");
   var fileName = tabFileName[0];        
   vInput.value = fullFileName;
}


//Fonction raccourci qui permet de
//   Vider une div
//   Remplir cette div avec un contenu html
function Dcm_Printdiv(divname,divstr)
{
   var vMsgDiv = document.getElementById(divname);
   vMsgDiv.innerHTML = '';
   vMsgDiv.style.display = 'none';               
   vMsgDiv.innerHTML = divstr;
   vMsgDiv.style.display = 'block';
}

//Génére d'une liste dynamique
//qui s'appelle DOCUMENTTYPE@x ou x est le rang du document ajouté.
//(Nom du champ stockant le type de document dans IDOCS)
//en fonction de : 
//   Le type de document sélectionné (Contenu dans fileHtml)
//   Le paramétrage du service dcm
//   extBureautique, paramètre à lire dans dcm-service/fulltext-type
//   extImage, paramètre à lire dans dcm-service/image-type
//   labelImage, traduction du message dcm.file.image
//   labelBuro, traduction du message dcm.file.buro
//Cette liste est ensuite affichée dans la div divDocType
function Dcm_SetAutomaticDocumentType(docRank, fileHtml, divDocType, extBureautique, 
                                      extImage, labelImage, labelBuro)
{      
     var DOCUMENTTYPENAME = "DOCUMENTTYPE@" + docRank;
     var vFilePath = document.getElementById(fileHtml);
     if (!vFilePath)
     {
         alert(vFilePath + " est obligatoire");
         return;
     }
     
     var filePath = vFilePath.value;
     var localDocumentType = "";
     var documentBureautique = false;
     var documentImage = false;
     var documentPhoto = false;
     var extFile = filePath.substring(filePath.lastIndexOf("."));
            
     //Fichier de type bureautique ?
     var tableauExtBureautique=extBureautique.split(",");
     for (var i=0; (i<tableauExtBureautique.length)&&(!documentBureautique); i++) 
     {        
         tableauExtBureautique[i] = "."+tableauExtBureautique[i];
         if (extFile == tableauExtBureautique[i])
         {
            localDocumentType = "Document-Bureautique";
            documentBureautique = true;
         }
     }
     
     //Fichier de type image ?
     var tableauExtImage=extImage.split(",");
     for (var i=0; (i<tableauExtImage.length)&&(!documentImage)&&(!documentBureautique); i++) 
     {        
         tableauExtImage[i] = "."+tableauExtImage[i];
         if (extFile == tableauExtImage[i])
         {
            localDocumentType = "Document-Image";
            documentImage = true;
         }
     }
     
     //Fichier de type image
     if (documentImage)
     {
         Dcm_Printdiv(divDocType,"");            
         var choiceList="<select id=\"" + DOCUMENTTYPENAME +"\" "+
                     "name=\"" + DOCUMENTTYPENAME + "\">" + "<option value=\"Document-Image\">"+
                     labelImage + "</option>" + "</select>";                  
         Dcm_Printdiv(divDocType,choiceList);
     }
     
     //Fichier de type bureautique
     if (documentBureautique)
     {
         Dcm_Printdiv(divDocType,"");            
         var choiceList="<select id=\"" + DOCUMENTTYPENAME +"\" "+
                     "name=\"" + DOCUMENTTYPENAME + "\">" + "<option value=\"Document-Bureautique\">"+
                     labelBuro + "</option>" + "</select>";                          
         Dcm_Printdiv(divDocType,choiceList);
     }
     
     //Ne correspond à rien par défaut -> proposer tous les choix
     if ((documentImage==false) && (documentBureautique==false))
     {
        Dcm_Printdiv(divDocType,"");            
         var choiceList="<select id=\"" + DOCUMENTTYPENAME +"\" "+
                     "name=\"" + DOCUMENTTYPENAME + "\">" + "<option value=\"Document-Bureautique\">"+
                     labelBuro + "</option>" + 
                     "<option value=\"Document-Image\">"+
                     labelImage + "</option>"
                     "</select>";                          
         Dcm_Printdiv(divDocType,choiceList);        
     }
}

//Récupération de la description suivant le paramétrage dcm
function Dcm_GetDescription(recordId)
{
   var description = "Description";  
   var rootUrl = sysGetAppBaseUrl();
   var action = rootUrl + "servlet/DcmManager?action=getDescriptionValue&recordId="+recordId;
   description = XMLUtil_GetContent(action)
   return (description);
}


// Réalisation de l'OCR avec MAXOCR
// Attention, cette fonction est utilisable uniquement lorsque MaxOcr existe dans la page !
function doOcr(srcFileName, destFileName)
{
   var MAX_ENGINE_FREADERPRO = 2;        
   var MAX_LNG_CUSTOM = 99;
   var MAX_EXP_PDF = 10;
   var MAX_TOFILE = 2;
   
   //Utilisation moteur Fine Reader
   MaxOcr.OcrEngine = MAX_ENGINE_FREADERPRO;
   //TODO langue ocr
   //MaxOcr.OcrLangue = OcrForm.lstLanguage.value
   MaxOcr.OcrLangue = MAX_LNG_CUSTOM;
   MaxOcr.OcrAnalyseAuto = false;
   //Document multipages, ocr de toutes les pages
   MaxOcr.OcrSrcPageNumber = 0;
   MaxOcr.OcrSrcType = MAX_TOFILE;
   MaxOcr.OcrDstType = MAX_TOFILE;
   //Fichier source
   MaxOcr.OcrDstFile = destFileName;
   //Fichier destination résultat OCR
   MaxOcr.OcrSrcFile = srcFileName;
   //Fichier résultat au format pdf
   MaxOcr.OcrExpFmt = MAX_EXP_PDF;    
   //Paramétrage standard
   MaxOcr.OcrRemoveImage = false;
   MaxOcr.OcrFilterImage = false;
   MaxOcr.OcrShowTips = false;
   MaxOcr.OcrAllowCorrection = false;
   MaxOcr.OcrAllowChecking = false;
   MaxOcr.OcrSingleFileResult = true;
   //Lancement de l'OCR
   MaxOcr.OcrDoOcr;
   //alert("Fin du traitement OCR");
   var retOcr = MaxOcr.OcrGetLastErr;
   return retOcr
}



// Fonctions initialement écrites dans form.js
function frmDcmToolBox(formName,action)
{
    toolBoxManageChange();
}

function frmDcmActionElement(formName,action)
{
    dcm_ActionElement(action);
}

function frmDcmViewRecord(formName,action)
{
    var WIN_DATA = open("","win_data");
    var DCM_CMD = open("","dcm_cmd");
    
    
    if ( WIN_DATA != null )
    {
       if (DCM_CMD != null)
       {
           var recordId = DCM_CMD.recordId;    
           if (recordId != null)
               WIN_DATA.location.href = action +"?recordId="+recordId;               
           else
               alert("DCM_CMD.recordId.value is null !") 
       }
       else
           alert("Fenêtre dcm_cmd introuvable !") 
    }
    else
       alert("Fenêtre win_data introuvable !") 
}

function frmDcmConfPopup(formName,action)
{
   var winName = "dcm_conf";
   sysOpenWindow(winName, action);
}
 
function frmDcmPopup(formName, action, p0, menu_view, p1, returnTarget)
   {
      var flag = 0;
      var urlAction = action;
      var winName = "dcm_popup";
      if ( menu_view )
      {
         urlAction += "?menu_view=" + menu_view;
         flag = 1;
      }
      if ( returnTarget )
      {
      
             if(returnTarget=="input") 
       {
       parent.close();
       return;
       }
       
         if (flag == 1)
            urlAction += "&returnTarget=" + returnTarget ;
         else
            {
            urlAction += "?returnTarget=" + returnTarget;
            flag = 1;
            }

      }
      
      sysOpenWindow(winName, urlAction,false,"0,0,450,550");
   }


   // On utilise un winname particulier dans ce cas
   // (Fenêtre du scann modale pour ce popup)
   function frmDcmScanPopup(formName, action, p0, menu_view, p1, returnTarget)
   {
      var flag = 0;
      var urlAction = action;
      var winName = "dcm_scan_popup";
      if ( menu_view )
      {
         urlAction += "?menu_view=" + menu_view;
         flag = 1;
      }
      if ( returnTarget )
      {
      
             if(returnTarget=="input") 
       {
       parent.close();
       return;
       }
       
         if (flag == 1)
            urlAction += "&returnTarget=" + returnTarget ;
         else
            {
            urlAction += "?returnTarget=" + returnTarget;
            flag = 1;
            }

      }
      
      sysOpenWindow(winName, urlAction,false,"0,0,450,550");
   }
   
   
function DcmRefreshTreeElementsForDelete(basketId)
{
   var tv = sysGetAttribute(DcmTreeViewName + ".TreeView");
   var curItem = tv.allItems[basketId];
   // alert(curItem);
   tv.deleteItem(curItem);
}

function DcmRefreshTreeElementsForMove(curItem, newParentItem)
{
   var tv = sysGetAttribute(DcmTreeViewName + ".TreeView");

   if ( ! newParentItem.fillChecked )
   {
      var parentId = newParentItem.id;
      tv.onToggle(parentId, true);
   } 

   tv.moveItemWithParentCheckToggle(curItem, newParentItem);
   
   // Rafraichissement de l'arbre
   tv._eraseAndRefresh();
}

// Rafraichissement du tree view et des objets associés après une opération
// élémentaire dans la corbeille (Ajout, suppression, déplacement ...)
function DcmRefreshTreeElements(items, basketActionType)
{
   var tv = sysGetAttribute(DcmTreeViewName + ".TreeView");  
   if (basketActionType == CREATE_BASKET_ELEMENT)
   {
      // Mise à jour de l'arbre
      for (var i=0; i<items.length; i++)
      {
         var parentId = items[i].data.parentId;
         //alert(items[i].id);
         //alert(parentId);
         var parentItem = tv.allItems[parentId];
         if (parentItem)
         {
	        if ( ! parentItem.fillChecked )
	        {
	           // Un appel à getChildren va faire s'afficher l'élément ajouté
	           // parentItem.toggle(true);
	           tv.onToggle(parentId, true);
	        }        
	        else
	        {
	            if (parentId)
	               tv.addItemObjet(parentId, items[i]);
	            else
	               tv.addItemObjet("ROOT", items[i]);                 
	        }
         }
         else
         {
            if (parentId)
               tv.addItemObjet(parentId, items[i]);
            else
               tv.addItemObjet("ROOT", items[i]);         
         }                  
      }
   }

   
   // Rafraichissement de l'arbre
   tv._eraseAndRefresh();  
}

/**
 * Tableau utilisé par computeMirrorTransformation et getUrlTransformationFor
 * pour mémoriser les transformation effectuées sur un document
 */
var IMAGE_TRANSFORMATION = new Array();

/**
 * Cette méthode récupère l'id du document courant et calcule
 * en fonction des transformations de type mirror précédement réalisées la valeur 
 * de la nouvelle transformation de type mirror demandé.
 * S'il s'agit de la première transformation de ce type, mirrorDirection est retrouné
 * @param mirrorDirection: 1 == FLIP_HORIZONTAL, 2 == FLIP_VERTICAL, 3 les 2 flips, 0 aucun flip
 * @param doc_id: identifiant du document concernée
 */
function computeMirrorTransformation(mirrorDirection,doc_id)
{
  var thisImgTransformation = IMAGE_TRANSFORMATION[doc_id];
  if(thisImgTransformation==null)
  {
      thisImgTransformation=new Array();
      IMAGE_TRANSFORMATION[doc_id]=thisImgTransformation;
  }
   //Verifie s'il n'existe pas déjà la même transformation
   //si oui on la supprime
   var oldMirror = thisImgTransformation["imageMirror"];
   
   //Jamais fait de mirror on applique sans pb
   if(oldMirror!=null && oldMirror!=0)
   {
      //Si on a déjà fait la même mirror l'effet s'annule
      if(oldMirror==mirrorDirection)
      {
         mirrorDirection=0; //pas de mirror,annulation du précédent mirror
      }
      //s'il l'on a fait un mirror horizontal + un vertical, on annule celui demandé.
      //de fois le même mirror = rien
      //verticale = 1 horizontal = 2 si 2 alors reste 1 si 1 alors reste 2
      else if(oldMirror==3)
      {
         mirrorDirection=oldMirror-mirrorDirection;
      }
      //sinon on vient de cumulé un mirror vertical+un horizontal
      else
      {
         mirrorDirection=3;
      }
   }
   thisImgTransformation["imageMirror"]=mirrorDirection;
   return mirrorDirection;
}


/**
 * Construit une url compris par le DocumentFileManager et permettant
 * de repasser toutes les transformations déjà éffectuées
 */
function getUrlTransformationFor(doc_id)
{
   var url = "";
   var thisImgTransformation = IMAGE_TRANSFORMATION[doc_id];
   for(var transformation in thisImgTransformation)
   {
      var data = thisImgTransformation[transformation];
      if(typeof data != 'function')
      {
         url+="&"+transformation+"="+data;
      }
   }
   return url;
}
