//var area;
//var showDiv;
var formattedStr = "";
startPosition = 0;
var endPosition = 0;

/* window.onload = function()
{
	area = document.getElementById("area");
	showDiv = document.getElementById("showDiv");
}; 

function publish()
{
	formattedStr = "<pre>"+document.getElementById("area").value+"</pre>";
	showDiv.innerHTML = formattedStr;
} */

function insertsBoldTag(id)
{
	findPositions(id);

	var text = document.getElementById(id).value;
	if (startPosition!=endPosition) {
		var sbStr = text.substring(startPosition,endPosition);
		sbStr = "[b]"+sbStr+"[/b]";

		fillsFormattedString(text,sbStr,id);
	}
}

function insertsItalicTag(id)
{
	findPositions(id);

	var text = document.getElementById(id).value;
	if (startPosition!=endPosition) {
		var sbStr = text.substring(startPosition,endPosition);
		sbStr = "[i]"+sbStr+"[/i]";

		fillsFormattedString(text,sbStr,id);
	}
}

function insertsUnderlineTag(id)
{
	findPositions(id);

	var text = document.getElementById(id).value;
	if (startPosition!=endPosition) {
		var sbStr = text.substring(startPosition,endPosition);
		sbStr = "[u]"+sbStr+"[/u]";

		fillsFormattedString(text,sbStr,id);
	}
}

function insertsLinkTag(id)
{
	// findPositions(id);

	var text = document.getElementById(id).value;
	var url = prompt("Täydellinen nettiosoite:", "http://");
	if (url.indexOf("://") !=-1) {
		var linkname = prompt("Linkin nimi (ei pakollinen):", "");
		if (linkname.length > 1) {
			document.getElementById(id).value = text + "[url=" + url + "]" + linkname + "[/url]";
		} else {
			document.getElementById(id).value = text + "[url]" + url + "[/url]";
		}
		
	} else {
		alert("Nettiosote ei ole täydellinen, muista http://");

	}
}


function findPositions(id)
{
	var text = document.getElementById(id).value;

	if (document.selection) {
		// Internet Explorer
		var range = document.selection.createRange();
		var dpl = range.duplicate();
		if (range.text.length > 0) {
			dpl.moveToElementText(document.getElementById(id));
			dpl.setEndPoint("EndToEnd", range);
			startPosition = dpl.text.length-range.text.length;
			endPosition = startPosition + range.text.length;
			document.selection.empty();
		}	
	}
	else {
		// Mozilla Firefox
		startPosition = document.getElementById(id).selectionStart;
		endPosition = document.getElementById(id).selectionEnd;
	}
}

function fillsFormattedString(text, selectedText, id)
{
	// split textarea value into three pieces: before startPosition,
        // startPosition until endPosition, and after endPosition
	var str1 = text.substring(0,startPosition);
	var str2 = text.substring(startPosition,endPosition);
	var str3 = text.substring(endPosition,text.length);

	// replace str2 with formatted substring (selectedText)
	str2 = selectedText;
	// form the new string
	formattedStr = str1+str2+str3;
	document.getElementById(id).value = formattedStr;
}