// JavaScript Document
function getCursorPos (elm)
{
    switch (elm.nodeName.toLowerCase ())
    {
        case "textarea":
            return getCursorPosTextarea (elm);

        case "input":
            return getCursorPosInput (elm);
    }

    return {begin: null, end: null};
}

function getCursorPosInput (elm)
{
    if (typeof elm.selectionStart != "undefined" && typeof elm.selectionEnd != "undefined")
        return {begin: elm.selectionStart, end: elm.selectionEnd};

    if (document.selection && document.selection.createRange)
    {
        elm.focus ();

        var selRange = document.selection.createRange ().duplicate ();

        // check if element contains selected text
        if (selRange.parentElement () != elm)
            return {begin: "n/a", end: "n/a"};

        var range = elm.createTextRange ().duplicate ();

        //if (!range.inRange (selRange))
        //  return {begin: "n/a", end: "n/a"};

        range.setEndPoint ("EndToStart", selRange);

        return {begin: range.text.length, end: range.text.length + selRange.text.length};
    }

    return {begin: null, end: null};
}

function getCursorPosTextarea (elm)
{
    if (typeof elm.selectionStart != "undefined" && typeof elm.selectionEnd != "undefined")
        return {begin: elm.selectionStart, end: elm.selectionEnd};

    if (document.selection && document.selection.createRange)
    {
        //var textScroll = elm.scrollTop;
        elm.focus ();

        var selRange = document.selection.createRange ().duplicate ();

        // check if element contains selected text
        if (selRange.parentElement () != elm)
            return {begin: "n/a", end: "n/a"};

        var range = selRange.duplicate ();
        range.moveToElementText (elm);

        //if (!range.inRange (selRange))
        //  return {begin: "n/a", end: "n/a"};

        range.setEndPoint ("EndToStart", selRange);

        //elm.scrollTop = textScroll;
        return {begin: range.text.length, end: range.text.length + selRange.text.length};
    }

    return {begin: null, end: null};
}

function getPos (el)
{
    var cursor = getCursorPos (el);
    document.getElementById("pos").value = cursor.begin + ":" + cursor.end;
}

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 setPos (el, begin, end)
{
    setCursorPos (el, begin, end);
}
function createList(content)
{
  if(document.getElementById('list').style.display == 'block') document.getElementById('list').style.display = 'none';
  else 
  {
    document.getElementById('list').style.display = 'block';
    document.getElementById("list").innerHTML = content;
    //document.getElementById("list").innerHTML = '<a href=\"javascript: insObj(\'a1\');\" accesskey=\"1\" title=\"Nadpis 1\" >Nadpis 1</a><br />\n<a href=\"javascript: insObj(\'a2\');\" accesskey=\"2\" title=\"Nadpis 2\" >Nadpis 2</a><br />\n<a href=\"javascript: insObj(\'a3\');\" accesskey=\"3\" title=\"Nadpis 3\" >Nadpis 3</a>\n';
  }
}
function insObj(type)
{
  var cursor = getCursorPos(document.getElementById('textarea'));
  var value = document.getElementById('textarea').value;
  var scroll = document.getElementById('textarea').scrollTop;
  if(type == 'b')
  {
    document.getElementById('list').style.display = 'none';
    value = value.substring(0, cursor.begin) + '[TUČNÝ TEXT]Tučný text[/TUČNÝ TEXT]' + value.substring(cursor.end);
    document.getElementById('textarea').value = value;
    setPos(document.getElementById('textarea'), cursor.begin + 12, cursor.begin + 22);
  }
  else if(type == 'i')
  {
    document.getElementById('list').style.display = 'none';
    value = value.substring(0, cursor.begin) + '[KURZÍVA]Kurzíva[/KURZÍVA]' + value.substring(cursor.end);
    document.getElementById('textarea').value = value;
    setPos(document.getElementById('textarea'), cursor.begin + 9, cursor.begin + 16);  
  }
  else if(type == 'a')
  {
    if(document.getElementById('list').style.display == 'block') document.getElementById('list').style.display = 'none';
    else 
    {
      document.getElementById('list').style.display = 'block';
     document.getElementById("list").innerHTML = '<a href=\"javascript: insObj(\'a1\');\" accesskey=\"1\" title=\"Nadpis 1\" >Nadpis 1</a><br />\n<a href=\"javascript: insObj(\'a2\');\" accesskey=\"2\" title=\"Nadpis 2\" >Nadpis 2</a><br />\n<a href=\"javascript: insObj(\'a3\');\" accesskey=\"3\" title=\"Nadpis 3\" >Nadpis 3</a>\n';
      
      //document.getElementById('key').style.right = '15px';
      //document.getElementById('key').style.top = '15px';//document.getElementById('navigace').style.top; 
    }
    //document.getElementById('obsah').style.display = 'none';
  }
  else if(type == 'a1')
  {
    document.getElementById('list').style.display = 'none';
    value = value.substring(0, cursor.begin) + '\n= Nadpis 1 =\n' + value.substring(cursor.end);
    document.getElementById('textarea').value = value;
    setPos(document.getElementById('textarea'), cursor.begin + 3, cursor.begin + 11);  
  }
  else if(type == 'a2')
  {
    document.getElementById('list').style.display = 'none';
    value = value.substring(0, cursor.begin) + '\n== Nadpis 2 ==\n' + value.substring(cursor.end);
    document.getElementById('textarea').value = value;
    setPos(document.getElementById('textarea'), cursor.begin + 4, cursor.begin + 12);  
  }
  else if(type == 'a3')
  {
    document.getElementById('list').style.display = 'none';
    value = value.substring(0, cursor.begin) + '\n=== Nadpis 3 ===\n' + value.substring(cursor.end);
    document.getElementById('textarea').value = value;
    setPos(document.getElementById('textarea'), cursor.begin + 5, cursor.begin + 13);  
  }
  else if(type == 'img')
  {
    document.getElementById('list').style.display = 'none';
    value = value.substring(0, cursor.begin) + '[[OBRÁZEK:Příklad.jpg|Popis|100%]]' + value.substring(cursor.end);
    document.getElementById('textarea').value = value;
    setPos(document.getElementById('textarea'), cursor.begin + 10, cursor.begin + 27);  
  }
  else if(type == 'elink')
  {
    document.getElementById('list').style.display = 'none';
    value = value.substring(0, cursor.begin) + '[[http://www.adresa.cz|Název odkazu]]' + value.substring(cursor.end);
    document.getElementById('textarea').value = value;
    setPos(document.getElementById('textarea'), cursor.begin + 9, cursor.begin + 35);  
  }
  else if(type == 'mail')
  {
    document.getElementById('list').style.display = 'none';
    value = value.substring(0, cursor.begin) + '[[mailto:jmeno@server.cz|Název odkazu]]' + value.substring(cursor.end);
    document.getElementById('textarea').value = value;
    setPos(document.getElementById('textarea'), cursor.begin + 9, cursor.begin + 37);  
  }
  else if(type == 'ilink')
  {
    document.getElementById('list').style.display = 'none';
    value = value.substring(0, cursor.begin) + '[[Název stránky|Název odkazu]]' + value.substring(cursor.end);
    document.getElementById('textarea').value = value;
    setPos(document.getElementById('textarea'), cursor.begin + 2, cursor.begin + 28);  
  }
  else if(type == '-')
  {
    document.getElementById('list').style.display = 'none';
    value = value.substring(0, cursor.begin) + '\n----\n' + value.substring(cursor.end);
    document.getElementById('textarea').value = value;
    setPos(document.getElementById('textarea'), cursor.begin + 6, cursor.begin + 6);  
  }
  else if(type == 'br')
  {
    document.getElementById('list').style.display = 'none';
    value = value.substring(0, cursor.begin) + '[ODŘÁDKOVÁNÍ /]\n' + value.substring(cursor.end);
    document.getElementById('textarea').value = value;
    setPos(document.getElementById('textarea'), cursor.begin + 16, cursor.begin + 16);  
  }
  else if(type == 'h')
  {
    document.getElementById('list').style.display = 'none';
    value = value.substring(0, cursor.begin) + '[HORNÍ INDEX]Horní index[/HORNÍ INDEX]' + value.substring(cursor.end);
    document.getElementById('textarea').value = value;
    setPos(document.getElementById('textarea'), cursor.begin + 13, cursor.begin + 24);  
  }
  else if(type == 'd')
  {
    document.getElementById('list').style.display = 'none';
    value = value.substring(0, cursor.begin) + '[DOLNÍ INDEX]Dolní index[/DOLNÍ INDEX]' + value.substring(cursor.end);
    document.getElementById('textarea').value = value;
    setPos(document.getElementById('textarea'), cursor.begin + 13, cursor.begin + 24);  
  }
  else if(type == 'c')
  {
    document.getElementById('list').style.display = 'none';
    value = value.substring(0, cursor.begin) + '[STŘED]Text zarovnaný na střed[/STŘED]' + value.substring(cursor.end);
    document.getElementById('textarea').value = value;
    setPos(document.getElementById('textarea'), cursor.begin + 7, cursor.begin + 30);  
  }
  document.getElementById('textarea').scrollTop = scroll;
}
function insObjR(type, content)
{
  var cursor = getCursorPos(document.getElementById('textarea'));
  var value = document.getElementById('textarea').value;
  var scroll = document.getElementById('textarea').scrollTop;
  if(type == 'link')
  {
    document.getElementById('list').style.display = 'none';
    value = value.substring(0, cursor.begin) + '[[' + content + ']]' + value.substring(cursor.end);
    document.getElementById('textarea').value = value;
    setPos(document.getElementById('textarea'), cursor.begin + 2, cursor.begin + 2 + content.length);  
  }
  else if(type == 'img')
  {
    document.getElementById('list').style.display = 'none';
    value = value.substring(0, cursor.begin) + '[[OBRÁZEK:' + content + '|Popis|100%]]' + value.substring(cursor.end);
    document.getElementById('textarea').value = value;
    setPos(document.getElementById('textarea'), cursor.begin + 11 + content.length, cursor.begin + 16 + content.length);  
  }
  document.getElementById('textarea').scrollTop = scroll;
}
function show(type)
{
  if(type == 'main_content')
  {
    document.getElementById('editor').style.display = 'none';
    document.getElementById('main_content').style.display = 'block'; 
  }
  else if(type == 'editor')
  {
    document.getElementById('editor').style.display = 'block';
    document.getElementById('main_content').style.display = 'none';
  }
}
function addTool(type, title, src, aKey, noJS)
{
  document.write('<a href=\"');
  if(noJS == false) document.write('javascript: insObj(\'' + type + '\');');
  else document.write('#');
  document.write('\" accesskey=\"' + aKey + '\" title=\"' + title + '\" ><img src="ico/' + src + '.gif" alt="' + src + '"></a>\n');
  //<span class=\"popis\" >' + title + '</span>
}
function addList(content, title, src, aKey, noJS)
{
  //document.write(content);
  document.write('<a href=\"');
  if(noJS == false) document.write('javascript: createList(\'' + content + '\');');
  else document.write('#');
  document.write('\" accesskey=\"' + aKey + '\" title=\"' + title + '\" ><img src="ico/' + src + '.gif" alt="' + src + '"></a>\n');
}
function addSubTool(type, title, src, aKey, noJS)
{
  document.write('<a href=\"');
  if(noJS == false) document.write('javascript: insObj(\'' + type + '\');');
  else document.write('#');
  document.write('\" accesskey=\"' + aKey + '\" title=\"' + title + '\" >' + src + '"></a>\n');
}
function invertCheck(id, id_img, img1, img2)
{
  if(document.getElementById(id).checked == false) 
  {
    document.getElementById(id).checked = true;
    document.getElementById(id_img).src = img1;
  }
  else 
  {
    document.getElementById(id).checked = false;
    document.getElementById(id_img).src = img2;
  }
}

