var JQ = jQuery.noConflict();

var cDate = new Date();
var today = cDate.getDate();
var tomonth = cDate.getMonth() + 1;
var toyear = cDate.getFullYear();
cDate.setDate(1);
var cMonth = cDate.getMonth() + 1;
var cYear = cDate.getFullYear();
var currentCell;
var cDays	= getDays(cMonth, cYear);	// Store the number of days in this month
var cDay	= cDate.getDay();			// Store the day of the week the months starts on
var cellContent;
var i;
var eventsArray;
var calendarEmpty = true;
var eventHover = false;
var changeHover = false;
var tagsHover = false;
var openTag = "";
var openDay = "";
var locked = false;

JQ(document).ready( function () {
	JQ(".details").hover(
		function(){
			eventHover = true;
		},
		function() {
			eventHover = false;
		}
	);
	JQ("#change-menu, #change-location").hover(
		function () {
			changeHover = true;
		},
		function () {
			changeHover = false;
		}
	);
	JQ("#tags-menu-link, #tags-menu").hover(
		function () {
			tagsHover = true;
		},
		function () {
			tagsHover = false;
		}
	);
	JQ("*").click(function(){
		if (!eventHover) closeDetails(openTag, openDay);
		if (!changeHover) JQ("#change-menu").fadeOut();
		if (!tagsHover) JQ("#tags-menu").fadeOut();
	});
});

function toInt (x) {
	if (x.substring(0, 1) == 0) return parseInt(x.substring(1));
	else return parseInt(x);
}

function setToday() {
	if (!locked) {
		cDate = new Date();
		cDate.setDate(1);
		cMonth = cDate.getMonth() + 1;
		cYear = cDate.getFullYear();
		fillCalendar();
		JQ("#today").css("background-image", "url(/sportswear/global/images/events/today-button-inactive.jpg)");
		JQ("#today").attr("href", "javascript: void(0);");
		JQ("#today").css("cursor", "default");
	}
}

function nextMonth() {
	if (!locked) {
		JQ(".details").hide();
		cMonth++;
		if (cMonth > 12) {
			cMonth = 1;
			cYear++;
		}
		cDate.setMonth(cMonth - 1);
		cDate.setYear(cYear);
		fillCalendar();
		setTodayButton();
	}
}

function prevMonth() {
	if (!locked) {
		JQ(".details").hide();
		cMonth--;
		if (cMonth < 1) {
			cMonth = 12;
			cYear--;
		}
		cDate.setMonth(cMonth - 1);
		cDate.setYear(cYear);
		fillCalendar();
		setTodayButton();
	}
}

function setTodayButton() {
	var date = new Date();
	var tomonth = date.getMonth();
	var themonth = cDate.getMonth();
	if (tomonth == themonth) {
		JQ("#today").css("background-image", "url(/sportswear/global/images/events/today-button-inactive.jpg)");
		JQ("#today").attr("href", "javascript: void(0);");
		JQ("#today").css("cursor", "default");
	} else {
		JQ("#today").css("background-image", "url(/sportswear/global/images/events/today-button.jpg)");
		JQ("#today").attr("href", "javascript: setToday();");
		JQ("#today").css("cursor", "pointer");
	}
}

function fillCalendar () {
	cDays	= getDays(cMonth, cYear);
	cDay		= cDate.getDay();
	
	if (cMonth == 1)	var cPrevStart = getDays(12, cYear - 1) - cDay + 1;
	else				var cPrevStart = getDays(cMonth - 1, cYear) - cDay + 1;
	
	JQ("#calendar-heading div").text(getMonthName(cMonth) + ' ' + cYear);
	
	/* Clear out the calendar container */
	JQ("#calendar-dates").empty();
	
	/* Start by filling the previous month */
	for (i = cPrevStart; i < cPrevStart + cDay; i++) {
		JQ("#calendar-dates").append("<div class=\"calendar-cell off-month\"><div class=\"number\">" + i + "</div></div>");
	}
	
	/* Fill out the current month */
	for (i = 1; i <= cDays; i++) {
		currentCell = i;
		cellContent =	"<div class=\"calendar-cell\" id=\"cur" + i + "\">";
		cellContent +=	"<div class=\"number\">" + i + "</div>";
		cellContent +=	"<ul class=\"event-list\"></ul>";
		cellContent +=	"</div>";
		
		JQ("#calendar-dates").append(cellContent);
	}
	
	/* Fill out the next month */
	for (i = 1; i <= 7 - ((cDay + cDays) % 7) && (cDay + cDays) % 7 != 0; i++) {
		JQ("#calendar-dates").append("<div class=\"calendar-cell off-month\"><div class=\"number\">" + i + "</div></div>");
	}
	
	JQ(".details-inside div").remove();	// Remove any details currently listed
	
	getEvents("productdrops");
	
	if (cMonth == tomonth && cYear == toyear) JQ("#cur" + today).prepend("<div class=\"today\"></div>");
}

/* START FUNCTIONS */


function getEvents(tag) {
	/* Fill in events for this month */
	
	var feedURL = "/sportswear/global/jsp/clearspaceServiceProxy.jsp?url=" +
		// The url for the feed you want to pull in
		nsw_data.blog_base_url + "/blogs/sportswear-" + getRegionCode() + "/feeds/authors/TheMontalban" +
		"&eventDateRangeMinMillis=" + Date.parse(cMonth + '/1/' + cYear) +
		"&eventDateRangeMaxMillis=" + Date.parse((cMonth + 1) + '/1/' + cYear);
	
	locked = true;
	JQ("#calendar-loader").show();
	JQ.ajax({
		type:		"GET",
		url:		feedURL,
		dataType:	"xml",
		success:	function(xml) {
			var i = 0;
			var odd = true;
			eventsArray = new Array();
			JQ(xml).find("item").each(function() {
				eventsArray[i] = {
					title:	JQ(this).find("title").text(),
					date:	JQ(this).find("clearspace\\:eventDate").text(),
					image:	JQ(this).find("media\\:content").find("media\\:thumbnail").attr("url"),
					guid:	nsw_data.view_post_link(JQ(this).find("guid").text())
				};
				if (eventsArray[i].date == "" || eventsArray[i].date == null)	eventsArray[i].date =	JQ(this).find("eventDate").text();
				if (eventsArray[i].image == "" || eventsArray[i].image == null)	eventsArray[i].image =	JQ(this).find("content").find("thumbnail").attr("url");
				
				if (JQ("#" +tag +"-details" + toInt(eventsArray[i].date.substring(5, 7)) + " .details-inside div").length % 2 == 0) odd = true;
				else odd = false;
				
				if (odd) JQ("#" + tag + "-details" + toInt(eventsArray[i].date.substring(5, 7)) + " .details-inside").append('<div class="odd"><a href="' + eventsArray[i].guid + '">' + eventsArray[i].title + '</a></div>');
				else JQ("#" + tag + "-details" + toInt(eventsArray[i].date.substring(5, 7)) + " .details-inside").append('<div><a href="' + eventsArray[i].guid + '">' + eventsArray[i].title + '</a></div>');
				JQ("#" + tag + "-details" + toInt(eventsArray[i].date.substring(5, 7)) + " .details-inside h1 .date").text(dateToNumbers(eventsArray[i].date.substring(5, 16)));
				
				if (eventsArray[i].image) {
					JQ("#cur" + toInt(eventsArray[i].date.substring(5, 7)) + " .number").before('<img src="' + eventsArray[i].image + '" class="' + tag + '-image" alt="" title="" />');
					JQ("#cur" + toInt(eventsArray[i].date.substring(5, 7)) + " .number").before('<img src="' + eventsArray[i].image + '" class="' + tag + '-image" alt="" title="" />');
				}
				
				i++;
			});
		},
		complete:	function() {
			var eventsCount;
			var ttl;
			for (var i = 1; i <= cDays; i++) {
				eventCount = JQ("#" + tag + "-details" + i + " .details-inside div").length;
				
				if (eventCount == 1) {
					ttl = JQ("#" + tag + "-details" + i + " .details-inside div").text();
					JQ("#cur" + i + " .event-list").append("<li class=\"" + tag + "\"><a href=\"javascript: showDetails(" + i + ", '" + tag + "');\">" + ((ttl.length > 15) ? (ttl.substring(0, 15) + "...") : ttl) + "</a></li>");
				} else if (eventCount > 1) {
					JQ("#cur" + i + " .event-list").append("<li class=\"" + tag + "\"><a href=\"javascript: showDetails(" + i + ", '" + tag + "');\" style=\"text-transform: capitalize;\">" + eventCount + " " + tag + " >></a></li>");
				}
			}
//			if (tag == "productdrops") getEvents("events");
//			if (tag == "events") getEvents("stories");
//			if (tag == "stories") getEvents("news");
//			if (tag == "news") {
				locked = false;
				JQ("#calendar-loader").hide();
//			}
			
			JQ(".news, .events, .productdrops, .stories, .details, .news-image, .events-image, .productdrops-image, .stories-image").hide();
			switch (JQ("#tags-menu-link").attr("rel")) {
				case "Events":
					JQ(".events, .events-image").show();
					break;
				case "News":
					JQ(".news, .news-image").show();
					break;
				case "Product Drops":
				case "Products":
					JQ(".productdrops, .productdrops-image").show();
					break;
				case "Stories":
					JQ(".stories, .stories-image").show();
					break;
				default:
					JQ(".news, .events, .productdrops, .stories, .news-image, .events-image, .productdrops-image, .stories-image").show();
					break;
			}

			
		},
		error:	function() {
		}
	});
}

function getDays (month, year) {
	var returnValue = 0;
	switch (month) {
		case 2:
			isLeapYear(year) ? returnValue = 29 : returnValue = 28;
			break;
		case 4:
		case 6:
		case 9:
		case 11:
			returnValue = 30;
			break;
		default:
			returnValue = 31;
			break;
	}
	return returnValue;
}

function isLeapYear (x) {
	if (x % 4 != 0 || (x % 400 != 0 && x % 100 == 0)) return false;
	else return true;
}

function showDetails (x, y) {
	if (JQ("#" + y + "-details"+x).css("display") == "none") {
		var limit	= 868;
		var offset	= JQ("#cur"+x+" ."+y).offset();
		var left	= offset.left - JQ(".content").offset().left;
		var top		= offset.top - JQ(".content").offset().top - 9;
		JQ(".details").fadeOut("normal");
		if (left + 370 > limit) JQ("#" + y + "-details"+x).css("left", left - 249 + "px");
		else JQ("#" + y + "-details"+x).css("left", left + 123 + "px");
		JQ("#" + y + "-details"+x).css("top", top + "px");
		JQ("#" + y + "-details"+x).fadeIn("normal");
		openTag = y;
		openDay = x;
	}
}

function closeDetails (tag, x) {
	JQ("#" + tag + "-details"+x).fadeOut("normal");
}
