var i;
var array_scripts;
var http_request;
var clickedElem;
var node;
var newClass;
var isRoot;
var re;
var rows_count;
var timeout_limit = 120;
var counter_status;
var status_scale;

function HTTP_Load(url, params, tag_to_paste) {
  try { http_request = new XMLHttpRequest(); } catch(e) {
    try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {
      try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {
        alert("Ваш браузер не поддерживает запросы XMLHttpRequest,\nили эта функция отключена Вами в настройках.\nОбновите версию браузера, пожалуйста, или измените его настройки");
        return null;
  } } }

  params = encodeURI(params+'&ajax=1');

  http_request.open("POST", url, true);
  http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

  http_request.onreadystatechange = function() {
    if (http_request.readyState == 4){
      clearTimeout(timeout);
      if (http_request.status == 200) {
        if (hasClass(document.getElementById(tag_to_paste), 'no_close')) {
          document.getElementById(tag_to_paste).innerHTML = http_request.responseText;
        } else {
          document.getElementById(tag_to_paste).innerHTML = http_request.responseText+"<DIV style='cursor: pointer; position: absolute; right: 2px; top: 2px;' onClick=\"document.getElementById('"+tag_to_paste+"').style.display='none';\"><IMG src='/pics/close.gif' alt='Закрыть' title='Закрыть'></DIV>";
        }
        document.getElementById("loading_pic").style.display = 'none';
        document.getElementById("loading_suggest").style.display = 'none';
        array_scripts = document.getElementById(tag_to_paste).getElementsByTagName("script");
        for (i=0; i<array_scripts.length; i++) { eval(array_scripts[i].text); }
        document.getElementById("help_window").style.top = (window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop)+10;
        if (http_request.responseText) {
          document.getElementById(tag_to_paste).style.display = 'block';
        } else {
          document.getElementById(tag_to_paste).style.display = 'none';
        }
      } else {
        document.getElementById("loading_pic").style.display = 'none';
        document.getElementById("loading_suggest").style.display = 'none';
        alert("Ошибка связи с сервером ("+http_request.statusText+":"+http_request.readyState+"."+http_request.status+").\nПопробуйте еще раз");
      }
    }
    else {
      document.getElementById("loading_pic").style.display = 'block';
      document.getElementById("loading_pic").style.top = (window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop)+Math.floor(document.body.clientHeight/2)-90;
      document.getElementById("loading_pic").style.left = Math.floor(document.body.clientWidth/2)-90;
      status_scale = "";
      counter_status = http_request.readyState;
      for (i=0; i<counter_status; i++) { status_scale = status_scale+"<TD width='15' class='attention_ok'></TD><TD width='15' class='attention_ok'></TD>"; }
      for (i=0; i<(4-counter_status); i++) { status_scale = status_scale+"<TD width='15' class='attention'></TD><TD width='15' class='attention'></TD>"; }
      document.getElementById("loading_pic_scale").innerHTML = "<TABLE border='0'><TR height='5'>"+status_scale+"</TR></TABLE>";
    }
  }
  http_request.send(params);
  var timeout = setTimeout( function() { request_timeout_abort(timeout); }, timeout_limit*1000);
}

function request_timeout_abort(timeout) {
//  clearTimeout(timeout);
  http_request.abort();
  document.getElementById("loading_pic").style.display = 'none';
  document.getElementById("loading_suggest").style.display = 'none';
}

function tree_toggle(event) {
  event = event || window.event;
  clickedElem = event.target || event.srcElement;
  if (!hasClass(clickedElem, 'Expand')) { return; }
  node = clickedElem.parentNode;
  if (hasClass(node, 'ExpandLeaf')) { return; }
  newClass = hasClass(node, 'ExpandOpen') ? 'ExpandClosed' : 'ExpandOpen';
  isRoot = hasClass(node, 'IsRoot') ? true : false;
  re =  /(^|\s)(ExpandOpen|ExpandClosed)(\s|$)/;
  node.className = node.className.replace(re, '$1'+newClass+'$3');
}

function hasClass(elem, className) {
  return new RegExp("(^|\\s)"+className+"(\\s|$)").test(elem.className);
}

function limitText(limitField, limitCount, limitNum, replace_value_id) {
  if (limitField.value.length > limitNum) {
    limitField.value = limitField.value.substring(0, limitNum);
    document.getElementById(replace_value_id).value = limitNum - limitField.value.length;
  } else {
    document.getElementById(replace_value_id).value = limitNum - limitField.value.length;
  }
}

function adjustTextareaHeight(textarea_obj, min_rows) {
  rows_count = Math.max(min_rows, Math.round((textarea_obj.createTextRange().boundingHeight||0)*textarea_obj.rows/textarea_obj.clientHeight)+1);
  if (textarea_obj.rows != rows_count) textarea_obj.rows = rows_count;
}
