var loggingOff = false; // Flag to block actions while logging out
var JSESSIONID = getCookie("JSESSIONID");
var URLPROTOCOL = "https://";
var FSCOOKIEPATH = "/";
var FSCOOKIESECURE = "";
var ACTIVE = "ACTIVE";
var LOGOFF = "LOGOFF";
var INACTIVE = "INACTIVE";
var INTRAN = "INTRAN";
var refreshUrl = "/portal/portal_refresh.jsp";
var unloadUrl = "/portal/portal_unload.jsp";
var FSREMSTRUC = "|NONE|FRIEND";
var _FS_PORTAL_ = "_FS_PORTAL_";
var TN = "TN"
var killswitchtimer = 0;
var bkillswitchtimerid = false
var timerid = 0;
var btimerid = false;
var img = new Image();
var loopnumber = 0;
var bportaltimer = false;
var blockclicks = false;
var blockmessage;
var portalUnload=false;
function SetCookie (name,value,expires,path,domain,secure) {
document.cookie = name + "=" + unescape (value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
function setCookie (name,value,expires,path,domain,secure) {
document.cookie = name + "=" + unescape (value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
function getCookie(name){
var dc;
var allCookies;
var aCookie;
var i;
dc = unescape(document.cookie);
allCookies = dc.split("; ");
for (i = 0; i < allCookies.length; i++){
aCookie = allCookies[i].split("=");
if (name == aCookie[0])
return aCookie[1];
}
return "";
}
function deletecookie (name,path,domain)
{
path = (path?path:FSCOOKIEPATH);
domain = (domain?domain:FSSHAREDDOMAIN);
var expdate = new Date();
expdate.setYear(1985);
document.cookie = name + "=" +
"; expires=" + expdate.toGMTString() +
"; path=" + path +
"; domain=" + domain;
}
function getallfscookies(FSCookies){
var dcookie;
var acookie;
var allcookies;
var splitvalue;
var i;
dcookie = unescape(document.cookie);
allcookies = dcookie.split("; ");
for (i=0; i < allcookies.length; i++){
acookie = allcookies[i].split("=");
if ("_FS_" == acookie[0].substr(0,4)){
splitvalue = acookie[1].split("|");
FSCookies[acookie[0]] = splitvalue[0];
}
}
}
function deleteallfscookies(){
var dcookie;
var acookie;
var allcookies;
var splitvalue;
var i;
dcookie = unescape(document.cookie);
allcookies = dcookie.split("; ");
for (i=0; i < allcookies.length; i++){
acookie = allcookies[i].split("=");
if ("_FS_" == acookie[0].substr(0,4)){
deletecookie(acookie[0]);
}}}
function getFSCookieValue(FSCookies, name){
return FSCookies[name];
}
function processclick(action, sname)
{
if( loggingOff ){
return false;
}
var state = anyrunning(LOGOFF);
if ( state != "false" ) return false;
state = anyrunning("CLOGOFF");
if ( state != "false" ) return false;

switch (action)
{
case "i" :
return checkconfirmintran();
break;

case "s" :
var state = getservicestate(sname);
if ( state != true )
{
alert(state);
return false;
}
return checkconfirmintran();
break;
case "a" :
var sname = getservicename(0);
var intran = checkconfirmintran();
if ( intran == false ) return false;
var fsstate = anyrunning(ACTIVE);
if ( fsstate != "false" )
{
if ( fsstate != sname )
{
setfscookie("_FS_" + fsstate + "_",INACTIVE);
img.src = refreshUrl;
}}
if ( isrunning(sname) )
{
setfscookie("_FS_" + sname + "_", ACTIVE);
}
break;
default :
break;
}
return true;
}
function anyrunning(state)
{
var fsCookies;
var i;
if ( state == "" ) state = "NOTLOGOFF";
fsCookies = getfedservicestates();
for (i in fsCookies)
{
switch(state)
{
case "LOGOFF" :
if (fsCookies[i].substr(0, 6) == LOGOFF)
{
return "true";
}
break;
case "NOTLOGOFF" :
if (fsCookies[i].substr(0, 6) != LOGOFF)
{
return "true";
}
break;
case "INTRAN" :
if (fsCookies[i].substr(0, 6) == INTRAN)
{
return i;
}
break;
case "ACTIVE" :
if (fsCookies[i].substr(0, 6) == ACTIVE)
{
return i;
}
break;
case "CLOGOFF" :
if (fsCookies[i].substr(0, 6) == "CLOGOFF")
{
return "true";
}
break;
default :
return "false";
}
}
return "false";
}
function setblockclicksflag(flag){
blockclicks = flag;
}
function setblockmessage(message){
blockmessage = message;
}
function checkconfirmintran()
{
if (blockclicks){
alert(blockmessage);
return false;
}
var state = anyrunning(INTRAN);
if ( state != "false")
{
var msg = getservicemsg(state);
if ( msg == "" ) return true;
if ( confirm(msg) )
{
setfscookie("_FS_" + state + "_",ACTIVE);
return true;
}
else
{
return false;
}
}
return true;
}
function getservicestate(sid)
{
return true;
}
function getfedservicestates()
{
var dc;
var allCookies;
var aCookie;
var fsCookies = new Array();
var fsCookiesCount = 0;;
var i;
var cname;
dc = unescape(document.cookie);
allCookies = dc.split("; ");
fsCookies = new Array();
for (i = 0;i < allCookies.length; i++)
{
aCookie = allCookies[i].split("=");
if ("_FS_" == aCookie[0].substr(0,4))
{
cname = aCookie[0].substr(4, aCookie[0].length - 5);
fsCookies[cname] = aCookie[1];
fsCookiesCount++;
}
}
fsCookies.length = fsCookiesCount;
return fsCookies;
}
function killswitch()
{
var FSCookies;
FSCookies = new Array();
getallfscookies(FSCookies);
var FSState = "";
var FSState = getfscookie(FSCookies, _FS_PORTAL_);
if ( FSState == "" || FSState == LOGOFF || FSState=="CLOGOFF")
{
if( (FSState == "" || FSState == "CLOGOFF") && loggingOff==false){
alert(LOGOFF_MESSAGE);
}
// set the flag to block links during log-off process
loggingOff = true;
if (anyotherfscookiesexist(FSCookies))
{
setallfscookies(LOGOFF);
loopnumber++;
if ( loopnumber > MAXLOOP )
{
deletefscookie(_FS_PORTAL_);
if (btimerid) { clearTimeout(timerid); btimerid = false; }
delete FSCookies;
dosignoff();
return;
}}
else
{
deletefscookie(_FS_PORTAL_);
if (btimerid) { clearTimeout(timerid); btimerid = false; }
delete FSCookies;
dosignoff();
return;
}}
var myJSESSIONID = getCookie("JSESSIONID");
if( myJSESSIONID != JSESSIONID ){
alert(JSESSIONIDMismatchMessage);
dosignoff();
return;
}
window.setTimeout('killswitch()', KSFREQ*1000);
delete FSCookies;
}
function getfscookie(FSCookies, name)
{
return ((FSCookies[name])? FSCookies[name] : "");
}
function anyotherfscookiesexist(FSCookies)
{
var i;
for (i in FSCookies)
{
if (i != _FS_PORTAL_)
return true;
}
return false;
}
function deletefscookie(name)
{
document.cookie = name + "=; domain=" +
FSSHAREDDOMAIN + "; path=" +
FSCOOKIEPATH + "; expires=Thu, 01-Jan-1970 00:00:01 GMT";
}
function getmoretime()
{
var FSCookies;
var bExtendSession;
var expires;
var i;
var localdom;
var Begin = new Date();
var FSCookies = new Array();
getallfscookies(FSCookies);
if (anyotherfscookiesexist(FSCookies))
{
if ( (anycookieinstate(FSCookies, ACTIVE) || anycookieinstate(FSCookies, INTRAN)))
{
setfscookie(_FS_PORTAL_, INACTIVE);
img.src = refreshUrl;
clrsettimeout();
}
else
{
var portalState = getfscookie(FSCookies, _FS_PORTAL_)
if ( !(portalState == LOGOFF || portalState == "CLOGOFF") )
{
var bchoice = false;
self.focus();
bchoice = confirm(MSGTIMEOUT)
if ( ( gettimediff(Begin) < ( (FSIDLETIMEGRACE*1000) - 5000) ) && bchoice)
{
setfscookie(_FS_PORTAL_, ACTIVE);
img.src = refreshUrl;
clrsettimeout();
}
else
{
setallfscookies(LOGOFF);
}}}}
else
{
if (getfscookie(FSCookies, _FS_PORTAL_) != LOGOFF)
{
var bchoice = false;
self.focus();
bchoice = confirm(MSGTIMEOUT);
if ( ( gettimediff(Begin) < ( (FSIDLETIMEGRACE*1000) - 5000) ) && bchoice)
{
setfscookie(_FS_PORTAL_, ACTIVE);
img.src = "/portal/portal_refresh.jsp";
clrsettimeout();
}
else
{
setallfscookies(LOGOFF);
}}}
delete FSCookies;
}
function setallfscookies(state)
{
var dcookie;
var acookie;
var allcookies;
var splitvalue;
var newvalue;
var i;
var tmpstr;
dcookie = unescape(document.cookie);
allcookies = dcookie.split("; ");
for (i=0; i<allcookies.length; i++)
{
acookie = allcookies[i].split("=");
if ("_FS_" == acookie[0].substr(0,4))
{
tmpstr = acookie[1];
if (tmpstr.indexOf("|")  >= 0)
{
splitvalue = acookie[1].split("|");
newvalue = state + "|" + splitvalue[1] + "|" + splitvalue[2];
setfscookie(acookie[0], newvalue);
}
else
{
setfscookie(acookie[0], state);
}}}}
function gettimediff(begin)
{
var end = new Date();
return end.getTime() - begin.getTime();
}
function setfscookie (name, value)
{
var exp = new Date();
exp.setTime(exp.getTime() + (1000 * (FSIDLETIMEINTERVAL + FSIDLETIMEGRACE)));
var splitval = value.split("|");
state = splitval[0];
func = splitval[1];
if (func)
{}
else
{
var originalvalue = getCookie(name);
if(originalvalue){
value = value + originalvalue.substring(originalvalue.indexOf("|"));
}
else {
value  = value + FSREMSTRUC;
}
}
setCookie(name, value, exp, FSCOOKIEPATH, FSSHAREDDOMAIN, FSCOOKIESECURE);
}
function clrsettimeout()
{
if (btimerid) { clearTimeout(timerid); btimerid = false; }
//begin a new one now
timerid = setTimeout('getmoretime()', (FSIDLETIMEINTERVAL)*1000);
btimerid = true;
}
function setFsPortalCookietoActive(){
var FSCookies;
FSCookies = new Array();
getallfscookies(FSCookies);
var FSState = "";
var FSState = getfscookie(FSCookies, _FS_PORTAL_);
if (!( FSState == "" || FSState == LOGOFF || FSState == "CLOGOFF") ){
setallfscookies(INACTIVE);
setfscookie(_FS_PORTAL_,ACTIVE);
}}
function logoffall()
{
if (processclick("i","PORTAL")){
setSignoffCookie();
// set everyone to logoff
var fsCookies;
var service;
fsCookies = getfedservicestates();
for (service in fsCookies)
{
setfscookie("_FS_" + service + "_", "LOGOFF");
}}}
function setSignoffCookie(){
var signoffCookie = getCookie("IPTSignoff");
if (!signoffCookie)
signoffCookie = "";
if (signoffCookie.indexOf(signonName)==-1){
signoffCookie += (signonName + "|");
}
signoffCookie = escape(signoffCookie);
setCookie("IPTSignoff", signoffCookie, "", "/", document.domain, "");
}
function dosignoff(){
if (btimerid){
clearTimeout(timerid);
btimerid = false;
}
setSignoffCookie();
deleteallfscookies()
bportaltimer = false;
if (window.opener){
if (window.opener.closed)
window.location.href="signout.jsp";
else
loadWork("signout.jsp");
}
else
loadWork("signout.jsp");
}
function anyotherfscookiesexist(FSCookies)
{
var i;
for (i in FSCookies)
{
if (i != "_FS_PORTAL_")
return true;
}
return false;
}
function setfriendfscookies(state)
{
var dcookie;
var acookie;
var allcookies;
var splitvalue;
var newvalue;
var i;
var tmpstr;
dcookie = unescape(document.cookie);
allcookies = dcookie.split("; ");
for (i=0; i<allcookies.length; i++)
{
acookie = allcookies[i].split("=");
if ("_FS_" == acookie[0].substr(0,4) && acookie[0].indexOf("_PORTAL_") == -1)
{
tmpstr = acookie[1];
if (tmpstr.indexOf("FRIEND") != -1)
{
if (tmpstr.indexOf("|")  >= 0)
{
splitvalue = acookie[1].split("|");
newvalue = state + "|" + splitvalue[1] + "|" + splitvalue[2];
setfscookie(acookie[0], newvalue);
}
else
{
setfscookie(acookie[0], state);
}}}}}
function resetportaltimer()
{
if (bportaltimer)
{
clrsettimeout();
}}
function anycookieinstate(FSCookies,state)
{
var i;
for (i in FSCookies)
{
if (i != _FS_PORTAL_){
if (FSCookies[i] == state){
return true;
}}}return false;}