var cart_x =  document.body.clientWidth - 200;
var cart_y = 100;
var flyingDiv = false;
var currentDiv = false;
var speed = 25;
var curr_x = false;
var curr_y = false;
var diff_x = false;
var diff_y = false;

function add_to_basket(id) {

	if (!flyingDiv){
		flyingDiv = document.createElement('DIV');
		flyingDiv.style.position = 'absolute';
		document.body.appendChild(flyingDiv);
	}

	currentDiv = document.getElementById('product' + id);

	var t_currentDiv = currentDiv;

	curr_y = t_currentDiv.offsetTop;
	curr_x = t_currentDiv.offsetLeft;

	while ((t_currentDiv = t_currentDiv.offsetParent) != null) {
		if (t_currentDiv.tagName!='HTML') {
			curr_y += t_currentDiv.offsetTop;
			curr_x += t_currentDiv.offsetLeft;
		}
	}

	diff_x = cart_x - curr_x;
	diff_y = cart_y - curr_y;

	var ContentCopy = currentDiv.cloneNode(true);
	ContentCopy.id='';
	flyingDiv.innerHTML = '';
	flyingDiv.style.left = curr_x + 'px';
	flyingDiv.style.top = curr_y + 'px';
	flyingDiv.appendChild(ContentCopy);
	flyingDiv.style.display='block';
	flyingDiv.style.width = currentDiv.offsetWidth + 'px';
	flyToBasket(id);
}

function BasketProcessHttpChange() {

	if (http.readyState == 1) {
		load.style.display = "block";
		get_basket_begin();

	} else if (http.readyState == 4) {

		load.style.display = "none";

		if (http.status == 200) {

			xmlRoot = http.responseXML.documentElement;

			txt_error = xmlRoot.getElementsByTagName('error')[0].firstChild.data;
			txt_status = xmlRoot.getElementsByTagName('status')[0].firstChild.data;
			txt_value = xmlRoot.getElementsByTagName('val').item(0).firstChild.data;
	
			if (txt_error == 1)	{ get_basket_error(); }
			else		{ get_basket_end(); }
		} else {
			get_basket_error();
		}
	}
}

function flyToBasket(id) {

	var max_diff = Math.max(Math.abs(diff_x),Math.abs(diff_y));
	var move_x = (diff_x / max_diff) * speed;
	var move_y = (diff_y / max_diff) * speed;

	curr_x = curr_x + move_x;
	curr_y = curr_y + move_y;

	flyingDiv.style.left = Math.round(curr_x) + 'px';
	flyingDiv.style.top = Math.round(curr_y) + 'px';

	if(move_x>0 && curr_x > cart_x) { flyingDiv.style.display='none'; }
	if(move_x<0 && curr_x < cart_x) { flyingDiv.style.display='none'; }

	if (flyingDiv.style.display == 'block') { setTimeout('flyToBasket("'+id+'")', 10); }
	else {
 	 	if (http) {
			http.open("GET", "/ajax/tobasket.php?id="+id+"&rnd="+parseInt(Math.random()*99999999), true);
			http.onreadystatechange = BasketProcessHttpChange;
			http.send(null);
		}
  	}
}

function get_basket_begin() {

	status.className = "status";
	status.style.display = "none";
}

function get_basket_end() {

	var amount = document.getElementById("amount");
	var total_price = document.getElementById("total_price");

	if (txt_status != 0) {
		status.style.display = "block";
		status.innerHTML = txt_status;
	}

	amount.innerHTML = parseInt(amount.innerHTML) + 1;
	total_price.innerHTML = currency(parseInt(total_price.innerHTML.replace(' ','')) + parseInt(txt_value));
}

function get_basket_error() {

	if (txt_status != 0) {
		status.style.display = "block";
		status.className = "status_error";
		status.innerHTML = txt_status;
	}
}

function currency(num) {

	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	num = Math.floor(num/100).toString();

	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) {
		num = num.substring(0,num.length-(4*i+3))+' '+num.substring(num.length-(4*i+3));
	}
	return (((sign)?'':'-') + num);
}