/*
	Hello there.
*/
	GJF.Class.create("GJF.Controls.MeetupEvents", "GJF.Controls.Control", 
		function(config) {
			var thisContext = this;
			GJF.Controls.Control.call(this, config);
			$(document).ready(function(){
			    thisContext.initialize();
			});
		}, 
		{
			calendar: Object,
			events: {},
			eventsUrl: "http://api.meetup.com/events.json/",
			groupId: "1634554",
			groupUrlName: "ny-nightowls",
			key: "1293c30f657c655c964796c461852",
			
			bindJSEvents: function() {
				var thisContext = this;
				$("body").live("initMeetupEvents", function(e, data) {
					if (thisContext.events[0] != undefined) {
						thisContext.initCalendar();
						thisContext.updatePageHtml();
					}
				});
			},
			
			initCalendar: function() {	
				var thisContext = this;
				this.Calendar = new GJF.Controls.Calendar({
					events: thisContext.events
				});
			},
			
			initialize: function() {
				this.bindJSEvents();
				this.setMeetupEvents();
			},
			
			getAfterDays: function() {
				//If it's before 3AM, there's still an opportunity to stop by :)
				var date = new Date;
				if (date.getHours() < 1) {
					return "-1";
				}
				return "0";
			},
			
			getFormattedEventDate: function(date) {
				var eventDate = new Date(this.getParsedDate(date));
				var formattedDate = this.getFriendlyRemainingDays(date) + " " + this.getFriendlyDayOfWeek(eventDate.getDay()) + ",<br>" + this.getFriendlyMonth(eventDate.getMonth()) + " " + eventDate.getDate() + " " + eventDate.getFullYear();
				return formattedDate;
			},
			
			getFriendlyDayOfWeek: function(dow) {
				var days = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
				return (days[dow]);
			},
			
			getFriendlyMonth: function(month) {
				var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
				return (months[month]);
			},
			
			getFriendlyRemainingDays: function(date) {
				var eventDate = new Date(date);
				var currentDate = new Date();
				var hoursBtwnDates = ((((eventDate.getTime() - currentDate.getTime())/1000)/60)/60);
				var daysBtwnDates = (((eventDate.getTime() - currentDate.getTime())/1000)/60/60/24);
				if (hoursBtwnDates <= 24) {
					if (eventDate.getDate() == currentDate.getDate()) {
						if (eventDate.getHours >= 8) {
							return "Tonight!"
						} else {
							return "Today!"
						}
					} else if (eventDate.getDate() > currentDate.getDate()) {
						return "Tomorrow!"
					} else {
						return "";
					}
				} else if (daysBtwnDates < 7) {
					return "This";
				} else {
					return "";
				}
			},
			
			getParsedDate: function(date) {
				var dateArray = date.split(" ");
				return dateArray[1] + " " + dateArray[2] + " " + dateArray[5];
			},
			
			loadMeetupEvents: function(callback) {
				var thisContext = this;
				$.ajax({
					url: thisContext.eventsUrl + "?key=" + thisContext.key + "&group_urlname=" + thisContext.groupUrlName + "&group_id=" + thisContext.groupId + "&after=" + thisContext.getAfterDays() + "d",
					dataType: "jsonp",
					success: function(data){
						callback(data);
					}
				});
			},
			
			setMeetupEvents: function() {
				var thisContext = this;
				this.loadMeetupEvents(function(data) {
					thisContext.events = data.results;
					$("body").trigger("initMeetupEvents", {})
				});
			},
			
			updateNextDateHtml: function() {
				$("#ScheduleBlockDate").html(this.getFormattedEventDate(this.events[0]['time']));
			},
			
			updatePageHtml: function() {
				this.updateNextDateHtml();
				this.updateRSVPHtml();
			},
			
			updateRSVPHtml: function() {
				var RSVPLeft = this.events[0]['rsvp_limit'] - this.events[0]['rsvpcount'];
				if (RSVPLeft > 0) {
					var pluralization = RSVPLeft == 1 ? "" : "s";
					var scarcityAdverb = RSVPLeft < 10 ? "only " : "";
					var msg = "Absolutely! The next meeting currently has "+ scarcityAdverb + "<span>" + RSVPLeft + "</span> spot" + pluralization + " remaining. Hurry up and <a href='http://www.meetup.com/NY-Nightowls/'>RSVP for the meetup</a> while there's still an open spot. We'll see you there!";
				} else {
					var msg = "Sorry, there are currently 0 spots open for this meeting. <a href='http://www.meetup.com/NY-Nightowls/'>Join our meetup group</a> and you'll be notifed when the next block opens.";
				}
				$("#ScheduleRSVP").html(msg);
			}
		}
	);

