// автор: Алексей Кощеев, mailto:alex_ko@ezmail.ru
// версия от 21.10.2004 11:40:45
// если вы хотите использовать этот JavaScript код
// обратитесь за разрешением к его автору.

var forumEditor = {
	// путь до папки с иконками для кнопок
	iconsDir: '/common_files/icons/editor/', 
	smilesDir: '/common_files/icons/smiles/', 
	TImage: new Array('b', '', 'i', '', 'u', '', 'a', '', 'copy', '', 'smiles'), 
	TTitle: new Array('Полужирный', '', 'Курсив', '', 'Подчеркнутый', '', 
'Гиперссылка', '', 'Цитировать', '', 'Вставить смайлик'), 
	setEditObject: function(o) {
		this.editObject = o;
	}, 
	printButtons: function() {
		var res = '<table cellpadding="0" cellspacing="1" border="0"><tr>';
		for (var i in this.TImage) {
			if (this.TImage[i] != '') 
				res += '<td width="25"><input value="" type="button" style="' + 
					'font-family: Tahoma, Arial, sans-serif; text-align: right; ' + 
					'width:25px; height:25px; background-color: #dddddd; ' + 
					'background-position: center center; background-repeat: no-repeat; ' + 
					'color: #000000; border-style: solid; border-width: 1px; ' + 
					'border-color:#dddddd;background-image: url(\'' + 
					this.iconsDir + this.TImage[i] + '.gif\');" onclick="JavaScript: ' + 
					'forumEditor.processCommand(\'' + this.TImage[i] + 
					'\');" onmouseover="style.bgcolor=\'#c0c0c0\'; style.borderColor=\'' + 
					'#666666\';" onmouseout="style.bgcolor=\'#dddddd\'; style.borderColor=\'' + 
					'#dddddd\';" title="' + this.TTitle[i] + '">';
			else
				res += '<td width="1" bgcolor="#c0c0c0"></td>';
		}
		res += '</tr></table>';
		return res;
	},
	processCommand: function(c) {
		var tt = '';
		if ( c == 'b' || c == 'i' || c == 'u' ) {
			var lPart = '[' + c + ']';
			var rPart = '[/' + c + ']'
			if ( self.document.selection ) {
				//IE support
				this.editObject.focus();
				var sel = self.document.selection.createRange();
				var tmp = lPart + sel.text + rPart;
				sel.text = tmp;
				sel.moveStart("character", - tmp.length + lPart.length);
				sel.moveEnd("character", - rPart.length);
				sel.select();
			} else if ( this.editObject.selectionStart || this.editObject.selectionStart == "0") {
				//MOZILLA/NETSCAPE support
				var startPos = this.editObject.selectionStart;
				var endPos = this.editObject.selectionEnd;
				var tmp = this.editObject.value;
				this.editObject.value = tmp.substring(0, startPos) + lPart + 
					tmp.substring(startPos, endPos) + rPart + tmp.substring(endPos, tmp.length);
				this.editObject.focus();
				this.editObject.selectionStart = startPos + lPart.length;
				this.editObject.selectionEnd = endPos + lPart.length;
			} else {
				this.editObject.value += lPart + '' + rPart;
			}
			return;
		} else if ( c == 'a' ) {
			var url = prompt("Укажите адрес (URL),\nнапример, www.google.com", "http://", "Запрос данных");
			if ( url != null && url != 'http://' ) {
				var name = prompt("Если желаете, укажите текст ссылки,\nнапример, Гугль - он и в африке Гугль.", '', "Запрос данных");
				if ( name ) {
					tt += '[url=' + url + ']' + name + '[/url]';
				} else {
					tt += '[url]' + url + '[/url]';
				}
			}
		} else if ( c == 'copy' ) {
			var selection = null;
			if ( self.getSelection ) {
				// NN
				tt = new String(self.getSelection());
			} else if ( self.document.getSelection ) {
				// Opera
				alert('К сожалению в Opera эта функция пока не работает');
				return;
				//tt = self.document.getSelection(); 
				// так-то работает, только фокус перемещается на кнопку :(
			} else {
				// IE
				tt = self.document.selection.createRange();
				tt = tt.text;
			}
			if ( tt == '' ) {
				alert('Сначала выделите текст на странице!');
				return;
			}
			tt = tt.replace(/(^|\n)/g, "$1> ");
		} else if ( c == 'smiles' ) {
			var n = 36;
			var cols = 6;
			var rows = Math.ceil(n / cols);
			var Form = '<html>' + 
'<head>' + 
'<title>Вставка смайлика</title>' + 
'<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">' + 
'<meta http-equiv="Content-Style-Type" content="text/css">' + 
'<style type="text/css">' + 
'body {margin: 0px 0px 0px 0px; padding: 1px 1px 1px 1px;}' + "\n" + 
'a {color: blue; color: #0000D0; font-family: Tahoma, Verdana; font-size: 11px;}' + "\n" + 
'img {border: none;}' + "\n" + 
'</style>' + 
'</head>' + 
'<body>' + 
'<table cellpadding="0" cellspacing="1" border="0" width="100%" style="background-color: #dddddd;">';
			var k = 0;
			for (var i = 1; i <= rows; i++ ) {
				Form += '<tr>';
				for (var j = 1; j <= cols; j++ ) {
					k++;
					if ( k <= n ) {
						Form += '<td align="center" width="' + 
Math.round(100 / rows) + 
'%" style="background-color: #ffffff;">' + 
'<a href="JavaScript: self.opener.forumEditor.editObject.value += \'[smile=' + k + ']\'; void(0);">' + 
'<img src="' + this.smilesDir + k + '.gif" alt="" title=""></a></td>';
					} else {
						Form += '<td>&nbsp;</td>';
					}
				}
				Form += '</tr>';
			}
			Form += '</table><div align="right"><a href="JavaScript: self.close();">закрыть окно</a>' + 
				'</div></body><html>';
			var sw = open('', 'SmilesWindow', 
				'dependent=1, width=360, height=150, status=yes, toolbar=no, menubar=no, location=no, resizable=no');
			sw.document.open();
			sw.document.write(Form);
			sw.document.close();
			sw.focus();
			return;
		}
		this.editObject.value += tt;
		this.editObject.focus();
	}
}

