meriwether
Programmer
The following script appears to work in NS6/7 and IE6, but Netscape 4.x is complaining, DaysObject.add is not a function (line 92). Any assistance on getting this to work would be appreciated. Here's the entire page:
<html>
<head>
<style type="text/css">
<!--
body, select, input { font-family: arial; font-size: 8pt; }
//-->
</style>
<script language="JavaScript">
<!--
//////////////////////////////////////////////
//set todays date
Now = new Date();
NowDay = Now.getDate();
NowMonth = Now.getMonth();
NowYear = Now.getYear();
if (NowYear < 2000) NowYear += 1900; //for Netscape
// HOW MANY DAYS IN A MONTH INCLUDING LEAP YEARS
function DaysInMonth(WhichMonth, WhichYear)
// added 1 to each month to account for the <option "Day" value
{
var DaysInMonth = 32;
if (WhichMonth == "Apr" || WhichMonth == "Jun" || WhichMonth == "Sep" || WhichMonth == "Nov"
DaysInMonth = 31;
if (WhichMonth == "Feb" && (WhichYear/4) != Math.floor(WhichYear/4)) DaysInMonth = 29;
if (WhichMonth == "Feb" && (WhichYear/4) == Math.floor(WhichYear/4)) DaysInMonth = 30;
return DaysInMonth;
}
// CHANGE THE AVAILABLE DAYS IN A MONTHS
function ChangeOptionDays(Which) {
DaysObject = eval("document._pffform." + Which + "Day"
;
MonthObject = eval("document._pffform." + Which + "Month"
;
YearObject = eval("document._pffform." + Which + "Year"
;
Month = MonthObject[MonthObject.selectedIndex].text;
Year = YearObject[YearObject.selectedIndex].text;
DaysForThisSelection = DaysInMonth(Month, Year);
CurrentDaysInSelection = DaysObject.length;
if (CurrentDaysInSelection > DaysForThisSelection) {
for (i=0; i<(CurrentDaysInSelection-DaysForThisSelection); i++)
{
DaysObject.options[DaysObject.options.length - 1] = null
}
}
if (DaysForThisSelection > CurrentDaysInSelection) {
for (i=0; i<(DaysForThisSelection-CurrentDaysInSelection); i++)
{
// NewOption = new Option(DaysObject.options.length +1);
// removed the +1 feature from above to acctount for <option "Day" value
NewOption = new Option(DaysObject.options.length);
DaysObject.add(NewOption);
}
}
if (DaysObject.selectedIndex < 0) DaysObject.selectedIndex == 0;
}
// WRITE OPTION YEARS PLUS X
function WriteYearOptions(YearsAhead) {
// modified to write option values
line = "";
// added for "Year" to show up as first option -- remove if not needed
line += "<option value='0'>Year</option>"; // add "Year" option
for (i=0; i<YearsAhead; i++)
{
optVal = NowYear +i; // create variable for option value
// line += "<OPTION>";
line += "\n<OPTION value='" + optVal + "'>"; // add value to each option
line += NowYear + i +"</option>";
}
return line;
}
//////////////////////////////////////////////
// CHECK DATES
// SET VALIDDATE AS CURRENT DATE PLUS REQUIRED DAYS
var noticeReq = 30; // 30 days notice required
var temp = new Date(Now.setDate(Now.getDate() + noticeReq));
validDate = (temp.getMonth()+1) + "/" + temp.getDate() + "/" + temp.getFullYear();
validDate = new Date(validDate);
validDate = Date.UTC(validDate);
function checkDRDates() {
// VARIABLES
var departMonth = document._pffform.DepartureDateMonth.options[document._pffform.DepartureDateMonth.selectedIndex].value;
var departDay = document._pffform.DepartureDateDay.options[document._pffform.DepartureDateDay.selectedIndex].value;
var departYear = document._pffform.DepartureDateYear.options[document._pffform.DepartureDateYear.selectedIndex].value;
var returnMonth = document._pffform.ReturnDateMonth.options[document._pffform.ReturnDateMonth.selectedIndex].value;
var returnDay = document._pffform.ReturnDateDay.options[document._pffform.ReturnDateDay.selectedIndex].value;
var returnYear = document._pffform.ReturnDateYear.options[document._pffform.ReturnDateYear.selectedIndex].value;
alert(departMonth + "/" + departDay + "/" + departYear + "\n" + returnMonth + "/" + returnDay + "/" + returnYear);
// CHECK FOR DEPARTURE AND RETURN ENTRIES
if ((departDay == 0) || (departMonth == 0) || (departYear == 0)) {
alert("Please select a Departure Date. Thank you."
;
return false;
} else {
if ((returnDay == 0) || (returnMonth == 0) || (returnYear == 0)) {
alert("Please select a Return Date. Thank you."
;
return false;
} else {
// CREATE A FULL DATE MONTH/DATE/YEAR
departDate = new Date(departMonth + '/' + departDay + '/' + departYear);
returnDate = new Date(returnMonth + '/' + returnDay + '/' + returnYear);
departDate = Date.UTC(departDate);
returnDate = Date.UTC(returnDate);
// CHECK IF DEPART DATE IS LESS THAN 30 DAYS FROM TODAY'S DATE
if (departDate < validDate) {
alert ("The Departure Date is not 30 or more days from Today's date.\nThe program rules state that the flight must be 30 days or more from today.\nPlease review the rules, and make the appropriate changes. Thank you."
;
return false;
} else {
// CHECK IF DEPARTURE DATE PRECEEDS RETURN DATE
if (departDate > returnDate) {
alert ("The Return date precedes the Departure Date.\nPlease check your Departure and Return Dates.\n"
;
return false;
} else {
// CHECK IF TWO DATES ARE SAME, CONFIRM IF SO
if (departDate == returnDate) {
confirm ("The Departure Date is the same as the Return Date.\nIf this is correct, please click ''OK''.\nIf you would like to make changes, please click ''Cancel'' and make the appropriate changes.\nThank you."
;
return true;
} else {
// all is well
alert("Dates are OK"
; // remove for production
}
}
}
}
}
}
// -->
</script>
</head>
<body>
<form name="_pffform" method=post>
D Date:
<select name="DepartureDateMonth" onchange="ChangeOptionDays('DepartureDate')">
<option value="0">Month</option>
<option value="1">Jan</option>
<option value="2">Feb</option>
<option value="3">Mar</option>
<option value="4">Apr</option>
<option value="5">May</option>
<option value="6">Jun</option>
<option value="7">Jul</option>
<option value="8">Aug</option>
<option value="9">Sep</option>
<option value="10">Oct</option>
<option value="11">Nov</option>
<option value="12">Dec</option>
</select>
<select name="DepartureDateDay">
<option value="0">Day</option>
<OPTION value="1">1</option>
<OPTION value="2">2</option>
<OPTION value="3">3</option>
<OPTION value="4">4</option>
<OPTION value="5">5</option>
<OPTION value="6">6</option>
<OPTION value="7">7</option>
<OPTION value="8">8</option>
<OPTION value="9">9</option>
<OPTION value="10">10</option>
<OPTION value="11">11</option>
<OPTION value="12">12</option>
<OPTION value="13">13</option>
<OPTION value="14">14</option>
<OPTION value="15">15</option>
<OPTION value="16">16</option>
<OPTION value="17">17</option>
<OPTION value="18">18</option>
<OPTION value="19">19</option>
<OPTION value="20">20</option>
<OPTION value="21">21</option>
<OPTION value="22">22</option>
<OPTION value="23">23</option>
<OPTION value="24">24</option>
<OPTION value="25">25</option>
<OPTION value="26">26</option>
<OPTION value="27">27</option>
<OPTION value="28">28</option>
<OPTION value="29">29</option>
<OPTION value="30">30</option>
<OPTION value="31">31</option>
</select>
<select name="DepartureDateYear" onchange="ChangeOptionDays('DepartureDate')">
<script language="JavaScript">
document.write(WriteYearOptions(03));
</script>
</select>
<br>
<br>
R Date:
<select name="ReturnDateMonth" onchange="ChangeOptionDays('ReturnDate')">
<option value="0">Month</option>
<option value="1">Jan</option>
<option value="2">Feb</option>
<option value="3">Mar</option>
<option value="4">Apr</option>
<option value="5">May</option>
<option value="6">Jun</option>
<option value="7">Jul</option>
<option value="8">Aug</option>
<option value="9">Sep</option>
<option value="10">Oct</option>
<option value="11">Nov</option>
<option value="12">Dec</option>
</select>
<select name="ReturnDateDay">
<option value="0">Day</option>
<OPTION value="1">1</option>
<OPTION value="2">2</option>
<OPTION value="3">3</option>
<OPTION value="4">4</option>
<OPTION value="5">5</option>
<OPTION value="6">6</option>
<OPTION value="7">7</option>
<OPTION value="8">8</option>
<OPTION value="9">9</option>
<OPTION value="10">10</option>
<OPTION value="11">11</option>
<OPTION value="12">12</option>
<OPTION value="13">13</option>
<OPTION value="14">14</option>
<OPTION value="15">15</option>
<OPTION value="16">16</option>
<OPTION value="17">17</option>
<OPTION value="18">18</option>
<OPTION value="19">19</option>
<OPTION value="20">20</option>
<OPTION value="21">21</option>
<OPTION value="22">22</option>
<OPTION value="23">23</option>
<OPTION value="24">24</option>
<OPTION value="25">25</option>
<OPTION value="26">26</option>
<OPTION value="27">27</option>
<OPTION value="28">28</option>
<OPTION value="29">29</option>
<OPTION value="30">30</option>
<OPTION value="31">31</option>
</select>
<select name="ReturnDateYear" onchange="ChangeOptionDays('ReturnDate')">
<script language="JavaScript">
document.write(WriteYearOptions(03));
</script>
</select>
<!-- type set to button for testing only -->
<p><input type="button" value="Submit" onclick="checkDRDates()";></p>
<p><font color="blue">Notes:
<p>This script checks for:
<ul>
<li>D Date is 30+ days from Today's date</li>
<li>D Date is not same as R Date, Confirm OK if so</li>
<li>R Date does not precede D Date</li>
<li>Days are adjusted per month/year</li>
<li>Year is written specified # of years based on current year</li>
</ul></font>
<p><font color="red"><b>Currently debuggin "null" issue in Netscape 4.x</b></font><font color="blue">
<p>Works and tested with the following browsers:
<ul>
<li>IE 6</li>
<li>NS 6.2</li>
</ul>
</font>
</form>
</body>
</html>
<html>
<head>
<style type="text/css">
<!--
body, select, input { font-family: arial; font-size: 8pt; }
//-->
</style>
<script language="JavaScript">
<!--
//////////////////////////////////////////////
//set todays date
Now = new Date();
NowDay = Now.getDate();
NowMonth = Now.getMonth();
NowYear = Now.getYear();
if (NowYear < 2000) NowYear += 1900; //for Netscape
// HOW MANY DAYS IN A MONTH INCLUDING LEAP YEARS
function DaysInMonth(WhichMonth, WhichYear)
// added 1 to each month to account for the <option "Day" value
{
var DaysInMonth = 32;
if (WhichMonth == "Apr" || WhichMonth == "Jun" || WhichMonth == "Sep" || WhichMonth == "Nov"
if (WhichMonth == "Feb" && (WhichYear/4) != Math.floor(WhichYear/4)) DaysInMonth = 29;
if (WhichMonth == "Feb" && (WhichYear/4) == Math.floor(WhichYear/4)) DaysInMonth = 30;
return DaysInMonth;
}
// CHANGE THE AVAILABLE DAYS IN A MONTHS
function ChangeOptionDays(Which) {
DaysObject = eval("document._pffform." + Which + "Day"
MonthObject = eval("document._pffform." + Which + "Month"
YearObject = eval("document._pffform." + Which + "Year"
Month = MonthObject[MonthObject.selectedIndex].text;
Year = YearObject[YearObject.selectedIndex].text;
DaysForThisSelection = DaysInMonth(Month, Year);
CurrentDaysInSelection = DaysObject.length;
if (CurrentDaysInSelection > DaysForThisSelection) {
for (i=0; i<(CurrentDaysInSelection-DaysForThisSelection); i++)
{
DaysObject.options[DaysObject.options.length - 1] = null
}
}
if (DaysForThisSelection > CurrentDaysInSelection) {
for (i=0; i<(DaysForThisSelection-CurrentDaysInSelection); i++)
{
// NewOption = new Option(DaysObject.options.length +1);
// removed the +1 feature from above to acctount for <option "Day" value
NewOption = new Option(DaysObject.options.length);
DaysObject.add(NewOption);
}
}
if (DaysObject.selectedIndex < 0) DaysObject.selectedIndex == 0;
}
// WRITE OPTION YEARS PLUS X
function WriteYearOptions(YearsAhead) {
// modified to write option values
line = "";
// added for "Year" to show up as first option -- remove if not needed
line += "<option value='0'>Year</option>"; // add "Year" option
for (i=0; i<YearsAhead; i++)
{
optVal = NowYear +i; // create variable for option value
// line += "<OPTION>";
line += "\n<OPTION value='" + optVal + "'>"; // add value to each option
line += NowYear + i +"</option>";
}
return line;
}
//////////////////////////////////////////////
// CHECK DATES
// SET VALIDDATE AS CURRENT DATE PLUS REQUIRED DAYS
var noticeReq = 30; // 30 days notice required
var temp = new Date(Now.setDate(Now.getDate() + noticeReq));
validDate = (temp.getMonth()+1) + "/" + temp.getDate() + "/" + temp.getFullYear();
validDate = new Date(validDate);
validDate = Date.UTC(validDate);
function checkDRDates() {
// VARIABLES
var departMonth = document._pffform.DepartureDateMonth.options[document._pffform.DepartureDateMonth.selectedIndex].value;
var departDay = document._pffform.DepartureDateDay.options[document._pffform.DepartureDateDay.selectedIndex].value;
var departYear = document._pffform.DepartureDateYear.options[document._pffform.DepartureDateYear.selectedIndex].value;
var returnMonth = document._pffform.ReturnDateMonth.options[document._pffform.ReturnDateMonth.selectedIndex].value;
var returnDay = document._pffform.ReturnDateDay.options[document._pffform.ReturnDateDay.selectedIndex].value;
var returnYear = document._pffform.ReturnDateYear.options[document._pffform.ReturnDateYear.selectedIndex].value;
alert(departMonth + "/" + departDay + "/" + departYear + "\n" + returnMonth + "/" + returnDay + "/" + returnYear);
// CHECK FOR DEPARTURE AND RETURN ENTRIES
if ((departDay == 0) || (departMonth == 0) || (departYear == 0)) {
alert("Please select a Departure Date. Thank you."
return false;
} else {
if ((returnDay == 0) || (returnMonth == 0) || (returnYear == 0)) {
alert("Please select a Return Date. Thank you."
return false;
} else {
// CREATE A FULL DATE MONTH/DATE/YEAR
departDate = new Date(departMonth + '/' + departDay + '/' + departYear);
returnDate = new Date(returnMonth + '/' + returnDay + '/' + returnYear);
departDate = Date.UTC(departDate);
returnDate = Date.UTC(returnDate);
// CHECK IF DEPART DATE IS LESS THAN 30 DAYS FROM TODAY'S DATE
if (departDate < validDate) {
alert ("The Departure Date is not 30 or more days from Today's date.\nThe program rules state that the flight must be 30 days or more from today.\nPlease review the rules, and make the appropriate changes. Thank you."
return false;
} else {
// CHECK IF DEPARTURE DATE PRECEEDS RETURN DATE
if (departDate > returnDate) {
alert ("The Return date precedes the Departure Date.\nPlease check your Departure and Return Dates.\n"
return false;
} else {
// CHECK IF TWO DATES ARE SAME, CONFIRM IF SO
if (departDate == returnDate) {
confirm ("The Departure Date is the same as the Return Date.\nIf this is correct, please click ''OK''.\nIf you would like to make changes, please click ''Cancel'' and make the appropriate changes.\nThank you."
return true;
} else {
// all is well
alert("Dates are OK"
}
}
}
}
}
}
// -->
</script>
</head>
<body>
<form name="_pffform" method=post>
D Date:
<select name="DepartureDateMonth" onchange="ChangeOptionDays('DepartureDate')">
<option value="0">Month</option>
<option value="1">Jan</option>
<option value="2">Feb</option>
<option value="3">Mar</option>
<option value="4">Apr</option>
<option value="5">May</option>
<option value="6">Jun</option>
<option value="7">Jul</option>
<option value="8">Aug</option>
<option value="9">Sep</option>
<option value="10">Oct</option>
<option value="11">Nov</option>
<option value="12">Dec</option>
</select>
<select name="DepartureDateDay">
<option value="0">Day</option>
<OPTION value="1">1</option>
<OPTION value="2">2</option>
<OPTION value="3">3</option>
<OPTION value="4">4</option>
<OPTION value="5">5</option>
<OPTION value="6">6</option>
<OPTION value="7">7</option>
<OPTION value="8">8</option>
<OPTION value="9">9</option>
<OPTION value="10">10</option>
<OPTION value="11">11</option>
<OPTION value="12">12</option>
<OPTION value="13">13</option>
<OPTION value="14">14</option>
<OPTION value="15">15</option>
<OPTION value="16">16</option>
<OPTION value="17">17</option>
<OPTION value="18">18</option>
<OPTION value="19">19</option>
<OPTION value="20">20</option>
<OPTION value="21">21</option>
<OPTION value="22">22</option>
<OPTION value="23">23</option>
<OPTION value="24">24</option>
<OPTION value="25">25</option>
<OPTION value="26">26</option>
<OPTION value="27">27</option>
<OPTION value="28">28</option>
<OPTION value="29">29</option>
<OPTION value="30">30</option>
<OPTION value="31">31</option>
</select>
<select name="DepartureDateYear" onchange="ChangeOptionDays('DepartureDate')">
<script language="JavaScript">
document.write(WriteYearOptions(03));
</script>
</select>
<br>
<br>
R Date:
<select name="ReturnDateMonth" onchange="ChangeOptionDays('ReturnDate')">
<option value="0">Month</option>
<option value="1">Jan</option>
<option value="2">Feb</option>
<option value="3">Mar</option>
<option value="4">Apr</option>
<option value="5">May</option>
<option value="6">Jun</option>
<option value="7">Jul</option>
<option value="8">Aug</option>
<option value="9">Sep</option>
<option value="10">Oct</option>
<option value="11">Nov</option>
<option value="12">Dec</option>
</select>
<select name="ReturnDateDay">
<option value="0">Day</option>
<OPTION value="1">1</option>
<OPTION value="2">2</option>
<OPTION value="3">3</option>
<OPTION value="4">4</option>
<OPTION value="5">5</option>
<OPTION value="6">6</option>
<OPTION value="7">7</option>
<OPTION value="8">8</option>
<OPTION value="9">9</option>
<OPTION value="10">10</option>
<OPTION value="11">11</option>
<OPTION value="12">12</option>
<OPTION value="13">13</option>
<OPTION value="14">14</option>
<OPTION value="15">15</option>
<OPTION value="16">16</option>
<OPTION value="17">17</option>
<OPTION value="18">18</option>
<OPTION value="19">19</option>
<OPTION value="20">20</option>
<OPTION value="21">21</option>
<OPTION value="22">22</option>
<OPTION value="23">23</option>
<OPTION value="24">24</option>
<OPTION value="25">25</option>
<OPTION value="26">26</option>
<OPTION value="27">27</option>
<OPTION value="28">28</option>
<OPTION value="29">29</option>
<OPTION value="30">30</option>
<OPTION value="31">31</option>
</select>
<select name="ReturnDateYear" onchange="ChangeOptionDays('ReturnDate')">
<script language="JavaScript">
document.write(WriteYearOptions(03));
</script>
</select>
<!-- type set to button for testing only -->
<p><input type="button" value="Submit" onclick="checkDRDates()";></p>
<p><font color="blue">Notes:
<p>This script checks for:
<ul>
<li>D Date is 30+ days from Today's date</li>
<li>D Date is not same as R Date, Confirm OK if so</li>
<li>R Date does not precede D Date</li>
<li>Days are adjusted per month/year</li>
<li>Year is written specified # of years based on current year</li>
</ul></font>
<p><font color="red"><b>Currently debuggin "null" issue in Netscape 4.x</b></font><font color="blue">
<p>Works and tested with the following browsers:
<ul>
<li>IE 6</li>
<li>NS 6.2</li>
</ul>
</font>
</form>
</body>
</html>