//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 add_to_basket(id)
{
//	sLet = theForm.elements[sField].value;
	var price;
	var cmd = "price=document.AddToBasket"+id+".price.value"; eval(cmd);
	W = 	window.open('/cgi-bin/basket_resume.pl?id='+id+'&price='+price,'basket', 'width=210,height=200,toolbar=0,menubar=0,status=0,resizable=1,scrollbars=1');
	W.focus();
}
function GON(){if(event.srcElement.tagName == "IMG") event.srcElement.style.filter = "Invert";}
function GON1(){if(event.srcElement.tagName == "IMG") event.srcElement.style.filter = "gray";}
function GOFF(){if(event.srcElement.tagName == "IMG") event.srcElement.style.filter = "";}

function GON2(src,clr){if(!src.contains(event.fromElement)) {src.bgColor = clr;}}
function GOFF2(src,clr){if(!src.contains(event.toElement)) {src.bgColor = clr;}} 
function GGO(src){if(event.srcElement.tagName=='TD') {src.children.tags('A')[0].click(); }}

function show_forum_html(string)
{
	var obj = document.getElementById('goods_forum_div');
	obj.innerHTML = string;
}

function show_forum(unit_id, forum_type)
{
	forum_type = forum_type||'goods'
	var AJAX_CHAIN =  new AjaxChain; 
	var rnd = Math.random();
	AJAX_CHAIN.getAjax('/cgi-bin/dsp.pl?cl=item_forum&event=run&'+forum_type+'_id='+unit_id+'&forum_type='+forum_type, show_forum_html);
	return '';
}

// Добавить в Избранное 
function add_favorite(a, url) 
{ 
	var title=document.title; 
  //url=document.location; 
  try 
	{ 
    // Internet Explorer 
    window.external.AddFavorite(url, title); 
  } 
  catch (e) 
	{ 
    try 
		{ 
      // Mozilla 
      window.sidebar.addPanel(title, url, ""); 
    } 
    catch (e) 
		{ 
      // Opera 
      if (typeof(opera)=="object") 
			{ 
        a.rel="sidebar"; 
        a.title=title; 
        a.url=url; 
        return true; 
      } 
      else 
			{ 
        // Unknown 
        alert('Нажмите Ctrl-D чтобы добавить страницу в закладки'); 
      } 
    } 
  } 
  return false; 
} 
