//class AjaxChain
GLOBAL_CHAIN_STACK       = new Array; // массив цепей
var GLOBAL_CHAIN_COUNTER = 0;   // c самого начала цепей вообще нету.
function AjaxChain()
{
 this.chain_number = GLOBAL_CHAIN_COUNTER;
 GLOBAL_CHAIN_COUNTER++;

 try {
 GLOBAL_CHAIN_STACK[this.chain_number]   =  false;  
 if  (window.XMLHttpRequest)  
   GLOBAL_CHAIN_STACK[this.chain_number] =  new  XMLHttpRequest();  
 else  if  (window.ActiveXObject)  
   GLOBAL_CHAIN_STACK[this.chain_number] =  new  ActiveXObject("Microsoft.XMLHTTP");  
}
catch(e) {alert("ERROR IN AjaxChain CONSTRUCTOR (XMLHttpRequestObj was not created) " +  e);}

this.stack         = new Array; // стек возвращаемых getAjax значений. (на самом деле это не стеки, а очереди) !
this.string_stack  = new Array; // стек передаваемых на сервер строк.
this.func_stack    = new Array; // стек функций обработчиков.
this.arg_stack     = new Array; // стек аргументов ф-ий обработчиков.
                             

//this.getAjax  = AjaxChain__getAjax;  // сразу на страницу
this.getAjax = AjaxChain__getAjax;  // только в переменную
}

function AjaxChain__getAjax(string,func_handler)
{
 var tosR = this.stack.length;
 var chain_number = this.chain_number;
 
 var arg = new Array;
 var i; 

  for(i=2;i<arguments.length;i++)
   arg[i-2] = arguments[i]; 

 if(tosR!=0 && this.stack[tosR-1] == 'wait')
 {
  this.string_stack.push(string);
  this.func_stack.push(func_handler);
  this.arg_stack.push(arg);
 }
 else
 {
		this.stack[tosR] = 'wait';
		if(GLOBAL_CHAIN_STACK[chain_number])  
		{  
			GLOBAL_CHAIN_STACK[chain_number].open("GET", string);
			var self = this;
			GLOBAL_CHAIN_STACK[chain_number].onreadystatechange  =  function()  
			{  
				if  (GLOBAL_CHAIN_STACK[chain_number].readyState  ==  4  &&  GLOBAL_CHAIN_STACK[chain_number].status  ==  200)  
				{
					self.stack[tosR]  =  GLOBAL_CHAIN_STACK[chain_number].responseText; // Получить данные с сервера
					//alert(self.stack[tosR]);
					if(tosR!=0)
					 func_handler(self.stack[tosR],arg[0]);                           // вызвать ф-ю обработчик.
					else
					 func_handler(self.stack[tosR],arg);                              // вызвать ф-ю обработчик.
					  
					if(self.string_stack.length!=0)
					 self.getAjax(self.string_stack.shift(),self.func_stack.shift(),self.arg_stack.shift());
					else
					 self.stack = new Array;
					
				}  
				else {}
					//this.stack[tosR]  = 'wait';
			}  
			GLOBAL_CHAIN_STACK[chain_number].send(null);  
		} 
		else
		 alert( "GLOBAL_CHAIN_STACK[" + chain_number + "] has not created! Error in AjaxChain__getAjax2!");
  }
 
}
function hide(obj)
{
	var cur_style = 	obj.style.visibility;
	if(cur_style != "hidden")		{
		obj.style.visibility = "hidden";
	}
	black_bg.style.display='none';	
}
function show_call_form()
{	
	var AJAX_CHAIN1 =  new AjaxChain;
	AJAX_CHAIN1.getAjax('/cgi-bin/dsp.pl?cl=feedback&event=show_call_form',call_form_handler);	
}
function call_form_handler(string)
{ 	
	added_msg.style.visibility = "visible";
	added_msg.innerHTML = string;
	black_bg.style.display='block';	
	black_bg.style.height=getDocumentHeight();
	black_bg.style.width=getDocumentWidth();

}
// добавление в избранное
function getBrowserInfo() {
 var t,v = undefined;
 if (window.opera) t = 'Opera';
 else if (document.all) {
  t = 'IE';
  var nv = navigator.appVersion;
  var s = nv.indexOf('MSIE')+5;
  v = nv.substring(s,s+1);
 }
 else if (navigator.appName) t = 'Netscape';
 return {type:t,version:v};
}
function bookmark(a){
 var url = window.document.location;
 var title = window.document.title;
 var b = getBrowserInfo();
 if (b.type == 'IE' && b.version >= 4) window.external.AddFavorite(String(url),title);
 else if (b.type == 'Opera') {
  a.href = url;
  a.rel = "sidebar";
  a.title = url+','+title;
  return true;
 }
 else if (b.type == "Netscape") window.sidebar.addPanel(title,url,"");
 else alert("Нажмите CTRL-D, чтобы добавить страницу в закладки.");
 return false;
}
function getDocumentHeight()
{
	return (document.body.scrollHeight > document.body.offsetHeight)?document.body.scrollHeight:document.body.offsetHeight;
}
function getDocumentWidth()
{
	return (document.body.scrollWidth > document.body.offsetWidth)?document.body.scrollWidth:document.body.offsetWidth;
}


function add_phone()
{	
	var fio = document.getElementById('fio') ? document.getElementById('fio').value : '';
	var phone = document.getElementById('phone') ? document.getElementById('phone').value : '';
	
	if(fio!='' && phone!='')
	{
		var AJAX_CHAIN2 =  new AjaxChain;
		var link='/cgi-bin/dsp.pl?cl=feedback&event=add_phone_back&fio='+encodeURIComponent(fio)+'&phone='+encodeURIComponent(phone);
		AJAX_CHAIN2.getAjax(link,add_phone_handler);	
	}
	else 
	{
		document.getElementById('call_error_msg').innerHTML='Заполните, пожалуйста, указанные поля формы!';
	}
}
function add_phone_handler(string)
{ 	
	added_msg.innerHTML = string;
	setTimeout(function() {hide(added_msg)}, 7000);
}

function hidePopUps(){
	black_bg.style.display='none';	
	added_msg.style.display='none';	
}

