/**
 * Project: eComma
 * Author: Travis Brown
 * Date: 21 February 2008
 * Version: 0.2.0
 * File: ecomma.js
 */

var http_request = false;

function left_tab_select(selected_tab)
{
  if (selected_tab != current_left_tab)
  {
    $('#' + current_left_tab + '_tab').removeClass('selected');
    $('#' + selected_tab + '_tab').addClass('selected');
    $('#' + current_left_tab + '_content').hide();
    $('#' + selected_tab + '_content').show();
    $.cookie('left_tab', selected_tab, { path: '/' });
      current_left_tab = selected_tab;
  }
}

function right_tab_select(selected_tab)
{
  if (selected_tab != current_right_tab)
  {
    $('#' + current_right_tab + '_tab').removeClass('selected');
    $('#' + selected_tab + '_tab').addClass('selected');
    $('#' + current_right_tab + '_content').hide();
    $('#' + selected_tab + '_content').show();
    $.cookie('right_tab', selected_tab, { path: '/' });
      current_right_tab = selected_tab;
  }
}

function center_tab_select(index, total)
{
  for (var i = 0; i < total; i++)
  {
    if (i != index)
    {
      document.getElementById("center_" + i + "_tab").className = null;
      document.getElementById("center_" + i + "_content").style.display = "none";
    }
    else
    {
      document.getElementById("center_" + i + "_tab").className = "selected";
      document.getElementById("center_" + i + "_tab").blur();
      document.getElementById("center_" + i + "_content").style.display = "block";
    }
  }
}

function load_commentary_result()
{
  if (http_request.readyState == 4)
  {
    if (http_request.status == 200)
    {
      var tab_contents = http_request.responseText.split("<!--break-->");
      document.getElementById("tags_content").innerHTML = tab_contents[0];
      document.getElementById("comment_form_div").innerHTML = tab_contents[1];
    }
    else
    {
      alert("There was a problem with the request.");
    }
  }
}

function load_selection(action, text_id)
{
  var range = window.getSelection().getRangeAt(0);
  var beg_id = range.startContainer.parentNode.id.substring(1);
  var end_id = range.endContainer.parentNode.id.substring(1);

  if (beg_id[0] == 'b')
  {
    beg_id = beg_id.substring(1);
  }

  if (end_id[0] == 'b')
  {
    end_id = end_id.substring(1);
  }

  //alert(action + " text_id=" + text_id + "&beg_id=" + beg_id + "&end_id=" + end_id);

  if (current_right_tab == "search")
  {
    right_tab_select("tags");
  }
  make_post_request(action, encodeURI("text_id=" + text_id + "&beg_id=" + beg_id + "&end_id=" + end_id), load_commentary_result);
  document.getElementById("text_tags").focus();
}

function highlight_range(comment_div, beg_id, end_id)
{
  comment_div.className += ' comment_highlighted';
  for (var i = beg_id; i < end_id; i++)
  {
    word_span = document.getElementById('b' + i);
    word_span.className += ' comment_highlighted';
  }
}

function unhighlight_range(comment_div, beg_id, end_id)
{
  comment_div.className = comment_div.className.replace(' comment_highlighted', '');
  for (var i = beg_id; i < end_id; i++)
  {
    word_span = document.getElementById('b' + i);
    word_span.className = word_span.className.replace(' comment_highlighted', '');
  }
}

function highlight_preview_range(comment_div, beg_id, end_id, comment_id)
{
  comment_div.className += ' comment_highlighted';
  for (var i = beg_id; i < end_id; i++)
  {
    word_span = document.getElementById('b' + i);
    word_span.className += ' comment_highlighted';
  }
  $('#comment_preview_' + comment_id).show();
}

function unhighlight_preview_range(comment_div, beg_id, end_id, comment_id)
{
  comment_div.className = comment_div.className.replace(' comment_highlighted', '');
  for (var i = beg_id; i < end_id; i++)
  {
    word_span = document.getElementById('b' + i);
    word_span.className = word_span.className.replace(' comment_highlighted', '');
  }
  $('#comment_preview_' + comment_id).hide();
}

function expand_reply_form(comment_response_div, comment_id)
{
  $('#comment_response_link_' + comment_id).hide();
  $('#comment_response_expanded_' + comment_id).show();
}

function close_reply_form(comment_response_div, comment_id)
{
  $('#comment_response_expanded_' + comment_id).hide();
  $('#comment_response_link_' + comment_id).show();
}

function return_ref(comment_div, beg_id)
{
  beg_span = document.getElementById('b' + beg_id);
  window.scrollTo(0, beg_span.offsetTop);
}

function load()
{
  /*var left_tab_cookie = read_cookie("left_tab");
  if (left_tab_cookie)
  {
    if (left_tab_cookie == "users")
    {
      users_tab_select(false);
    }
    else
    {
      texts_tab_select(false);
    }
  }

  if (is_gm_page)
  {
    gm_load();
  }

  var right_tab_cookie = read_cookie("right_tab");
  if (right_tab_cookie)
  {
    right_tab_select(right_tab_cookie, false)
  }
  */
}

function hw(word_id, count)
{
  for (var i = 1; i < (count + 1); i++)
  {
    word_a = document.getElementById('w' + word_id + '_' + i);
    if (word_a.className == "marked") { return; }
    word_a.className = "highlighted";
  }
}

function dw(word_id, count)
{
  for (var i = 1; i < (count + 1); i++)
  {
    word_a = document.getElementById('w' + word_id + '_' + i);
    if (word_a.className == "marked") { return; }
    if (word_a.className.indexOf("marked") != -1)
    {
      word_a.className = "marked";
    }
    else
    {
      word_a.className = "";
    }
  }
}

function mw(word_id, count)
{
  var on = true;
  for (var i = 1; i < (count + 1); i++)
  {
    word_a = document.getElementById('w' + word_id + '_' + i);
    if (word_a.className == "marked")
    {
      word_a.className = "";
    }
    else
    {
      on = false;
      word_a.className = "marked";
    }
  }
  if (on)
  {
    tag_a = document.getElementById('t' + word_id);
    tag_a.className = tag_a.className.replace(' marked', '');
    tag_a.blur();
  }
  else
  {
    tag_a = document.getElementById('t' + word_id);
    tag_a.className += " marked";
    tag_a.blur();
  }
}

function open_comments(base_id)
{
  document.getElementById('comment_arrow_' + base_id).style.display = 'block';
  document.getElementById('comment_popup_' + base_id).style.display = 'block';
  document.getElementById('line_' + base_id).className += ' boxed';
  document.getElementById('comment_link_' + base_id).style.display = 'none';
}

function close_comments(base_id)
{
  document.getElementById('comment_arrow_' + base_id).style.display = 'none';
  document.getElementById('comment_popup_' + base_id).style.display = 'none';
  document.getElementById('line_' + base_id).className += 'line_text';
  document.getElementById('comment_link_' + base_id).style.display = 'block';
}

function post_comment(text_id, line_id, content_textarea_id)
{
  make_post_request("/ecomma/comments/add", encodeURI("data[Comment][text_id]=" + text_id + "&data[Comment][line_id]=" + line_id + "&data[Comment][content]=" + document.getElementById(content_textarea_id).value));
}

function make_post_request(url, parameters, call_back)
{
  http_request = false;
  if (window.XMLHttpRequest)
  {
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType)
    {
      // Set type accordingly to anticipated content type.
      //http_request.overrideMimeType('text/xml');
      http_request.overrideMimeType('text/html');
    }
  }
  else if (window.ActiveXObject)
  {
    try
    {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      try
      {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e)
      {
      }
    }
  }

  if (!http_request)
  {
    alert("Cannot create XMLHTTP instance!");
    return false;
  }

  //http_request.onreadystatechange = alertContents;
  http_request.onreadystatechange = call_back;
  http_request.open("POST", url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(parameters);
}

function alertContents()
{
  if (http_request.readyState == 4)
  {
    if (http_request.status == 200)
    {
      //alert(http_request.responseText);
      result = http_request.responseText;
      alert("Your comment has been posted.");
      location.reload(true);
    }
    else
    {
      alert("There was a problem with the request.");
    }
  }
}

function get_sel()
{
  var r = window.getSelection().getRangeAt(0);
  alert(r.startContainer.parentNode.id + ' ' + r.endContainer.parentNode.id);
}
