var VSEM_PING_HOST="/chat";
var VSEM_PING_INTERVAL = 120;
var VSEM_CHAT_URL="/?action=chat";
//
// Функции для чата vsem.ru
//
var pinger_xmlreq = new XMLHttpRequest();
function Pinger() {
  this.session_cookie = this.ReadCookie("session");
  this.freq = VSEM_PING_INTERVAL;
  this.host = VSEM_PING_HOST;

  //alert("Session cookie="+this.session_cookie);
  //this.SendPing();
};

Pinger.prototype.ReadCookie = function(cookieName){
  var theCookie=""+document.cookie;
  var ind=theCookie.indexOf(cookieName);
  if (ind==-1 || cookieName == "") return ""; 
  var ind1=theCookie.indexOf(';',ind);
  if (ind1==-1) ind1=theCookie.length; 
  return unescape(theCookie.substring(ind+cookieName.length+1,ind1));
};

Pinger.prototype.repeat = function(obj){
  this.unrepeat();
  this.repeater = setInterval(obj+".SendPing()", this.freq*1000);
  this.SendPing();
};

Pinger.prototype.unrepeat = function(){
  if ( this.repeater )
    {
      clearInterval(this.repeater);
    }
  this.repeater = null;
};
 
Pinger.prototype.SendPing = function(){
  try {
    if ( pinger_xmlreq.readyState == 1 ) {
      pinger_xmlreq = new XMLHttpRequest();
    }
    var url = this.host+"/?action=ping";
    //pinger_xmlreq = new XMLHttpRequest(); // в IE без этого не работает...
    pinger_xmlreq.open("GET", url, true);
    pinger_xmlreq.onreadystatechange = this.ProcessRequest;
    //pinger_xmlreq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    pinger_xmlreq.send(null);
  }catch(e) {
    //alert("WHILE TRYING PING:"+e.message);
  }
};

Pinger.prototype.ProcessRequest = function() {
  var xmldoc = pinger_xmlreq.responseXML;
  try {
    //alert('hello'+pinger_xmlreq.readyState);
    if(pinger_xmlreq.readyState == 4 && xmldoc) {
      //обработаем выззов на чат, если таковой имеется
      //      alert("XML:"+xmldoc.responseText);
      var command_nodes = xmldoc.getElementsByTagName("command");
      if ( typeof(command_nodes) != 'undefined' ) {
	//alert("COMMAND_NODES:"+command_nodes);
	var n_commands = command_nodes.length;
	for (i = 0; i < n_commands; i++) {
	  var type = command_nodes[i].getAttribute('type');
	  if ( type == 'chat' ) {
	    var login_node = command_nodes[i].getElementsByTagName("login");
	    var time_node = command_nodes[i].getElementsByTagName("time");
	    var chat_node = command_nodes[i].getElementsByTagName("chat");
	    var login = login_node[0].firstChild.nodeValue;
	    var time = time_node[0].firstChild.nodeValue;
	    var chat = chat_node[0].firstChild.nodeValue;
	    window.focus();
	    var c_user = 'Пользователь';
	    var c_invite = 'приглашает вас в чат.';
	    var c_alert = 'Обратите внимание, что для работы чата необходимо чтобы ваш броузер не заблокировал открытие нового окна для чата. Если у вас включена блокировка всплывающих окон - отключите ее для нашего сайта.';
	    if ( confirm(c_user+' '+login+' '+c_invite+' '+time+'\n\n'+c_alert) ) {
	      var win = window.open(VSEM_CHAT_URL+'&chat_id='+chat, login,
				    'left=20,top=20,width=700,height=700,toolbar=0,location=0,status=0,menubar=0,resizable=0');
	    } else {
	    // нужно послать отказ
		var cancel_chat = new XMLHttpRequest();
		var url = VSEM_PING_HOST+"?action=cancel_chat&chat="+chat;
		cancel_chat.open("GET", url, true);
		cancel_chat.responceXML;
		cancel_chat.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		cancel_chat.send(null);
	    }
	  }
	}
      }
    }
  }catch(e) {
    alert("WHILE PROCESS REQUEST:"+e.message);
  };
};

