var daysOfWeek = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];

function getQueryValue(key) {
  key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
  var qs = regex.exec(window.location.href);
  return (qs == null ? null : qs[1]);
}

var calendarViewDate = new Date();
calendarViewDate.setHours(0, 0, 0, 0);
if (getQueryValue("viewdate")) {
	var viewdate = getQueryValue("viewdate").split("_");
	calendarViewDate.setFullYear(viewdate[2], viewdate[0] - 1, viewdate[1]);
}

function initCal(calFile) {
	$("div.calendarCont").empty();

	$.ajax({
		type: "GET",
		url: calFile,
		dataType: "xml",
		success: function(data){
			var showAllAtOnce = $(data).find("month").attr("showAllAtOnce")=="true";
			var startdate = $(data).find("month").attr("startdate");
			var enddate = $(data).find("month").attr("enddate");
			var start = new Date(parseInt(startdate.substring(0,4), 10), parseInt(startdate.substring(4,6), 10)-1, parseInt(startdate.substring(6,8), 10));
			var end = new Date(parseInt(enddate.substring(0,4), 10), parseInt(enddate.substring(4,6), 10)-1, parseInt(enddate.substring(6,8), 10));
			var dayOfWeekStart = start.getDay();
			var dayOfWeekEnd = end.getDay();
			var daysInMonth = end.getDate();
			var today = new Date();
			today.setHours(0,0,0,0);
			var tomorrow = new Date();
			tomorrow.setTime(today.getTime() + 1000*3600*24);
			var monthAbbr = $(data).find("month").attr("name").substring(0, 3);

			if (calendarViewDate < start || calendarViewDate > end || (calendarViewDate > tomorrow && !showAllAtOnce)) {
				calendarViewDate = (start < today && today <= end ? today : start);
			}
                    
            var dHTML = '<div class="current"><div class="inner">';
            dHTML += '<span class="day">' + daysOfWeek[calendarViewDate.getDay()] + '</span> <span class="month">' + monthAbbr + '</span> <span class="date">' + calendarViewDate.getDate() + '</span></div>';
            dHTML += '<div class="fullMonth"><a href="' + $(data).find("month").attr("urlViewAll") + '">View Full Month</a></div>';
            dHTML += '</div>';
            $("div.calendarCont").append(dHTML);
			
			var currentDay = $(data).find("day").eq(calendarViewDate.getDate() - 1);
			var image = $(currentDay).find("img[width='300']").eq(0) || $(currentDay).find("img").eq(0);
			var iHTML = '<div class="imgcont"><img src="' + $(image).attr("url") + '" alt="' + $(image).attr("alt") + '" width="' + $(image).attr("width") + '" height="' + $(image).attr("height") + '" /><div class="credit">' + $(image).find("credit").text() + '</div></div>';
			$("div.calendarCont").append(iHTML);
			
			var tHTML = '<div class="txtcont">';
			tHTML += '<div id="pagTop" class="clear">';
			if ($(currentDay).prev("day").length) {
				tHTML += '<div id="topPrev"><a href="?viewdate=' + (calendarViewDate.getMonth()+1) + '_' + (calendarViewDate.getDate()-1) + '_' + calendarViewDate.getFullYear() + '" title="previous">' + monthAbbr + ' ' + (calendarViewDate.getDate()-1) + '</a></div>';
			}
			else if ($(data).find("month[prevMonthUrl^='http']").length) {
				tHTML += '<div id="topPrev"><a href="' + $(data).find("month").attr("prevMonthUrl") + '?viewdate=' + (calendarViewDate.getMonth()+1) + '_0_' + calendarViewDate.getFullYear() + '">Previous Month</a></div>';
			}
			if ((calendarViewDate < tomorrow || showAllAtOnce) && $(currentDay).next("day").length) {
				tHTML += '<div id="topNext"><a href="?viewdate=' + (calendarViewDate.getMonth()+1) + '_' + (calendarViewDate.getDate()+1) + '_' + calendarViewDate.getFullYear() + '" title="next">' + monthAbbr + ' ' + (calendarViewDate.getDate()+1) + '</a></div>';
			}
			else if ((end < tomorrow || showAllAtOnce) && $(data).find("month[nextMonthUrl^='http']").length) {
				tHTML += '<div id="topNext"><a href="' + $(data).find("month").attr("nextMonthUrl") + '?viewdate=' + (calendarViewDate.getMonth()+2) + '_1_' + calendarViewDate.getFullYear() + '">Next Month</a></div>';
			}
			else {
				tHTML += '<div id="topNext"><a href="' + $(data).find("month").attr("urlViewAll") + '">View All</a></div>';
			}
			tHTML += '</div>';
			tHTML += '<h2>' + $(currentDay).find("title").text() + '</h2>';
			tHTML += '<p>' + $(currentDay).find("deck").text() + '</p>';
			$(currentDay).find("links").each(function(){
				$(this).find("link").each(function(){
					tHTML += "<h3><a href='" + $(this).attr("url") + "'>" + $(this).parent().find("headline").text() + " <b>" + $(this).text() + "</b></a></h3>";
				});
			});
			tHTML += "</div>";
			$("div.calendarCont").append(tHTML);
  				
		}
	});
}



function initViewAllCal(calFile) {
	$("div.calendarCont").empty();
	
	$.ajax({
		type: "GET",
		url: calFile,
		dataType: "xml",
		success: function(data){
			var showAllAtOnce = $(data).find("month").attr("showAllAtOnce")=="true";
			var startdate = $(data).find("month").attr("startdate");
			var enddate = $(data).find("month").attr("enddate");
			var start = new Date(parseInt(startdate.substring(0,4), 10), parseInt(startdate.substring(4,6), 10)-1, parseInt(startdate.substring(6,8), 10));
			var end = new Date(parseInt(enddate.substring(0,4), 10), parseInt(enddate.substring(4,6), 10)-1, parseInt(enddate.substring(6,8), 10));
			var dayOfWeekStart = start.getDay();
			var dayOfWeekEnd = end.getDay();
			var daysInMonth = end.getDate();
			var today = new Date();
			today.setHours(0,0,0,0);
			var tomorrow = new Date();
			tomorrow.setTime(today.getTime() + 1000*3600*24);
			
			/* ===== build belt ===== */
			var $beltHTML = $("<div class='sbelt clr'></div>");
			
			// before calendar month starts
			for (var i = 0; i < dayOfWeekStart; i++) {
				$beltHTML.append("<li class='notInMonth'><b>&nbsp;</b><span><img src='http://img4.myrecipes.com/static/i/s.gif' width='75' height='75' alt='' /></span></li>");
			}
			// calendar month 
			var date_temp = new Date(start.getTime());
			for (var i = 1; i <= daysInMonth; i++) {
				date_temp.setDate(i);
				if (showAllAtOnce || date_temp <= tomorrow) {
					$beltHTML.append("<li><b>" + (i<10?"0":"") + i + "</b><a href='" + $(data).find("month").attr("url") + "?viewdate=" + (date_temp.getMonth()+1) + "_" + i + "_" + date_temp.getFullYear() + "'><img src='" + $(data).find("day").eq(i-1).find("img").attr("url") + "' width='75' height='75' alt='' /><br />" + $(data).find("day").eq(i-1).find("title").text() + "</a></li>");
				}
				else if (date_temp.getTime() == tomorrow.getTime() + 1000*3600*24) {
					$beltHTML.append("<li><b>" + (i<10?"0":"") + i + "</b><span><img src='http://img4.myrecipes.com/static/i/s.gif' width='75' height='75' alt='' /><br />Coming tomorrow</span></li>");
				}
				else {
					$beltHTML.append("<li><b>" + (i<10?"0":"") + i + "</b><span><img src='http://img4.myrecipes.com/static/i/s.gif' width='75' height='75' alt='' /></span></li>");
				}
				if ($beltHTML.children("li").length == 7) {
					$beltHTML.children("li").wrapAll("<ul></ul>");
				}
			}
			// after calendar month ends
			for (var i = 1; i + dayOfWeekEnd < 7; i++) {
				$beltHTML.append("<li class='notInMonth'><b>&nbsp;</b><span><img src='http://img4.myrecipes.com/static/i/s.gif' width='75' height='75' alt='' /></span></li>");
			}
			$beltHTML.children("li").wrapAll("<ul></ul>");
			
			$("div.calendarCont").append("<div class='days'><span>Sunday</span> <span>Monday</span> <span>Tuesday</span> <span>Wednesday</span> <span>Thursday</span> <span>Friday</span> <span>Saturday</span></div>")
				.append($beltHTML);
			/* ===== end build belt ===== */
		}
	});
}
