// bbCode control by
// subBlue design
// www.subBlue.com
// Startup variables
var imageTag = false;
var theSelection = false;

// Check for Browser & Platform for PC & IE specific bits
// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var clientVer = parseInt(navigator.appVersion); // Get browser version

var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
                && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)
                && (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));
var is_moz = 0;

var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
var is_mac = (clientPC.indexOf("mac")!=-1);

// Define the bbCode tags
bbcode = new Array();
bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]','[img]','[/img]','[url]','[/url]');
imageTag = false;

// Replacement for arrayname.length property

	function storeCaret(element)
	{
		if (document.selection && document.selection.createRange)	//only 4 MSIE. detect it here
			element.caretPos = document.selection.createRange().duplicate();
	}

	function insertTag(element, tag, tag_value)
	{
		if (!element)
			return;

		element.focus();
    if(tag_value != null)
	    tag_before = tag + '=' + tag_value;
    else
	    tag_before = tag;
//		alert(tag_before);
		if (typeof(element.caretPos) != 'undefined')
			element.caretPos.text = '[' + tag_before + ']' + element.caretPos.text + '[/' + tag + ']';
		else if (typeof(element.selectionStart) != 'undefined')
		{
			var tempStr = element.value.substring(element.selectionEnd);
			var sStart = element.selectionStart;
			var sEnd = element.selectionEnd;
			element.value = element.value.substring(0, sStart) +
				'[' + tag_before + ']' +
				element.value.substring(sStart, sEnd) +
				'[/' + tag + ']';
			var newPos = element.value.length;
			element.value += tempStr;
			element.setSelectionRange(newPos, newPos);
		}
		else
			element.value += '[' + tag_before + ']' + '[/' + tag + ']';
	}

function emoticon(text) {
	var txtarea = document.topic_form.message;
	if (txtarea.createTextRange && txtarea.caretPos) {
		var caretPos = txtarea.caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
	} else {
		txtarea.value  += text;
	}
	txtarea.focus();
}

function quoteSelection(name, text_id) {
	theSelection = false;
  //   	theSelection = document.selection.createRange().text; // Get text selection
	text = '';
	if(mb = document.getElementById('message_body_'+text_id)){
		text = mb.innerHTML;
//alert text
		text = text.replace(/\<h3\>.*\<\/h3\>/g, '');
		text = text.replace(/\<.*?\>/g, '');
	} else text = text_id;

	emoticon('[u]' + name + '[/u] сказал:\n[quote]' + text + '[/quote]\n')
 	if (theSelection) {
      	// Add tags around selection
      	emoticon('[quote]' + theSelection + '[/quote]\n');
      	theSelection = '';
      	return;
      	}else{
    //  	alert('Выделите что-нибудь!');
  }
}

function isEmpty(str) {
   for (var i = 0; i < str.length; i++)
      if (" " != str.charAt(i))
          return false;
      return true;
}

function CheckRequiredFieldsForm(f) {
  var errMSG = "";
	var element2sel = null;
  // цикл ниже перебирает все элементы в объекте f, 
  // переданном в качестве параметра
  // функции, в данном случае - наша форма.            
  for (var i = 0; i<f.elements.length; i++) 
    // если текущий элемент имеет атрибут required
    // т.е. обязательный для заполнения
    if ((''!=f.elements[i].getAttribute("required")) && (null!=f.elements[i].getAttribute("required"))) 
       // проверяем, заполнен ли он в форме
        if (isEmpty(f.elements[i].value)) { // пустой
						if (element2sel == null) element2sel = f.elements[i];
            errMSG += "  " + f.elements[i].name + "\n"; // формируем сообщение
                                                       // об ошибке, перечисляя 
                                                       // незаполненные поля
				}
        // если сообщение об ошибке не пусто,
        // выводим его, и возвращаем false     
        if ("" != errMSG) {
            alert("Не заполнены обязательные поля:\n" + errMSG);
						if (element2sel != null) element2sel.focus();
            return false;
        }
}

var filesCNT = 0;

MoreFile = function(){
	if(filesCNT >= 9){
		alert('Слишком много файлов!');
		return false;
	}
	if(tr = document.getElementById('add_file')){
		while (tr.tagName != 'TR') tr = tr.parentNode;
		var idSuffix = Math.round(Math.random()*1000);
		var newTr = tr.parentNode.insertBefore(tr.cloneNode(true),tr.nextSibling);
		newTr.id = idSuffix;
		filesCNT++;
		num = filesCNT + 1;
		tds = newTr.getElementsByTagName('TD');
		tds[0].innerHTML = num;
		ahrs = newTr.getElementsByTagName('A');
		ahrs[0].id = 'img_'+ num;
	}
}

insertPicture = function(obj){
	str = '[img]'+obj.id+'[/img]';
	emoticon(str);
}

insert_URL = function(element){
	if (!element) return;
	element.focus();
	var tag_value = null;
	if(typeof(element.selectionStart) != 'undefined')
	{
		var tempStr = element.value.substring(element.selectionEnd);
		var sStart = element.selectionStart;
		var sEnd = element.selectionEnd;
		tag_value = element.value.substring(sStart, sEnd);
	}else if(document.selection){
		tag_value = document.selection.createRange().text;
	}
	insertTag(element, 'url', tag_value);
}
