var DELIMITER = "||delabch||";
var PREFIX_RECENTPAGES = "recPages_"

function createCookie(name,value,days, path) {
    var expires = "";
    if (days) {
	var date = new Date();
	date.setTime(date.getTime()+(days*24*60*60*1000));
	expires = "; expires="+date.toGMTString();
    }    
    document.cookie = name+"="+getSerializableDateString(date.toGMTString())+ DELIMITER + value+expires+"; path="+((path)?path:"/");
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split('; ');
    for(var i=0;i < ca.length;i++) {
	var c = ca[i];
	while (c.charAt(0)==' ') c = c.substring(1,c.length);
	if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length,c.length));
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

//create simple cookie
function setSimpleCookie(name, value) {
	var expires = "";
	var date = new Date();
	date.setTime(date.getTime()+(7*24*60*60*1000));
	expires = "; expires="+date.toGMTString();
 
	document.cookie = name+"="+ value+expires+"; path=/";
}

//related links specific functions

//strips comma after day-indication
//needed because java trips over comma's in cookie values
function getSerializableDateString(strGMTDate) { 
    var result = strGMTDate.substring(0,3);
    result += strGMTDate.substring(4);
    return result;
}

String.prototype.startsWith = function(sStart) {
    if (sStart != null) return (this.substring(0,sStart.length)==sStart);
    else return 0;
}


String.prototype.endsWith = function(sEnd) {
    if (sEnd != null) return (this.substr(this.length - sEnd.length)==sEnd);
    else return 0;
}

function getDateFromValue(cookie) {
	if (cookie.split('=')[1] == null) return 0;
	else 
		return new Date(cookie.split('=')[1].split(DELIMITER)[0]);
}

function getLinkFromValue(cookie) {
    return cookie.split(DELIMITER)[1];
}

function sortByDate(cookie1,cookie2) {  
    var date1 = getDateFromValue(cookie1);
    var date2 = getDateFromValue(cookie2);

    return date1>date2?1:date1<date2?-1:0;
}


function readRecentPagesCookies() {
    var ca = document.cookie.split('; ');
    ca = ca.sort(sortByDate).reverse();
    for(var i=0; i<ca.length; i++) { //for each cookie
        if (ca[i].split('=')[0].startsWith(PREFIX_RECENTPAGES) == 0) { //check whether cookie is a recentpage cookie
            ca.splice(i,1); //if not => remove from array
	    i--;
        } else { //if cookie is recent page cookie => fetch link
            ca[i] = getLinkFromValue(ca[i]); 
        }
    }
    return ca;	
}

function createRecentPagesCookie(name,value,days, path) {
    createCookie(PREFIX_RECENTPAGES+name,'<a href="'+ document.location +'">'+ value +'</a>',days, path);
}

function eraseRecentPagesCookie(name) {
    createRecentPagesCookie(name,"",-1);
}