|
|
<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="regsetup\regstyl.css"> <script language=jscript src="oobeutil.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>
// 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.
// Status location constants var STATUS_MSN = 0; var STATUS_OEM = 1; var STATUS_NONE = 2; var STATUS_OFF = 3; var STATUS_MAX = 4; var SNDX_WELCOME = 0; var SNDX_MSN_ISP = 1; var SNDX_MSN_REG = 2; var SNDX_MSN_FINISH = 3; var SNDX_OEM_REG = 1; var SNDX_OEM_ISP = 2; var SNDX_OEM_FINISH = 3; var SNDX_NONE_REG = 1; var SNDX_NONE_FINISH = 2; var SNDX_OFF_EULA = 1; var SNDX_OFF_PID = 2; var SNDX_OFF_FINISH = 3; function CheckPoint(strURL, i1, i2, i3, i4) { this.strURL = strURL; this.rgindex = new Array(STATUS_MAX); this.rgindex[STATUS_MSN] = i1; this.rgindex[STATUS_OEM] = i2; this.rgindex[STATUS_NONE] = i3; this.rgindex[STATUS_OFF] = i4; }
// 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;
// Checkpoint constants var CKPT_REGRMIND = 1; var CKPT_REGISTER3 = 2; var CKPT_REGCONN = 3; var CKPT_REGLAN = 4; var CKPT_REGDIAL = 5; var CKPT_ACT_MSG = 6; var CKPT_DONE = 7; var CKPT_MAX = 8; // ALWAYS set this to be the biggest value!
var CKPT_ISPDIAL = CKPT_MAX; var CKPT_REFDIAL = CKPT_MAX; var CKPT_MIGDIAL = CKPT_MAX; var CKPT_REGISTER1 = CKPT_MAX; var CKPT_ISPSIGNUP = CKPT_DONE;
var dnCKPT = new Array(CKPT_MAX);
// 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 = "TOS";
// CheckDialReady errors var ERR_COMM_NO_ERROR = 0; var ERR_COMM_OOBE_COMP_MISSING = 1; var ERR_COMM_UNKNOWN = 2; // Unknow error, check input parameters var ERR_COMM_NOMODEM = 3; // There is no modem installed var ERR_COMM_RAS_TCP_NOTINSTALL = 4;
// 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
// Finish errors var FINISH_OK = 0x00000000; var FINISH_REBOOT = 0x00000001; var FINISH_BAD_PID = 0x00000002; var FINISH_BAD_EULA = 0x00000004; var FINISH_BAD_STAMP = 0x00000008;
// Language reboot return codes var LANGUAGE_REBOOT_NEVER = 0; var LANGUAGE_REBOOT_NOW = 1; var LANGUAGE_REBOOT_END = 2;
// on-the-fly button hiding var HIDE_BACK = 0x0001; var HIDE_NEXT = 0x0002; var HIDE_CANCEL = 0x0004; var HIDE_RESTORE = 0x0008;
// 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;
// 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_bRedial = false; var g_LineProblem = 0; var g_bFirstServerError = true; var g_status = STATUS_OFF; var g_ServerErrorCount = 0; var g_IMEExists = false; var g_OEMAddBackURL = ""; var g_DialingAvailableInCountry = true; var g_ModalDialogUp = false; var g_RemoveRemind = false; var MS_REGISTRATION = "{1C956940-8617-11D3-8B99-00A0C91E7F3C}"; var OEM_REGISTRATION = "{ECD24360-B210-11D3-8B99-00A0C91E7F3C}"; var g_bTapiDone = false; var g_OEMNameStr=window.external.Signup.get_OEMName(); var L_MS_Text="Microsoft"; var g_InitAutodial = false;
var L_CheckConnectivity_Text = "Checking for connectivity..."; var L_BlankTitle_Text = "";
var g_IsMSRegistrationSuccessful = false; var g_IsOEMRegistrationSuccessful = false;
// Mandatory Initialization Code 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 == RegisterObj) { RegisterObj = new Object; RegisterObj = window.external.Register; } if (null == TapiObj) { TapiObj = new Object; TapiObj = window.external.Tapi; } // END Initialization Code
// 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() {}
// these handle next/back navigation for non-checkpoint pages function SimpleNavBack() { g.window.history.back(); }
function HandleTextAreaFocus() { g.event.srcElement.style.borderStyle="ridge"; }
function HandleTextAreaBlur() { g.event.srcElement.style.borderStyle=""; }
////////////////////////////////////////////////////////////////////////////////////// // start.htm ////////////////////////////////////////////////////////////////////////////////////// function Start_OnKeyPress() { try { if (g.event == null) return; } catch(e) { return; }
// 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(); } else { KeyPressIsValid(); } }
function CheckUserLocale() { // if local is Korean, Simplified Chinese, // Traditional Chinese then we return // false else true var language = ApiObj.get_UserDefaultLCID;
if (language == MAKELCID(MAKELANGID(LANG_KOREAN, SUBLANG_KOREAN), SORT_DEFAULT) || language == MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL), SORT_DEFAULT) || language == MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_DEFAULT)) return false; else return true; } // 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 RemindChkBoxClick() { g_RemoveRemind = g.RemoveReminder.checked; if (g.btnNext.disabled) { g.btnNext.disabled = false; g.btnNext.onclick = GoNext; g.btnNext.focus();
g.rb_reg_ms_no.checked = true; g.rb_reg_oem_no.checked = true; } }
function Start_LoadMe() { InitFrameRef();
var L_Title1_Text = "Ready to register with %1 and %2?"; g.Title_Text.innerText = ApiObj.FormatMessage(L_Title1_Text, g_OEMNameStr, L_MS_Text); GetPageTitle();
if (g_OEMNameStr.length != 0) { var L_OEM_Text = "Thank you for purchasing this computer from %1 featuring Microsoft Windows XP. We recommend you register with %2 and Microsoft. By registering your copy of Windows, Microsoft can notify you of future product updates, events, promotions, special offers and new products that you may be interested in."; g.welcome_namestr.innerText = ApiObj.FormatMessage(L_OEM_Text, g_OEMNameStr, g_OEMNameStr);
var L_Question_Text = "Are you ready to register online with %1?"; g.reg1_oem_TxtQuestion.innerText = ApiObj.FormatMessage(L_Question_Text, g_OEMNameStr);
var L_Answer_Text = "Y<u>e</u>s, I'd like to register with %1 now"; g.reg1_spn3.innerHTML = ApiObj.FormatMessage(L_Answer_Text, g_OEMNameStr);
} g.WelcomePageText.style.visibility="visible"; g.OEMName3.innerText=g_OEMNameStr;
if ((g.rb_reg_ms_yes.checked || g.rb_reg_ms_no.checked) && (g.rb_reg_oem_yes.checked || g.rb_reg_oem_no.checked)) { g.btnNext.disabled = false; g_FirstFocusElement = g.btnNext; } else { g.btnNext.disabled = true; g_FirstFocusElement = g.btnQuit; } InitButtons(); g_FirstFocusElement.focus(); }
function Reg1RadioClicked() { if (g.btnNext.disabled) { if ((g.rb_reg_ms_yes.checked || g.rb_reg_ms_no.checked) && (g.rb_reg_oem_yes.checked || g.rb_reg_oem_no.checked)) { g.btnNext.disabled = false; g.btnNext.onclick = GoNext; g.btnNext.focus(); } } }
//// reg3.htm ///////////////////////
var StateAbbrevs = new Array("","AL","AK","AZ","AR","CA","CO","CT","DC","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","PR","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"); var FullStateNames = new Array("Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Washington, D.C.","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Puerto Rico","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"); var ProvinceNames = new Array("","Alberta","British Columbia","Manitoba","New Brunswick","Newfoundland","Northwest Territories","Nova Scotia","Nunavut","Ontario","Prince Edward Island","Quebec","Saskatchewan","Yukon");
// need ability to map state name string to index into StateAbbrevs var g_StateName2IndexMap= new ActiveXObject("Scripting.Dictionary"); var g_ProvinceName2IndexMap= new ActiveXObject("Scripting.Dictionary");
g_ProvinceName2IndexMap.CompareMode = 1; // text compare g_StateName2IndexMap.CompareMode = 1; // text compare
// init hash table var ii; for(ii=1;ii<=FullStateNames.length;ii++) { // add both full name and abbrev to hash table g_StateName2IndexMap.Add(FullStateNames[ii-1].toUpperCase(),ii); g_StateName2IndexMap.Add(StateAbbrevs[ii].toUpperCase(),ii);
if(ii < ProvinceNames.length) { g_ProvinceName2IndexMap.Add(ProvinceNames[ii].toUpperCase(),ii); } }
var L_Postal_Text = "Postal or <u>Z</u>IP code:"; var L_AsteriskPostal_Text = "*Postal or <u>Z</u>IP code:"; var L_Province_Text= "State/<u>P</u>rovince:"; var L_AsteriskProvince_Text= "*State/<u>P</u>rovince:";
var L_Canada_Text="Canada"; var L_UnitedStates_Text="United States";
function Reg3UserCountryChanged() {
// AGENT: notify Agent of the change
g_Country=g.selCountry.options(g.selCountry.selectedIndex).text;
if(g_Country == L_UnitedStates_Text) { if(g.selUSState.style.display!="inline") { g.selUSState.style.display="inline"; }
g.selCAProvince.style.display="none"; g.UserStateTextBox.style.display="none";
// when changing to US, try to translate any textbox string to state index if(g.UserStateTextBox.value!="") { var res=g_StateName2IndexMap.Item(g.UserStateTextBox.value.toUpperCase()); if(res!=null) { g.selUSState.selectedIndex=res; } } g.LabelZIP.innerHTML = L_AsteriskPostal_Text; g.StateLabel.innerHTML = L_AsteriskProvince_Text; } else if(g_Country == L_Canada_Text) { g.selUSState.style.display="none"; g.selCAProvince.style.display="inline"; g.UserStateTextBox.style.display="none";
// when changing to Canada, try to translate any textbox string to province index if(g.UserStateTextBox.value!="") { var res=g_ProvinceName2IndexMap.Item(g.UserStateTextBox.value.toUpperCase()); if(res!=null) { g.selCAProvince.selectedIndex=res; } } g.LabelZIP.innerHTML = L_AsteriskPostal_Text; g.StateLabel.innerHTML = L_AsteriskProvince_Text; } else { g.selUSState.style.display="none"; g.selCAProvince.style.display="none"; g.UserStateTextBox.style.display="inline"; g.LabelZIP.innerHTML = L_Postal_Text; g.StateLabel.innerHTML = L_Province_Text; }
g_CountryIdx=g.selCountry.selectedIndex;
Reg3UserStateChanged(); }
var L_FullName_Text="*<u>F</u>ull Name:";
function Reg3UserStateChanged() {
// AGENT: notify Agent of the change
// BUGBUG: ok for no notify on change to textbox?
if(g.selUSState.style.display!="none") { g_StateIdx=g.selUSState.selectedIndex; g_State=g.selUSState.options(g.selUSState.selectedIndex).text; g.StateLabel.htmlFor="selUSState"; } else if (g.selCAProvince.style.display!="none") { g_StateIdx=g.selCAProvince.selectedIndex; g_State=g.selCAProvince.options(g.selCAProvince.selectedIndex).text; g.StateLabel.htmlFor="selCAProvince"; } else { g_State = g.UserStateTextBox.value; g.StateLabel.htmlFor="UserStateTextBox"; } }
// store field info here:
var g_FirstName=InfoObj.get_FirstName(); // var g_MiddleName=InfoObj.get_MiddleInitial(); // InfoObj.get_MiddleName(); BUGBUG need to add this fn var g_LastName=InfoObj.get_LastName(); var g_Address1=InfoObj.get_Address1(); var g_Address2=InfoObj.get_Address2(); var g_City=InfoObj.get_City(); var g_ZipCode=InfoObj.get_Zip(); var g_EmailAddr= InfoObj.get_PrimaryEmail(); var g_PhoneNumber = InfoObj.get_PhoneNumber(); var g_Country=InfoObj.get_Country(); var g_CountryIdx=-1; var g_State=InfoObj.get_State(); var g_StateIdx=0;
function Reg3SaveSettings() { g_FirstName=g.UserFirstName.value; // g_MiddleName=g.UserMiddleName.value; g_LastName=g.UserLastName.value; g_Address1=g.UserAddress.value; g_Address2=g.UserAddress2.value; g_ZipCode=g.UserZipCode.value; g_EmailAddr=g.UserEmailAddress.value; g_PhoneNumber=g.UserPhoneNumber.value; g_City=g.UserCity.value; g_Country=g.selCountry.options(g.selCountry.selectedIndex).text;
if(g.UserStateTextBox.style.display!="none") { g_State=g.UserStateTextBox.value; } else if (g.selUSState.style.display!="none") { g_State=g.selUSState.options(g.selUSState.selectedIndex).text; } else { g_State=g.selCAProvince.options(g.selCAProvince.selectedIndex).text; }
InfoObj.set_FirstName(g_FirstName); InfoObj.set_LastName(g_LastName); // InfoObj.set_MiddleInitial(g_MiddleName); InfoObj.set_Country(g_Country); InfoObj.set_State(g_State); InfoObj.set_Address1(g_Address1); InfoObj.set_Address2(g_Address2); InfoObj.set_PrimaryEmail(g_EmailAddr); InfoObj.set_PhoneNumber(g_PhoneNumber); InfoObj.set_Zip(g_ZipCode); InfoObj.set_City(g_City);
TapiObj.set_CountryIndex(g.selCountry.selectedIndex);
}
function Reg3_LoadMe() { InitFrameRef(); GetPageTitle();
g_FirstFocusElement = g.UserFirstName;
if (IsFarEastLocale()) {
/*For JPN, CHT, CHS, Last Name First Name Country/Region Province City Address Zip E-Mail
For KOR only, Full Name Country/Region Province City Address Zip E-Mail */ g.MainPageCell.style.display="none"; // hide while we change order
// no middle name for far east langs // g.MiddleNameRow.style.display="none";
g.FieldTable.moveRow(2,0); // move lastname in front of first g.FieldTable.moveRow(7,3); // move country to after firstname g.FieldTable.moveRow(7,4); // move province to after country g.FieldTable.moveRow(7,5); // move city to after province
g.FE_ZIPLabel.innerHTML=g.LabelRight.innerHTML; g.FE_ZIPInput.innerHTML=g.MenuRight.innerHTML; g.FE_ZIPRow.style.display="inline";
g.LabelRight.innerHTML=""; g.MenuRight.innerHTML="";
// no reason to limit these lengths for FE, so just make them match others g.UserZipCode.size=30; g.UserZipCode.maxlength=120;
g.UserStateTextBox.size=30; g.UserStateTextBox.maxlength=120;
g_FirstFocusElement = g.UserLastName;
if (IsKoreanLocale()) { g.LastNameRow.style.display="none"; g.LabelFirstName.innerHTML=L_FullName_Text; g_FirstFocusElement = g.UserFirstName; }
g.MainPageCell.style.display="inline"; }
// limit width of country menu since some text options are very long g.selCountry.style.width=g.UserEmailAddress.offsetWidth;
g.UserFirstName.value=g_FirstName; // g.UserMiddleName.value=g_MiddleName; g.UserLastName.value=g_LastName; g.UserAddress.value=g_Address1; g.UserAddress2.value=g_Address2; g.UserZipCode.value=g_ZipCode; g.UserEmailAddress.value=g_EmailAddr; g.UserPhoneNumber.value=g_PhoneNumber; g.UserCity.value=g_City;
// placeholder idx 0 option is needed to fix 101447 // Due to a possible mshtml bug, the cursor is shifted right when the menu // expands to its full width.
g.selUSState.remove(0);
for (var i = 0; i < StateAbbrevs.length; i++) { var oOption = g.document.createElement("OPTION"); oOption.text = StateAbbrevs[i]; if (StateAbbrevs[i] == g_State) { g_StateIdx = i; } g.selUSState.add(oOption); }
for (i = 0; i < ProvinceNames.length; i++) { oOption = g.document.createElement("OPTION"); oOption.text = ProvinceNames[i]; if (ProvinceNames[i] == g_State) { g_StateIdx = i; } g.selCAProvince.add(oOption); }
var fTapi = TapiObj.IsTAPIConfigured(); // init TAPI /* var ilen = TapiObj.get_NumOfCountry(); // get num of countries, also inits COM obj storage for (var i = 0; i < ilen; i++) { var oOption = g.document.createElement("OPTION"); oOption.text = TapiObj.get_CountryNameForIndex(i); g.selCountry.add(oOption); } */
g_CountryIdx = TapiObj.get_CountryIndex();
if(g_CountryIdx>=0) { g.selCountry.selectedIndex=g_CountryIdx; if(g_Country == L_UnitedStates_Text) { g.selUSState.selectedIndex=g_StateIdx; } else if(g_Country == L_Canada_Text) { g.selCAProvince.selectedIndex=g_StateIdx; } else g.UserStateTextBox.value=g_State; } else { // get default value g.selCountry.selectedIndex = TapiObj.get_CountryIndex(); }
Reg3UserCountryChanged(); Reg3UserStateChanged();
InitButtons();
g.error_mesg.innerHTML = L_RequiredField_Text; g.error_mesg.style.display="inline";
g_FirstFocusElement.focus();
} function GetCurrentProvince() { if(g.selCountry.options(g.selCountry.selectedIndex).text == L_UnitedStates_Text) { return g.selUSState.options(g.selUSState.selectedIndex).text; } else if(g.selCountry.options(g.selCountry.selectedIndex).text == L_Canada_Text) { return g.selCAProvince.options(g.selCAProvince.selectedIndex).text; } else return g.UserStateTextBox.value; }
function GetCurrentCountry() { return g.selCountry.options(g.selCountry.selectedIndex).text; }
var L_Email_Text="Please enter a valid E-mail address or leave the E-mail text box empty."; var L_EnterValid_Text="* Please fill in the required fields."; var L_RequiredField_Text="* indicates required information";
var g_PostToMS = true; var g_PostToOEM = true; var POST_TO_OEM = 1; var POST_TO_MS = 2;
// Update status pane and navigate function navigatetoPrivacy(PrivPage) { if(g_CurrentCKPT == CKPT_REGISTER3) { Reg3SaveSettings(); }
if(PrivPage == "MS") g.navigate("rprvcyMS.htm"); else g.navigate("rOEMpriv.htm"); }
function VerifyReg3Fields() { g.error_mesg.style.display="none"; var LastErrorField = null;
var CurReg3ErrStringArray = new Array();
// user needs to complete input of address/name // this dynamically builds the list of erroneous fields to give to the user
if(g.UserEmailAddress.value != "") { // do some validation on email address // Note special regexpr char like '\S' must be double-\'d because they are inside a string var re = new RegExp("^\\s*\\S+@\\S+\\.\\S\\S+",""); if(re.exec(g.UserEmailAddress.value) == null) { LastErrorField = g.UserEmailAddress; g.LabelEmail.style.color = "red"; } else { g.LabelEmail.style.color = "black"; } }
var CurCountry=GetCurrentCountry();
// dont require state or zip except for US/Canada if ((CurCountry == L_UnitedStates_Text)||(CurCountry == L_Canada_Text)) { if(g.UserZipCode.value == "") { LastErrorField = g.UserZipCode; g.LabelZIP.className="text-error"; } else { g.LabelZIP.className="text-primary"; }
if(GetCurrentProvince() == "") { if(g.selUSState.style.display!="none") { LastErrorField = g.selUSState; } else { LastErrorField = g.selCAProvince; } g.StateLabel.className="text-error";
} else { g.StateLabel.className="text-primary"; } }
if(g.UserCity.value == "") { LastErrorField = g.UserCity; g.LabelCity.className="text-error"; } else { g.LabelCity.className="text-primary"; }
if(g.UserAddress.value == "") { LastErrorField = g.UserAddress; g.LabelAddress.className="text-error"; } else { g.LabelAddress.className="text-primary"; }
if((g.UserLastName.value == "") && (g.LastNameRow.style.display!="none")) { LastErrorField = g.UserLastName; g.LabelLastName.className="text-error"; } else { g.LabelLastName.className="text-primary"; }
if(g.UserFirstName.value == "") { g.LabelFirstName.className="text-error"; LastErrorField = g.UserFirstName; } else { g.LabelFirstName.className="text-primary"; }
if(LastErrorField==null) { return true; }
// handle error
if(LastErrorField==g.UserEmailAddress) { g.error_mesg.innerText = L_Email_Text; } else { g.error_mesg.innerText = L_EnterValid_Text; }
g.error_mesg.style.display="inline";
try { g.btnNext.disabled=false; } catch(e) {} try { g.btnBack.disabled=false; } catch(e) {} try { g.btnSkip.disabled=false; } catch(e) {} InitButtons();
LastErrorField.focus();
return false; }
// 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. // First || Last // function Start_CheckEnableNextButton() { try { if (g.event == null) return; } catch(e) { return; }
if (Start_CheckLengthRequirement() && Start_CheckLengthNotEqualSpaces()) { g.btnNext.disabled = false; } else { g.btnNext.disabled = true; } InitButtons(); }
function Start_CheckLengthRequirement() { if ((g.edt_FirstName.value.length != 0) || (g.edt_LastName.value.length != 0)) return true; else return false; }
function Start_CheckLengthNotEqualSpaces() { if ((g.edt_FirstName.value.length != NumberOfSpaces(g.edt_FirstName.value)) || (g.edt_LastName.value.length != NumberOfSpaces(g.edt_LastName.value))) return true; else return false; } // END start.htm
function DoFocus() { try {g_FirstFocusElement.focus();} catch(e){} }
////////////////////////////////////////////////////////////////////////////////////// // regconn.htm ////////////////////////////////////////////////////////////////////////////////////// var g_RegConnRadioSticky = 1;
function RegConn_LoadMe() { InitFrameRef(); GetPageTitle();
if (g_RegConnRadioSticky == 1) { g_FirstFocusElement = g.rb_conn_lan; g.rb_conn_lan.checked = true; } else { g_FirstFocusElement = g.rb_conn_modem; g.rb_conn_modem.checked = true; }
InitButtons();
DoFocus();
}
////////////////////////////////////////////////////////////////////////////////////// // reglan.htm ////////////////////////////////////////////////////////////////////////////////////// var ProxySettingsObj = null;
function ProxySettings(ConfigString) { this.UseAuto = false; this.UseScript = false; this.ScriptUrl = ""; this.UseProxy = false; this.Server = ""; this.Port = "";
if (ConfigString != null) { var i, j; var Args = ConfigString.split(/ /);
for (i = 0; i < Args.length; i++) { switch (Args[i]) { case 'u': var ProxyList = Args[++i]; var HttpProxy = null;
// only care about proxy server for HTTP if (ProxyList.indexOf("=") == -1) { HttpProxy = ProxyList; } else { var Proxys = ProxyList.split(/;/); if (Proxys != null) { for (j = 0; j < Proxys.length; j++) { if (Proxys[j].indexOf("http=") == 0) { HttpProxy = Proxys[j].substring(5, Proxys[j].length); break; } } } }
if (HttpProxy) { j = HttpProxy.lastIndexOf(':'); if (j == -1) { this.Server = HttpProxy; } else { this.Server = HttpProxy.substring(0, j); this.Port = HttpProxy.substring(j+1, HttpProxy.length); } } break;
case 'a': this.UseAuto = true; break;
case 'm': this.UseProxy = true; break; } } }
}
function RegLan_LoadMe() { InitFrameRef(); GetPageTitle();
InitButtons();
if (ProxySettingsObj == null) { var ConfigString = window.external.get_ProxySettings(); ProxySettingsObj = new ProxySettings(ConfigString); }
g.cb_auto_detect.checked = ProxySettingsObj.UseAuto; g.cb_use_proxy.checked = ProxySettingsObj.UseProxy; g.txt_proxy_url.value = ProxySettingsObj.Server; g.txt_proxy_port.value = ProxySettingsObj.Port;
RegLan_upClickHandler();
g_FirstFocusElement = g.btnNext; DoFocus(); }
function RegLan_upClickHandler() { if (g.cb_use_proxy.checked) { g.txt_proxy_url.style.backgroundColor = "#ffffff"; g.txt_proxy_url.disabled = false; g.txt_proxy_port.style.backgroundColor = "#ffffff"; g.txt_proxy_port.disabled = false; } else { g.txt_proxy_url.style.backgroundColor = "#dddddd"; g.txt_proxy_url.disabled = true; g.txt_proxy_port.style.backgroundColor = "#dddddd"; g.txt_proxy_port.disabled = true; } }
function RegLan(Stage) { if (Stage == null) { // // Do the internet connectivity checking ... // var L_CheckingConnectivity_Text = "Checking connectivity..."; Span_WPA_MainTitle.innerText = L_CheckingConnectivity_Text; ResetConnectedToInternetEx(); ConnectedToInternetEx(true, "RegLan(1);"); } else { // // Use the existing connectivity value // if (ConnectedToInternetEx(false)) { IcsConnect(ICS_CONN_TYPE_REG); } else { GoNavigate(CKPT_ACT_MSG); } } }
/////////////////////////////////////////////////////////////////////////////////////// // rdeskerr.htm ///////////////////////////////////////////////////////////////////////////////////////
function Activation_ResetNetworking() { if (window.external.CheckOnlineStatus) { ResetDialing(); }
if (g_InitAutodial) { window.external.InternetAutodialHangup(); g_InitAutodial = false; } }
function reg_desktop_error_LoadMe() { InitFrameRef(); GetPageTitle();
Activation_ResetNetworking();
if (g_IsMSRegistrationSuccessful || g_IsOEMRegistrationSuccessful) { var L_RegThankYou_Text = "Thank You!"; Span_WPA_MainTitle.innerText = L_RegThankYou_Text; g.acterror_description_SUCCESS1.style.display="inline"; g.btnQuit.style.visibility = "hidden";
var L_FinishButton_Text = "OK"; g.btnNext.innerHTML = L_FinishButton_Text;
var Accesskey_O = "O"; g.btnNext.accessKey = Accesskey_O; } else { var L_RegUnable_Text = "Unable to register online"; Span_WPA_MainTitle.innerText = L_RegUnable_Text; g.acterror_description1.style.display="inline"; }
InitButtons();
g_FirstFocusElement = g.btnNext; DoFocus(); }
////////////////////////////////////////////////////////////////////////////////////// // General Default LoadMe function ////////////////////////////////////////////////////////////////////////////////////// function _Default_LoadMe(SimpleBack, SimpleNext) { InitFrameRef();
if (g.btnNext != null) g_FirstFocusElement = g.btnNext; else if (g.btnSkip != null) g_FirstFocusElement = g.btnSkip; else if (g.btnBack != null) g_FirstFocusElement = g.btnBack;
InitButtons(SimpleBack, SimpleNext); if (g_FirstFocusElement != null) g_FirstFocusElement.focus(); else g.document.body.focus(); }
function New_Default_LoadMe(SimpleBack, SimpleNext) { InitFrameRef(); GetPageTitle();
if (g.btnNext != null) g_FirstFocusElement = g.btnNext; else if (g.btnSkip != null) g_FirstFocusElement = g.btnSkip; else if (g.btnBack != null) g_FirstFocusElement = g.btnBack;
InitButtons(SimpleBack, SimpleNext); if (g_FirstFocusElement != null) g_FirstFocusElement.focus(); else g.document.body.focus(); }
function OEMPrivacy_LoadMe(NewSimpleBack, NewSimpleNext) { New_Default_LoadMe(NewSimpleBack, NewSimpleNext);
if (g_OEMNameStr.length != 0) { var L_Title1_Text = "%1 Privacy Statement"; g.Title_Text.innerText = ApiObj.FormatMessage(L_Title1_Text, g_OEMNameStr); GetPageTitle(); } }
////////////////////////////////////////////////////////////////////////////////////// // 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., Mouse Tutorial, 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() { dnCKPT[CKPT_REGRMIND] = new CheckPoint("regsetup\\regrmnd.htm", 0, 0, 0, 0); dnCKPT[CKPT_REGISTER3] = new CheckPoint("regsetup\\rusrinfo.htm", 0, 0, 0, 0); dnCKPT[CKPT_REGCONN] = new CheckPoint("regsetup\\regconn.htm", 0, 0, 0, 0); dnCKPT[CKPT_REGLAN] = new CheckPoint("regsetup\\reglan.htm", 0, 0, 0, 0); dnCKPT[CKPT_REGDIAL] = new CheckPoint("regsetup\\rdrdyreg.htm", 0, 0, 0, 0); dnCKPT[CKPT_ACT_MSG] = new CheckPoint("regsetup\\rdeskerr.htm", 0, 0, 0, 0); dnCKPT[CKPT_DONE] = new CheckPoint("regsetup\\regdone.htm", 0, 0, 0, 0); PopCKPT(); }
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); g_CurrentCKPT = ckpt; } }
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()); } } } catch (e) {}
if (ckpt > 0 && ckpt < CKPT_MAX) { g_CurrentCKPT = ckpt; } else g_CurrentCKPT = null; }
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; }
function GoCancel(ckpt) { try { if (IsLocalFile() && g.event == null) return; } catch(e) { return; }
switch (g_CurrentCKPT) { case CKPT_REGDIAL: GoNavigate(CKPT_DONE); break; case CKPT_REGISTER3: GoNavigate(CKPT_DONE); break; case CKPT_REGLAN: RegLan(); break; } }
function GoBack(ckpt) { try { if (IsLocalFile() && g.event == null) return; } catch(e) { return; }
if (g_CurrentCKPT == g_DialCKPT) ResetDialing();
if(g_CurrentCKPT == CKPT_REGISTER3) { Reg3SaveSettings(); // save field settings in case we return to page }
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() { var iMove = IndexFromCKPT(g_CurrentCKPT, g_status) - window.external.get_StatusIndex; while (iMove > 0) { window.external.MoveNext(); --iMove; } while (iMove < 0) { window.external.MovePrevious(); ++iMove; } }
//////////////////////////////////////////////////////////////////// // DON'T MUCK WITH THE POSITIONING OF THE CASES IN THE SWITCHS BELOW //////////////////////////////////////////////////////////////////// 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) { default: PushCKPT(ckptGoHere); // sets g_CurrentCKPT = ckptGoHere; g.navigate(g_OOBEDir + URLFromCKPT(ckptGoHere)); break; }
}
// 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 { g.btnNext.disabled=true; } catch(e) {} try { g.btnBack.disabled=true; } catch(e) {} try { g.btnSkip.disabled=true; } catch(e) {} try { InitButtons(); } catch(e) {} }
function GoQuit() { // var L_strCloseWindow_Text ="Click OK to exit registration reminder."; // if (confirm(L_strCloseWindow_Text))
if (g_RemoveRemind) window.external.DeleteRemind(0);
window.external.Finish(); }
function GoNext() { try { if (IsLocalFile() && g.event == null) return; } catch(e) { return; }
DisableAllButtons();
switch (g_CurrentCKPT) { case CKPT_REGRMIND: if (g_RemoveRemind) window.external.DeleteRemind(0);
if (g.rb_reg_ms_yes.checked || g.rb_reg_oem_yes.checked) { g_PostToMS = g.rb_reg_ms_yes.checked; g_PostToOEM = g.rb_reg_oem_yes.checked; GoNavigate(CKPT_REGISTER3); } else { window.external.Finish(); return; } break; case CKPT_REGISTER3: if(VerifyReg3Fields()) { Span_WPA_MainTitle.innerText = "Checking connectivity..."; Reg3SaveSettings(); if (!ConnectedToInternetEx(true)) { // If not, try AutoDial window.external.InternetAutodial(); ResetConnectedToInternetEx();
// Check again. InternetAutodial returns success if the user cancels if (!ConnectedToInternetEx(true)) { // We can't assume user has modem here because // CheckForAnyConnection don't mean having Internet Connection if (HasNetwork() && HasModem()) { GoNavigate(CKPT_REGCONN); } else if (HasNetwork()) { GoNavigate(CKPT_REGLAN); } else if (HasModem()) { GoNavigate(CKPT_REGDIAL); } else { GoNavigate(CKPT_ACTIVERR); } } else { // if we are connected, advance the checkpoint and send the data PushCKPT(CKPT_REGDIAL);
g_InitAutodial = true; // This will set the URL to send the data to and will execute // OnConnected in dialmgr.js, which will send the data // and navigate to the next (finish) page. // window.external.Connect(CONNECTED_REGISTRATION, "reg.isp"); } } else { // if we are connected, advance the checkpoint and send the data PushCKPT(CKPT_REGDIAL);
// This will set the URL to send the data to and will execute // OnConnected in dialmgr.js, which will send the data // and navigate to the next (finish) page. // window.external.Connect(CONNECTED_REGISTRATION, "reg.isp"); } } break; case CKPT_REGCONN: if (g.rb_conn_lan.checked) { g_RegConnRadioSticky = 1; GoNavigate(CKPT_REGLAN); } else { g_RegConnRadioSticky = 2; PushCKPT(CKPT_REGDIAL); Navigate(URLFromCKPT(CKPT_REGDIAL)); } break; case CKPT_REGLAN:
ProxySettingsObj.UseAuto = g.cb_auto_detect.checked; ProxySettingsObj.UseProxy = g.cb_use_proxy.checked; ProxySettingsObj.Server = g.txt_proxy_url.value; ProxySettingsObj.Port = g.txt_proxy_port.value;
window.external.set_ProxySettings( ProxySettingsObj.UseAuto, ProxySettingsObj.UseScript, ProxySettingsObj.ScriptUrl, ProxySettingsObj.UseProxy, ProxySettingsObj.Server + ((ProxySettingsObj.Port == "") ? "" : (":" + ProxySettingsObj.Port)) );
RegLan(); break; case CKPT_REGDIAL: GoNavigate(CKPT_DONE); break; case CKPT_ACT_MSG: if (!g_IsMSRegistrationSuccessful && !g_IsOEMRegistrationSuccessful) { GoNavigate(CKPT_REGCONN); break; } // Fall through case CKPT_DONE: if (g_RemoveRemind) window.external.DeleteRemind(0); window.external.Finish(); break;
default: // BUGBUG should we remove the default altogether? break; } }
// BUGBUG temporary until MSN changes code function GoOffline() { GoNext(); }
// Button Event Handlers and Initialization function SetLastButtonText() { if (g.btnNext != null) g_LastButtonText = g.btnNextText; else if (g.btnBack != null) g_LastButtonText = g.btnBackText; else if (g.btnRestore != null) g_LastButtonText = g.btnRestoreText; else if (g.btnCancel != null) g_LastButtonText = g.btnCancelText; }
// 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() // function InitFrameRef() {
g_LastButtonText = null; g_FirstFocusElement = null; g_LastKeyDown = null;
g = document.frames("msoobeMain");
try {
g.document.body.onkeydown = OnKeyDown; SetLastButtonText(); } 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) { 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"; } }
try { if(g.btnQuit != null) { g.btnQuit.onmouseover = HandleButtonMouseOver; g.btnQuit.onmouseout = HandleButtonMouseOut;
if(g.btnQuit.disabled == false) { g.btnQuit.onclick = GoQuit; g.btnQuit.className="buttons"; } else { g.btnQuit.className="buttons-disabled"; } } } catch(e) {} }
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; }
// 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"); var re2 = new RegExp("\D");
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"); 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
var vCurItem = 0;
function SetupPageLayout() { var WPAWindowHeight = document.body.clientHeight; var WPAWindowWidth = document.body.clientWidth;
if(0 != window.external.Directions.get_AppMode()) { document.all.ifrmMainFrame.style.height = WPAWindowHeight - 93; document.all.ifrmMainFrame.style.width = WPAWindowWidth; }
WPABackground.src = 'images/wpaback.jpg'; WPATop.src = 'images/wpatop.jpg'; WPABottom.src = 'images/wpabtm.jpg'; WPAFlag.src = 'images/wpaflag.jpg';
WPABottom.style.top = WPAWindowHeight - 45; }
window.onresize = SetupPageLayout;
function InitApplication() { var bNoModem = false; SetupPageLayout();
g_bStartup = true; InitFrameRef(); if ( 1 == DirObj.get_Offline() || window.external.CheckDialReady() != ERR_COMM_NO_ERROR) { bNoModem = true; g_status = STATUS_OFF; }
InitCKPT();
// if we are in appmode, we must nuke the stack and restart each time if (0 != DirObj.get_AppMode) { do { PopCKPT(); } while (null != g_CurrentCKPT); }
GoNavigate(CKPT_REGRMIND);
spnPage.style.visibility = "visible";
}
function GetPageTitle() { Span_WPA_MainTitle.innerText = g.Title_Text.innerText; }
</script>
</HEAD>
<BODY DIR=LTR bgcolor="#4E6FD6" topMargin=0 leftMargin=0 onload="InitApplication();" scroll=no tabIndex=-1 rightMargin=0>
<!-- WPA images, dynamic layout positioning will be done in SetupPageLayout() function --> <IMG ID=WPABackground style="LEFT: 0px; TOP: 0px; POSITION: absolute; z-index:-99;" alt=""> <IMG ID=WPATop style="LEFT: 0px; TOP: 0px; POSITION: absolute; z-index:-97;" alt=""> <IMG ID=WPABottom style="LEFT: 0px; TOP: 0px; POSITION: absolute; z-index:-96;" alt="">
<!-- Don't alter this table structure. It's designed to support BiDi and Non-BiDi. --> <TABLE WIDTH="95%" BORDER=0 style="POSITION: absolute; LEFT: 20px; TOP: 0px;" CELLPADDING=0 CELLSPACING=0> <TR> <TD nowrap VALIGN=MIDDLE> <SPAN id=Span_WPA_MainTitle class="title" style="height: 28px;" tabIndex=-1> </SPAN> </TD>
<TD WIDTH="99%"> </TD>
<TD VALIGN=TOP> <IMG ID=WPAFlag alt=""> </TD> </TR> </TABLE>
<SPAN id=spnPage style="VISIBILITY: hidden" tabIndex=-1> <span id=spnMainFrame style="POSITION: absolute; LEFT: 0px; TOP: 48px; width=100%; height=100%;" tabIndex=-1> <IFRAME ALLOWTRANSPARENCY="true" frameBorder=no width="100%" height="100%" id=ifrmMainFrame name=msoobeMain src="about:blank" tabIndex=0></IFRAME> </SPAN> </SPAN>
</BODY> </HTML>
|