function do_ajax( url, on_success, on_error ) {
	$.ajax({
		url: url,
		dataType: "json",
		success: function(data) {
			if( data.result=="ok" ) {
				if( on_success ) {
					on_success( data );
				}
			} else {
				if( data.result=="error" ) {
					$.jGrowl( data.message, { header:"Error" } );
				} else {
					$.jGrowl( "Unknown server answer", { header:"Error" } );
				}
				if( on_error ) {
					on_error();
				}
			}
		},
		error: function(data) {
			$.jGrowl( "Connection error", { header:"Error" } );
			if( on_error ) {
				on_error();
			}
		}
	});
}

function update_cartpage_begin() {
	delivery_price=15;
	$( "#total_sum" ).removeClass( "cart_price" );
	$( "#total_sum" ).addClass( "class_invisible" );
	$( "#total_sum_delivery" ).removeClass( "class_invisible" );
	$( "#total_sum_delivery" ).addClass( "cart_price" );
	$( "#sum_with_delivery" ).text( Math.round( (cart_sum + delivery_price)*100)/100 );
}

function update_cart( data ) {
	$( "#cartcount" ).text( data.cartcount );
	$( "#cartsumm" ).text( data.cartsumm );
}
function update_cartpage() {
	$( "#sum_with_delivery" ).text( Math.round( (cart_sum + delivery_price)*100)/100 );
	if( cart_sum == 0 ) {
		$( "#chackout_box" ).addClass( "class_invisible" ); 
	}
}

function add( sender, url ) {
	$( sender ).addClass( "hidden" );
	do_ajax(
		url,
		function( data ) {
			$( sender ).removeClass( "hidden" );
			$.jGrowl( data.message );
			fly( $( "#fly" ), $( sender ), $( ".cart" ), data );
		},
		function( data ) {
			$( sender ).removeClass( "hidden" );
		}
	);
	return false;
}

function remove( sender, url, item ) {
	$( sender ).addClass( "hidden" );
	do_ajax(
		url,
		function( data ) {
			$( sender ).removeClass( "hidden" );
			$( "#item"+item ).remove();
			update_cart( data );
			
			cart_sum = data.cartsumm;
			update_cartpage();
		},
		function( data ) {
			$( sender ).removeClass( "hidden" );
		}
	);
	return false;
}

function set_delivery( id, price ) {
	delivery_id = id
	delivery_price = price;
	update_cartpage();
}

function fly( what, from, to, data ) {
	var from_offset = from.offset();
	var to_offset = to.offset();
	
	var from_left = from_offset.left + from.width()/2 - what.width()/2;
	var from_top = from_offset.top + from.height()/2 - what.height()/2;

	var to_left = to_offset.left + to.width()/2 - what.width()/2;
	var to_top = to_offset.top + to.height()/2 - what.height()/2;
	
	what.css( "position", "absolute" ).css( "display", "" );
	what.css( "left", from_left+"px" ).css( "top", from_top+"px" );
	
	what.show().animate( {
			left: to_left+"px",
			top: to_top+"px"
		},
		"slow",
		null,
		function() {
			what.fadeOut( "slow" );
//			what.css( "display", "none" );
			update_cart( data );
		}
	);
}
/*
function checkout( sender ) {
	$( sender ).addClass( "hidden" );
	do_ajax(
		"{path}checkout?a&d="+delivery_id,
		function( data ) {
			window.location = ( data.paylink );
		},
		function( data ) {
			$( sender ).removeClass( "hidden" );
		}
	);
	return false;
}
*/

$( function() {
	$( ".order_info" ).addClass( "nodisplay" );
	update_cartpage_begin();
});
