/**************************************************************************/
/*                                                                        */
/* Copyright (c) 2004, 2005 NoMachine, http://www.nomachine.com.          */
/*                                                                        */
/* NXMANAGER, NX protocol compression and NX extensions to this software  */
/* are copyright of NoMachine. Redistribution and use of the present      */
/* software is allowed according to terms specified in the file LICENSE   */
/* which comes in the source distribution.                                */
/*                                                                        */
/* Check http://www.nomachine.com/licensing.html for applicability.       */
/*                                                                        */
/* NX and NoMachine are trademarks of Medialogic S.p.A.                   */
/*                                                                        */
/* All rights reserved.                                                   */
/*                                                                        */
/**************************************************************************/


function initMessages(addToMessage)
{
  var listMessages = new Array();

  var adding = new Array();
  adding = addToMessage.split("-- addMessage --");

  // START MESSAGES FOR ACTION LOGIN

  listMessages["login.nxmanager.cookies"] = "Please, enable cookies in your browser to login.";
  listMessages["login.nxmanager.failed"] = "Login failed. Please, check your username and password.";
  listMessages["login.nxmanager.ok"] = "User logged in.";
  listMessages["login.nxmanager.ok.admin"] = "User logged in as administrator.";
  listMessages["login.nxserver.failed"] = "Login failed. The NX server refused your authentication.";
  listMessages["login.nxmanager.failed.nopermission"] = "Access denied. The NX Server Manager is configured to allow access only to the servers listed in the Web Application.";
  
  // END MESSAGES FOR ACTION LOGIN

  //START MESSAGES FOR ACTION ADD OR NEW

  // Administrators
  listMessages["add.administrators.username.empty"] = "Username can't be empty or contain special characters.";
  listMessages["add.administrators.password.mismatch"] = "Passwords do not match.";
  listMessages["add.administrators.password.characters"] = "Password must contain at least 5 characters.";
  listMessages["add.administrators.ok"] = "Added user "+adding[0]+" to NX Server Manager.";
  listMessages["add.administrators.error"] = "Can't add user "+adding[0]+" to NX Server Manager.";
  listMessages["add.administrators.restriction"] = "Only the NX Server Manager administrator can add users to NX Server Manager.";

  // Servers
  listMessages["add.servers.ok"] = "Added NX server "+adding[0]+".";
  listMessages["add.servers.none"] = "Can't add NX server "+adding[0]+".";
  listMessages["add.servers.empty.field"] = "Can't add NX server. Please fill all fields.";
  listMessages["add.servers.already.exist"] = "Can't add NX server "+adding[0]+". Server already exists.";
  // Users
  listMessages["add.users.username"] = "Username is not valid.";
  listMessages["add.users.password.mismatch"] = "Passwords do not match.";
  listMessages["add.users.password.characters"] = "Password must contain at least 5 characters.";
  listMessages["add.users.ok"] = "Added user "+adding[0]+" to NX server.";
  listMessages["add.users.none"] = "Can't add user "+adding[0]+" to NX server.";
  listMessages["add.users.already.exists"] = "NX user "+adding[0]+" already exists.";
  listMessages["add.users.privileges"] = "Only the NX administrator can add users to NX server.";
  listMessages["add.manager.user.already.exist"] = "Can't add user "+adding[0]+". User already exists.";
  
  //END MESSAGES FOR ACTION ADD OR NEW


  // START MESSAGES FOR ACTION MODIFY

  // Account
  listMessages["modify.account.nxmanager.password"] = "Password can't be empty or contain special characters.";
  listMessages["modify.account.nxmanager.password.mismatch"] = "Passwords do not match.";
  listMessages["modify.account.nxmanager.password.ok"] = "Your NX Server Manager password has been changed.";
  listMessages["modify.account.nxserver.password"] = "Password can't be emtpy, shorter than 5 chars or contain special characters.";
  listMessages["modify.account.nxserver.password.mismatch"] = "Passwords do not match.";
  listMessages["modify.account.nxserver.password.current"] = "Wrong current password.";
  listMessages["modify.account.nxserver.password.ok"] = "Your NX password has been changed.";
  listMessages["modify.account.nxserver.password.system.ok"] = "Your system password has been changed.";
  listMessages["modify.account.nxserver.password.none"] = "Can't change your password.";

  // Administrators
  listMessages["modify.administrators.choose"] = "Please choose the NX Server Manager user you want to modify.";
  listMessages["modify.administrators.password.characters"] = "Password must contain at least 5 characters.";
  listMessages["modify.administrators.password.mismatch"] = "Passwords do not match.";
  listMessages["modify.administrators.restriction"] = "Only the NX Server Manager administrator can modify NX Server Manager accounts.";
  listMessages["modify.administrators.password.ok"] = "Password for NX Server Manager user "+adding[0]+" has been changed.";

  // Servers
  listMessages["modify.servers.choose"] = "Please choose the NX server you want to modify.";
  listMessages["modify.servers.ok"] = "NX server "+adding[0]+" has been modified.";
  listMessages["modify.servers.none"] = "Can't modify NX server "+adding[0]+".";

  // Options
  listMessages["modify.restrictions.ok"] = "Permissions have been updated.";
  listMessages["modify.restrictions.none"] = adding[0]+".";

  // Users
  listMessages["modify.users.choose"] = "Please choose the NX user you want to modify.";
  listMessages["modify.users.password.mismatch"] = "Passwords do not match.";
  listMessages["modify.users.password.characters"] = "Password must contain at least 5 characters.";
  listMessages["modify.users.password.current"] = "Wrong current password.";
  listMessages["modify.users.ok"] = "Password for NX user "+adding[0]+" has been changed.";
  listMessages["modify.users.system.ok"] = "System password for NX user "+adding[0]+" has been changed.";
  listMessages["modify.users.none"] = "Can't change password for NX user "+adding[0]+".";

  // Configuration
  listMessages["modify.configuration.ok"] = "Configuration has been updated.";

  // END MESSAGES FOR ACTION MODIFY


  // START MESSAGES FOR ACTION DELETE

  // Administrators
  listMessages["delete.administrators.choose"] = "Please choose the NX Server Manager user you want to remove.";
  listMessages["delete.administrators.restriction"] = "Only the NX Server Manager administrator can remove NX Server Manager users.";
  listMessages["delete.administrators.ok"] = "NX Server Manager user "+adding[0]+" has been removed.";
  listMessages["delete.administrators.error"] = "Can't remove NX Server Manager user "+adding[0]+".";
  listMessages["delete.administrators.yourself"] = "You can't remove your own account.";

  // Servers
  listMessages["delete.servers.choose"] = "Please choose the NX server you want to remove.";
  listMessages["delete.servers.ok"] = "NX server "+adding[0]+" has been removed.";
  listMessages["delete.servers.none"] = "Can't remove NX server "+adding[0]+".";

  // Users
  listMessages["delete.users.choose"] = "Please choose the NX user you want to remove.";
  listMessages["delete.users.privileges"] = "Only the NX administrator can remove NX users.";
  listMessages["delete.users.username"] = "Username is not valid.";
  listMessages["delete.users.ok"] = "NX user "+adding[0]+" has been removed.";
  listMessages["delete.users.none"] = "Can't remove NX user "+adding[0]+".";
    listMessages["delete.users.yourself"] = "You can't remove your own NX account.";

  // END MESSAGES FOR ACTION DELETE


  // START MESSAGES FOR OTHER ACTION

  listMessages["general.error"] = adding[0]+".";

  // Administrators
  listMessages["details.administrators.choose"] = "Please choose an user.";

  // Servers
  listMessages["details.servers.choose"] = "Please choose a NX server.";
  listMessages["restriction.servers.general"] = "Only the administrator can "+adding[0]+".";

  //Users
  listMessages["show.sessions.users.choose"] = "Please choose a NX user.";
  listMessages["enable.disable.users.choose"] = "Please choose the NX user you want to enable or disable.";
  listMessages["enable.users.choose"] = "Please choose the NX user you want to enable.";
  listMessages["disable.users.choose"] = "Please choose the NX user you want to disable.";
  listMessages["enable.users.username"] = "Username is not valid.";
  listMessages["enable.users.ok"] = "Enabled NX user "+adding[0]+".";
  listMessages["enable.users.none"] = "Can't enable NX user "+adding[0]+".";
  listMessages["enable.users.none.already"] = "NX user "+adding[0]+" is already enabled.";
  listMessages["enable.users.not.administartor"] = "Only the NX administrator can enable NX users.";
  listMessages["disable.users.username"] = "Username is not valid.";
  listMessages["disable.users.ok"] = "Disabled NX user "+adding[0]+".";
  listMessages["disable.users.none"] = "Can't disable NX user "+adding[0]+".";
  listMessages["disable.users.none.already"] = "NX user "+adding[0]+" is already disabled.";
  listMessages["disable.users.not.administartor"] = "Only the NX administrator can disable NX users.";
  listMessages["enable.disable.users.username"] = "Username is not valid.";
  listMessages["enable.disable.users.ok"] = "NX user "+adding[0]+".";
  listMessages["enable.disable.users.none"] = "NX user "+adding[0]+".";

  // Session
  var sessions = "session: "+adding[0];
  if(adding[0].indexOf(",") != (-1))
  {
    sessions = "sessions: "+adding[0];
  }
  listMessages["suspend.sessions.choose"] = "Please choose the NX session you want to suspend.";
  listMessages["suspend.sessions.none.general"] = "Can't suspend the NX session.";
  listMessages["suspend.sessions.none.following"] = "Can't suspend the following NX "+sessions+".";
  listMessages["suspend.sessions.ok"] = "Request for suspending NX session "+adding[0]+" has been sent.";
  listMessages["suspend.sessions.none"] = "Not all the NX session/s have been suspended.";
  listMessages["terminate.sessions.choose"] = "Please choose the NX session you want to terminate.";
  listMessages["terminate.sessions.none.general"] = "Can't terminate the NX session "+adding[0]+".";
  listMessages["terminate.sessions.none.following"] = "Can't terminate the following NX "+sessions+".";
  listMessages["terminate.sessions.ok"] = "Request for terminating NX session "+adding[0]+" has been sent.";
  listMessages["terminate.sessions.none"] = "Not all the NX session/s have been terminated.";
  listMessages["send.sessions.message.ok"] = "Message has been sent.";
  listMessages["send.sessions.message.none"] = "Only the NX Manger administrator can send a message.";
  listMessages["details.sessions.choose"] = "Please choose a NX session.";
  listMessages["details.sessions.choose.one"] = "Please choose only one NX session.";
  listMessages["get.log.sessions.not.running"] = "Can't retrieve information about a not running session.";

  // END MESSAGES FOR OTHER ACTION

  return listMessages;
}

function getMessage(messageType)
{
  var message = '';
  if(messageType != '' && messageType)
  {
    var listMessages = new Array();

    var adding = new Array();
    adding = messageType.split("-- separator --");

    var typeMessage = adding[0];

    var addToMessage = "";
    if(adding[1])
    {
      addToMessage = adding[1];
    }

    listMessages = initMessages(addToMessage);

    if(!listMessages[typeMessage])
    {
      listMessages[typeMessage] = "Message: "+messageType;
    }

    message = listMessages[typeMessage];
  }

  return message;
}

function showMessage(messageType, divName)
{
  var messageText = getMessage(messageType);
  var divMessages = new Array();

  // Path of the alert image located before the message
  var iconAlertSrc = '/nxmanager/images/shared/icon_alert.gif';

  var noMessageShown = true;

  // Names of the div tags message in the templates
  divMessages[0] = "bottom_message";

  if(divName)
  {
    divMessages[divMessages.length] = divMessages[0]+""+divName;
  }

  for(var i = 0;i < divMessages.length;i++)
  {
    if(document.getElementById && document.createTextNode &&
       document.getElementById(divMessages[i]) && document.getElementById(divMessages[i]).hasChildNodes())
    {
      var message = document.createTextNode(messageText);

      var icon = document.createElement('img');
      icon.setAttribute('src', iconAlertSrc);
      icon.setAttribute('name', 'icon_alert');

      var objTagMessage, objTagMessageAll;

      objTagMessage = document.getElementById(divMessages[i]);

      if(objTagMessage.getElementsByTagName('td').item('td_icon_alert'))
      {
        while(objTagMessage.getElementsByTagName('td').item('td_icon_alert').firstChild)
        {
          objTagMessage.getElementsByTagName('td').item('td_icon_alert').removeChild(objTagMessage.getElementsByTagName('td').item('td_icon_alert').firstChild);
        }
        objTagMessage.getElementsByTagName('td').item('td_icon_alert').appendChild(icon);
      }

      if(objTagMessage.getElementsByTagName('b').item('bold_message'))
      {
        while(objTagMessage.getElementsByTagName('b').item('bold_message').firstChild)
        {
          objTagMessage.getElementsByTagName('b').item('bold_message').removeChild(objTagMessage.getElementsByTagName('b').item('bold_message').firstChild);
        }
        objTagMessage.getElementsByTagName('b').item('bold_message').appendChild(message);
      }
      noMessageShown = false;
    }
  }

  if(noMessageShown)
  {
    alert(messageText);
  }
}

function emptyMessagePanel(divNames)
{
  var arrDivNames = new Array();
  arrDivNames = divNames.split(",");
  for(var i = 0;i < arrDivNames.length;i++)
  {
    if(document.getElementById && document.createTextNode && document.getElementById(arrDivNames[i]))
    {
      var objToEmpty = document.getElementById(arrDivNames[i]);
      while(objToEmpty.firstChild)
      {
        objToEmpty.removeChild(objToEmpty.firstChild);
      }
    }
  }
}
