function timeDataManager(dataSource) {
	var _this = this;
	
	this.dataSource = dataSource
	
	/* BEGIN METHODS*/
	
	this.getValueByDateTime = function (dataSrc, defaultValue, compareTime) {
		val = this.getObjectByDateTime(dataSrc, defaultValue, compareTime);
		if(typeof(val) == 'object') val = val.value;
		return val;
	}
	
	this.getObjectByDateTime = function (dataSrc, defaultValue, compareTime) {
		var oDate = new Date();
		var curWeekday = this.weekDayName(oDate.getDay()).toLowerCase();
		var curTime = compareTime ? this.dayTimeInSeconds(compareTime) : this.currentTimeInSeconds();
		
		if(!dataSrc || !dataSrc[curWeekday]) return defaultValue;
		
		outVal = {}
		
		dayData = dataSrc[curWeekday]
		
		for(entry in dayData){
			entryTime = this.dayTimeInSeconds(entry);
			difference = curTime - entryTime;
			greatestDifference = 0;
			
			if(difference > 0 && difference > greatestDifference){
				val = dayData[entry]
				if(typeof(val) != 'object' || !val.endTime || this.dayTimeInSeconds(val.endTime) > curTime){
					outVal = val;
				} else {
					outVal = defaultValue;
				}
			}
			
		}
		
		return outVal;
	}
	
	this.dayTimeInSeconds = function(timeString){
		return (Date.parse("1/1/2000 " + timeString) - Date.parse("1/1/2000 12:00:00 AM")) / 1000;
	}
	
	this.currentTimeInSeconds = function(){
		var oDate = new Date();
		hours = oDate.getHours();
		minutes = oDate.getMinutes() + (hours * 60);
		seconds = oDate.getSeconds() + (minutes * 60)
		return seconds;
	}
	
	this.weekDayName = function(intDay){
		switch(intDay) {
			case 0:
				return "Sunday"
				break;
			case 1:
				return "Monday"
				break;
			case 2:
				return "Tuesday"
				break;
			case 3:
				return "Wednesday"
				break;
			case 4:
				return "Thursday"
				break;
			case 5:
				return "Friday"
				break;
			case 6:
				return "Saturday"
				break;
		}
	}
}