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.
 
 
 
 
 
 

871 lines
25 KiB

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns:IE>
<HEAD>
<TITLE>System Restore (Step 1)</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="Yes">
<OBJECT ID=ObjSystemRestore CLASSID="CLSID:fd589b7c-7ce0-11d3-b9e5-00c04f79e399"></OBJECT>
<SCRIPT ID="RestoreUI" LANGUAGE=JavaScript SRC="RestoreUI.js"></SCRIPT>
<LINK id="UI_StyleSheet" REL="stylesheet" TYPE="text/css" HREF="rstrui.css">
<STYLE>
@media all
{
IE\:Calendar
{
behavior: url(calendar.htc) ;
cal--title-background-color : #296695;
cal--title-font-family : Tahoma, Verdana, Franklin Gothic, Arial;
cal--title-font-size : 8pt;
cal--title-font-weight : bold;
cal--title-text-align : center;
cal--dayTitle-background-color : #b7d7f0;
cal--dayTitle-color : #2f6790;
cal--dayTitle-font-family : Tahoma, Verdana, Franklin Gothic, Arial;
cal--dayTitle-font-size : 8pt;
cal--dayTitle-font-weight : bold;
cal--dayTitle-text-align : center;
cal--navButton-background-color : #b7d7f0;
cal--navButton-color : #2f6790;
cal--navButton-font-family : Tahoma, Verdana, Franklin Gothic, Arial;
cal--navButton-font-size : 8pt;
cal--navButton-font-weight : bold;
cal--navButton-text-align : center;
cal--offMonth-background-color : white;
cal--offMonth-font-family : Tahoma, Verdana, Franklin Gothic, Arial;
cal--offMonth-font-size : 8pt;
cal--offMonth-font-weight : normal;
cal--offMonth-text-align : right;
cal--offMonth-vertical-align : text-top;
cal--currentMonth-background-color: white;
cal--currentMonth-font-family : Tahoma, Verdana, Franklin Gothic, Arial;
cal--currentMonth-font-size : 8pt;
cal--currentMonth-font-weight : normal;
cal--currentMonth-text-align : right;
cal--currentMonth-vertical-align : text-top;
cal--selectedDay-background-color : #296695;
cal--selectedDay-color : white;
cal--selectedDay-font-family : Tahoma, Verdana, Franklin Gothic, Arial;
cal--selectedDay-font-size : 9pt;
cal--selectedDay-font-weight : bold;
cal--selectedDay-text-align : right;
cal--selectedDay-vertical-align : text-top;
cal--validDay-background-color : white;
cal--validDay-color : navy;
cal--validDay-font-family : Tahoma, Verdana, Franklin Gothic, Arial;
cal--validDay-font-size : 9pt;
cal--validDay-font-weight : bold;
cal--validDay-text-align : right;
cal--validDay-vertical-align : text-top;
}
}
</STYLE>
<script>
var g_bPageLoaded = false ;
var g_nSelectedPoint = -1 ;
var g_nRPExistsCurDay = false ;
var L_RPAppInstall_ToolTip = "Restores your computer to the point before this program was installed";
var L_RPAppUninstall_ToolTip = "Restores your computer to the point before this program was removed";
var L_RPRestore_ToolTip = "Restores your computer to the point before this restoration occurred";
var L_RPSysChkPt_ToolTip = "Restores your computer to this time";
var L_RPDriverInstall_ToolTip = "Restores your computer to the point before this driver was installed";
var L_RPModifySettings_ToolTip = "Restores your computer to the point before this program was modified";
var L_RPRecovery_ToolTip = "Restores your computer to the point before this recovery happened";
var L_RPDefault_ToolTip = "Restores your computer to this time";
var L_NoRestorePtSelected_Message =
"Please pick a point to restore your computer to and then click Next.";
var L_NoRestorePtsOnDay_Message = "There are no restore points created yet for this day. To restore immediately, pick another day and restore point, and then try again.";
var L_NoRestorePts_Message = "There are currently no restore points available.";
function OnLink_HelpF1()
{
OnLink_Choose();
}
function UpdateEventList()
{
var i = 0 ;
var varDateSel = ObjSystemRestore.SelectedDate;
var fRPExists = false ;
var nPoint = ObjSystemRestore.SelectedPoint;
var nListPoint = 0;
var nCurPoints = 0;
var nSel = 0;
var oRPList = window.document.all.LstRestorePoint ;
//
// By default nothing selected
//
g_nSelectedPoint = -1 ;
RP_DelAllElements();
for ( i = ObjSystemRestore.Count; i > 0; i-- )
{
var rpi = ObjSystemRestore( i-1 );
dateRPI = rpi.TimeStamp( 0 );
if ( ObjSystemRestore.CompareDate( varDateSel, dateRPI ) == 0 )
{
fRPExists = true ;
var oEntry = document.createElement("LI");
var oDiv = document.createElement("DIV");
oDiv.dir = "ltr";
oDiv.noWrap = true;
oDiv.tabIndex = -1;
oDiv.innerHTML = "&nbsp;&nbsp;" +
ObjSystemRestore.FormatTime( dateRPI ) +
"&nbsp;&nbsp;";
var oSpan = document.createElement("SPAN");
oSpan.dir = "ltr";
oSpan.tabIndex = -1;
oSpan.innerText = rpi.Name;
oDiv.appendChild( oSpan );
oEntry.appendChild( oDiv );
oEntry.value = i-1;
oEntry.tabIndex = -1;
//
// Set tip based on the type of restore point, else go to the nice default tip
//
if ( rpi.Type == 0 ) {
oEntry.title = L_RPAppInstall_ToolTip ;
}
else if ( rpi.Type == 1 ) {
oEntry.title = L_RPAppUninstall_ToolTip ;
}
else if ( rpi.Type == 6 ) {
oEntry.title = L_RPRestore_ToolTip ;
}
else if ( rpi.Type == 7 ) {
oEntry.title = L_RPSysChkPt_ToolTip ;
}
else if ( rpi.Type == 10 ) {
oEntry.title = L_RPDriverInstall_ToolTip ;
}
else if ( rpi.Type == 12 ) {
oEntry.title = L_RPModifySettings_ToolTip ;
}
else if ( rpi.Type == 14 ) {
oEntry.title = L_RPRecovery_ToolTip;
}
else {
oEntry.title = L_RPDefault_ToolTip ;
};
//
// Append element to list
//
LstRestorePoint.appendChild(oEntry);
if ( nPoint == i-1 ) {
nListPoint = nCurPoints ;
};
nCurPoints++;
}
}
if(fRPExists){
var oNodes = LstRestorePoint.childNodes;
if (ObjSystemRestore.RestorePtSelected == false)
{
nListPoint=0;
ObjSystemRestore.SelectedPoint = oNodes.item(0).value;
}
}
//
// If a point has been selected highlight this point
//
if ( fRPExists && ObjSystemRestore.RestorePtSelected ) {
setItem(LstRestorePoint,nListPoint)
};
//
// If there are no restore points on the day then print a message
// that other days have restore points so check some other day
//
if ( fRPExists == false )
{
var oEntry = document.createElement("LI");
oEntry.innerHTML = "\<DIV TABINDEX=-1 STYLE=\"margin: 10px;\"\>" +
L_NoRestorePtsOnDay_Message +
"\<\/DIV\>";
LstRestorePoint.appendChild(oEntry);
calgrid.focus();
}
//
// Restore points for the current day
//
g_nRPExistsCurDay = fRPExists ;
TxtDateSel.innerText = ObjSystemRestore.FormatDate( varDateSel, true );
if ( g_nRPExistsCurDay )
{
TxtDateSel.style.color = "FFFFFF";
}
else
{
TxtDateSel.style.color = "silver";
}
}
function OnCancel()
{
if ( ObjSystemRestore.Cancel() )
{
external.window.close();
}
}
function OnBack()
{
if ( g_bPageLoaded == false )
return ;
ObjSystemRestore.CanNavigatePage = true ;
self.location = "SRUI-Main.htm";
}
function OnNext()
{
if ( g_bPageLoaded == false )
return ;
if (!ObjSystemRestore.CanRunRestore())
{
external.window.close();
return;
}
if ( g_nRPExistsCurDay == false )
{
ObjSystemRestore.ShowMessage( L_NoRestorePtSelected_Message );
}
else
{
if ( g_nSelectedPoint >= 0 ) {
if ( ObjSystemRestore.CheckRestore() )
{
ObjSystemRestore.CanNavigatePage = true ;
self.location = "SRUI-Confirm.htm";
}
}
else {
ObjSystemRestore.ShowMessage( L_NoRestorePtSelected_Message );
};
};
}
//
// When user selects the previous day in the restore point list
//
function OnBtnBack()
{
var varDateSel = ObjSystemRestore.SelectedDate;
var varDateRPI;
var varDateTemp = null;
if ( g_bPageLoaded == false )
return ;
//
// Remove selected restore point
//
ObjSystemRestore.RestorePtSelected = false ;
for ( i = 0; i < ObjSystemRestore.Count; i++ )
{
varDateRPI = ObjSystemRestore( i ).TimeStamp( 0 );
if ( ObjSystemRestore.CompareDate( varDateSel, varDateRPI ) > 0 )
{
if ( varDateTemp == null || ObjSystemRestore.CompareDate( varDateRPI, varDateTemp ) > 0 )
{
varDateTemp = varDateRPI;
}
}
}
if ( varDateTemp != null )
{
ObjSystemRestore.SelectedDate = varDateTemp;
UpdateEventList();
}
//
// Update the calender with the selected date
//
var oCurDate = new Date(ObjSystemRestore.SelectedDate);
document.all.cal.value = oCurDate.getDate() + "/" + (oCurDate.getMonth()+1) + "/" + oCurDate.getFullYear() ;
}
//
// When user selects next day in the restore point list
//
function OnBtnNext()
{
var varDateSel = ObjSystemRestore.SelectedDate;
var varDateRPI;
var fFoundPoint = false ;
var varDateTemp = null;
if ( g_bPageLoaded == false )
return ;
//
// Remove selected restore point and find next restore point,
// only special case is if there are no restore points and
// today is higher than the current date then we must navigate
// to today even though it has no restore points
//
ObjSystemRestore.RestorePtSelected = false ;
for ( i = 0; i < ObjSystemRestore.Count; i++ )
{
varDateRPI = ObjSystemRestore( i ).TimeStamp( 0 );
if ( ObjSystemRestore.CompareDate( varDateSel, varDateRPI ) < 0 )
{
if ( varDateTemp == null || ObjSystemRestore.CompareDate( varDateRPI, varDateTemp ) < 0 )
{
varDateTemp = varDateRPI;
}
}
}
if ( varDateTemp != null )
{
ObjSystemRestore.SelectedDate = varDateTemp;
UpdateEventList();
}
else {
if ( ObjSystemRestore.CompareDate( varDateSel, ObjSystemRestore.CurrentDate ) < 0 )
{
ObjSystemRestore.SelectedDate = ObjSystemRestore.CurrentDate ;
UpdateEventList();
}
}
//
// Update the calender with the selected date
//
var oCurDate = new Date(ObjSystemRestore.SelectedDate);
document.all.cal.value = oCurDate.getDate() + "/" + (oCurDate.getMonth()+1) + "/" + oCurDate.getFullYear() ;
}
//
// When user selects a day in the calendar code has to be updated
//
function OnCalDateChange()
{
var e = window.event.srcElement ;
var oNewDate = null ;
if ( window.event.propertyName == "value" )
{
oNewDate = new Date(e.year,(e.month-1),e.day);
//
// If a date has been changed/selected by the user set the external date the
// same and also update the event list
//
if ( ObjSystemRestore.CompareDate( ObjSystemRestore.SelectedDate, oNewDate.getVarDate() ) != 0 )
{
ObjSystemRestore.RestorePtSelected = false ;
ObjSystemRestore.SelectedDate = oNewDate.getVarDate() ;
UpdateEventList();
}
};
}
function checkParent(src, tag) {
while ("HTML" != src.tagName) {
if (tag == src.tagName)
return src;
src = src.parentElement;
}
return null;
}
function selectItem(list) {
var el = checkParent(event.srcElement, "LI");
//
// In cases where the UL is selected then we have
// already gone up past the LI so null will be
// returned (assuming the page has no other UL's)
//
if ( !el )
return ;
if ( g_nRPExistsCurDay == false )
return ;
if ("LI" == el.tagName && el != list.selected) {
if (null != list.selected)
{
list.selected.className = "";
list.selected.setAttribute("tabindex" , -1, 0);
}
el.className = "selected";
list.selected = el;
el.setAttribute("tabindex" , 0, 0);
}
if (null != list.selected)
list.selected.focus();
g_nSelectedPoint = getSelectedPoint();
//
// Set the new restore point
//
if ( getSelectedPoint() >= 0 )
ObjSystemRestore.SelectedPoint = getSelectedPointValue();
}
//
// Given a list and a value of an element in the list find the element
// and set this element as the selected element
//
function setItem(list,num) {
var oNodes = list.childNodes ;
if ( oNodes.length > 0 ) {
if ( num >= 0 && num < oNodes.length ) {
var el = oNodes.item(num);
if ("LI" == el.tagName && el != list.selected) {
if (null != list.selected)
{
list.selected.className = "";
list.selected.setAttribute("tabindex" , -1, 0);
}
el.className = "selected";
list.selected = el;
el.setAttribute("tabindex" , 0, 0);
}
}
}
g_nSelectedPoint = getSelectedPoint();
//
// Set the new restore point
//
if ( getSelectedPoint() >= 0 )
ObjSystemRestore.SelectedPoint = getSelectedPointValue();
}
function selectItemKey(list)
{
if ( g_nRPExistsCurDay == true )
{
if ( event.keyCode == 38 ) { // up arrow
setItem(list, g_nSelectedPoint-1);
window.event.returnValue=true;
}
else if ( event.keyCode == 40 ) { // down arrow
setItem(list, g_nSelectedPoint+1);
window.event.returnValue=true;
}
else if ( event.keyCode == 13 ) { // enter key
OnNext();
window.event.returnValue=false;
}
if (null != list.selected)
list.selected.focus();
window.event.cancelBubble=true;
}
}
function RP_DelAllElements()
{
var oAttach = window.document.all.LstRestorePoint ;
var oNodes = oAttach.childNodes ;
var nLength = oNodes.length ;
var nSelected = -1 ;
while ( oNodes.length > 0 ) {
oNodes.item(0).removeNode(true);
}
}
function getSelectedPoint()
{
var oAttach = window.document.all.LstRestorePoint ;
var oNodes = oAttach.childNodes ;
var nSelected = -1 ;
if ( oNodes.length > 0 ) {
for ( i = 0 ; i < oNodes.length ; i++ ) {
if ( oNodes.item(i) == oAttach.selected ) {
nSelected = i
break ;
};
}
};
return nSelected ;
}
function getSelectedPointValue()
{
var oAttach = window.document.all.LstRestorePoint ;
var oNodes = oAttach.childNodes ;
var nSelected = -1 ;
var nValue = 0 ;
if ( oNodes.length > 0 ) {
for ( i = 0 ; i < oNodes.length ; i++ ) {
if ( oNodes.item(i) == oAttach.selected ) {
nSelected = i
nValue = oNodes.item(i).value ;
break ;
};
}
};
return nValue ;
}
</script>
<SCRIPT FOR=window EVENT=onresize>
ObjSystemRestore.CanNavigatePage = true ;
self.location = "SRUI-Pick.htm";
</SCRIPT>
<script for=window event=onload>
var calendar = document.all.cal ;
var i = 0 ;
if (!ObjSystemRestore.CanRunRestore())
{
external.window.close();
return;
}
fnSetLowColorImage();
ObjSystemRestore.CanNavigatePage = false ;
window.HomePageBody.style.visibility = "visible";
//
// Initialize calendar object with dates
//
var oMinDate = new Date(ObjSystemRestore.MinDate);
var oMaxDate = new Date(ObjSystemRestore.MaxDate);
var oCurDate = new Date(ObjSystemRestore.CurrentDate);
var oSelDate ;
if ( ObjSystemRestore.RestorePtSelected )
{
oSelDate = new Date(ObjSystemRestore.SelectedDate);
}
else
{
oSelDate = new Date(ObjSystemRestore.CurrentDate);
}
calendar.minDate = oMinDate.getDate() + "/" + (oMinDate.getMonth()+1) + "/" + oMinDate.getFullYear() ;
calendar.maxDate = oMaxDate.getDate() + "/" + (oMaxDate.getMonth()+1) + "/" + oMaxDate.getFullYear() ;
for ( i = 0; i < ObjSystemRestore.Count; i++ )
{
var oRpDate = new Date( ObjSystemRestore( i ).TimeStamp( 0 ) );
calendar.addValidDate = oRpDate.getDate() + "/" + (oRpDate.getMonth()+1) + "/" + oRpDate.getFullYear() ;
}
calendar.addValidDate = oCurDate.getDate() + "/" + (oCurDate.getMonth()+1) + "/" + oCurDate.getFullYear() ;
calendar.value = oCurDate.getDate() + "/" + (oCurDate.getMonth()+1) + "/" + oCurDate.getFullYear() ;
//
// If a date has already been selected then set this
// date in the calendar
//
if ( ObjSystemRestore.RestorePtSelected )
{
document.all.cal.value = oSelDate.getDate() + "/" + (oSelDate.getMonth()+1) + "/" + oSelDate.getFullYear() ;
}
//
// Now make calendar visible
//
TdCalendar.style.visibility = "visible";
if ( ObjSystemRestore.Count == 0 )
{
var oEntry = document.createElement("LI");
oEntry.innerHTML = "\<DIV TABINDEX=-1 STYLE=\"margin: 10px;\"\>" +
L_NoRestorePts_Message +
"\<\/DIV\>";
LstRestorePoint.appendChild(oEntry);
window.BtnNext.disabled = true;
window.BtnCancel.focus();
}
else
{
UpdateEventList();
if (null != LstRestorePoint.selected)
LstRestorePoint.selected.focus();
}
//
// Set page loaded
//
g_bPageLoaded = true ;
</script>
</HEAD>
<!--
Body of doc
-->
<BODY ID="HomePageBody">
<!--
Background image located on the bottom right of the page
-->
<DIV style="position: absolute; bottom: 0px; right: 0px; z-index: -1">
<img src="watermark.jpg" border=0 width="270" height="297"></DIV>
<table width=100% height=100% cellspacing=0 cellpadding=0 border=0><tbody>
<!--
Page header
-->
<tr height="60px"><td id="TdBranding" colspan=3 class="styHeaderBlock">
<table class="styImage" width=100% height=100% cellspacing=0 cellpadding=0 background="SR_Grad.jpg" style="border-collapse: collapse" bordercolor="#111111"><tbody><tr>
<td width="65px" nowrap>&nbsp;</td>
<td width=80% valign=top nowrap>
<div id="TxtHeader" class="styHeaderText">
<font color="#FFFFFF">Select a Restore Point </font>
</div>
</td>
<td>
<table><tr>
<td>
<a id="NoLoc1" class="styLink" href="javascript:OnLink_Choose();">
<img src="help.gif" border=0 width="32" height="32">
</a>
</td>
<td>
<a id="NoLoc1" class="styLink" href="javascript:OnLink_Choose();">
<font color="#FFFFFF"> <id id=HelpId>Help</id></font>
</a>
</td>
</tr></table>
<id id="NoLoc2">&nbsp;</id>
</td>
</tr></tbody></table>
</td></tr>
<tr height="3px"><td class="styHorzLine" colspan=3></td></tr>
<!--
Top anchor
-->
<tr height="25px"><td colspan=3>
<table width=100% height=100% cellspacing=0 cellpadding=0><tbody><tr>
<td width=90%></td>
<td class="styImage">
</td>
</tr></tbody></table>
</td></tr>
<tr>
<!-- Left anchor -->
<td id="NoLoc3" class="styImage" width=8% align=left valign=bottom>
</td>
<td>
<table width=100% height=100% cellspacing=0 cellpadding=0 border=0><tbody>
<tr>
<!--
PAGE CONTENT
-->
<td class="styContentBlock">
<DIV id="TxtMain1" class="styText">
The following calendar displays in bold all of the dates that have restore
points available. The list displays the restore points that are available for
the selected date.
<br><br>
Possible types of restore points are: system checkpoints (scheduled restore
points created by your computer), manual restore points (restore points
created by you), and installation restore points (automatic restore points created when certain
programs are installed).
<br><br>
</DIV>
<table cellpadding=0 cellspacing=0><tbody>
<tr class="styTextBold">
<td id="TdStep1">
1. On this calendar, click a bold date.
</td>
<td>&nbsp;</td>
<td id="TdStep2">
2. On this list, click a restore point.
</td>
</tr>
<tr height=8px colspan=3><td></td></tr>
<tr>
<td id="TdCalendar" style="visibility:hidden">
<IE:Calendar id="cal" ONPROPERTYCHANGE="OnCalDateChange();">
</IE:Calendar>
</td>
<td>&nbsp;</td>
<td>
<table id="RestorePoint_Cell" STYLE="border : 1px solid black" cellspacing=0 cellpadding=0><tbody>
<tr CLASS="styNavButtonTable">
<TD id=L_ButLeft valign=center>
<BUTTON CLASS="styNavButtons" id=button1 onclick=OnBtnBack() name=button1 title="Shows the previous day.">
&lt;
</BUTTON>
</TD>
<TD id=L_ButRight align=center valign=center WIDTH="86%">
<DIV id=TxtDateSel class="styTextBold">
&nbsp;
</DIV>
</TD>
<TD id=L_Day_Cell align=right valign=center>
<BUTTON CLASS="styNavButtons" id=button2 onclick=OnBtnNext() name=button2 title="Shows the next day.">
&gt;
</BUTTON>
</TD>
</TR>
<TR>
<TD id="RestorePointListTD" align=center class="styListCell" colspan=3>
<DIV align=left ID="RestorePointList" class="styList">
<UL TABINDEX=-1 ID="LstRestorePoint" ONCLICK="selectItem(this);" ONKEYDOWN="selectItemKey(this);">
</UL>
</DIV>
</TD>
</TR>
</tbody></TABLE>
</td>
</tr>
</tbody></table>
</td>
<!-- Right padding -->
<td class="styText" width=14%>&nbsp;</td>
</tr>
<!--
Navigation row
-->
<tr height="24px">
<td class="styText" height="12px" colspan=2 nowrap>
<table cellspacing=0 cellpadding=0 border=0><tbody><tr>
<td width="70%">&nbsp;</td>
<td class="styText" width="10%" nowrap>
<button id="BtnBack" class="styButton" onclick="OnBack()" accesskey="B" tabindex=0>
&lt; <U>B</U>ack
</button>
&nbsp;&nbsp;
<button id="BtnNext" class="styButton" onclick="OnNext()" accesskey="N" tabindex=0>
<U>N</U>ext &gt;
</button>
&nbsp;&nbsp;
<button id="BtnCancel" class="styButton" onclick="OnCancel()" accesskey="C" tabindex=0>
<U>C</U>ancel
</button>
</td>
</tr></tbody></table>
</td>
</tr></tbody></table>
</td>
<!-- Right anchor -->
<td id="NoLoc4" class="styImage" width=8% align=right valign=bottom>
</td>
</tr>
<!--
Bottom anchor
-->
<tr height="24px"><td colspan=3>
<table width=100% height=100% cellspacing=0 cellpadding=0><tbody><tr>
<td width=90%></td><td class="styImage">
</td>
</tr></tbody></table>
</td></tr>
</tbody></table>
</BODY>
</HTML>