windows-nt/Source/XPSP1/NT/base/ntsetup/oobe/html/actshell.htx
2020-09-26 16:20:57 +08:00

3744 lines
98 KiB
Plaintext

<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="actsetup\aregstyl.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_ACTIV = 1;
var CKPT_ACTDONE = 2;
var CKPT_ACTIVERR = 3;
var CKPT_ACTIVSVC = 4;
var CKPT_REGISTER1 = 5;
var CKPT_REGISTER3 = 6;
var CKPT_ACTCONN = 7;
var CKPT_ACTLAN = 8;
var CKPT_REGDIAL = 9;
var CKPT_ACT_MSG = 10;
var CKPT_DONE = 11;
var CKPT_MAX = 12; // 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_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;
var ERR_COMM_ISDN = 5;
var ERR_COMM_PHONE_AND_ISDN = 6;
// Dialing errors. Look at raserror.h for details
var DERR_DIALTONE = 680;
var DERR_BUSY = 676;
var DERR_VOICEANSWER = 677;
var DERR_NOANSWER = 678;
var DERR_NO_CARRIER = 679;
var DERR_HARDWARE_FAILURE = 630; // modem turned off
var DERR_PORT_ALREADY_OPEN = 602; // procomm/hypertrm/RAS has COM port
var DERR_PORT_OR_DEVICE = 692; // got this when hypertrm had the device open -- jmazner
var DERR_PPP_TIMEOUT = 718;
var DERR_REMOTE_DISCONNECT = 629; // Connection interrupted
// 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;
// keycode consts
var KeyEsc = 0x1B;
var KeyEnter = 0xD;
var KeyBackSpc = 0x8;
var KeyDelete = 0x2E;
var KeyTab = 0x9;
var KeyDwnArrow = 0x28;
var KeyUpArrow = 0x26;
var KeyLeftArrow = 0x25;
var KeyRightArrow = 0x27;
// 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_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 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 g_Activation_Install_ID = "";
var g_PID_ENTERED_ONRECORD = "";
var g_Activation_CODE_ENTERED = "";
var g_Activation_CODE_ENTERED_status = "";
var g_InitAutodial = false;
var g_CameFromFirstPage = false;
var L_CheckConnectivity_Text = "Checking for connectivity...";
var L_BlankTitle_Text = "";
var ACTIVATION_TIMEOUT = 1800000; // 30 minutes
// 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;
}
if (null == LangObj)
{
LangObj = new Object;
LangObj = window.external.Language;
}
// 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 ShowSimpleNavBack()
{
g.window.history.back();
SetTimerShowIFrame(100);
}
function SimpleNavBack()
{
ShowIFrame('False');
window.setTimeout("ShowSimpleNavBack();",500);
}
function HandleTextAreaFocus() {
g.event.srcElement.style.borderStyle="ridge";
}
function HandleTextAreaBlur() {
g.event.srcElement.style.borderStyle="";
}
function CheckContrastMode()
{
try
{
var InHighContrastMode = window.external.InHighContrastMode();
}
catch(e)
{
var L_HighContrastMode1_Text = "InHighContrastMode API not available";
alert(L_HighContrastMode1_Text);
InHighContrastMode = false;
}
if (InHighContrastMode)
{
g.deskstyle1.disabled = true;
g.deskstyle2.disabled = false;
}
}
function GetPageTitle()
{
Span_WPA_MainTitle.innerText = g.Title_Text.innerText;
}
//////////////////////////////////////////////////////////////////////////////////////
// actdone.htm
//////////////////////////////////////////////////////////////////////////////////////
function Actdone_LoadMe()
{
InitFrameRef();
GetPageTitle();
CheckContrastMode();
g_FirstFocusElement = g.btnQuit;
InitButtons();
if (g_FirstFocusElement != null)
window.setTimeout("DoFocus();",1000);
}
//////////////////////////////////////////////////////////////////////////////////////
// activ.htm
//////////////////////////////////////////////////////////////////////////////////////
function DoFocus()
{
//
// During the transition between pages, the pages are hidden and focus()
// will fail. If this happens we try again after a short delay.
//
try
{
if (g_FirstFocusElement != null)
{
g_FirstFocusElement.focus();
}
}
catch(e)
{
window.setTimeout("DoFocus();",1000);
}
}
function Activ_BtnTelephoneHandler()
{
GoNavigate(CKPT_ACTIVSVC);
}
var g_ActivationRadioSticky = null;
function Activation_LoadMe()
{
g_CameFromFirstPage = false;
InitFrameRef();
GetPageTitle();
CheckContrastMode();
if (g_ActivationRadioSticky == null)
g.btnNext.disabled = true;
else if (g_ActivationRadioSticky == 1)
g.rb_act_1.checked = true;
else if (g_ActivationRadioSticky == 2)
g.rb_act_2.checked = true;
else if (g_ActivationRadioSticky == 3)
g.rb_act_3.checked = true;
if (g_ActivationRadioSticky != null)
{
WPA_ActivationRadioClicked();
}
var ndaysleft = ""
try
{
ndaysleft = window.external.GetActivationDaysLeft();
}
catch(e)
{
ndaysleft = "0";
}
var L_LogMeOff_Text = "N<u>o</u>, log me off";
if (ndaysleft == "0")
{
g.act_par01_ZeroDays.style.display = "inline";
g.act_spn3.innerHTML = L_LogMeOff_Text;
if (window.external.HasTablet())
{
g.act_par03_Tablet.style.display = "inline";
}
}
else
{
g.act_par01_HaveDays.style.display = "inline";
g.act_par02_HaveDays.style.display = "inline";
g.NumberDaysLeft1.innerText = ndaysleft;
}
InitButtons();
if (g_ActivationRadioSticky == null)
g_FirstFocusElement = g.document.body;
else
g_FirstFocusElement = g.btnNext;
window.setTimeout("DoFocus();",1000);
}
function WPA_ActivationRadioClicked()
{
if (g.rb_act_1.checked)
g_ActivationRadioSticky = 1;
else if (g.rb_act_2.checked)
g_ActivationRadioSticky = 2;
else
g_ActivationRadioSticky = 3;
if (g.btnNext.disabled)
{
g.btnNext.disabled = false;
g.btnNext.onclick = GoNext;
g.btnNext.focus();
}
}
//////////////////////////////////////////////////////////////////////////////////////
// activerr.htm
//////////////////////////////////////////////////////////////////////////////////////
function Activerr_RetryBtnHandler()
{
DisableAllButtons();
if (CheckForAnyConnection())
GoNavigate(CKPT_ACTIV);
else
GoNavigate(CKPT_ACTIVERR);
}
function ActivationErr_LoadMe()
{
InitFrameRef();
GetPageTitle();
CheckContrastMode();
InitButtons();
g.btnTelephone.onmouseover = HandleButtonMouseOver;
g.btnTelephone.onmouseout = HandleButtonMouseOut;
g.btnTelephone.onclick = GoNext;
g.btnNext.onclick = Activerr_RetryBtnHandler;
g_FirstFocusElement = g.btnNext;
if (g_FirstFocusElement != null)
window.setTimeout("DoFocus();",1000);
}
//////////////////////////////////////////////////////////////////////////////////////
// actconn.htm
//////////////////////////////////////////////////////////////////////////////////////
var g_ActConnRadioSticky = 1;
function ActConn_LoadMe()
{
InitFrameRef();
GetPageTitle();
CheckContrastMode();
if (g_ActConnRadioSticky == 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();
window.setTimeout("DoFocus();",1000);
}
//////////////////////////////////////////////////////////////////////////////////////
// actlan.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 ActLan_LoadMe()
{
InitFrameRef();
GetPageTitle();
CheckContrastMode();
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;
ActLan_upClickHandler();
g_FirstFocusElement = g.btnNext;
window.setTimeout("DoFocus();",1500);
}
function ActLan_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 ActLan(Stage)
{
if (Stage == null)
{
//
// Do the internet connectivity checking ...
//
Span_WPA_MainTitle.innerText = L_BlankTitle_Text;
ShowIFrame('False', L_CheckConnectivity_Text);
ResetConnectedToInternetEx();
ConnectedToInternetEx(true, "ActLan(1);");
}
else
{
//
// Use the existing connectivity value
//
if (ConnectedToInternetEx(false))
{
IcsConnect(ICS_CONN_TYPE_REG);
SetTimerShowIFrame(ACTIVATION_TIMEOUT);
}
else
{
g_ActivationStatus = ERR_ACT_NETWORK_FAILURE;
GoNavigate(CKPT_ACT_MSG);
}
}
}
//////////////////////////////////////////////////////////////////////////////////////
// PID functions
//////////////////////////////////////////////////////////////////////////////////////
var g_TabForward = false;
var g_TabBackward = false;
var g_LastFocusedPidBox;
var g_SelectionExistsBeforeKeyPress=null;
var g_keyPressKeyCode = 0;
var g_CharCode0_plus1=("0".charCodeAt(0))+1;
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
else
{
var re = new RegExp("(.*)-(.*)-(.*)-(.*)-(.*)","");
if(re.exec(strPid) == null) {
throw "Internal error: RegExp pattmatch failed!";
}
g.edtProductKey[0].value = RegExp.$1;
g.edtProductKey[1].value = RegExp.$2;
g.edtProductKey[2].value = RegExp.$3;
g.edtProductKey[3].value = RegExp.$4;
g.edtProductKey[4].value = RegExp.$5;
}
}
function PID_CheckLength(KnownIncomplete)
{
// call this only if box reaches length 5 for speed?
if(KnownIncomplete) {
g.btnNext.disabled = true;
g.btnNext.className="buttons-disabled";
return;
}
var TotLength=g.edtProductKey[0].value.length+g.edtProductKey[1].value.length+
g.edtProductKey[2].value.length+g.edtProductKey[3].value.length+
g.edtProductKey[4].value.length;
if (TotLength == 25)
{
g.btnNext.disabled = false;
g.btnNext.className="buttons";
}
else
{
g.btnNext.disabled = true;
g.btnNext.className="buttons-disabled";
}
}
function PIDBox_HandleBlur() {
g_LastFocusedPidBox=g.event.srcElement;
}
function PIDBox_HandleFocus() {
g_LastFocusedPidBox=g.event.srcElement;
OnFocus();
}
function IsProductIDKey(keyCode)
{
var str = String.fromCharCode(keyCode);
var result = str.match(/B|C|D|F|G|H|J|K|M|P|Q|R|T|V|W|X|Y|2|3|4|6|7|8|9/);
return (null != result);
}
function CursorAtEndOfField(currentEdit) {
// assumes selection is current edit field
var tr = g.edtProductKey[currentEdit].createTextRange();
var tr2 = g.document.selection.createRange();
tr2.moveStart("textedit",-1);
if(tr.isEqual(tr2)){
return true;
} else {
return false;
}
}
function ProductIDKeyDown()
{
try
{
if (g.event == null)
return;
}
catch(e)
{
return;
}
var keyCode = g.event.keyCode;
g_SelectionExistsBeforeKeyPress=(g.document.selection.type!="None");
if(g.event.srcElement.tagName=="INPUT") {
var i=g.event.srcElement.id.charCodeAt(3)-g_CharCode0_plus1;
} else {
var i=-1;
}
switch(keyCode) {
case KeyTab:
if(g.event.srcElement == g.edtProductKey[i]) {
if(g.event.shiftKey)
TabBackward(i,true);
else TabForward(i,true);
g.event.returnValue = false;
g.event.keyCode = 0;
g.event.cancelBubble = true;
break;
}
break;
case KeyLeftArrow:
if((i>0) && CursorAtStartOfField(i)) {
TabBackward(i,false);
g.event.returnValue = false;
}
break;
case KeyRightArrow:
if((i<4) && CursorAtEndOfField(i)) {
TabForward(i,false);
g.event.returnValue = false;
}
break;
case KeyBackSpc:
case KeyDelete:
// if there is already 5 characters in a field, and the user puts the cursor in it, we want to
// fill in the next box with the character. we have to do this here because there is no propertychange,
// and keyup is too late
//if(g.edtProductKey[i].value.length == 5 && IsProductIDKey(keyCode) && g.document.selection==null)
// TabForward(i);
// cgeorges note: I enabled this feature tried it and didnt like it
////////
// we want the delete/backspace to move the previous edit box if:
// there is 0 characters, and the user puts the cursor in it, and selection is non-null
// OR backspc && cursor is at start of field
if ((i > 0) &&
( ((g.document.selection.type=="None") && (g.edtProductKey[i].value.length == 0))
||((keyCode==KeyBackSpc)&& CursorAtStartOfField(i)))) {
TabBackward(i,false);
g.event.returnValue = false; // so no deletion occurs when backspace moves to prev pidbox
g.event.keyCode = 0;
}
break;
case KeyEnter:
if((g.btnNext.disabled == false)&&(g.event.srcElement!=g.btnBack)) {
g.btnNext.click();
g.event.returnValue = false;
g.event.keyCode = 0;
g.event.cancelBubble = true;
}
break;
}
}
function ProductIDPropertyChange()
{
try
{
if (g.event == null)
return;
}
catch(e)
{
return;
}
// enable Next Btn when PID is full, and automatically move to
// next/previous field when entering/deleting chars
if ("value" == g.event.propertyName) {
// find the index at which we are.
var i=g.event.srcElement.id.charCodeAt(3)-g_CharCode0_plus1;
// our g_Tab variables can be booleans instead of counts because they can
// have a max value of 1, becase there will only ever be 1 call to OnPropertyChange if the
// length of the edit is 0 or 5
switch(g.edtProductKey[i].value.length) {
case 5:
g_TabForward = (i<4); // dont tab forward if on last PID box
PID_CheckLength(false);
break;
case 4:
case 0:
case 1:
PID_CheckLength(true); //change from 25char-state could have occurred with any of these lengths
}
// see if we want to tab backward
// if pixbox is empty, and last keypress was not a pidkey (which adds a char),
// and nothing was selected.
// BUGBUG: this currently only fully works for the delete key. when backspace
// is pressed, g.document.selection.type is always "None" even if there was a selection
if ((g.edtProductKey[i].value.length == 0) && (i > 0) &&
(g_keyPressKeyCode==KeyBackSpc)&&(g_keyPressKeyCode==KeyDelete)&&
(g.document.selection.type=="None")) {
g_TabBackward = true; // IsProd check is to handle the case where they select everything then press a 2, etc.
}
}
g_keyPressKeyCode = 0;
}
function ProductIDKeyPress()
{
try
{
if (g.event == null)
return;
}
catch(e)
{
return;
}
if (g.event.keyCode == KeyBackSpc) {
ProductIDKeyDown();
return;
}
KeyCodeToUpper();
g_keyPressKeyCode = g.event.keyCode;
if (!IsProductIDKey(g_keyPressKeyCode)) {
g.event.keyCode = 0;
return;
} else {
var i=g.event.srcElement.id.charCodeAt(3)-g_CharCode0_plus1;
if((i<4) && (g.edtProductKey[i].value.length == 5) && CursorAtEndOfField(i) && (!g_SelectionExistsBeforeKeyPress)) {
TabForward(i,false);
}
}
}
function ProductIDKeyUp()
{
try
{
if (g.event == null)
return;
}
catch(e)
{
return;
}
if((!g_TabForward) && (!g_TabBackward)) {
return;
}
var i=g.event.srcElement.id.charCodeAt(3)-g_CharCode0_plus1;
if (g_TabBackward) {
TabBackward(i,false);
return;
} else
if(g_TabForward) {
TabForward(i,false);
}
}
function TabForward(currentEdit,DoSelectAll)
{
g_TabForward = false;
if(currentEdit==4) {
// deselect any existing selection before moving focus to back button
if(g.document.selection.type!="None") {
g.document.selection.empty();
}
g.btnTelephone.focus();
return;
}
currentEdit++;
g.edtProductKey[currentEdit].focus();
if(DoSelectAll) {
g.edtProductKey[currentEdit].select();
return;
}
var tr = g.edtProductKey[currentEdit].createTextRange();
tr.collapse(true);
tr.moveStart("word", 0);
tr.select();
}
function TabBackward(currentEdit,DoSelectAll)
{
g_TabBackward = false;
if (currentEdit == 0) {
// deselect any existing selection before moving focus to button
if(g.document.selection.type!="None") {
g.document.selection.empty();
}
if(g.btnNext.disabled) {
g.btnQuit.focus();
} else {
g.btnNext.focus();
}
return;
}
currentEdit--;
g.edtProductKey[currentEdit].focus();
if(DoSelectAll) {
g.edtProductKey[currentEdit].select();
return;
}
var tr = g.edtProductKey[currentEdit].createTextRange();
tr.collapse(false);
tr.moveStart("word", 1);
tr.select();
}
function CursorAtStartOfField(currentEdit) {
var tr = g.edtProductKey[currentEdit].createTextRange();
var tr2 = g.document.selection.createRange();
tr2.moveEnd("textedit",1);
if(tr.isEqual(tr2)){
return true;
} else {
return false;
}
}
function CursorAtEndOfField(currentEdit) {
// assumes selection is current edit field
var tr = g.edtProductKey[currentEdit].createTextRange();
var tr2 = g.document.selection.createRange();
tr2.moveStart("textedit",-1);
if(tr.isEqual(tr2)){
return true;
} else {
return false;
}
}
function StorePid()
{
var strPid = "";
for (var i = 0; i < 4; i++)
{
strPid += g.edtProductKey[i].value;
strPid += '-';
}
strPid += g.edtProductKey[i].value;
PidObj.set_PID(strPid);
}
//////////////////////////////////////////////////////////////////////////////////////
// adeskerr.htm
//////////////////////////////////////////////////////////////////////////////////////
function Activation_ResetNetworking()
{
if (window.external.CheckOnlineStatus)
{
ResetDialing();
}
if (g_InitAutodial)
{
window.external.InternetAutodialHangup();
g_InitAutodial = false;
}
}
function Activation_RetryBtnHandler()
{
DisableAllButtons();
if ((g_ActivationStatus == ERR_ACT_INVALID_PID) ||
(g_ActivationStatus == ERR_ACT_USED_PID) ||
(g_ActivationStatus == ERR_ACT_BLOCKED_PID) ||
(g_ActivationStatus == ERR_ACT_DEDICATED_PID_ENTRY))
{
StorePid();
if (PidObj.get_PID.length != 0 && PidObj.ValidatePID())
{
if (ReturnToTelephonePage)
{
// Must reload our Installation ID since we're successful in updating our PID
g_Load_InstallID = true;
// Also clear out the confirmation ID boxes
g_ConfirmID_A = "";
g_ConfirmID_B = "";
g_ConfirmID_C = "";
g_ConfirmID_D = "";
g_ConfirmID_E = "";
g_ConfirmID_F = "";
g_ConfirmID_G = "";
GoNavigate(CKPT_ACTIVSVC); // This is where we go when we click on "Update" to change our product key in the update PID page
}
else
GoNavigate(CKPT_REGDIAL);
}
else
{
// Must show "Invalid PID" page
g_ActivationStatus = ERR_ACT_INVALID_PID;
GoNavigate(CKPT_ACT_MSG);
}
}
else
{
// If our error has nothing to do with the PID, then the RETRY button should fall here...
GoNavigate(CKPT_REGDIAL);
}
}
var L_EnterNewKey_Text = "Enter new key:";
var L_EnterKey_Text = "Enter key:";
var L_NewKey_Text = "New key:";
var L_MessageNumber_Text = "Message number: %1";
var L_FinishButton_Text = "OK";
var L_UpdateButton_Text = " <u>U</u>pdate ";
function act_desktop_error_LoadMe()
{
var Accesskey_U = "U";
var Accesskey_O = "O";
InitFrameRef();
GetPageTitle();
CheckContrastMode();
Activation_ResetNetworking();
var ndaysleft = ""
try
{
ndaysleft = window.external.GetActivationDaysLeft();
}
catch(e)
{
ndaysleft = "0";
}
if (g_ActivationStatus == ERR_ACT_SUCCESS)
{
var L_ActThankYou_Text = "Thank You!";
Span_WPA_MainTitle.innerText = L_ActThankYou_Text;
if (g_PostToMS)
g.acterror_description_SUCCESS1.style.display="inline";
else
g.acterror_description_SUCCESS2.style.display="inline";
}
else if (g_ActivationStatus == ERR_ACT_INACCESSIBLE)
{
var L_ActUnable1_Text = "Unable to activate Windows";
Span_WPA_MainTitle.innerText = L_ActUnable1_Text;
if (ndaysleft == "0")
{
g.acterror_description1Post.style.display="inline";
}
else
{
g.acterror_description1Pre.style.display="inline";
g.NumberDaysLeft1.innerText = ndaysleft;
}
}
else if (g_ActivationStatus == ERR_ACT_INVALID_PID)
{
var L_ActIncorrectKey_Text = "Incorrect product key";
Span_WPA_MainTitle.innerText = L_ActIncorrectKey_Text;
var WPAOEMMode01 = window.external.IsOemSKU();
if (WPAOEMMode01)
{
// OEM
g.acterror_description2_OEM.style.display="inline";
g.acterror_after_pid_entry_OEMText.style.display="inline";
}
else
{
// Retail
g.acterror_description2_RETAIL.style.display="inline";
}
g.acterror_pid_entry.style.display="inline";
g.acterror_after_pid_entry_text1.style.display="inline";
g.acterror_description_verify_key.innerHTML = L_NewKey_Text;
}
else if (g_ActivationStatus == ERR_ACT_USED_PID)
{
var L_ActProductKey_Text = "Product key";
Span_WPA_MainTitle.innerText = L_ActProductKey_Text;
var WPAOEMMode02 = window.external.IsOemSKU();
if (WPAOEMMode02)
{
// OEM
g.acterror_description3OEM.style.display="inline";
g.acterror_after_pid_entry_OEMText.style.display="inline";
}
else
{
// Retail
g.acterror_description3Retail.style.display="inline";
}
g.acterror_pid_entry.style.display="inline";
g.acterror_description_verify_key.innerHTML = L_NewKey_Text;
g.acterror_after_pid_entry_text2.style.display="inline";
}
else if (g_ActivationStatus == ERR_ACT_INTERNAL_WINDOWS_ERR)
{
var L_ActUnable2_Text = "Unable to activate Windows";
Span_WPA_MainTitle.innerText = L_ActUnable2_Text;
if (ndaysleft == "0")
{
g.acterror_description4Post.style.display="inline";
}
else
{
g.acterror_description4Pre.style.display="inline";
g.NumberDaysLeft2.innerText = ndaysleft;
}
}
else if (g_ActivationStatus == ERR_ACT_BLOCKED_PID)
{
var L_ActUnauthorKey_Text = "Unauthorized product key";
Span_WPA_MainTitle.innerText = L_ActUnauthorKey_Text;
var WPAOEMMode03 = window.external.IsOemSKU();
if (WPAOEMMode03)
{
// OEM
g.acterror_description5OEM.style.display="inline";
g.acterror_after_pid_entry_OEMText.style.display="inline";
}
else
{
// Retail
g.acterror_description5Retail.style.display="inline";
}
g.acterror_pid_entry.style.display="inline";
g.acterror_description_verify_key.innerHTML = L_NewKey_Text;
g.acterror_after_pid_entry_text2.style.display="inline";
}
else if (g_ActivationStatus == ERR_ACT_CORRUPTED_PID)
{
g.acterror_description6.style.display="inline";
g.NumberDaysLeft3.innerText = ndaysleft;
}
else if (g_ActivationStatus == ERR_ACT_NETWORK_FAILURE)
{
g.acterror_description7.style.display="inline";
}
else if (g_ActivationStatus == ERR_ACT_DEDICATED_PID_ENTRY)
{
var L_ActUpdateKey_Text = "Change product key";
Span_WPA_MainTitle.innerText = L_ActUpdateKey_Text;
var WPAOEMMode04 = window.external.IsOemSKU();
if (WPAOEMMode04)
{
// OEM
g.acterror_description_dedicated_pid_OEM.style.display="inline";
g.acterror_after_pid_entry_OEMText.style.display="inline";
}
else
{
// Retail
g.acterror_description_dedicated_pid_RETAIL.style.display="inline";
}
g.acterror_pid_entry.style.display="inline";
g.acterror_description_verify_key.innerHTML = L_NewKey_Text;
g.btnNext.innerHTML = L_UpdateButton_Text;
g.btnNext.accessKey = Accesskey_U;
}
else
{
g.acterror_description4.style.display="inline";
g.NumberDaysLeft2.innerText = ndaysleft;
}
if (g_ActivationStatus != ERR_ACT_SUCCESS)
{
if ((g_act_specific_error != 0) && (g_act_specific_error != null))
{
g.acterror_specific_error_code.innerText = ApiObj.FormatMessage(L_MessageNumber_Text, g_act_specific_error.toString());
g.acterror_specific_error_code.style.display = "inline";
}
}
InitButtons();
if (g_ActivationStatus != ERR_ACT_SUCCESS)
{
if ((g_ActivationStatus == ERR_ACT_INVALID_PID) ||
(g_ActivationStatus == ERR_ACT_USED_PID) ||
(g_ActivationStatus == ERR_ACT_BLOCKED_PID) ||
(g_ActivationStatus == ERR_ACT_DEDICATED_PID_ENTRY))
{
if (null == PidObj)
{
PidObj = new Object;
PidObj = window.external.ProductID;
}
g_FirstFocusElement = g.edtProductKey[0];
ShowIFrame();
RetrievePid();
var rangefocus = g_FirstFocusElement.createTextRange();
rangefocus.collapse();
rangefocus.moveStart("word", 0);
rangefocus.select();
g_TabForward = false;
g_TabBackward = false;
PID_CheckLength(false);
for (i = 0; i <= 4; i++)
{
g.edtProductKey[i].onblur=PIDBox_HandleBlur;
g.edtProductKey[i].onfocus=PIDBox_HandleFocus;
}
g_LastFocusedPidBox=g.edtProductKey[0];
}
else
{
g_FirstFocusElement = g.btnNext;
ShowIFrame();
}
g.btnTelephone.onmouseover = HandleButtonMouseOver;
g.btnTelephone.onmouseout = HandleButtonMouseOut;
g.btnTelephone.onclick = GoNext;
g.btnNext.onclick = Activation_RetryBtnHandler;
}
else
{
g.btnTelephone.style.visibility = "hidden";
g.btnQuit.style.visibility = "hidden";
g.btnNext.innerHTML = L_FinishButton_Text;
g.btnNext.accessKey = Accesskey_O;
g_FirstFocusElement = g.btnNext;
ShowIFrame();
}
window.setTimeout("DoFocus();",1000);
}
//////////////////////////////////////////////////////////////////////////////////////
// activsvc.htm
//////////////////////////////////////////////////////////////////////////////////////
function ValidateConfirmIDBox(Box_Number)
{
var Box_Value = null;
var Box_Valid = null;
if (Box_Number=='1')
Box_Value = g.ActCodeBox1.value;
if (Box_Number=='2')
Box_Value = g.ActCodeBox2.value;
if (Box_Number=='3')
Box_Value = g.ActCodeBox3.value;
if (Box_Number=='4')
Box_Value = g.ActCodeBox4.value;
if (Box_Number=='5')
Box_Value = g.ActCodeBox5.value;
if (Box_Number=='6')
Box_Value = g.ActCodeBox6.value;
if (Box_Number=='7')
Box_Value = g.ActCodeBox7.value;
Box_Valid = window.external.VerifyCheckDigits(Box_Value);
if (!Box_Valid)
{
var L_ConfirmIDInvalid1_Text = "The confirmation ID entered in this field is invalid. Please check the number and try again.";
alert(L_ConfirmIDInvalid1_Text);
// Set focus on the invalid confirmation id box
if (Box_Number=='1')
{
g.ActCodeBox1.focus();
g.ActCodeBox1.select();
g_DoFieldChecking = false;
}
if (Box_Number=='2')
{
g.ActCodeBox2.focus();
g.ActCodeBox2.select();
g_DoFieldChecking = false;
}
if (Box_Number=='3')
{
g.ActCodeBox3.focus();
g.ActCodeBox3.select();
g_DoFieldChecking = false;
}
if (Box_Number=='4')
{
g.ActCodeBox4.focus();
g.ActCodeBox4.select();
g_DoFieldChecking = false;
}
if (Box_Number=='5')
{
g.ActCodeBox5.focus();
g.ActCodeBox5.select();
g_DoFieldChecking = false;
}
if (Box_Number=='6')
{
g.ActCodeBox6.focus();
g.ActCodeBox6.select();
g_DoFieldChecking = false;
}
if (Box_Number=='7')
{
g.ActCodeBox7.focus();
g.ActCodeBox7.select();
g_DoFieldChecking = false;
}
}
else
{
// Set focus on the next confirmation id box if valid
if (Box_Number=='1')
g.ActCodeBox2.focus();
if (Box_Number=='2')
g.ActCodeBox3.focus();
if (Box_Number=='3')
g.ActCodeBox4.focus();
if (Box_Number=='4')
g.ActCodeBox5.focus();
if (Box_Number=='5')
g.ActCodeBox6.focus();
if (Box_Number=='6')
g.ActCodeBox7.focus();
if (Box_Number=='7')
{
// Do nothing, focusing will be done automatically by IsConfirmIDComplete() when this function returns.
// Note: Don't take out the curly braces here...
}
g_DoFieldChecking = true;
}
}
function UpdateConfirmIDFields(FieldToEdit)
{
if (FieldToEdit == '1')
{
g_ConfirmID1 = g.ActCodeBox1.value;
}
if (FieldToEdit == '2')
{
g_ConfirmID2 = g.ActCodeBox2.value;
}
if (FieldToEdit == '3')
{
g_ConfirmID3 = g.ActCodeBox3.value;
}
if (FieldToEdit == '4')
{
g_ConfirmID4 = g.ActCodeBox4.value;
}
if (FieldToEdit == '5')
{
g_ConfirmID5 = g.ActCodeBox5.value;
}
if (FieldToEdit == '6')
{
g_ConfirmID6 = g.ActCodeBox6.value;
}
if (FieldToEdit == '7')
{
g_ConfirmID7 = g.ActCodeBox7.value;
}
// If user presses Backspace, move focus to previous field if current field is empty. Unless we are in field 1.
if (g_DoBackSpace)
{
g_DoBackSpace = false;
var tr = null;
if (FieldToEdit == '1')
{
// Do nothing.
}
else if (FieldToEdit == '2')
{
if (g.ActCodeBox2.value == "")
tr = g.ActCodeBox1.createTextRange();
}
else if (FieldToEdit == '3')
{
if (g.ActCodeBox3.value == "")
tr = g.ActCodeBox2.createTextRange();
}
else if (FieldToEdit == '4')
{
if (g.ActCodeBox4.value == "")
tr = g.ActCodeBox3.createTextRange();
}
else if (FieldToEdit == '5')
{
if (g.ActCodeBox5.value == "")
tr = g.ActCodeBox4.createTextRange();
}
else if (FieldToEdit == '6')
{
if (g.ActCodeBox6.value == "")
tr = g.ActCodeBox5.createTextRange();
}
else if (FieldToEdit == '7')
{
if (g.ActCodeBox7.value == "")
tr = g.ActCodeBox6.createTextRange();
}
// This will cause the insertion point to move to the end of the text range
if ((FieldToEdit != '1') && (tr != null))
{
tr.collapse(false);
tr.moveStart("word", 1);
tr.select();
}
}
}
function DeleteLastCharacter(FieldToEdit)
{
if (FieldToEdit == '1')
{
g.ActCodeBox1.value = g_ConfirmID1;
}
if (FieldToEdit == '2')
{
g.ActCodeBox2.value = g_ConfirmID2;
}
if (FieldToEdit == '3')
{
g.ActCodeBox3.value = g_ConfirmID3;
}
if (FieldToEdit == '4')
{
g.ActCodeBox4.value = g_ConfirmID4;
}
if (FieldToEdit == '5')
{
g.ActCodeBox5.value = g_ConfirmID5;
}
if (FieldToEdit == '6')
{
g.ActCodeBox6.value = g_ConfirmID6;
}
if (FieldToEdit == '7')
{
g.ActCodeBox7.value = g_ConfirmID7;
}
var L_OnlyNumbersAllowed_Text = "Only numbers can be used for the confirmation ID.";
alert(L_OnlyNumbersAllowed_Text);
if (FieldToEdit == '1')
g.ActCodeBox1.focus();
else if (FieldToEdit == '2')
g.ActCodeBox2.focus();
else if (FieldToEdit == '3')
g.ActCodeBox3.focus();
else if (FieldToEdit == '4')
g.ActCodeBox4.focus();
else if (FieldToEdit == '5')
g.ActCodeBox5.focus();
else if (FieldToEdit == '6')
g.ActCodeBox6.focus();
else if (FieldToEdit == '7')
g.ActCodeBox7.focus();
}
var g_ConfirmID1 = "";
var g_ConfirmID2 = "";
var g_ConfirmID3 = "";
var g_ConfirmID4 = "";
var g_ConfirmID5 = "";
var g_ConfirmID6 = "";
var g_ConfirmID7 = "";
var g_DoBackSpace = false;
var g_DoFieldChecking = true;
function activate_OnKeyUp(WhatField)
{
var keyCode = g.event.keyCode;
var str = String.fromCharCode(keyCode);
// Evidently, numkeypad 0 with the NumLock on gives us x60 or single back quote
// LocStudio doesn't understand regexp, so we refer to this character by ascii code \x60
// The small letters a-i represent the keycodes for the numeric keypad 1-9 (If Numlock is on).
// We only allow "Numbers" to be entered in the Confirmation ID fields.
var result = str.match(/\x60|a|b|c|d|e|f|g|h|i|1|2|3|4|5|6|7|8|9|0/);
var NonNumericresult = str.match(/A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z/);
var BackSpc = str.match(/\x08/);
var validchar = false;
if (null != result)
{
validchar = true;
}
else
{
validchar = false;
if (null != NonNumericresult)
{
DeleteLastCharacter(WhatField);
}
else
{
if (null != BackSpc)
g_DoBackSpace = true;
UpdateConfirmIDFields(WhatField);
}
}
if (validchar)
{
if (WhatField == '1')
{
g_ConfirmID1 = g.ActCodeBox1.value;
if (g.ActCodeBox1.value.length == 6)
{
ValidateConfirmIDBox(WhatField);
}
}
if (WhatField == '2')
{
g_ConfirmID2 = g.ActCodeBox2.value;
if (g.ActCodeBox2.value.length == 6)
{
ValidateConfirmIDBox(WhatField);
}
}
if (WhatField == '3')
{
g_ConfirmID3 = g.ActCodeBox3.value;
if (g.ActCodeBox3.value.length == 6)
{
ValidateConfirmIDBox(WhatField);
}
}
if (WhatField == '4')
{
g_ConfirmID4 = g.ActCodeBox4.value;
if (g.ActCodeBox4.value.length == 6)
{
ValidateConfirmIDBox(WhatField);
}
}
if (WhatField == '5')
{
g_ConfirmID5 = g.ActCodeBox5.value;
if (g.ActCodeBox5.value.length == 6)
{
ValidateConfirmIDBox(WhatField);
}
}
if (WhatField == '6')
{
g_ConfirmID6 = g.ActCodeBox6.value;
if (g.ActCodeBox6.value.length == 6)
{
ValidateConfirmIDBox(WhatField);
}
}
if (WhatField == '7')
{
g_ConfirmID7 = g.ActCodeBox7.value;
if (g.ActCodeBox7.value.length == 6)
{
ValidateConfirmIDBox(WhatField);
}
}
if (g_DoFieldChecking)
IsConfirmIDComplete();
// We set focus here instead of inside the IsConfirmIDComplete() function to have
// proper focus behaviour when we use certain keys like Tab, space, arrow keys...
if (!g.btnNext.disabled)
g.btnNext.focus();
}
else
{
IsConfirmIDComplete();
}
}
function IsConfirmIDComplete()
{
if ((g.ActCodeBox1.value.length == 6) && (g.ActCodeBox2.value.length == 6) && (g.ActCodeBox3.value.length == 6) && (g.ActCodeBox4.value.length == 6) && (g.ActCodeBox5.value.length == 6) && (g.ActCodeBox6.value.length == 6) && (g.ActCodeBox7.value.length == 6))
{
g.btnNext.onmouseover = HandleButtonMouseOver;
g.btnNext.onmouseout = HandleButtonMouseOut;
g.btnNext.className="buttons";
g.btnNext.disabled = false;
g.btnNext.onclick = ActivationSvc_NextBtnHandler;
}
else
{
g.btnNext.className="buttons-disabled";
g.btnNext.disabled = true;
}
}
var g_ActivSvc_Reload = true;
function ActivationSvc_NextBtnHandler()
{
g_Activation_CODE_ENTERED = g.ActCodeBox1.value + '-' +
g.ActCodeBox2.value + '-' +
g.ActCodeBox3.value + '-' +
g.ActCodeBox4.value + '-' +
g.ActCodeBox5.value + '-' +
g.ActCodeBox6.value + '-' +
g.ActCodeBox7.value;
g_ConfirmID_A = g.ActCodeBox1.value;
g_ConfirmID_B = g.ActCodeBox2.value;
g_ConfirmID_C = g.ActCodeBox3.value;
g_ConfirmID_D = g.ActCodeBox4.value;
g_ConfirmID_E = g.ActCodeBox5.value;
g_ConfirmID_F = g.ActCodeBox6.value;
g_ConfirmID_G = g.ActCodeBox7.value;
try
{
g_Activation_CODE_ENTERED_status = window.external.SetConfirmationID(g_Activation_CODE_ENTERED);
}
catch(e)
{
g_Activation_CODE_ENTERED_status = 0;
}
DisableAllButtons();
if (g_Activation_CODE_ENTERED_status == 0)
{
GoNavigate(CKPT_DONE);
}
else
{
g_Load_InstallID = false;
var L_ConfirmIDInvalid_Text = "The confirmation ID is invalid. Please check the number and try again.";
alert(L_ConfirmIDInvalid_Text);
g_ActivSvc_Reload = false;
GoNavigate(CKPT_ACTIVSVC);
}
}
function ActivationSvc_ProdkeyBtnHandler()
{
DisableAllButtons();
ReturnToTelephonePage = true;
g_Load_InstallID = false;
// Must also remember the Contents of the confirmation ID typed in by the user.
g_ConfirmID_A = g.ActCodeBox1.value;
g_ConfirmID_B = g.ActCodeBox2.value;
g_ConfirmID_C = g.ActCodeBox3.value;
g_ConfirmID_D = g.ActCodeBox4.value;
g_ConfirmID_E = g.ActCodeBox5.value;
g_ConfirmID_F = g.ActCodeBox6.value;
g_ConfirmID_G = g.ActCodeBox7.value;
g_ActivationStatus = ERR_ACT_DEDICATED_PID_ENTRY;
GoNavigate(CKPT_ACT_MSG);
}
function PhoneCountries_Changed()
{
g.ChosenPhoneNumber.innerHTML = "<B>" + g_Phone_Number_Array[g.selPhoneCountry.selectedIndex] + "</B>";
g.ChosenTollNumber.innerHTML = "<B>" + g_Toll_Number_Array[g.selPhoneCountry.selectedIndex] + "</B>";
// We want to remember the country selected whenever we go back to the Telephone page (activsvc.htm)
g_Country_Selected_Index = g.selPhoneCountry.selectedIndex;
}
var g_Country_Selected_Index = 0;
var g_Phone_Number_Array = new Array(500);
var g_Toll_Number_Array = new Array(500);
function GetPhoneCountries()
{
var g_PhoneCountries = "";
try
{
g_PhoneCountries = LangObj.get_PhoneCountries();
}
catch(e)
{
g_PhoneCountries = "API call error: get_PhoneCountries";
}
var i;
var PhoneOption;
var ModulusResult;
var PhoneCounter=0;
var TollCounter =0;
var regexp1=/\t/; // Define our regexp1 to a "TAB" keycode.
var Opt_PhoneCountry_Array = g_PhoneCountries.split(regexp1); // Let's split our tab delimited g_PhoneCountries string and put it into an array.
var L_SelectYourLocation_Text = "Select your location";
// Add the "Select your location" option in the select list
PhoneOption = g.document.createElement("OPTION");
PhoneOption.text = L_SelectYourLocation_Text;
g.selPhoneCountry.add(PhoneOption);
g_Toll_Number_Array[TollCounter] = "";
g_Phone_Number_Array[PhoneCounter] = "";
TollCounter = TollCounter + 1;
PhoneCounter = PhoneCounter + 1;
for(i=0; i < Opt_PhoneCountry_Array.length; i++)
{
ModulusResult = i % 3;
if (ModulusResult == 0)
{
PhoneOption = g.document.createElement("OPTION");
PhoneOption.text = Opt_PhoneCountry_Array[i];
g.selPhoneCountry.add(PhoneOption);
}
else if (ModulusResult == 1)
{
g_Toll_Number_Array[TollCounter] = Opt_PhoneCountry_Array[i];
TollCounter = TollCounter + 1;
}
else
{
g_Phone_Number_Array[PhoneCounter] = Opt_PhoneCountry_Array[i];
PhoneCounter = PhoneCounter + 1;
}
}
g.ChosenPhoneNumber.innerHTML = "<B>" + g_Phone_Number_Array[g_Country_Selected_Index] + "</B>";
g.ChosenTollNumber.innerHTML = "<B>" + g_Toll_Number_Array[g_Country_Selected_Index] + "</B>";
g.selPhoneCountry.selectedIndex = g_Country_Selected_Index;
}
function BackBtnHandler()
{
GoNavigate(CKPT_ACTIV);
}
var ReturnToTelephonePage = false;
var g_ConfirmID_A = "";
var g_ConfirmID_B = "";
var g_ConfirmID_C = "";
var g_ConfirmID_D = "";
var g_ConfirmID_E = "";
var g_ConfirmID_F = "";
var g_ConfirmID_G = "";
var g_Load_InstallID = true;
var g_Activation_Install_ID_Full = "";
function ActivationSvc_LoadMe()
{
InitFrameRef();
GetPageTitle();
CheckContrastMode();
ReturnToTelephonePage = false;
// We want to pre-populate the Confirmation ID fields with values entered by the user, on an event this page is loaded the second time around.
g.ActCodeBox1.value = g_ConfirmID_A;
g.ActCodeBox2.value = g_ConfirmID_B;
g.ActCodeBox3.value = g_ConfirmID_C;
g.ActCodeBox4.value = g_ConfirmID_D;
g.ActCodeBox5.value = g_ConfirmID_E;
g.ActCodeBox6.value = g_ConfirmID_F;
g.ActCodeBox7.value = g_ConfirmID_G;
// Show "Back" button if we came from the first page.
if (g_CameFromFirstPage)
{
g.btnBack.style.display = "inline";
}
InitButtons();
// Override basic button behavior.
// We want to force the back button to navigate to the first page "literally".
if (g_CameFromFirstPage)
{
g.btnBack.onclick = BackBtnHandler;
}
IsConfirmIDComplete(); // Enable the Next button if all the Confirmation ID fields are complete
GetPhoneCountries();
g.btnProdkey.onclick = ActivationSvc_ProdkeyBtnHandler;
g.btnProdkey.onmouseover = HandleButtonMouseOver;
g.btnProdkey.onmouseout = HandleButtonMouseOut;
if (g_Country_Selected_Index==0)
{
g_FirstFocusElement = g.selPhoneCountry;
}
else if (!g.btnNext.disabled)
{
g_FirstFocusElement = g.btnNext;
}
else
{
g_FirstFocusElement = g.ActCodeBox1;
}
if (g_FirstFocusElement != null)
window.setTimeout("DoFocus();",1000);
}
//// areg1.htm ///////////////////////
var g_Reg1RadioSticky = null;
function areg1_LoadMe()
{
InitFrameRef();
GetPageTitle();
CheckContrastMode();
if (g_Reg1RadioSticky == null)
g.btnNext.disabled = true;
else if (g_Reg1RadioSticky == 1)
g.rb_reg_1.checked = true;
else if (g_Reg1RadioSticky == 2)
g.rb_reg_2.checked = true;
InitButtons();
if (g.btnNext.disabled)
g_FirstFocusElement = g.btnBack;
else
g_FirstFocusElement = g.btnNext;
window.setTimeout("DoFocus();",1500);
}
function WPA_Reg1RadioClicked()
{
// if they click on either button, enable the Next button
if(g.btnNext.disabled && (g.rb_reg_1.checked || g.rb_reg_2.checked))
{
if (g.rb_reg_1.checked)
g_Reg1RadioSticky = 1;
else if (g.rb_reg_2.checked)
g_Reg1RadioSticky = 2;
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_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;
if (IsKoreanLocale())
g_LastName="";
else
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_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_Zip(g_ZipCode);
InfoObj.set_City(g_City);
TapiObj.set_CountryIndex(g.selCountry.selectedIndex);
InfoObj.set_CountryID(TapiObj.get_CountryID());
// Microsoft policy states that MSupdate should always be true whenever a user registers.
InfoObj.set_MSUpdate(true);
InfoObj.set_MSOffer(false);
if ((g_PostToMS==true) && (g.sharems.checked))
InfoObj.set_MSOffer(true);
InfoObj.set_OtherOffer(false);
if ((g_PostToMS==true) && (g.sharemsPartners.checked))
InfoObj.set_OtherOffer(true);
}
// We want the Reg3 checkboxes to be unchecked by default.
InfoObj.set_MSOffer(false);
InfoObj.set_OtherOffer(false);
function Reg3_LoadMe()
{
InitFrameRef();
CheckContrastMode();
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(1,0); // move lastname in front of first
g.FieldTable.moveRow(6,2); // move country to after firstname
g.FieldTable.moveRow(6,3); // move province to after country
g.FieldTable.moveRow(6,4); // 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.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();
var MSoffer_Checked = InfoObj.get_MSOffer();
if (MSoffer_Checked)
g.sharems.checked = true;
else
g.sharems.checked = false;
var MSotheroffer_Checked = InfoObj.get_OtherOffer();
if (MSotheroffer_Checked)
g.sharemsPartners.checked = true;
else
g.sharemsPartners.checked = false;
InitButtons();
g.error_mesg.innerHTML = L_RequiredField_Text;
g.error_mesg.style.display="inline";
var L_CNIL_Text = "<p>";
var L_CnilStyleDisplay_Text = "none";
g.cnil_mesg.innerHTML = L_CNIL_Text;
g.cnil_mesg.style.display=L_CnilStyleDisplay_Text;
window.setTimeout("DoFocus();",1000);
}
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 = false;
var g_PostToOEM = false; // no oem stuff when we are in appmode.
var POST_TO_OEM = 1;
var POST_TO_MS = 2;
var bPostChkBxStateSaved = false;
// Update status pane and navigate
function ShownavigatetoPrivacy()
{
Navigate("actsetup\\aprvcyMS.htm");
SetTimerShowIFrame(100);
}
function navigatetoPrivacy(PrivPage)
{
if (g_CurrentCKPT == CKPT_REGISTER3)
Reg3SaveSettings();
if (g_CurrentCKPT == CKPT_REGISTER1)
{
if (g.rb_reg_1.checked)
g_Reg1RadioSticky = 1;
else if (g.rb_reg_2.checked)
g_Reg1RadioSticky = 2;
else
g_Reg1RadioSticky = null;
}
ShowIFrame('False');
window.setTimeout("ShownavigatetoPrivacy();",500);
}
function ShownavigatetoActPolicy()
{
Navigate("actsetup\\apolicy.htm");
SetTimerShowIFrame(100);
}
function navigatetoActPolicy()
{
if (g.rb_act_1.checked)
g_ActivationRadioSticky = 1;
else if (g.rb_act_2.checked)
g_ActivationRadioSticky = 2;
else if (g.rb_act_3.checked)
g_ActivationRadioSticky = 3;
else
g_ActivationRadioSticky = null;
ShowIFrame('False');
window.setTimeout("ShownavigatetoActPolicy();",500);
}
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.className = "text-error";
} else {
g.LabelEmail.className = "text-primary";
}
}
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.className = "text-error";
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
//////////////////////////////////////////////////////////////////////////////////////
// General Default LoadMe function
//////////////////////////////////////////////////////////////////////////////////////
function _Default_LoadMe(SimpleBack, SimpleNext)
{
InitFrameRef();
CheckContrastMode();
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)
window.setTimeout("DoFocus();",1000);
else
g.document.body.focus();
}
function New_Default_LoadMe(SimpleBack, SimpleNext)
{
InitFrameRef();
GetPageTitle();
CheckContrastMode();
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);
window.setTimeout("DoFocus();",1000);
}
//////////////////////////////////////////////////////////////////////////////////////
// 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_ACTIV] = new CheckPoint("actsetup\\activ.htm", 0, 0, 0, 0);
dnCKPT[CKPT_ACTDONE] = new CheckPoint("actsetup\\actdone.htm", 0, 0, 0, 0);
dnCKPT[CKPT_ACTIVERR] = new CheckPoint("actsetup\\activerr.htm", 0, 0, 0, 0);
dnCKPT[CKPT_ACTIVSVC] = new CheckPoint("actsetup\\activsvc.htm", 0, 0, 0, 0);
dnCKPT[CKPT_REGISTER1] = new CheckPoint("actsetup\\areg1.htm", 0, 0, 0, 0);
dnCKPT[CKPT_REGISTER3] = new CheckPoint("actsetup\\ausrinfo.htm", 0, 0, 0, 0);
dnCKPT[CKPT_ACTCONN] = new CheckPoint("actsetup\\actconn.htm", 0, 0, 0, 0);
dnCKPT[CKPT_ACTLAN] = new CheckPoint("actsetup\\actlan.htm", 0, 0, 0, 0);
dnCKPT[CKPT_REGDIAL] = new CheckPoint("actsetup\\adrdyreg.htm", 0, 0, 0, 0);
dnCKPT[CKPT_ACT_MSG] = new CheckPoint("actsetup\\adeskerr.htm", 0, 0, 0, 0);
dnCKPT[CKPT_DONE] = new CheckPoint("actsetup\\aregdone.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)
{
trace("GoCancel: CurrentCKPT = " + g_CurrentCKPT);
try
{
if (IsLocalFile() && g.event == null)
return;
}
catch(e)
{
return;
}
DisableAllButtons();
switch (g_CurrentCKPT)
{
case CKPT_REGDIAL:
if (InActivation_AppMode())
{
g_DoActivation = false;
ShowIFrame('False');
window.setTimeout("ExitWPA();",1000);
}
else
{
GoNavigate(CKPT_DONE);
}
break;
case CKPT_REGISTER3:
g_PostToMS = false;
GoNavigate(CKPT_REGDIAL);
break;
case CKPT_ACTLAN:
ActLan();
break;
}
}
function GoBack(ckpt)
{
trace("GoBack: CurrentCKPT = " + g_CurrentCKPT);
try
{
if (IsLocalFile() && g.event == null)
return;
}
catch(e)
{
return;
}
DisableAllButtons();
if (g_CurrentCKPT == g_DialCKPT)
ResetDialing();
if(g_CurrentCKPT == CKPT_REGISTER1)
{
if (g.rb_reg_1.checked)
g_Reg1RadioSticky = 1;
else if (g.rb_reg_2.checked)
g_Reg1RadioSticky = 2;
else
g_Reg1RadioSticky = null;
}
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 ShowGoNavigate()
{
var ckptGoHere = g_ckpt_target;
switch (ckptGoHere)
{
case CKPT_REGDIAL:
trace("GoNavigate: CKPT_REGDIAL");
// Check if we are already connected
ResetConnectedToInternetEx();
if (!ConnectedToInternetEx(true))
{
// If not, try AutoDial
g_InitAutodial = window.external.InternetAutodial();
if (!g_InitAutodial)
{
// We can't assume user has modem here
if (HasNetwork() && HasModem())
{
GoNavigate(CKPT_ACTCONN);
}
else if (HasNetwork())
{
GoNavigate(CKPT_ACTLAN);
}
else if (HasModem())
{
PushCKPT(ckptGoHere); // sets g_CurrentCKPT = ckptGoHere;
Navigate(URLFromCKPT(CKPT_REGDIAL));
}
else
{
GoNavigate(CKPT_ACTIVERR);
}
SetTimerShowIFrame(15000);
break;
}
else
{
g_Internet = INTERNET_YES;
}
}
IcsConnect(ICS_CONN_TYPE_REG);
SetTimerShowIFrame(ACTIVATION_TIMEOUT);
break;
case CKPT_ACT_MSG:
trace("GoNavigate: CKPT_ACT_MSG");
PushCKPT(ckptGoHere); // sets g_CurrentCKPT = ckptGoHere;
Navigate(URLFromCKPT(ckptGoHere));
SetTimerShowIFrame(5000);
break;
default:
trace("GoNavigate: default (" + ckptGoHere + " = " +
URLFromCKPT(ckptGoHere) + ")");
PushCKPT(ckptGoHere); // sets g_CurrentCKPT = ckptGoHere;
Navigate(URLFromCKPT(ckptGoHere));
SetTimerShowIFrame(1200);
break;
}
}
var g_ckpt_target = null;
var g_AfterConnectionDone = false;
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;
}
g_ckpt_target = ckptGoHere;
var L_GeneratingInstall_Text = "Generating new Installation ID...";
var L_RetrievingCountry_Text = "Retrieving Installation ID...";
var L_ValidatingConn_Text = "Verifying activation...";
if (ckptGoHere==CKPT_REGDIAL)
{
ShowIFrame('False', L_CheckConnectivity_Text);
Span_WPA_MainTitle.innerText = L_BlankTitle_Text;
}
else if (ckptGoHere==CKPT_ACTIVSVC)
{
if (g_ActivSvc_Reload)
{
if (g_Load_InstallID)
ShowIFrame('False', L_GeneratingInstall_Text);
else
ShowIFrame('False', L_RetrievingCountry_Text);
Span_WPA_MainTitle.innerText = L_BlankTitle_Text;
}
else
{
g_ActivSvc_Reload = true;
}
}
else if (ckptGoHere==CKPT_ACT_MSG)
{
if (g_AfterConnectionDone)
{
g_AfterConnectionDone = false;
ShowIFrame('False', L_ValidatingConn_Text);
Span_WPA_MainTitle.innerText = L_BlankTitle_Text;
}
else
ShowIFrame('False');
}
else
{
ShowIFrame('False');
}
window.setTimeout("ShowGoNavigate();",500);
}
function ExitWPA()
{
window.external.Finish();
}
// 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()
{
g.document.body.style.cursor="wait";
try
{
g.btnNext.className="buttons-disabled";
g.btnNext.disabled=true;
}
catch(e) {}
try
{
g.btnBack.className="buttons-disabled";
g.btnBack.disabled=true;
}
catch(e) {}
try
{
g.btnSkip.className="buttons-disabled";
g.btnSkip.disabled=true;
}
catch(e) {}
try
{
g.btnProdkey.className="buttons-disabled";
g.btnProdkey.disabled=true;
}
catch(e) {}
try
{
g.btnQuit.className="buttons-disabled";
g.btnQuit.disabled=true;
}
catch(e) {}
try
{
g.btnTelephone.className="buttons-disabled";
g.btnTelephone.disabled=true;
}
catch(e) {}
}
function GoQuit()
{
trace("GoQuit: CurrentCKPT = " + g_CurrentCKPT);
// var L_strCloseWindow_Text ="Click OK to exit registration reminder.";
// if (confirm(L_strCloseWindow_Text))
DisableAllButtons();
window.external.Finish();
}
function GoNext()
{
trace("GoNext: CurrentCKPT = " + g_CurrentCKPT);
try
{
if (IsLocalFile() && g.event == null)
return;
}
catch(e)
{
return;
}
DisableAllButtons();
switch (g_CurrentCKPT)
{
case CKPT_ACTIV:
if (g.rb_act_1.checked)
{
g_ActivationRadioSticky = 1;
g_DoActivation = true;
if (CheckForAnyConnection())
{
if (TapiObj.IsTapiServiceRunning())
{
GoNavigate(CKPT_REGISTER1);
}
else
{
GoNavigate(CKPT_REGDIAL);
}
}
else
{
g_PostToMS = false;
GoNavigate(CKPT_ACTIVERR);
}
}
else if (g.rb_act_2.checked)
{
g_ActivationRadioSticky = 2;
g_DoActivation = false;
g_CameFromFirstPage = true;
GoNavigate(CKPT_ACTIVSVC);
}
else
{
g_ActivationRadioSticky = 3;
g_DoActivation = false;
ShowIFrame('False');
window.setTimeout("ExitWPA();",1000);
}
break;
case CKPT_REGISTER1:
if (g.rb_reg_1.checked)
{
g_Reg1RadioSticky = 1;
g_PostToMS = true;
GoNavigate(CKPT_REGISTER3);
}
else
{
g_Reg1RadioSticky = 2;
g_PostToMS = false;
GoNavigate(CKPT_REGDIAL);
}
break;
case CKPT_ACTIVERR:
GoNavigate(CKPT_ACTIVSVC);
break;
case CKPT_ACTIVSVC:
GoNavigate(CKPT_DONE);
break;
case CKPT_REGISTER3:
if(VerifyReg3Fields())
{
Reg3SaveSettings();
GoNavigate(CKPT_REGDIAL);
}
break;
case CKPT_ACTCONN:
if (g.rb_conn_lan.checked)
{
g_ActConnRadioSticky = 1;
GoNavigate(CKPT_ACTLAN);
}
else
{
g_ActConnRadioSticky = 2;
PushCKPT(CKPT_REGDIAL);
Navigate(URLFromCKPT(CKPT_REGDIAL));
}
break;
case CKPT_ACTLAN:
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))
);
ActLan();
break;
case CKPT_REGDIAL:
GoNavigate(CKPT_DONE);
break;
case CKPT_ACT_MSG:
if ( g_ActivationStatus != ERR_ACT_SUCCESS )
{
GoNavigate(CKPT_ACTIVSVC);
break;
}
// Fall through
case CKPT_DONE:
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");
g.document.body.style.backgroundColor = "transparent";
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) {}
window.setTimeout("EnableDefaultCursor();",500);
}
function EnableDefaultCursor()
{
g.document.body.style.cursor="default";
}
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';
WPAKey.src = 'images/wpakey.jpg';
WPATop.src = 'images/wpatop.jpg';
WPABottom.src = 'images/wpabtm.jpg';
WPAFlag.src = 'images/wpaflag.jpg';
WPABottom.style.top = WPAWindowHeight - 45;
WPAKey.style.left = WPAWindowWidth - 237;
WPAKey.style.top = WPAWindowHeight - 315;
}
function CheckForAnyConnection()
{
var Capabilities = GetConnectionCapabilities();
return (Capabilities != CONNECTIONTYPE_INVALID &&
Capabilities != CONNECTIONTYPE_NONE);
}
var g_fSIFTimer = false;
var g_iSIFTimerID;
function SetTimerShowIFrame(iMilliSeconds)
{
// This function is intended to wrap SetTimer calls to ShowIFrame
// so that we don't get multiple overlapping calls to Show the IFrame
if (g_fSIFTimer)
{
try
{
window.clearTimeout(g_iSIFTimerID);
}
catch(e) {}
g_fSIFTimer = false;
}
g_iSIFTimerID = window.setTimeout("ShowIFrame();", iMilliSeconds);
g_fSIFTimer = true;
}
var g_ShowTransition = false;
function ShowIFrame(ShowIt, loadingstatus)
{
// Kill an existing timers
if (g_fSIFTimer)
{
try
{
window.clearTimeout(g_iSIFTimerID);
}
catch(e) {}
g_fSIFTimer = false;
}
if (g_ShowTransition)
{
WPATransContainer.filters[0].Apply();
}
if (ShowIt == null)
{
// Show Iframe
WPA_DIV2.style.visibility="visible";
WPA_DIV1.style.visibility="hidden";
PageStatus.style.visibility="hidden";
WPAProgressbar.style.visibility = "hidden";
if (g_ShowTransition)
{
WPATransContainer.filters[0].Play();
}
}
else
{
// Hide Iframe
WPA_DIV2.style.visibility="hidden";
WPA_DIV1.style.visibility="visible";
if (g_ShowTransition)
{
WPATransContainer.filters[0].Play();
}
// Show progress text...
if (loadingstatus!=null)
{
PageStatus.style.visibility="visible";
PageStatus.innerHTML=loadingstatus;
WPAProgressbar.style.visibility = "hidden"; // lets hide this for now...
}
else
{
PageStatus.style.visibility="hidden";
WPAProgressbar.style.visibility = "hidden";
}
}
}
window.onresize = SetupPageLayout;
var g_Already_Activated;
function InitApplication()
{
// Make sure all the services have started up
window.external.ComputerNameChangeComplete(false);
WPATransContainer.style.display="inline";
try
{
g_Already_Activated = window.external.NeedActivation();
}
catch(e)
{
g_Already_Activated = 999;
}
// 0 means activation is not needed or has already occurred.
if (g_Already_Activated == 0)
{
// If we're here, Windows is already activated and all we need is to show CKPT_ACTDONE.
SetupPageLayout();
InitFrameRef();
g_status = STATUS_OFF;
g_DoActivation = false;
InitCKPT();
if (0 != DirObj.get_AppMode)
{
do
{
PopCKPT();
}
while (null != g_CurrentCKPT);
}
GoNavigate(CKPT_ACTDONE);
SetTimerShowIFrame(900);
}
else if (g_Already_Activated == 999)
{
window.external.Finish();
}
else
{
SetupPageLayout();
g_bStartup = true;
InitFrameRef();
GetConnectionCapabilities();
g_status = STATUS_OFF;
g_DoActivation = true;
CheckForAnyConnection();
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_ACTIV);
SetTimerShowIFrame(900);
}
}
function loadTransitionFilter()
{
document.all.WPATransContainer.style.display = "none";
document.all.WPATransContainer.style.position = "absolute";
document.all.WPATransContainer.style.top = 0;
document.all.WPATransContainer.style.left = 0;
document.all.WPATransContainer.style.width = "100%";
document.all.WPATransContainer.style.height = "100%";
if ((window.screen.colordepth >= 16) && window.external.UseFadeEffect())
{
document.all.WPATransContainer.style.filter = "progid:DXImageTransform.Microsoft.Fade(duration=0.2,overlap=0.8)";
try
{
if (WPATransContainer.filters[0])
{
g_ShowTransition = true;
}
}
catch(e)
{
}
}
}
</script>
</HEAD>
<BODY topMargin=0 bgcolor="#4E6FD6" leftMargin=0 onload="loadTransitionFilter();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=WPAKey style="LEFT: 0px; TOP: 0px; POSITION: absolute; z-index:-98;" 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="WPATransContainer">
<!-- First Content (by design, don't remove) -->
<span ID="WPA_DIV1" STYLE="POSITION: absolute; left:0; top:0; width=100%; height=100%; background-Color: transparent;">
<table border=0 width="100%" height="100%" class="text-primary">
<tr>
<td valign=middle align=center>
<span id=PageStatus></span>
<br>
<span id=WPAProgressbar style="visibility:hidden;"><img src="images/progress.gif"></span>
</td>
</tr>
</table>
</span>
<!-- Actual Content -->
<span id="WPA_DIV2" style="visibility: hidden; 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>