var Weblog = new Class({
	Implements: Options,
	
	miUserID: false,
	
	options: {
		'fullEntries': false
	},
	
	initialize: function(iUserID, options){
		this.miUserID = iUserID;
		
		this.setOptions(options);
		this.InitButtons();
	},
	
	InitButtons: function(){
		$$('div.weblogBody div.weblogMore a.arrow').each(function(oEl){
			oEl.addEvent('click', (this.ShowItem).bind(this));
		}, this);
		
		$$('div.weblogBody div.weblogDelete a.arrow').each(function(oEl){
			oEl.addEvent('click', (this.DeleteItem).bind(this));
		}, this);
		
		if ($('weblogOlder')){
			$('weblogOlder').addEvent('click', (this.GetNextItems).bind(this));
		}
	},
	
	ShowItem: function(oEvent){
		oEvent.stop();
		
		if ($type(this.miUserID) === false){
			return;
		}
		
		var o_item = $(oEvent.target);
		var i_itemid = parseInt(o_item.get('id').replace(/^weblog_/, ''));
		if ($type(i_itemid) === false){
			return;
		}
		
		try {
			var o_text = o_item.getParent('div.weblogEntry').getChildren('div.weblogText')[0];
		} catch (oEx){
			return;
		}
		
		o_text.addClass('loading');
		o_item.destroy();
		
		var o_req = new Request({
			'url': '/ajax/get_weblog_item',
			'method': 'post',
			'data': $H({
				'userid': this.miUserID,
				'itemid': i_itemid
			}).toQueryString(),
			'onComplete': function(sResponse){
				o_text.removeClass('loading');
				o_text.set('html', sResponse);
			}
		});
		o_req.send();
	},
	
	GetNextItems: function(oEvent){
		oEvent.stop();
		
		if ($type(this.miWeblogOffset) === false){
			this.miWeblogOffset = 0;
		}
		this.miWeblogOffset += 3;
		
		var o_req = new Request.JSON({
			'url': '/ajax/get_weblog_items',
			'method': 'post',
			'data': $H({
				'userid': this.miUserID,
				'offset': this.miWeblogOffset,
				'full': this.options.fullEntries
			}).toQueryString(),
			'onComplete': (function(oResponse){
				if ($type(oResponse) === false){
					return;
				}
				
				// remove next button
				if ((this.miWeblogOffset + 3) >= oResponse.num){
					$('weblogOlder').destroy();
				}
				
				// remove old entries
				$$('div.weblogBody div.weblogEntry').each(function(oEl){
					oEl.destroy();
				});
				
				// inject html
				$('weblogBody').set('html', oResponse.html + $('weblogBody').get('html'));
				
				// make buttons work again
				this.InitButtons();
				
			}).bind(this)
		});
		o_req.send();
	},
	
	DeleteItem: function (oEvent){
		oEvent.stop();
		
		if (!$('deleteConfirm') || !confirm($('deleteConfirm').get('text'))){
			return false;
		}
		
		var o_item = $(oEvent.target);
		var i_itemid = parseInt(o_item.get('id').replace(/^weblog_/, ''));
		if ($type(i_itemid) === false){
			return;
		}
		
		var o_req = new Request({
			'url': '/ajax/delete_weblog_item',
			'method': 'post',
			'data': $H({
				'userid': this.miUserID,
				'itemid': i_itemid
			}).toQueryString(),
			'onComplete': function(){
				o_item.getParent('div.weblogEntry').slide('out');
			}
		});
		o_req.send();
	}
});
