Leaked source code of windows server 2003
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.
 
 
 
 
 
 

1980 lines
54 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="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%">&nbsp;
</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>