var siteUrl = "http://www.971thefan.com";
/* Program Schedule class functions */
		var wrapUtil   = {
			// Find current/next program; alias for getProgram()
			psGetFmNow:function() { return(this.psGetProgram("now","fm")); },
			psGetFmNext:function() { return(this.psGetProgram("next","fm")); },
			psGetAmNow:function() { return(this.psGetProgram("now","am")); },
			psGetAmNext:function() { return(this.psGetProgram("next","am")); },
		
			// Station switcher
			psGetStationSchedule:function(station) {
				var thisSchedule;
				switch (station) {
					case "fm": thisSchedule = this.fmProgramSchedule; break;
					case "am": thisSchedule = this.amProgramSchedule; break;
					default: thisSchedule = this.fmProgramSchedule; break;
				}
				
				return(thisSchedule);				
			},
		
			// Program lookup, generic
			psGetProgram:function(mode, station) {
				var thisSchedule = this.psGetStationSchedule(station);
				
				for (i=0; i < thisSchedule.length; i++) {
					var nodeNext;
					var node      = thisSchedule[i];
					var i_nextPos = (i + 1);
					
					if (i_nextPos < thisSchedule.length) { var nodeNext  = thisSchedule[i_nextPos]; }
					
					var dt_start = new Date(node["date"]);
					var dt_end   = new Date(nodeNext["date"]);

					//if (servertime >= dt_start && servertime < dt_end) {
					if ((servertime >= dt_start && servertime < dt_end) || (dt_start+"_" == dt_end+"_")) {
						switch (mode) {
							case "next":
								return(nodeNext);
								break;
								
							case "now":
							default:
								return(node);
								break;
						} // END switch			
					} // END check time
				}			
			},
			
			// Get today's programs
			psGetToday:function(station) {
				var thisSchedule = this.psGetStationSchedule(station);
				
				var dt_copy     = new Date(serverTime);
				var dt_limit    = dt_copy.add("d", 1);
				var dt_today    = new Date(servertime.format("M/d/y")+" 00:00");
				var dt_tomorrow = new Date(dt_limit.format("M/d/y")+" 00:00");
				var a_today     = new Array;
				
				for (i=0; i < thisSchedule.length; i++) {
					var elementObj = thisSchedule[i];
					var dt_this = new Date(elementObj["date"]);
	
					if (dt_this >= dt_today && dt_this < dt_tomorrow) {
						a_today[a_today.length] = elementObj;
					}
				};
				
				return(a_today);
			},
			
			// Get upcoming+featured programming (today+N)
			psGetUpcoming:function(i_ahead, station) {
				var thisSchedule = this.psGetStationSchedule(station);
				if (!i_ahead) { var i_ahead = 5; }
				
				var dt_limit     = new Date(serverTime);
				dt_limit.add("d", i_ahead);
				var dt_today    = new Date(servertime.format("M/d/y")+" 00:00");
				var dt_tomorrow = new Date(dt_limit.format("M/d/y")+" 00:00");
				var a_upcoming  = new Array;
	
				for (i=0; i < thisSchedule.length; i++) {
					var elementObj = thisSchedule[i];
					var dt_this    = new Date(elementObj["date"]);
	
					if ((dt_this >= dt_today) && (dt_this < dt_tomorrow) && (elementObj["feature"] == "y")) {
						a_upcoming[a_upcoming.length] = elementObj;
					}
				}
				
				return(a_upcoming);
			},
			
	/* HTML updaters/builders */
			// Fanword dropdown
			htmlUpdateFanword:function() {
				wrapUtil.fanword.each(function(node) {
					if (activeByDate(node["start"], node["end"])) {
						var innerTag = document.createTextNode(node["word"]);
						var tag      = document.createElement('option');
						tag.setAttribute("value", node["link"]);
						
						document.getElementById("fanword").appendChild(tag).appendChild(innerTag);
					}
				});
			},
			
			updateOnAir:function() {
				a_fmnow  = this.psGetFmNow();
				a_fmnext = this.psGetFmNext();
				a_amnow  = this.psGetAmNow();
						
				var objFmNow  = $("fmnow");
				var objFmNext = $("fmnext");
				var objAmNow  = $("amnow");
						
				objFmNow.innerHTML       = a_fmnow["text"];
				if (a_fmnow["link"]) { objFmNow.parentNode.href = a_fmnow["link"]; }
				$("fmnowimg").src = siteUrl+"/images_1460thefan/wrap/"+a_fmnow["image"]; // Wrap image
						
				objFmNext.innerHTML       = a_fmnext["text"];
				if (a_fmnext["link"]) { objFmNext.parentNode.href = a_fmnext["link"]; }
				$("fmnexttime").innerHTML = "at "+a_fmnext["time"];
					
				// Display AM programming if currently not simulcast
				if (isNotNull(a_amnow["text"])) {
					objAmNow.innerHTML       = a_amnow["text"];
					objAmNow.parentNode.href = a_amnow["link"];
					$("amonair").style.display = "";
				} else {
					//$("amonair").style.display = "none";
				}				
			},
			
			
			updateHeadlines:function() {
				/*
				homepageUtil.updateHomeWindows(1);
				
				$("headlinea").innerHTML = homepageUtil.windowA["headline"];
				$("headlinea").href      = siteUrl+homepageUtil.windowA["link"]+"?nav=tb1";
				
				$("headlineb").innerHTML = homepageUtil.windowB["headline"];
				$("headlineb").href      = siteUrl+homepageUtil.windowB["link"]+"?nav=tb2";
				
				$("headlinec").innerHTML = homepageUtil.windowC["headline"];
				$("headlinec").href      = siteUrl+homepageUtil.windowC["link"]+"?nav=tb3";
				*/
			},
			
			
			htmlUpcomingList:function(station) {
				var a_list = wrapUtil.psGetUpcoming(6,station);
				document.write("<dl>");
				for (i=0; i < a_list .length; i++) {
					var thisNode  = a_list [i];
					var x_date    = new Date(thisNode ["date"]);
					var s_dayName = x_date.format("EE");
					if (thisNode["link"]) { thisNode["text"] = '<a href="'+thisNode["link"]+'">'+thisNode["text"]+'</a>'; }
					document.write("<dt>"+thisNode ["time"]+" "+s_dayName+"</dt><dd>"+thisNode ["text"]+"</dd>");
				}
				document.write("</dl>");
			},
			
			htmlTodayList:function(station) {
				var a_list = wrapUtil.psGetToday(station);
				document.write("<dl>");
				for (i=0; i < a_list .length; i++) {
					var thisNode  = a_list [i];
					var x_date    = new Date(thisNode ["date"]);
					var s_dayName = x_date.format("EE");
					if (thisNode["link"]) { thisNode["text"] = '<a href="'+thisNode["link"]+'">'+thisNode["text"]+'</a>'; }
					document.write("<dt>"+thisNode ["time"]+",</dt><dd>"+thisNode ["text"]+"</dd>");
				}
				document.write("</dl>");
			}			
			
			
		} // END class




/* HOME PAGE FUNCTIONS
   ---------------------------------------------- */
   var homepageUtil   = {
   
   
		// Updates home window images
		updateHomeWindows:function(disableHtml) {
			if (this.homePlaylist) {
				var a_order = ["a","b","c"];
				var windowA = {"pos":"a","date":"01/01/2000"};
				var windowB = {"pos":"b","date":"01/01/2000"};
				var windowC = {"pos":"c","date":"01/01/2000"};
				var thisWindow;
				
				for (a=0; a < a_order.length; a++) { 
					var windowId = a_order[a];
					
					switch (windowId) {
						case "a": thisWindow = windowA; break;
						case "b": thisWindow = windowB; break;
						case "c": thisWindow = windowC; break;
						default:break;
					}	
				
					for (i=0; i < this.homePlaylist.length; i++) {
						var item = this.homePlaylist[i];
						var dt_pre  = new Date(item["date"]);
						var dt_this = new Date(item["date"]);
						
						
						if (item["pos"] == windowId) {
							if (dt_this <= servertime) {
								switch (windowId) {
									case "a": windowA = item; break;
									case "b": windowB = item; break;
									case "c": windowC = item; break;
									default:break;
								}
							}
						}
					} // END pick loop
					
					switch (windowId) {
						case "a": thisWindow = windowA; this.windowA = windowA; break;
						case "b": thisWindow = windowB; this.windowB = windowB; break;
						case "c": thisWindow = windowC; this.windowC = windowC; break;
						default:break;
					}	
					
					// Update matching window elements
					if (!disableHtml) {
						var windowImage    = "window"+windowId;
						var windowHeadline = "headline"+windowId;
						var windowSummary  = "summary"+windowId;
						
						$(windowImage).src                = siteUrl+"/images_1460thefan/homepage/"+thisWindow["image"];
						$(windowImage).parentNode.href    = thisWindow["link"];
						$(windowHeadline).innerHTML       = thisWindow["headline"];
						$(windowHeadline).parentNode.href = thisWindow["link"];
						$(windowSummary).innerHTML        = thisWindow["summary"];
					}
				}
			} // END object check
		},
		
		// Updates show topics
		
		updateHomeTopics:function() {
			/*
			for (i=0; i < this.showTopics.length; i++) {
				var item     = this.showTopics[i];
				var dt_item  = new Date(item["date"]);
				var timeCopy = new Date(serverTime);
				var dt_now   = new Date(timeCopy.format("M/d/y")+" 00:00")+"_";
				var dt_check = new Date(dt_item.format("M/d/y")+" 00:00")+"_";
			
				if (dt_now == dt_check) {
					$(item["pos"]).innerHTML = item["summary"];
				}
			}
			*/
		},
		
		
		// Updates on now elements
		updateHomeOnNow:function() {
			/* Home page on now*/
			a_fmnow  = wrapUtil.psGetFmNow();
		
			$("nowtext").innerHTML       = a_fmnow["text"];
			if (a_fmnow["link"]) { $("nowtext").parentNode.href = a_fmnow["link"]; }
		
			// Display top image
			$("listen").src = siteUrl+"/images_1460thefan/homepage/"+a_fmnow["image"];
		}
	} // END homepageUtil 


/* NON-CLASS Calls
   ---------------------------------------------- */			
	// Wrap blanket
	function updateWrap() {
		wrapUtil.updateOnAir();				
		wrapUtil.htmlUpdateFanword();
		//wrapUtil.updateHeadlines();
	}
	
	// Home page blanket
	function updateHomepage() {
		homepageUtil.updateHomeWindows();
		//homepageUtil.updateHomeTopics();
		homepageUtil.updateHomeOnNow();
		wrapUtil.htmlUpdateFanword();
	}	