// Recursively loop through all frames and translate all frames below
function ShowTextInLanguageFrames(thewindow, lang)
{	
	// translation of current window			
	translateInWindow(thewindow, lang)

	if (thewindow.frames)
	{ // there are frames in this window
		var i = 0;
		for(i = 0; i < thewindow.frames.length; i++)
		{
			if (thewindow.frames[i])
			{				
				if (thewindow.frames[i].window != thewindow)
				{ // we are a level lower => recursion
					ShowTextInLanguageFrames(thewindow.frames[i].window,lang);
				}
			}
		}
	} 
}

// Looks for all spans with a name equal to 'en' or 'nl'. Show/hide this span depending on the language
function translateInWindow(thewindow, lang)
{
  	
	var allSpans = thewindow.document.getElementsByTagName('span');
	for(i = 0; i < allSpans.length; i++) 
	{
	      att = allSpans[i].getAttribute("name");
	      
	      if(att == 'en' || att == 'nl') 
	      {
	      	if(att == lang) 
	      	{
		    allSpans[i].style.display='inline';	      					
	     	}
	     	else
	     	{	     	
		    allSpans[i].style.display='none';			
  		}
	      }
     	}
}

// Start of recursive translation, saving the state in a cookie
function ShowTextsInLanguage(lang) 
{
	createCookie('lang',lang, 1000);
	ShowTextInLanguageFrames(top, lang, 0);
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

// return ISO-code of language
function getCodeLangueNavig() {
  var lct="en";
  if (navigator.language) {
    lct=navigator.language.toLowerCase().substring(0, 2);
  } else if (navigator.userLanguage) {
    lct=navigator.userLanguage.toLowerCase().substring(0, 2);
  } else if (navigator.userAgent.indexOf("[")!=-1) {
    var debut=navigator.userAgent.indexOf("[");
    var fin=navigator.userAgent.indexOf("]");
    lct=navigator.userAgent.substring(debut+1, fin).toLowerCase();
  }
  return lct;
} 

//when page loads, find language in cookie or language in browser, set this language
function theTranslateOnLoadFunction() 
{  
	var lang = readCookie('lang');
	if (!lang)
	{
		lang = getCodeLangueNavig();		
	}
	
	// translate current window only
	translateInWindow(window, lang)
}


function addLoadEvent(func) { 
	  var oldonload = window.onload; 
	  if (typeof window.onload != 'function') { 
	    window.onload = func; 
	  } else { 
	    window.onload = function() { 
	      if (oldonload) { 
	        oldonload(); 
	      } 
	      func(); 
	    } 
	  } 
	} 

addLoadEvent(theTranslateOnLoadFunction);
