「階層化されたページのそれぞれのアクセス日を配列にする?」久々の書き込みのはずが・・・

仕事が立て続けに、そして切れることもなく、ただただ息切れするは俺だけ。
明後日の仕事の峠を越えれば、一安心。


ふと、教えてgooの質問に答えようとしていたら、質問を消されていた。
cookie を利用したアクセス日の配列化(?)
文字数の制限もあるだろうし、何かしら対策が必要なのだろう。

<!DOCTYPE html>
<titel>Cookie を利用して、階層化されたページのアクセス日を記録する</titel>
<body>

<script>
function setCookie (doc, name, value, expires, path, domain, secure) {
  if (3 > arguments.length)
    throw new Error;
  
  var cookie = [ encodeURIComponent (name) + '=' + encodeURIComponent (value) ];
  
  if (expires)
      cookie[cookie.length] = 'expires=' + new Date (expires).toUTCString ();
  
  if (path)
      cookie[cookie.length] = 'path=' + encodeURI (path);

  if (domain)
      cookie[cookie.length] = 'domain=' + encodeURI (domain);

  if (secure)
      cookie.push ('secure');

 doc.cookie = cookie.join ('; ');
}


function getCookie (doc, name) {
  if (2 > arguments.length)
    throw new Error;

  var n = encodeURIComponent (name).replace (/\W/g, '\\$&');
  var v = doc.cookie.match (new RegExp (n + '\\s*=\\s*(.*?)(?:[;,\\s]|$)'));

  return (v) ? decodeURIComponent (v[1]): '';
}


function toObj (str, sep) {
  var result = {};
  var ary = str.split (sep || ',');
  var i, nv, name;
  
  for (i = 0; nv = ary[i++]; )
    if ((nv = nv.split (':'), name = nv[0]))
      result[name] = nv[1] || '';
  
  return result;
}


function toStr (obj, sep) {
  var i, result = [];

  for (i in obj)
    if (obj.hasOwnProperty (i))
      result[result.length] = i + ':' + obj[i];

  return result.join (sep || ',');
}


function toDate (date) {
  return [
    date.getFullYear (),
    date.getMonth () + 1,
    date.getDate (),
    date.getSeconds ()
  ].join ('/');
}

//_________________________

var save = 60;//sec
var valueName = 'visit';
var pathBase = '/hoge/';//ここにルート
var key = location.pathname.substring (pathBase.length) || 'root';

var separater = '|';
var data = toObj (getCookie (document, valueName));
var now = new Date;

var today = toDate (now);
var dd = (now.setSeconds (now.getSeconds () + save), now).toGMTString ();
var tmp, buf = [];


(tmp = data[key])
? buf = tmp.split (separater)
: buf[0] = today;

buf[1] = today;

data[key] = buf.join (separater);
setCookie (document, valueName, toStr (data), dd, pathBase, location.host);


alert(toStr(data, '\n'));
</script>

<p><a href="./a/">a</a></p>