Event.observe(window, 'load', function() {
	// attach events to all elements with the 'add-bookmark' class
	var buttons = document.getElementsByClassName("add-bookmark");
	buttons.each(function(button) {
		Event.observe(button, 'click', MAG.addRemoveBookmark);
	});
	
	var buttons = document.getElementsByClassName("remove-bookmark");
	buttons.each(function(button) {
		Event.observe(button, 'click', MAG.addRemoveBookmark);
	});
	
});

var MAG = Object.extend({}, MAG || {});

MAG.addRemoveBookmark = function(event) {
	// disable link
	Event.stop(event);
	
	var link = Event.element(event);
	var id = (matches = link.className.match(/id-([\d]+)/)) ? matches[1] : false;
	
	if(link.hasClassName('add-bookmark'))
		MAG.addBookmark(link, id);
	else if(link.hasClassName('remove-bookmark'))
		MAG.removeBookmark(link, id);
	
}

MAG.removeBookmark = function(link, id) {
	var url = window.location.href.replace(/(buy|rent|offers).*/, 'bookmarks/remove/'+id+"?"+Math.random());
	
	new Ajax.Request(url, { onLoading: function(req) {
		// change link's appearance and function
		link.addClassName('add-bookmark');
		link.removeClassName('remove-bookmark');
		
		link.href = link.href.replace(/remove\//, 'add/');
	},
	onComplete: function(req, json)
	{
		console.log(json);
		
		// update bookmark count
		var count = json.count;
		if($('bookmarks_count'))
			$('bookmarks_count').innerHTML = json.count;
	}
	});
}

MAG.addBookmark = function(link, id) {
	var url = window.location.href.replace(/(buy|rent|offers).*/, 'bookmarks/add/'+id+"?"+Math.random());
	new Ajax.Request(url, { onLoading: function(req) {
		// change link's appearance and function
		link.addClassName('remove-bookmark');
		link.removeClassName('add-bookmark');
		
		link.href = link.href.replace(/add\//, 'remove/');
	},
	onComplete: function(req, json)
	{
		// update bookmark count
		var count = json.count;
		if($('bookmarks_count'))
			$('bookmarks_count').innerHTML = json.count;
	}
	});
}
