var clientDelimiter = '%%';
var escapedEqual = '##';
var allClientCookie = 'allFreshClient';
var stale = 'stale';
var fresh = 'fresh';
var lockCookie = 'lockFresh';
function syncKeepFresh(timeStampCookie, freshnessCookie, freshnessFormCookie,
scriptTimeStamp, currentForm, refreshURL)
{
var lock = getCookie(lockCookie);
if (lock == null || lock == 'free' || lock == timeStampCookie)
{
lock = getCookie(lockCookie);
if (lock == null || lock == 'free' || lock == timeStampCookie)
{
document.cookie = lockCookie + '=' + timeStampCookie + '; path=/';
internalKeepFresh(timeStampCookie, freshnessCookie, freshnessFormCookie,
scriptTimeStamp, currentForm, refreshURL);
document.cookie = lockCookie + '=free; path=/';
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
function internalKeepFresh(timeStampCookie, freshnessCookie, freshnessFormCookie,
scriptTimeStamp, currentForm, refreshURL)
{
var cookietimeStamp = 0;
var strTimeStamp = getClientCookie(timeStampCookie);
if (strTimeStamp != null)
{
cookietimeStamp = Number(strTimeStamp);
}
if (scriptTimeStamp >= cookietimeStamp)
{
cookietimeStamp = scriptTimeStamp + 1;
setClientCookie(timeStampCookie, cookietimeStamp);
setClientCookie(freshnessCookie, fresh);
setClientCookie(freshnessFormCookie, currentForm);
}
var freshnessFlag = getClientCookie(freshnessCookie);
var freshnessForm = getClientCookie(freshnessFormCookie);
setClientCookie(freshnessCookie, stale);
if (freshnessFlag != null && freshnessFlag == stale)
{
if (freshnessForm != null && currentForm == freshnessForm)
{
if (refreshURL.charAt(0) == '/')
{
refreshUrl = addBrowserIdToURL(refreshURL);
window.location = refreshURL;
}
else
{
eval(refreshURL + "()");
}
}
}
}
function setClientCookie(cookieName, value)
{
var newValue = clientDelimiter + cookieName + escapedEqual + value;
var allClient = getCookie(allClientCookie);
if (allClient != null)
{
var startPos = allClient.indexOf(clientDelimiter + cookieName + escapedEqual);
if (startPos == -1)
{
newValue = allClient + newValue;
}
else
{
var firstSubString, secondSubString;
var endPos = allClient.indexOf(clientDelimiter, startPos + clientDelimiter.length);
if (startPos == 0)
{
firstSubString = '';
}
else
{
firstSubString = allClient.substring(0, startPos);
}
if (endPos == -1)
{
secondSubString = '';
}
else
{
secondSubString = allClient.substring(endPos, allClient.length);
}
newValue = firstSubString + newValue + secondSubString;
}
}
document.cookie = allClientCookie + '=' + newValue + '; path=/';
}
function getClientCookie(cookieName)
{
var allClient = getCookie(allClientCookie);
if (allClient == null)
{
return null;
}
else
{
var pos = allClient.indexOf(clientDelimiter + cookieName + escapedEqual);
if (pos == -1)
{
return null;
}
else
{
var start = pos + clientDelimiter.length + cookieName.length + escapedEqual.length;
var end = allClient.indexOf(clientDelimiter, start);
if (end == -1)
{
end = allClient.length;
}
return allClient.substring(start, end);
}
}
}
