
// 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]');
bbtags = new Array( '[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]' );
//imageTag = false;





// Replacement for arrayname.length property
function getarraysize( thearray )
{
	for ( i = 0; i < thearray.length; i++ )
	{
		if ( (thearray[i] == "undefined") || (thearray[i] == "") || (thearray[i] == null) )	return i;
	}
	return thearray.length;
}

// Replacement for arrayname.push(value) not implemented in IE until version 5.5	Appends element to the array
function arraypush( thearray, value )
{
	thearray[ getarraysize( thearray ) ] = value;
}

// Replacement for arrayname.pop() not implemented in IE until version 5.5     		Removes and returns the last element of an array
function arraypop( thearray )
{
	thearraysize = getarraysize( thearray );
	retval = thearray[thearraysize - 1];
	delete thearray[thearraysize - 1];
	return retval;
}


function insert_text( text ) 					// вставка текста text в текстовое поле txtarea  (new)
{
	var txtarea = document.new_comment_form.comment;
	text = ' ' + text + ' ';
	if ( txtarea && txtarea.createTextRange && txtarea.caretPos )
	{
		txtarea.caretPos.text = txtarea.caretPos.text.charAt(txtarea.caretPos.text.length - 1) == ' ' ? txtarea.caretPos.text + text + ' ' : txtarea.caretPos.text + text;
		txtarea.focus();
	}
	else
	{
		txtarea.value  += text;
		txtarea.focus();
	}
	store_caret( txtarea );
}

//	function insert_text( element, text ) 												// old
//	{
//		if ( element && element.caretPos )	element.caretPos.text = text;
//		else
//			if ( element && element.selectionStart+1 && element.selectionEnd+1 ) element.value = element.value.substring( 0, element.selectionStart ) + text + element.value.substring( element.selectionEnd, element.value.length );
//			else
//				if ( element ) element.value += text;
//	}

function store_caret( textEl ) 									// new
{
	if ( textEl.createTextRange ) textEl.caretPos = document.selection.createRange().duplicate();
}

//function store_caret( element ) 								// old
//{
//	if ( document.selection && document.selection.createRange )	element.caretPos = document.selection.createRange().duplicate();
//}



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

function insert_tag( bbnumber ) 				// вставка тэга с номером bbnumber в текстовое поле txtarea
{
	var txtarea = document.new_comment_form.comment;
	txtarea.focus();
	donotinsert = false;
	theSelection = false;
	bblast = 0;

	if ( bbnumber == -1 )  				// Close all open tags & default button names
	{
		while ( bbcode[0] )
		{
			butnumber = arraypop( bbcode ) - 1;
			txtarea.value += bbtags[butnumber + 1];
//			buttext = eval( 'document.post.addbbcode' + butnumber + '.value' );
//			eval( 'document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"' );
		}
//		imageTag = false; 				// All tags are closed including image tags
		txtarea.focus();
		return;
	}

	if ( ( clientVer >= 4 ) && is_ie && is_win )
	{
		theSelection = document.selection.createRange().text; 		// Get text selection
		if ( theSelection )
		{
			document.selection.createRange().text = bbtags[bbnumber] + theSelection + bbtags[bbnumber+1];		// Add tags around selection
			txtarea.focus();
			theSelection = '';
			return;
		}
	}
	else if ( txtarea.selectionEnd && ( txtarea.selectionEnd - txtarea.selectionStart > 0 ) )
	{
		mozWrap(txtarea, bbtags[bbnumber], bbtags[bbnumber+1]);
		return;
	}

	for ( i = 0; i < bbcode.length; i++ ) 						// Find last occurance of an open tag the same as the one just clicked
	{
		if ( bbcode[i] == bbnumber+1 )
		{
			bblast = i;
			donotinsert = true;
		}
	}

	if ( donotinsert ) 											// Close all open tags up to the one just clicked & default button names
	{
		while ( bbcode[bblast] )
		{
			butnumber = arraypop(bbcode) - 1;
			txtarea.value += bbtags[butnumber + 1];
//			buttext = eval('document.post.addbbcode' + butnumber + '.value');
//			eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
//			imageTag = false;
		}
		txtarea.focus();
		return;
	}
	else 														// Open tags
	{
//		if (imageTag && (bbnumber != 14)) 						// Close image tag before adding another
//		{
//			txtarea.value += bbtags[15];
//			lastValue = arraypop(bbcode) - 1;					// Remove the close image tag from the list
//			document.post.addbbcode14.value = "Img";			// Return button back to normal state
//			imageTag = false;
//		}

		txtarea.value += bbtags[bbnumber];							// Open tag
//		if ((bbnumber == 14) && (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag
		arraypush(bbcode,bbnumber+1);
//		eval('document.post.addbbcode'+bbnumber+'.value += "*"');
		txtarea.focus();
		return;
	}
	store_caret( txtarea );
}


function mozWrap( txtarea, open, close )							// From http://www.massless.org/mozedit/
{
	var selLength = txtarea.textLength;
	var selStart = txtarea.selectionStart;
	var selEnd = txtarea.selectionEnd;
	if ( selEnd == 1 || selEnd == 2 ) selEnd = selLength;

	var s1 = ( txtarea.value ).substring( 0, selStart );
	var s2 = ( txtarea.value ).substring( selStart, selEnd )
	var s3 = ( txtarea.value ).substring( selEnd, selLength );
	txtarea.value = s1 + open + s2 + close + s3;
	return;
}

var selection = false; 											// Selection data


function catchSelection()										// Catching selection
{
	if (window.getSelection)			selection = window.getSelection().toString();
	else if (document.getSelection)		selection = document.getSelection();
	else if (document.selection)		selection = document.selection.createRange().text;
}


//function putName(name)											// Putting username to the post box
//{
//	insert_text_wospaces('[b]'+name+'[/b]\n');
//	document.post.message.focus();
//	return;
//}


//function quoteSelection(name)									// Putting selection to the post box
//{
//	if (selection)
//	{
//		insert_text_wospaces('[quote="'+name+'"]' + selection + '[/quote]\n');
//		selection = '';
//		document.post.message.focus();
//		return;
//	}
//	else
//	{
//		alert(l_no_text_selected);
//		return;
//	}
//}