function open_div(show_div, hide_div) 
{
	document.getElementById(show_div).style.display ='block';
	document.getElementById(hide_div).style.display = 'none';
}

// Глобальные переменные
var isCSS, isW3C, isIE4, isNN4, isIE6CSS;
function initDHTMLAPI() {
    if (document.images) {
        isCSS = (document.body && document.body.style) ? true : false;
        isW3C = (isCSS && document.getElementById) ? true : false;
        isIE4 = (isCSS && document.all) ? true : false;
        isNN4 = (document.layers) ? true : false;
        isIE6CSS = (document.compatMode && 
			document.compatMode.indexOf("CSS1") >= 0) ? true : false;
    }
}
// назначение обработчика события для инициализации API
window.onload = initDHTMLAPI;
//document.writeln ("<SCRIPT type=\"text/javascript\" src=\"AjaxChain.js\"></script>");

//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!");
  }
 
}



var XMLHttpRequestObject = false;
if (window.XMLHttpRequest) {
     XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) {
     XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
function getData(dataSource, divID)
{
   if(XMLHttpRequestObject) {
        var obj = document.getElementById(divID);
        XMLHttpRequestObject.open("GET", dataSource);
        XMLHttpRequestObject.onreadystatechange = function()
        {
             if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
                  obj.innerHTML = XMLHttpRequestObject.responseText;
             }
//             else{ obj.innerHTML = '';     }
        }
        XMLHttpRequestObject.send(null);
   }
}

function hide(obj)
{
	var cur_style = 	obj.style.visibility;
	if(cur_style != "hidden")		{
		obj.style.visibility = "hidden";
	}
}

function add_goods_result(string)
{
	var obj = document.getElementById('added_msg');
		
	obj.innerHTML = string;
	obj.style.visibility = "visible";
	centerOnWindow(added_msg);
	
  setTimeout(function() {hide(obj)}, 20000);
	//var AJAX_CHAIN1 =  new AjaxChain; 
	//AJAX_CHAIN1.getAjax('/cgi-bin/dsp.pl?cl=order&event=get_basket_count',basket_count_handler);

}
function basket_count_handler(string) {
		basket_count.innerHTML = string;
}

function getRadioGroupValue(radioGroupObj)
{
  for (var i=0; i < radioGroupObj.length; i++)
    if (radioGroupObj[i].checked) return radioGroupObj[i].value;

  return null;
}

function add_to_basket(price_id, good_id, is_radio)
{
	//alert(good_id);
	//alert(document.forms['AddToBasket'+good_id].price_id);
	if(is_radio == 1)	{
		price_id = getRadioGroupValue(document.forms['AddToBasket'+good_id].price_id);
		//alert('aaa '+price_id); return;
	}
	//alert(price_id);
	if(!price_id){  return; }
	var AJAX_CHAIN =  new AjaxChain; 
	var rnd = Math.random();
	AJAX_CHAIN.getAjax('/cgi-bin/dsp.pl?cl=order&event=add_to_basket_short&price_id='+price_id+'&rnd='+rnd, add_goods_result);
}

function centerOnWindow(added_msg) {
    // 'obj' является перемещаемым элементом
   
		var obj = getRawObject(added_msg);
	
    // параметры прокрутки окна
    var scrollX = 0, scrollY = 0;
    if (document.body && typeof document.body.scrollTop != "undefined") {
        scrollX += document.body.scrollLeft;
        scrollY += document.body.scrollTop;
        if (document.body.parentNode && 
            typeof document.body.parentNode.scrollTop != "undefined") {
            scrollX += document.body.parentNode.scrollLeft;
            scrollY += document.body.parentNode.scrollTop
        }
    } else if (typeof window.pageXOffset != "undefined") {
        scrollX += window.pageXOffset;
        scrollY += window.pageYOffset;
    }
		
    var x = Math.round((getInsideWindowWidth()/2) - 
        (getObjectWidth(obj)/2)) + scrollX;	
    var y = Math.round((getInsideWindowHeight()/2) - 
        (getObjectHeight(obj)/2)) + scrollY;
    shiftTo(obj, x, y);
		show(obj);
}

// располагаем объект по определенным пиксельным координатам
function shiftTo(obj, x, y) {
    var theObj = getObject(obj);
    if (theObj) {
        if (isCSS) {
			// Преобразуем некорректные числовые значения
            var units = (typeof theObj.left == "string") ? "px" : 0;
            theObj.left = x + units;
            theObj.top = y + units;
        } else if (isNN4) {
            theObj.moveTo(x,y)
        }
    }
}

function getRawObject(obj) {
    var theObj;
    if (typeof obj == "string") {
        if (isW3C) {
            theObj = document.getElementById(obj);
        } else if (isIE4) {
            theObj = document.all(obj);
        } else if (isNN4) {
            theObj = seekLayer(document, obj);
        }
    } else {
		// Пропучкаем ссылку на объект
        theObj = obj;
    }
    return theObj;
}
// Возвращает ширину доступного в окне браузера пространства 
function getInsideWindowWidth() {	
    if (window.innerWidth) {
        return window.innerWidth;
    } else if (isIE6CSS) {
		// измеряем clientWidth элемента html 
        return document.body.parentElement.clientWidth;
    } else if (document.body && document.body.clientWidth) {
        return document.body.clientWidth;
    }
	
    return 0;
}
// Возвращает высоту доступного в окне браузера пространства 
function getInsideWindowHeight() {
    if (window.innerHeight) {
        return window.innerHeight;
    } else if (isIE6CSS) {
		// измеряем clientHeight элемента html
        return document.body.parentElement.clientHeight;
    } else if (document.body && document.body.clientHeight) {
        return document.body.clientHeight;
    }
    return 0;
}

// Определение ширины отображенного на экран объекта
function getObjectWidth(obj)  {
    var elem = getRawObject(obj);
    var result = 0;
    if (elem.offsetWidth) {
        result = elem.offsetWidth;
    } else if (elem.clip && elem.clip.width) {
        result = elem.clip.width;
    } else if (elem.style && elem.style.pixelWidth) {
        result = elem.style.pixelWidth;
    }
    return parseInt(result);
}

// Определение высоты отображенного на экран объекта
function getObjectHeight(obj)  {
    var elem = getRawObject(obj);
    var result = 0;
    if (elem.offsetHeight) {
        result = elem.offsetHeight;
    } else if (elem.clip && elem.clip.height) {
        result = elem.clip.height;
    } else if (elem.style && elem.style.pixelHeight) {
        result = elem.style.pixelHeight;
    }
    return parseInt(result);
}


// Делаем объект видимым
function show(obj) {
    var theObj = getObject(obj);
    if (theObj) {
        theObj.visibility = "visible";
    }
}

// Перобразуем строку с именем объекта или ссылку на объект
// в ссылку на объект стиля (или в ссылку на слой NN 4)
function getObject(obj) {
    var theObj = getRawObject(obj);
    if (theObj && isCSS) {
        theObj = theObj.style;
    }
    return theObj;
}

