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_cart( data ) {
$( "#cartcount" ).text( data.cartcount );
$( "#cartsumm" ).text( data.cartsumm );
}
function update_cartpage() {
$( "#total_sum" ).text( cart_sum + delivery_price );
}
function add( sender, gid, pack ) {
$( sender ).addClass( "hidden" );
do_ajax(
"/add?a&g="+gid+"&p="+pack,
function( data ) {
$( sender ).removeClass( "hidden" );
$.jGrowl( data.message );
fly( $( "#fly" ), $( sender ), $( ".cart" ), data );
},
function( data ) {
$( sender ).removeClass( "hidden" );
}
);
return false;
}
function remove( sender, item ) {
$( sender ).addClass( "hidden" );
do_ajax(
"/remove?a&it="+item,
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(
"/checkout?a&d="+delivery_id,
function( data ) {
window.location = ( data.paylink );
},
function( data ) {
$( sender ).removeClass( "hidden" );
}
);
return false;
}