/*
* 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 = 'DE'; // language to start with (default language)
var aAvailableLanguages = new Array('EN','DE'); // 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);