// Глобальные переменные
var isCSS, isW3C, isIE4, isNN4;
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;

function DayCounter()
{
	ccDayNow = new Date();
	ccDayThen = new Date("April 19, 2009")
	msPerDay = 24 * 60 * 60 * 1000 ;
	timeLeft = (ccDayThen.getTime() - ccDayNow.getTime());
	cc_daysLeft = timeLeft / msPerDay;
	daysLeft = Math.floor(cc_daysLeft);
	cc_hrsLeft = (cc_daysLeft - daysLeft)*24;
	hrsLeft = Math.floor(cc_hrsLeft);
	minsLeft = Math.floor((cc_hrsLeft - hrsLeft)*60);
	return daysLeft;
}



//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("GLOBAL_CHAIN_STACK[chain_number].responseText");
					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 added_goods_id=0;
var added_price_id=0;
function hide(obj)
{
	var cur_style = 	obj.style.visibility;
	if(cur_style != "hidden")		{
		obj.style.visibility = "hidden";
	}
}
function open_div(show_div, hide_div) 
{
	document.getElementById(show_div).style.display ='block';
	document.getElementById(hide_div).style.display = 'none';
}

function add_goods_result(string)
{
	//alert (string);
	var obj = document.getElementById('added_msg_' + added_price_id);
	obj.style.visibility = "visible";
	obj.innerHTML = string;
  setTimeout(function() {hide(obj)}, 1000);	
	var row_obj = document.getElementById('goods_main_all' + added_goods_id);
	row_obj.className = "odd";
	added_price_id=0;
}
function no_do()
{
	
}
function add_goods_result_item(string)
{
	var obj = document.getElementById('added_msg');
	centerOnWindow(added_msg);
	//obj.style.visibility = "visible";
	obj.innerHTML = string;
  setTimeout(function() {hide(obj)}, 20000);	
	added_goods_id=0;
	added_price_id=0;
	

}
function show_flagnotstandart(price_id)
{
	added_price_id = price_id;
	var obj_notstandart = document.getElementById('flagnotstandart_msg_' + added_price_id);
	obj_notstandart.style.visibility = "visible";
	added_goods_id = document.forms['AddToBasket'+price_id].elements['goods_id'+price_id].value;
	var row_obj = document.getElementById('goods_main_all' + added_goods_id);
	row_obj.className = "";
  
}

function add_to_basket_with_flagnotstandart(price_id)
{
	added_price_id = price_id;
	added_goods_id = document.forms['AddToBasket'+price_id].elements['goods_id'+price_id].value;
	var obj_notstandart = document.getElementById('flagnotstandart_msg_' + added_price_id);
	obj_notstandart.style.position = "absolute";
	var AJAX_CHAIN =  new AjaxChain; 
	var rnd = Math.random();
	var count = parseInt(document.forms['AddToBasket'+price_id].elements['count'+price_id].value);
	var flagnotstandart = getRadioGroupValue(document.forms['AddToBasket'+price_id].elements['flagnotstandart']);
	AJAX_CHAIN.getAjax('/cgi-bin/dsp.pl?cl=order&event=add_to_basket_short&price_id='+price_id+'&count='+count+'&rnd='+rnd+'&flagnotstandart='+flagnotstandart, add_goods_result);
	obj_notstandart.style.visibility = "hidden";
}

function add_to_basket(price_id)
{
	added_price_id = price_id;
	added_goods_id = document.forms['AddToBasket'+price_id].elements['goods_id'+price_id].value;
	var AJAX_CHAIN =  new AjaxChain; 
	var rnd = Math.random();
	var count = parseInt(document.forms['AddToBasket'+price_id].elements['count'+price_id].value);
	AJAX_CHAIN.getAjax('/cgi-bin/dsp.pl?cl=order&event=add_to_basket_short&price_id='+price_id+'&count='+count+'&rnd='+rnd, add_goods_result);
}
function show_basket()
{
	var AJAX_CHAIN =  new AjaxChain; 
	AJAX_CHAIN.getAjax('/cgi-bin/dsp.pl?cl=order&event=show_basket', no_do);
}
function add_to_basket_item(price_id, goods_id,is_catalog,is_flagnotstandart)
{
	added_goods_id = goods_id;
	added_price_id = price_id;
	if (!is_catalog){
		var count =  document.getElementById('count'+added_price_id).value; 
		if(!count){ count=1;}
		}
	else { count=1;}
	if (!is_flagnotstandart){
		var is_flagnotstandart = 0; 
		}
	else { is_flagnotstandart=1;}
	var AJAX_CHAIN =  new AjaxChain; 
	var rnd = Math.random();
	AJAX_CHAIN.getAjax('/cgi-bin/dsp.pl?cl=order&event=add_to_basket_short_item&price_id='+price_id+'&goods_id='+goods_id+'&is_flagnotstandart='+is_flagnotstandart+'&count'+'='+count+'&rnd='+rnd, add_goods_result_item);
}


function cancel(price_id)
{
	var obj_notstandart = document.getElementById('flagnotstandart_msg_' + added_price_id);
	obj_notstandart.style.visibility = "hidden";
}
function getRadioGroupValue(radioGroupObj)
{
  for (var i=0; i < radioGroupObj.length; i++)
    if (radioGroupObj[i].checked) return radioGroupObj[i].value;

  return null;
}
function delete_goods(cl, ev)
{
	var msg = 'Все товары из корзины будут удалены.';
	msg += 'Подтвердите удаление, щелкнув кнопку OK.';
	if(confirm(msg)==true)
	{
		AddOrder.cl.value=cl;
		AddOrder.event.value=ev;
		AddOrder.submit();
	}
}
function add_art_goods(cl, ev)
{
		AddOrder.cl.value=cl;
		AddOrder.event.value=ev;
		AddOrder.submit();
}
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;
}