home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2003 November
/
Chip_2003-11_cd2.bin
/
nav2004
/
download
/
NAV
/
External
/
NORTON
/
APP
/
NAVComUI.dll
/
HTML
/
REPAIRWIZARD.JS
< prev
next >
Wrap
Text File
|
2003-08-17
|
24KB
|
812 lines
var CommonUI;
var REPAIR_PAGE = 1;
var QUARANTINE_PAGE = 2;
var DELETE_PAGE = 3;
var THREAT_EXCLUDE_PAGE = 4;
var CurrentPage;
var iTotalInfection;
var MainFrame = window.parent;
var RoadmapFrame = window.parent.frames("contents");
var RepairBackground;
var QuarantineBackground;
var DeleteBackground;
var TimerID = null;
var ShowRepairProgress = true;
var bAttemptedThreatDelete = false;
function OnLoad()
{
// Get the CommonUI object from the dialog parameter
CommonUI = window.external.ObjectArg;
ShowRepairProgress = CommonUI.RepairProgress;
AxListCtrl.RepairProgress = ShowRepairProgress;
// Initialize the ListViewCtrl
AxListCtrl.ScanResults = CommonUI.ScanResults;
// Set the current page to repair
CurrentPage = REPAIR_PAGE;
TimerID = setInterval("Initialize()", 1);
}
function OnUnload()
{
AxListCtrl.StopRepair = true;
}
function Initialize()
{
// Check if the Roadmap frame is loaded
if (MainFrame.g_bRoadmapLoaded != true)
return;
// Show the cancel button
RoadmapFrame.CancelButton_Cell.style.display = "";
RoadmapFrame.RepairWizardTitle(true);
// Get the total number of virus infection(s)
RoadmapFrame.g_nTotalItemInfected = AxListCtrl.TotalInfection;
// Get if threat categorization is enabled
RoadmapFrame.g_bThreatCatEnabled = CommonUI.ScanNonViralThreats;
// THREAT CATEGORIZATION
// Get the total number of threat(s) detected, deleted, Excluded
// If threat cat is off set all of these to 0
if( RoadmapFrame.g_bThreatCatEnabled == true )
{
RoadmapFrame.g_nTotalThreatsDetected = AxListCtrl.TotalThreats;
RoadmapFrame.g_nTotalThreatsDeleted = AxListCtrl.DeletedThreatCount;
RoadmapFrame.g_nTotalThreatsExcluded = AxListCtrl.ExcludedThreatCount;
RoadmapFrame.g_nRemainingThreats = RoadmapFrame.g_nTotalThreatsDetected - RoadmapFrame.g_nTotalThreatsDeleted - RoadmapFrame.g_nTotalThreatsExcluded;
}
else
{
RoadmapFrame.g_nTotalThreatsDetected = 0;
RoadmapFrame.g_nTotalThreatsDeleted = 0;
RoadmapFrame.g_nTotalThreatsExcluded = 0;
RoadmapFrame.g_nRemainingThreats = 0;
}
// Get the total number of repaired infection(s)
RoadmapFrame.g_nTotalItemRepaired = AxListCtrl.RepairedInfectionCount;
// Get the total number of repair deleted infection(s)
RoadmapFrame.g_nTotalItemRepairDeleted = AxListCtrl.RepairDeletedInfectionCount;
// Get the total number of quarantined infection(s)
RoadmapFrame.g_nTotalItemQuarantined = AxListCtrl.QuarantinedInfectionCount;
// Get the total number of deleted infection(s)
RoadmapFrame.g_nTotalItemDeleted = AxListCtrl.DeletedInfectionCount - RoadmapFrame.g_nTotalItemQuarantined;
// Get the total number of remaining infection(s)
RoadmapFrame.g_nRemainingInfection = RoadmapFrame.g_nTotalItemInfected - RoadmapFrame.g_nTotalItemRepaired - RoadmapFrame.g_nTotalItemQuarantined - RoadmapFrame.g_nTotalItemDeleted;
// Check if we need to set the email description fields
RoadmapFrame.g_bEmailScanning = CommonUI.EmailDescription;
if (RoadmapFrame.g_bEmailScanning == true)
{
// Inform the ListVeiwCtrl this is an email scan
AxListCtrl.EmailScanning = true;
// Show the email description fields
EmailText.style.display = "";
// Hide the Infection information field
InfectionText.style.display = "none";
// Update the infection count
EmailInfectionCount.innerHTML = RoadmapFrame.g_nTotalItemInfected;
// Update the subject info
RoadmapFrame.EmailSubject.innerText = RoadmapFrame.EmailSubject.innerText + CommonUI.EmailSubject;
// Update the sender info
RoadmapFrame.EmailSender.innerText = RoadmapFrame.EmailSender.innerText + CommonUI.EmailSender;
// Update the recipient info
RoadmapFrame.EmailRecipient.innerText = RoadmapFrame.EmailRecipient.innerText + CommonUI.EmailRecipient;
// If threat cat is enabled update the fields
if( RoadmapFrame.g_bThreatCatEnabled == true )
{
// Update the threat count
EmailNonViralThreatCount.innerHTML = RoadmapFrame.g_nTotalThreatsDetected;
// Show the email text
EmailThreatConjunction.style.display = "";
EmailNonViralThreatCount.style.display = "";
EmailNonViralThreatDescriptionExt.style.display = "";
}
}
else
{
// Update the infection count
InfectionCount.innerHTML = RoadmapFrame.g_nTotalItemInfected;
}
if( RoadmapFrame.g_bThreatCatEnabled == true )
bAttemptedThreatDelete = AxListCtrl.AttemptedThreatDelete;
// Check if we already attempted delete (and the deleted infections are not repair-deletes).
if (AxListCtrl.AttemptedDelete == true &&
((RoadmapFrame.g_nTotalItemDeleted != RoadmapFrame.g_nTotalItemRepairDeleted || RoadmapFrame.g_nTotalItemDeleted == 0) ||
(RoadmapFrame.g_nTotalItemDeleted == RoadmapFrame.g_nTotalItemInfected)))
{
// Go to Summary if we already attempted delete and there are no remaining threats
if( RoadmapFrame.g_nRemainingThreats == 0 )
GoToSummary();
// If there are remaining threats go to the next page
else if( bAttemptedThreatDelete == true )
{
DisplayRepair(false);
DisplayThreatExclude(true);
}
else // Go to the delete page to delete the remaining threats
{
DisplayRepair(false);
DisplayDelete(true);
}
}
else if (AxListCtrl.AttemptedRepair == true)
{
// If we repaired all the infection(s) and there are no remaing non-viral threat items, go to the Summary Page
if ((RoadmapFrame.g_nTotalItemRepaired + RoadmapFrame.g_nTotalItemRepairDeleted - CommonUI.MBRRepaired - CommonUI.BRRepaired) == (RoadmapFrame.g_nTotalItemInfected - CommonUI.MBRInfected - CommonUI.BRInfected))
{
if( RoadmapFrame.g_nRemainingThreats == 0 )
GoToSummary();
else if( bAttemptedThreatDelete == true ) //Already attempted delete: Go to the exclude page
{
DisplayRepair(false);
DisplayThreatExclude(true);
}
else // Go to the delete page to delete remaining threats
{
DisplayRepair(false);
DisplayDelete(true);
}
}
else if (AxListCtrl.AttemptedQuarantine == true)
{
// If we repaired and quarantined all the infection(s) and no threats remain
// go to the summary panel
if ((RoadmapFrame.g_nTotalItemRepaired + RoadmapFrame.g_nTotalItemRepairDeleted + RoadmapFrame.g_nTotalItemQuarantined - CommonUI.MBRRepaired - CommonUI.BRRepaired) == (RoadmapFrame.g_nTotalItemInfected - CommonUI.MBRInfected - CommonUI.BRInfected))
{
if( RoadmapFrame.g_nRemainingThreats == 0 )
{
GoToSummary();
}
// If there are remaining threats and we have already attempted delete, go to the
// Exclude page
else if( bAttemptedThreatDelete == true )
{
DisplayRepair(false);
DisplayThreatExclude(true);
}
else // Go to the delete page to delete remaining threats
{
DisplayRepair(false);
DisplayDelete(true);
}
}
else
{
// Move to Delete page since we have already repaired
// and quarantined some infections (this is the case
// if options is set to auto repair & quarantine)
DisplayRepair(false);
DisplayDelete(true);
}
}
else
{
// Move to Quarantine page since we have already repaired
// some infections (this is the case if options is set to
// auto repair)
DisplayRepair(false);
DisplayQuarantine(true);
}
}
else if( RoadmapFrame.g_nRemainingInfection != 0 )
{
// Go to the repair page
DisplayRepair(true);
}
else if( RoadmapFrame.g_nRemainingThreats != 0 )
{
// Go to the delete page to handle the remaining threats if a delete has not been attempted
if( bAttemptedThreatDelete == true )
{
DisplayRepair(false);
DisplayThreatExclude(true);
}
else
{
DisplayRepair(false);
DisplayDelete(true);
}
}
else
GoToSummary();
// Kill the timer
clearInterval(TimerID);
}
function OnRepair()
{
if (AxListCtrl.ItemsSelected == 0)
{
RoadmapFrame.webWnd.MsgBox(NoItemSelected.innerHTML, RoadmapFrame.ProductName.innerHTML, MB_OK);
return;
}
// Diable the Repair and Skip button
Repair.disabled= true;
Skip1.disabled = true;
RoadmapFrame.CancelButton.disabled = true;
if (ShowRepairProgress == true)
{
SetProgress(0);
ProgressBar.style.display = "";
// Repair the checked items
AxListCtrl.Repair();
}
else
{
// Repair the checked items
AxListCtrl.Repair();
NextPage(CurrentPage);
}
}
function OnQuarantine()
{
if (AxListCtrl.ItemsSelected == 0)
{
RoadmapFrame.webWnd.MsgBox(NoItemSelected.innerHTML, RoadmapFrame.ProductName.innerHTML, MB_OK);
return;
}
// Disable the Quarantine and Skip button
Quarantine.disabled= true;
Skip2.disabled = true;
RoadmapFrame.CancelButton.disabled = true;
if (ShowRepairProgress == true)
{
SetProgress(0);
ProgressBar.style.display = "";
// Quarantine the checked items
AxListCtrl.Quarantine();
}
else
{
// Quarantine the checked items
AxListCtrl.Quarantine();
NextPage(CurrentPage);
}
}
function OnDelete()
{
if (AxListCtrl.ItemsSelected == 0)
{
RoadmapFrame.webWnd.MsgBox(NoItemSelected.innerHTML, RoadmapFrame.ProductName.innerHTML, MB_OK);
return;
}
// If threat categorization is enabled, there are remaining threats, and
// at least one threat item is selected, tell the user that deleted threats
// will be backed up in quarantine
var MsgToDisplay = DeleteWarning.innerHTML;
if (RoadmapFrame.g_bEmailScanning == true)
MsgToDisplay = EmailDeleteWarning.innerHTML;
if( RoadmapFrame.g_bThreatCatEnabled == true && AxListCtrl.BackupDeletedThreats == true && RoadmapFrame.g_nRemainingThreats > 0)
{
if (RoadmapFrame.g_bEmailScanning == true)
MsgToDisplay = EmailThreatDeleteWarning.innerHTML;
else
MsgToDisplay = ThreatDeleteWarning.innerHTML;
}
iMsgBoxReturn = RoadmapFrame.webWnd.MsgBox(MsgToDisplay, RoadmapFrame.ProductName.innerHTML, MB_YESNO | MB_ICONWARNING);
if (iMsgBoxReturn == IDYES)
{
// Disable the Delete and Skip button
Delete.disabled= true;
Skip3.disabled = true;
RoadmapFrame.CancelButton.disabled = true;
if (ShowRepairProgress == true)
{
SetProgress(0);
ProgressBar.style.display = "";
// Delete the checked items
AxListCtrl.Delete();
}
else
{
// Delete the checked items
AxListCtrl.Delete();
NextPage(CurrentPage);
}
}
}
// THREAT CATEGORIZATION
function OnExclude()
{
// Add selected items to the threat exclusions
// If some items are selected warn the user about the implications of excluding
var iMsgBoxReturn = IDYES;
if( AxListCtrl.ItemsSelected != 0 )
{
iMsgBoxReturn = RoadmapFrame.webWnd.MsgBox(ExcludeWarning.innerHTML, RoadmapFrame.ProductName.innerHTML, MB_YESNO | MB_ICONWARNING);
}
if (iMsgBoxReturn == IDYES)
{
// Disable the Exclude and Skip button
Exclude.disabled = true;
Skip2.disabled = true;
RoadmapFrame.CancelButton.disabled = true;
if (ShowRepairProgress == true)
{
SetProgress(0);
ProgressBar.style.display = "";
// Exclude the checked items
AxListCtrl.Exclude();
}
else
{
// Exclude the checked items
AxListCtrl.Exclude();
NextPage(CurrentPage);
}
}
}
function OnSkip()
{
ShowNextPage(CurrentPage);
}
function NextPage(nCurrentPage)
{
if (nCurrentPage == REPAIR_PAGE)
{
// If threat cat is enabled there is the possibility that we have new items found
// so refresh our items
if( RoadmapFrame.g_bThreatCatEnabled )
{
RoadmapFrame.g_nTotalItemInfected = AxListCtrl.TotalInfection;
RoadmapFrame.g_nTotalThreatsDetected = AxListCtrl.TotalThreats;
RoadmapFrame.g_nTotalThreatsDeleted = AxListCtrl.DeletedThreatCount;
RoadmapFrame.g_nTotalThreatsExcluded = AxListCtrl.ExcludedThreatCount;
RoadmapFrame.g_nRemainingThreats = RoadmapFrame.g_nTotalThreatsDetected - RoadmapFrame.g_nTotalThreatsDeleted - RoadmapFrame.g_nTotalThreatsExcluded;
}
// Get the total number of repaired infection(s)
RoadmapFrame.g_nTotalItemRepaired = AxListCtrl.RepairedInfectionCount;
RoadmapFrame.g_nTotalItemRepairDeleted = AxListCtrl.RepairDeletedInfectionCount;
RoadmapFrame.g_nTotalItemDeleted = AxListCtrl.DeletedInfectionCount - RoadmapFrame.g_nTotalItemQuarantined;
if ((RoadmapFrame.g_nTotalItemInfected - CommonUI.MBRInfected - CommonUI.BRInfected) == (RoadmapFrame.g_nTotalItemRepaired + RoadmapFrame.g_nTotalItemRepairDeleted - CommonUI.MBRRepaired - CommonUI.BRRepaired))
{
// Jump to summary page since there are no infections as long as there are no non-viral threats
if( RoadmapFrame.g_nRemainingThreats == 0 )
{
GoToSummary();
}
else if( bAttemptedThreatDelete == true )
{
// Already attempted delete, go to exclude
DisplayRepair(false);
DisplayThreatExclude(true);
}
else
{
// Go to delete
DisplayRepair(false);
DisplayDelete(true);
}
}
else
{
// There are infections remaining so go to the next page
ShowNextPage(nCurrentPage);
}
}
else if (nCurrentPage == QUARANTINE_PAGE)
{
// Get the total number of quarantined infection(s)
RoadmapFrame.g_nTotalItemQuarantined = AxListCtrl.QuarantinedInfectionCount;
if ((RoadmapFrame.g_nTotalItemInfected - CommonUI.MBRInfected - CommonUI.BRInfected) == (RoadmapFrame.g_nTotalItemRepaired + RoadmapFrame.g_nTotalItemRepairDeleted + RoadmapFrame.g_nTotalItemQuarantined - CommonUI.MBRRepaired - CommonUI.BRRepaired))
{
// Jump to summary page since there are no infections as long as there are no non-viral threats
if( RoadmapFrame.g_nRemainingThreats == 0 )
{
GoToSummary();
}
// Non-viral threats remain
else if( bAttemptedThreatDelete == true ) // Already attempted delete go to exclude
{
DisplayQuarantine(false);
DisplayThreatExclude(true);
}
else // Go to delete page (next page)
{
ShowNextPage(nCurrentPage);
}
}
else
{
// Change to the next page
ShowNextPage(nCurrentPage);
}
}
else if (nCurrentPage == DELETE_PAGE)
{
// Get the total number of deleted infection(s)
RoadmapFrame.g_nTotalItemDeleted = AxListCtrl.DeletedInfectionCount - RoadmapFrame.g_nTotalItemQuarantined;
// Get threat categorization data if threat cat is enabled
if( RoadmapFrame.g_bThreatCatEnabled == true )
{
// Get the total number of deleted threat(s)
RoadmapFrame.g_nTotalThreatsDeleted = AxListCtrl.DeletedThreatCount;
// Update the remaining threat count
RoadmapFrame.g_nRemainingThreats = RoadmapFrame.g_nTotalThreatsDetected - RoadmapFrame.g_nTotalThreatsDeleted;
// Check for remaining threats
if (RoadmapFrame.g_nRemainingThreats == 0)
{
// Jump to summary page since there are no threats to Exclude
GoToSummary();
}
else
{
// Change to the next page (Exclude Page)
ShowNextPage(nCurrentPage);
}
}
else // No threat cat - go to summary
GoToSummary();
}
else if (nCurrentPage == THREAT_EXCLUDE_PAGE)
{
// Get the total number of Excluded threats
RoadmapFrame.g_nTotalThreatsExcluded = AxListCtrl.ExcludedThreatCount;
// Go to the summary page
GoToSummary();
}
}
function ShowNextPage(nCurrentPage)
{
switch (nCurrentPage)
{
case REPAIR_PAGE:
{
DisplayRepair(false);
DisplayQuarantine(true);
break;
}
case QUARANTINE_PAGE:
{
DisplayQuarantine(false);
DisplayDelete(true);
break;
}
case DELETE_PAGE:
{
DisplayDelete(false);
DisplayThreatExclude(true);
break;
}
case THREAT_EXCLUDE_PAGE:
{
RoadmapFrame.ThreatExcludeTitle(false);
GoToSummary();
break;
}
}
}
function GoToSummary()
{
CloseTooltip();
RoadmapFrame.RepairTitle(false);
RoadmapFrame.QuarantineTitle(false);
RoadmapFrame.DeleteTitle(false);
RoadmapFrame.ThreatExcludeTitle(false);
// Hide the Canel button, since we already have a Finish button on the
// Summary Page.
RoadmapFrame.CancelButton.style.display = "none";
RoadmapFrame.OnNextButton();
}
function DisplayRepair(bShow)
{
if( bShow == true )
{
CloseTooltip();
CurrentPage = REPAIR_PAGE;
AxListCtrl.RepairWizardPage = CurrentPage;
// Show the Repair subtitle
RepairSubTitle.style.display = "";
// Show the Repair button
RepairRow.style.display = "";
// Show the Show description
RepairDescr.style.display = "";
// Show the Infected Count
InfectionCount.innerHTML = RoadmapFrame.g_nTotalItemInfected;
// If threat cat is enabled show threat info
DisplayThreatInfo(RoadmapFrame.g_bThreatCatEnabled);
// Show the repair title
RoadmapFrame.RepairTitle(true);
}
else
{
// Hide the Repair subtitle
RepairSubTitle.style.display = "none";
// Hide the Repair button
RepairRow.style.display = "none";
// Hide the Show description
RepairDescr.style.display = "none";
// Hide the repair title
RoadmapFrame.RepairTitle(false);
}
}
function DisplayQuarantine(bShow)
{
if( bShow == true )
{
CloseTooltip();
CurrentPage = QUARANTINE_PAGE;
AxListCtrl.RepairWizardPage = CurrentPage;
// Show the Quarantine subtitle
QuarantineSubTitle.style.display = "";
// Show the Quarantine button
QuarantineRow.style.display = "";
// Show the Quarantine description
QuarantineDescr.style.display = "";
// Show the Repair Count
RepairText.style.display = "";
RepairedCount.innerHTML = RoadmapFrame.g_nTotalItemRepaired + RoadmapFrame.g_nTotalItemRepairDeleted;
// Show the title
RoadmapFrame.QuarantineTitle(true);
// Set focus to the quarantine button
Quarantine.focus();
// If threat cat is enabled show threat info
DisplayThreatInfo(RoadmapFrame.g_bThreatCatEnabled);
}
else
{
// Hide the Quarantine subtitle
QuarantineSubTitle.style.display = "none";
// Hide the Quarantine button
QuarantineRow.style.display = "none";
// Hide the Quarantine description
QuarantineDescr.style.display = "none";
// Hide the title
RoadmapFrame.QuarantineTitle(false);
}
}
function DisplayDelete(bShow)
{
if( bShow == true )
{
CloseTooltip();
CurrentPage = DELETE_PAGE;
AxListCtrl.RepairWizardPage = CurrentPage;
// Show the Delete subtitle
DeleteSubTitle.style.display = "";
// Show the Quarantine count
QuarantineText.style.display = "";
QuarantinedCount.innerHTML = RoadmapFrame.g_nTotalItemQuarantined;
// Show the Delete button
DeleteRow.style.display = "";
// Show the Delete description
DeleteDescr.style.display = "";
// Show the Delete title
RoadmapFrame.DeleteTitle(true);
// Set focus to the delete button
Delete.focus();
// If threat cat is enabled show threat info
DisplayThreatInfo(RoadmapFrame.g_bThreatCatEnabled);
}
else
{
// Hide the Delete subtitle
DeleteSubTitle.style.display = "none";
// Hide the Delete button
DeleteRow.style.display = "none";
// Hide the Delete description
DeleteDescr.style.display = "none";
// Hide the Delete title
RoadmapFrame.DeleteTitle(false);
}
}
function DisplayThreatExclude(bShow)
{
// Don't show the exclude panel if threat cat is off, no threats are remaining,
// or if this is an email scan
if( !RoadmapFrame.g_bThreatCatEnabled || RoadmapFrame.g_nRemainingThreats == 0 || RoadmapFrame.g_bEmailScanning )
{
ShowNextPage(THREAT_EXCLUDE_PAGE);
return;
}
if( bShow )
{
CloseTooltip();
CurrentPage = THREAT_EXCLUDE_PAGE;
AxListCtrl.RepairWizardPage = CurrentPage;
// Show the Threat Exclude subtitle
ExcludeSubTitle.style.display = "";
// Show the Exclude button
ExcludeRow.style.display = "";
// Show the Threat deleted count
DeletedCount.innerHTML = RoadmapFrame.g_nTotalThreatsDeleted;
// Show the Exclude description
ExcludeDescr.style.display = "";
// Show the Exclude title
RoadmapFrame.ThreatExcludeTitle(true);
// Set focus to the Exclude button
Exclude.focus();
// Show only threat info
NonViralThreatCount.innerHTML = RoadmapFrame.g_nTotalThreatsDetected;
InfectionCount.style.display = "none";
DescriptionExt.style.display = "none";
ThreatConjunction.style.display = "none";
RepairText.style.display = "none";
NonViralThreatCount.style.display = "";
NonViralThreatDescriptionExt.style.display = "";
DeleteText.style.display = "";
}
else
{
// Hide the Threat Exclude subtitle
ExcludeSubTitle.style.display = "none";
// Hide the Exclude button
ExcludeRow.style.display = "none";
// Hide the Exclude description
ExcludeDescr.style.display = "none";
// Hide the Exclude title
RoadmapFrame.ThreatExcludeTitle(false);
}
}
// Shows/Hides the threat categorization information at the top
// of the repair wizard
function DisplayThreatInfo(bShow)
{
if( bShow == true )
{
// Show
NonViralThreatCount.innerHTML = RoadmapFrame.g_nTotalThreatsDetected;
DescriptionPeriod.style.display = "none";
ThreatConjunction.style.display = "";
NonViralThreatCount.style.display = "";
NonViralThreatDescriptionExt.style.display = "";
}
else
{
// Hide
DescriptionPeriod.style.display = "";
ThreatConjunction.style.display = "none";
NonViralThreatCount.style.display = "none";
NonViralThreatDescriptionExt.style.display = "none";
}
}
function OnHelp()
{
// Find out which page of the repair wizard the user is on.
var iHelpID = 11580;
if (CurrentPage == REPAIR_PAGE)
iHelpID = 11581;
else if (CurrentPage == QUARANTINE_PAGE)
iHelpID = 11582;
else if (CurrentPage == DELETE_PAGE)
iHelpID = 11583;
else if (CurrentPage == THREAT_EXCLUDE_PAGE)
iHelpID = 11704;
// Launch help for repair wizard.
CommonUI.Help(iHelpID);
}
function OnKeyboardHelp(objTR)
{
// Launch help for repair wizard from keyboard
// The "SPACEBAR" and "ENTER" keys are used.
if ( (event.keyCode == ENTER_KEY) || (event.keyCode == SPACEBAR_KEY) )
{
CommonUI.Help(11580);
}
}
function OnEmailInfo(bIsKeyboard)
{
// Is it a from keydown or mouse click?
if (bIsKeyboard == 1)
{
// If it's from keydown, make sure it is a enter or spacebar else bail out.
if ((event.keyCode != ENTER_KEY) && (event.keyCode != SPACEBAR_KEY))
return;
}
// Launch email information tooltip.
Tooltip(RoadmapFrame.EmailTitle.innerHTML, RoadmapFrame.EmailSender.innerHTML,
RoadmapFrame.EmailRecipient.innerHTML, RoadmapFrame.EmailSubject.innerHTML);
}