Ext.onReady(function() {

	Ext.select('a.bookmark').on('click', function(e, target, options) {
	
		var bookmarkLink = Ext.get(target);
		
		if(bookmarkLink.hasClass('saving'))
		{
			e.preventDefault();
			return false;
		}
		
		if(bookmarkLink.hasClass('disabled'))
		{
			return true;
		}
		
		bookmarkLink.addClass('saving');
		
		var appIndex = target.pathname.indexOf('/', 1);
		var jsonUrl = target.pathname.substr(0, appIndex) + '/json' + target.pathname.substr(appIndex);
		
		Ext.Ajax.request({
			url: jsonUrl
			,scope: bookmarkLink
			,success: function(response, options) {
			
				bookmarkLink.removeClass('saving');
				
				var obj = Ext.decode(response.responseText);
				var responseID = response.getResponseHeader('X-Response-ID');
				var actionIndex = this.dom.pathname.lastIndexOf('/');
				var urlAction = this.dom.pathname.substr(actionIndex);
				
				if(responseID == 'bookmarkAdded')
				{
					this.addClass('active');
					
					if(urlAction == '/bookmark')
						this.dom.pathname = this.dom.pathname + '/delete';
				}
				else if(responseID == 'bookmarkDeleted')
				{
					this.removeClass('active');
					
					if(urlAction == '/delete')
						this.dom.pathname = this.dom.pathname.substr(0, actionIndex);
				}
			}
			,failure: function() {
				window.location = target.href;
			}
		});
	
		e.preventDefault();
		return false;
	});
	
});
