var cardID;
var txtOutGlobal = "";
var activeDicts = new Array;
var loadHolder = "<img src=\"img/loading.gif\">";
var engineURL = "http://online.multilex.ru/engine/?";
//var engineURL = "http://localhost:8080/engine/?";
var entriesRange=10;
var lang_sound="";
var canspeak=0;
var currentWord="";
//2008.12.25_by_Denis_Koltsov --- begin
var btn_expand_all = new Array;
var expand_text = "";
//2008.12.25_by_Denis_Koltsov --- end

var rmLinks=new Array;
rmLinks['er'] = "<a href='http://www.multilex.ru/ml/product/platform_id/9565/id/9574.html'>Английские словари Мультилекс</a>";
rmLinks['gr'] = "<a href='http://www.multilex.ru/ml/product/platform_id/9565/id/9574_3.html'>Немецкие словари Мультилекс</a>";
rmLinks['fr'] = "<a href='http://www.multilex.ru/ml/product/platform_id/9565/id/9574_2.html'>Французские словари Мультилекс</a>";
rmLinks['ir'] = "<a href='http://www.multilex.ru/ml/product/platform_id/9565/id/9574_4.html'>Итальянские словари Мультилекс</a>";
rmLinks['sr'] = "<a href='http://www.multilex.ru/ml/product/platform_id/9565/id/9574_5.html'>Испанские словари Мультилекс</a>";
rmLinks['pr'] = "<a href='http://www.multilex.ru/ml/product/platform_id/9565/id/9574_6.html'>Португальские словари Мультилекс</a>";
rmLinks['ur'] = "<a href='http://www.multilex.ru/'>Словари Мультилекс</a>";
function setCookie(c_name, value, expiredays) {
	var exdate = new Date();
	exdate.setDate(exdate.getDate() + expiredays);
	document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
}

function getCookie(c_name) {
	if (document.cookie.length > 0) {
		c_start=document.cookie.indexOf(c_name + "=");
		if (c_start != -1) {
			c_start = c_start + c_name.length + 1;
			c_end = document.cookie.indexOf(";", c_start);
			if (c_end == -1) {
				c_end = document.cookie.length;
			}
			return unescape(document.cookie.substring(c_start, c_end));
		}
	}
	return "";
}

function xTrans() {
	var xWord = "";
	if (document.getSelection) {
		xWord = document.getSelection();
	}
	else if (document.selection && document.selection.createRange) {
		var range = document.selection.createRange();
		xWord = range.text;
	}
	if (BrowserDetect.browser == "Explorer") {
		document.selection.empty();
	}
	var trimPoint;
	//alert(xWord.charCodeAt(0));
	trimPoint=-1;
	for (i=0; i<xWord.length; i++) {
		if ((xWord.charCodeAt(i) < 65 || xWord.charCodeAt(i) > 122) && (xWord.charCodeAt(i) < 1040 || xWord.charCodeAt(i) > 1105)) {
			//alert(i+" non-char");
			trimPoint = i;
		}
		else {
			i = xWord.length;  // Stop search
		}
	}
	if (trimPoint > -1) {
		xWord = xWord.substring(trimPoint + 1, xWord.length);
	}
	trimPoint = -1;
	for (i = xWord.length-1; i >= 0; i--) {
		if ((xWord.charCodeAt(i) < 65 || xWord.charCodeAt(i) > 122) && (xWord.charCodeAt(i) < 1040 || xWord.charCodeAt(i) > 1105)) {
			trimPoint = i;
		}
		else {
			i = 0;        // Stop search
		}
	}
	if (trimPoint > -1) {
		xWord = xWord.substring(0, trimPoint);
	}
	document.getElementById('word').value = xWord;
	
	showTranslate(xWord, document.getElementById('collID').value, 0, entriesRange);
}

function showTranslate(str, collID, rangeFrom, rangeTo) {
	//str = str.replace(/\'/g, "\'");
	//alert(str);
	if (str.length == 0) {
		document.getElementById("txtReply").innerHTML="";
		return;
	}
	for (i = 0; i < 10; i++) {
		numb = i.toString();
		if (str == numb) {
			document.getElementById("txtReply").innerHTML = "Перевод слова не найден.";
			return;
		}
	}
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp == null) {
		alert ("Your browser does not support AJAX!");
		return;
	}
	document.getElementById("firstCard").innerHTML = "";
	document.getElementById("selectUrl").innerHTML = "";
	txtOutGlobal="";
	document.getElementById("txtReply").innerHTML = "";
	document.getElementById("txtExpandAll").innerHTML = "";
	document.getElementById("txtShowAll").innerHTML = "";
	document.getElementById("word_url_container").innerHTML = "";
	//document.getElementById("is_expanding").innerHTML = "";
	
	var url=engineURL+"method=search";
	url=url+"&collID="+collID;             // collection
	for (i=0; i<activeDicts.length; i++) {

		url=url+"&"+activeDicts[i]+"=1";     // dictionary
	}
	url=url+"&txt="+escape(str);           // text
	if (document.getElementById("fulltext").checked) {    // Полнотекстовый поиск
		url=url+"&searchTranslation=1";
	}
	else {
		url=url+"&searchHead=1";
	}
	url=url+"&rangeFrom="+rangeFrom;
	url=url+"&rangeTo="+rangeTo;
	url=url+"&fuzzy=1";
	
	document.getElementById("selectUrl").innerHTML=url+document.getElementById("selectUrl").innerHTML;

	callChange();
}

function callChange() {
	var url;
	var many;
	many=document.getElementById("selectUrl").innerHTML;
	if (many!="") {
		url=many.substr(many.lastIndexOf("http:"));
		many=many.replace(url, "");
		document.getElementById("selectUrl").innerHTML=many;
		url=url.replace(/&amp;/g, "&");
		xmlHttp.open("GET", url, true);
		xmlHttp.onreadystatechange=stateChanged;
		xmlHttp.send(null);
	}
}

function stateChanged() {
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.status == 200) {
			var xmlDoc = xmlHttp.responseXML;
			var txtOut = "";
			var x = xmlDoc.documentElement;
			var y = xmlHttp.responseXML.documentElement.childNodes;
			txtOutGlobal = document.getElementById("txtReply").innerHTML;

			if(x.getAttribute("status") == "1")
			{
				txtOut += "<b>Перевод слова не найден. Найдены переводы похожих по написанию слов.</b>";
			}
			if (BrowserDetect.browser=="Explorer") {
				//alert(xmlHttp.responseText);
				//alert(y.length);
				
				if (y.length >= 2) {
					//alert("AAAA");
					for (i=1; i<y.length; i++) {
						if (y[i-1].childNodes[0].nodeValue != null) {
							txtOut = txtOut + "<div class='dictname'>" + y[i-1].childNodes[0].nodeValue + "</div>";        // Dictionary name
						}
						if (y[i].nodeType!=3) {
							for (z=0; z<y[i].childNodes.length; z++) {
								if (y[i].childNodes[z].nodeType!=3) {
									if (y[i].childNodes[z].nodeName == "a") {
										artHref = y[i].childNodes[z].getAttribute('href');
										currentWord = ", \"" + y[i].childNodes[z].childNodes[0].nodeValue + "\")";
										artHref = artHref.replace(/\)/g, currentWord);
										artHref = artHref.replace(/'/g, "&prime;");
										artHref = artHref.replace(/"/g, "\"");
										if (document.getElementById("firstCard").innerHTML == "") {
											document.getElementById("firstCard").innerHTML = artHref;
										}
										txtOut=txtOut+"<a href='"+artHref+"' class='word'>";
										txtOut = txtOut + y[i].childNodes[z].childNodes[0].nodeValue + "</a>";
										
										var cardID = y[i].childNodes[z].getAttribute('href');
										cardID = cardID.substring(cardID.indexOf("(")+1, cardID.indexOf(")"));
										cardID = cardID.replace(/\"/g, "");
										cardID = cardID.replace(/,/g, "_");
										txtOut = txtOut + " <a href='" + y[i].childNodes[z].getAttribute('href') + "' class='word'><img src='img/card_off.gif' width='5' height='5' valign='absmiddle' id='ind" + cardID + "' border='0'></a><br />";
										txtOut = txtOut + "<div id='" + cardID + "' class='wordcard' style='visibility: hidden;' ondblclick='xTrans()'></div>";
										txtOut = txtOut + "<div id='dark_" + cardID + "' class='wordcard' style='visibility: hidden; position: absolute; z-index: -1;'></div>";
										//2008.12.25_by_Denis_Koltsov --- begin
										btn_expand_all[i + z] = artHref;
										//2008.12.25_by_Denis_Koltsov --- end
									}
								}
							}
						}
					}
				}
				else {
					//txtOut = y[0].nodeValue;
					txtOut = "";
				}
			} else {	//browser isn't IE
				//alert(xmlHttp.responseText);
				//document.getElementById('currentWord').innerHTML=xmlHttp.responseText;
				//alert(y.length);
				if (y.length >= 2) {
					//alert(y[2].childNodes.length);
					//alert(y[1].childNodes[0].nodeValue);
					var i=1;
					while (i < y.length) {
						//alert(i);
						txtOut=txtOut+"<div class='dictname'>"+y[i].childNodes[0].nodeValue+"</div>";        // Dictionary name
						i++;
						//alert(i);
						if (y[i].nodeType!=3) {
							for (z=0; z<y[i].childNodes.length; z++) {
								if (y[i].childNodes[z].nodeType!=3) {
									if (y[i].childNodes[z].nodeName == "a") {
										artHref = y[i].childNodes[z].getAttribute('href');
										currWord = ", \"" + y[i].childNodes[z].childNodes[0].nodeValue + "\")";
										artHref = artHref.replace(/\)/g, currWord);
										artHref = artHref.replace(/'/g, "&prime;");
										artHref = artHref.replace(/"/g, "\"");
										if (document.getElementById("firstCard").innerHTML == "") {
											document.getElementById("firstCard").innerHTML=artHref;
										}
										txtOut=txtOut+"<a href=\'"+artHref+"\' class='word'>";
										txtOut=txtOut+y[i].childNodes[z].childNodes[0].nodeValue+"</a>";
										
										var cardID=y[i].childNodes[z].getAttribute('href');
										cardID=cardID.substring(cardID.indexOf("(")+1, cardID.indexOf(")"));
										cardID=cardID.replace(/\"/g, "");
										cardID=cardID.replace(/,/g, "_");
										txtOut=txtOut+" <a href='"+y[i].childNodes[z].getAttribute('href')+"' class='word'><img src='img/card_off.gif' width='5' height='5' valign='absmiddle' id='ind"+cardID+"' border='0'></a><br />";
										txtOut=txtOut+"<div id='"+cardID+"' class='wordcard' style='visibility: hidden;' ondblclick='xTrans()'></div>";
										txtOut=txtOut+"<div id='dark_"+cardID+"' class='wordcard' style='visibility: hidden; position: absolute; z-index: -1;'></div>";
										//2008.12.25_by_Denis_Koltsov --- begin
										btn_expand_all[i + z] = artHref;
										//2008.12.25_by_Denis_Koltsov --- end
									}
								}
							}
						}
						i++;
					}
				}
				else {
					//txtOut=y[0].nodeValue;
					txtOut="";
				}
			}
		}
		else {
			txtOut=txtOut+"Could not retrieve XML data:"+xmlHttp.statusText;
		}
		//document.getElementById("txtReply").innerHTML=document.getElementById("txtReply").innerHTML+txtOut;
		txtOutGlobal=txtOutGlobal+txtOut;
		document.getElementById('loading').innerHTML="";
		document.getElementById("txtReply").innerHTML=txtOutGlobal;
		//2008.12.25_by_Denis_Koltsov --- begin
		expand_text = expandAll(btn_expand_all);
		document.getElementById("txtExpandAll").innerHTML = "<p><img src='img/open_article.jpg' align='absmiddle' hspace='3' /><a href='" + expand_text + "'>Развернуть все статьи</a></p>";
		//2008.12.25_by_Denis_Koltsov --- end
		document.getElementById("txtShowAll").innerHTML="<p><img src='img/finded.jpg' align='absmiddle' hspace='5' /><a href=\"javascript:showTranslate(document.getElementById('word').value, document.getElementById('collID').value, 0, 100)\">Показать все результаты поиска</a></p>";
		//2008.12.24_by_Denis_Koltsov --- begin
		document.getElementById("word_url_container").innerHTML = "<form action='' name='word_url_form' id='word_url_form'><label for='word_url_code'>Ссылка на эту страницу: </label><input id='word_url_code' name='word_url_code' type='text' value='http://online.multilex.ru/?word_url=" + document.getElementById('word').value + "&lang=" + document.getElementById('collID').value + "' onClick='javascript:document.word_url_form.word_url_code.focus();document.word_url_form.word_url_code.select();' readonly /></form>"
		//2008.12.24_by_Denis_Koltsov --- end
		if (document.getElementById("selectUrl").innerHTML!="") {        // Словари еще есть
			callChange();
		}
		else {        // Словари проверены
			if (document.getElementById("txtReply").innerHTML == "") {        // Перевод не найден
				document.getElementById("txtReply").innerHTML="Перевод слова не найден.";
			}
			else {        // Вывести первый перевод
				if(x.getAttribute("status") != "1")
				if (document.getElementById("firstCard").innerHTML!="") {
					eval(document.getElementById("firstCard").innerHTML);
				}
			}
		}
	}
	else {
		document.getElementById('loading').innerHTML=loadHolder;
	}
}

function __artClick(collID, dictID, artID, currentWord, isExp) {
	cardID=collID+"_"+dictID+"_"+artID;
	if (document.getElementById(cardID).style.visibility != "hidden" && isExp != 1) {
		document.getElementById(cardID).innerHTML="";
		document.getElementById(cardID).style.visibility="hidden";
		document.getElementById("ind"+cardID).src="img/card_off.gif";
		return;
	} else if (document.getElementById(cardID).style.visibility == "hidden") {
		xmlHttpArt=GetXmlHttpObject()
		if (xmlHttpArt == null) {
			alert ("Your browser does not support AJAX!");
			return;
		}
		//document.getElementById("ind"+cardID).src="img/card_on.gif";
		document.getElementById("currentWord").innerHTML = currentWord;
		var url=engineURL+"method=article";
		url=url+"&collID="+collID;
		url=url+"&dictID="+dictID;
		url=url+"&artID="+artID;
		//url=url+"&generator=3";
		url=url+"&generator=2";
		url=url+"&speak=1";
		if(document.getElementById("fulltext").checked)
			url=url+"&txt="+escape(document.getElementById('word').value);           // text
		//url=url+"&sid="+Math.random();
		//xmlHttpArt.onreadystatechange=stateChangedCard;
		document.getElementById('loading').innerHTML=loadHolder;
		if (isExp != 1) {	//обычный запрос
			xmlHttpArt.open("GET", url, true);
			xmlHttpArt.onreadystatechange = stateChangedCard;
			xmlHttpArt.send(null)
		}
		else {				//синхронный запрос по нажатию кнопки "Раскрыть все статьи"
			xmlHttpArt.open("GET", url, false);
			xmlHttpArt.send(null);
			stateChangedCardSync(xmlHttpArt.responseText);
		}
	}
}

function stateChangedCard() {
	//alert(xmlHttpArt.readyState);
	try {
		if (xmlHttpArt.readyState == 4) {
			if (xmlHttpArt.status == 200) {
				var txtOut = "";
				txtOut = xmlHttpArt.responseText;
				txtOut=txtOut.replace(/<html>/g, "");
				txtOut=txtOut.replace(/<\/html>/g, "");
				var styleSubstr=txtOut.substring(txtOut.indexOf("<style>"), txtOut.indexOf("</style>")+8);
				var dictSubstr=txtOut.substring(txtOut.indexOf("<p>"), txtOut.indexOf("</p>")+4);
				txtOut=txtOut.replace(styleSubstr, "");
				txtOut=txtOut.replace(dictSubstr, "");
				var soundContainer = "";
				var collID=document.getElementById('collID').value;
				switch (collID) {
					case "4.0er":
						lang_sound="engl";
						break;
					case "4.0fr":
						lang_sound="fren";
						break;
					case "4.0gr":
						lang_sound="germ";
						break;
					case "4.0ir":
						lang_sound="ital";
						break;
					case "4.0sr":
						lang_sound="span";
						break;
					default:
						lang_sound="";
				}
				document.getElementById("dark_"+cardID).innerHTML = txtOut;
				document.getElementById('loading').innerHTML="";
				//alert(cardID);
				//alert(txtOut);
				document.getElementById(cardID).innerHTML=txtOut;
				document.getElementById(cardID).style.visibility="visible";
				document.getElementById("ind"+cardID).src="img/card_on.gif";
			} else {
				alert("Не удалось получить данные:\n" +
					xmlHttpArt.statusText);
			}
		}
	} catch( e ) {
		document.getElementById('loading').innerHTML=loadHolder;
		alert('Caught Exception: ' + e.description);
		// В связи с багом XMLHttpRequest в Firefox приходится отлавливать ошибку =)
		// Bugzilla Bug 238559 XMLHttpRequest needs a way to report networking errors
		// https://bugzilla.mozilla.org/show_bug.cgi?id=238559
	}
}

function __changeCol(collID) {
	document.getElementById('loading').innerHTML=loadHolder;
	document.getElementById('word').disabled=true;
	document.getElementById('collDictionaries').innerHTML=loadHolder;
	
	var lang="";
	// turning off
	lang=document.getElementById('collID').value;
	lang=lang.substring(3, 5);
	document.getElementById("flag_"+lang).src="img/lang/"+lang+"_off.jpg";
	document.getElementById("link_"+lang).style.fontWeight="normal";
	// turning on
	lang=collID;
	lang=lang.substring(3, 5);
	document.getElementById("flag_"+lang).src="img/lang/"+lang+"_on.jpg";
	document.getElementById("link_"+lang).style.fontWeight="bold";
	document.getElementById("rm").innerHTML=rmLinks[lang];
	
	document.getElementById('collID').value=collID;
	//document.getElementById("collIDShow").innerHTML=collID;        // Debug mode
	
	switch (collID) {
		case "4.0er":
			document.getElementById("txtHead").innerHTML="<h3>Англо-русский и русско-английский онлайн-словарь МультиЛекс</h3>";
			break;
		case "4.0fr":
			document.getElementById("txtHead").innerHTML="<h3>Французско-русский и русско-французский онлайн-словарь МультиЛекс</h3>";
			break;
		case "4.0gr":
			document.getElementById("txtHead").innerHTML="<h3>Немецко-русский и русско-немецкий онлайн-словарь МультиЛекс</h3>";
			break;
		case "4.0ir":
			document.getElementById("txtHead").innerHTML="<h3>Итальянско-русский и русско-итальянский онлайн-словарь МультиЛекс</h3>";
			break;
		case "4.0pr":
			document.getElementById("txtHead").innerHTML="<h3>Португальско-русский и русско-португальский онлайн-словарь МультиЛекс</h3>";
			break;
		case "4.0sr":
			document.getElementById("txtHead").innerHTML="<h3>Испанско-русский и русско-испанский онлайн-словарь МультиЛекс</h3>";
			break;
		case "4.0ur":
			document.getElementById("txtHead").innerHTML="<h3>Узбекско-русский и русско-узбекский онлайн-словарь МультиЛекс</h3>";
			break;
		default:
			document.getElementById("txtHead").innerHTML="<h3>Словари онлайн</h3>";
	}
	
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp == null) {
		alert ("Your browser does not support AJAX!");
		return;
	}
	var url=engineURL+"method=dictionaries";
	url=url+"&collID="+collID;
	url=url+"&verbose=1";               // Отмечает дефолтные словари
	xmlHttp.onreadystatechange=stateChangedColl;
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
	setCookie("lang", collID);
}

function stateChangedColl() {
	//alert(xmlHttp.readyState);
	if (xmlHttp.readyState == 4) {
		var prevSelected="";
		var prevActiveDicts=new Array;
		var txtOut="";
		activeDicts.length=0;
		/*txtOut=xmlHttp.responseText;
		document.getElementById('collDictionaries').innerHTML=txtOut;*/
		var xmlDoc=xmlHttp.responseXML;
		var x=xmlDoc.documentElement;
		var y=xmlHttp.responseXML.documentElement.childNodes;
		//alert(y.length);
		
		prevSelected=getCookie(document.getElementById('collID').value);        // check Cookie
		if (prevSelected!=null && prevSelected!="") {
			//alert("Got Cookie! (prevSelected)");
			prevActiveDicts=prevSelected.split(",");
		}
		
		txtOut=txtOut+"<form name='collDictsForm'>";
		for (i=0; i<y.length; i++) {
			if (y[i].nodeType!=3) {
				for (z=0; z<y[i].childNodes.length; z++) {
					if (y[i].childNodes[z].nodeType!=3) {
						if (y[i].childNodes[z].nodeName == "input") {
							//txtOut=txtOut+"<input type='checkbox' name='"+y[i].childNodes[z].getAttribute("name")+"' id='"+y[i].childNodes[z].getAttribute("name")+"' ";
							txtOut=txtOut+"<input type='checkbox' onclick='return CheckCB(this);' name='dicts' class='dictslist' id='"+y[i].childNodes[z].getAttribute("name")+"' value='"+y[i].childNodes[z].getAttribute("name")+"' ";
							
							//prevSelected=getCookie(document.getElementById('collID').value);        // check Cookie
							if (prevSelected!=null && prevSelected!="") {
								for (l=0; l<prevActiveDicts.length; l++) {
									if (y[i].childNodes[z].getAttribute("name") == prevActiveDicts[l]) {
										txtOut=txtOut+"checked='checked' ";
										activeDicts[activeDicts.length]=y[i].childNodes[z].getAttribute("name");
									}
								}
							}
							else {		// Default Dicts
								if (y[i].childNodes[z].getAttribute("default") > 0) {
									txtOut=txtOut+"checked='checked' ";
									activeDicts[activeDicts.length]=y[i].childNodes[z].getAttribute("name");
								}
							}
							txtOut=txtOut+"/> ";
							//txtOut=txtOut+"/> "+y[i].childNodes[z].getAttribute("name")+" - ";
						}
						if (y[i].childNodes[z].nodeName == "a") {
							txtOut=txtOut+y[i].childNodes[z].childNodes[0].nodeValue+"<br />";
						}
					}
				}
			}
		}
		txtOut = txtOut + "<br /><input type='checkbox' name='dicts' class='dictslist' onclick=\"CheckAll(this,'dicts')\"> Выделить все<br />";
		txtOut=txtOut+"<br /><center><a href='javascript:selectDicts()'><img src='img/dicts_ok.gif' name='goDicts' border='0' alt='OK'></a></center>";
		txtOut=txtOut+"</form>";
		document.getElementById('collDictionaries').innerHTML=txtOut;
		document.getElementById('loading').innerHTML="";
		document.getElementById('word').disabled=false;
		if (document.getElementById('word').value!="") {
			showTranslate(document.getElementById('word').value, document.getElementById('collID').value, 0, entriesRange);
		}
	}
	else {
		document.getElementById('loading').innerHTML=loadHolder;
		document.getElementById('word').disabled=false;
	}
}

function selectDicts() {
	var cookieDicts="";
	activeDicts.length=0;
	var i=0;
	//var dicts=document.collDictsForm.dicts;
	for (j=0; j<document.collDictsForm.dicts.length; j++) {
		if (document.collDictsForm.dicts[j].checked) {
			activeDicts[i]=document.collDictsForm.dicts[j].value;
			cookieDicts=cookieDicts+document.collDictsForm.dicts[j].value+",";
			i++;
		}
	}
	if (activeDicts.length > 0) {
		cookieDicts=cookieDicts.substring(0, cookieDicts.lastIndexOf(","));
	}
	setCookie(document.getElementById('collID').value, cookieDicts);
	document.getElementById('collDictionariesOuter').style.visibility="hidden";
	//alert(activeDicts.length);
}

function __changeDicts() {
	//alert(document.getElementById('collDictionaries').style.visibility);
	document.getElementById('collDictionariesOuter').style.visibility="visible";
}

function firstLoad() {
	if (document.getElementById('inp_word').innerHTML!="" && document.getElementById('inp_lang').innerHTML!="") {    // Был сабмит из формы снаружи
		var currChar="";
		var str="";
		var txtOut="";
		str=unescape(document.getElementById('inp_word').innerHTML);
		str = decode(str);
		txtOut=str;
		document.getElementById('inp_word').innerHTML="";
		document.getElementById('word').value=txtOut;
		
		__changeCol(document.getElementById('inp_lang').innerHTML);
	}
	else {        // Сабмита снаружи не было, перевод с нашей страницы
		var prevLang;
		prevLang=getCookie("lang");        // check Cookie
		if (prevLang!=null && prevLang!="") {
			__changeCol(prevLang);
		}
		else {
			__changeCol("4.0er");
		}
	}
	//document.getElementById('word').focus();
}

function GetXmlHttpObject() {
	var xmlHttp=null;
	
	try { // Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e) { // Internet Explorer
		try {
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function show_hide_text(obj) {
    var div = document.getElementById('111');
		if (div.style.display == 'none') {
        div.style.display = 'block';
        obj.innerHTML = "Cкрыть&lt;&lt;";
    } else {
        div.style.display = 'none';
        obj.innerHTML = "Подробнее&gt;&gt;";
    }
}

//выделение всех элементов
function CheckAll(Element,Name){
	if(document.getElementById) {
		thisCheckBoxes = Element.parentNode.parentNode.parentNode.getElementsByTagName('input');
		for (i = 1; i < thisCheckBoxes.length; i++){
			if (thisCheckBoxes[i].name == Name){
				thisCheckBoxes[i].checked = Element.checked;
			}
		}
	}
}

//декодирование из win-1251 в utf-8
function decode(str) {
	var ruswords = new Array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
	var utfwords = new Array('%u0410', '%u0411', '%u0412', '%u0413', '%u0414', '%u0415', '%u0401', '%u0416', '%u0417', '%u0418', '%u0419', '%u041A', '%u041B', '%u041C', '%u041D', '%u041E', '%u041F', '%u0420', '%u0421', '%u0422', '%u0423', '%u0424', '%u0425', '%u0426', '%u0427', '%u0428', '%u0429', '%u042A', '%u042B', '%u042C', '%u042D', '%u042E', '%u042F', '%u0430', '%u0431', '%u0432', '%u0433', '%u0434', '%u0435', '%u0451', '%u0436', '%u0437', '%u0438', '%u0439', '%u043A', '%u043B', '%u043C', '%u043D', '%u043E', '%u043F', '%u0440', '%u0441', '%u0442', '%u0443', '%u0444', '%u0445', '%u0446', '%u0447', '%u0448', '%u0449', '%u044A', '%u044B', '%u044C', '%u044D', '%u044E', '%u044F');
	var currChar = "";
	var txtOut = "";
	
	while (str.length > 0) {
		currChar = str.substring(0, str.indexOf(";"));
		str = str.substring(str.indexOf(";")+1);
		currChar = String.fromCharCode(currChar);
		currChar = escape(currChar);
		for (i = 0; i < 66; i++) {
			if (currChar == utfwords[i]) {
				currChar = ruswords[i];
				break;
			}
		}
		txtOut = txtOut + currChar;
	}
	return txtOut;
}

//2008.12.23-24_by_Denis_Koltsov --- begin
function decode_url(str) {
	var encwords = new Array('%C0', '%C1', '%C2', '%C3', '%C4', '%C5', '%B1', '%C6', '%C7', '%C8', '%C9', '%CA', '%CB', '%CC', '%CD', '%CE', '%CF', '%D0', '%D1', '%D2', '%D3', '%D4', '%D5', '%D6', '%D7', '%D8', '%D9', '%DA', '%DB', '%DC', '%DD', '%DE', '%DF', '%E0', '%E1', '%E2', '%E3', '%E4', '%E5', '%B8', '%E6', '%E7', '%E8', '%E9', '%EA', '%EB', '%EC', '%ED', '%EE', '%EF', '%F0', '%F1', '%F2', '%F3', '%F4', '%F5', '%F6', '%F7', '%F8', '%F9', '%FA', '%FB', '%FC', '%FD', '%FE', '%FF', '%A2');
	var ruswords = new Array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', 'ў');
	var currChar = "";
	var txtOut = "";
	String.prototype.replaceAll = function(search, replace){ return this.split(search).join(replace); }
	
	while (str.length > 0) {
		currChar = str.substring(0, 3);
		str = str.substring(3, str.length);
		for (k = 0; k < 68; k++) {
			if (currChar == encwords[k]) {
				currChar = ruswords[k];
				break;
			}
		}
		txtOut += currChar;
	}
	return txtOut;
}

function get_word_url() {
	var word_url = document.getElementById('word_url').innerHTML;
	var collID = document.getElementById('lang').innerHTML;
	//var lang = document.getElementById('lang').innerHTML;
	var rangeFrom = 0;
	var rangeTo = 10;
	//var collID = "";
	var url = location.href;
	
	if (url.indexOf("?") != -1 || (BrowserDetect.browser == "Explorer" && url.indexOf("?") != -1)) {	//если в url встречаются кодированные символы (содержащие знак "%")
		url = url.substring(url.indexOf("?"), url.length);	//вырезаем get-параметры
		if (url.indexOf("?word_url=") != -1)				//если параметр word_url стоит первым
			word_url = url.substring(url.indexOf("?word_url=")+10, url.indexOf("&"));
		else												//если параметр word_url стоит вторым
			word_url = url.substring(url.indexOf("&word_url=")+10, url.length);
		word_url = decode_url(word_url);
	}
	
	if (word_url != "") {
		document.getElementById('word').value = word_url;
		showTranslate(word_url, collID, rangeFrom, rangeTo);
		__changeCol(collID);
	}
}
//2008.12.23-24_by_Denis_Koltsov --- end
//2008.12.25_by_Denis_Koltsov --- begin
function expandAll(arr) {
	var expand_text = "javascript: ";
	for(var i in arr) {
		if (!arr.hasOwnProperty(i))
			continue;
		arr[i] = arr[i].replace(/\)/g, ", 1)");
		arr[i] = arr[i].substring(11, arr[i].length);
		expand_text += arr[i] + '; ';
	}
	return expand_text;
}
//2008.12.25_by_Denis_Koltsov --- end

//2008.12.29_by_Denis_Koltsov --- begin
//раскрытие статьи
function stateChangedCardSync(txtOut) {
	txtOut=txtOut.replace(/<html>/g, "");
	txtOut=txtOut.replace(/<\/html>/g, "");
	var styleSubstr=txtOut.substring(txtOut.indexOf("<style>"), txtOut.indexOf("</style>")+8);
	var dictSubstr=txtOut.substring(txtOut.indexOf("<p>"), txtOut.indexOf("</p>")+4);
	txtOut=txtOut.replace(styleSubstr, "");
	txtOut=txtOut.replace(dictSubstr, "");
	var soundContainer = "";
	var collID=document.getElementById('collID').value;
	switch (collID) {
		case "4.0er":
			lang_sound="engl";
			break;
		case "4.0fr":
			lang_sound="fren";
			break;
		case "4.0gr":
			lang_sound="germ";
			break;
		case "4.0ir":
			lang_sound="ital";
			break;
		case "4.0sr":
			lang_sound="span";
			break;
		default:
			lang_sound="";
	}
	document.getElementById("dark_"+cardID).innerHTML = txtOut;
	document.getElementById('loading').innerHTML="";
	document.getElementById(cardID).innerHTML=txtOut;
	document.getElementById(cardID).style.visibility="visible";
	document.getElementById("ind"+cardID).src="img/card_on.gif";
}
//2008.12.29_by_Denis_Koltsov --- end