/*

  (c) 2006 TUFaT.com. All Rights Reserved

*/

var lang = new Array ();
var dialogLang = new Array ();
var loginLangs = new Array ();

/*

  Constructs 2 arrays:
  - lang, that contains lang["identifier"] with the translation, for general purpose langs
  - dialogLang, that contains dialogLang["dialogId"]["identifier"] with the proper translation

*/

function setLanguageFromXML (xmlDOMObj, xmlString) {

  var domDocument = xmlDOMObj.parseXMLString (xmlString);
  if (! domDocument)
    return null;

  var rootElement = domDocument.documentElement;

  config["currentLanguage"] = rootElement.getAttribute ("id");

  /* get various messages from a single element definition in the language XML */
  var langElements = new Array ("messages", "desktop", "usermenu");

  for (lEkey in langElements) {
    var langInfoElement = rootElement.getElementsByTagName (langElements[lEkey]).item (0);

    if (langInfoElement.nodeType == Node.ELEMENT_NODE) {
      var attributes = langInfoElement.attributes;

      for (i = 0; i < attributes.length; i++)
        lang[attributes.item (i).nodeName] = attributes.item (i).nodeValue;
    } /* if element Node */
  } /* end for lEkey */

  /* now, gets specific type of dialogs */
  var dialogElements = rootElement.getElementsByTagName ("dialog");

  for (i = 0; i < dialogElements.length; i++) {
    var dialogElement = dialogElements.item (i);
    var dEId = dialogElement.getAttribute ("id");

    if (dEId == null)
      continue;

    attributes = dialogElement.attributes;

    dialogLang[dEId] = new Array ();

    for (j = 0; j < attributes.length; j++)
      if (attributes[j].nodeName != "id")
        dialogLang[dEId][attributes.item (j).nodeName] = attributes.item (j).nodeValue;
  }

  var statuses = rootElement.getElementsByTagName ("status").item (0);
  var statLang = new Array ();
  statLang[1] = statuses.getAttribute ("here");
  statLang[2] = statuses.getAttribute ("busy");
  statLang[3] = statuses.getAttribute ("away");
  statLang[4] = statuses.getAttribute ("brb");

  dialogLang["statuses"] = statLang;

} /* end of setLanguageFromXML */

function getLanguageString (langType, langStr, lg, formatInfo) {
  var str = null;

  switch (langType) {
    case "login":
      str = loginLangs[lg][langStr];
      break;

    case "dialog":
      var splitStr = langStr.split (":");
      str = dialogLang[splitStr[0]][splitStr[1]];
      if (str == null)
        str = defaultDialogLang[splitStr[0]][splitStr[1]];

      break;

    case "lang":
    
      str = lang[langStr];
      //alert(str);
      //writeDebug(str + "\n<br>")
    //
      if (str == null)
        str = defaultLang[langStr];

      break;

    default:
      str = langStr;
  }

  if (formatInfo != null) {
    str = languageStringFormat (str, formatInfo);
  }

  return (str);
}

function languageStringFormat (inputString, formatInfo) {
  var tmpString = inputString;

  if (tmpString == null)
    return "";

  if (formatInfo["user"] != null) {
    tmpString = tmpString.replace ("USER_LABEL", formatInfo["user"]);
    tmpString = tmpString.replace ("USER", formatInfo["user"]);
  }

  if (formatInfo["room"] != null)
    tmpString = tmpString.replace ("ROOM_LABEL", formatInfo["room"]);

  if (formatInfo["time"] != null)
    tmpString = tmpString.replace ("TIMESTAMP", formatInfo["time"]);
  
  if (formatInfo["minutes"] != null)
    tmpString = tmpString.replace ("MINUTES", formatInfo["minutes"]);
  
  if (formatInfo["duration"] != null)
    tmpString = tmpString.replace ("DURATION", formatInfo["duration"]);

  if (formatInfo["ucount"] != null)
    tmpString = tmpString.replace ("USER_COUNT", formatInfo["ucount"]);

  /* TODO: implement this. For now, just delete it. */
  tmpString = tmpString.replace ("AVATAR", "");

  return (tmpString);
} /* end of languageStringFormat */

