LSAPI.AFPPlugin.helpCenterPlugin = function()
{var registeredApplications = null;var tmpRegisteredApplications = null;var helpIdsRepository = null;var HELP_COMPONENT_URL = null;var refreshCBFunction;var isHelpCenterOpen = false;
var openHelpRequested = "false";var isRefresh = "false";
var init = function()
{if (typeof(LSAPI.AFPPlugin.controller) !== undefined && LSAPI.AFPPlugin.controller)
{LSAPI.AFPPlugin.controller.registerOnPreNavigate(clearHelpCenter);}
EPCM.subscribeEvent("urn:com.sapportals:navigation", "HelpPanelClose", onHelpCenterClose);};
var clearHelpCenter = function()
{removeAllHelpIDs();
registeredApplications = null;tmpRegisteredApplications = null;isRefresh = "false";if (isHelpCenterOpen)
{EPCM.raiseEvent("urn:com.sapportals:navigation", "HelpPanelClose");}
};
var addHelpID= function(applicationName, helpId)
{
if ((applicationName !== null) && (helpId !== null))
{
if (helpIdsRepository != null)
{helpIdsRepository[applicationName] = helpId;}
else
{helpIdsRepository = [];helpIdsRepository[applicationName] = helpId;}
if (registeredApplications !== null)
{if (registeredApplications[applicationName])
{delete registeredApplications[applicationName];if(registeredApplications.length == 0)
{registeredApplications = null;}
}
}
if(openHelpRequested == "true")
{openHelpCenter();}
if(isRefresh == "true")
{getAllHelpIDs();}
}
};
var removeHelpID = function(applicationName)
{
if ( (helpIdsRepository !== null) && (applicationName !== null) )
{if (helpIdsRepository[applicationName])
{delete helpIdsRepository[applicationName];}
}
};
var removeAllHelpIDs = function()
{for (key in helpIdsRepository)
{delete helpIdsRepository[key];}
};
var getAllHelpIDs = function(CBfunction)
{
if (isRefresh == "false")
{refreshCBFunction = CBfunction;isRefresh = "true";
backupRegistered();
triggerCallbacks();}
if (registeredApplications == null)
{var responseString = createResponseString();
isRefresh = "false";
registeredApplications = tmpRegisteredApplications;tmpRegisteredApplications = null;
refreshCBFunction(responseString);
}
};
var registerGetHelpIDCallback = function(applicationName, functionName)
{if ( (applicationName !== null) && (functionName !== null) )
{
if(registeredApplications !== null)
{registeredApplications[applicationName] = functionName;}
else
{registeredApplications = [];registeredApplications[applicationName] = functionName;}
}
};
var	unregisterGetHelpIDCallback = function(applicationName, functionName)
{if ( (applicationName !== null) && (functionName !== null) )
{
if (registeredApplications !== null)
{if (registeredApplications[applicationName])
{delete registeredApplications[applicationName];if(registeredApplications.length == 0)
{registeredApplications = null;}
}
}
}
};
var	openHelpCenter = function()
{
if (openHelpRequested == "false")
{
backupRegistered();
triggerCallbacks();openHelpRequested = "true";}
if (registeredApplications == null)
{if (EPCM.isSubscribed("urn:com.sapportals:navigation", "HelpCenterSubmitForm"))
{var navEvent = {};EPCM.raiseEvent("urn:com.sapportals:navigation", "HelpCenterSubmitForm", navEvent);}
else
{var helpPanelIframe = document.getElementById("helpPanelContent");if (helpPanelIframe !== null)
{var form = $(helpComponentFrameForm);if (form !== null)
{var helpCenterURL = helpCenterComponentURL;if (helpCenterURL != null)
{form.action = helpCenterURL;
form.applicationHelpLinks.value = createResponseString();form.submit();}
}
}
}
EPCM.raiseEvent("urn:com.sapportals:navigation", "HelpPanelOpen");isHelpCenterOpen = true;openHelpRequested = "false";
registeredApplications = tmpRegisteredApplications;tmpRegisteredApplications = null;}
};
var triggerCallbacks = function()
{for (key in registeredApplications)
{var callback = registeredApplications[key];callback();}
};
var backupRegistered = function()
{tmpRegisteredApplications = [];for(key in registeredApplications)
{tmpRegisteredApplications[key] = registeredApplications[key];}
};
var createResponseString = function()
{var responseString = "";var userName = userUniqueName;
if(userName != null)
{responseString += "USER";responseString += "=";responseString += userName;responseString += "===";}
if (helpIdsRepository !== null)
{
for (key in helpIdsRepository)
{responseString += helpIdsRepository[key];responseString += "===";}
}
return escape(responseString.substring(0,responseString.length -3));};
var onHelpCenterClose = function(event)
{isHelpCenterOpen = false;}
return {openHelpCenter : openHelpCenter,addHelpID : addHelpID,removeHelpID : removeHelpID,removeAllHelpIDs : removeAllHelpIDs,getAllHelpIDs : getAllHelpIDs,registerGetHelpIDCallback : registerGetHelpIDCallback,unregisterGetHelpIDCallback	: unregisterGetHelpIDCallback,openHelpCenter : openHelpCenter,
_private:{init: init,clearHelpCenter: clearHelpCenter,createResponseString:	createResponseString
}
}
}();LSAPI.AFPPlugin.helpCenterPlugin._private.init();