// myoung 2/6/09
var nowDateDF = new Date();

function feedTime(feedDate) {
	var dateStamp = "";
	var showMins = false;
	var showHours = false;
	if ((nowDateDF.getDate() == feedDate.getDate()) && (nowDateDF.getTime() > feedDate.getTime())) {
		var minsElapsed = Math.floor((nowDateDF.getTime() - feedDate.getTime())/60000)
		var hrsElapsed = Math.floor(minsElapsed/60);
		if (hrsElapsed > 0) {
			showHours = true;
			minsElapsed = minsElapsed - (hrsElapsed * 60);
		}
		
		if (minsElapsed < 1) {
			minsElapsed = 1;
		}
		
		if ((minsElapsed > 0) && (minsElapsed < 60) && (!showHours)) {
			showMins = true;
		}
		if (showHours) {
			if (hrsElapsed > 1) {
				dateStamp += (hrsElapsed + " hours ");
			} else {
				dateStamp += (hrsElapsed + " hour ");
			}
		}
		
		if (showMins) {
			if (minsElapsed > 1) {
				dateStamp += (minsElapsed + " minutes ");
			} else {
				dateStamp += (minsElapsed + " minute ");
			}
		}
		dateStamp += ("ago");
		var timeCopy = "<span style='font-size:11px; color:#394b69'> | " + dateStamp + "</span>";
		return timeCopy;
	} else {
		var timeCopy = "<span style='font-size:11px; color:#394b69'> | " + showDayOfWeek(date1) + "</span>";
		return timeCopy;
	}
}

function showDayOfWeek(dateObject) {
	var dayOfWeek = "";
	var dayNumber = dateObject.getDay();
	
	if (dateObject.getDate() == (nowDateDF.getDate()-1)) {
		dayOfWeek="Yesterday";
	} else {
		switch(dayNumber) {
		case 0:
			dayOfWeek="Sunday";
		  break;    
		case 1:
			dayOfWeek="Monday";
		  break;
		case 2:
			dayOfWeek="Tuesday";
		  break;
		case 3:
			dayOfWeek="Wednesday";
		  break;
		case 4:
			dayOfWeek="Thursday";
		  break;
		case 5:
			dayOfWeek="Friday";
		  break;
		case 6:
			dayOfWeek="Saturday";
		  break;
		}
	}
	return dayOfWeek;
}


function DailyFeedController() {
	this.date1html = "";
	this.date2html = "";
	this.date3html = "";
	this.feedItemArray = new Array();
	this.currentDate = new Date();
	this.day1FeedArray = new Array();
	this.day2FeedArray = new Array();
	this.day3FeedArray = new Array();
	this.date1 = new Date();
	this.date2 = new Date();
	this.date3 = new Date();
	
	this.addFeedItem = function(feedItem) {
		this.feedItemArray.push(new DailyFeedItem(feedItem));
	}
	
	this.sortFeedItems = function() {
		var completeArrays = 0;
		var currentArray = 0;
		var currentDateOffset = 0;

		var date1set = false;
		var date2set = false;
		var date3set = false;
		
		var tempArray = new Array();
		
		// Empty out future posts from the main array
		for (var i=0; i<this.feedItemArray.length; i++) {
			if (this.feedItemArray[i].publishDate < this.currentDate) {
				tempArray.push(this.feedItemArray[i]);
			}
		}
		this.feedItemArray = tempArray;

		while (completeArrays < 3) {
			for (var i=0; i<this.feedItemArray.length; i++) {
				var checkDate = new Date();
				checkDate.setDate(checkDate.getDate() - currentDateOffset);
				if (this.feedItemArray[i].publishDate.getDate() == checkDate.getDate()) {
					if (!date1set) {
						date1 = checkDate;
						date1set = true;
						completeArrays++;
					} else {
						if (!date2set && (date1.getDate() != checkDate.getDate())) {
							date2 = checkDate;
							date2set = true;
							completeArrays++;
						} else if (!date3set && (date1.getDate() != checkDate.getDate()) && (date2.getDate() != checkDate.getDate())) {
							date3 = checkDate;
							date3set = true;
							completeArrays++;
						}
					}
				}
			}
			currentDateOffset++;
		}
		
		for (var i=0; i<this.feedItemArray.length; i++) {
			if ((this.feedItemArray[i].publishDate.getDate() == date1.getDate()) && (this.feedItemArray[i].publishDate.getMonth() == date1.getMonth()) && (this.feedItemArray[i].publishDate.getYear() == date1.getYear())) {
				this.day1FeedArray.push(this.feedItemArray[i]);
			}
			if ((this.feedItemArray[i].publishDate.getDate() == date2.getDate()) && (this.feedItemArray[i].publishDate.getMonth() == date2.getMonth()) && (this.feedItemArray[i].publishDate.getYear() == date2.getYear())) {
				this.day2FeedArray.push(this.feedItemArray[i]);
			}
			if ((this.feedItemArray[i].publishDate.getDate() == date3.getDate()) && (this.feedItemArray[i].publishDate.getMonth() == date3.getMonth()) && (this.feedItemArray[i].publishDate.getYear() == date3.getYear())) {
				this.day3FeedArray.push(this.feedItemArray[i]);
			}
		}
	}
	
	this.populateFeedDivs = function() {
		var date1isToday = false;
		if (this.day1FeedArray[0].publishDate.getDate() == this.currentDate.getDate()) {
			date1isToday = true;
		}
		if (!date1isToday) {
			this.date1html += '<div class="date">' + showDayOfWeek(date1) + '</div>';
		}
		for (var i=0; i<this.day1FeedArray.length; i++) {
			this.date1html += '<div><a href="' + this.day1FeedArray[i].headlineUrl + '" class="dailyFeedTitle">' + this.day1FeedArray[i].headline + '</a><br /><span class="dailyFeedContentType">' + this.day1FeedArray[i].category + '</span> | <a class="dailyFeedCreditLink" href="' + this.day1FeedArray[i].sourceUrl + '" target="_blank">' + this.day1FeedArray[i].source + '</a>';
			if (date1isToday) {
				this.date1html += feedTime(this.day1FeedArray[i].publishDate);
			}
			this.date1html += '</div>'; 
		}
		
		this.date2html += '<div class="date">' + showDayOfWeek(date2) + '</div>';
		for (var i=0; i<this.day2FeedArray.length; i++) {
			this.date2html += '<div><span class="dailyFeedContentType">' + this.day2FeedArray[i].category + '</span>: <a href="' + this.day2FeedArray[i].headlineUrl + '" class="dailyFeedTitle">' + this.day2FeedArray[i].headline + '</a></div>';
		}
		
		this.date3html += '<div class="date">' + showDayOfWeek(date3) + '</div>';
		for (var i=0; i<this.day3FeedArray.length; i++) {
			this.date3html += '<div><span class="dailyFeedContentType">' + this.day3FeedArray[i].category + '</span>: <a href="' + this.day3FeedArray[i].headlineUrl + '" class="dailyFeedTitle">' + this.day3FeedArray[i].headline + '</a></div>';
		}

		$j("#dailyFeedDay1").html(this.date1html);
		$j("#dailyFeedDay2").html(this.date2html);
		$j("#dailyFeedDay3").html(this.date3html);
	}
}

function DailyFeedItem(initObj) {
	this.publishDate = new Date(initObj.publishDate);
	this.headline = initObj.headline;
	this.headlineUrl = initObj.headlineUrl;
	this.source = initObj.source;
	this.sourceUrl = initObj.sourceUrl;
	this.category = initObj.category;
}
