//------------------------------------------------------------------------------
// o(d)značení všech formulářových prvků začínajících daným jménem
//------------------------------------------------------------------------------
function setCheckboxes (form_id, name_prefix, checked)
{
  value = 1;
  var form = document.getElementById(form_id);
  // zjištění cílového stavu checkboxů
  if (checked == null)
  {
      for (i = 0; i < form.length; i++)
      {
        if (form[i].name.substr(0,name_prefix.length) == name_prefix)
        {
          value = !form[i].checked;
          break;
        }
      }
  }
  else value = checked;
  
  // nastavení stavu
  for (i = 0; i < form.length; i++)
    if (form[i].name.substr(0,name_prefix.length) == name_prefix) form[i].checked = value;
}

function switchCheckbox (check_id)
{
  var checkbox = document.getElementById(check_id);
  checkbox.checked = !checkbox.checked;
}

//------------------------------------------------------------------------------
// TEXT TO HTML - vkládání značek do formulářových polí
//------------------------------------------------------------------------------

function text2html_tag_img (form_id, img_value, imgout_id)
{
  
  img = img_value.split("_");
  if (document.getElementById(imgout_id).checked)
    text2html_tag (form_id, '{{obrázek č. '+img[0]+', '+img[1]+'+}}', '');
  else
    text2html_tag (form_id, '{{obrázek č. '+img[0]+', '+img[1]+'}}', '')
  document.getElementById ("text2html_img_select"+form_id).style.display="none";
}

function text2html_tag (id, tag, tag2)
{
 var obj = document.getElementById(id);
 obj.focus();
 
 // IE
 if (document.selection)
 {
   var textrange = document.selection.createRange();
   // odstranění poslední mezery z výběru
   if (textrange.text.substr(textrange.text.length-1,1) == ' ')
   {
     textrange.moveStart("character", -1);
     textrange.select();
   }
   // zrušení výběru při požadavku "no_select" -  umístění kurzoru na konec výběru
   if (tag2 == "no_select")
   {
     textrange.moveStart("character", textrange.text.length);
     textrange.select();
     tag2 = "";
   }
   
   // nulový výběr
   if (!textrange.text.length) move_cursor = true;
   
   // přidat tagy
   textrange.text = tag + textrange.text + tag2;
   
   // nulový výběr
   if (move_cursor)
   {
     textrange.moveStart("character", -tag2.length);
     textrange.collapse();
     textrange.select();
   }
 }
 
 // Mozilla
 else if  (obj.selectionStart || obj.selectionStart == '0')
 {
   // uložení pozic výběru
   sel_start = obj.selectionStart;
   sel_end = obj.selectionEnd;
   scroll_position = obj.scrollTop;
   
   // zrušení výběru při tomto požadavku (umístění kurzoru na konec výběru)
   if (tag2 == "no_select")
   {
     sel_start = sel_end;
     tag2 = "";
   }
   
   // odebrat z výběru poslední mezeru v případě vkládání párového tagu
   if (obj.value.substring(sel_end-1,sel_end) == ' ' && tag2 && obj.selectionStart != obj.selectionEnd)
     sel_end--;
   
   // vložení tagů
   obj.value = obj.value.substring(0,sel_start) + tag + obj.value.substring(sel_start, sel_end) + tag2 + obj.value.substring(sel_end, obj.value.length);
   
   // znovunastavení výběru
   obj.selectionEnd = sel_end + tag.length + tag2.length;
   obj.selectionStart = obj.selectionEnd;
   
   // nulový výběr > posun doprostřed
   if (sel_start == sel_end)
     obj.selectionStart = obj.selectionEnd = obj.selectionStart - tag2.length;

   
   // scrollování v textarea
   obj.scrollTop = scroll_position;
  
 }
 
 // jiné
 else
  obj.value += (tag + tag2);
}

function text2html_show_img_select (select_id)
{
  obj = document.getElementById(select_id);
  if (obj.style.display == 'inline')
    obj.style.display = 'none';
  else
    obj.style.display = 'inline';
}


//------------------------------------------------------------------------------
// SMS - počet zpráv
//------------------------------------------------------------------------------
function count_sms_parts (max_o2, max_vod, max_tmo, max_parts)
{
  var sender = document.getElementById ("sender");
  var sms_body = document.getElementById ("sms_body");
  var max_length_obj = document.getElementById ("max_length");
  var sms_parts_obj = document.getElementById ("sms_parts");
  
  var num_o2 = Math.ceil(sms_body.value.length/(max_o2-sender.innerHTML.length))
  var num_vod = Math.ceil(sms_body.value.length/(max_vod-sender.innerHTML.length))
  var num_tmo = Math.ceil(sms_body.value.length/(max_tmo-sender.innerHTML.length))
  
  var max_length = (Math.min (max_o2, max_vod, max_tmo) - sender.innerHTML.length) * 5;
  
  max_length_obj.innerHTML = sms_body.value.length + "/" + max_length;
  sms_parts_obj.innerHTML = "O2 " + num_o2 + ", Vodafone " + num_vod + ", T-mobile " + num_tmo;
  
  if (num_o2 > max_parts || num_vod > max_parts || num_tmo > max_parts)
    document.getElementById("message_limit").innerHTML = " - překročena povolená délka zprávy, text bude zkrácen!";
  else
    document.getElementById("message_limit").innerHTML = "";
    
}

//------------------------------------------------------------------------------
// ajax
//------------------------------------------------------------------------------

function browserType()
{
    if (window.ActiveXObject)
        return "ie";
    // mozilla/opera/safari
    else if (window.XMLHttpRequest)
        return "moz";
    else
        return "unknown";
}

function getHttpRequest()
{
    var httpRequest;
    var borwser = browserType();

    // mozilla/opera/safari
    if (borwser == "moz")
    {
        httpRequest = new XMLHttpRequest();
    }
    // IE
    if (borwser == "ie")
    {
        try {
            httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
	    } catch(e) {
            try {
                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
		    } catch(e) {
                httpRequest = false;
                alert("Browser is not compatible with AJAX")
		    }
	    }
    }
    return httpRequest;
}


function sendRequest(method, url, content)
{
    var httpRequest = getHttpRequest();
    if (!httpRequest) return false;
    if (method == "post")
    {
        httpRequest.open("POST", url);
        httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        httpRequest.send(content);
    }
    else if (method == "get")
    {
        httpRequest.open("GET", url);
        httpRequest.send(content);
    }
    return httpRequest;
}

// sestavení proměnných formuláře pro ajax požadavky
// všechny s name
// podle názvů elementů
// u checkboxů se bere true/false
// @param string form - name formuláře
function preparePostFormAll(form)
{
    var params = "";
    for (i = 0; i < form.length; i++)
    {
        if (form[i].name != "")
        {
            var elem = form[i];
            var param;
            if (elem.type == "checkbox")
                param = elem.checked ? 1 : 0;
            else if (elem.type == "radio")
            {
                if (elem.checked) param = elem.value;
                else continue;
            }
            else
                param = encodeURIComponent(elem.value);
            params = params + form[i].name + "=" + param + "&";
        }
    }
    return params.substring(0, params.length-1);
}


/**
 * SOUŘADNICE MYŠI
 */

function getMouseX(e)
{
    if (!e) e = window.event;
    if (e.pageX)
        return e.pageX;
    else if (e.clientX)
        return e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
}
function getMouseY(e)
{
    if (!e) e = window.event;
    if (e.pageY)
        return e.pageY;
    else if (e.clientY)
        return e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
}


//------------------------------------------------------------------------------

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}



//------------------------------------------------------------------------------

function markPiece(id)
{
    div = document.getElementById("postel_table");
    var httpRequest = sendRequest("get", "index.php?ax_mark_piece=1&id="+id, null);
    httpRequest.onreadystatechange = function()
    {
        if (httpRequest.readyState == 4)
        {
            if (httpRequest.status == 200)
            {
                if (httpRequest.responseText != "")
                {
                    div.innerHTML = httpRequest.responseText;
                }
            }
        }
    };
}

//------------------------------------------------------------------------------
// zobrazení / skrytí elementu
//------------------------------------------------------------------------------
function switchElementVisibility(id, displayType)
{
  if (document.getElementById(id).style.display == 'none')
    document.getElementById(id).style.display = displayType;
  else
    document.getElementById(id).style.display = 'none';
}

// forum - checkbox na právo čtení
// odškrtnutím read se odškrtne i write
function forumSetRightRead(read_id, write_id)
{
    var read = document.getElementById(read_id);
    var write = document.getElementById(write_id);
    if (!read.checked) write.checked = false;
}

// forum - checkbox na právo zápistu
// zaškrtnutím write se zaškrtne i read
function forumSetRightWrite(read_id, write_id)
{
    var read = document.getElementById(read_id);
    var write = document.getElementById(write_id);
    if (write.checked) read.checked = true;
}

// forum hromadné označení práv
//------------------------------------------------------------------------------
function forumRightAllCheckboxes (form_id, right, group, checked)
{
  value = 1;
  name_prefix = right+group;
  setCheckboxes(form_id, name_prefix, checked);
  
  // případné nastavení protějších práv
  if (!value && right == "read")
    setCheckboxes(form_id, "write"+group, false);
  else if (value && right == "write")
    setCheckboxes(form_id, "read"+group, true);
}




    
    
//------------------------------------------------------------------------------
// vytvoření elementu pro dialog
//------------------------------------------------------------------------------
function createDialogElement(id, classname)
{
    var div = document.getElementById(id);
    if (div == null)
    {
        div = document.createElement("div");
        div.setAttribute("id", id);
        div.className = classname;
        var main = document.getElementById("frame_main");
        main.appendChild(div);
    }
}

function removeDialog(id)
{
    var div = document.getElementById(id);
    var main = document.getElementById("frame_main");
    main.removeChild(div);
}




//------------------------------------------------------------------------------


/**
 * forum - dialog, kdo četl příspěvek
 * @param int post_id ID příspěvku
 * @param e event
 */
function forumPostReadsDialog(post_id, e)
{
    createDialogElement("dialog_forum_post_reads", "dialog forum_post_reads");
    var div = document.getElementById("dialog_forum_post_reads");

    var left = document.body.clientWidth / 2 - 200;
    var top = getMouseY(e) - 170;

    div.style.left = left+"px";
    div.style.top = top+"px"

    var httpRequest = sendRequest("get", "topic.php?ax_post_reads=1&post_id="+post_id, null);

    httpRequest.onreadystatechange = function()
    {
        if (httpRequest.readyState == 4)
        {
            if (httpRequest.status == 200)
            {
                if (httpRequest.responseText != "")
                {
                    div.innerHTML = httpRequest.responseText;
                    div.style.display = "block";
                }
            }
        }
    };

}


//------------------------------------------------------------------------------

/**
 * users - kontrola existujícího rč
 * @param string rc
 * @param int self_id (id uživatele, který se nebude kontrolovat)
 */
function usersCheckExistRC(rc, self_id)
{
    var div = document.getElementById("user_exist_rc");

    var httpRequest = sendRequest("get", "users-w.php?ax_check_exist_rc=1&rc="+rc+"&self_id="+self_id, null);

    httpRequest.onreadystatechange = function()
    {
        if (httpRequest.readyState == 4)
        {
            if (httpRequest.status == 200)
            {
                if (httpRequest.responseText != "")
                {
                    div.innerHTML = httpRequest.responseText;
                }
            }
        }
    };

}

