function dayPart() {
	var today = new Date();
	var theHour = today.getHours();
	if (theHour < 12) {
		return "morning";
	} else if (theHour < 18) {
		return "afternoon";
	} else {
		return "evening";
	}
}

function displayDate() {
	// Array for day names
	var dayNames = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
	// Array for month names
	var monthNames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
	// Get the current date
	var now = new Date();
//	var theDateOn1Line = dayNames[now.getDay()] + ", " + monthNames[now.getMonth()] + " " + now.getDate() + ", " + now.getFullYear() + ".";
	var theDateOn2Lines = monthNames[now.getMonth()] + " " + now.getDate() + ", " + now.getFullYear();
	document.write("<center>" + dayNames[now.getDay()] + "<br>" + theDateOn2Lines + "</center>");
//	document.write("<p  align='center'>" + dayNames[now.getDay()] + "<br>" + theDateOn2Lines + "</p>");
//	document.write("<center>" + theDate + "</center>");
	setTimeout("displayDate()", 1800000);	// 30X60000 ms is 1/2 hour
}

function displayDateOld() {
// displayDate();
//Get the current date
  var today = new Date();
  // Get the current month
  //alert(today.toLocaleString());
  var curDayNum = today.getDay();
  var curDay;
  switch (curDayNum) {
      case 0 :
	      curDay = "Sunday";
		  break;
      case 1 :
	      curDay = "Monday";
		  break;
      case 2 :
	      curDay = "Tuesday";
		  break;
      case 3 :
	      curDay = "Wednesday";
		  break;
      case 4 :
	      curDay = "Thursday";
		  break;
      case 5 :
	      curDay = "Friday";
		  break;
      case 6 :
	      curDay = "Saturday";
		  break;
      default:
	      curDay = "INVALID";
	}
	
  var curMonthNum = today.getMonth();
  //Attach a display name to the month number
  var curMonth;
  switch (curMonthNum) {
      case 0 :
	      curMonth = "January";
		  break;
      case 1 :
	      curMonth = "February";
		  break;
      case 2 :
	      curMonth = "March";
		  break;
      case 3 :
	      curMonth = "April";
		  break;
      case 4 :
	      curMonth = "May";
		  break;
      case 5 :
	      curMonth = "June";
		  break;
      case 6 :
	      curMonth = "July";
		  break;
      case 7 :
	      curMonth = "August";
		  break;
      case 8 :
	      curMonth = "September";
		  break;
      case 9 :
	      curMonth = "October";
		  break;
      case 10 :
	      curMonth = "November";
		  break;
      case 11 :
	      curMonth = "December";
		  break;
	  default:
	      curMonth = "INVALID";
	}
	document.write("<p  align='center'>" + curDay + "<br>" + curMonth + " " + today.getDate() + ", " + today.getFullYear() + "</p>");
	setTimeout("displayDateOld()", 1800000);	// 30X60000 ms is 1/2 hour
}


// A digital clock in the state line
// This function displays the time in the status line
// Invoke it once to activate the clock; it will call itself from then on
function displayTimeInStatusLine(win) {
	var theDate = new Date();									// Get the current time
	var theHour = theDate.getHours();							// Extract hours: 0 to 23
	var theMinute = theDate.getMinutes();
	var theAmPm = (theHour >= 12)? "PM" : "AM";
	if (theHour > 12) theHour -= 12;
	if (theHour == 0) theHour = 12;
	if (theMinute < 10) theMinute = "0" + theMinute;
	var theTime = theHour + ':' + theMinute + ' ' + theAmPm;	// Put it all together
	
	win.defaultStatus = theTime;	// Display it in the status line: window.defaultStatus or self.defaultStatus

	//Arrange to do it all again in one minute
	setTimeout("displayTimeInStatusLine(" + win + ")", 60000);	// 600000 ms is one minute
}

function blinkText(text_id, delay) {
	var elem = (document.getElementById) ?
			   document.getElementById(text_id) :
			   ((document.all) ? document.all.blinky : null);
//   			   ((document.all) ? document.all[text_id] : null);	
	if (elem) {
		elem.style.visibility = (elem.style.visibility == 'hidden') ? 'visible' : 'hidden';
			setTimeout('blinkText(' + delay +  ',' + text_id + ')', delay);
	}
    else {
		alert("Cannot find blinking_text in this document");
	}
}

function getScreenInfo() {
	var x = screen.availWidth;
	var y = screen.availHeight;
}

// Function used for animation
function myAnimation() {
	var interval = 100;		// Milliseconds between updates
	var intervalID = window.setInterval("bounce()", interval);
}

//Equalizinfg the IE and W3C Event Models and
// Preventing an event from performing its default behavior
// First checks W3C Dom2 then if it fails chaeck IE4+
function blockEvents(e) {
	var evt = (e) ? e : event;    // event is the window.event in IE4+
	var blockIt = false;
	var elem = (evt.target) ? evt.target : ((evt.srcElement) ?
			    evt.srcElement : null);
    if (elem && elem.tagName && elem.tagName.tolowerCase() == "img") {
		if (evt.cancelBubble) {    // IE4+
			evt.cancelBubble = tre;
		}
		alert("Sorry, feature not available.");
		return false;
	}
}

function blockOnContextMenuEvents() {
	if (document) {
	    document.oncontextmenu = blockEvents;
	} 
}

function displayPropNames(obj) {
	if (displayPropNames.arguments.length != 1) {
		alert("Error: ddisplayPropNames: expected only one argument, recieved " + arguments.length );
		return;
	}

	if (typeof(obj) != "object") {
		alert("Error: displayPropNames: wrong object type");
		return;
	}

    var names = "";
	for (var name in obj)
    	names += name + "----";
//		names += name + "\n";
	alert(names);
}

// n! = n * (n-1) * (n-2) .... * 1;
function factorial(n) {
	if (n == 0)
		return 1;
	else
		return n * factorial(n - 1);
}


