/*
 * Shows document in specified language, via Javascript
 * For use with phpwcms language extensions
 *
 * Remembers user preferred language via cookies. Language cookie expires at end of session (browser close)
 */
var strCurrentLanguage = 'IT';                           // language to start with (default language)
var aAvailableLanguages = new Array('IT','EN');     // array pf available languages in the document
var strLanguageCookieName = 'currentLanguage';           // name of the cookie where selected language is stored
var strInvisibleOnLoadClass = 'invisibleonload';         // name of the class wick marks elements invisible on page load (this script makes them visible)
var bLanguageDebug = false;                              // if set to true show alerts during transoformation steps


// ----------------------------------------------------------------------
// Do not edit below this line
// ----------------------------------------------------------------------
function addEventFunction(strEvent, fFunction, oObject)
{
 if (!oObject) oObject = window;
 if (oObject.addEventListener) {
   oObject.addEventListener(strEvent, fFunction, true);
   return true;
 } else if (oObject.attachEvent) {
   return oObject.attachEvent('on'+strEvent, fFunction);
 } else {
   return false;
 }
}
function setLanguageCookie()
{
 document.cookie = strLanguageCookieName+"="+strCurrentLanguage;
}
function getLanguageCookie() {
 var strCookie=""+document.cookie;
 var iPos=strCookie.indexOf(strLanguageCookieName);
 if (iPos==-1) return "";
 var iPos2=strCookie.indexOf(';',iPos);
 if (iPos2==-1) iPos2=strCookie.length;
 return unescape(strCookie.substring(iPos+strLanguageCookieName.length+1,iPos2));
}
function langTagOpen(strLanguage)
{
	return '{'+strLanguage+'}';
}
function langTagClose(strLanguage)
{
	return '{/'+strLanguage+'}';
}
function stripLanguage(strText,strLanguage)
{
	var aSplittedText = strText.split(langTagOpen(strLanguage));
	var strLanguageText = aSplittedText[0];
	for (var i = 1; i < aSplittedText.length; i++) {
	    var aSplittedText2 = aSplittedText[i].split(langTagClose(strLanguage));
       strLanguageText += aSplittedText2[1];
   }
   return strLanguageText;
}
function parseTextLanguage(strText)
{
	var strLanguageText = strText;
	for (var i = 0; i < aAvailableLanguages.length; i++) {
	   if (aAvailableLanguages[i] != strCurrentLanguage) {
	      strLanguageText = stripLanguage(strLanguageText,aAvailableLanguages[i]);
      }
   }
   strLanguageText = strLanguageText.replace(new RegExp(langTagOpen(strCurrentLanguage),"g"),'');
   strLanguageText = strLanguageText.replace(new RegExp(langTagClose(strCurrentLanguage),"g"),'');
   return strLanguageText;
}
function parseLanguageDocument()
{
	if (bLanguageDebug) alert('languages.js: Starting...');
   var prefLanguage = getLanguageCookie();
   var prefOk = false;
	for (var i = 0; i < aAvailableLanguages.length; i++) {
	   if (aAvailableLanguages[i] == prefLanguage) prefOk = true;
   }
   if (!prefOk)
      setLanguageCookie();
   else {
        strCurrentLanguage = prefLanguage;
        setLanguageCookie();
   }
   parseLanguageElements();
	if (bLanguageDebug) alert('languages.js: Translation done.');
}
function parseLanguageElements(oNode)
{
	if (!oNode) oNode = document.body;
	if (strInvisibleOnLoadClass=="") return;
	if (oNode.className == strInvisibleOnLoadClass) {
	   if (!oNode.innerHTML) return;
	   if (!oNode.originalHTML) oNode.originalHTML = oNode.innerHTML;
	   oNode.innerHTML = parseTextLanguage(oNode.originalHTML);
	   if (bLanguageDebug) alert('languages.js: Translated block.');
		oNode.style.visibility = 'visible';
	   if (bLanguageDebug) alert('languages.js: Block made visible.');
   }
	if (!oNode.childNodes) return;
	for (var i = 0; i < oNode.childNodes.length; i++)
		parseLanguageElements(oNode.childNodes[i]);
}
function changeLanguage(strLanguage)
{
	if (strLanguage == strCurrentLanguage) return;
	for (var i = 0; i < aAvailableLanguages.length; i++) {
	   if (aAvailableLanguages[i] == strLanguage) {
	      strCurrentLanguage = strLanguage;
         setLanguageCookie();
	      parseLanguageElements();
      }
   }
}
addEventFunction('load',parseLanguageDocument);
