var oXml = new FCKXml();
var oHttpRequest = oXml.GetHttpRequest();
var oPositionDivs = {};
var actions = {};

var country = '';
var remains = {};
var total_items = 0;

function ShowPositionBlock (block_id, lang)
{
	args = arguments;
	popup_id = 'datetime' + block_id + '_div';
	popup_obj = null;
	if (null == (popup_obj = oPositionDivs[popup_id]) || (2 < args.length && 'update' === args[2])) {
		oHttpRequest.open('GET', '/process/basket/schedget/' + block_id + '/?lang=' + lang, false);
		oHttpRequest.send(null);
		if (2 == args.length) {
			popup_obj = document.createElement('div');
			popup_obj.id = popup_id;
			popup_obj.className = 'popup';
			document.body.appendChild(popup_obj);
			oPositionDivs[popup_id] = popup_obj;
		}
		popup_obj.innerHTML = oHttpRequest.responseText;
	}
	if (null != oPositionDivs[popup_id] && 2 == args.length) {
		if (oPositionDivs.active != oPositionDivs[popup_id]) {
			if ('undefined' != typeof oPositionDivs.active && null != oPositionDivs.active) {
				hide(oPositionDivs.active);
			}
		}
		MoveLayer('datetime' + block_id, popup_obj, 16);
		oPositionDivs.active = popup_obj.style.visibility == 'visible' ? hide(popup_obj) : show(popup_obj);
	}
}

function SetDiscount (scharge_switcher, discount_field, tax, shipping_charge, free_after)
{
	stotal_block = FindObject('subtotal');
	scharge_block = FindObject('shipping_charge');
	coins_block = FindObject('coins');
	total_block = FindObject('total');
	if (null != stotal_block && null != scharge_block  && null != total_block) {
		ttotal = parseFloat(stotal_block.innerHTML);
		if (null != discount_field && 'text' == discount_field.type && 0 != parseInt(discount_field.value)) {
			ttotal -= (ttotal / 100) * parseInt(discount_field.value); 
		}
		ttotal *= 1 + tax / 100;
		if (ttotal >= free_after ||
			(null != scharge_switcher && 'checkbox' == scharge_switcher.type && false == scharge_switcher.checked))
		{
			scharge_block.innerHTML = 'free';
		}
		else {
			scharge_block.innerHTML = shipping_charge + ' EUR';
			ttotal += shipping_charge;
		}
		if (null != coins_block) {
			ttotal -= parseFloat(coins_block.innerHTML);
		}
		total_block.innerHTML = ttotal.toFixed(2);
	}
}

function AddGoods (item_uid, sdate, edate, stime, etime)
{
	if ('undefined' != typeof item_uid && 'undefined' != typeof sdate) {
		edate = 'undefined' == typeof edate ? sdate : edate;
		check = (new Date()).getTime();
		actions[check] = item_uid + '_' + sdate + '_' + stime + '_' + edate + '_' + etime;
		var url = '/process/basket/add/' + item_uid + '/' + sdate + '/' + stime + '/' + edate + '/' + etime + '/?check=' + check;
		oHttpRequest.open('GET', url, true);
		oHttpRequest.onreadystatechange = BasketFeedback;
		oHttpRequest.send(null);
	}
}

function RemoveGoods (position)
{
	if ('undefined' != typeof position) {
		check = (new Date()).getTime();
		actions[check] = position + '_';
		var url = '/process/basket/remove/' + position + '/?check=' + check;
		oHttpRequest.open('GET', url, true);
		oHttpRequest.onreadystatechange = BasketFeedback;
		oHttpRequest.send(null);
	}
}

function UpdateSchedule (position, day, start, end)
{
	if ('undefined' != typeof position && 'undefined' != typeof day && 'undefined' != typeof start && 'undefined' != typeof end) {
		check = (new Date()).getTime();
		actions[check] = position + '_' + day + '_' + start + '_' + end;
		var url = '/process/basket/schedupd/' + position + '/' + day + '/' + start + '/' + end + '/?check=' + check;
		oHttpRequest.open('GET', url, true);
		oHttpRequest.onreadystatechange = BasketFeedback;
		oHttpRequest.send(null);
	}
}

function ShiftSchedule (position, day, direction, lang)
{
	if ('undefined' != typeof position && 'undefined' != typeof direction) {
		check = (new Date()).getTime();
		actions[check] = position + '_' + day + '_' + direction;
		var url = '/process/basket/' + ('add' == direction ? 'schedadd' : 'scheddel') + '/' + position + '/' + day + '/?lang=' + lang + '&check=' + check;
		oHttpRequest.open('GET', url, true);
		oHttpRequest.onreadystatechange = BasketFeedback;
		oHttpRequest.send(null);
	}
}

function LoadPlace (selector)
{
	if ('undefined' != typeof selector && 'select-one' == selector.type && 0 != selector.selectedIndex) {
		uid = selector[selector.selectedIndex].value;
		check = (new Date()).getTime();
		actions[check] = uid + '_';
		var url = '/process/basket/delivery/' + uid + '/?check=' + check;
		oHttpRequest.open('GET', url, true);
		oHttpRequest.onreadystatechange = BasketFeedback;
		oHttpRequest.send(null);
	}
	else {
		FindObject('address').innerHTML = '';
		FindObject('phone').innerHTML = '';
	}
}

function BasketFeedback ()
{
	var result = {};
	if (4 == oHttpRequest.readyState) {
		if (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]+$/.test(oHttpRequest.responseText.replace(/\\./g, '@').replace(/'[^'\\\n\r]*'/g, ''))) {
			result = eval('(' + oHttpRequest.responseText + ');');
			if ('undefined' != typeof actions[result.check] && -1 != actions[result.check].indexOf(result.object_uid)) {
				switch (result['action']) {
					case 'add':
						if ('undefined' == typeof result.error || '' == result.error) {
							show('success');
							setTimeout('hide("success")', 3000);
							// append 27.05.2010: RFC-0045 ***********							
							window.location.href="http://slab.nvolva.org/nl/order/";
							// *************************************** 
						}
						else {
							show('error');
							setTimeout('hide("error")', 3000);
						}						
						break;

					case 'remove':
						document.location.reload();
						break;

					case 'schedupd':
						
						FindObject('time' + result.object_uid).innerHTML = result.response.total_time;
						FindObject('delivery' + result.object_uid).innerHTML = result.response.delivery;
						FindObject('total' + result.object_uid).innerHTML = result.response.total_cost;
						FindObject('sub_total').innerHTML = result.response.total_s;
						FindObject('total').innerHTML = result.response.total_st;
						break;

					case 'schedadd':
					case 'scheddel':
						if ('undefined' == typeof result.error || '' == result.error) {
							FindObject('sdate' + result.object_uid).innerHTML = result.response.start_date;
							FindObject('edate' + result.object_uid).innerHTML = result.response.end_date;
							FindObject('time' + result.object_uid).innerHTML = result.response.total_time;
							FindObject('delivery' + result.object_uid).innerHTML = result.response.delivery;
							FindObject('total' + result.object_uid).innerHTML = result.response.total_cost;
							FindObject('sub_total').innerHTML = result.response.total_s;
							FindObject('total').innerHTML = result.response.total_st;
							ShowPositionBlock(result.object_uid, result.url_lang, 'update');
						}
						else {
							alert(result.error);
						}
						break;

					case 'delivery':
						FindObject('address').innerHTML = ('undefined' != typeof result.response.address) ? result.response.address : '';
						FindObject('phone').innerHTML = ('undefined' != typeof result.response.phone) ? result.response.phone : '';
						break;

					default:
						alert('3333333333333333');
						break;
				}
			}
		}
		else {
			alert('Server wrong responce.');
		}
	}
}