var b_open = 0;
var i_open = 0;
var u_open = 0;
var q_open = 0;
var code_open = 0;

var text_enter_url      = "Введите полный адрес (URL)";
var text_enter_url_name = "Введите название сайта";
var text_enter_image    = "Введите полный адрес (URL) изображения";
var	text_enter_image_alt = "Введите подпись к изображению";
var list_prompt         = "Введите пункт списка. Нажмите 'Отмена' завершения списка";
var error_no_url   = "Вы должны ввести адрес (URL)";
var error_no_title = "Вы должны ввести название";

var help_bold        = "Жирный текст [b]текст[/b] (alt + b)";
var help_italic      = "Наклонный текст [i]текст[/i] (alt + i)";
var help_under       = "Подчеркнутый текст [u]текст[/u] (alt + u)";
var help_font        = "Выбор типа шрифта";
var help_color       = "Выбор цвета шрифта";
var help_close       = "Закрытие всех открытых тегов";
var help_url         = "Ввод гиперссылки [a http://url]Название сайта[/a] (alt + h)";
var help_img         = "Подключение изображения [img=\"http://image_url\" alt=\"картинка\"] (alt + g)";
var help_quote       = "Ввод цитаты [q]текст[/q] (alt + q)";
var help_list        = "Создать список (alt + l)";
var help_code        = "Ввод кода [code]код[/code] (alt + p)";
var help_click_close = "Нажмите на кнопку для закрытия";
var help_translit    = "Перекодировка транслита / латиницы (alt + t)";
var help_smile			 = "Смайлики, улыбочки, ;-)"

var bbtags = new Array();

var myAgent   = navigator.userAgent.toLowerCase();
var myVersion = parseInt(navigator.appVersion);

var is_ie  = ((myAgent.indexOf("msie") != -1)  && (myAgent.indexOf("opera") == -1));
var is_nav = ((myAgent.indexOf('mozilla')!=-1) && (myAgent.indexOf('spoofer')==-1)
					&& (myAgent.indexOf('compatible') == -1) && (myAgent.indexOf('opera')==-1)
					&& (myAgent.indexOf('webtv') ==-1)       && (myAgent.indexOf('hotjava')==-1));

var is_win = ((myAgent.indexOf("win")!=-1) || (myAgent.indexOf("16bit")!=-1));
var is_mac = (myAgent.indexOf("mac")!=-1);


var edtForm;
var edtContent;

function quoteMessage()
{
	var selection;
	if (document.getSelection)
	{
		selection = String(document.getSelection());
		selection = selection.replace(/\r\n\r\n/gi, "_newstringhere_");
		selection = selection.replace(/\r\n/gi, " ");
		selection = selection.replace(/  /gi, "");
		selection = selection.replace(/_newstringhere_/gi, "\r\n\r\n");
	}
	else
	{
		selection = document.selection.createRange().text;
	}

	if (selection!="")
	{
		edtContent.value += "[q]"+selection+"[/q]\n";
	}
}

function quoteMessageEx(theAuthor, intID)
{
	var selection;
	if (document.getSelection)
	{
		selection = String(document.getSelection());
		selection = selection.replace(/\r\n\r\n/gi, "_newstringhere_");
		selection = selection.replace(/\r\n/gi, " ");
		selection = selection.replace(/  /gi, "");
		selection = selection.replace(/_newstringhere_/gi, "\r\n\r\n");
	}
	else
	{
		selection = document.selection.createRange().text;
	}

	if (selection!="")
	{
		doInsert("[q="+theAuthor+"]"+selection+"[/q]\n", "", false);
	}
	else
	{
		if (intID!="")
		{
			var oComment = document.getElementById('comment-text-' + intID);
			if (oComment && oComment.innerText) selection = oComment.innerText;
//			edtContent.value += "[q="+theAuthor+"]"+selection+"[/q]\n";
			doInsert("[q=" + theAuthor + "]" + selection + "[/q]\n", "", false);
		}
	}
}

function quoteMessageEx2(theAuthor, content)
{
	doInsert("[q=" + theAuthor + "]" + content + "[/q]\n", "", false);
}

function storeCaret(textEl)
{
	if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
}


function reply2author(name)
{
	//edtContent.value += "[b]"+name+"[/b]"+" \n";
	doInsert("[b]" + name + "[/b]" + " \n", "", false);
}


function show_hints(msg)
{
	edtForm.helpbox.value = eval( "help_" + msg );
}

// Insert simple tags: B, I, U, CODE, QUOTE
function simpletag(thetag)
{
	var tagOpen = eval(thetag + "_open");

	if (tagOpen == 0)
	{
		if (doInsert("[" + thetag + "]", "[/" + thetag + "]", true))
		{
			eval(thetag + "_open = 1");
			// Change the button status
			eval("edtForm." + thetag + ".value += '*'");

			pushstack(bbtags, thetag);
			cstat();
			show_hints('click_close');
		}
	}
	else
	{
		// Find the last occurance of the opened tag
		lastindex = 0;

		for (i = 0 ; i < bbtags.length; i++ )
		{
			if ( bbtags[i] == thetag )
			{
				lastindex = i;
			}
		}

		// Close all tags opened up to that tag was opened
		while (bbtags[lastindex])
		{
			tagRemove = popstack(bbtags);
			doInsert("[/" + tagRemove + "]", "", false);

			// Change the button status
			eval("edtForm." + tagRemove + ".value = ' " + tagRemove + " '");
			eval(tagRemove + "_open = 0");
		}

		cstat();
	}
}

// Insert font tag
function alterfont(theval, thetag)
{
	if (theval == 0)
		return;

	if (doInsert("[" + thetag + "=" + theval + "]", "[/" + thetag + "]", true))
		pushstack(bbtags, thetag);

	edtForm.ffont.selectedIndex  = 0;
	edtForm.fcolor.selectedIndex = 0;
}


// Insert url tag
function tag_url()
{
	var FoundErrors = '';
	var enterURL   = prompt(text_enter_url, "http://");
	if (!enterURL)
	{
		FoundErrors += " " + error_no_url;
	}
	if (FoundErrors)
	{
		alert("Error! " + FoundErrors);
		return;
	}

	if (isSelection()) // выделена ли текстовая область
	{
		doInsert("[a " + enterURL + "]", "[/a]", false);
	}
	else
	{
		var enterTITLE = prompt(text_enter_url_name, "Название ссылки");
		if (!enterTITLE)
		{
			FoundErrors += " " + error_no_title;
		}
		if (FoundErrors)
		{
			alert("Error! " + FoundErrors);
			return;
		}
		doInsert("[a " + enterURL + "]" + enterTITLE + "[/a]", "", false);
	}
}


// Insert image tag
function tag_image()
{
	var FoundErrors = '';
	var enterURL = prompt(text_enter_image, "http://");
	//var enterALT = prompt(text_enter_image_alt, "");
	var enterALT = "Изображение"


	if (!enterURL)
	{
		return;
		FoundErrors += " " + error_no_url;
	}

	if (FoundErrors)
	{
		alert("Error! "+FoundErrors);
		return;
	}

	doInsert("[img=\""+enterURL+"\" alt=\""+enterALT+"\" vspace=\"3\" hspace=\"8\"]", "", false);
}

// Insert list tag
function tag_list()
{
	var listvalue = "init";
	var thelist = "[list]\n";

	while ( (listvalue != "") && (listvalue != null) )
	{
		listvalue = prompt(list_prompt, "");
		if ( (listvalue != "") && (listvalue != null) )
		{
			thelist = thelist+"[*]"+listvalue+"\n";
		}
	}

	doInsert(thelist + "[/list]\n", "", false);
}






//--------------------------------------------
// GENERAL INSERT FUNCTION
//--------------------------------------------

//--------------------------------------------
// Проверят выделен ли текст
//--------------------------------------------
function isSelection()
{
	var obj_ta = edtContent;
	//----------------------------------------
	// It's IE!
	//----------------------------------------
	if ( (myVersion >= 4) && is_ie && is_win)
	{
		if (obj_ta.isTextEdit)
		{
			 obj_ta.focus();
			 var sel = document.selection;
			 var rng = sel.createRange();
			 rng.colapse;
			 if((sel.type == "Text" || sel.type == "None") && rng != null)
			 {
					if(rng.text.length > 0) return true;
			 }
		}
	}
	//----------------------------------------
	// It's MOZZY!
	//----------------------------------------
	else if (obj_ta.selectionEnd)
	{
		//-----------------------------------
		// text range?
		//-----------------------------------

		if (obj_ta.selectionEnd - obj_ta.selectionStart > 0) return true;
	}
	return false;
}



//--------------------------------------------
// ibTag: opening tag
// ibClsTag: closing tag, used if we have selected text
// isSingle: true if we do not close the tag right now
// return value: true if the tag needs to be closed later
function doInsert(ibTag, ibClsTag, isSingle)
{
	var isClose = false;
	var obj_ta = edtContent;

	//----------------------------------------
	// It's IE!
	//----------------------------------------
	if ( (myVersion >= 4) && is_ie && is_win)
	{
		if (obj_ta.isTextEdit)
		{
			 obj_ta.focus();
			 var sel = document.selection;
			 var rng = sel.createRange();
			 rng.colapse;
			 if((sel.type == "Text" || sel.type == "None") && rng != null)
			 {
					if(ibClsTag != "" && rng.text.length > 0)
						 ibTag += rng.text + ibClsTag;
					else if(isSingle)
						 isClose = true;

					rng.text = ibTag;
			 }
		}
		else
		{
			 if(isSingle)
			 {
					isClose = true;
			 }

			 obj_ta.value += ibTag;
		}
	}
	//----------------------------------------
	// It's MOZZY!
	//----------------------------------------

	else if ( obj_ta.selectionEnd )
	{
		var ss = obj_ta.selectionStart;
		var st = obj_ta.scrollTop;
		var es = obj_ta.selectionEnd;

		if (es <= 2)
		{
			 es = obj_ta.textLength;
		}

		var start  = (obj_ta.value).substring(0, ss);
		var middle = (obj_ta.value).substring(ss, es);
		var end    = (obj_ta.value).substring(es, obj_ta.textLength);

		//-----------------------------------
		// text range?
		//-----------------------------------

		if (obj_ta.selectionEnd - obj_ta.selectionStart > 0)
		{
			 middle = ibTag + middle + ibClsTag;
		}
		else
		{
			 middle = ibTag + middle;

			 if (isSingle)
			 {
					isClose = true;
			 }
		}

		obj_ta.value = start + middle + end;

		var cpos = ss + (middle.length);

		obj_ta.selectionStart = cpos;
		obj_ta.selectionEnd   = cpos;
		obj_ta.scrollTop      = st;


	}
	//----------------------------------------
	// It's CRAPPY!
	//----------------------------------------
	else
	{
		if (isSingle)
		{
			 isClose = true;
		}

		obj_ta.value += ibTag;
	}

	obj_ta.focus();

	return isClose;
}














// Close all tags
function closeall()
{
	if (bbtags[0])
	{
		while (bbtags[0])
		{
			tagRemove = popstack(bbtags);
			edtContent.value += "[/" + tagRemove + "]";

			if ( (tagRemove != 'font') && (tagRemove != 'size') && (tagRemove != 'color') )
			{
				eval("edtForm." + tagRemove + ".value = ' " + tagRemove + " '");
				eval(tagRemove + "_open = 0");
			}
		}
	}

	edtForm.tagcount.value = 0;
	bbtags = new Array();
	edtContent.focus();
}

// Stack functions
function pushstack(thearray, newval)
{
	arraysize = stacksize(thearray);
	thearray[arraysize] = newval;
}

function popstack(thearray)
{
	arraysize = stacksize(thearray);
	theval = thearray[arraysize - 1];
	delete thearray[arraysize - 1];
	return theval;
}

function stacksize(thearray)
{
	for (i = 0 ; i < thearray.length; i++ )
	{
		if ( (thearray[i] == "") || (thearray[i] == null) || (thearray == 'undefined') )
		{
			return i;
		}
	}

	return thearray.length;
}

// Show statistic
function cstat()
{
	var c = stacksize(bbtags);

	if ( (c < 1) || (c == null) )
	{
		c = 0;
	}

	if ( ! bbtags[0] )
	{
		c = 0;
	}

	edtForm.tagcount.value = c;
}


function translit()
{
	var textar = edtContent.value;

	var smallEngLettersReg = new Array(/e'/g, /ch/g, /sh/g, /yo/g, /jo/g, /zh/g, /yu/g, /ju/g, /ya/g, /ja/g, /a/g, /b/g, /v/g, /g/g, /d/g, /e/g, /z/g, /i/g, /j/g, /k/g, /l/g, /m/g, /n/g, /o/g, /p/g, /r/g, /s/g, /t/g, /u/g, /f/g, /h/g, /c/g, /w/g, /~/g, /y/g, /'/g);
	var capitEngLettersReg = new Array( /E'/g, /CH/g, /SH/g, /YO/g, /JO/g, /ZH/g, /YU/g, /JU/g, /YA/g, /JA/g, /A/g, /B/g, /V/g, /G/g, /D/g, /E/g, /Z/g, /I/g, /J/g, /K/g, /L/g, /M/g, /N/g, /O/g, /P/g, /R/g, /S/g, /T/g, /U/g, /F/g, /H/g, /C/g, /W/g, /~/g, /Y/g, /'/g);
	var smallRusLetters = new Array("э", "ч", "ш", "ё", "ё","ж", "ю", "ю", "я", "я", "а", "б", "в", "г", "д", "е", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "щ", "ъ", "ы", "ь" );
	var capitRusLetters = new Array( "Э", "Ч", "Ш", "Ё", "Ё", "Ж", "Ю", "Ю", "\Я", "\Я", "А", "Б", "В", "Г", "Д", "Е", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Щ", "Ъ", "Ы", "Ь");

	if (textar)
	{
		for (i=0; i<smallEngLettersReg.length; i++)
		{
			textar = textar.replace(smallEngLettersReg[i], smallRusLetters[i]);
		}
		for (var i=0; i<capitEngLettersReg.length; i++)
		{
			textar = textar.replace(capitEngLettersReg[i], capitRusLetters[i]);
		}
		edtContent.value = textar;
	}
}




function comment_ban(ip,src)
{
	(window.open('/back/ban.asp?ip=' + ip + '&src=' + src,'ban','width=500, height=500, resizable=1, scrollbars=1')).focus();
}



  function SelectAll(form, state, check) {
  	if (arguments.length == 2)
	{ var ch_name = 'check' } else
	{ var ch_name = check };
    for (i=0; i<form.elements.length; i++) {
      if (form.elements[i].name == ch_name) {
        var item = form.elements[i];
        item.checked = state;}}};


function CheckAction(form, check_name, text) {
	for (i=0; i<form.elements.length; i++) {
		if (form.elements[i].name == check_name) {
			var item = form.elements[i];
			if (item.checked) {
				if (confirm ( text )) { return true; } else { return false; }; }}
	};
	return false;
};


//Функция выделяет все элементы объекта select в заданной форме
function selectAllOptions(iForm, iSelect, iIndex)
{
  var obj = document.forms[iForm].elements[iSelect];
  for	(var i=iIndex; i<obj.options.length; i++) {obj.options[i].selected = true;}
}

//Функция возвращает [true/false] - есть ли выделенный элемент заданного списка
function checkOptionsAndSend( iForm, iSelect)
{
  var obj = document.forms[iForm];
  var vSelected = obj.elements[iSelect].selectedIndex;
  if (vSelected > -1)
  {
    obj.submit();
  }
  return false;
}

//Функция возвращает [true/false] - есть ли выделенный элемент заданного списка
function setIMP( iForm, iAction, iRec)
{
  var obj = document.forms[iForm];
  obj.elements['action'].value = iAction;
  obj.elements['check'][iRec].checked = 'on';
  obj.submit();
  return false;
}




function act(frm, sAction, sConfirm)
{
	var j=0;

	if (frm.elements.check.checked){j++;}
	for (var i=0; i<frm.elements.check.length; i++)
	{
		if (frm.elements.check[i].checked) {j++;}
	}

	if (j>0){
		if (sConfirm!=''){
			sConfirm=sConfirm.replace('%d',j);
			if (confirm(sConfirm)){
				frm.action.value=sAction;
				frm.submit();
			}
		}
		else{
			frm.action.value=sAction;
			frm.submit();
		}


	}
	else{
		alert('Ошибка! Выберите записи для операции!');
	}

	return false;
}


function toggleOptions(option,titlebar) {
	drawer = document.getElementById(option);
	//bar = document.getElementById(titlebar);

	if (drawer.style.display == 'block') {
		drawer.style.display = 'none';
		//bar.className = 'closed';
	} else {
		drawer.style.display = 'block';
		//bar.className = 'open';
	}
}
