1.cookieがsetされていればreturn user, setされていなければnew user
2.new userの場合、document.referrerで、リファラーを取得
3.cookieがsetされていれば、sessionのlocation.pathnameでリファラーを取得
4.cookieがsetされていれば、sessionのunixtimeの差でページ滞在時間を取得
var unix = Math.floor((new Date()).getTime()/1E3);
var data = '{"path":"'+location.pathname+'", "time":"'+unix+'"}';
var visit = "new user<br>";
if(navigator.cookieEnabled)
{
var all=document.cookie + ";";
var cStart = all.indexOf("_na=",0);
if(cStart == -1){
var char = "abcdefghijklmnopqrstuvwxyz123456789";
var id = "";
for(var i=0; i<10; i++){
id += char[Math.floor(Math.random()*35)];
}
document.cookie="_na=NA1."+id+"."+unix+";";
window.sessionStorage.setItem(['ScribeTransport'],[data]);
document.write(visit);
document.write("リファラー" + document.referrer + "<br>");
} else {
visit = "returned user<br>";
document.write(visit);
var a = window.sessionStorage.getItem(['ScribeTransport']);
b = JSON.parse(a);
var unix = Math.floor((new Date()).getTime()/1E3);
document.write("リファラー" + b.path + "<br>");
document.write("滞在時間" +(unix - b.time)+ "秒");
window.sessionStorage.setItem(['ScribeTransport'],[data]);
}
}else{
window.sessionStorage.setItem(['ScribeTransport'],[data]);
}

あれ、待てよ、cookieがsetされていても、sessionがsetされていないパターンもあるな。
if(a)と書き換えます。cookieのexpireは1000*3600*24*365*2(730日)とします。
var unix = Math.floor((new Date).getTime()/1E3);
var visit = "new user<br>";
if(navigator.cookieEnabled){
var all=document.cookie + ";";
var cStart = all.indexOf("_na=",0);
if(cStart == -1){
var char = "abcdefghijklmnopqrstuvwxyz123456789";
var id = "";
for(var i=0; i<10; i++){
id += char[Math.floor(Math.random()*35)];
}
var expire = new Date();
expire.setTime(expire.getTime() + 1000*3600*24*365*2);
document.cookie="_na=NA1."+id+"."+unix+";expires=" + expire.toUTCString();
document.write(visit);
document.write("リファラー" + document.referrer + "<br>");
} else {
visit = "returned user<br>";
document.write(visit);
var a = window.sessionStorage.getItem(['ScribeTransport']);
if(a){
b = JSON.parse(a);
document.write("リファラー" + b.path + "<br>");
document.write("滞在時間" +(unix - b.time)+ "秒");
}
}
}
var data = '{"path":"'+location.pathname+'", "time":"'+unix+'"}';
window.sessionStorage.setItem(['ScribeTransport'],[data]);


次は、このnew user・return user, リファラー, 滞在時間のデータを、サーバー側(ここではdoubleclick.php)に渡すところですね。