		function languagesUpdate(searchLng,lng2,lng3)
		{
			searchLanguagesUpdate(searchLng);
			additionnalLanguages(lng2,lng3);
		}


		function searchLanguagesUpdate(searchLng)
		{
			var checkedDicts=new Array();
			var lngsCount=new Array();
			var aDicts=getDicts();
			
			for (var i=0;i<aDicts.length;i++) {
				var dictId=aDicts[i].value;

				if (aDicts[i].checked)
					checkedDicts[checkedDicts.length]=dictId;
					
				for (var j=0;j<dictLanguages[dictId].length;j++) {
					var lng=dictLanguages[dictId][j];
					if (languagesDefs[lng][1]) {
						if (aDicts[i].checked)
							lngsCount[lng] = (lngsCount[lng]) ? lngsCount[lng]+1:1;
						else
							lngsCount[lng] = (lngsCount[lng]) ? lngsCount[lng]:0;
					}
				}
			}

			var aLanguages=new Array();
			for (var lng in lngsCount) {
				if ( (lngsCount[lng]==checkedDicts.length)||(checkedDicts.length==0) )
					aLanguages.push(lng)
			}

			var oContainer=document.getElementById('lngContainer');
			var oReplaceSelect=makeLanguageSelector(aLanguages,'lngSearch',searchLng);
			if (oReplaceSelect)
				oContainer.appendChild(oReplaceSelect);
		}

		function getDicts()
		{
			var aInputs=document.getElementsByTagName('input');
			var aDicts=new Array();// obligé de mettre dict[] comme nom pour faire plaisir à PHP<4.3

			for (var i=0;i<aInputs.length;i++) {
				if (aInputs[i].className=='cdict')
					aDicts[aDicts.length]=aInputs[i];
			}
			return aDicts;
		}

		function additionnalLanguages(lng2,lng3)
		{
			var checkedDicts=new Array();
			var lngsCount=new Array();
			
			var aDicts=getDicts();
			for (var i=0;i<aDicts.length;i++) {
				var dictId=aDicts[i].value;

				if (aDicts[i].checked)
					checkedDicts[checkedDicts.length]=dictId;
				
				for (var j=0;j<dictLanguages[dictId].length;j++) {
					var lng=dictLanguages[dictId][j];
	
					if (aDicts[i].checked)
						lngsCount[lng] = 1;
					else
						lngsCount[lng] = (lngsCount[lng]) ? lngsCount[lng]:0;	
				}
			}

			var aLanguages=new Array();
			for (var lng in lngsCount) {
				if ( (lngsCount[lng])||(checkedDicts.length==0) )
					aLanguages.push(lng)
			}

			var oReplaceSelect=makeLanguageSelector(aLanguages,'lng2',lng2);
			var oContainer=document.getElementById('lng2Container');
			if (oReplaceSelect)
				oContainer.appendChild(oReplaceSelect);

			oReplaceSelect=makeLanguageSelector(aLanguages,'lng3',lng3);
			oContainer=document.getElementById('lng3Container');
			if (oReplaceSelect)
				oContainer.appendChild(oReplaceSelect);
		}

		function makeLanguageSelector(aLanguages,id,selected)
		{
			var oSelect=document.getElementById(id);
			if (oSelect)
				oSelect.parentNode.removeChild(oSelect);

			var oReplaceSelect=document.createElement("select");
			oReplaceSelect.id=id;
			oReplaceSelect.name=id;
			for (var i=0;i<aLanguages.length;i++) {
				var lng=aLanguages[i];
				oOption=document.createElement("option");
				oOption.value=lng;
				oOption.text=languagesDefs[lng][0];
				oOption.innerText=languagesDefs[lng][0];
				oReplaceSelect.appendChild(oOption);
				if (selected==lng)
					oReplaceSelect.selectedIndex=i;
			}
			if (oReplaceSelect.options.length==0) {
				oOption=document.createElement("option");
				oOption.value='';
				oOption.text=locales['language-disabled'];
				oOption.innerText=locales['language-disabled'];
				oReplaceSelect.appendChild(oOption);
				oReplaceSelect.disabled=true;
			}

			return oReplaceSelect;
		}