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