var barUrlImg = url_i + 'bb/' ;

var txt='';
var _Bts = new Array();
var barLinks = new Array();
var barOpenTags = new Array();

function myBt( id, title, img, tagStart, tagEnd , _4comm )
{
	this.id = id;
	this.title = title;
	this.img = img;
	this.tagStart = tagStart ;
	this.tagEnd = tagEnd ;
	this._4comm = _4comm ;
}


_Bts[_Bts.length] = new myBt
(
	'bt_h2',
	'Заголовок 2',
	'ed_head2.gif',
	'[h2]',
	'[/h2]',
	false
);

_Bts[_Bts.length] = new myBt
(
	'bt_h3',
	'Заголовок 3',
	'ed_head3.gif',
	'[h3]',
	'[/h3]',
	false
);

_Bts[_Bts.length] = new myBt
(
	'bt_b',
	'Жирный',
	'bold.gif',
	'[b]',
	'[/b]',
	true
);

_Bts[_Bts.length] = new myBt
(
	'bt_i',
	'Курсив',
	'italic.gif',
	'[i]',
	'[/i]',
	true
);

_Bts[_Bts.length] = new myBt
(
	'bt_u',
	'Подчеркнутый',
	'underline.gif',
	'[u]',
	'[/u]',
	true
);


_Bts[_Bts.length] = new myBt
(
	'bt_d',
	'Перечеркнутый',
	'strike.gif',
	'[d]',
	'[/d]',
	false
);


_Bts[_Bts.length] = new myBt
(
	'bt_ln',
	'Нумерованный список',
	'ed_list_numer.gif',
	'[ol]',
	'[/ol]',
	true
);

_Bts[_Bts.length] = new myBt
(
	'bt_lp',
	'Маркированный список',
	'ed_list_point.gif',
	'[ul]',
	'[/ul]',
	true
);

_Bts[_Bts.length] = new myBt
(
	'bt_tl',
	'Расположить слева',
	'text-l.gif',
	'[left]',
	'[/left]',
	false
);

_Bts[_Bts.length] = new myBt
(
	'bt_tc',
	'Расположить по центру',
	'text-c.gif',
	'[center]',
	'[/center]',
	false
);

_Bts[_Bts.length] = new myBt
(
	'bt_tr',
	'Расположить справа',
	'text-r.gif',
	'[right]',
	'[/right]',
	false
);

_Bts[_Bts.length] = new myBt
(
	'bt_tbl',
	'Таблица',
	'bt_table.gif',
	'',
	'',
	false
);

_Bts[_Bts.length] = new myBt
(
	'bt_fc',
	'Цвет текста',
	'color.gif',
	'',
	'',
	true
);

_Bts[_Bts.length] = new myBt
(
	'bt_bc',
	'Цвет фона текста',
	'bg-color.gif',
	'',
	'',
	true
);

_Bts[_Bts.length] = new myBt
(
	'bt_ao',
	'Ссылка (внешняя)',
	'url.gif',
	'',
	'',
	true
);

_Bts[_Bts.length] = new myBt
(
	'bt_ai',
	'Ссылка (внутреняя)',
	'unlink.gif',
	'',
	'',
	false
);

_Bts[_Bts.length] = new myBt
(
	'bt_q',
	'Цитата',
	'quote.gif',
	'[q]',
	'[/q]',
	true
);


function barLink() 
{
	this.display = '';
	this.URL = '';
	this.newWin = 0;
}


function barShowButton( bt , i, fid )
{
	if (bt.id == 'bt_bc')
	{
		bt_scr = 'barInsertBGColor(\'' + fid + '\' );';
	} else if (bt.id == 'bt_tbl')
	{
		bt_scr = 'barInsertTable(\'' + fid + '\' );';
	} else if (bt.id == 'bt_fc')
	{
		bt_scr = 'barInsertColor(\'' + fid + '\' );';
	} else if (bt.id == 'bt_ao')
	{
		bt_scr = 'barInsertLink(\'' + fid + '\' , \'o\' );';
	} else if (bt.id == 'bt_ai')
	{
		bt_scr = 'barInsertLink(\'' + fid + '\' , \'i\' );';
	} else if (bt.id == 'bt_q')
	{
		bt_scr = 'barInsertQuote(\'' + fid + '\', ' + i + ' );"' + ' onmouseover="barCopyText();';
	} else
	{
		bt_scr = 'barInsertTag(\'' + fid + '\', ' + i + ');';
	}
	document.write('<img src="' + barUrlImg + bt.img + '" onClick="' + bt_scr + '" title="' + bt.title + '" border="1">&nbsp;');
}


function barAddTag( bt, fid )
{
	if( _Bts[bt].tagEnd != '' )
	{
		barOpenTags[fid][barOpenTags[fid].length] = bt;
	}
}

function barRemoveTag( bt , fid )
{
	for( i = 0; i < barOpenTags[fid].length; i++ )
	{
		if( barOpenTags[fid][i] == bt )
		{
			barOpenTags[fid].splice( i, 1 );
		}
	}
}

function barCheckOpenTags( bt , fid )
{
	var tag = 0;
	for( i = 0; i < barOpenTags[fid].length; i++ )
	{
		if( barOpenTags[fid][i] == bt )
		{
			tag++ ;
		}
	}
	if( tag > 0 )
	{
		return true; // tag found
	} else
	{
		return false; // tag not found
	}
}

function barCloseAllTags( fid )
{
	var count = barOpenTags[fid].length;
	for (o = 0; o < count; o++)
	{
		barInsertTag( fid , barOpenTags[fid][barOpenTags[fid].length - 1]);
	}
}

function barQuickLink(i, thisSelect)
{
	if (i > -1)
	{
		var newWin = '';
		if (barLinks[i].newWin == 1)
		{
			newWin = ' target="_blank"';
		}
		var tempStr = '<a href="' + barLinks[i].URL + '"' + newWin + ' class="newslink">' + barLinks[i].display + '</a>';
		thisSelect.selectedIndex = 0;
		barInsertContent(barCanvas, tempStr);
	} else
	{
		thisSelect.selectedIndex = 0;
	}
}


function bar4CommText( fid , upl )
{
	barOpenTags[fid] = new Array();
	document.write('<div class="frm_bar">');
	for( i = 0; i < _Bts.length; i++ )
	{
		if( !_Bts[i]._4comm ) continue ;
		barShowButton( _Bts[i], i, fid );
	}
	document.write('</div>');
}


function barToolbar( fid , upl )
{
	barOpenTags[fid] = new Array();
	document.write('<div class="frm_bar">');
	for( i = 0; i < _Bts.length; i++ )
	{
		barShowButton( _Bts[i], i, fid );
	}
	document.write('&nbsp;&nbsp;&nbsp; <img src="' + barUrlImg + 'robot.gif" onclick="barCloseAllTags(\''+ fid + '\');" title="Автоматически закрыть все тэги открытые с панели" border="1">');
	document.write('</div>');
}


function barMisk( fid )
{
	document.write('<div class="frm_bar">');
	document.write('<img src="' + barUrlImg + 'ed_title.gif" onclick="insText(\''+ fid + '\',\'title\');" title="Вставить выделленный текст в Заголовок" border="1">&nbsp;<br>');
	document.write('<img src="' + barUrlImg + 'ed_anons.gif" onclick="insText(\''+ fid + '\',\'n_text\');" title="Вставить выделленный текст в Анонс" border="1">&nbsp;<br>');
	document.write('</div>');
}

function barMiskBlog( fid )
{
	document.write('<div class="frm_bar">');
	document.write('<img src="' + barUrlImg + 'page_break.gif" onclick="insCut(\'' + fid + '\');" title="Вставить разрыв анонса от текста" border="1">&nbsp;<br>');
	document.write('</div>');
}


function returnFocus( fid )
{
	setTimeout('document.getElementById(\''+ fid +'\').focus()',10);
}


function barInsertTag( fid, i )
{
	myField = document.getElementById( fid );
//IE support
	if( document.selection )
	{
		myField.focus();
		sel = document.selection.createRange();
		if( sel.text.length > 0 )
		{
			sel.text = _Bts[i].tagStart + sel.text + _Bts[i].tagEnd;
		} else
		{
			sel.text = _Bts[i].tagStart + _Bts[i].tagEnd ;
		}
		myField.focus();
	} else if( myField.selectionStart || myField.selectionStart == '0' )
//MOZILLA/NETSCAPE support
	{
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		var cursorPos = endPos;
		if( startPos != endPos )
		{
			myField.value = myField.value.substring(0, startPos) + _Bts[i].tagStart + myField.value.substring(startPos, endPos) + _Bts[i].tagEnd + myField.value.substring(endPos, myField.value.length);
			cursorPos += _Bts[i].tagStart.length + _Bts[i].tagEnd.length;
		} else
		{
			myField.value = myField.value.substring(0, startPos) + _Bts[i].tagStart + _Bts[i].tagEnd + myField.value.substring(endPos, myField.value.length);
			cursorPos = startPos + _Bts[i].tagStart.length;
		}
		myField.focus();
		myField.selectionStart = cursorPos;
		myField.selectionEnd = cursorPos;
	} else
	{
		myField.value += _Bts[i].tagStart + _Bts[i].tagEnd ;
		myField.focus();
	}
}


function barInsertContent( fid, myValue )
{
	myField = document.getElementById( fid );
//IE support
	if (document.selection)
	{
		myField.focus();
		sel = document.selection.createRange();
		sel.text = myValue;
		myField.focus();
	} else if (myField.selectionStart || myField.selectionStart == '0')
//MOZILLA/NETSCAPE support
	{
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);
		myField.focus();
		myField.selectionStart = startPos + myValue.length;
		myField.selectionEnd = startPos + myValue.length;
	} else
	{
		myField.value += myValue;
		myField.focus();
	}
}


function barInsertLink( id , type )
{
	var f = document.getElementById( id );
	if( document.selection )
	{
		f.focus();
		sel = document.selection.createRange();
		if( sel.text.length > 0 )
			sel.text = '[url=]' + sel.text + '[/url]';
		else
			sel.text = '[url=][/url]' ;
		f.focus();
	} else if( f.selectionStart || f.selectionStart == '0' )
//MOZILLA/NETSCAPE support
	{
		var startPos = f.selectionStart;
		var endPos = f.selectionEnd;
		var cursorPos = endPos;
		if( startPos != endPos )
		{
			f.value = f.value.substring(0, startPos) + '[url=]' + f.value.substring(startPos, endPos) + '[/url]' + f.value.substring(endPos, f.value.length);
			cursorPos += 6 ;
		} else
		{
			f.value = f.value.substring(0, startPos) + '[url=][/url]' + f.value.substring(endPos, f.value.length);
			cursorPos = startPos + 6 ;
		}
		f.focus();
		f.selectionStart = cursorPos;
		f.selectionEnd = cursorPos;
	} else
	{
		f.value += '[url=][/url]' ;
		f.focus();
	}
}


function barInsertColor( fid )
{
	var str = prompt( 'Введите Идентификатор цвета' , '' );
	if( str )
	{
		myField = document.getElementById( fid );
		if( document.selection )
		{
			myField.focus();
			sel = document.selection.createRange();
			if( sel.text.length > 0 )
				sel.text = '[color='+str+']' + sel.text + '[/color]';
			else
				sel.text = '[color='+str+'][/color]' ;
			myField.focus();
		} else if( myField.selectionStart || myField.selectionStart == '0' )
//MOZILLA/NETSCAPE support
		{
			var startPos = myField.selectionStart;
			var endPos = myField.selectionEnd;
			var cursorPos = endPos;
			if( startPos != endPos )
			{
				myField.value = myField.value.substring(0, startPos) + '[color='+str+']' + myField.value.substring(startPos, endPos) + '[/color]' + myField.value.substring(endPos, myField.value.length);
				cursorPos += 8 + 8;
			} else
			{
				myField.value = myField.value.substring(0, startPos) + '[color='+str+'][/color]' + myField.value.substring(endPos, myField.value.length);
				cursorPos = startPos + 8;
			}
			myField.focus();
			myField.selectionStart = cursorPos;
			myField.selectionEnd = cursorPos;
		} else
		{
			myField.value += '[color='+str+'][/color]' ;
			myField.focus();
		}
	}
}


function barInsertBGColor( fid )
{
	var str = prompt( 'Введите Идентификатор цвета!' , '' );
	if( str )
	{
		myField = document.getElementById( fid );
		if( document.selection )
		{
			myField.focus();
			sel = document.selection.createRange();
			if( sel.text.length > 0 )
				sel.text = '[bg='+str+']' + sel.text + '[/bg]';
			else
				sel.text = '[bg='+str+'][/bg]' ;
			myField.focus();
		} else if( myField.selectionStart || myField.selectionStart == '0' )
//MOZILLA/NETSCAPE support
		{
			var startPos = myField.selectionStart;
			var endPos = myField.selectionEnd;
			var cursorPos = endPos;
			if( startPos != endPos )
			{
				myField.value = myField.value.substring(0, startPos) + '[bg='+str+']' + myField.value.substring(startPos, endPos) + '[/bg]' + myField.value.substring(endPos, myField.value.length);
				cursorPos += 5 + 5;
			} else
			{
				myField.value = myField.value.substring(0, startPos) + '[bg='+str+'][/bg]' + myField.value.substring(endPos, myField.value.length);
				cursorPos = startPos + 5;
			}
			myField.focus();
			myField.selectionStart = cursorPos;
			myField.selectionEnd = cursorPos;
		} else
		{
			myField.value += '[bg='+str+'][/bg]' ;
			myField.focus();
		}
	}
}

function barInsertTable( fid )
{
	myValue = '[table][tr][td][/td][/tr][/table]';
	barInsertContent( fid, myValue );
}


function barCopyText()
{
	t = ''
	if ( document.getSelection )
	{
		t=document.getSelection()
	} else if ( window.getSelection )
	{
		t = window.getSelection()
	} else if ( document.selection )
	{
		t=document.selection.createRange().text
	}
	if( t!='' )
	{
		txt = t
	}
}


function setCaret( textObj )
{
	if( textObj.createTextRange )
	{
		textObj.caretPos = document.selection.createRange().duplicate();
		operastart=textObj.selectionEnd;
	}
}

var operastart=0;

function insertAtCaret( textObj, textV )
{
	textV=textV.replace(/\[\?\]/g,'');
	if( document.all && !window.opera)
	{
		if( textObj.createTextRange && textObj.caretPos )
		{
			var caretPos = textObj.caretPos
			caretPos.text = (caretPos.text.charAt(caretPos.text.length - 1) == ' ') ?textV + ' ' : textV
		} else
		{
			textObj.value += textV
		}
	} else
	{
		var brows = navigator.userAgent.toString()
		var ver=8
		var scrollTop, scrollLeft;
		if (textObj.type == 'textarea' &&  typeof textObj.scrollTop != 'undefined')
		{
			scrollTop  = textObj.scrollTop;
			scrollLeft = textObj.scrollLeft;
		}
		if(brows.search(/opera (\d*.\d*)/i) != -1) ver = RegExp.$1
		if(textObj.selectionStart>=0  && ver>=8)
		{
			var rangeStart =operastart==0?textObj.selectionStart:operastart
			var rangeEnd = textObj.selectionEnd
			var tempStr1 = textObj.value.substring(0,rangeStart)
			var tempStr2 = textObj.value.substring(rangeEnd, textObj.value.length)
			textObj.value = tempStr1 + textV + tempStr2
			textObj.selectionStart=textObj.selectionEnd=rangeStart+textV.length
			if (typeof scrollTop != 'undefined')
			{
				textObj.scrollTop  = scrollTop;
				textObj.scrollLeft = scrollLeft;
			}
			if( window.opera )
				operastart=textObj.selectionEnd=textObj.selectionEnd+1
		} else
		{
			textObj.value+=textV
		}
	}
}

function barInsertQuote( fid , i )
{
	f = document.getElementById( fid )
	if( f )
	{
		if ( txt != '' )
		{
			insertAtCaret( f , '[q]'+txt+'[/q]\n' );
			txt = ''
		} else if( i )
		{
			barInsertTag( fid, i );
		}
	}
}


function insText( fid, oid )
{
	of = document.getElementById( fid );
	if( document.selection )
	{
		of.focus() ;
		sel = document.selection.createRange() ;
		myValue = sel.text ;
	} else if( of.selectionStart || of.selectionStart == '0' )
	{
		var startPos = of.selectionStart ;
		var endPos = of.selectionEnd ;
		var cursorPos = endPos ;
		myValue = of.value.substring( startPos, endPos ) ;
	}
	barInsertContent( oid, myValue )
}


function insCut( fid )
{
	var tag = '[cut]' ;
	myField = document.getElementById( fid );
//IE support
	if( document.selection )
	{
		myField.focus();
		sel = document.selection.createRange();
		if( sel.text.length > 0 )
		{
			sel.text = tag + sel.text ;
		} else
		{
			sel.text = tag ;
		}
		myField.focus();
	} else if (myField.selectionStart || myField.selectionStart == '0')
//MOZILLA/NETSCAPE support
	{
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		var cursorPos = endPos;
		myField.value = myField.value.substring(0, startPos) + tag + myField.value.substring(endPos, myField.value.length);
		cursorPos = startPos + tag.length;
		myField.focus();
		myField.selectionStart = cursorPos;
		myField.selectionEnd = cursorPos;
	} else
	{
		myField.value += tag ;
		myField.focus();
	}
}

