/**
 * URL zum Korb hinzufuegen.
 *
 * @param {String} url URL des Eintrags
 * @param {String} title Titel des Eintrags
 */
function addToBasket(url, title) {
	sendRequest("add", url, title, true, function(response) {
		document.getElementById("infobasketmain").innerHTML = response;
	});
}

/**
 * URL aus dem Korb entfernen.
 *
 * @param {String} url URL des Eintrags der geloescht werden soll
 */
function removeFromBasket(url) {
	sendRequest("remove", url, "", true, function(response) {
		document.getElementById("infobasketmain").innerHTML = response;
	});
}

/**
 * Korb neu laden.
 */
function refreshBasket() {
	sendRequest("", "", "", true, function(response) {
		document.getElementById("infobasketmain").innerHTML = response;
	});
}

/**
 * Anfrage an den Korb-Controller senden.
 *
 * @param {String} action Aktion die ausgefuehrt werden soll ("add" und "remove")
 * @param {String} url URL des Eintrags
 * @param {String} title Titel des Eintrags
 * @param {Boolean} async [Optional] Anfrage asynchron abgeben (Standard: ja)
 * @param {Function} callback Callback-Funktion nach erfolgter Antwort, welche als
 * Parameter den Text der Antwort bekommt
 */
function sendRequest(action, url, title, async, callback) {
	var request = new XMLHttpRequest();

	action = encodeURIComponent(action);
	url    = encodeURIComponent(url);
	title  = encodeURIComponent(title);

	if(typeof async != "boolean") async = true;

	request.open("GET", "/media/__system__/basket.php?action=" + action + "&url=" + url + "&title=" + title, async);
	request.onreadystatechange = function() {
		if (this.readyState == XMLHttpRequest.DONE) {
			if(callback && typeof callback == "function") {
				callback.apply(null, new Array(request.responseText));
			}
		}
	}
	request.send(null);
}
