/* jquery.tinydb - jQuery interface to TinyDB (http://tinydb.org/)
 *  Copyright (c) 2008 Chris Moyer (chris@inarow.net)
 *  
 * usage:
 * jQuery.tinydb.read(tinydb_id, callback);
 * callback is called with the data from TinyDB
 *
 * jQuery.tinydb.write({key: val, key2: val2}, callback);
 * write data, callback is called with tinydb_id string
 *
 * MIT (http://www.opensource.org/licenses/mit-license.php) licensed.
 */

jQuery.tinydb = {
	callbacks: [],

	generateCallbackString: function (callback) {
		var callback_num = this.callbacks.length
		var callback_string = 'jQuery.tinydb.callbacks[' + callback_num + ']';
		this.callbacks[callback_num] = callback; 

		return callback_string;
	},

	read: function (tinydb_id, callback) {
		var callback_string = 
			this.generateCallbackString(function () { callback(TINYDB.data[0]);});

		jQuery.getScript('http://tinydb.org/' + escape(tinydb_id) + 
		                             '?_f=js&_c=' + escape(callback_string));
	},

	write: function (data, callback) {
		var callback_string = 
			this.generateCallbackString(function () { 
					var url = TINYDB.data.tinydb_url;
					var parts = url.split(/\//);
					callback(parts[parts.length-1]);
			});

		var dataString = '';
		for (i in data) {
			dataString += '&' + escape(i) + '=' + escape(data[i]);
		}
		jQuery.getScript('http://tinydb.org/_write' + 
		                             '?_f=js&_c=' + escape(callback_string) + 
									 dataString);
    }		   
}
