<HTML> <HEAD> <TITLE>Microsoft Out-of-Box Experience</TITLE> <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <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. // Checkpoint constants var CKPT_START = 1; var CKPT_TAPI = 2; var CKPT_DIALING = 3; var CKPT_DIALTONE = 4; var CKPT_MSNINTRO = 6; var CKPT_WINMSNEULA = 7; var CKPT_IAASSIGNED = 8; var CKPT_PASSPORT = 9; var CKPT_PIDKEY = 10; var CKPT_MSNPORTAL = 12; var CKPT_MODEMCANCEL = 13; var CKPT_MOUSE = 14; var CKPT_REGKB = 15; var CKPT_OEMHW = 16; var CKPT_USERINFO = 17; var CKPT_EULA = 18; var CKPT_PID = 19; var CKPT_OEMISP1 = 20; var CKPT_OEMISP2 = 21; var CKPT_OEMISP3 = 22; var CKPT_CONGRATS = 23; var CKPT_CONNECT = 24; var CKPT_OEMREG = 25; var CKPT_INSTALLED = 26; var CKPT_ERROR = 27; var CKPT_REGKBCOMMIT = 28; var CKPT_BADPID = 29; var CKPT_MSNINFO = 30; var CKPT_MSNIDPASS = 31; var CKPT_MSNCONSET = 32; var CKPT_MSNPAYMENT = 33; var CKPT_PRIVACYGUARANTEE = 34; var CKPT_PASSSIGN = 35; var CKPT_REGISTER = 36; // CheckDialReady errors var ERR_COMM_NO_ERROR = 0; var ERR_COMM_OOBE_COMP_MISSING = 1; var ERR_COMM_UNKNOWN = 2; var ERR_COMM_NOMODEM = 3; var ERR_COMM_RAS_TCP_NOTINSTALL = 4; // Dialing errors var DERR_DIALTONE = -1; var DERR_BUSY = -2; var DERR_SERVERBUSY = -3; // Various objects var TapiObj = null; var InfoObj = null; var EulaObj = null; var LangObj = null; var PidObj = null; var StatusObj = null; var DirObj = null; // References to objects on msoobeMain var g = null; // global string var g_strPrefix = ""; // Mandatory Initialization Code if (StatusObj == null) { StatusObj = new Object; StatusObj = window.external.Status; } if (DirObj == null) { DirObj = new Object; DirObj = window.external.Directions; } if (InfoObj == null) { InfoObj = new Object; InfoObj = window.external.UserInfo; } // END Initialization Code // start.htm function Start_OnKeyPress() { // Treat the enter key like the next button // since the user hasn't gone through the mouse tutorial yet. if ((g.event.keyCode == 13) && (g.btnNext.disabled == false)) { GoNext(CKPT_START); } } // Function: Start_LoadMe // Description: This function is called after start.htm is // loaded. we then initialize Items on the page. // we also populate the edits with any values already // found in the registry. // function Start_LoadMe() { InitGlobals(); // disable the next button until any field has a value. g.btnNext.disabled = true; InfoObj = new Object; InfoObj = window.external.UserInfo; g.edt_FirstName.value = InfoObj.get_FirstName(); g.edt_MiddleName.value = InfoObj.get_MiddleInitial(); g.edt_LastName.value = InfoObj.get_LastName(); // set focus on the first edit field. g.edt_FirstName.focus(); Start_CheckEnableNextButton(); InitButtons(); } // Function: Start_CheckEdits // Description: This function is called everytime an OnClick // event fires on the page. This is done so if the user // loses focus from one of the edits we can push them // in the right direction and hint them along the way // Or if all elements are filled then we enabled // the next button or if any value is 0 then we // disable the next button // function Start_CheckEdits() { if ((g.event.srcElement != g.edt_FirstName) && (g.event.srcElement != g.edt_MiddleName) && (g.event.srcElement != g.edt_LastName)) { Start_CheckEnableNextButton(); } } // Function: Start_CheckEnableNextButton // Description: This function is called everytime a keyup // event fires on a edit box for first, middle, or last // name. We then see if we should enable or disable the // next button based on if every field has a value. // function Start_CheckEnableNextButton() { if ((g.edt_FirstName.value.length != 0) || (g.edt_MiddleName.value.length != 0) || (g.edt_LastName.value.length != 0)) { g.btnNext.disabled = false; InitButtons(); } else { g.btnNext.disabled = true; InitButtons(); } } // END start.htm // tapi.htm function TapiLoadMe() { InitGlobals(); TapiObj = new Object; TapiObj = window.external.Tapi; InitButtons(); RetrieveTapi(); } function StoreTapi() { TapiObj.set_CountryIndex = g.selCountry.selectedIndex; // TapiObj.set_AreaCode = g.edtAreaCode.value; TapiObj.set_PhoneSystem = radioTouchTone.value ? 1 : 0; // TapiObj.set_CallWaiting = g.edtCallWaiting.value; TapiObj.set_DialOut = g.edtOutsideLine.value; } function RetrieveTapi() { var fTapi = TapiObj.IsTAPIConfigured; var ilen = TapiObj.get_NumOfCountry; for (var i = 0; i < ilen; i++) { var oOption = g.document.createElement("OPTION"); oOption.text = TapiObj.get_CountryNameForIndex(i); g.selCountry.add(oOption); } g.selCountry.selectedIndex = TapiObj.get_CountryIndex; //g.edtAreaCode.value = TapiObj.get_AreaCode; radioTouchTone.value = TapiObj.get_PhoneSystem ? true : false; g.edtCallWaiting.value = //(TapiObj.get_CallWaiting == "") ? TapiObj.get_CallWaiting : "*70"; g.edtOutsideLine.value = TapiObj.get_DialOut; } function tapi_CallWaitingClicked() { if (radioCallWaiting[0].checked == true) { spanCallWaitingDisable.style.visibility = "visible"; } else { spanCallWaitingDisable.style.visibility = "hidden"; } } function tapi_OutsideLineClicked() { if (radioOutsideLine[0].checked == true) { spanOutsideLine.style.visibility = "visible"; } else { spanOutsideLine.style.visibility = "hidden"; } } // END tapi.htm // connect.htm function connect_LoadMe() { InitGlobals(); InitButtons(); setTimeout("DoDial()" , 40); } function DoDial() { g.spnDialing.style.color = 0x990000; g.spnConnecting.style.color = 0x999999; g.spnConnected.style.color = 0x999999; window.external.Dial("msobe.idp"); } <!--REQUIRED FUNCTION PROTOTYPE :: DO NOT ALTER--> function OnDialing() { //"Dialing" } <!--REQUIRED FUNCTION PROTOTYPE :: DO NOT ALTER--> function OnConnecting() { //"Connecting" g.spnDialing.style.color = 0x999999; g.spnConnecting.style.color = 0x990000; g.spnConnected.style.color = 0x999999; } <!--REQUIRED FUNCTION PROTOTYPE :: DO NOT ALTER--> function OnDownloading() { //"Downloading" g.spnDialing.style.color = 0x999999; g.spnConnecting.style.color = 0x999999; g.spnConnected.style.color = 0x990000; } <!--REQUIRED FUNCTION PROTOTYPE :: DO NOT ALTER--> function OnDisconnect() { //"Disconnected" ; } <!--REQUIRED FUNCTION PROTOTYPE :: DO NOT ALTER--> function OnDialingError(derr) { //"dial error" window.external.Hangup(); switch (derr) { case DERR_DIALTONE: g.navigate("error.htm"); break; case DERR_BUSY: break; case DERR_SERVERBUSY: break; } } // END dial.htm // userinfo.htm function UserInfoLoadMe() { RetrieveUserInfo(); } function StoreUserInfo() { InfoObj.set_FirstName = g.edt_FirstName.value; InfoObj.set_MiddleInitial = g.edt_MiddleInitial.value; InfoObj.set_LastName = g.edt_LastName.value; InfoObj.set_CompanyName = g.edt_CompanyName.value; InfoObj.set_Address = g.txt_Address.value; InfoObj.set_City = g.edt_City.value; InfoObj.set_State = g.sel_State.value; InfoObj.set_Zip = g.edt_Zip.value; InfoObj.set_PrimaryEmail = g.edt_PrimaryEmail.value; InfoObj.set_SecondaryEmail = g.edt_SecondaryEmail.value; InfoObj.set_AreaCode = g.edt_AreaCode.value; InfoObj.set_Prefix = g.edt_Prefix.value; InfoObj.set_Number = g.edt_Number.value; } function RetrieveUserInfo() { g.edt_FirstName.value = InfoObj.get_FirstName; g.edt_MiddleInitial.value = InfoObj.get_MiddleInitial; g.edt_LastName.value = InfoObj.get_LastName; g.edt_CompanyName.value = InfoObj.get_CompanyName; g.txt_Address.value = InfoObj.get_Address; g.edt_City.value = InfoObj.get_City; g.sel_State.value = InfoObj.get_State; g.edt_Zip.value = InfoObj.get_Zip; g.edt_PrimaryEmail.value = InfoObj.get_PrimaryEmail; g.edt_SecondaryEmail.value = InfoObj.get_SecondaryEmail; g.edt_AreaCode.value = InfoObj.get_AreaCode; g.edt_Prefix.value = InfoObj.get_Prefix; g.edt_Number.value = InfoObj.get_Number; } // END userinfo.htm // eula.htm function EulaLoadMe() { InitGlobals(); EulaObj = new Object; EulaObj = window.external.Eula; if (StatusObj.get_EULACompleted) { RetrieveEula(); } else { g.btnNext.disabled = true; } InitButtons(); } function EulaRadioClicked(fAccept) { g.btnNext.disabled = false; g.btnNext.src = g_strPrefix + "images/rhtdef.gif"; g.btnNextText.style.color = "black"; StoreEula(); } function StoreEula() { EulaObj.set_EULAAcceptance = (radioEULA(0).checked == true) ? true : false; } function RetrieveEula() { Agreement.value = EulaObj.get_EULAAcceptance; } // END eula.htm // regkbcmt.htm function RegKBCmt_LoadMe() { InitButtons(); } // END regkbcmt.htm // regkb.htm function RegKBLoadMe() { InitGlobals(); LangObj = new Object; LangObj = window.external.Language; InitButtons(); RetrieveRegKB(); } function StoreRegKB() { LangObj.set_RegionIndex = g.selRegion.selectedIndex; LangObj.get_KeyboardLayoutIndex = g.selKeyboard.selectedIndex; } function RetrieveRegKB() { var ilen = LangObj.get_NumOfRegions; for (var i = 0; i < ilen; i++) { var oOption = g.document.createElement("OPTION"); oOption.text = LangObj.get_RegionName(i); g.selRegion.add(oOption); } g.selRegion.selectedIndex = LangObj.get_RegionIndex; ilen = LangObj.get_NumOfKeyboardLayouts; for (i = 0; i < ilen; i++) { var oOption = g.document.createElement("OPTION"); oOption.text = LangObj.get_KeyboardLayoutName(i); g.selKeyboard.add(oOption); } g.selKeyboard.selectedIndex = LangObj.get_KeyboardLayoutIndex; } // END regkb.htm // badpid.htm function badpid_LoadMe() { InitGlobals(); InitButtons(); } // pid.htm function PID_LoadMe() { InitGlobals(); PidObj = new Object; PidObj = window.external.ProductID; RetrievePid(); g.btnNext.disabled = false; InitButtons(); PID_CheckLength(); } function PID_CheckLength() { var iLength = 0; for (iElement = 0; iElement < 5; iElement++) { iLength += g.edtProductKey[iElement].value.length; if (iLength < 5 * iElement) break; } if (iLength == 25) { g.btnNext.disabled = false; g.btnNext.src = g_strPrefix + "../images/rhtdef.gif"; g.btnNextText.style.color= "black"; } else { g.btnNext.disabled = true; g.btnNext.src = g_strPrefix + "../Images/rhtdsld.gif"; g.btnNextText.style.color= "gray"; } } function RetrievePid() { // retrieves the pid if avialable. var strPid = PidObj.get_PID(); // if there is no PID then we set the // focus to the first field if (strPid.length == 0) { g.edtProductKey[0].focus(); } // else we populate the fields with the // sections of the PID and then put the // focus onto the next button for validation. else { for(i = 0; i < 5; i++) { g.edtProductKey[i].value = strPid.substr(i * 5, 5); } g.btnNext.focus(); } } function ValidatePid() { var strPid = ""; for(i = 0; i < 5; i++) { strPid += g.edtProductKey[i].value; } return PidObj.ValidatePID(strPid); } function StorePid() { var strPid = ""; for(i = 0; i < 5; i++) { strPid += g.edtProductKey[i].value; } PidObj.set_PID(strPid); StatusObj.set_PIDCompleted = true; } function ProductIDKeyPress() { // if the length is 5 then we want to move the focus // to the next field and also save the input to the // next field if (g.event.srcElement.value.length == 5) { // find the index at which we are. for (i = 0; i < 5; i++) { // find which index we are so we // know which one to move to next if (g.edtProductKey[i] == g.event.srcElement) { // if we are in the last field move to the next button // else move to the key code to the next field and don't // put the value into the current field if (i == 4) { g.btnNext.focus(); } else { g.edtProductKey[i+1].value += String.fromCharCode(g.event.keyCode); } g.event.returnValue = false; break; } } } } function ProductIDKeyUp() { PID_CheckLength(); // only need to do move forward // or backwards if length is 0 or 5 if ((g.event.srcElement.value.length == 5) || (g.event.srcElement.value.length == 0)) { for (i = 0; i < 5; i++) { // find which index we are so we // know which one to move to next if (g.edtProductKey[i] == g.event.srcElement) { // if we maxed the length of the field then // move forward if (g.event.srcElement.value.length == 5) { // if we are in the last field move to the next button // else move to the next productID field if (i == 4) { g.btnNext.focus(); } else { g.edtProductKey[i+1].focus(); } } // if we have not data in the field // then we most have deleted the contents else // length = 0 { // only need to move the focus if we // are not in the first field. if (i != 0) { g.edtProductKey[i-1].focus(); } } break; } } } } // END pid.htm // error.htm function Error_LoadMe() { InitGlobals(); InitButtons(); } // END error.htm // ispsgnup.htm // END ispsgnup.htm // speedy2.htm // END speedy2.htm // speedy3.htm // END speedy3.htm // mouse.htm function mouse_LoadMe() { InitGlobals("../../"); InitButtons(); } // END mouse.htm // oemhw.htm function oemhw_LoadMe() { btnNext.disabled = true; InitButtons("../"); } function oemhw_HearSoundClicked() { if (event.srcElement == radioHearSound[0]) { radioHearSound[0].checked = true; radioHearSound[1].checked = false; btnNext.disabled = false; InitButtons(); } else if (event.srcElement == radioHearSound[1]) { radioHearSound[0].checked = false; radioHearSound[1].checked = true; btnNext.disabled = false; InitButtons(); } } // END oemhw.htm // oemreg.htm function oemreg_LoadMe() { InitGlobals("../../"); g.edt_FirstName.value = InfoObj.get_FirstName(); g.edt_MiddleInitial.value = InfoObj.get_MiddleInitial(); g.edt_LastName.value = InfoObjt.get_LastName(); InitButtons(); } // END oemreg.htm // oemlegal.htm function oemlegal_LoadMe() { InitGlobals("../../"); InitButtons(); } // END oemlegal.htm // oemadd.htm // END oemadd.htm // msneula.htm function msneula_LoadMe() { InitGlobals(); g.btnNext.disabled = false; InitButtons(); } // END msneula.htm // msnsign.htm function msnsign_LoadMe() { InitGlobals(); InitButtons(); } function msnsign_SignupWishClicked() { for (iElement = 0; iElement < 4; iElement++) { radioSignupWish[iElement].checked = false; } event.srcElement.checked = true; } // END msnsign.htm // msninfo.htm function msninfo_LoadMe() { InitGlobals(); g.edt_FirstName.value = InfoObj.get_FirstName(); g.edt_MiddleInitial.value = InfoObj.get_MiddleInitial(); g.edt_LastName.value = InfoObj.get_LastName(); btnNext.disabled = false; InitButtons(); } // END msninfo.htm // msnidpss.htm function msnidpss_LoadMe() { InitGlobals(); g.btnNext.disabled = false; InitButtons(); } function msnidpss_NameSelectionClicked() { for (iElement = 0; iElement < 4; iElement++) { radioNameSelection[iElement].checked = false; } event.srcElement.checked = true; } // END msnidpss.htm // msnconset.htm function msnconset_LoadMe() { InitGlobals(); InitButtons(); } // END msnconset.htm // msnpymnt.htm function msnpymnt_LoadMe() { InitGlobals(); g.btnNext.disabled = false; InitButtons(); } // END msnpymnt.htm // passsign.htm function passsign_LoadMe() { InitGlobals(); InitButtons(); } function passsign_WantPassportClicked() { if (event.srcElement == radioWantPassport[0]) { radioWantPassport[0].checked = true; radioWantPassport[1].checked = false; } else { radioWantPassport[0].checked = false; radioWantPassport[1].checked = true; } } // END passsign.htm // passact.htm // END passact.htm // passreg.htm function passreg_LoadMe() { InitGlobals(); g.edt_FirstName.value = InfoObj.get_FirstName(); g.edt_MiddleInitial.value = InfoObj.get_MiddleInitial(); g.edt_LastName.value = InfoObj.get_LastName(); InitButtons(); } // END passreg.htm // register.htm function register_LoadMe() { InitGlobals(); g.edt_FirstName.value = InfoObj.get_FirstName(); g.edt_MiddleInitial.value = InfoObj.get_MiddleInitial(); g.edt_LastName.value = InfoObj.get_LastName(); InitButtons(); } // END register.htm // congrats.htm function congrats_LoadMe() { InitGlobals(); InitButtons(); } function congrats_AccessInternetClicked() { if (event.srcElement == radioAccessInternet[0]) { radioAccessInternet[0].checked = true; radioAccessInternet[1].checked = false; } else { radioAccessInternet[0].checked = false; radioAccessInternet[1].checked = true; } } // END congrats.htm // eulawarn.htm // END eulawarn.htm // installd.htm function installd_LoadMe() { InitGlobals(); InitButtons(); } // END installd.htm // usemodem.htm function usemodem_LoadMe() { InitGlobals(); InitButtons(); } // END usemodem.htm // MISC Functions // Function: DoOfflineOnlineModeFromStart // Description: picks which direction to go based // on OEM decision in OOBEWiz and if Modem Available // if either fail then we do offline navigation by // calling DoOffline. // function DoOfflineOnlineModeFromStart() { // online navigation if successful // else offline navigation // TODO: Needs to be dealt with if ( 1/*need to get OOBEwiz default-OnlineMode */ && window.external.CheckDialReady() == ERR_COMM_NO_ERROR) { g.navigate("tapi.htm"); } else { g.navigate(".." + OfflineStart()); } } // Function: OfflineStart // Description: We want to start offline mode. // Figure out which page to start at. // function OfflineStart() { if (!StatusObj.get_EULACompleted) { return "/setup/eula.htm"; } else if (!StatusObj.get_PIDCompleted) { return "/setup/pid.htm"; } else if (window.external.CheckDialReady == ERR_COMM_NOMODEM) { return "/setup/installd.htm"; } else if (DirObj.get_ISPSignup.toUpperCase != "MSN") { return "/html/ispsgnup/ispsgnup.htm"; } else if (StatusObj.get_ISPSignupCompleted) { return "/setup/congrats.htm"; } else { return "/setup/installd.htm"; } } // Function: GoMouseTutorial // Description: Sees if we already did the mouse // tutorial if not then we see if there is a // mouse tutorial to do then if there is one // we check to see if it is an .exe or not // if not we navigate to the page else we // start a process // function GoMouseTutorial() { var bReturnValue = false; if (!StatusObj.get_MouseTutorCompleted()) { // get mouse tutorial string var strMouseTutorial = DirObj.get_DoMouseTutorial(); if (strMouseTutorial.length != 0) { /* if .exe in mouse string then execute that app else navigate to the file */ // TODO: check to see if exe and create process if (0) { // need to check if exe and execute else navigate } else { g.navigate("../html/mouse/" + strMouseTutorial); } bReturnValue = true; } } // return if we navigated to the mouse tutorial or not return bReturnValue; } // Function: GoRegionalKeyboard // Description: Sees if we already did the // regional/keyboard settings if not // we check to see if we should if so then // we navigate to the regional settings page. // function GoRegionalKeyboard() { var bReturnValue = false; if (!StatusObj.get_LanguageCompleted()) { if (DirObj.get_DoRegionalKeyboard() == 1) { g.navigate("regkb.htm"); bReturnValue = true; } } // return if we navigated to the page or not. return bReturnValue; } // Function: GoOEMHardwareCheck // Description: Sees if we already did the // OEM HardwareCheck if not we see if we // should do the OEM hardware check. if we // should do the check we navigate to the page // function GoOEMHardwareCheck() { var bReturnValue = false; // if (!StatusObj.get_OEMHWCompleted()) { if (DirObj.get_DoOEMHardwareCheck() == 1) { g.navigate("../html/oemhw/oemhw.htm"); bReturnValue = true; } } // return if we navigated to the page or not. return bReturnValue; } // Page Navigation function GoCancel(ckpt) { if (g.spanRestore != null) { g.btnCancel.src = g_strPrefix + "images/lftclkw.gif"; } else { g.btnCancel.src = g_strPrefix + "images/clicked.gif"; } switch (ckpt) { case CKPT_TAPI: g.navigate(".." + OfflineStart()); break; case CKPT_CONNECT: window.external.Hangup(); g.navigate("usemodem.htm"); break; case CKPT_MODEMCANCEL: g.navigate(".." + OfflineStart()); break; case CKPT_MSNINTRO: window.external.Hangup(); g.navigate(".." + OfflineStart()); break; case CKPT_MSNINFO: window.external.Hangup(); g.navigate(".." + OfflineStart()); break; case CKPT_MSNPAYMENT: break; case CKPT_PASSSIGN: break; case CKPT_PASSPORT: break; case CKPT_REGISTER: break; } } function GoRestore(ckpt) { if (g.spanCancel != null) { g.btnRestore.src = g_strPrefix + "images/rhtclkw.gif"; } else { g.btnRestore.src = g_strPrefix + "images/clicked.gif"; } switch (ckpt) { case CKPT_OEMISP1: alert("need to navigate"); break; } } function GoBack(ckpt) { if (g.spanNext != null) { g.btnBack.src = g_strPrefix + "images/lftclk.gif"; } else { g.btnBack.src = g_strPrefix + "images/clicked.gif"; } switch (ckpt) { case CKPT_TAPI: StoreTapi(); g.navigate("start.htm"); break; case CKPT_MOUSE: g.navigate("../../setup/start.htm"); break; case CKPT_REGKB: // go back to start since Mouse has already been completed. g.navigate("../../setup/start.htm"); break; case CKPT_OEMHW: // go back to start since RegKB and Mouse have already been completed. g.navigate("../../setup/start.htm"); break; case CKPT_USERINFO: StoreUserInfo(); g.navigate("regkb.htm"); break; case CKPT_EULA: g.navigate("start.htm"); break; case CKPT_MSNINTRO: window.external.Hangup(); g.navigate("../setup/tapi.htm"); break; case CKPT_WINMSNEULA: break; case CKPT_IAASSIGNED: break; case CKPT_PASSPORT: break; case CKPT_MSNPORTAL: break; case CKPT_PID: g.navigate("eula.htm"); break; case CKPT_OEMISP1: g.navigate("pid.htm"); break; case CKPT_OEMISP2: g.navigate("speedy.htm"); break; case CKPT_OEMISP3: g.navigate("speedy2.htm"); break; case CKPT_OEMREG: break; case CKPT_INSTALLED: break; case CKPT_CONGRATS: g.navigate("pid.htm"); break; case CKPT_MODEMCANCEL: window.navigate("tapi.htm"); break; case CKPT_ERROR: break; case CKPT_REGKBCOMMIT: break; case CKPT_BADPID: break; case CKPT_MSNINFO: break; case CKPT_MSNIDPASS: break; case CKPT_MSNCONSET: break; case CKPT_MSNPAYMENT: break; case CKPT_PRIVACYGUARANTEE: break; case CKPT_PASSSIGN: break; case CKPT_PASSPORT: break; case CKPT_REGISTER: break; default: g.navigate(ckpt); break; } } function GoNext(ckpt, oobePath) { if (g.spanBack != null) { g.btnNext.src = g_strPrefix + "images/rhtclk.gif"; } else { g.btnNext.src = g_strPrefix + "images/clicked.gif"; } switch (ckpt) { case CKPT_START: // Store user name values into registry for later use. InfoObj.set_FirstName = g.edt_FirstName.value; InfoObj.set_MiddleInitial = g.edt_MiddleName.value; InfoObj.set_LastName = g.edt_LastName.value; // if we haven't done the mouse tutor we do that // else we try the regional settings // else we try the OEM hardware check // else we go do Online/Offline Registration if (GoMouseTutorial()) ; // do nothing we already navigated else if (GoRegionalKeyboard()) ; // do nothing we already navigated else if (GoOEMHardwareCheck()) ; // do nothing we already navigated else DoOfflineOnlineModeFromStart(); break; case CKPT_TAPI: StoreTapi(); g.navigate("connect.htm"); break; case CKPT_DIALTONE: g.navigate("connect.htm"); break; case CKPT_MOUSE: // we completed the mouse tutor so mark it StatusObj.set_MouseTutorCompleted(); // if we haven't done the regional settings we do it // else we try the OEM hardware check // else we go do Online/Offline Registration if (!GoRegionalKeyboard()) ; // do nothing we already navigated else if (!GoOEMHardwareCheck()) ; // do nothing we already navigated else DoOnlineOfflineMode(); break; case CKPT_REGKB: // we finished the REGKB so we set it as done. StatusObj.set_LanguageCompleted(); StoreRegKB(); if (g.selRegion.selectedIndex != LangObj.get_RegionIndex) { window.external.shutdown(); } else { // if we haven't done the OEM hardware check we do it // else we go do Online/Offline Registration if (!GoOEMHardwareCheck()) ; // do nothing we already navigated else DoOnlineOfflineMode(); } break; case CKPT_OEMHW: // we finished the OEM Hardware check so we set it as done. StatusObj.set_OEMHWCompleted(); // then we go do Online/Offline Registration. DoOnlineOfflineMode(); break; case CKPT_USERINFO: StoreUserInfo(); g.navigate("eula.htm"); /* if (window.parent.g_bHasPassport == true) { alert("Post User data to MSDATA\n" + "Stamp USER.EXE and post to Registry\n" + "Disconnect\n" + "Navigate to OFFLINE MODE\n"); } else if (window.parent.g_bOEMRegister == true) { alert("OEM add'l user info"); alert("Post to OEM"); if (window.parent.g_bWantPassport == true) { g.navigate("passact.htm"); } else { alert("Stamp USER.EXE and post to Registry"); alert("Disconnect"); alert("Navigate to OFFLINE MODE"); } } else if (window.parent.g_bWantPassport == true) { g.navigate("passact.htm"); } else { alert("Stamp USER.EXE and post to Registry"); alert("Disconnect"); alert("Navigate to OFFLINE MODE"); } */ break; case CKPT_EULA: var strDialog = "resizeable:no; scrollbars:no; status:no; " + "dialogHeight:200px; dialogWidth:450px; border:thick; center:yes; help:no; maximize:no; minimize:no; "; if (radioEULA(0).checked == true) { StatusObj.set_EULACompleted = true; g.navigate(".." + OfflineStart()); } else if (window.showModalDialog("eulawarn.htm", "EULAWarn", strDialog)) { window.external.PowerDown(); } break; case CKPT_PID: if (ValidatePid()) { StorePid(); g.navigate(".." + OfflineStart()); } else { alert("You must enter a valid Product Key for Windows to continue"); } break; case CKPT_OEMISP1: g.navigate("speedy2.htm"); break; case CKPT_OEMISP2: g.navigate("speedy3.htm"); break; case CKPT_OEMISP3: g.navigate("congrats.htm"); break; case CKPT_CONGRATS: window.external.Finish(); break; case CKPT_MSNINTRO: g.navigate("msneula.htm"); break; case CKPT_WINMSNEULA: window.external.Hangup(); g.navigate(".." + OfflineStart()); break; case CKPT_IAASSIGNED: break; case CKPT_PASSPORT: break; case CKPT_MSNPORTAL: break; case CKPT_OEMREG: break; case CKPT_INSTALLED: break; case CKPT_ERROR: break; case CKPT_REGKBCOMMIT: break; case CKPT_BADPID: break; case CKPT_MSNINFO: break; case CKPT_MSNIDPASS: break; case CKPT_MSNCONSET: break; case CKPT_MSNPAYMENT: break; case CKPT_PRIVACYGUARANTEE: break; case CKPT_PASSSIGN: break; case CKPT_PASSPORT: break; case CKPT_REGISTER: break; default: g.navigate(ckpt); break; } } // END Page Navigation // Button Event Handlers and Initialization // Function: InitGlobals // 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() // function InitGlobals() { g = document.frames("msoobeMain"); g_strPrefix = (arguments[0] != null) ? arguments[0] : "../"; } function InitButtons() { InitPairedButton(g.spanNext, g.btnNext, g.btnNextText, "images/rhtdef.gif", "images/rhtdsld.gif", g.spanBack, "backButton", "backButtonText"); InitPairedButton(g.spanBack, g.btnBack, g.btnBackText, "images/lftdef.gif", "images/lftdsld.gif", g.spanNext, "backButton", "backButtonText"); InitPairedButton(g.spanRestore, g.btnRestore, g.btnRestoreText, "images/rhtdefw.gif", "images/rhtdsldw.gif", g.spanCancel, "cancelButton", "cancelButtonText"); InitPairedButton(g.spanCancel, g.btnCancel, g.btnCancelText, "images/rhtdefw.gif", "images/rhtdsldw.gif", g.spanRestore, "restoreButton", "restoreButtonText"); } function InitPairedButton(span, btn, btnText, img, imgDisabled, span2, btnClass, btnTextClass) { if (span != null) { if (span2 == null) { btn.className = btnClass; btnText.className = btnTextClass; btnText.style.textAlign="center"; btnText.style.width = "105px"; btnText.style.left = btn.style.left; } if (btn.disabled == null || !btn.disabled) { if (span2 == null) { btn.src = g_strPrefix + "images/default.gif"; } else { btn.src = g_strPrefix + img; } btnText.style.color= "black"; } else { if (span2 == null) { btn.src = g_strPrefix + "images/disabled.gif"; } else { btn.src = g_strPrefix + imgDisabled; } btnText.style.color= "gray"; } span.onmouseover = HoverOnButton; span.onmouseout = HoverOffButton; } } /////////////////////////////////////////////////////////// // Function: HoverOnButton // Description: This function is attached to a onmouseover // event for a button span. We use the event source to // determine which button it occured on and change that // button to it's higlighted or hover state. // function HoverOnButton() { switch (g.event.srcElement) { case g.btnCancel: case g.btnCancelText: HoverOnPairedButton(g.btnCancel, g.btnCancelText, "images/lfthvr.gif", g.btnRestore); break; case g.btnRestore: case g.btnRestoreText: HoverOnPairedButton(g.btnRestore, g.btnRestoreText, "images/rhthvrw.gif", g.btnCancel); break; case g.btnBack: case g.btnBackText: HoverOnPairedButton(g.btnBack, g.btnBackText, "images/lfthvr.gif", g.btnNext); break; case g.btnNext: case g.btnNextText: HoverOnPairedButton(g.btnNext, g.btnNextText, "images/rhthvr.gif", g.btnBack); break; } } function HoverOnPairedButton(btn, btnText, img, btn2) { if (btn.disabled == null || !btn.disabled) { if (g.event.fromElement != btn && g.event.fromElement != btnText) { if (btn2 == null) { btn.src = g_strPrefix + "images/hover.gif"; } else { btn.src = g_strPrefix + img; } btnText.style.fontWeight = "bold"; btnText.style.color = "yellow"; } } } /////////////////////////////////////////////////////////// // Function: HoverOffButton // Description: This function is attached to a onmouseout // event for a button span. We use the event source to // determine which button it occured on and change that // button back to it's normal state. // function HoverOffButton() { switch (g.event.srcElement) { case g.btnCancel: case g.btnCancelText: HoverOffPairedButton(g.btnCancel, g.btnCancelText, "images/lftdefw.gif", g.btnRestore); break; case g.btnRestore: case g.btnRestoreText: HoverOffPairedButton(g.btnRestore, g.btnRestoreText, "images/rhtdefw.gif", g.btnCancel); break; case g.btnBack: case g.btnBackText: HoverOffPairedButton(g.btnBack, g.btnBackText, "images/lftdef.gif", g.btnNext); break; case g.btnNext: case g.btnNextText: HoverOffPairedButton(g.btnNext, g.btnNextText, "images/rhtdef.gif", g.btnBack); break; } } function HoverOffPairedButton(btn, btnText, img, btn2) { if (btn.disabled == null || !btn.disabled) { if (g.event.toElement != btn && g.event.toElement != btnText) { if (btn2 == null) { btn.src = g_strPrefix + "images/default.gif"; } else { btn.src = g_strPrefix + img; } btnText.style.fontWeight = "normal"; btnText.style.color = "black"; } } } // END Button Event Handlers and Initialization </script> </HEAD> <FRAMESET FRAMEBORDER=no COLS="100%" ROWS="100%"> <FRAME NAME="msoobeMain" SRC="setup/start.htm" FRAMEBORDER=no SCROLLING=no> </FRAMESET> </HTML>