/*
 * 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)
 * Code - Luca Malisan (www.malisan.it); Concept - Fulvio Romanin (www.fulvioromanin.it)
 * this is open source, etc. etc. - you know the deal :)
 */
var strCurrentLanguage = 'FR';                           // language to start with (default language)
var aAvailableLanguages = new Array('FR','EN','DE', "ES");     // array pf available languages in the document
var strLanguageCookieName = 'currentLanguage';           // name of the cookie where selected language is stored


// ----------------------------------------------------------------------
// Do not edit below this line
// ----------------------------------------------------------------------
var strOriginalText = null;
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 parseObjectLanguage(oObject)
{
	if (!oObject) oObject = document.body;
	if (!oObject.innerHTML) return;
	if (!strOriginalText) strOriginalText = oObject.innerHTML;
	oObject.innerHTML = parseTextLanguage(strOriginalText);
}
function parseDocumentLanguage()
{
   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();
   }
	parseObjectLanguage(document.body);
}
function changeLanguage(strLanguage)
{
	for (var i = 0; i < aAvailableLanguages.length; i++) {
	   if (aAvailableLanguages[i] == strLanguage) {
	      strCurrentLanguage = strLanguage;
         setLanguageCookie();
	      parseObjectLanguage(document.body);
      }
   }
}
addEventFunction('load',parseDocumentLanguage);
