/*

  (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;
  
//alert(rootElement);

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

  /* get various messages from a single element definition in the language XML */
  var langElements = new Array ("messages", "desktop", "usermenu","status");
	var statLang = new Array ();
  for (lEkey in langElements) {
    var langInfoElement = rootElement.getElementsByTagName (langElements[lEkey]).item (0);
    if (langInfoElement.nodeType == Node.ELEMENT_NODE) {
      var attributes = langInfoElement.attributes;
	
	if( langElements[lEkey] == 'status' )
	{
		for(j = 0; j < attributes.length;j++)	
		{
			//alert('attributes.item (i).nodeValue: '+attributes.item (j).nodeValue);
			statLang[j+1] = attributes.item (j).nodeValue;
		}
		continue;
	}
      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");
  
 
  
  //for (i = 0; i < statuses.attributes.length; i++)
     //   alert('***' + statuses.attributes.item (i).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 */
var globalLang = "";


function getLanguageString (langType, langStr, lg, formatInfo) {

if( config["currentLanguage"]=="ar" || config["currentLanguage"]=="he" )
	{
		if( globalLang != config["currentLanguage"] )
		{
			var elem1 = document.getElementById("chatMessages");
			var elem3 = document.getElementById("chatMessages");
			var elem2 = document.getElementById("userTextInput");
			var elem4 = document.getElementById("optionsWindow");
			if( elem1!= null && elem2!=null )
			{
				elem1.setAttribute ("dir", "rtl");
				elem2.setAttribute ("dir", "rtl");
				if(elem4!=null)
					elem4.setAttribute ("dir", "rtl");
				globalLang = config["currentLanguage"];
			}
			for( i in privateArrayWin)
			{
				var elemBox = document.getElementById("userpwMessages"+i);
				var elemInp = document.getElementById("userDivInput"+i);
				if( elemInp!=null && elemInp!=null)
				{
					elemInp.setAttribute ("dir", "rtl");
					elemBox.setAttribute ("dir", "rtl");
				}
			}
		}
	}
	else
	{
		if( globalLang != config["currentLanguage"] )
		{
			var elem1 = document.getElementById("chatMessages");
			var elem2 = document.getElementById("userTextInput");
			var elem4 = document.getElementById("optionsWindow");
			if( elem1!= null && elem2!=null )
			{
				elem1.setAttribute ("dir", "ltr");	
				elem2.setAttribute ("dir", "ltr");
				if(elem4!=null)
					elem4.setAttribute ("dir", "ltr");
				globalLang = config["currentLanguage"];
			}
			for( i in privateArrayWin)
			{
				var elemBox = document.getElementById("userpwMessages"+i);
				var elemInp = document.getElementById("userDivInput"+i);
				if( elemInp!=null && elemInp!=null)
				{
					elemInp.setAttribute ("dir", "ltr");
					elemBox.setAttribute ("dir", "ltr");
				}
			}
		}
	}
  var str = null;
  
switch (langType) {
    case "login":
      str = loginLangs[lg][langStr];
      break;

    case "dialog":
      var splitStr = langStr.split (":");
	  
	  if(splitStr[1]==undefined || splitStr[1]==null)
	  {
	  	//alert(langStr);
		splitStr[1] = "okBtn";
		str = splitStr[0];
		break;
	}
	  
      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);


  return (str);
}
function setLangsArray(langType)
{

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

    case "dialog":
      var splitStr = langStr.split (":");
	  
	  if(splitStr[1]==undefined || splitStr[1]==null)
	  {
	  	//alert(langStr);
		splitStr[1] = "okBtn";
		str = splitStr[0];
		break;
	}
	  
      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 */

