tombloo patch

var HatenaDiary = {
	URL : 'http://d.hatena.ne.jp',
	hatenaId: null,
	rkm: null,
	getHatenaId : function(){
		if ( this.hatenaId && this.hatenaId != '' ) {
			return succeed( this.hatenaId );
		} else {
			var d = new MochiKit.Async.Deferred();
			var timerid = window.setTimeout( function () {
				var id;
				while ( (id = getPref('hatenaId', null)), !id && id != '' ) {
					id = prompt("plz input your hatena id.");
					id = id.replace(/\s/g);
					setPref('hatenaId', id)
				}
				HatenaDiary.hatenaId = id;
				window.clearTimeout(timerid);
				d.callback(id);
			}, 0);
			return d;
		}
	},
	getToken : function(){
		return this.getHatenaId().addCallback( function (hatenaId)  {
			if ( HatenaDiary.rkm ) {
				return succeed( HatenaDiary.rkm );
			} else {
				return doXHR( [
					HatenaDiary.URL,
					hatenaId,
					"20350101" // empty page has lesser content but with rkm.
				].join("/") ).addCallback( function (res) {
					if ( res.responseText.match( /Hatena\.rkm\s*=\s*['"](.+?)['"]/) ) {
						return HatenaDiary.rkm = RegExp.$1;
					} else {
						// error
					}
				} );
			}
		} );
	},
	
	post : function(params){
		return this.getToken().addCallback(function(token){
			params.rkm = token;
			var u = [HatenaDiary.URL, HatenaDiary.hatenaId, ""].join("/");
			var c = HatenaDiary[capitalize(params.type)].convertToForm(params);
			return doXHR( u, {
				method : 'POST',
				mimeType: "application/x-www-form-urlencoded",
				referrer    : u,
				sendContent : c,
			} ).addCallback(function(res){
			});
		});
	},
}

HatenaDiary.Link = {
	convertToForm : function(m){
		return {
			rkm   : m.rkm,
			title : "[" + m.type + "]"  + m.title,
			body : m.title.link(m.href),
		};
	}
}

HatenaDiary.Quote = {
	convertToForm : function(m){
		var body = '<blockquote ' + 
						'cite="' + m.href + '"' +
						'title="' + m.title + '">' +
						m.body + 
			'</blockquote>';
		return {
			rkm   : m.rkm,
			title : "[" + m.type + "]"  + m.title,
			body : body
		};
	}
}