var delCloud = {
	failed: false,
	doTagCloud : function(tags) {
		if(this.failed === false) {
			window.clearTimeout(this.to);
			var user = $('#deliciousUserId').val();
			var minFontSize = 10;
			var maxFontSize = 20;
			var tagArray = [];
			for ( var tagName in tags) {
				if(typeof tagName === "string"){
					tagArray.push( [ tagName, tags[tagName] ]);
				}
			}
			var tagParam = "<tags>";
			tagArray.sort(function(a, b) {
				return b[1] - a[1];
			});
			tagArray = tagArray.slice(0, Math.min(20, tagArray.length));
			for ( var i = 0; i < tagArray.length; i++) {
				var tag = tagArray[i];
				var denominator = (tagArray[0][1] - tagArray[tagArray.length - 1][1]);
				var weight = 0;
				if (denominator !== 0) {
					weight = ((tag[1] - tagArray[tagArray.length - 1][1])) / denominator;
				}
				var fontSizeOfCurrentTag = minFontSize + 
					Math.round((maxFontSize - minFontSize) * weight);
				tagParam += "<a target='_parent' href='http://delicious.com/" + 
					user + "/" + tag[0] + "' style='" + fontSizeOfCurrentTag + 
					"'>" + tag[0] + "</a>";
			}
			tagParam += "</tags>";
			var flashvars = {};
			flashvars.tagcloud = $.URLEncode(tagParam);
			flashvars.mode = "tags";
			flashvars.distr = "true";
			flashvars.tcolor = "0x000033";
			flashvars.tcolor2 = "0x003300";
			flashvars.hicolor = "0x000066";
			flashvars.tspeed = "100";
			var params = {};
			params.wmode = "transparent";
			params.quality = "high";
			params.bgcolor = "#ffffff";
			var attributes = {};
			swfobject.embedSWF("flash/tagcloud.swf", "tagCloud", "400", "500",
					"7.0.0", false, flashvars, params, attributes);
		}
	},
	fetchTags : function() {
		var user = $('#deliciousUserId').val();
		var script = document.createElement('script');
		var url = 'http://feeds.delicious.com/v2/json/tags/' + user + '?callback=delCloud.doTagCloud';
		script.setAttribute('src', url);
		document.getElementsByTagName('head')[0].appendChild(script);
		this.to = window.setTimeout('delCloud.failure()', 1000);
	},
	failure: function() { 
		window.clearTimeout(this.to); 
		this.failed = true; 
		$('#tagCloud').html('Connection Error'); 
	}
};