var MyCart = {
	options: {
		ajaxUrl: "mycart.php"
	},
	doAction: function( action, params, callback ) {
		$.getJSON( 
			this.ajaxUrl,
			{ 'a': action, 'p': params },
			function(data) {
				if ( $.type(callback) == "function" )
					callback( data );
			});
	},
	add: function( itemId, sel, callback ) {
		var v = parseInt( $(sel).val() );
		if ( isNaN(v) ) {
			return;
		}
		this.doAction( 'add', { 'id': itemId, 'value': v }, callback );
		$(sel).val("");
	},
	remove: function( itemId, callback ) {
		this.doAction( 'remove', { 'id': itemId }, function(data) {
			if ( $.type(callback) == "function" ) {
				callback( itemId, data )
			}
		} );	
	},
	get: function( itemId, callback ) {
		$.ajax({
			dataType: 'json',
			url: this.ajaxUrl,
			data: { 'a': 'get', 'p': { 'id': itemId } },
			type: 'GET',			
			success: function(data) {
				if ( $.type(callback) == "function" ) {
					callback( data )
				}
			}
		});
	},
	getAll: function(callback) {
		this.doAction( 'getall', {}, function(data) {
			if ( $.type(callback) == "function" ) {
				callback( data )
			}
		} );	
	},
	getTotal: function( callback ) {
		this.doAction( 'gettotal', {}, function(data) {
			if ( $.type(callback) == "function" ) {
				callback( data )
			}
		} );	
	},
	cartChange: function( sel, change ) {
		var v = parseInt( $(sel).val() );
		if ( isNaN(v) ) {
			v = 0;
		}
		var newval = v + change;
		if ( newval == 0 )
			$(sel).val("");
		else if ( newval > 0 && newval <= 10 )
			$(sel).val(newval);
	},
	// callback: function( itemId, data )
	cartChangeUpdate: function( itemId, sel, change, callback ) {
		var v = parseInt( $(sel).val() );
		if ( isNaN(v) ) {
			v = 0;
		}
		var newval = v + change;
		if ( newval == 0 )
			$(sel).val("");
		else if ( newval > 0 && newval <= 10 )
			$(sel).val(newval);
		this.doAction( 'update', { 'id': itemId, 'value': newval }, function(data) {
			if ( $.type(callback) == "function" ) {
				callback( itemId, data );
			}
		} );
	}
}
