
function Update(date){
	this.date	= "";
	if (date) { 
		this.date	= new Date(date);
	}
	this.heartrate	= "";
	this.text	= [];
	this.images	= [];
	this.expand	= 1;
	this.isTime	= date.match(/\:/);
	this.week	= function(dateCon) {
				var diff = this.date - dateCon;
				var days = diff/86400000;
				var weeks = new String((days/7) + 2);
				var point = weeks.indexOf(".");
				return weeks.substring(0,point);
			  };
	this.time	= function() {
				var hour	= this.date.getHours();
				var minute	= "" + this.date.getMinutes();
				if (minute.length <2) { minute = "0" + minute; }
				if (minute.length <2) { minute = "0" + minute; }
				var ampm	= "am";
				if (hour > 11) { 
					ampm = "pm";
				}
				if (hour > 12) { 
					hour = hour - 12;
				}
				return hour + ":" + minute + ampm;
			  };
	this.addText	= function(text) {
				this.text.push(text);
			  };
	this.addImage	= function(url) {
				this.images.push(url);
			  };
	return this;
}

Date.prototype.dayName	= function() {
	var day;
	switch (this.getDay()) {
		case 0: day	= "Sunday"; break;
		case 1: day	= "Monday"; break;
		case 2: day	= "Tuesday"; break;
		case 3: day	= "Wednesday"; break;
		case 4: day	= "Thursday"; break;
		case 5: day	= "Friday"; break;
		case 6: day	= "Saturday"; break;
	};
	return day;
}

Date.prototype.monthName	= function() {
	var month;
	switch (this.getMonth()) {
		case 0: month = "January"; break;
		case 1: month = "February"; break;
		case 2: month = "March"; break;
		case 3: month = "April"; break;
		case 4: month = "May"; break;
		case 5: month = "June"; break;
		case 6: month = "July"; break;
		case 7: month = "August"; break;
		case 8: month = "September"; break;
		case 9: month = "October"; break;
		case 10: month = "November"; break;
		case 11: month = "December"; break;
	};
	return month;
}

function DaddyLog() {

 this.today	= new Date();
 this.dateCon;
 this.dateDue;
 this.diff;
 this.days;
 this.weeks;
 this.reverse = 0;
 this.xml;
 this.Updates	= new Array();
 this.updatelistTarget	= "";

 this.setXML	= function(xml) {
	this.xml	= xml;
 };

 this.setUpdateListTarget	= function(div) {
	this.updatelistTarget	= div;
 };

 this.loadXML	= function() {
	var Updates	= this.xml.getElementsByTagName("Update");
	for (var uIdx = 0; uIdx < Updates.length; uIdx++) {
		var UpdateXML	= Updates[uIdx];
		var date	= getElementValue(UpdateXML,"Date","0");
		var heartrate	= getElementValue(UpdateXML,"Heartrate","");
		var textArr	= getElementValues(UpdateXML,"Text","");
		var imgArr	= getElementValues(UpdateXML,"Image","");
		var UpdateObj	= this.addUpdate(date);
		UpdateObj.heartrate	= heartrate;
		for (var iIdx = 0; iIdx < imgArr.length; iIdx++) {
			UpdateObj.addImage(imgArr[iIdx]);
		}
		for (var tIdx = 0; tIdx < textArr.length; tIdx++) {
			UpdateObj.addText(textArr[tIdx]);
		}
	}
	this.listUpdates();
 };

 this.addUpdate		= function(date) {
	var upd	= new Update(date);
	this.Updates.push(upd);
	return upd;
 };

 this.setDateCon	= function(date) {
	this.dateCon	= new Date(date);
 };

 this.setDateDue	= function(date) {
	this.dateDue	= new Date(date);
 };

 this.SortByDate	= function(a,b) {
	return a.date - b.date;
 };

 this.INIT			= function() {
	if (this.dateCon) {
		this.diff	= this.today - this.dateCon;
		this.days	= this.diff/86400000;
		this.weeks	= (this.days/7) + 2;
	}
 };

 this.tid	= 0;

 this.countdown		= function(span) {
	if (span) {
		this.countdownspan	= span;
	}
	var sec		= (this.dateDue - new Date()) /1000;
	var min		= sec/60;
	var hour	= min/60;
	var day		= hour/24;
	var week	= day/7;
	var weekstr	= new String(week);
	    week	= weekstr.substring(0,weekstr.indexOf("."));
	var daystr	= new String(7*weekstr.substring(weekstr.indexOf("."),weekstr.length));
	    day		= daystr.substring(0,daystr.indexOf("."));
	var hourstr	= new String(24*daystr.substring(daystr.indexOf("."),daystr.length));
	    hour	= hourstr.substring(0,hourstr.indexOf("."));
	var minstr	= new String(60*hourstr.substring(hourstr.indexOf("."),hourstr.length));
	    min		= minstr.substring(0,minstr.indexOf("."));
	var secstr	= new String(60*minstr.substring(minstr.indexOf("."),minstr.length));
	    sec		= secstr.substring(0,secstr.indexOf("."));
	var timeLeft	= week  + " week" + ((week == 1) ? "" : "s") + ", ";
	    timeLeft	+= day  + " day" + ((day == 1) ? "" : "s") + ", ";
	    timeLeft	+= hour + " hour" + ((hour == 1) ? "" : "s") + ", ";
	    timeLeft	+= min  + " minute" + ((min == 1) ? "" : "s") + ", ";
	    timeLeft	+= sec  + " second" + ((sec == 1) ? "" : "s");
	var pref = "Countdown: ";
	if (week.indexOf("-") == 0) { 
		timeLeft	= timeLeft.substring(1,timeLeft.length);
		pref = "Late: ";
	}
	this.countdownspan.innerHTML = pref + timeLeft;
	this.tid = setTimeout("DADDYLOG.countdown()",1000)
 };

 this.listUpdates	= function() {
	var div	= this.updatelistTarget;
	var sortedUpdates = this.Updates.sort(this.SortByDate);
	if (this.reverse == 1) {
		sortedUpdates = sortedUpdates.reverse();
	}
	var currDate	= "";
	div.innerHTML	= "";
 	for(var k in sortedUpdates) {
		var updhtml	= "";
		var U = sortedUpdates[k];
		var visible	= (U.expand) ? "inline" : "none";
		var date = U.date.dayName() + " " + U.date.monthName() + " " + U.date.getDate() + ", " + U.date.getFullYear();
		if (currDate != date) {
			updhtml	+= "<P ALIGN=CENTER><I><B>" + date + "</B> - " + U.week(this.dateCon) + " Weeks</I></P>";
		}
		currDate	= date;
		updhtml	+= ("<DIV ID='Update" + k + "' STYLE='display:" + visible + "'>");
		if (U.heartrate) {
			updhtml	+= "<P>New heartrate: <B>" + U.heartrate + "bpm</B></P>";
		}
		updhtml	+= "<P>";
		if (U.isTime) { 
			updhtml	+= "<SPAN WIDTH=5 STYLE='";
			updhtml	+= "float:left;";
			updhtml	+= "font-weight:bold;";
			updhtml	+= "font-style:italic;";
			updhtml	+= "'>";
			updhtml	+= U.time() + ":&nbsp;&nbsp;";
			updhtml	+= "</SPAN>";
		}
		for (var k in U.text) {
			var  text = U.text[k];
			updhtml	+= text;
			updhtml	+= "</SPAN>";
			updhtml	+= "<BR>";
		}
		updhtml	+= "</P>";
		for (var i in U.images) {
			var  image = U.images[i];
			updhtml	+= "<IMG SRC=\"" + image + "\">";
		}
		updhtml	+= "</DIV>";
		div.innerHTML	+= updhtml;
	}
 };


 return this;
}

var DADDYLOG	= new DaddyLog();

