Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1918 lines
50 KiB

<HTML>
<HEAD>
<TITLE>Microsoft Out-of-Box Experience</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<LINK REL="stylesheet" TYPE="text/css" HREF="setup\oobestyl.css">
<script language=jscript src="AgtCore.js"></script>
<script language=jscript src="AgtScrpt.js"></script>
<script language=jscript src="oobeutil.js"></script>
<script language=jscript src="migrate.js"></script>
<script language=jscript src="dialmgr.js"></script>
<script language=jscript src="error.js"></script>
<script language=jscript src="icsmgr.js"></script>
<script language=jscript src="isptype.js"></script>
<script language=jscript src="iconnect.js"></script>
<script language=jscript>
// This is intended to hold all the script needed
// in the default & offline OOBE HTML pages.
//
// We want to separate the layout (HTML) from the script.
// At the same time, it's helpful to have all the code
// in one place to make it easier to understand the flow
// from page to page.
var APP_OOBE_MODE = 0;
var APP_MSN_MODE = 4;
var APP_DESKTOP_MODE = 2;
// Status location constants
var STATUS_ISP = 0; // Do either MSN or local OEM offer
var STATUS_PRECONFIG = 1; // Do the pre-configured OEM INS file
var STATUS_NONE = 2; // Don't do any ISP offer
var STATUS_OFF = 3; // Don't connect to the Internet
var STATUS_MAX = 4;
// For the new status pane, don't allow half way status
var SNDX_WELCOME = 0;
var SNDX_HW = 1;
var SNDX_LEGAL = 2;
var SNDX_REG = 3;
var SNDX_ISP = 4;
var SNDX_IDENTITIES = 5;
var SNDX_FINI = 6;
// holds non-checkpoint next navigation
var g_SimpleNavMap = null;
var g_CountryIdx=-1;
///////////////////////////////////////////////////////////////////////////////
// CheckPoint
//
// Constructor for CheckPoint object.
//
///////////////////////////////////////////////////////////////////////////////
function CheckPoint(strURL, i1, i2, i3, i4)
{
this.strURL = strURL;
this.rgindex = new Array(STATUS_MAX);
this.rgindex[STATUS_ISP] = i1;
this.rgindex[STATUS_PRECONFIG] = i2;
this.rgindex[STATUS_NONE] = i3;
this.rgindex[STATUS_OFF] = i4;
}
var curCKPT = 1;
var CKPT_ISPSIGNUP = curCKPT++;
var CKPT_MIGLIST = curCKPT++;
var CKPT_ISPDIAL = curCKPT++;
var CKPT_REFDIAL = curCKPT++;
var CKPT_MIGDIAL = curCKPT++;
var CKPT_ICONNECT = curCKPT++;
var CKPT_OEMISP = curCKPT++;
var CKPT_OEMCUST = curCKPT++;
var CKPT_DONE = curCKPT++;
var CKPT_MAX = curCKPT; // ALWAYS set this to be the biggest value!
var dnCKPT = new Array(CKPT_MAX);
var CKPT_REGDIAL = CKPT_MAX+1;
var CKPT_REGISTER1 = CKPT_MAX+2;
var CKPT_REGISTER3 = CKPT_MAX+3;
var CKPT_ACT_MSG = CKPT_MAX+4;
// Checkpoint breadcrumbs
var g_CurrentCKPT = null;
var g_DialCKPT = null;
var HKEY_LOCAL_MACHINE = 0x80000002;
var OOBE_MAIN_REG_KEY = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\OOBE";
var CKPT_REG_KEY = "\\CKPT";
var TOS_REG_VALUE = "TopOfStack";
var POWERDOWN_SHUTDOWN = 0;
var POWERDOWN_REBOOT = 1;
// CheckDialReady errors
var ERR_COMM_NO_ERROR = 0;
var ERR_COMM_OOBE_COMP_MISSING = 1;
var ERR_COMM_UNKNOWN = 2; // Unknown error, check input parameters
var ERR_COMM_NOMODEM = 3; // There is no modem installed
var ERR_COMM_RAS_TCP_NOTINSTALL = 4;
var ERR_COMM_ISDN = 5;
var ERR_COMM_PHONE_AND_ISDN = 6;
// Dialing errors. Look at raserror.h for details
var DERR_DIALTONE = 680;
var DERR_BUSY = 676;
var DERR_VOICEANSWER = 677;
var DERR_NOANSWER = 678;
var DERR_NO_CARRIER = 679;
var DERR_HARDWARE_FAILURE = 630; // modem turned off
var DERR_PORT_ALREADY_OPEN = 602; // procomm/hypertrm/RAS has COM port
var DERR_PORT_OR_DEVICE = 692; // got this when hypertrm had the device open -- jmazner
var DERR_PPP_TIMEOUT = 718;
var DERR_REMOTE_DISCONNECT = 629; // Connection interrupted
// Types of dialing using ISP files. e.g. Dial to registration, ISP, referral server
var CONNECTED_REFFERAL = 1
var CONNECTED_ISP_SIGNUP = 2
var CONNECTED_ISP_MIGRATE = 3
var CONNECTED_REGISTRATION = 4
// Finish errors
//
// These MUST be kept in sync with the values in MSOBMAIN.H.
//
var FINISH_OK = 0x00000000;
var FINISH_REBOOT = 0x00000001;
var FINISH_BAD_PID = 0x00000002;
var FINISH_BAD_EULA = 0x00000004;
var FINISH_BAD_STAMP = 0x00000008;
// Dictionary compare modes
var COMPAREMODE_BINARY = 0;
var COMPAREMODE_TEXT = 1;
// on-the-fly button hiding
var HIDE_BACK = 0x0001;
var HIDE_NEXT = 0x0002;
var HIDE_CANCEL = 0x0004;
var HIDE_RESTORE = 0x0008;
// Language reboot return codes
var LANGUAGE_REBOOT_NEVER = 0;
var LANGUAGE_REBOOT_NOW = 1;
var LANGUAGE_REBOOT_END = 2;
// keycode consts
var KeyEsc = 0x1B;
var KeyEnter = 0xD;
var KeyBackSpc = 0x8;
var KeyDelete = 0x2E;
var KeyTab = 0x9;
var KeyDwnArrow = 0x28;
var KeyUpArrow = 0x26;
var KeyLeftArrow = 0x25;
var KeyRightArrow = 0x27;
// BUGBUG temp GUIDs
var NOLAUNCHISPSIGNUP = "{C37D92A5-CA34-11d2-B71C-00C04F794977}";
var MSNCOMPLETED = "{1C0A22F2-CB6B-11d2-B544-00A0C949DA70}";
// window.external object caches
var TapiObj = null;
var InfoObj = null;
var EulaObj = null;
var LangObj = null;
var PidObj = null;
var StatusObj = null;
var DirObj = null;
var ApiObj = null;
var RegisterObj = null;
var FileSystemObj = null;
var g_Identities2_OK;
// general globals and status
var g_strISPFile = "";
var g_bStartup;
var g_LastButtonText = null;
var g_FirstFocusElement = null;
var g = null;
var g_SpecialChars = ".'-` ";
var g_OOBEDir = "file://" + window.external.API.get_SystemDirectory() + "\\oobe\\";
var g_OOBEDirPath = window.external.API.get_SystemDirectory() + "\\oobe\\";
var g_WaterMarkFileNameStr= window.external.API.get_SystemDirectory() + "\\OOBE\\images\\watermrk.gif";
var g_WaterMarkFileSize = 29683; // size of default watermrk.gif
var g_bRedial = false;
var g_LineProblem = 0;
var g_bFirstServerError = true;
var g_status = STATUS_OFF;
var g_ServerErrorCount = 0;
var g_OEMAddBackURL = "";
var g_DialingAvailableInCountry = true;
var g_ModalDialogUp = false;
var g_OEMNameStr = window.external.Signup.get_OEMName();
var g_bTapiDone = false;
// Mandatory Initialization Code
if (null == FileSystemObj) {
FileSystemObj = new ActiveXObject("Scripting.FileSystemObject");
}
if (null == ApiObj)
{
ApiObj = new Object;
ApiObj = window.external.API;
}
if (null == StatusObj)
{
StatusObj = new Object;
StatusObj = window.external.Status;
}
if (null == DirObj)
{
DirObj = new Object;
DirObj = window.external.Directions;
}
if (null == InfoObj)
{
InfoObj = new Object;
InfoObj = window.external.UserInfo;
}
if (null == TapiObj)
{
TapiObj = new Object;
TapiObj = window.external.Tapi;
}
if (null == RegisterObj)
{
RegisterObj = new Object;
RegisterObj = window.external.Register;
}
if (null == LangObj)
{
LangObj = new Object;
LangObj = window.external.Language;
}
// END Initialization Code
// another global, need DirObj first though
var g_AgentDisabled = true;
var L_ContStr_Text="To continue, click";
var L_NextStr_Text="Next";
var L_Period_Text=".";
var L_ClickNextLocStr_Text=""; // for localizers to add stuff without affecting L_Period_Text
var L_NextStrTopPercent_Text="83%";
var L_ClickNextStrTopPercent800_Text="78%";
var L_ClickNextStrTopPercent1024_Text="84%";
var L_ClickNextStrLeftPercent_Text="30%";
var g_ClickNextStr = "&nbsp;"
var g_ClickNextStrWelcome = "";
// Set up labelS for various getting connected Congratulations.
var L_ConnectedDefaultHeading_Text = "Congratulations";
var L_ConnectedNoInternetHeading_Text = "Could not find the Internet";
var L_ConnectedDefault_Text = "You are now connected to the Internet.";
var L_ConnectedViaICS_Text = "You are now connected to the Internet using ICS connection.";
var L_ConnectedViaDSLCable_Text = "You are now connected to the Internet via your DSL/Cable connection.";
var L_ConnectedViaLAN_Text = "You are now connected to the Internet using your LAN connection.";
var L_ConnectedNoInternet_Text = "Windows was not able to connect to the Internet using your network hardware. You can connect to the Internet later by clicking the Start button, then click <B>Internet</B>. Please click the <B>Next</B> button below to continue setting up Windows.";
var g_Congrats_Type_Heading = L_ConnectedDefaultHeading_Text;
var g_Congrats_Type = L_ConnectedDefault_Text;
///////////////////////////////////////////////////////////////////////////////
// logError
//
// Log information from an error object. trace will send the info to
// setuplog.txt and the debugger. If
// HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\OOBE\MsDebug=DWORD:1
// an alert will be displayed as well.
//
///////////////////////////////////////////////////////////////////////////////
function logError(funcName, errObj)
{
trace( "Exception in " + funcName
+ " (" + errObj.number.toString(16) + ") "
+ errObj.description + "\n"
);
if (true == DebugObj.get_MsDebugMode())
{
alert("OOBE ERROR\n"
+ "\n Function: " + funcName
+ "\n Error: " + errObj.number.toString(16)
+ "\nDescription: " + errObj.description
);
}
}
function FormatRequiredFieldLabel(element,error)
{
if (error)
{
element.className = "text-error";
if (!(element.innerHTML.charAt(0) == "*"))
{
element.innerHTML = "* " + element.innerHTML
}
}
else
{
element.className = "text-primary";
if ((element.innerHTML.charAt(0) == "*"))
{
element.innerHTML = element.innerHTML.substring(2,(element.innerHTML.length - 1));
}
}
}
///////////////////////////////////////////////////////////////////////////////
// General Default LoadMe function
///////////////////////////////////////////////////////////////////////////////
function _Default_LoadMe(SimpleBack, SimpleNext)
{
InitFrameRef();
InitButtons(SimpleBack, SimpleNext);
if (g.btnNext.style.visibility == "visible")
g_FirstFocusElement = g.btnNext;
else if (g.btnSkip.style.visibility == "visible")
g_FirstFocusElement = g.btnSkip;
else if (g.btnBack.style.visibility == "visible")
g_FirstFocusElement = g.btnBack;
if (g_FirstFocusElement != null)
g_FirstFocusElement.focus();
else
g.document.body.focus();
}
function New_Default_LoadMe(SimpleBack, SimpleNext)
{
InitFrameRef();
InitNewButtons(SimpleBack, SimpleNext);
if (g.btnNext.style.visibility == "visible")
g_FirstFocusElement = g.btnNext;
else if (g.btnSkip.style.visibility == "visible")
g_FirstFocusElement = g.btnSkip;
else if (g.btnBack.style.visibility == "visible")
g_FirstFocusElement = g.btnBack;
if (g_FirstFocusElement != null)
g_FirstFocusElement.focus();
else
g.document.body.focus();
}
// fini.htm
// These vars are set on oobeutil.jsx
var g_IsActivationSuccessful = false;
var g_IsMSRegistrationSuccessful = false;
var g_IsOEMRegistrationSuccessful = false;
var g_ShowParagraph = false;
function ShowFinish_Paragraph_Header()
{
if (g_ShowParagraph)
{
g.FiniSummaryIntro2.style.display = "inline";
}
}
function FinishPage_LoadMe()
{
InitFrameRef();
if (g_IsActivationSuccessful)
{
var L_ActivateWindows_Text = "You activated your copy of Windows.<BR>";
g_ShowParagraph = true;
g.FiniSummary0.innerHTML = L_ActivateWindows_Text;
g.FiniSummary0.style.display = "inline";
}
// OEM didn't Pre-reg the machine
if (1 != window.external.get_RegStatus())
{
if (1 == RegisterObj.get_PostToOEM && g_IsOEMRegistrationSuccessful)
{
var strOEMName = g_OEMNameStr;
if (strOEMName == null || (strOEMName != null && strOEMName.length == 0))
{
var L_RegisterdWith_Text = "You registered your computer with the OEM.<BR>";
g.FiniSummary1.innerHTML = L_RegisterdWith_Text;
}
else
{
var L_RegisterdWith_Text = "You registered your computer with %1.<BR>";
g.FiniSummary1.innerHTML = ApiObj.FormatMessage(L_RegisterdWith_Text, strOEMName);
}
g_ShowParagraph = true;
g.FiniSummary1.style.display = "inline";
}
if (g_IsMSRegistrationSuccessful)
{
var L_RegisterdWithMS_Text = "You registered your copy of Windows with Microsoft.<BR>";
g_ShowParagraph = true;
g.FiniSummary2.innerHTML = L_RegisterdWithMS_Text;
g.FiniSummary2.style.display = "inline";
}
}
var bHasSignup = 0;
try
{
bHasSignup = ApiObj.get_RegValue(HKEY_LOCAL_MACHINE, OOBE_MAIN_REG_KEY + "\\TEMP", "ISPSignup");
}
catch (e) { bHasSignup = 0;}
if (bHasSignup || ConnectedToInternetEx(false))
{
var L_SignupWith_Text = "Your computer is configured for Internet access.<BR>";
g_ShowParagraph = true;
g.FiniSummary3.innerHTML = L_SignupWith_Text;
g.FiniSummary3.style.display = "inline";
}
ShowFinish_Paragraph_Header();
if (LANGUAGE_REBOOT_END == LangObj.get_RebootState())
{
g.finishmsg.style.display="none";
g.rebootfinishmsg.style.display="inline";
}
g.msgspan.style.display="inline";
if (g.btnNext != null)
g_FirstFocusElement = g.btnNext;
else if (g.btnBack != null)
g_FirstFocusElement = g.btnBack;
InitNewButtons();
g_FirstFocusElement.focus();
}
///////////////////////////////////////////////////////////////////////////////
// hndshake.htm
///////////////////////////////////////////////////////////////////////////////
function hndshake_OnKeyPress()
{
try
{
if (g.event == null)
return;
}
catch(e)
{
return;
}
// Treat the enter key like the next button
if ((g.event.keyCode == KeyEnter) &&
(g.btnNext.disabled == false))
{
GoNext();
}
else
{
KeyPressIsValid();
}
}
function hndshake_CheckEdits()
{
try
{
if (g.event == null)
return;
}
catch(e)
{
return;
}
if (g.event.srcElement != g.edtMSNPhoneNumber)
{
hndshake_CheckEnableNextButton();
}
}
function hndshake_CheckEnableNextButton()
{
try
{
if (g.event == null)
return;
}
catch(e)
{
return;
}
if (g.edtMSNPhoneNumber.value.length)
{
g.btnNext.disabled = false;
}
else
{
g.btnNext.disabled = true;
}
InitNewButtons();
}
function hndshake_LoadMe()
{
InitFrameRef();
g_FirstFocusElement = g.edtMSNPhoneNumber;
hndshake_CheckEnableNextButton();
g_FirstFocusElement.focus();
}
///////////////////////////////////////////////////////////////////////////////
// MISC Functions
///////////////////////////////////////////////////////////////////////////////
// Page Navigation
// InitCKPT, PushCKPT, PopCKPT, CKPTFromVal are meant to handle the behavior for GoBack.
// We only go back to certain pages (i.e., Sound Check).
// And on some of the pages, we only go back if they haven't been
// completed (i.e., EULA, PID).
//
// So, we push checkpoints if we intend to all coming back to that page.
// We pop checkpoints if we no longer want to come back (e.g., we've
// completed that page.
function InitCKPT()
{
// STATUS_ISP(0) STATUS_PRECONFIG STATUS_NONE STATUS_OFF
// ------------ ------------- ------------- --------------
dnCKPT[CKPT_ISPSIGNUP] = new CheckPoint("setup\\isp.htm", SNDX_ISP, SNDX_ISP, SNDX_ISP, SNDX_ISP);
dnCKPT[CKPT_MIGLIST] = new CheckPoint("setup\\miglist.htm", SNDX_ISP, SNDX_ISP, SNDX_ISP, SNDX_ISP);
dnCKPT[CKPT_ISPDIAL] = new CheckPoint("setup\\drdyisp.htm", SNDX_ISP, SNDX_ISP, SNDX_ISP, SNDX_ISP);
dnCKPT[CKPT_REFDIAL] = new CheckPoint("setup\\drdyref.htm", SNDX_ISP, SNDX_ISP, SNDX_ISP, SNDX_ISP);
dnCKPT[CKPT_MIGDIAL] = new CheckPoint("setup\\drdymig.htm", SNDX_ISP, SNDX_ISP, SNDX_ISP, SNDX_ISP);
dnCKPT[CKPT_ICONNECT] = new CheckPoint("html\\iconnect\\iconnect.htm",SNDX_ISP, SNDX_ISP, SNDX_ISP, SNDX_ISP);
dnCKPT[CKPT_OEMISP] = new CheckPoint("html\\ispsgnup\\ispsgnup.htm", SNDX_ISP, SNDX_ISP, SNDX_ISP, SNDX_ISP);
dnCKPT[CKPT_OEMCUST] = new CheckPoint("html\\oemcust\\oemcust.htm", SNDX_ISP, SNDX_ISP, SNDX_ISP, SNDX_ISP);
dnCKPT[CKPT_DONE] = new CheckPoint("setup\\fini.htm", SNDX_FINI, SNDX_FINI, SNDX_FINI, SNDX_FINI);
PopCKPT();
// init simple navigation mappings
g_SimpleNavMap= new ActiveXObject("Scripting.Dictionary");
g_SimpleNavMap.CompareMode = COMPAREMODE_TEXT;
iconnect_InitSimpleNavMap();
}
function PushCKPT(ckpt)
{
if (ckpt > 0 && ckpt < CKPT_MAX)
{
var tos = 0;
try
{
tos = ApiObj.get_RegValue(HKEY_LOCAL_MACHINE, OOBE_MAIN_REG_KEY + CKPT_REG_KEY, TOS_REG_VALUE);
}
catch (e) {}
ApiObj.set_RegValue(HKEY_LOCAL_MACHINE, OOBE_MAIN_REG_KEY + CKPT_REG_KEY, tos.toString(), ckpt);
ApiObj.set_RegValue(HKEY_LOCAL_MACHINE, OOBE_MAIN_REG_KEY + CKPT_REG_KEY, TOS_REG_VALUE, ++tos);
ApiObj.FlushRegKey(HKEY_LOCAL_MACHINE);
g_CurrentCKPT = ckpt;
}
}
function ClearStatusBar()
{
StatusBar1.style.backgroundColor = "#bbbbbb";
StatusBar2.style.backgroundColor = "#bbbbbb";
StatusBar3.style.backgroundColor = "#bbbbbb";
StatusBar4.style.backgroundColor = "#bbbbbb";
StatusBar5.style.backgroundColor = "#bbbbbb";
}
function PaintStatusBar(WhatBar)
{
// We use this method so that whenever we skip a step, that step is highlighted as well.
var HighlightColor = "#00cc00"; // Green
if (WhatBar == "1")
{
StatusBar1.style.backgroundColor = HighlightColor;
}
if (WhatBar == "2")
{
StatusBar1.style.backgroundColor = HighlightColor;
StatusBar2.style.backgroundColor = HighlightColor;
}
if (WhatBar == "3")
{
StatusBar1.style.backgroundColor = HighlightColor;
StatusBar2.style.backgroundColor = HighlightColor;
StatusBar3.style.backgroundColor = HighlightColor;
}
if (WhatBar == "4")
{
StatusBar1.style.backgroundColor = HighlightColor;
StatusBar2.style.backgroundColor = HighlightColor;
StatusBar3.style.backgroundColor = HighlightColor;
StatusBar4.style.backgroundColor = HighlightColor;
}
if (WhatBar == "5")
{
StatusBar1.style.backgroundColor = HighlightColor;
StatusBar2.style.backgroundColor = HighlightColor;
StatusBar3.style.backgroundColor = HighlightColor;
StatusBar4.style.backgroundColor = HighlightColor;
StatusBar5.style.backgroundColor = HighlightColor;
}
}
function PopCKPT(ckptCheck)
{
var ckpt = 0;
try
{
var tos = ApiObj.get_RegValue(HKEY_LOCAL_MACHINE, OOBE_MAIN_REG_KEY + CKPT_REG_KEY, TOS_REG_VALUE);
if (tos > 0)
{
ckpt = ApiObj.get_RegValue(HKEY_LOCAL_MACHINE, OOBE_MAIN_REG_KEY + CKPT_REG_KEY, (tos - 1).toString());
if (null == ckptCheck || ckpt == ckptCheck)
{
ApiObj.set_RegValue(HKEY_LOCAL_MACHINE, OOBE_MAIN_REG_KEY + CKPT_REG_KEY, TOS_REG_VALUE, --tos);
ApiObj.DeleteRegValue(HKEY_LOCAL_MACHINE, OOBE_MAIN_REG_KEY + CKPT_REG_KEY, tos.toString());
ApiObj.FlushRegKey(HKEY_LOCAL_MACHINE);
}
}
}
catch (e) {}
if (ckpt > 0 && ckpt < CKPT_MAX)
{
g_CurrentCKPT = ckpt;
}
else
g_CurrentCKPT = null;
}
function EmptyCKPTStack()
{
while (null != g_CurrentCKPT)
{
PopCKPT();
}
}
function URLFromCKPT(ckpt)
{
var str = "";
if (ckpt > 0 && ckpt < CKPT_MAX)
{
str = dnCKPT[ckpt].strURL;
}
return str;
}
function IndexFromCKPT(ckpt, status)
{
var index = 0;
if (ckpt > 0 && ckpt < CKPT_MAX)
{
var checkpoint = dnCKPT[ckpt];
index = checkpoint.rgindex[status];
}
return index;
}
function IsLocalFile()
{
try
{
return (-1 != g.location.protocol.indexOf("file"));
}
catch (e)
{
return false;
}
}
///////////////////////////////////////////////////////////////////////////////
// public navigation APIs
///////////////////////////////////////////////////////////////////////////////
function SetBack(strURL)
{
g_OEMAddBackURL = strURL;
}
// this handles the user's "Skip" requests
///////////////////////////////////////////////////////////////////////////////
// GoCancel
//
// This function is responsible for
// * Saving state for a page when the Skip button is clicked.
// * Calling GoNavigate with the checkpoint id of the next checkpoint
//
// This function is NOT responsible for
// * Setting state for the next page. That should be done in GoNavigate.
//
// Default behavior is to navigate to the first page of the next checkpoint.
//
///////////////////////////////////////////////////////////////////////////////
function GoCancel(ckpt)
{
try
{
if (IsLocalFile() && g.event == null && (g_CurrentCKPT != g_DialCKPT))
return;
}
catch(e)
{
return;
}
DisableAllButtons();
switch (g_CurrentCKPT)
{
case CKPT_ISPSIGNUP:
GoNavigate(CKPT_OEMCUST);
break;
case CKPT_MIGLIST:
// When skip on the referral dialing, go to finish
GoNavigate(CKPT_OEMCUST);
break;
case CKPT_REFDIAL:
case CKPT_MIGDIAL:
case CKPT_ISPDIAL:
// When skip on the referral dialing, go to finish
GoNavigate(CKPT_OEMCUST);
break;
default:
GoNext();
break;
}
}
///////////////////////////////////////////////////////////////////////////////
// GoBack
//
// This function is responsible for
// * Saving state for a page when the Back button is clicked.
// * Popping the current checkpoint off the checkpoint stack
// * Navigating to the previous checkpoint
//
// This function is NOT responsible for
// * Setting state for the next page. That should be done in GoNavigate.
//
///////////////////////////////////////////////////////////////////////////////
function GoBack(ckpt)
{
try
{
if (IsLocalFile() && g.event == null && (g_CurrentCKPT != g_DialCKPT))
return;
}
catch(e)
{
return;
}
DisableAllButtons();
if(g_CurrentCKPT == g_DialCKPT)
ResetDialing();
else if(g_CurrentCKPT == CKPT_ISPSIGNUP)
ResetDialing();
// end if
{
var ckptPrevious = g_CurrentCKPT;
PopCKPT();
if (ckptPrevious == g_CurrentCKPT)
{
// This handles the case where the current page pushed itself on the stack.
PopCKPT();
}
if (g_CurrentCKPT > 0 && g_CurrentCKPT < CKPT_MAX)
{
GoNavigate(g_CurrentCKPT);
}
}
}
function StatusNavigate()
{
window.external.set_StatusIndex(IndexFromCKPT(g_CurrentCKPT, g_status));
}
///////////////////////////////////////////////////////////////////////////////
// GoNavigate
//
// This function is responsible for setting state prior to navigating to the
// first page of a checkpoint. This includes:
// * determining whether the page should be displayed
// * pushing the checkpoint id on the checkpoint stack
// * calling Navigate to navigate to the page
//
// Default behavior is to push the checkpoint id and navigate to the first page
// of the checkpoint. If this is the only processing required, use the
// default case instead of adding a case for the checkpoint.
//
// Calling GoNavigate recursively can cause navigation problems. If a page
// will not be displayed for a checkpoint, the code should fall through to the
// next case statement instead of calling GoNavigate.
//
// DON'T MUCK WITH THE ORDER OF THE CASES IN THE SWITCHES BELOW WITHOUT
// CONSIDERING FALL-THROUGH
///////////////////////////////////////////////////////////////////////////////
function GoNavigate(ckptGoHere)
{
try
{
if (g_bStartup == false)
{
if (IsLocalFile())
{
if (g.event != null)
{
g.event.returnValue = false;
g.event.cancelBubble = true;
}
}
}
else
g_bStartup = false;
}
catch(e)
{
return;
}
switch (ckptGoHere)
{
case CKPT_ISPSIGNUP:
trace("GoNavigate: CKPT_ISPSIGNUP");
if (HasAnalogModem())
{
PushCKPT(CKPT_ISPSIGNUP);
if (window.external.CalledFromMsn())
{
trace("GoNavigate: CKPT_ISPDIAL");
PushCKPT(CKPT_ISPDIAL);
Navigate(URLFromCKPT(CKPT_ISPDIAL));
}
else
{
Navigate(URLFromCKPT(CKPT_ISPSIGNUP));
}
break;
}
// fall through...
// BEGIN OEM CASES. DO NOT ADD CASES between here and CKPT_DONE. Doing so
// will break navigation.
//
case CKPT_OEMISP: // PreConfig case
trace("GoNavigate: CKPT_OEMISP");
if ( (STATUS_PRECONFIG == g_status) && !window.external.GetNoIspPreconfig())
{
ResetDialing();
PushCKPT(CKPT_OEMISP);
Navigate(URLFromCKPT(CKPT_OEMISP));
break;
}
// fall through...
case CKPT_OEMCUST:
trace("GoNavigate: CKPT_OEMCUST");
// Next line of code added by TandyT to support special ISP signup process commands
// Calls to function in agtcore.js
ResetDialing();
if (1 == DirObj.get_OEMCust)
{
PushCKPT(CKPT_OEMCUST);
Navigate(URLFromCKPT(CKPT_OEMCUST));
break;
}
// fall through...
//
// END OEM CASES
case CKPT_DONE:
trace("GoNavigate: CKPT_DONE");
ResetDialing();
PushCKPT(CKPT_DONE);
Navigate(URLFromCKPT(CKPT_DONE));
break;
default:
trace("GoNavigate: default (" + ckptGoHere + ")");
PushCKPT(ckptGoHere); // sets g_CurrentCKPT = ckptGoHere;
Navigate(URLFromCKPT(ckptGoHere));
break;
}
StatusNavigate();
}
///////////////////////////////////////////////////////////////////////////////
// GoNext
//
// This function is responsible for
// * Saving state for a page when the Next button is clicked.
// * Calling GoNavigate with the checkpoint id of the next checkpoint
//
// This function is NOT responsible for
// * Setting state for the next page. That should be done in GoNavigate.
//
// Default behavior is to call GoNavigate with an invalid checkpoint id.
// Therefore each checkpoint MUST have a case in the switch statement.
//
///////////////////////////////////////////////////////////////////////////////
function GoNext()
{
try
{
if (IsLocalFile() && g.event == null)
return;
}
catch(e)
{
return;
}
DisableAllButtons();
switch (g_CurrentCKPT)
{
case CKPT_ISPSIGNUP:
trace("GoNext: CKPT_ISPSIGNUP");
if (g.radioGetNewISP.checked)
{
if (window.external.CheckOnlineStatus && window.external.CheckStayConnected("msobe.isp"))
{
PushCKPT(CKPT_ISPDIAL);
g_IgnoreDialErr = false;
window.external.Connect(CONNECTED_ISP_SIGNUP, "msobe.isp");
}
else
{
window.external.Hangup();
GoNavigate(CKPT_ISPDIAL); // Getting Online
}
}
else if (g.radioMigrateISP.checked)
{
// We want the default behavior to be showing the migration path if ISPMigrate = 0 or
// is not specified
if (!DirObj.get_ShowISPMigration())
{
if (window.external.CheckOnlineStatus && window.external.CheckStayConnected("migrate.isp"))
{
g_bTapiDone = false;
GoNavigate(CKPT_REFDIAL);
}
else
{
window.external.Hangup();
GoNavigate(CKPT_REFDIAL);
}
}
else
{
GoNavigate(CKPT_ICONNECT);
}
}
else
{
GoCancel(); // skip checked
}
break;
case CKPT_REFDIAL:
GoNavigate(CKPT_ICONNECT);
break;
case CKPT_ICONNECT:
GoNavigate(CKPT_OEMCUST);
break;
case CKPT_ISPDIAL:
GoNavigate(CKPT_OEMCUST);
break;
case CKPT_OEMISP:
GoNavigate(CKPT_OEMCUST);
break;
case CKPT_OEMCUST:
GoNavigate(CKPT_DONE);
break;
case CKPT_DONE:
window.external.Finish();
break;
default:
// BUGBUG should we remove the default altogether?
GoNavigate(Need_to_handle_this_CKPT_in_GoNext);
break;
}
}
// BUGBUG temporary until MSN changes code
function GoOffline()
{
GoNext();
}
function GetCurrentPageName() {
var re = new RegExp("\\\\([^\\\\]+)$");
re.exec(g.window.location.pathname);
return RegExp.$1;
}
// these handle next/back navigation for non-checkpoint pages
function SimpleNavBack()
{
g.window.history.back();
}
/*
This version of SimpleNavNext contains the workaround for IE 90257. not enabled yet
another part of 90527 fix is in InitButtons()
*/
function SimpleNavNext() // original version that does not fix IE 90257
{
var CurPage = GetCurrentPageName();
var NextPage = g_SimpleNavMap.Item(CurPage);
Navigate(NextPage);
}
// Description: Disable all the buttons
// Used to prevent script error caused by
// double clicking or rapid clicking
// of two different buttons. E.g. when someone click
// next and back quickly.
//
function DisableAllButtons()
{
try
{
if(g.btnNext!=null)
{
g.btnNext.onclick=null;
}
} catch (e) {}
try
{
if(g.btnBack!=null)
{
g.btnBack.onclick=null;
}
} catch (e) {}
try
{
if(g.btnSkip!=null)
{
g.btnSkip.onclick=null;
}
} catch (e) {}
try
{
g.btnNext.disabled=true;
g.btnNext.className="newbuttonsNext-disabled";
}
catch(e) {}
try
{
g.btnBack.disabled=true;
g.btnBack.className="newbuttonsBack-disabled";
}
catch(e) {}
try
{
g.btnSkip.disabled=true;
g.btnSkip.className="newbuttonsSkip-disabled";
}
catch(e) {}
}
function GetAncestorByTag(elem, tagName)
{
if (elem == null || tagName == null)
{
return null;
}
var aNode = elem.parentNode;
var tagNameUpperCase = tagName.toUpperCase();
while (aNode != null && aNode.nodeName != tagNameUpperCase)
{
aNode = aNode.parentNode;
}
return aNode;
}
// Function: InitFrameRef
// Description: Sets up globals to point to buttons
// Since the buttons exist on the child frame,
// we want to have quick access to them without
// going through the collections.
//
// WARNING: Call this function at the top of XXX_LoadMe()
//
// SIDE-EFFECT: This function also sets the watermark appropriate for the screen size.
//
function InitFrameRef(ExternalModule)
{
trace("GoNext: InitFrameRef");
try
{
document.frames("connDelay").frameElement.style.display="none";
document.frames("connDelay").frameElement.style.zIndex=-1;
// We want to see a black frame around OOBE if our res. is > 1024.
// We initially set it to blue so that we will have a smooth transition from
// our animation to OOBE.
OOBEDocBody.style.backgroundColor="#000000";
}
catch (e)
{
}
g_LastButtonText = null;
g_FirstFocusElement = null;
g_LastKeyDown = null;
g = document.frames("msoobeMain");
try
{
g.document.body.style.backgroundColor = "transparent";
}
catch(e){}
try
{
if (g != null)
{
if(g.btnNext!=null)
g.btnNext.disabled=false;
if(g.btnBack!=null)
g.btnBack.disabled=false;
if(g.btnSkip!=null)
g.btnSkip.disabled=false;
}
g.document.body.onkeydown = OnKeyDown;
g.document.body.style.cursor = 'auto';
}
catch(e){}
}
function HideButtons(buttons)
{
if (null != g.btnBack && (buttons & HIDE_BACK))
{
g.btnBack.Hide = true;
}
if (null != g.btnNext && (buttons & HIDE_NEXT))
{
g.btnNext.Hide = true;
}
if (null != g.spanCancel && (buttons & HIDE_CANCEL))
{
g.btnSkip.Hide = true;
}
/*
if (null != g.spanRestore && (buttons & HIDE_RESTORE))
{
g.btnRestore.Hide = true;
}
*/
}
function HandleButtonMouseOver()
{
if((!this.disabled)&&(this.tagName=="BUTTON"))
this.className="buttons-hover";
}
function HandleButtonMouseOut()
{
if((!this.disabled)&&(this.tagName=="BUTTON"))
this.className="buttons";
}
function InitButtons(SimpleBack, SimpleNext)
{
// Some js files like dialmgr.js are both being used by OOBE and desktop activation,
// and the call to Initbuttons could either be in msobshel.htx or actshell.htx, so it's best to leave
// the initbuttons in the js files as it is and perform a checking here if we are in full screen OOBE or not.
if (!InReminderMode())
{
InitNewButtons(SimpleBack, SimpleNext);
}
else
{
if(g.btnSkip!=null) {
g.btnSkip.onmouseover = HandleButtonMouseOver;
g.btnSkip.onmouseout = HandleButtonMouseOut;
if(!g.btnSkip.disabled) {
g.btnSkip.onclick = GoCancel;
// dont enable onfocus,onblur handlers until issues in 88615 are resolved
// g.btnSkip.onfocus = HandleButtonMouseOver;
// g.btnSkip.onblur = HandleButtonMouseOut;
g.btnSkip.className="buttons";
} else {
g.btnSkip.className="buttons-disabled";
}
}
if (g.btnNext != null)
{
g.btnNext.onmouseover = HandleButtonMouseOver;
g.btnNext.onmouseout = HandleButtonMouseOut;
if (!g.btnNext.disabled)
{
if (SimpleNext == null)
{
g.btnNext.onclick = GoNext;
}
else
{
g.btnNext.onclick = SimpleNavNext;
}
g.btnNext.className="buttons";
}
else
{
g.btnNext.className="buttons-disabled";
}
}
if (g.btnBack != null)
{
g.btnBack.onmouseover = HandleButtonMouseOver;
g.btnBack.onmouseout = HandleButtonMouseOut;
if (!g.btnBack.disabled)
{
if (SimpleBack == null)
{
g.btnBack.onclick = GoBack;
}
else
{
g.btnBack.onclick = SimpleNavBack;
}
g.btnBack.className="buttons";
}
else
{
g.btnBack.className="buttons-disabled";
}
}
}
}
// New OOBE buttons
// -----------------------------------------------
function HandleBackButtonMouseOver()
{
if((!this.disabled)&&(this.tagName=="BUTTON"))
this.className="newbuttonsBack-hover";
}
function HandleBackButtonMouseOut()
{
if((!this.disabled)&&(this.tagName=="BUTTON"))
this.className="newbuttonsBack";
}
function HandleBackButtonMouseDown()
{
if((!this.disabled)&&(this.tagName=="BUTTON"))
this.className="newbuttonsBack-down";
}
function HandleSkipButtonMouseOver()
{
if((!this.disabled)&&(this.tagName=="BUTTON"))
this.className="newbuttonsSkip-hover";
}
function HandleSkipButtonMouseOut()
{
if((!this.disabled)&&(this.tagName=="BUTTON"))
this.className="newbuttonsSkip";
}
function HandleSkipButtonMouseDown()
{
if((!this.disabled)&&(this.tagName=="BUTTON"))
this.className="newbuttonsSkip-down";
}
function HandleNextButtonMouseOver()
{
if((!this.disabled)&&(this.tagName=="BUTTON"))
this.className="newbuttonsNext-hover";
}
function HandleNextButtonMouseOut()
{
if((!this.disabled)&&(this.tagName=="BUTTON"))
this.className="newbuttonsNext";
}
function HandleNextButtonMouseDown()
{
if((!this.disabled)&&(this.tagName=="BUTTON"))
this.className="newbuttonsNext-down";
}
function InitNewButtons(NewSimpleBack, NewSimpleNext)
{
if(g.btnSkip!=null)
{
g.btnSkip.onmouseover = HandleSkipButtonMouseOver;
g.btnSkip.onmouseout = HandleSkipButtonMouseOut;
g.btnSkip.onmousedown = HandleSkipButtonMouseDown;
if(!g.btnSkip.disabled)
{
g.btnSkip.onclick = GoCancel;
g.btnSkip.className="newbuttonsSkip";
}
else
{
g.btnSkip.className="newbuttonsSkip-disabled";
}
}
if (g.btnNext != null)
{
g.btnNext.onmouseover = HandleNextButtonMouseOver;
g.btnNext.onmouseout = HandleNextButtonMouseOut;
g.btnNext.onmousedown = HandleNextButtonMouseDown;
if (!g.btnNext.disabled)
{
if (NewSimpleNext == null)
g.btnNext.onclick = GoNext;
else
g.btnNext.onclick = SimpleNavNext;
g.btnNext.className="newbuttonsNext";
}
else
{
g.btnNext.className="newbuttonsNext-disabled";
}
}
if (g.btnBack != null)
{
g.btnBack.onmouseover = HandleBackButtonMouseOver;
g.btnBack.onmouseout = HandleBackButtonMouseOut;
g.btnBack.onmousedown = HandleBackButtonMouseDown;
if (!g.btnBack.disabled)
{
if (NewSimpleBack == null)
g.btnBack.onclick = GoBack;
else
g.btnBack.onclick = SimpleNavBack;
g.btnBack.className="newbuttonsBack";
}
else
{
g.btnBack.className="newbuttonsBack-disabled";
}
}
var btn;
if (g.btnNext!=null)
{
btn = g.btnNext;
}
else if (g.btnBack!=null)
{
btn = g.btnBack;
}
else (g.btnSkip!=null)
{
btn = g.btnSkip;
}
var ButtonLayoutTable = GetAncestorByTag(btn, "table");
if ((ButtonLayoutTable != null) &&
(ButtonLayoutTable.className == "newbuttonposition"))
{
var styleObj = ButtonLayoutTable.style;
if (g.document.body.scrollHeight > g.document.body.clientHeight)
{
styleObj.position = "relative";
styleObj.top = "0%";
styleObj.width = "98%";
}
if (g.document.body.scrollHeight <= g.document.body.clientHeight)
{
styleObj.position = "absolute";
styleObj.top =
(parseInt(100 - 35 * 100 / parseInt(MainFrameTable.style.height)) + "%");
styleObj.width = "110%";
}
}
}
var g_LastKeyDown = null;
function OnKeyDown()
{
try
{
if (IsLocalFile() && g.event == null)
return;
}
catch(e)
{
return;
}
if (g.event.altKey)
{
g_LastKeyDown = String.fromCharCode(g.event.keyCode);
if (g_LastKeyDown != null)
g_LastKeyDown = g_LastKeyDown.toUpperCase();
}
else
g_LastKeyDown = null;
}
// AGENT: SelectClick is used by Agent
function OnSelectClick()
{
}
// AGENT: OnClick is used by Agent
function OnClick()
{
}
// AGENT: Focus functions are used by Agent
function OnFocus()
{
// Put other code here that needs access to the focus event
}
// VALIDATION ROUTINES
function KeyPressIsNumeric()
{
try
{
if (IsLocalFile() && g.event == null)
return;
}
catch(e)
{
return;
}
if (!IsNumeric(g.event.keyCode))
{
g.event.keyCode = 0;
g.event.returnValue = false;
}
}
function IsNumeric(keyCode)
{
if ((keyCode >= 48/*0*/) && (keyCode <= 57/*9*/))
return true;
else
return false;
}
function IsSpecial(keyCode)
{
// BUGBUG DISABLED FOR BETA
/*
var bFound = false;
var iPosition = 0;
for (;iPosition < g_SpecialChars.length; iPosition++)
{
if (g_SpecialChars.charCodeAt(iPosition) == keyCode)
{
bFound = true;
break;
}
}
return bFound;
*/
return false;
}
function KeyPressIsValid()
{
try
{
if (IsLocalFile() && g.event == null)
return;
}
catch(e)
{
return;
}
if (!IsAlpha(g.event.keyCode) &&
!IsSpecial(g.event.keyCode) &&
!IsNumeric(g.event.keyCode))
{
g.event.keyCode = 0;
g.event.returnValue = false;
}
}
function KeyPressIsAlpha()
{
try
{
if (IsLocalFile() && g.event == null)
return;
}
catch(e)
{
return;
}
if (!IsAlpha(g.event.keyCode))
{
g.event.keyCode = 0;
g.event.returnValue = false;
}
}
function IsAlpha(keyCode)
{
// BUGBUG DISABLED FOR BETA
/*
var strKeyCode = String.fromCharCode(keyCode);
var re1 = new RegExp("\w"); // BUGBUG: should \ be escaped?
var re2 = new RegExp("\D"); // BUGBUG: should \ be escaped?
strKeyCode.match(re1);
strKeyCode.match(re2);
//return ((strKeyCode.match(re1) != null) && (strKeyCode.match(re2) != null));
*/
// if ((keyCode >= 97/*a*/ && keyCode <= 122/*z*/) ||
// (keyCode >= 65/*A*/ && keyCode <= 90 /*Z*/))
return true;
// else
// return false;
}
function NumberOfSpaces(strValue)
{
/*
var NASexp = RegExp("\s"); // BUGBUG: should \ be escaped?
var result = strValue.match(NASexp);
return ((result == null) || (result.length != strValue.length));
*/
var iSpaceCount = 0;
for (iPosition = 0; iPosition < strValue.length; iPosition ++)
{
if (strValue.charAt(iPosition) == ' ')
{
iSpaceCount++;
}
}
return iSpaceCount;
}
function KeyCodeToUpper()
{
var strKeyCode = String.fromCharCode(g.event.keyCode);
strKeyCode = strKeyCode.toUpperCase();
g.event.keyCode = strKeyCode.charCodeAt(0);
}
// END VALIDATION ROUTINES
function SetupPageLayout()
{
var DTWindowHeight = document.body.clientHeight;
var DTWindowWidth = document.body.clientWidth;
ScreenFrame.style.height = DTWindowHeight - 30;
ScreenFrame.style.width = DTWindowWidth;
NewMicrosoftLogo.src = 'images/mslogo.jpg';
NewWatermarkBackground.src = 'images/newmark1.jpg';
NewWatermarkTop.src = 'images/newtop1.jpg';
NewWatermarkBottom.src = 'images/newbtm1.jpg';
NewWatermarkTop.style.top = -8;
NewWatermarkBottom.style.top = parseInt(ScreenFrame.style.height) - 19;
MainFrameTable.style.top = parseInt(NewWatermarkTop.style.top) +
56; // NewWatermarkTop.style.height
MainFrameTable.style.height = parseInt(NewWatermarkBottom.style.top) -
parseInt(MainFrameTable.style.top);
if (window.parent.document.dir == "rtl")
spnAssist.style.left = 10;
}
function InitApplication()
{
OOBEDocBody.style.cursor = "wait"; // show "wait" cursor while initializing
OOBEDocBody.style.backgroundColor="black";
g_bStartup = true;
InitFrameRef();
// Check if oemlogo under [Branding] is present in oobeinfo.ini,
// If so, check if that file does exists, and then use it.
var OEMLogoFile = null;
OEMLogoFile = ApiObj.get_INIKey("branding", "oemlogo");
if ( (OEMLogoFile != null)
&& (OEMLogoFile.length>0)
&& FileSystemObj.FileExists(g_OOBEDirPath+"images\\"+OEMLogoFile) )
{
spnOEMLogo.style.visibility="visible";
spnOEMLogo.style.backgroundImage = 'url(images/' + OEMLogoFile + ')';
}
SetupPageLayout();
InitCKPT();
EmptyCKPTStack();
spnPage.style.visibility = "visible";
g_PreferredConnection = CONNECTIONTYPE_MODEM;
window.external.SetICWCompleted();
// Navigate to proper page
InitStatusMenu();
OOBEDocBody.style.cursor = "default";
ScreenFrame.style.display = "inline";
GoNavigate(CKPT_ISPSIGNUP);
// Now that we've navigated, make sure we show the OOBE window.
window.external.ShowOOBEWindow();
}
function InitStatusMenu()
{
trace("InitStatusMenu");
if ( (1 == DirObj.get_Offline() || false == InternetCapabilityExists() ))
{
g_status = STATUS_OFF;
StatusObj.set_Status(NOLAUNCHISPSIGNUP, true);
window.external.LoadStatusItems("No Modem");
}
else
{
if (UseIcs())
{
window.external.TriggerIcsCallback(true);
}
else
{
window.external.TriggerIcsCallback(false);
}
var str = DirObj.get_ISPSignup().toUpperCase();
if ("MSN" == str)
{
g_status = STATUS_ISP;
if ( window.external.get_RegStatus() )
window.external.LoadStatusItems("MSN(No Reg)");
else
window.external.LoadStatusItems("MSN");
}
else if ("OFFLINE" == str)
{
g_status = STATUS_ISP;
if ( window.external.get_RegStatus() )
window.external.LoadStatusItems("Offline(No Reg)");
else
window.external.LoadStatusItems("Offline");
}
else if ("PRECONFIG" == str)
{
g_status = STATUS_PRECONFIG;
if ( window.external.get_RegStatus() )
window.external.LoadStatusItems("Preconfig(No Reg)");
else
window.external.LoadStatusItems("Preconfig");
}
else
{
g_status = STATUS_NONE;
StatusObj.set_Status(NOLAUNCHISPSIGNUP, true);
if ( window.external.get_RegStatus() )
window.external.LoadStatusItems("None(No Reg)");
else
window.external.LoadStatusItems("None");
}
}
}
function ProcessQueuedEvents() {
// flush all WM_ events in windows queue.
// workaround for IE 103880, 'white flashes in statpane & button on page unload'
window.external.ProcessQueuedEvents();
}
///////////////////////////////////////////////////////////////////////////////
// isp.htm
///////////////////////////////////////////////////////////////////////////////
var g_bRadioMigrateISP=false;
var g_MSNISP=false;
var g_ExistISP=false;
var g_NoISP=false;
function IspLoadMe()
{
InitFrameRef();
if (g_status == STATUS_ISP || g_status == STATUS_OFF)
{
g.radioGetNewISP.style.display = "inline";
g.ISP_New.style.display = "inline";
g.radioGetNewISP.checked=true;
g_FirstFocusElement = g.radioGetNewISP;
}
else
{
g.radioGetNewISP.style.display = "none";
g.ISP_New.style.display = "none";
g.radioMigrateISP.checked=true;
g_FirstFocusElement = g.radioMigrateISP;
}
InitNewButtons();
g.btnBack.style.visibility = "hidden";
g.BackBtnLocalText.style.visibility = "hidden";
g_FirstFocusElement.focus();
}
function IspUnLoad()
{
try
{
g_bRadioMigrateISP = (g.event.srcElement==g.radioMigrateISP);
}
catch (e) {}
}
////////////////////////////////////////////////////////////////////
// DO NOT REMOVE THIS FUNCTION THIS WILL GET CALLED WHEN F1 IS
// PRESSED.
////////////////////////////////////////////////////////////////////
function OnHelp()
{
// Invoke MSAgent
}
</script>
</HEAD>
<BODY ID=OOBEDocBody leftMargin=0 DIR=LTR onload="InitApplication();" scroll=no tabIndex=-1 topMargin=0 language=javascript onhelp="Agent_OnUserRequestAssistant();">
<SPAN ID=junkspan style="height:2px; width:2px; background-color:black; z-index:99; display:none">
</SPAN>
<SPAN ID=ScreenFrame style="height:100%; width:100%; position:absolute; display:none">
<IMG ID=NewWatermarkBackground style="LEFT: 0px; TOP: 0px; POSITION: absolute; z-index:-99;" alt="">
<IMG ID=NewWatermarkTop style="display: inline; LEFT: 0px; TOP: 0px; POSITION: absolute; z-index:-98;" alt="">
<IMG ID=NewWatermarkBottom style="display: inline; LEFT: 0px; TOP: 0px; POSITION: absolute; z-index:-97;" alt="">
<IMG ID=NewMicrosoftLogo style="display: inline; LEFT: 20px; TOP: 5px; POSITION: absolute; z-index:-96;" alt="">
<SPAN id=spnOEMLogo style="visibility:hidden; position:absolute; TOP:7px; LEFT:525px; width:255px; HEIGHT:40px; z-index:10; background-repeat:no-repeat;">
</SPAN>
<TABLE border=0 ID=MainFrameTable cellpadding=0 cellspacing=0 style="z-index:6; position:absolute; left:0px; top:25px; width:100%; height:97%">
<TR>
<TD style="height:100%">
<SPAN id=spnPage style="VISIBILITY: hidden; z-index:4; width: 100%; height:100%;" tabIndex=-1>
<SPAN id=spnMainFrame style="width: 100%; height:100%" tabIndex=-1>
<IFRAME ALLOWTRANSPARENCY="true" id=ifrmMainFrame frameBorder=no scrolling=auto width="100%" height="100%" name=msoobeMain tabIndex=0></IFRAME>
<IFRAME ALLOWTRANSPARENCY="true" id=ifrmConnDelay frameBorder=no style="display:none; position:absolute; z-index:-1; left: 0px; top: 0px;" scrolling=no width="100%" height="100%" name=connDelay tabIndex=-1 src="setup/dtiwait.htm"></IFRAME>
</SPAN>
</SPAN>
</TD>
</TR>
</TABLE>
</SPAN>
</BODY>
</HTML>