var ADMIN_MANAGER = sysGetAppBaseUrl() + "servlet/LocksManager?";


//Affichage des locks de l'utilisateur connecté  
// + activation du bouton permettant de supprimer les locks
function Locks_PrintUserLocks(viewLocks, viewButtonLock)
{
   //Récupération des locks
   var tabLocks = Locks_GetUserLocks();
   
   //Formatage du résultat en HTML
   var retHtml = "";
   if (tabLocks)
   {
       retHtml = Locks_FloraLocksToHtml(tabLocks, false);
       //Affichage des locks
       Locks_PrintDiv(viewLocks, retHtml); 
       //Activation du bouton permettant de supprimer les locks    
       var divButton = document.getElementById(viewButtonLock);
       divButton.style.display = "block";       
   }
}

//Affichage des locks du système
function Locks_PrintSystemLocks(viewLocks, viewButtonLock)
{
   //Récupération des locks
   var tabLocks = Locks_GetSystemLocks();
   
   //Formatage du résultat en HTML
   var retHtml = "";
   if (tabLocks)
   {
       retHtml = Locks_FloraLocksToHtml(tabLocks, true);
       //Affichage des locks
       Locks_PrintDiv(viewLocks, retHtml);    
       //Activation du bouton permettant de supprimer les locks    
       var divButton = document.getElementById(viewButtonLock);
       divButton.style.display = "block";              
   }
}


//Formatage d'un tableau d'objets FloraLock en HTML
//Si chooseLocks = true, possibilité de choisir le lock à supprimer
//Si chooseLocks = false, pas de possibilité de choisir le lock à supprimer.
function Locks_FloraLocksToHtml(tabFloraLocks, chooseLocks)
{
   if (chooseLocks)
   {
      var tableBegin = "<table align=\"left\" border=\"1\" cellpadding=\"1\" cellspacing=\"0\" style=\"border-collapse: collapse\" >";
      var labelsLine = "<tr><th>" + mess_locks_ident
                        + "</th><th>" + mess_locks_user_code
                        + "</th><th>" + mess_locks_user_remoteClient
                        + "</th><th>" + mess_locks_select
                        + "</th></tr>";   
   }
   else
   {
      var tableBegin = "<table align=\"left\" border=\"1\" cellpadding=\"1\" cellspacing=\"0\" style=\"border-collapse: collapse\" >";
      var labelsLine = "<tr><th>" + mess_locks_ident
                        + "</th><th>" + mess_locks_user_code
                        + "</th><th>" + mess_locks_user_remoteClient
                        + "</th></tr>";   
   }
   
   var tableEnd = "</table>";                     
   var contentHtml = "";
   var retHtml;

   for (var i=0; i< tabFloraLocks.length; i++)
   {
      var curLock = tabFloraLocks[i];
      var lockId = curLock.Id;
      var userCode = curLock.userCode;
      var remoteClientId = curLock.remoteClientId;
      if (chooseLocks)
      {
         contentHtml = contentHtml + "<tr><td>" + lockId + "</td><td>" + userCode + "</td><td>" + remoteClientId 
                       + "</td><td>" + "<INPUT type=\"checkbox\" name=\"ID_LOCK_" + lockId + "\">"
                       + "</td></tr>";      
      }
      else
      {
         contentHtml = contentHtml + "<tr><td>" + lockId + "</td><td>" + userCode + "</td><td>" + remoteClientId + "</td></tr>";
      }
   }     
   retHtml = tableBegin + labelsLine + contentHtml + tableEnd;   
   return retHtml;
}

//Fournit un tableau d'objets représentant les locks du système
function Locks_GetSystemLocks()
{
   var action = ADMIN_MANAGER + "action=getSystemLocks";
   var xmlDoc = XMLUtil_LoadXML(action);
   var floraLocks = xmlDocToFloraLocks(xmlDoc);
   return floraLocks;
}


//Fournit un tableau d'objets représentant les locks du user connecté
function Locks_GetUserLocks()
{
   var action = ADMIN_MANAGER + "action=getUserLocks";
   var xmlDoc = XMLUtil_LoadXML(action);
   var floraLocks = xmlDocToFloraLocks(xmlDoc);
   return floraLocks;
}


// Décode le document au format :
//     <locks>
//     <lock lockId=id du lock>
//     <userCode>code du user</userCode>
//     <remoteClientId>remote clientId du lock</remoteClientId> 
//     </locks>
// Retourne un tableau d'objets FloraLock
function xmlDocToFloraLocks(xmlDoc)
{
   var ret = null;
   var items = xmlDoc.getElementsByTagName("lock");
   
   if ( (items != null) && (items.length > 0) )
   {
      ret = new Array(items.length);
      for (var i=0; i< items.length; i++)
      {         
         var item = items[i];         
         var lockId = item.getAttribute("lockId");
         var tags = XMLUtil_getChildElements(item);
         var userCode = "";
         var remoteClientId = "";
         if ( tags && tags.length > 0 )
         {
            for (var j=0; j<tags.length; j++)
            {
               var curTag = tags[j];
               var code = curTag.nodeName;
               var value = XMLUtil_getElementContent(curTag);               
               if ( code == "userCode" )
               {
                  userCode = value;
               }
               if ( code == "remoteClientId" )
               {
                  remoteClientId = value;
               }               
               
            }
         }                 
         var floraLock = new FloraLock(lockId, userCode, remoteClientId);         
         ret[i] = floraLock;
      }
   }
   return ret;
}



/// -----------------------------------------------------------------------------
/*
* Déclaration de l'objet FloraLock
*/
/// -----------------------------------------------------------------------------
function FloraLock(Id, userCode, remoteClientId)

{
   this.Id = Id;
   this.userCode = userCode;
   this.remoteClientId = remoteClientId;
   return this;
}



function Locks_PrintDiv(divname, divstr)
{
   var vMsgDiv = document.getElementById(divname);
   vMsgDiv.innerHTML = '';
   vMsgDiv.style.display = 'none';               
   vMsgDiv.innerHTML = divstr;
   vMsgDiv.style.display = 'block';
}

function Locks_LockRecords(recordId, params)
{
   var isFree = true;
   if( (recordId) && (recordId != '') )
   {
      var url = ADMIN_MANAGER;
      url += "action=" + "lockRecords";
      url += "&recordId=" + myEscape(recordId);
      var xmlDoc = XMLUtil_LoadXML(url);
      var errMsg = XMLUtil_IsError(xmlDoc);
      if ( errMsg )
      {
         if(params)
         {
            params["msg"] = errMsg;
         }
         isFree = false;
      }
   }
   return isFree;
}

function Locks_UnlockRecords(recordId, params)
{
   var isFree = true;
   if( (recordId) && (recordId != '') )
   {
      var url = ADMIN_MANAGER;
      url += "action=" + "unlockRecords";
      url += "&recordId=" + myEscape(recordId);
      var xmlDoc = XMLUtil_LoadXML(url);
      var errMsg = XMLUtil_IsError(xmlDoc);
      if ( errMsg )
      {
         if(params)
         {
            params["msg"] = errMsg;
         }
         isFree = false;
      }
   }
   return isFree;
}
