function checkCookiesEnabled() {
	setCookie('testcookie', 'test', 10000);
	return getCookie('testcookie') == 'test';
}

function setCookie2(name, value, expire) {
  if (expire == '') {
    document.cookie = name + '=' + value + '; path=/';
  } 
  else {
    var expires = new Date();
    expires.setTime(expires.getTime() + expire);
    document.cookie = name + '=' + value + ((expire == null) ? '' : ('; expires=' + expires.toGMTString())) + '; path=/';
  }
}

// Escape the cookie value
function escapeCookie(value) {
	while (value.indexOf(',') != -1) {
		value = value.replace(',', '%2C');
	}
	return value;
}

function AddBookmark(cookiename, title, separator, maxpages, nocookieserror) {
	if (!checkCookiesEnabled()) {
		alert(nocookieserror);
	}
	else {
		var expire = 31536000000;
		var newcookievalue = "";
		var pagefound = false;
		var bookmarkurl = "";
		var cookievalue = getCookie(cookiename);
		var url = "";

		//Cookievalue mag geen null waarde bevatten
		if (cookievalue == null) {
			cookievalue = "";
		}

		//Haal een string met alle bookmarks op en maak er een array van
		var bookmarks = cookievalue.split(separator);

		//Bepaal de url van de bookmark
		//De lege string is nodig om duidelijk te maken dat het om een string gaat
		//en niet het document.location object. Mooi werk dat javascript.
		baseurl = "" + document.location;

		//Bepaal de lokatie van de derde slash zodat we de servername kunnen verwijderen  
		frompos = 0;
		for (i=0; i<3; i++) {
			if (baseurl.indexOf('/', frompos + 1) != -1) {
				frompos = baseurl.indexOf('/', frompos + 1);
			}
		}  
		baseurl = baseurl.substr(frompos);
		for (i=0; i<bookmarks.length; i++) {

			bookmarkurl = bookmarks[i].split("~");

				//Voeg de huidige cookie token toe aan de niewe cookie tokens
			if (bookmarkurl[0] != baseurl) {
				//Voeg een seperator toe aan het einde van de cookie
				if (newcookievalue != "") {
					newcookievalue += separator;
				}
                                if (bookmarkurl[0] != null && bookmarkurl[0] != "") {
					//Voeg de oude token toe aan de nieuwe string
					newcookievalue += escape(bookmarkurl[0]) + "~" + escape(bookmarkurl[1]);
				}
			} 
			else {
				//Iemand probeerde een pagina te bookmarken die al gebookmarked was
				pagefound = true;
			}
		}

		//Als de gebookmarkte pagina nog niet in de cookie stond voeg hem dan toe
		//Alleen een nieuw cookie zetten als er echt een nieuwe pagina toegevoegd is
		if (!pagefound) {
			newcookievalue += escape(baseurl);
			newcookievalue += "~";
			newcookievalue += escape(title);

			//Zorg ervoor dat altijd geeindigd wordt met een seperator
			newcookievalue += separator;    		  

			setCookie2(cookiename, newcookievalue, expire);

			//Als het maximaal toegestaande bookmarks wordt overschreden verwijder dan de 
			//eerst toegevoegde bookmark
			if (bookmarks.length > maxpages) {
				DeleteBookmark(cookiename, bookmarks[0].split('~')[0], separator);
			}
		}
  }
}

function DeleteBookmark(cookiename, url, separator) {
  var expire = 31536000000;
  var newcookievalue = "";
  var bookmarkurl = "";
  var cookievalue = getCookie(cookiename);
  var bookmarkdeleted = false;
    
  if (cookievalue != null) {   
    var bookmarks = cookievalue.split(separator);
    //loop door alle bookmarks heen
    for (i=0; i < bookmarks.length; i++) {
       
        //Bookmark url en titel zijn gescheiden door een tilde
    	bookmarkurl = bookmarks[i].split("~");
    	   	
    	if (bookmarkurl[0] != null && escape(bookmarkurl[0]) != url) {
        //Deze bookmark hoeft niet te worden verwijderd voeg hem dus weer toe
        	if (bookmarkurl[0] != null && bookmarkurl[0] != "") {
			//Voeg de oude token toe aan de nieuwe string
			newcookievalue += escape(bookmarkurl[0]) + "~" + escape(bookmarkurl[1]);
		}
	    	if (!(bookmarks[i].indexOf(separator) == bookmarks[i].length-1)) {
	    		newcookievalue += separator;
	    	}
	} 
	else {
	     //onthoud dat er een bookmark is verwijderd
		    bookmarkdeleted = true;
	}
    }  	
    //Als er geen tilde in de cookievalue staat is er iets mis en moeten er geen bookmarks
    //in de cookie worden gezet.
    if (newcookievalue.indexOf("~") == -1) {
  	newcookievalue = "";
    }

    setCookie2(cookiename, newcookievalue, expire);
	
    //Refresh de pagina nadat een bookmark is verwijderd
    if (bookmarkdeleted) {
	window.location.reload();
    }
  }
}