/*
 * $Id: cookie.js,v 1.2 2009/09/16 17:16:40 aqn Exp $
 *
 * General cookie-related utility functions.
 */

function createCookie(name,value,days)
{
    if (days) {
	var date = new Date();
	date.setTime(date.getTime()+(days*24*60*60*1000));
	var expires = ";expires="+date.toGMTString();
    }
    else var expires = "";
    var cs = name+"="+escape(value)+expires+";path=/";
    document.cookie = cs;
    if (debug & DBG_SHOW_COOKIES) alert("cookies <"+ cs + ">");
}


/**
 * Read and return all cookies with name matching the specified regular expression.
 *
 * @param name_regexp
 *
 * @return an array of cookie whose name matches the specified regular expression
 */
function fetchAllCookieNames(name_regexp)
{
    var names = new Array();
    if (debug & DBG_SHOW_COOKIES) {
	var cs = document.cookie;
	alert("fetchAllCookieNames: name_regexp /" + name_regexp + "/;  cookies <" + cs + ">");
    }

    var all_cookies = document.cookie.split(';');
    for(var i = 0;  i < all_cookies.length;  i++) {
	// Each cookie is of form "name=value".
	var name_value = all_cookies[i].split('=');
	var name = name_value[0];
	name = name.replace(/^\s+|\s+$/g, "");
	if (name.match(name_regexp)) {
	    names[names.length] = name;
	}
    }
    return names;
}


function readCookie(name)
{
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    if (debug & DBG_SHOW_COOKIES) {
	var cs = document.cookie;
	alert("readCookie(): read <" + name + ">;  cookies <" + cs + ">");
    }
    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 c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name)
{
  createCookie(name, "", -1);
}
