function posX(e)
{
	return e.offsetLeft + (e.offsetParent != null && e.tagName != 'BODY' ? posX(e.offsetParent) : 0);
}

function posY(e)
{
	return e.offsetTop + (e.offsetParent != null && e.tagName != 'BODY' ? posY(e.offsetParent) : 0);
}

function AJAXInteraction(url, callback)
{
	var req = init();
	req.onreadystatechange = processRequest;

	function init()
	{
		if (window.XMLHttpRequest)
		{
			return new XMLHttpRequest();
		}else if (window.ActiveXObject)
		{
			return new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	function processRequest()
	{
		if (req.readyState == 4)
		{
			if (req.status == 200)
			{
				if (callback) callback(req.responseText);
			}
		}
	}

	this.doGet = function()
	{
		req.open('GET', url, true);
		try
		{
			req.setRequestHeader("Cookie", document.cookie);
		} catch (e) {}
		req.send(null);
	}

	this.doPost = function(body)
	{
		req.open('POST', url, true);
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.setRequestHeader("Content-Length", body.length);
		try
		{
			req.setRequestHeader("Cookie", document.cookie);
		} catch (e) {}
		req.send(body);
	}
}

var obj;
var id = 0;
var k_empty = '<div class="margin">Для заказа товара щёлкните на изображении корзинки рядом с ним</div>'
var s_add = 'Добавить в корзину';
var s_del = 'Удалить из корзины';
var s_load = 'Обновление информации';
var fdel = 0;
var ok = true;
var sendOk = false;

function move(o, i)
{	if(o.alt == s_add)
	{		ok = false;		o.src = 'buyL.gif';
		o.alt = s_load;
		o.title = s_load;
		new AJAXInteraction('xml.php?act=add&id='+i, pADD).doGet();
	}
	if(o.alt == s_del)
	{		ok = false;		o.src = 'buyL.gif';
		o.alt = s_load;
		o.title = s_load;
		new AJAXInteraction('xml.php?act=del&id='+i, pDEL).doGet();
	}
}

function addc(o, i)
{	ok = false;
	clos();
	o.src = 'buyL.gif';
	o.alt = s_load;
	o.title = s_load;
	new AJAXInteraction('xml.php?act=add&id='+i, pADD).doGet();
}

function del(o, i, n)
{	ok = false;	document.getElementById('pk'+i).style.display = 'none';
	obj = document.getElementById('p'+i);
	if(obj!=null)
		obj.src = 'buyL.gif';
	document.getElementById('cost'+n).innerHTML = 0;
	if(num>1)
	{		ch(-1);
	}
	new AJAXInteraction('xml.php?act=del&close=0&id='+i, pDEL).doGet();
}

function prod(o, i, noadd)
{
	document.getElementById('product').innerHTML = 'Загрузка информации о товаре...';
	var left = posX(o) + 50;
	if(left+400>document.body.clientWidth)
		left = document.body.clientWidth - 400;
	document.getElementById('product').style.left = left + 'px';
	document.getElementById('product').style.top = posY(o) - 15 + 'px';
	document.getElementById('product').style.display = 'block';
	var add = '';
	if(noadd)
		add = '&add=0';
	new AJAXInteraction('xml.php?act=prod&id='+i+add, pPROD).doGet();
}

function clean()
{	ok = false;	document.getElementById('korz').innerHTML = '<div class="margin">Очистка корзины...</div>';
	new AJAXInteraction('xml.php?act=clean', pCLEAN).doGet();
}

function list()
{	if(!ok)
	{
		alert('Дождитесь завершения обработки изменений, а затем сделайте заказ.');
		return;
	}	fdel = 0;	document.getElementById('product').style.display = 'none';
	document.getElementById('korz').innerHTML = '<div class="margin">Подождите, идёт получение данных...</div>';
	new AJAXInteraction('xml.php?act=list', pLIST).doGet();
}

function send()
{	if(!ok)
	{		alert('Дождитесь завершения обработки выбранных товаров, а затем сделайте заказ.');
		return;
	}
	if(document.getElementById('name').value.length==0)
	{
		alert('Пожалуйста, укажите Ваше имя.');
		return;
	}
	if(document.getElementById('email').value.length==0)
	{
		alert('Пожалуйста, укажите номер телефона (с кодом города) или адрес электронной почты (e-mail), по которому можно будет связаться с Вами.');
		return;
	}

	var text = '';
	var max = num + fdel;
	for(n=0;n<max;n++)
		text += 'num['+document.getElementById('id'+n).value+']='+document.getElementById('num'+n).value+'&';

	text += 'name='+encodeURIComponent(document.getElementById('name').value)+'&email='+encodeURIComponent(document.getElementById('email').value)+'&info='+encodeURIComponent(document.getElementById('info').value);

	document.getElementById('korz').innerHTML = '<div class="margin">Пожалуйста подождите. Идёт отправка данных.</div>';

	new AJAXInteraction('xml.php?act=send', pSEND).doPost(text);}

function pSEND(resp)
{
	if(resp=='OK')
	{
		num = 0;
		fdel = 0;
		sendOk = true;
		clean();
	}else
		document.getElementById('korz').innerHTML = '<div class="margin"><font color="red">'+resp+'</font></div>';
}

function pADD(resp)
{	ok = true;
	var r = resp.substring(0,1);
	if(r=='1' || r=='2')
	{		id = resp.substring(1);		obj = document.getElementById('p'+id);		obj.src = 'buyOK.gif';
		obj.alt = s_del;
		obj.title = s_del;
		if(r=='1')
			num++;
		document.getElementById('korz').innerHTML = '<div class="margin">Товаров подготовлено к заказу: '+num+'<br><div class="button" onclick="list();">Сделать заказ</div></div>';
	}else
		alert(resp);
}

function pDEL(resp)
{	ok = true;	var r = resp.substring(0,1);
	if(r=='1' || r=='2')
	{		num--;		id = resp.substring(1);
		obj = document.getElementById('p'+id);
		if(obj!=null)
		{
			obj.src = 'buy.gif';
			obj.alt = s_add;
			obj.title = s_add;
		}
		if(num==0)
			document.getElementById('korz').innerHTML = k_empty;
		else
		{			if(r==1)
				document.getElementById('korz').innerHTML = '<div class="margin">Товаров подготовлено к заказу: '+num+'<br><div class="button" onclick="list();">Сделать заказ</div></div>';
			else
				fdel++;
		}
	}else
		alert(resp);
}

function pCLEAN(resp)
{	ok = true;	fdel = 0;
	num = 0;
	if(sendOk)		document.getElementById('korz').innerHTML = '<div class="margin">Спасибо, за сотрудничество!<br>Мы рассмотрим Ваш заказ в самое ближайшее время и свяжемся с Вами.</div>';	else		document.getElementById('korz').innerHTML = k_empty;	sendOk = false;	var r = resp.split('|');
	max = r.length;
	for(var i=0;i<max;i++)
	{
		obj = document.getElementById('p'+r[i]);
		if(obj!=null)
		{
			obj.src = 'buy.gif';
			obj.alt = s_add;
			obj.title = s_add;
		}
	}
}

function pLIST(resp)
{
	document.getElementById('korz').innerHTML = resp;
}

function pPROD(resp)
{
	document.getElementById('product').style.display = 'block';	document.getElementById('product').innerHTML = resp;
}

function clos()
{	document.getElementById('product').style.display = 'none';
}

function ch(i)
{	if(i>=0)		document.getElementById('cost'+i).innerHTML = document.getElementById('price'+i).innerHTML*document.getElementById('num'+i).value;

	var sum = 0;
	var max = num + fdel;

	for(n=0;n<max;n++)
		sum += document.getElementById('cost'+n).innerHTML*1;
	document.getElementById('all').innerHTML = 'Общая стоимость без учета доставки: ' + sum + ' р.';
}
