var pos_start = 0;
var pos_len = 0;
var pos_text = "";
var menu_img = false;
var menu_tmb = false;

var loc_adresa = "Zadejte adresu odkazu.";
var loc_popisek = "Zadejte popisek odkazu.";
var loc_video = "Zadejte ID videa YouTube (např. ewN_NK0mG_o).";
var loc_sirka = "Zadejte šířku videa v pixelech.";
var loc_vyska = "Zadejte výšku videa v pixelech.";
var loc_alt = "Zadejte alternativní popisek obrázku.";
var loc_align = "Zadejte zarovnání obrázku (left, right, center) nebo nechte políčko prázdné.";
var loc_nochar = "Nenapsal(a) jste žádný znak.";
var loc_chars = "Znaků: "

function getPos (el)
{
    var cursor = getCursorPosTextarea (el);
	pos_start = cursor.begin;
	pos_len = cursor.end;
	pos_text = cursor.text;
	
	var pocet = document.getElementById('menuhraform').text.value.length;
	
	if (pocet == 0) {
		document.getElementById("pocitadlo").innerHTML = '<img src="/img/pozn.gif" width="10" height="10" alt="" align="absmiddle" /> ' + loc_nochar;
	} else {
		document.getElementById("pocitadlo").innerHTML = '<img src="/img/pozn.gif" width="10" height="10" alt="" align="absmiddle" /> ' + loc_chars + pocet;
	}
}

function getCursorPosTextarea (elm)
{
	var tmp_text;
	var tmp_Start;
	var tmp_End;
	
    if (typeof elm.selectionStart != "undefined" && typeof elm.selectionEnd != "undefined") {
		if (elm.selectionEnd - elm.selectionStart > 0) {
			tmp_text = Mid(elm.value, elm.selectionStart, elm.selectionEnd - elm.selectionStart);
		} else {
			tmp_text = "";
		}
		
        return {begin: elm.selectionStart, end: elm.selectionEnd - elm.selectionStart, text: tmp_text};
	}

    if (document.selection && document.selection.createRange) {
        elm.focus ();
		
		var sel = document.selection;
		var rng = sel.createRange();

		var stored_range = rng.duplicate()
		stored_range.moveToElementText(elm);
		stored_range.setEndPoint( 'EndToEnd', rng );

		tmp_Start = stored_range.text.length - rng.text.length;
		tmp_End = tmp_Start + rng.text.length;

		rng.colapse;

		if (rng.text.length > 0) {
			tmp_text = rng.text
			//tmp_text = Mid(elm.value, range.text.length, selRange.text.length);
		} else {
			tmp_text = "";
		}
		
        return {begin: tmp_Start, end: tmp_End - tmp_Start, text: tmp_text};
    }

    return {begin: null, end: null, text: null};
}

function setCursorPos (elm, begin, end)
{
    if (typeof elm.selectionStart != "undefined" && typeof elm.selectionEnd != "undefined")
    {
        elm.setSelectionRange (begin, end);
        elm.focus ();
    }

    else if (document.selection && document.selection.createRange)
    {
        var range = elm.createTextRange ();
        range.move ("character", begin);
        range.moveEnd ("character", end - begin);
        range.select ();
    }
}

function TagIt(tag) {
	var prev_text = "";
	var next_text = "";
	var sel_start = 0;
	var sel_len = 0;
	var sel_cont = "";
	var nocont_curpos = 0;
	var answer;
	var my_elm = document.getElementById('menuhraform').text;
	var tmp_cont = true;

	if (pos_start != 0) {
		prev_text = Mid(my_elm.value, 0, pos_start)
	} else {
		prev_text = ""
	}
	
	if (pos_start + pos_len != my_elm.value.length) {
		next_text = Mid(my_elm.value, pos_start + pos_len, my_elm.value.length)
	} else {
		next_text = ""
	}
	
	if (tag == "B") {
		sel_cont = "[b]" + pos_text + "[/b]";
		nocont_curpos = 3;
	} else if (tag == "I") {
		sel_cont = "[i]" + pos_text + "[/i]";
		nocont_curpos = 3;
	} else if (tag == "U") {
		sel_cont = "[u]" + pos_text + "[/u]";
		nocont_curpos = 3;

	} else if (tag == "s2") {
		sel_cont = "[:-)]" + pos_text;
		nocont_curpos = 5; // to bude pocet znaku
	} else if (tag == "s3") {
		sel_cont = "[:-(]" + pos_text;
		nocont_curpos = 5; // to bude pocet znaku

	} else if (tag == "s5") {
		sel_cont = "[s5]" + pos_text;
		nocont_curpos = 5; // to bude pocet znaku

	} else if (tag == "s6") {
		sel_cont = "[s6]" + pos_text;
		nocont_curpos = 5; // to bude pocet znaku


	} else if (tag == "s13") {
		sel_cont = "[s13]" + pos_text;
		nocont_curpos = 5; // to bude pocet znaku

	} else if (tag == "s14") {
		sel_cont = "[s14]" + pos_text;
		nocont_curpos = 5; // to bude pocet znaku

	} else if (tag == "s15") {
		sel_cont = "[s15]" + pos_text;
		nocont_curpos = 5; // to bude pocet znaku
	} else if (tag == "s16") {
		sel_cont = "[s16]" + pos_text;
		nocont_curpos = 5; // to bude pocet znaku
	} else if (tag == "s17") {
		sel_cont = "[s17]" + pos_text;
		nocont_curpos = 5; // to bude pocet znaku

		
	} else if (tag == "H1") {
		sel_cont = "[h1]" + pos_text + "[/h1]";
		nocont_curpos = 4;
	} else if (tag == "H2") {
		sel_cont = "[h2]" + pos_text + "[/h2]";
		nocont_curpos = 4;
	} else if (tag == "CENTER") {
		sel_cont = "[CENTER]" + pos_text + "[/CENTER]";
		nocont_curpos = 8;
	} else if (tag == "Q") {
		sel_cont = "[Q]" + pos_text + "[/Q]";
		nocont_curpos = 3;
	} else if (tag == "CODE") {
		sel_cont = "[CODE]" + pos_text + "[/CODE]";
		nocont_curpos = 6;
	} else if (tag == "RATING") {
		sel_cont = "[RATING]" + pos_text + "[/RATING]";
		nocont_curpos = 8;
	} else if (tag == "LIST") {
		sel_cont = "[LIST]" + pos_text + "[/LIST]";
		nocont_curpos = 6;
	} else if (tag == "A") {
		if (pos_text.length == 0) {
			answer = prompt(loc_adresa, "http://");
			sel_cont = "[a:" + answer + "]]"
			answer = prompt(loc_popisek, "");
			sel_cont = sel_cont + answer + "[/a]"
		} else if (Mid(pos_text, 0, 4) == "http") {
			answer = prompt(loc_popisek, "");
			sel_cont = "[a:" + pos_text + "]]" + answer + "[/a]"
		} else {
			answer = prompt(loc_adresa, "http://");
			sel_cont = "[a:" + answer + "]]" + pos_text + "[/a]"
		}
		nocont_curpos = sel_cont.length;
	} else if (tag == "YOUTUBE") {
		answer = prompt(loc_video, "");
		if (undefined == answer) {return}
		if (Mid(answer, 0, 25) == "http://www.youtube.com/v/") {answer = Mid(answer, 25, answer.length - 25)}
		sel_cont = "[YOUTUBE:" + answer;
		answer = prompt(loc_sirka, "425");
		sel_cont = sel_cont + ";" + answer;
		answer = prompt(loc_vyska, "350");
		sel_cont = sel_cont + ";" + answer + "]";
		nocont_curpos = sel_cont.length;
	} else if (tag == "IMG") {
		if (menu_img == true) {
			HidePictureSelDiv();
		} else {
			ShowPictureSelDiv(my_elm);
		}
		tmp_cont = false;
	} else if (tag == "TMB") {
		if (menu_tmb == true) {
			HideThumbnailsSelDiv();
		} else {
			ShowThumbnailsSelDiv(my_elm);
		}
		tmp_cont = false;
	}
	
	if (tmp_cont == true) {
		if (typeof my_elm.selectionStart != "undefined" && typeof my_elm.selectionEnd != "undefined") {
			my_elm.value = prev_text + sel_cont + next_text;
			
			if (pos_text.length == 0) {
				sel_start = prev_text.length + nocont_curpos
				sel_len = prev_text.length + nocont_curpos
			} else {
				sel_start = prev_text.length;
				sel_len = sel_start + sel_cont.length;
			}
			
			setCursorPos(my_elm, sel_start, sel_len);
		} else {
			my_elm.focus ();
		
			var sel = document.selection;
			var rng = sel.createRange();
	
			var stored_range = rng.duplicate()
			stored_range.moveToElementText(my_elm);
			stored_range.setEndPoint( 'EndToEnd', rng );
	
			tmp_Start = stored_range.text.length - rng.text.length;
			tmp_End = tmp_Start + rng.text.length;
	
			rng.colapse;
	
			rng.text = sel_cont;
			rng.select();
		}
	}
}

function TagItInsertPic(code) {
	var prev_text = "";
	var next_text = "";
	var sel_start = 0;
	var sel_len = 0;
	var sel_cont = "";
	var nocont_curpos = 0;
	var answer;
	var my_elm = document.getElementById('menuhraform').text;
	
	if (pos_start != 0) {
		prev_text = Mid(my_elm.value, 0, pos_start)
	} else {
		prev_text = ""
	}
	
	if (pos_start + pos_len != my_elm.value.length) {
		next_text = Mid(my_elm.value, pos_start + pos_len, my_elm.value.length)
	} else {
		next_text = ""
	}

	sel_cont = "[IMG:" + code;
	answer = prompt(loc_alt, "");
	sel_cont = sel_cont + ";" + answer;
	answer = prompt(loc_align, "");
	sel_cont = sel_cont + ";" + answer + "]";

	my_elm.value = prev_text + sel_cont + next_text;
	
	sel_start = prev_text.length + sel_cont.length;
	sel_len = sel_start;
	setCursorPos(my_elm, sel_start, sel_len);
}

function TagItInsertThumb(code) {
	var prev_text = "";
	var next_text = "";
	var sel_start = 0;
	var sel_len = 0;
	var sel_cont = "";
	var nocont_curpos = 0;
	var answer;
	var my_elm = document.getElementById('menuhraform').text;
	
	if (pos_start != 0) {
		prev_text = Mid(my_elm.value, 0, pos_start)
	} else {
		prev_text = ""
	}
	
	if (pos_start + pos_len != my_elm.value.length) {
		next_text = Mid(my_elm.value, pos_start + pos_len, my_elm.value.length)
	} else {
		next_text = ""
	}

	sel_cont = "[TMB:" + code;
	answer = prompt(loc_alt, "");
	sel_cont = sel_cont + ";" + answer;
	answer = prompt(loc_align, "");
	sel_cont = sel_cont + ";" + answer + "]";

	my_elm.value = prev_text + sel_cont + next_text;
	
	sel_start = prev_text.length + sel_cont.length;
	sel_len = sel_start;
	setCursorPos(my_elm, sel_start, sel_len);
}

function Mid(strtext, start, end){
	if(!start){start = 0};
	if(!end || end > strtext.length){end = strtext.length};
	if(end != strtext.length){end = start + end};
	return strtext.substring(start, end);
}

function HidePictureSelDiv() {
	menu_img = false;
	if (document.layers) {document.selpicDiv.top = -999}
	if (document.all) {selpicDiv.style.top = -999}
	if (!document.all && document.getElementById) {document.getElementById("selpicDiv").style.top = -999}
	
	document.getElementById("selimgbut").src = "/img/blog_picture.png";
}

function ShowPictureSelDiv(elem) {
	if (menu_tmb == true) {HideThumbnailsSelDiv();}
	menu_img = true;
	
	if (document.layers) {
		document.selpicDiv.left = findX(elem) + 1 + 183
		document.selpicDiv.top = findY(elem)
		document.selpicDiv.visibility = "visible"
	}
	if (document.all) {
		selpicDiv.style.left = findX(elem) + 183
		selpicDiv.style.top = findY(elem)
		selpicDiv.style.visibility = "visible"
	}
	if (!document.all && document.getElementById) {
		document.getElementById("selpicDiv").style.left = findX(elem) + 183
		document.getElementById("selpicDiv").style.top = findY(elem)
		document.getElementById("selpicDiv").style.visibility = "visible"
	}
	
	document.getElementById("selimgbut").src = "/img/blog_picture_sel.png"
}

function HideThumbnailsSelDiv() {
	menu_tmb = false;
	if (document.layers) {document.selthumbDiv.top = -999; document.seltmbbut.src = "/img/blog_thumb.png"}
	if (document.all) {selthumbDiv.style.top = -999}
	if (!document.all && document.getElementById) {document.getElementById('selthumbDiv').style.top = -999}
	
	document.getElementById("seltmbbut").src = "/img/blog_thumb.png";
}

function ShowThumbnailsSelDiv(elem) {
	if (menu_img == true) {HidePictureSelDiv();}
	menu_tmb = true;
	
	if (document.layers) {
		document.selthumbDiv.left = findX(elem) + 1 + 206
		document.selthumbDiv.top = findY(elem)
		document.selthumbDiv.visibility = "visible"
	}
	if (document.all) {
		selthumbDiv.style.left = findX(elem) + 206
		selthumbDiv.style.top = findY(elem)
		selthumbDiv.style.visibility = "visible"
	}
	if (!document.all && document.getElementById) {
		document.getElementById("selthumbDiv").style.left = findX(elem) + 206
		document.getElementById("selthumbDiv").style.top = findY(elem)
		document.getElementById("selthumbDiv").style.visibility = "visible"
	}
	
	document.getElementById("seltmbbut").src = "/img/blog_thumb_sel.png"
}

function findX(obj) {
	var curleft=0;
	if (document.getElementById||document.all) {
		while(obj.offsetParent) {
			curleft+=obj.offsetLeft;obj=obj.offsetParent;
		}
	}
	else if (document.layers) {
		curleft+=obj.x;
	}
	return curleft;
}

function findY(obj) {
	var curtop=0;
	if (document.getElementById||document.all) {
		while(obj.offsetParent) {
			curtop+=obj.offsetTop;obj=obj.offsetParent;
		}
	}
	else if (document.layers) {
		curtop+=obj.y;
	}
	return curtop;
}

