//********************************************************************/
// 1. getCookie( ck_name )                                           //
// 2. getCookieItem( ck_name, key_name )                             //
// 3. setCookie( ck_name, value )                                    //
// 4. setCookieItem( ck_name, key_name, key_value )                  //
// 5. delCookie( ck_name )                                           //
//-------------------------------------------------------------------//
// 10/21/04 howie@bunk1.com                                          //
//********************************************************************/
function getCookie (name) {  
	var arg = name + "=";  
	var alen = arg.length;  
	var clen = document.cookie.length;  
	var i = 0;  
	while (i < clen) {    
		var j = i + alen;    
		if (document.cookie.substring(i, j)==arg)      
			return getCookieVal (j);    
		i = document.cookie.indexOf(" ", i) + 1;    
		if (i == 0) break;   
	}  
	return null;
}
function getCookieItem( cname, kname) {
	var str = getCookie( cname );
	var arg = kname + "=";
	var alen = arg.length;
	var clen;
	if (str!=null) 
		clen = str.length;
	else
		return null;
	var i = str.indexOf(arg);
	if (i>=0) {
		var j = str.indexOf("&", i+alen)
		if (j==-1) j = clen;
		return unescape(str.substring(i+alen, j));
	}
	return null;
}
function getCookieItemValue( cookie, item ) {
	return getCookieItem(cookie. item );
}
// setCookie in the form of (name, value, expires, path, domain, secure)
function setCookie (name, value) {  
	var argv = setCookie.arguments;  
	var argc = setCookie.arguments.length;  
	var expires = (argc>2) ? argv[2] : null;  
	var path = (argc>3) ? argv[3] : null;  
	var domain = (argc>4) ? argv[4] : null;  
	var secure = (argc>5) ? argv[5] : false;  
	document.cookie = 
		name + "=" + value + 
		((expires==null) ? "" : ("; expires=" + expDays(expires).toGMTString())) + 
		((path==null) ? "" : ("; path=" + path)) +  
		((domain==null) ? "" : ("; domain=" + domain)) +    
		((secure==true) ? "; secure" : "");
}
// setCookieItem 
function setCookieItem (cname, kname, value) {  
	var argv = setCookieItem.arguments;  
	var argc = setCookieItem.arguments.length;  
	var expires = (argc>3) ? argv[3] : null;  
	var path = (argc>4) ? argv[4] : null;  
	var domain = (argc>5) ? argv[5] : null;  
	var secure = (argc>6) ? argv[6] : false;
	value = kname + "=" + value;
	// get cookie for <cname>
	var c_str = getCookie(cname);
	var k_str = getCookieItem(cname, kname);
	var val;
	if (c_str==null) {
		setCookie( cname, value, expires, path, domain, secure );
		return;
	}
	if (k_str==null)
		val = c_str + "&" + value;
	else
		// BUG: must begin with kname+"=", like treestatus=
		val = c_str.replace(kname+"="+k_str, value);
	//	
	delCookie( cname );
	setCookie( cname, val, expires, path, domain, secure );
}
function delCookie (name) {  
	var d = new Date();  
	d.setTime (d.getTime() - 10000);   
	var cval = getCookie (name);  
	document.cookie = name + "=" + cval + "; expires=" + d.toGMTString();
}
// helper functions
function expDays( howManyDays ) {
	var d = new Date;
	d.setTime( d.getTime() + howManyDays*24*60*60*1000 );
	return d;
}
function getCookieVal (offset) {  
	var endstr = document.cookie.indexOf (";", offset);  
	if (endstr==-1)    
		endstr = document.cookie.length;  
	return unescape(document.cookie.substring(offset, endstr));
}