/* author: David Faulder */
/* Creation date: 08/07/2007 */

// Date formating functions

function MakeArray0() {
    for (var i = 0; i < arguments.length; i++) {
        this[i] = arguments[i]; 
    }
}

var days = new MakeArray0(
  'Sunday', 'Monday', 'Tuesday', 'Wednesday',
  'Thursday', 'Friday', 'Saturday');

var months = new MakeArray0(
  'January', 'February', 'March',
  'April', 'May', 'June',
   'July', 'August', 'September',
  'October', 'November', 'December');

function nths(day) { 
    if (day == 1 || day == 21 || day == 31) {
        return 'st';
    } else if (day == 2 || day == 22) {
        return 'nd';
    } else if (day == 3 || day == 23) {
        return 'rd';
    } else {
        return 'th';
    }
}

function y2k(number) {
    return (number < 1000) ? number + 1900 : number;
}

function hourpad(seeddate) {
    if (seeddate.getHours() * 1 < 10) {
        value = "0"; 
    } else {
        value = "";
    }
    return value;
}

function minutepad(seeddate) {
    if (seeddate.getMinutes() * 1 < 10) {
        value = "0";
    } else {
        value = "";
    }
    return value;
}

function formattedDate(seeddate) {
    value = 
	days[seeddate.getDay()] + ', '  +
 	seeddate.getDate() + nths(seeddate.getDate()) + ' ' +
	months[seeddate.getMonth()] + ' ' +
	y2k(seeddate.getYear()) + ' at ' +
	hourpad(seeddate) + 	
	seeddate.getHours() + ':' +
	minutepad(seeddate) + 
	seeddate.getMinutes();
    return value; 
}

// Getting last modified date information

var lastmod = document.lastModified;
var moddate = new Date(lastmod);
lastUpdateString = 'Last updated on ' + formattedDate(moddate) ;
  
//Display Time of last visit script
//Visit http://rainbow.arch.scriptmania.com for original of this much adapted script

var expDays = 90;									// persistence of cookie
var lastVisitDate = new Date();						// define as public variable
var exp = new Date(); 
exp.setTime(exp.getTime() + (expDays*24*60*60*1000));

function When(info){
	// When
	var rightNow = new Date(); 						// DateTime Stamp for Cookie
	var WWHTime = 0;

	WWHTime = GetCookie('WWhenH');
	WWHTime = WWHTime * 1;

	var lastVisitDate = new Date(WWHTime);  		// Date-i-fy that number
	var WWHText = formattedDate(lastVisitDate);
	SetCookie ("WWhenH", rightNow.getTime(), exp);

	return WWHText;
}

function VisitCount(info){
	var psj=0;
	// How many times
	var WWHCount = GetCookie('WWHCount');
	if (WWHCount == null) {
		WWHCount = 0;
	} else {
		WWHCount++;
	}
	SetCookie ('WWHCount', WWHCount, exp);

	return WWHCount+1;
}

function set(){
	SetCookie ('WWHCount', 0, exp);
	SetCookie ('WWhenH', 0, exp);
}

function getCookieVal (offset) {  
	var endstr = document.cookie.indexOf (";", offset);  
	if (endstr == -1)    
		endstr = document.cookie.length;  
		return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {  
	var arg = name + "=";  
	var alen = arg.length;  
	var clen = document.cookie.length;  
	var i = 0;  
	while (i < clen) {    
		var j = i + alen;    
		if (document.cookie.substring(i, j) == arg)      
			return getCookieVal (j);    
			i = document.cookie.indexOf(" ", i) + 1;    
			if (i == 0) break;   
		}  
	return null;
}

function SetCookie (name, value) {  
	var argv = SetCookie.arguments;  
	var argc = SetCookie.arguments.length;  
	var expires = (argc > 2) ? argv[2] : null;  
	var path = (argc > 3) ? argv[3] : null;  
	var domain = (argc > 4) ? argv[4] : null;  
	var secure = (argc > 5) ? argv[5] : false;  
	document.cookie = name + "=" + escape (value) + 
	((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + 
	((path == null) ? "" : ("; path=" + path)) +  
	((domain == null) ? "" : ("; domain=" + domain)) +    
	((secure == true) ? "; secure" : "");
}

function DeleteCookie (name) {  
	var exp = new Date();  
	exp.setTime (exp.getTime() - 1);  
	// This cookie is history  
	var cval = GetCookie (name);  
	document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}

if (VisitCount()==1){
	lastVisitString = "This is your 1st visit to this page" ;
	When() ;
	} else if (VisitCount() > 1) {
	lastVisitString = "Your last visit was on " + When() ;
}

// checking last update information against last visit
function updateCheck() {
 if (!document.getElementsByTagName) return; 			// only for modern compliant browsers
 var spans = document.getElementsByTagName("span"); 	// create array of spans
 for (var i=0; i < spans.length; i++) {					// go through each span
   var span = spans[i];									// select each one
   if (span.className == "new") {						// picks spans where they indicate updates
		var spanDateStr = span.innerHTML.substring(8);	// need error check if not d MMMM yyyy format
		// error trap required here (but it looks fairly fault tolerant)
		var spanDate = new Date(spanDateStr);
		var spanDateDiff = spanDate - lastVisitDate;
		if (spanDateDiff >= 0) {							// if updated since last visit
			span.innerHTML = "NEW since last visit: updated " + span.innerHTML.substring(8);
			span.className = "vnew";					// Change message and style
		}
   }
 }
}
window.onload = updateCheck;