function doc_onload()
{
  if (typeof document.getElementsByClassName == 'undefined')
  {
    document.getElementsByClassName = function(className)
    {
      var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)");
      var allElements = document.getElementsByTagName("*");
      var results = [];

      var element;
      for (var i = 0; (element = allElements[i]) != null; i++)
      {
        var elementClass = element.className;
        if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass))
          results.push(element);
      }

      return results;
    }
  }

  var t = _ge('top_menu');
  var td = is_gecko ? t.firstChild.nextSibling.firstChild.firstChild : t.firstChild.firstChild.firstChild;
  var id;

  do if (td.id) {
    id = td.id.substr(3);

    if (id)
    {
      eval('addEvent(td, "mouseover", function() {show_submenu('+id+',1)});');
      eval('addEvent(td, "mouseout", function() {show_submenu('+id+',0)});');
    }
  } while (td = td.nextSibling);

  var ar = document.getElementsByClassName('submenu1');

  for (var i = 0; i < ar.length; i++)
  {
    td = ar[i];
    id = td.id.substr(8);

    if (id)
    {
      eval('addEvent(td, "mouseover", function() {show_submenu('+id+',1)});');
      eval('addEvent(td, "mouseout", function() {show_submenu('+id+',0)});');
    }
  }

  addEvent(document, 'mousemove', engage);
}

function show_submenu(a, flag)
{
  var e = _ge('submenu_'+a);

  if (e)
  {
    e.style.display = flag ? 'block' : 'none';
  }
}

function diScroller(instance_name, obj, visible_width)
{
  this.obj = _ge(obj);
  this.obj.style.position = 'relative';
  this.obj.style.left = '0px';
  this.obj.style.top = '0px';

  this.instance_name = instance_name;
  this.visible_width = visible_width;

  this.default_step = 2;
  this.step = this.default_step;
  this.timeout = 8;
  this.timer_up = null;
  this.timer_down = null;

  this.top = function()
  {
    this.obj.scrollTop = 0;
  }

  this.bottom = function()
  {
    this.obj.scrollTop = this.obj.scrollHeight;
  }

  this.left = function()
  {
    this.obj.scrollLeft = 0;
  }

  this.right = function()
  {
    this.obj.scrollLeft = this.obj.scrollWidth;
  }

  this.move_up = function()
  {
    this.obj.scrollTop -= this.step;
    this.timer_up = setTimeout(this.instance_name+'.move_up()', this.timeout);
  }

  this.move_down = function()
  {
    this.obj.scrollTop += this.step;
    this.timer_down = setTimeout(this.instance_name+'.move_down()', this.timeout);
  }

  this.move_left = function()
  {
    var l = parseInt(this.obj.style.left);

    if (l >= 0) return;

    this.obj.style.left = (l + this.step)+'px';
    this.timer_left = setTimeout(this.instance_name+'.move_left()', this.timeout);
  }

  this.move_right = function()
  {
    var l = parseInt(this.obj.style.left);

    if (l <= this.visible_width - this.obj.offsetWidth) return;

    this.obj.style.left = (l - this.step)+'px';
    this.timer_right = setTimeout(this.instance_name+'.move_right()', this.timeout);
  }

  this.point = function(x, y)
  {
    this.obj.scrollLeft = x;
    this.obj.scrollTop = y;
  }

  this.stop = function()
  {
    clearTimeout(this.timer_up);
    clearTimeout(this.timer_down);
    clearTimeout(this.timer_left);
    clearTimeout(this.timer_right);
  }
}

function toggle_popup(id)
{
  var e = _ge(id);

  if (e)
  {
    e.style.display = e.style.display != 'block' ? 'block' : 'none';
  }
}

/*
if (fadeAmount < 0) {
    setOpacity(Math.abs(zoomCurrent * fadeAmount), zoomdiv);
} else {
    setOpacity(100 - (zoomCurrent * fadeAmount), zoomdiv);
}
*/

function di_set_opacity(id, opacity)
{
  var object = _ge(id).style;

  if (navigator.userAgent.indexOf("Firefox") != -1)
  {
    if (opacity == 100) opacity = 99.9999;
  }

  object.filter = "alpha(opacity=" + opacity + ")"; // IE/Win
  object.opacity = (opacity / 100);                 // Safari 1.2, Firefox+Mozilla
}

function calendar_goto(y, ct)
{
  if (typeof ct == 'undefined' || !ct) ct = 'events';

  window.location.href = '/'+ct+'/archive/'+y+'/';
  return false;
}






var mouse_pos = {x: 0, y: 0};

function send_feedback()
{
  var feedback_text = _ge('feedback_text');
  var feedback_back = _ge('feedback_back');
  var feedback_submit = _ge('feedback_submit');

  if (!feedback_text.value) return false;

  feedback_submit.src = '/i/btn_send_wait.gif';
  feedback_submit.disabled = true;

  var xml_url = "/xml/feedback_send.php";
  var __query_str = "text="+escape(feedback_text.value)+"&back="+escape(feedback_back.value);

  diXMLRequest.post(xml_url, __query_str, send_feedback_response);

  return false;
}

function send_feedback_response(xmlDoc)
{
  var feedback_text = _ge('feedback_text');
  var feedback_submit = _ge('feedback_submit');

  feedback_text.value = S.feedback_thanx_msg;
  feedback_text.style.backgroundColor = '#ffe';

  feedback_submit.src = '/i/btn_send.gif';
  feedback_submit.disabled = false;
}

function show_reply_form(before_obj_id, parent)
{
  var a = _ge(before_obj_id);

  if (!a || !comment_reply_div || !comment_parent) return false;

  a.parentNode.insertBefore(comment_reply_div, a);
  comment_reply_div.style.display = 'block';

  comment_parent.value = parent;

  return false;
}

function toggle_wait(v)
{
  var e = _ge('wait_div');
  if (!e) return;

  if (v)
  {
    var x = mouse_pos.x + 25;
    var y = mouse_pos.y + 25;

    e.style.left = x+'px';
    e.style.top = y+'px';

    e.style.visibility = 'visible';
  }
  else
  {
    e.style.visibility = 'hidden';
  }
}

function catch_mouse_pos(e)
{
  if (!e) e = window.event;

  mouse_pos.x = e.clientX;
  mouse_pos.y = e.clientY;
}

function show_messages_from_user(id)
{
  var e = _ge('thread_w_user_'+id);
  var a = _ge('a_toggler_'+id);

  if (e && a)
  {
    if (e.style.display != 'block') set_messages_read(id);

    a.innerHTML = e.style.display == 'block' ? 'Открыть список сообщений' : 'Скрыть список сообщений';
    e.style.display = e.style.display == 'block' ? 'none' : 'block';
  }
}

function show_message_reply_form(user_id, user_login)
{
  var a = _ge('my_msg_anchor_'+user_id);
  if (!a) a = _ge('my_msg_anchor_default');

  var to_user_login = _ge('to_user_login');

  if (!user_login)
  {
    a_user_login = _ge('a_user_login_'+user_id);
    if (a_user_login) user_login = a_user_login.innerHTML;
  }

  if (user_login) to_user_login.innerHTML = user_login;

  if (user_login && a && message_reply_div && message_to_user_id)
  {
    a.parentNode.insertBefore(message_reply_div, a);
    message_reply_div.style.display = (message_to_user_id.value == user_id && message_reply_div.style.display == 'block')
      ? 'none'
      : 'block';

    message_to_user_id.value = user_id;
  }
}

function set_messages_read(user_id)
{
  var xml_url = '/xml/message_read.php';
  var __query_str = 'user_id='+escape(user_id);

  diXMLRequest.post(xml_url, __query_str, set_messages_read_response);
}

function set_messages_read_response(xmlDoc)
{
  if (!xmlDoc) return false;

  var rs = xmlDoc.documentElement.getElementsByTagName('result');
  if (rs.length == 0) return false;

  if (rs[0].getAttribute('ok'))
  {
    var user_greeting_msg_count = _ge('user_greeting_msg_count');
    var user_greeting_msg_link = _ge('user_greeting_msg_link');
    var cur_count = user_greeting_msg_count.innerHTML;

    var read_count = parseInt(rs[0].getAttribute('read_count'));

    if (cur_count.length && read_count)
    {
      cur_count = cur_count.substr(2);
      cur_count = cur_count.substr(0, cur_count.length - 1);
      cur_count = parseInt(cur_count);
      if (!cur_count || isNaN(cur_count)) cur_count = 0;

      cur_count -= read_count;

      if (user_greeting_msg_count)
        user_greeting_msg_count.innerHTML = cur_count > 0 ? ' ('+cur_count+')' : '';
      if (user_greeting_msg_link)
        user_greeting_msg_link.style.fontWeight = cur_count > 0 ? 'bold' : 'lighter';
    }
  }
  else
  {
    alert('Сообщения не были отмечены как прочитанные. Обратитесь к администратору.')
  }
}

function close_da_project(id)
{
  if (confirm('Закрыть проект?') && confirm('Внимание! Открыть заново его потом будет уже невозможно!\nВы уверены?'))
  {
    var xml_url = '/xml/da_project_close.php';
    var __query_str = 'id='+escape(id);

    toggle_wait(true);

    diXMLRequest.get(xml_url+'?'+__query_str, close_da_project_response);
  }
}

function close_da_project_response(xmlDoc)
{
  if (!xmlDoc) return false;

  var rs = xmlDoc.documentElement.getElementsByTagName('result');
  if (rs.length == 0) return false;

  for (var i = 0; i < rs.length; i++)
  {
    var id = parseInt(rs[i].getAttribute('id'));
    var name = rs[i].getAttribute('name');
    var value = parseInt(rs[i].getAttribute('value'));
    var ok = parseInt(rs[i].getAttribute('ok'));

    var h = ok ? _ge('project_head_'+id) : false;
    var a = ok ? _ge('project_actions_'+id) : false;
    var t = ok ? _ge('project_title_'+id) : false;

    if (h && a && t)
    {
      h.className = 'main_job_block_closed';
      a.innerHTML = '';
      t.innerHTML = '[Проект закрыт] '+t.innerHTML;
    }
  }

  toggle_wait(false);
}

function toggle_tag_group(gid)
{
  var g_div = _ge('tag_group_'+gid);

  if (g_div)
  {
    g_div.style.display = g_div.style.display != 'block' ? 'block' : 'none';
  }
}

function edit_blog_post(id)
{
  if (!id) return;

  toggle_wait(true);

  window.location.href = '/'+cms_paths_ar['add_blog_post']+'/'+id+'/';
}

function del_blog_post(id)
{
  if (confirm('Удалить запись?') && confirm('Вы уверены?'))
  {
    var xml_url = '/xml/blog_del.php';
    var __query_str = 'id='+escape(id);

    toggle_wait(true);

    diXMLRequest.get(xml_url+'?'+__query_str, del_blog_post_response);
  }
}

function del_blog_post_response(xmlDoc)
{
  if (!xmlDoc) return false;

  var rs = xmlDoc.documentElement.getElementsByTagName('result');
  if (rs.length == 0) return false;

  for (var i = 0; i < rs.length; i++)
  {
    var id = parseInt(rs[i].getAttribute('id'));
    var name = rs[i].getAttribute('name');
    var value = parseInt(rs[i].getAttribute('value'));
    var ok = parseInt(rs[i].getAttribute('ok'));

    if (ok)
    {
      var victim = _ge('blog_post_'+id);
      var victim2 = _ge('blog_post_sep_'+id);

      if (victim && victim2)
      {
        victim.parentNode.removeChild(victim);
        victim2.parentNode.removeChild(victim2);
      }
    }
  }

  toggle_wait(false);
}

function toggle_friend(friend_id, flag)
{
  var xml_url = '/xml/toggle_friend.php';
  var __query_str = 'friend_id='+escape(friend_id)+'&flag_team='+escape(flag)+'&flag_blog='+escape(flag);

  toggle_wait(true);

  diXMLRequest.get(xml_url+'?'+__query_str, toggle_friend_response);
}

function toggle_friend_response(xmlDoc)
{
  if (!xmlDoc) return false;

  var rs = xmlDoc.documentElement.getElementsByTagName('result');
  if (rs.length == 0) return false;

  for (var i = 0; i < rs.length; i++)
  {
    var user_id = parseInt(rs[i].getAttribute('user_id'));
    var friend_id = parseInt(rs[i].getAttribute('friend_id'));
    var flag_blog = parseInt(rs[i].getAttribute('flag_blog'));
    var flag_team = parseInt(rs[i].getAttribute('flag_team'));
    var ok = parseInt(rs[i].getAttribute('ok'));

    if (ok)
    {
      var user_flag_team_toggle_span = _ge('user_flag_team_toggle_span');
      var user_flag_team_toggle_a = _ge('user_flag_team_toggle_a');

      var new_flag = flag_team ? 0 : 1;

      user_flag_team_toggle_span.innerHTML = S.user_details_flag_team_text[flag_team];
      user_flag_team_toggle_a.innerHTML = S.user_details_flag_team_action[flag_team];
      user_flag_team_toggle_a.href = 'javascript:toggle_friend('+friend_id+','+new_flag+');';
    }
  }

  toggle_wait(false);
}

function show_da_task_form(flag)
{
  var d = _ge('add_da_task_div');
  var a_add_task = _ge('a_add_task');

  d.style.display = flag ? 'block' : 'none';
  a_add_task.innerHTML = flag ? 'Закрыть форму' : 'Новая задача';
}

function toggle_da_task_form(id,idx)
{
  var d = _ge('add_da_task_div');

  if (d.style.display == 'block') //hiding
  {
    show_da_task_form(false);
  }
  else //snowing
  {
    if (id||idx) //loading
    {
      var xml_url = '/xml/get_da_task_data.php';
      //var __query_str = 'idx='+escape(idx);
      var __query_str = 'id='+escape(id);

      toggle_wait(true);

      diXMLRequest.get(xml_url+'?'+__query_str, get_da_task_data_response);
    }
    else
    {
      at_form.inputs['title'].value = '';
      at_form.inputs['content'].value = '';
      at_form.inputs['assigned_to'].selectedIndex = 0;
      at_form.inputs['severity'].selectedIndex = 0;
      at_form.inputs['priority'].selectedIndex = 0;
      at_form.inputs['deadline_d'].value = deadline_init_date.d;
      at_form.inputs['deadline_m'].value = deadline_init_date.m;
      at_form.inputs['deadline_y'].value = deadline_init_date.y;
      at_form.inputs['da_task_submit'].src = '/i/btn_add_da_task.gif';

      document.forms.add_da_task_form.da_task_idx.value = 0;

      show_da_task_form(true);
    }
  }
}

function get_da_task_data_response(xmlDoc)
{
  toggle_wait(false);

  if (!xmlDoc) return false;

  var rs = xmlDoc.documentElement.getElementsByTagName('result');
  if (rs.length == 0) return false;

  var ok = parseInt(rs[0].getAttribute('ok'));

  if (ok)
  {
    at_form.inputs['title'].value = rs[0].getAttribute('title');
    at_form.inputs['content'].value = rs[0].getAttribute('content').replace(/<br>/g,'\n');
    at_form.inputs['assigned_to'].value = parseInt(rs[0].getAttribute('assigned_to'));
    at_form.inputs['severity'].value = rs[0].getAttribute('severity');
    at_form.inputs['priority'].value = rs[0].getAttribute('priority');
    at_form.inputs['deadline_d'].value = parseInt(rs[0].getAttribute('deadline_d'));
    at_form.inputs['deadline_m'].value = parseInt(rs[0].getAttribute('deadline_m'));
    at_form.inputs['deadline_y'].value = parseInt(rs[0].getAttribute('deadline_y'));
    at_form.inputs['da_task_submit'].src = '/i/btn_save_da_task.gif';

    document.forms.add_da_task_form.da_task_idx.value = rs[0].getAttribute('idx');
    document.forms.add_da_task_form.da_task_id.value = rs[0].getAttribute('id');

    window.scrollTo(0,0);

    show_da_task_form(true);
  }
}

function da_task_change_status(id, idx)
{
  var st = _ge('status');
  var btn = _ge('da_task_change_status_img');
  if (!st || !btn) { alert('error!'); return false; }

  var sURL = "/xml/da_task_change_status.php?id="+escape(id)+"&idx="+escape(idx)+"&status="+escape(st.value);

  btn.src = '/i/btn_change2_wait.gif';

  diXMLRequest.get(sURL, da_task_change_status_response);
}

function da_task_change_status_response(xmlDoc)
{
  var rs = xmlDoc.documentElement.getElementsByTagName("result");
  if (rs.length == 0) return null;

  var id = parseInt(rs[0].getAttribute("id"));
  var value = parseInt(rs[0].getAttribute("value"));
  var ok = parseInt(rs[0].getAttribute("ok"));
  var color = rs[0].getAttribute("color");

  var btn = _ge('da_task_change_status_img');

  if (ok == 1)
  {
    var e = is_gecko
      ? _ge('da_task_table').firstChild.nextSibling.firstChild
      : _ge('da_task_table').firstChild.firstChild;

   //return false;

    do
    {
      //alert(e.nodeName);

      //if (e.id.substr(0,5) == 'order' && e.id != 'order'+id) break;
      //if (!e.id) continue;

      if (color && e)
      {
        var e2 = is_gecko ? e.firstChild.nextSibling : e.firstChild;

        do
        {
          if (e2.id != 'da_task_details_main_td')
            e2.style.backgroundColor = color;
        } while (e2 = is_gecko ? e2.nextSibling.nextSibling : e2.nextSibling);
      }
    } while (e = is_gecko ? e.nextSibling.nextSibling : e.nextSibling);
  }
  else
  {
    alert('error');
  }

  btn.src = '/i/btn_change2.gif';
}

/* upload forms */

function toggle_da_task_upload_form(a)
{
  if (!da_task_upload_form_div) return;

  da_task_upload_form_div.style.display = da_task_upload_form_div.style.display != 'block' ? 'block' : 'none';
}

function da_task_upload_form_onsubmit()
{
  var e = _ge('da_task_upload_submit');
  var d = _ge('da_task_upload_form_div');
  var er = _ge('da_task_upload_error_msg');

  if (!logged_in)
  {
//    d.style.backgroundColor = '#FF9999';
    er.innerHTML = 'Вы должны войти в систему';
    return false;
  }

  if (e)
  {
    e.value = ' Подождите... ';
    e.disabled = true;
  }

  return true;
}

function toggle_visibility(id)
{
  var e = _ge(id);

  if (e)
  {
    e.style.visibility = e.style.visibility != 'visible' ? 'visible' : 'hidden';
  }
}

/* user materials */

function toggle_user_material_form(flag)
{
  var d = _ge('user_material_form');
  var a = _ge('a_user_material_form');

  d.style.display = flag ? 'block' : 'none';
  a.innerHTML = flag ? 'Закрыть форму' : 'Добавить статью';
}

function show_user_material_form(id)
{
  var d = _ge('user_material_form');

  if (d.style.display == 'block') //hiding
  {
    toggle_user_material_form(false);
  }
  else //showing
  {
    id = id * 1;

    if (id) //loading
    {
      var xml_url = '/xml/get_user_material_data.php';
      var __query_str = 'id='+escape(id);

      toggle_wait(true);

      diXMLRequest.get(xml_url+'?'+__query_str, show_user_material_form_response);
    }
    else
    {
      um_form.inputs['title'].value = '';
      um_form.inputs['short_content'].value = '';
      um_form.inputs['content'].value = '';
      //um_form.inputs['da_task_submit'].src = '/i/btn_add_da_task.gif';

      document.forms.user_material_form.material_id.value = 0;

      toggle_user_material_form(true);
    }
  }
}

function show_user_material_form_response(xmlDoc)
{
  toggle_wait(false);

  if (!xmlDoc) return false;

  var rs = xmlDoc.documentElement.getElementsByTagName('result');
  if (rs.length == 0) return false;

  var ok = parseInt(rs[0].getAttribute('ok'));

  if (ok)
  {
    um_form.inputs['title'].value = rs[0].getAttribute('title');
    um_form.inputs['short_content'].value = rs[0].getAttribute('short_content').replace(/<br>/g,'\n');
    um_form.inputs['content'].value = rs[0].getAttribute('content').replace(/<br>/g,'\n');
    //um_form.inputs['da_task_submit'].src = '/i/btn_save_da_task.gif';

    document.forms.user_material_form.material_id.value = rs[0].getAttribute('id');

    window.scrollTo(0,0);

    toggle_user_material_form(true);
  }
}

