var cachedDate = "";
var eventprefix = "eventdiv";
var cachedMonthYear ="";


$(document).ready(function(){

	
	$("#newsroomfeed").empty().html('<div class="loading"><img src="images/ajax-loader.gif" /><br/>Loading</div>');

	$.getJSON("/proxy.php?proxy_url=http://newsroom.byuh.edu/newsroomlatest",
	        function(data){
		  var stories = "";
	          $.each(data.items, function(i,item){
			stories += "<div class='story'><a href='" + item.link + "'><img width='68' src='" + item.imagepath + "'/>" + item.headline + "</a></div>";
	            	if ( i == 2 ) return false;
	          });
		 $("#newsroomfeed").empty().html(stories);
        });

	
	$("#featuredpagefeed").empty().html('<div class="loading"><img src="images/ajax-loader.gif" /><br/>Loading</div>');
	$.getJSON("/proxy.php?proxy_url=http://uc.byuh.edu/featuredpagefeed",
	        function(data){
		  var stories = "";
		  var arrlen = data.items.length;
		  var rand1 = Math.floor(Math.random()*arrlen);
		  var rand2 = rand1;
		  for (var a = 0; a < 10; a++) { rand2 = Math.floor(Math.random()*arrlen); if (rand2 != rand1) { break; }}	
	  	  stories += "<div class='lower_block_section'><a href='" + data.items[rand1].link + "'><img width='250' src='" + data.items[rand1].imagepath + "'/></a></div>";
	  	  stories += "<div class='lower_block_section'><a href='" + data.items[rand2].link + "'><img width='250' src='" + data.items[rand2].imagepath + "'/></a></div>";
		 $("#featuredpagefeed").empty().html(stories);
        });
	

        $("#calendar").datepicker({
        		dateFormat: 'yy-mm-dd',
                onSelect: function(dateText, inst) {
                    setEventDivIdsFromDate(cachedDate, dateText);
                    loadFiveEvents(dateText);
                    cachedDate = dateText;
                    cachedMonthYear = cachedDate.substr(0,7); 
                    rebindMonthLink();
        		},
        		onChangeMonthYear: function(year, month, inst) { 
        			if (parseInt(month) < 10){ month = "0" + month; }
        			cachedMonthYear = year + "-" + month;
        			rebindMonthLink();
        		}

        
        });
        


    
	var currentDateString = getTodaysDate();
	cachedMonthYear = cachedDate.substr(0,7);
	currentDateString = getIntervalDate(currentDateString, 1);
	setEventDivIds(currentDateString);
	loadFiveEvents(currentDateString);
	cachedDate = currentDateString;

	rebindMonthLink();
	
	$("#scrollbefore").click(
		function() {

			var prefix = "#" + eventprefix;	
			
			var toRemove = prefix + getIntervalDate(cachedDate, 2);
			var toHide = prefix + getIntervalDate(cachedDate, 1);
			var toShow = prefix + getIntervalDate(cachedDate, -2);

			$(toRemove).remove();
			$(toHide).animate({ width: 'hide' });
			$(toShow).animate({ width: 'show' });
			var cachedBefore = getIntervalDate(cachedDate, -3);
			$("#eventsContainer").prepend("<div id='" + eventprefix + cachedBefore + "' class='eventbox'></div>");
			$(prefix + cachedBefore).css("display", "none");
			loadEvents(cachedBefore, prefix + cachedBefore);

			cachedDate = getIntervalDate(cachedDate, -1);

		}
	);

	$("#scrollafter").click(
		function() {

			var prefix = "#" + eventprefix;	
			
			var toRemove = prefix + getIntervalDate(cachedDate, -2);
			var toHide = prefix + getIntervalDate(cachedDate, -1);

			var toShow = prefix + getIntervalDate(cachedDate, 2);

			$(toRemove).remove();
			$(toHide).animate({ width: 'hide' });
			$(toShow).animate({ width: 'show' });
			var cachedAfter = getIntervalDate(cachedDate, 3);
			$("#eventsContainer").append("<div id='" + eventprefix + cachedAfter + "' class='eventbox'></div>");
			$(prefix + cachedAfter).css("display", "none");
			loadEvents(cachedAfter, prefix + cachedAfter);

			cachedDate = getIntervalDate(cachedDate, 1);

		}
	);


	$("#scrollbefore").hover(
		function() {
			$(this).css("background", "url('images/arrowleft_red.jpg') no-repeat");
			$(this).css("background-position", "center right");
			$(this).css("cursor", "pointer");
			$(this).css("cursor", "hand");
		},
		function() {
			$(this).css("background", "url('images/arrowleft.jpg') no-repeat");
			$(this).css("background-position", "center right");
			$(this).css("cursor", "default");
		}
	);

	$("#scrollafter").hover(
		function() {
			$(this).css("background", "url('images/arrowright_red.jpg') no-repeat");
			$(this).css("background-position", "center right");
			$(this).css("cursor", "pointer");
			$(this).css("cursor", "hand");
		},
		function() {
			$(this).css("background", "url('images/arrowright.jpg') no-repeat");
			$(this).css("background-position", "center right");
			$(this).css("cursor", "default");
		}
	);

	$('.eventlink').live("click", function(){
		
		$('#dialog').dialog('open'); 
		$(".ui-widget-overlay").bind("click", closeDialogWindowOnOverlayClick); 
		var eventid = $(this).attr("id");
		eventid = eventid.substring(5);
		
		$("#ui-dialog-title-dialog").empty().html("Event Details");
		$("#dialog_event").hide();
		$("#dialog_loading").empty().html('<div class="loading"><img src="images/ajax-loader.gif" /><br/>Loading</div>');
		$("#dialog_loading").show();
		
		$.getJSON("/proxy.php?proxy_url=http://calendar.byuh.edu/eventdetails/" + eventid,
		        function(data){
			  	
		        $.each(data.events, function(i,event){
		        		$("#ui-dialog-title-dialog").empty().html("Event Details: " + event.title);
		        		$("#dialog_eventtitle").empty().html(event.title);
		        		$("#dialog_eventtime").empty().html(formatEventTime(event.startday, event.starttime, event.endday, event.endtime));
		        		dialogField("#dialog_eventlocation", event.location);
		        		dialogField("#dialog_eventdescription", event.description);
		        		dialogField("#dialog_eventsponsor", event.sponsor);
		        		dialogField("#dialog_eventcontact", event.contact);
		          });
			 $("#dialog_loading").hide();
			 $("#dialog_event").show();
	        });		
		
		return false;
	});	
	
	var dialogbox = $("#dialog").dialog({ bgiframe: true, autoOpen: false,  width: 380, modal: true, resizable: false});
	
	closeDialogWindowOnOverlayClick = function(event){ 
		var closeButton = $(".ui-dialog:visible").find(".ui-dialog-titlebar-close"); 
		closeButton.trigger("click"); 
		$(".ui-widget-overlay").unbind("click", closeDialogWindowOnOverlayClick); 
	}	
	


});

function dialogField(selector, value) {
	if (value) { 
		$(selector).empty().html(value);
		$(selector).show();
		$(selector).prev().show();

	} else {
		$(selector).hide();
		$(selector).prev().hide();
	}	
}

function formatEventTime(startday, starttime, endday, endtime) {
	var formattedtime = startday;
	if (starttime === endtime) {
		if (starttime === "12:00 am") {
			formattedtime += " - All Day";
		}
		else {
			formattedtime += " - " + starttime;
		}		
	}
	else 
	{
		formattedtime = starttime + " to " + endtime;
	}
	return formattedtime;	
}

function showDetails(id) {
	var path = "http://calendar.byuh.edu/eventdetail/" + id;
	openDialog("#dialog", path);
}

function rebindMonthLink() {
    $.ajax({
                success: function()
                {
                    $(".ui-datepicker-title span").wrapAll("<a></a>");
                	var drupalMonthCalendar = "http://calendar.byuh.edu/calendar/" + cachedMonthYear;
                	$(".ui-datepicker-title a").attr("href", drupalMonthCalendar);
                	$(".ui-datepicker-title span:first").css("margin-right", "3px");
                }
            });
}

function setEventDivIds(date) {
	$("#cachedBeforeEvent").attr("id", eventprefix + getIntervalDate(date, -2));
	$("#eventsbefore").attr("id", eventprefix + getIntervalDate(date, -1));
	$("#events").attr("id", eventprefix + date);
	$("#eventsafter").attr("id", eventprefix + getIntervalDate(date, 1));
	$("#cachedAfterEvent").attr("id", eventprefix + getIntervalDate(date, 2));
}

function setEventDivIdsFromDate(olddate, newdate) {
	var selectprefix = "#" + eventprefix;
	$(selectprefix + getIntervalDate(olddate, -2)).attr("id", eventprefix + getIntervalDate(newdate, -2));
	$(selectprefix + getIntervalDate(olddate, -1)).attr("id", eventprefix + getIntervalDate(newdate, -1));
	$(selectprefix + olddate).attr("id", eventprefix + newdate);
	$(selectprefix + getIntervalDate(olddate, 1)).attr("id", eventprefix + getIntervalDate(newdate, 1));
	$(selectprefix + getIntervalDate(olddate, 2)).attr("id", eventprefix + getIntervalDate(newdate, 2));
}

function getTodaysDate() {
	var retDateObject = new Date();
	var numberdate = retDateObject.getDate();
	if (numberdate < 10) numberdate = "0" + numberdate;
	var numbermonth = retDateObject.getMonth() + 1;
	if (numbermonth < 10) numbermonth = "0" + numbermonth;
	var retDate  = retDateObject.getFullYear() + "-" + numbermonth + "-" + numberdate;
	return retDate;

}

// Needs the interval in milliseconds
// Needs thedate as YYYY-MM-DD
function getIntervalDate(theDate, theInterval) {

	var debug = 0;	
	var dateParts = theDate.split("-");
	var year = dateParts[0];
	var month = dateParts[1];
	var day = dateParts[2];

	var dateObject = new Date(year, month-1, day);
	
	dateObject.setDate(dateObject.getDate() + theInterval);
	var numberdate = dateObject.getDate();
	if (numberdate < 10) numberdate = "0" + numberdate;
	var numbermonth = dateObject.getMonth() + 1;
	if (numbermonth < 10) numbermonth = "0" + numbermonth;
	var retDate  = dateObject.getFullYear() + "-" + numbermonth + "-" + numberdate;

	return retDate;
}



// Needs thedate as YYYY-MM-DD
function loadFiveEvents(theDate) {
			var prefix = "#" + eventprefix;
			$(prefix + getIntervalDate(theDate, -2)).css("display", "none");
			$(prefix + getIntervalDate(theDate, 2)).css("display", "none");
			loadEvents(getIntervalDate(theDate, -1), prefix + getIntervalDate(theDate, -1));
			loadEvents(theDate, prefix + theDate);
			loadEvents(getIntervalDate(theDate, 1), prefix + getIntervalDate(theDate, 1));
			loadEvents(getIntervalDate(theDate, 2), prefix + getIntervalDate(theDate, 2));
			loadEvents(getIntervalDate(theDate, -2), prefix + getIntervalDate(theDate, -2));
}

function loadEvents(thedate, divselector) {

                        $(divselector).empty().html('<div class="loading"><img src="images/ajax-loader.gif" /><br/>Loading</div>');
                        var eventpath = "/proxy.php?proxy_url=http://calendar.byuh.edu/eventjson/" + thedate;
                        $.getJSON(eventpath,
                                function(data){
									var events = "<div class='eventstitle'>";
									events += "<div class='eventsdate'><a href='http://calendar.byuh.edu/calendar/" + thedate + "'class='whitelink'>" + data.date + "</a></div>";
									events += "<div class='eventsweekday'><a href='http://calendar.byuh.edu/calendar/" + thedate + "'class='eventlink'>" + data.weekday + "</a></div>";
									events += "</div><ul>";
									var showmore = false;
									if (data.items.length > 0){
										
										$.each(data.items, 
											function(i, item){
												if (i < 3) {
													events += "<li><a href='#' id='event" + item.nid + "' class='eventlink'>" + item.title + "</a></li>";
												}
												else {
													showmore = true;
												}
											}
										);
										
									} else {
										events += "<div style='padding: 4px'>No Events</div>";
									}
									events += "</ul>";
									if (showmore){
										events += "<a href='http://calendar.byuh.edu/calendar/" + thedate + "'class='moreevents more'>More</a>";
									}
									$(divselector).empty().html(events);
                                }
                        );
}
