/* CISO.js . 01/21/06 */
defaultStatus="Welcome to the Interactive Calendar . ISO . Monday to Sunday Page";
window.status=defaultStatus;

function statusMsg(msg) {
	window.status = msg;
}
var weekNo = 0; // ****
var hdr = "";	// Varies by month
var ftr = "</tr></tbody></table>"; // used each time
var mmyy = "";
var theDays = "";
var theMonth = "";
var theYear = 2005;
var theMonths = new Array(13);

var curDay, curMonth, curYear, mo, yr;

var today = new Date();
var curDay = today.getDate();
var curMonth = today.getMonth();
var curYear = today.getYear();
if (curYear < 2000)
		curYear = curYear + 1900;
		
var lblDays = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");

var lblMonths=new Array("January","February","March","April","May","June");
lblMonths = lblMonths.concat("July","August","September","October","November","December","January");

// alert(lblDays.length + " " + lblMonths.length);

var dayAbbrev = new Array(8);
for (i = 0; i < lblDays.length; i++) {
	dayAbbrev[i] = lblDays[i].substring(0, 3);
}
/*
var dayAbbrev = new Array(8);
for (i = 0; i < lblDays.length; i++) {
	alert(lblDays[i].substring(0, 3));
}
*/
var monthAbbrev = new Array(13);
for (i = 0; i < lblMonths.length; i++) {
	monthAbbrev[i] = lblMonths[i].substring(0, 3);
}
/*
var monthAbbrev = new Array(13);
for (i = 0; i < lblMonths.length; i++) {
	alert(lblMonths[i].substring(0, 3));
}
*/
function monthNumberOfDays(m, y) {
	var d = 31;	// most months (7) have 31 days
	if (m==3 || m==5 || m==8 || m==10) d = 30; // 4 months have 30
//	February LeapYear calculation 
	if (m==1) { d = (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) ? 29 : 28; } // Feb
	return (d);
}

hdrDaysISO = popDaysISO();

function popDaysISO() {
	s = "<tr><td class='WeekLabel' width='18'>Week</td>";
	s += "<td class='WeekEndLabel' width='18'>" + dayAbbrev[0] + "</td>";
	for (var i = 1; i <= 5; i++) { // lblDays abbrev
		s += "<td class='DayLabel' width='17'>" + dayAbbrev[i] + "</td>";
	}
	s += "<td class='WeekEndLabel' width='18'>" + dayAbbrev[6] + "</td></tr>";
	return s;
}

hdrDays = popDaysUSA();

function popDaysUSA() {
	s = "<tr><td class='WeekLabel' width='18'>Week</td>";
//	s += "<td class='WeekEndLabel' width='18'>" + dayAbbrev[0] + "</td>";
	for (var i = 1; i <= 5; i++) { // lblDays abbrev
		s += "<td class='DayLabel' width='17'>" + dayAbbrev[i] + "</td>";
	}
	s += "<td class='WeekEndLabel' width='18'>" + dayAbbrev[6] + "</td>";
	s += "<td class='WeekEndLabel' width='18'>" + dayAbbrev[7] + "</td></tr>";
	return s;
}

var monthChoice = monthChoices(theYear);

function monthChoices(y) {
s = "";
for (i = 0; i <= 11; i++) { 
	s += "<div class='NavItem'><a href='#' ";
	s += "onClick='yearCalendar(" + y + ", " + i + ", " + i + ")'> ";
	s += lblMonths[i] + "</a></div>"; 
}
return s;
}

var yearChoice = "";

function dspChoices(s) {
switch(s) {
    case 'M':
		it = monthChoices(theYear);
		break;
	case 'Y':
		yearChoice = '';
		for (var y = theYear - 5; y <= theYear + 5; y++ ) {
		yearChoice += "<div class='NavItem'><a href='#' onClick='yearCalendar(" + y + ", 0, 11)'> " + y + "</a></div>";  }
//		yearChoice += "<div class='NavItem'><a href='#'> Other </a></div>"; 
		it = yearChoice;
		break;
	case 'Z':
		it = ''
		break;
	default: 
		it = '';
}
	document.getElementById('theChoices').innerHTML = it; //monthChoice;
}

function hdrMonth(i){
	s = "<tr><td class='MonthHeader' colspan='8' border='1'>" + lblMonths[i] +  "</td></tr>"
	s += hdrDays;
	return s;
}

function theMonthCalendars(lo, up) {
	str = "";
	for (var i = lo; i <= up; i++) {
		str += theMonths[i];
	}
		str += "</tr>";
	return str;
}

function yearCalendar(yr, lo, up) {
	mmyy = "";
	theDays = "";
	theMonth = "";
	theYear = yr;
firstWeekDate = new Date(lblMonths[lo] + " 1, " + yr);
// firstThurs = firstWeekDate.getDay();
// alert(firstWeekDate + " : " + firstThurs) // + " " + newYear)
weekNo = ((firstWeekDate.getDay() > 4) || (firstWeekDate.getDay() == 0)) ? 0 : 1;
 hdr = "<table class='outer'><tbody><tr>";
 hdr += "<tr><td class='YearHeader' colspan='3' border='1'>" + yr +  "</td></tr>"

 for (i = lo; i <= up; i++) {	// initialize before each iteration
	theMonths[i] = "<td><table class='inner'>" + hdrMonth(i);
	mmddyy(i, yr);
	theMonths[i] += theDays + "</tbody></table></td>";	

// Skip at 3 month intervals
	if (((i + 1) % 3) == 0)	{  theMonths[i] += "</tr><tr>"; }
//	else
//		{   } 
	}
theMonthCalendar = theMonthCalendars(lo, up);
document.getElementById('Calendar').innerHTML = "";
document.getElementById('Calendar').innerHTML = hdr + theMonthCalendar + ftr; //mmyy + 
}

function mmddyy(mo, yr) {
	//	alert("mmddyy")
monthNumberDays =  monthNumberOfDays(mo, yr);
var dayOfMonth = 1;
var theFirst = new Date(lblMonths[mo] + " 1, " + yr);
// alert(theFirst.getDay());
// var firstOfMonth = theFirst.getDay();
var firstOfMonth = (theFirst.getDay() == 0) ? 7 : theFirst.getDay();
// alert(firstOfMonth);
var theLast = new Date(lblMonths[mo] +  monthNumberDays + ", " + yr);
var lastOfMonth = theLast.getDay();  //Weekday[mo + "/" + monthNumberDays[mo] + "/" + yr]

// Weeks of month
// First week - pad blank cells before first day of month
// Allow for padding of leading spaces w/ lastOfMonth + firstOfMonth - 1

var i = 0;	//Set to Sunday
nWeeks = 0;	//Make N of weeks = so each month = vertical ht.
theDays = "<tr><td class='WeekNo'>" + weekNo + "</td>";  // Start table row ****
for (var j = 1; j <= firstOfMonth + monthNumberDays - 1; j++) { 
	if (j < firstOfMonth) {  
		theDays += "<td></td>"; 
		}
	else {
		if (dayOfMonth == curDay && mo == curMonth  && yr == curYear) {
			theDays += "<td class='Today'>" + dayOfMonth;
		}
		else { 
			if (j % 7 == 0 || j % 7-6 == 0) {	// ISO 
			theDays += "<td class='WeekEnd'>" + dayOfMonth;
		}
		else
		theDays += "<td class='Day'>" + dayOfMonth;
		}
		dayOfMonth++;
	}
	theDays += "</td>";
	i++; 
	if (i == 7) {
		nWeeks++;
		weekNo++;  // ****
		theDays += "</tr><tr>";
		if (j < firstOfMonth + monthNumberDays - 1) theDays += "<td class='WeekNo'>" + weekNo + "</td>"; // ****
		i = 0;
	} 	// if (nWeeks < 5) theDays += " </tr><tr><br /></tr><tr>. </tr>";
	}	// theDays += "<tr>";	//document.write (theDays);
	while (nWeeks < 6) { 	//Make N of weeks = so each month = vertical ht.
		theDays += "</td><td><br /></td></tr>"; nWeeks++ 
	}
}

function timeR() { // called recusively; i.e., by itself repeatedly
	var t = new Date();
	var hh = t.getHours();
	var mm = t.getMinutes();
	var ss = t.getSeconds();

	greeting = "Good Evening!";	// redefine greeting if later in day or in evening
	if (hh < 18) greeting = "Good Afternoon!  ";
	if (hh < 12) greeting = "Good Morning!";	// midnight included

	noon = (hh < 12) ? "AM" : "PM";
	
	ss = (ss < 10) ? "0" + ss : ss;
	mm = (mm < 10) ? "0" + mm : mm;
	hh = (hh == 0) ? 12 : hh; // midnight

	if (hh > 12) hh -=12; // 12 hour clock adjustment

	var wd = t.getDay(); // week day, start at 0
	var dd = t.getDate(); // day of month
	var mon = t.getMonth(); // month, start at 0
	var ccyy = t.getFullYear(); // century century year year

	dspDate = lblDays[wd] + "<br />" + lblMonths[mon] +  " " + dd + ", " + ccyy;
//	dspDate = lblDays[wd].substr(0,3) + " " + dd + " " + lblMonths[mon].substr(0,3) + " " + ccyy; // put it together
//	dspDate = lblDays[wd] + ", " + dd + " " + lblMonths[mon] + " " + ccyy; // put it together
	dspTime = hh + ":" + mm+ ":" + ss + " " + noon; // put it together

var dspClock = greeting + '<br />' + dspTime + '<br />' + dspDate;
document.getElementById('Clock').innerHTML = dspClock;
		setTimeout('timeR()',1000); // call recursively
}
