var uagent    = navigator.userAgent.toLowerCase();

var is_safari = ( (uagent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc.") );
var is_webtv  = (uagent.indexOf('webtv') != -1);
var is_opera  = (uagent.indexOf('opera') != -1);
var is_ie     = ( (uagent.indexOf('msie') != -1) && (!is_opera) && (!is_safari) && (!is_webtv) );
var is_ie4    = ( (is_ie) && (uagent.indexOf("msie 4.") != -1) );
var is_moz    = (navigator.product == 'Gecko');
var is_ns     = ( (uagent.indexOf('compatible') == -1) && (uagent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_safari) );
var is_ns4    = ( (is_ns) && (parseInt(navigator.appVersion) == 4) );
var is_kon    = (uagent.indexOf('konqueror') != -1);

var is_win    =  ( (uagent.indexOf("win") != -1) || (uagent.indexOf("16bit") !=- 1) );
var is_mac    = ( (uagent.indexOf("mac") != -1) || (navigator.vendor == "Apple Computer, Inc.") );
var ua_vers   = parseInt(navigator.appVersion);

var ie_range_cache = '';

/* Получение выделенного текста элемента */
function getSelection (obj)
{
  /* Начальные значения, пусты */
  var data = ['', '', ''];

  /* Если Internet Explorer */
  if (is_ie)
  {
    var sel = document.selection.createRange();
    data[1] = sel.text;
  }

  else
  {
    /* Получаем границы текста */
    var text = obj.value;
    var start = obj.selectionStart;
    var end = obj.selectionEnd;

    /* И сохраняем текст */
    data[0] = text.substring (0, start);
    data[1] = text.substring (start, end);
    data[2] = text.substring (end, text.length);
  }

  /* Возвращаем результат */
  return data;
}

/* Вставка bb кодов */
function bbcode (type, value)
{

  var inp = document.getElementById('bb');

  /* Получаем выделенный текст */
  var text = getSelection (inp);

  /* Если текст есть */

    output = text[1];

    if (type == 'attachment'){
        output = '[' + type + '=' + value + ']';
    }

    if (type == 'size' || type == 'color' || type == 'font'){
        output = '[' + type + '=' + value + ']' + text[1] + '[/' + type + ']';
    }

    if (type == 'b' || type == 'u' || type == 'i' || type == 's' || type == 'sub' || type == 'sup' || type == 'quote' || type == 'code' || type == 'indent' || type == 'left' || type == 'center' || type == 'right'){
        output = '[' + type + ']' + text[1] + '[/' + type + ']';
    }

    if (type == 'url'){
        if(value=="") value = prompt('Введите URL:','http://');
        if(value && value!="http://"){
            if(text[1]=="") text[1]=value;
            output = '[url=' + value + ']' + text[1] + '[/url]';
        }
    }

    if (type == 'img'){
        value = prompt('Введите URL адрес изображения:', (text[1] ? text[1] : 'http://'));
        if(value && value!="http://"){
            output = '[img]' + value + '[/img]';
        }
    }

    if (type == 'email'){
        if(value=="") value = prompt('Введите E-mail:','');
        if(value){
            if(text[1]=="") text[1]=value;
            output = '[email=' + value + ']' + text[1] + '[/email]';
        }
    }

	doInsert(inp, output);
    inp.focus();
}

function sm(smile){
    var inp = document.getElementById('bb');
    doInsert(inp, smile);
    inp.focus();
}

function loginIns(login){
    var inp = document.getElementById('bb');
    doInsert(inp, "[b]"+login+"[/b],\n");
    inp.focus();
}

function doInsert(obj_ta, insert)
{
    if(obj_ta.value==''){
       obj_ta.value = insert;
    }
	else if ( (ua_vers >= 4) && is_ie && is_win)
	{
		if (obj_ta.isTextEdit)
		{
			obj_ta.focus();
			var sel = document.selection;
			var rng = ie_range_cache ? ie_range_cache : sel.createRange();
			rng.colapse;
			if((sel.type == "Text" || sel.type == "None") && rng != null)
			{
				rng.text = insert;
			}
		}
		
		rng.select();
		ie_range_cache = null;

	}
	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);

		obj_ta.value = start + insert + end;

		var cpos = ss + (insert.length);

		obj_ta.selectionStart = cpos;
		obj_ta.selectionEnd   = cpos;
		obj_ta.scrollTop      = st;


	}

	obj_ta.focus();
}

function fastQuote(m_id, m_login, m_data, q_type){
	var txt = '';
    //if (window.getSelection){
	//	txt = window.getSelection();
	//}else
    if (document.getSelection){
		txt = document.getSelection();
	}else if (document.selection){
		txt = document.selection.createRange().text;
	}

    if(txt == ''){
        alert('Выделите текст и нажмите ссылку "Цитата" снова.');
        return false;
    }

    var inp = document.getElementById('bb');
    doInsert(inp, "[quote][b]"+m_login+"[/b] @ "+m_data+" ["+q_type+"]"+m_id+"[/"+q_type+"]\n\n"+txt+"[/quote]\n");
    inp.focus();

	return false;
}

