/*  Настроечные */
function setSize(obj,width,height){
	var con=document.getElementById(obj);
	if(con){
		if(width>0) con.style.width=width;
		if(height>0) con.style.height=height;
	}
}

/* HTML */

function getTBody(table){
	var r=table;
	for(var i=0;i<table.childNodes.length;i++){
		if(table.childNodes[i].tagName=="TBODY"){r=table.childNodes[i];return r;}
	}
	return r;
}

function createHideMenu(obj, text){
/*
Создает скрытое меню
obj - объект-контейнер, в которое будет добавлено меню
text - текст ссылки, отвечающей за скрытие/отображение
пследующие аргументы - нечетные - адреса ссылок
- четные - тексты ссылок
*/
	var con=document.getElementById(obj);
    if(con==null) return;
	var a=document.createElement('A');
	a.href="#";
    a.innerHTML=text;
	a.onclick=function(){
		var div=this.parentNode.childNodes[1];
		div.style.display = (div.style.display=='none') ? 'block' : 'none';
		return false;
	}
	var div=document.createElement('DIV');
	div.style.display="none";
    con.appendChild(a);
	con.appendChild(div);
	
	var lnk;
	for(var j=2;j<arguments.length;j+=2){
		lnk=document.createElement("A");
	    lnk.href=arguments[j];
	    lnk.innerHTML='• ' + arguments[j+1];
	    lnk.style.display="block";
	    div.appendChild(lnk);
	}
}


/* FastBB */

function createMainTabRow(link,text1,text2,post,topic,last){
/*
Генерирует и возвращает строку для главной таблицы, подобную строке раздела
link - адрес ссылки заголовка
text1 - текст заголовка
text2 - текст коментариев
post  - текст, выводимый вместо количества постов
topic - текст, выводимый вместо количества тем
last - текст, выводимый вместо ссылки на последнюю тему
*/
	var tr=document.createElement('TR');
	tr.valign='top';
	var td=document.createElement('TD');
	td.style.backgroundColor=diz[4];
	td.width='1%';
	var img=document.createElement('IMG');
	img.src=diz[0]+'/lb.gif';
	img.alt='-';
	td.appendChild(img);
	tr.appendChild(td);


	td=document.createElement('TD');
	td.className='font3';
	td.style.backgroundColor=diz[4];
	var a=document.createElement('A');
	a.href=link;
	a.appendChild(document.createTextNode(text1));
	td.appendChild(a);
	td.appendChild(document.createElement('BR'));
	var div= document.createElement('DIV');
	div.className='font2';
	div.appendChild(document.createTextNode(text2));
	td.appendChild(div);
	tr.appendChild(td);

	td=document.createElement('TD');
	td.className='font2';
	td.align='center';
	td.style.backgroundColor=diz[2];
	td.valign='center';
	td.innerHTML=post;
	tr.appendChild(td);

	td=document.createElement('TD');
	td.className='font2';
	td.align='center';
	td.style.backgroundColor=diz[2];
	td.valign='center';
	td.innerHTML=topic;
	tr.appendChild(td);

	td=document.createElement('TD');
	td.className='font2';
	td.style.backgroundColor=diz[2];
	td.valign='center';
	td.nowrap='nowrap';
	td.innerHTML=last;
	tr.appendChild(td);

	return tr;
}

function getForumTable(){
/*
Находит и возвращает объект, содержащий строки главной таблицы форума
*/
	var tabs=document.getElementsByTagName('TABLE');
	var tb;
	for(var i =0; i<tabs.length;i++){
		tb=getTBody(tabs[i]);
		if(tb.childNodes[0].childNodes[0].innerHTML==l[63])return tb;
	}
}

function appendAutoArchiv(){
/*
добавляет ссылку на автоархив в конец главной таблицы форума
*/
	var tab = getForumTable();
	tab.appendChild(createMainTabRow('/?0-20','Архив','Старые темы','*','*','Автоматический архив'));
}

function switchShowNextNode(node){ 
 	var div=node.parentNode.childNodes[1]; 
 	if(div.style.display==""){ 
 		div.style.display="none"; 
 	}else{ 
 		div.style.display=""; 
 	} 
 	return false; 
 } 
function bbcodeReplaceMore(){
	var t;
	var divs=document.getElementsByTagName('div');
	var pat='<a href="*javascript:tabviz\\(\\d+\\);"*><u>'+l[121]+'<\\/u><\\/a><br>[\\r\\n]*<table id="*\\d+"*[^>]*>[\\r\\n]*(?:<tbody>[\\r\\n]*){0,1}<tr>[\\r\\n]*<td class="*font1"*><br>([^\x60]*)[\x60]{1}';
	var reg= new RegExp(pat,'gi');
	reg.compile(pat,'gi');
	for(var j=0;j<divs.length;j++)if(divs[j].className=="font1"){
		t=divs[j].innerHTML
		t=t.replace(/<br><\/td><\/tr>(?:<\/tbody>){0,1}<\/table>/gi,"\x60");
		t=t.replace(reg,'<div><a href="#" class="tagmore" onclick="javascript:switchShowNextNode(this);return false;">'+l[121]+'</a><div class="tagmore" style="display:none;">$1</div></div>');
		divs[j].innerHTML=t;
	}
}

/* Для добавления кнопок */
function isDirective(arg){
/*
	Проверяет директиву на истинность
	arg - массив списков номеров вида [razdel,filenumber,group,work,msgid]
	Пропускать элементы нельзя, но можно опустить последние.
*/
	function createDirective(code, varname){
		if(code=='*')return 'true';
		var s=code.split(','), s1;
		var t=[];
		for(var i=0;i<s.length;i++){
			if(s[i].search(/(\d+)-(\d+)/)>-1){
				t[i]='!('+RegExp.$1+'<='+varname+'&&'+varname+'<='+RegExp.$2+')';
			}else if(s[i].search(/(\d+)-/)>-1){
				t[i]=RegExp.$1+'>'+varname;
			}else if(s[i].search(/-(\d+)/)>-1){
				t[i]=RegExp.$1+'<'+varname;
			}else if(s[i].search(/!(\d+)/)>-1){
				t[i]=RegExp.$1+'=='+varname;
			}else if(s[i].search(/(\d+)/)>-1){
				t[i]=RegExp.$1+'!='+varname;
			}
		}
		return '!('+t.join(' && ')+')';
	}
	if(arg.length==0)return true;
	var t=[],v=['razdel','filenumber','group','work','msgid'];
	for(var i=0;i<arg.length&&i<v.length;i++){
		t[i]=createDirective(arg[i],v[i]);
	}
	return eval(t.join(' && '));
}

function appendButtons(){
/* 
Добавляет кнопки на форму ответа
Принимает сколько угодно аргументов представляющих собой массивы вида
[[razdel,filenumber,group,work,msgid],image,alt,href,target] 
*/
	var textAr=theForm.message; 
	var par=textAr.parentNode;
	var a, img;
	var n = par.childNodes.length-9; 
	var URL_img =par.childNodes[n]; 
	for(var j=0; j<arguments.length; j++){
		if(isDirective(arguments[j][0])){
			if(arguments[j][1]=='br'){
				par.insertBefore(document.createElement('BR'), URL_img);
			}else{
				a = document.createElement('A'); 
				a.href = arguments[j][3]; 
				a.target=arguments[j][4]; 

				img=document.createElement('IMG');
				img.src = arguments[j][1]; 
				img.border = 0; 
				img.alt = arguments[j][2]; 
				img.style.height=16;
				img.style.width=16;
				a.appendChild(img); 
				
				par.insertBefore(a, URL_img); 
				par.insertBefore(document.createTextNode(unescape('%20')), URL_img);
			}
		}
	}
}

function appendInputButtons(){ 
/* 
Добавляет кнопки Input на форму ответа
Принимает сколько угодно аргументов представляющих собой массивы вида
[[razdel,filenumber,group,work,msgid],text,code] 
*/
	var input;
	var par=theForm.message.parentNode.parentNode.nextSibling.childNodes[1];
	for(var j=0; j<arguments.length; j++){
		if(isDirective(arguments[j][0])){
			if(arguments[j][1]=='br'){
				par.appendChild(document.createElement('BR'));
			}else{
				input = document.createElement('input');
				input.className = 'sender';
				input.type = 'button';
				input.value = arguments[j][1];
				input.onclick = new Function(arguments[j][2]);
				par.appendChild(input);
				par.appendChild(document.createTextNode(unescape('%20')));
			}
		}
	}
}
