// вызывается при установке или снятии флага на руне
function Check(el) {
	ID('check_all').checked = ID('check_all_list').checked = false;
	ID('rune_'+el.title).checked = ID('listrune_'+el.title).checked = el.checked;
}

// установка флага на всех
function CheckAll(el) {
	var test = ID('check_all').checked = ID('check_all_list').checked = el.checked;
	for (var i in orunes) ID('rune_'+orunes[i].hex).checked = ID('listrune_'+orunes[i].hex).checked = test;
}

// смена описания
function toggleType() {ID('page').className = (ID('show_common').checked) ? 'mean_common' : 'mean_magic';}

// подсветка
function hl(hex) {
	ID('runebox_'+hex).className += ' hl'; 
	ID('listrow_'+hex).className += ' hl';
}

function unl(hex) {
	ID('runebox_'+hex).className = ID('runebox_'+hex).className.replace(' hl', '');
	ID('listrow_'+hex).className = ID('runebox_'+hex).className.replace(' hl', '');
}



// формирование слова
function Seed() {

	var word = new Array(), checked_glas = new Array(), checked_soglas = new Array(), g = 0, s = 0;
	
	// создание/обнуление массивов гласных и согласных включенных рун 
	for (var i in orunes) {
		if (ID('rune_'+orunes[i].hex).checked) {
			if (orunes[i].glas) checked_glas[g++] = orunes[i].num; else checked_soglas[s++] = orunes[i].num;
		}
	}
	
	// если соблюдены условия: больше двух рун, минимум 1 гласная руна
	if (checked_glas.length > 0 & (checked_glas.length+checked_soglas.length) > 1) {
		
		//считываем количество слогов из полей формы и случайным образом определяем их кол-во в текущем слове
		var sylls_num = GetRand(ID("syll_from").value, ID("syll_to").value);
		// для каждого слога:
		for (var i=0, j=0; i<sylls_num; i++) {
			// выбираем вариант слога
			switch (GetRand(1,8)){
				case 1: case 2: case 3: //(в 37.5% - 2-звуковый слог гласный/согласный)
					word[j++] = ArrayRand(checked_glas);
					word[j++] = ArrayRand(checked_soglas);
				break;
				case 4: case 5: case 6: //(в 37.5% - 2-звуковый слог согласный/гласный)
					word[j++] = ArrayRand(checked_soglas);
					word[j++] = ArrayRand(checked_glas);
				break;
				case 7: //(в 12.5% - 3-звуковый слог согласный/гласный/согласный)
					word[j++] = ArrayRand(checked_soglas);
					word[j++] = ArrayRand(checked_glas);
					word[j++] = ArrayRand(checked_soglas);
				break;
				case 8: //(в 12.5% - 3-звуковый слог гласный/согласный/гласный)
					word[j++] = ArrayRand(checked_glas);
					word[j++] = ArrayRand(checked_soglas);
					word[j++] = ArrayRand(checked_glas);
				break;
			}
		}
		var transl = '';
		for (var i in word) transl += orunes[word[i]].mono;
		ID('output').value = transl;
		Fill();		
	} 
	else alert ("Заданы неверные условия!\nВозможные проблемы:\n• Ни одной гласной руны\n• Меньше двух рун");
}




// установка руноскрипта и транскрибции из монозаписи
function Fill() {
	
	// обнуляем таблицу подсказок
	ID('meanings').innerHTML = '';
	ID('runescript').innerHTML = '';
	ID('transcrib').innerHTML = '';
	
	// вычитываем значение поля моносимволов ...
	var word = ID("output").value.split('');
	
	// ... и превращаем массив моносимволов в массив гекс-кодов
	for (var k in word) {
		// находим эту букву в таблице
		for (var n in orunes) if (word[k] == orunes[n].mono) {
			word[k] = n; // превращаем букву в ключ массива orunes
				
			//заполняем таблицу подсказок
			ID('meanings').innerHTML += "<tr onmouseover='hl(\""+orunes[n].hex+"\")' onmouseout='unl(\""+orunes[n].hex+"\")'>"
			+"<td width='55'><img class='small' src='rune.php?0x"+orunes[n].hex+"'/> ("+orunes[n].rus+") - </td>"
			+"<td> <span class='m_com'><b>"+orunes[n].mlit+"</b>, "+orunes[n].mcom+"</span><span class='m_mag'>"+orunes[n].mmag+"</span></td></tr>\n";
			
			// Транскрибция: если в транскрибции есть запятая
			if (orunes[n].rus.indexOf(',') >= 0) {
				// разделить строку по запятой        // выяснить какую транскрибцию использовать     // убрать пробелы
				ID('transcrib').innerHTML += orunes[n].rus.split(',')[(k==0 || orunes[word[k-1]].glas==0) ?0 :1].replace(' ', '');
			} else ID('transcrib').innerHTML += orunes[n].rus;
			
			// заполняем руноскрипт
			ID('runescript').innerHTML += "<img src='rune.php?0x"+orunes[n].hex+"' "
			+"onmouseover='hl(\""+orunes[n].hex+"\")' onmouseout='unl(\""+orunes[n].hex+"\")'>";
		}
	}
}


function insert(symbol, fieldId) {
	var oldValue = ID(fieldId).value;
	var selectionStart = ID(fieldId).selectionStart;
	var firstPart = oldValue.substring(0, selectionStart);
	var secondPart = oldValue.substring(ID(fieldId).selectionEnd);
	ID(fieldId).value = firstPart + symbol + secondPart;
	ID(fieldId).focus();
	ID(fieldId).selectionStart = selectionStart + symbol.length;
	ID(fieldId).selectionEnd = ID(fieldId).selectionStart;
	Fill();
}

function switchTab(el) {
	
	if (el) ID(el.id+'_radio').checked = true;
	
	var children = ID('tabs').childNodes;
	
	for (i in children) if (children[i].nodeName == 'INPUT') {
		var tabId = children[i].id.replace('_radio', '');
		ID(tabId+'_block').style.display = (children[i].checked) ? 'block' : 'none' ;
		ID(tabId).className = (children[i].checked) ? 'active' : '' ;
	}
}

function winResize() {
	var height = document.documentElement.clientHeight;
	ID('gen_panel').style.height = height+"px";
	ID('tables_panel').style.height = height+"px";
	ID('overflow').style.height = (height - ID('tabs').offsetHeight)+"px";
}

function toggleVocDialog() {
	if (CompStyle('voc_dialog').display == 'none') {
		ID('voc_dialog').style.display = 'block';
		ID('voc_dialog_btn').value = 'Отмена';
	} else {
		ID('voc_dialog').style.display = 'none';
		ID('voc_dialog_btn').value = 'Записать в словарь';
	}
}

// вызываается при загрузке страницы
function Init() {
	Fill();
	switchTab();
	ID('load_page_throbber').style.display = 'none';
	toggleType();
	winResize();
}

window.onresize = winResize;

