//------------------------------------
//
//	YORKFESTIVALS.JS
//	Author: 	Christian Thomas (Bluestone Design)
//	Requires:	jquery 1.x
//	
//------------------------------------

////////////////////////////
// BEGIN JQUERY

$(function(){
	
	$('#calendar td a').live('click', function(e) {
		
		e.preventDefault();
		
		$this = $(this);
		
		$content = $('.home_content .col3 .simply-scroll-clip #scroller1');
		
		$content.fadeOut(function(){
			
			$.ajax({
				type: 'POST',
				url: '/ajax/events.php',
				data: {
					date: $this.data('date')
				},
				success: function(data) {
					
					$content.html(data).hide().fadeIn();
					
				},
				error: function(data) {
					
					console.log(data);
					
				}
			});
			
		})
		
	});
		
	
});

function markActive()
{
	$.ajax({
		type: 'POST',
		url: '/ajax/events.php',
		data: {
			type: 'return_dates'
		},
		dataType: 'json',
		success: function(data) {
	
			$('#calendar tr td a.date').each(function(){

				for(var i = 0; i < data.length; i++) {

					if(data[i] == $(this).data('date')) $(this).addClass('active');
		
				}
			});

		},
		error: function(data) {

			console.log(data);

		}
	});
}


/* Preload images script */

var myimages=new Array()



function preloadimages(){

	for (i=0;i<preloadimages.arguments.length;i++){

		myimages[i]=new Image();

		myimages[i].src=preloadimages.arguments[i];

	}

}


var thisDate = 1;							// Tracks current date being written in calendar

var wordMonth = new Array("January","February","March","April","May","June","July","August","September","October","November","December");

var today = new Date();							// Date object to store the current date

var todaysDay = today.getDay() + 1;					// Stores the current day number 1-7

var todaysDate = today.getDate();					// Stores the current numeric date within the month

var todaysMonth = today.getUTCMonth() + 1;				// Stores the current month 1-12

var todaysYear = today.getFullYear();					// Stores the current year

var monthNum = todaysMonth;						// Tracks the current month being displayed

var yearNum = todaysYear;						// Tracks the current year being displayed

var firstDate = new Date(String(monthNum)+"/1/"+String(yearNum));	// Object Storing the first day of the current month

var firstDay = firstDate.getUTCDay();					// Tracks the day number 1-7 of the first day of the current month

var lastDate = new Date(String(monthNum+1)+"/0/"+String(yearNum));	// Tracks the last date of the current month

var numbDays = 0;

var calendarString = "";

var eastermonth = 0;

var easterday = 0;



function daysInMonth(iMonth, iYear)
{
	return 32 - new Date(iYear, iMonth, 32).getDate();
}

function changedate(buttonpressed) {

	if (buttonpressed == "prevyr") yearNum--;

	else if (buttonpressed == "nextyr") yearNum++;

	else if (buttonpressed == "prevmo") monthNum--;

	else if (buttonpressed == "nextmo") monthNum++;

	else  if (buttonpressed == "return") { 

		monthNum = todaysMonth;

		yearNum = todaysYear;

	}



	if (monthNum == 0) {

		monthNum = 12;

		yearNum--;

	}

	else if (monthNum == 13) {

		monthNum = 1;

		yearNum++

	}



	lastDate = new Date(String(monthNum+1)+"/0/"+String(yearNum));

	numbDays = lastDate.getDate();

	firstDate = new Date(String(monthNum)+"/1/"+String(yearNum));

	firstDay = firstDate.getDay() + 1;

	createCalendar();

	return;

}





function easter(year) {



	var a = year % 19;

	var b = Math.floor(year/100);

	var c = year % 100;

	var d = Math.floor(b/4);

	var e = b % 4;

	var f = Math.floor((b+8) / 25);

	var g = Math.floor((b-f+1) / 3);

	var h = (19*a + b - d - g + 15) % 30;

	var i = Math.floor(c/4);

	var j = c % 4;

	var k = (32 + 2*e + 2*i - h - j) % 7;

	var m = Math.floor((a + 11*h + 22*k) / 451);

	var month = Math.floor((h + k - 7*m + 114) / 31);

	var day = ((h + k - 7*m +114) % 31) + 1;

	eastermonth = month;

	easterday = day;

}





function createCalendar() {

	calendarString = '';

	var daycounter = 0;

	calendarString += '<table width="230" border="0" cellpadding="0" cellspacing="0" bgcolor="#000">';

	calendarString += '<tr>';

	calendarString += '<td align=\"center\" valign=\"center\" height=\"40\"><a href=\"javascript:;\" onClick=\"changedate(\'prevyr\');return false;\"><<<\/a><\/td>';

	calendarString += '<td align=\"center\" valign=\"center\" height=\"40\"><a href=\"javascript:;\" onClick=\"changedate(\'prevmo\');return false;\"><<\/a><\/td>';

	calendarString += '<td bgcolor=\"#000\" align=\"center\" valign=\"center\" colspan=\"3\"><b>' + wordMonth[monthNum-1] + '&nbsp;&nbsp;' + yearNum + '<\/b><\/td>';

	calendarString += '<td align=\"center\" valign=\"center\"height=\"40\" ><a href=\"javascript:;\" onClick=\"changedate(\'nextmo\');return false;\">><\/a><\/td>';

	calendarString += '<td align=\"center\" valign=\"center\" height=\"40\"><a href=\"javascript:;\" onClick=\"changedate(\'nextyr\');return false;\">>><\/a><\/td>';

	calendarString += '<\/tr>';

	calendarString += '<tr>';

	calendarString += '<td bgcolor=\"#000\" align=\"center\" valign=\"center\" >Sun<\/td>';

	calendarString += '<td bgcolor=\"#000\" align=\"center\" valign=\"center\" >Mon<\/td>';

	calendarString += '<td bgcolor=\"#000\" align=\"center\" valign=\"center\" >Tue<\/td>';

	calendarString += '<td bgcolor=\"#000\" align=\"center\" valign=\"center\" >Wed<\/td>';

	calendarString += '<td bgcolor=\"#000\" align=\"center\" valign=\"center\" >Thu<\/td>';

	calendarString += '<td bgcolor=\"#000\" align=\"center\" valign=\"center\" >Fri<\/td>';

	calendarString += '<td bgcolor=\"#000\" align=\"center\" valign=\"center\" >Sat<\/td>';

	calendarString += '<\/tr>';



	thisDate == 1;



	for (var i = 1; i <= 6; i++) {

		calendarString += '<tr>';

		for (var x = 1; x <= 7; x++) {

			daycounter = (thisDate - firstDay)+1;

			thisDate++;

			if ((daycounter > numbDays) || (daycounter < 1) || daycounter > daysInMonth(monthNum-1, yearNum)) {

				calendarString += '<td align=\"center\" bgcolor=\"#000\" border=\"1\">&nbsp;<\/td>';

			} else {

				if (checkevents(daycounter,monthNum,yearNum,i,x) || ((todaysDay == x) && (todaysDate == daycounter) && (todaysMonth == monthNum))){

					if ((todaysDay == x) && (todaysDate == daycounter) && (todaysMonth == monthNum)) {

						calendarString += '<td align=\"center\" bgcolor=\"#FFF\" border=\"1\" height=\"18\"><a href="#" class="date" data-date="'+daycounter+'-'+monthNum+'-'+yearNum+'">' + daycounter + '<\/a><\/td>';

					}

					else	calendarString += '<td align=\"center\" bgcolor=\"#FFF\" border=\"1\" height=\"18\"><a href="#" class="date" data-date="'+daycounter+'-'+monthNum+'-'+yearNum+'">' + daycounter + '<\/a><\/td>';

				} else {

					calendarString += '<td align=\"center\" bgcolor=\"#000\" >' + daycounter + '<\/td>';

				}

			}

		}

		calendarString += '<\/tr>';

	}



	calendarString += '<tr><td colspan=\"7\" nowrap align=\"center\" valign=\"center\" bgcolor=\"#000\" width=\"200\" height=\"40\"><\/td><\/tr><\/table>';



	var object=document.getElementById('calendar');

	object.innerHTML= calendarString;

	thisDate = 1;


	markActive();

}





function checkevents(day,month,year,week,dayofweek) {

	var numevents = 0;

	var floater = 0;



	for (var i = 0; i < events.length; i++) {

		if (events[i][0] == "W") {

			if ((events[i][2] == dayofweek)) numevents++;

		}

		else if (events[i][0] == "Y") {

			if ((events[i][2] == day) && (events[i][1] == month)) numevents++;

		}

		else if (events[i][0] == "F") {

			if ((events[i][1] == 3) && (events[i][2] == 0) && (events[i][3] == 0) ) {

				easter(year);

				if (easterday == day && eastermonth == month) numevents++;

			} else {

				floater = floatingholiday(year,events[i][1],events[i][2],events[i][3]);

				if ((month == 5) && (events[i][1] == 5) && (events[i][2] == 4) && (events[i][3] == 2)) {

					if ((floater + 7 <= 31) && (day == floater + 7)) {

						numevents++;

					} else if ((floater + 7 > 31) && (day == floater)) numevents++;

				} else if ((events[i][1] == month) && (floater == day)) numevents++;

			}

		}

		else if ((events[i][2] == day) && (events[i][1] == month) && (events[i][3] == year)) {

			numevents++;

		}

	}



	if (numevents == 0) {

		return false;

	} else {

		return true;

	}

}





function showevents(day,month,year,week,dayofweek) {

	var theevent = "";

	var floater = 0;



	for (var i = 0; i < events.length; i++) {

		// First we'll process recurring events (if any):

		if (events[i][0] != "") {

			if (events[i][0] == "D") {

			}

			if (events[i][0] == "W") {

				if ((events[i][2] == dayofweek)) {

					theevent += "Events of: \n" + month +'/'+ day +'/'+ year + '\n';

					theevent += events[i][6] + '\n';

					theevent += 'Start Time: ' + events[i][4] + '\n';

					theevent += 'Ending Time: ' + events[i][5] + '\n';

					theevent += 'Description: ' + events[i][7] + '\n';

					theevent += '\n -------------- \n\n';

					document.forms.eventform.eventlist.value = theevent;

				}

			}

			if (events[i][0] == "M") {

			}

			if (events[i][0] == "Y") {

				if ((events[i][2] == day) && (events[i][1] == month)) {

					theevent += "Events of: \n" + month +'/'+ day +'/'+ year + '\n';

					theevent += events[i][6] + '\n';

					theevent += 'Start Time: ' + events[i][4] + '\n';

					theevent += 'Ending Time: ' + events[i][5] + '\n';

					theevent += 'Description: ' + events[i][7] + '\n';

					theevent += '\n -------------- \n\n';

					document.forms.eventform.eventlist.value = theevent;

				}

			}

			if (events[i][0] == "F") {

				if ((events[i][1] == 3) && (events[i][2] == 0) && (events[i][3] == 0) ) {

					if (easterday == day && eastermonth == month) {

						theevent += "Events of: \n" + month +'/'+ day +'/'+ year + '\n';

						theevent += events[i][6] + '\n';

						theevent += 'Start Time: ' + events[i][4] + '\n';

						theevent += 'Ending Time: ' + events[i][5] + '\n';

						theevent += 'Description: ' + events[i][7] + '\n';

						theevent += '\n -------------- \n\n';

						document.forms.eventform.eventlist.value = theevent;

					} 

				} else {

					floater = floatingholiday(year,events[i][1],events[i][2],events[i][3]);



					if ((month == 5) && (events[i][1] == 5) && (events[i][2] == 4) && (events[i][3] == 2)) {

						if ((floater + 7 <= 31) && (day == floater + 7)) {

							theevent += "Events of: \n" + month +'/'+ day +'/'+ year + '\n';

							theevent += events[i][6] + '\n';

							theevent += 'Start Time: ' + events[i][4] + '\n';

							theevent += 'Ending Time: ' + events[i][5] + '\n';

							theevent += 'Description: ' + events[i][7] + '\n';

							theevent += '\n -------------- \n\n';

							document.forms.eventform.eventlist.value = theevent;

						} else if ((floater + 7 > 31) && (day == floater)) {

							theevent += "Events of: \n" + month +'/'+ day +'/'+ year + '\n';

							theevent += events[i][6] + '\n';

							theevent += 'Start Time: ' + events[i][4] + '\n';

							theevent += 'Ending Time: ' + events[i][5] + '\n';

							theevent += 'Description: ' + events[i][7] + '\n';

							theevent += '\n -------------- \n\n';

							document.forms.eventform.eventlist.value = theevent;

						}

					} else if ((events[i][1] == month) && (floater == day)) {

						theevent += "Events of: \n" + month +'/'+ day +'/'+ year + '\n';

						theevent += events[i][6] + '\n';

						theevent += 'Start Time: ' + events[i][4] + '\n';

						theevent += 'Ending Time: ' + events[i][5] + '\n';

						theevent += 'Description: ' + events[i][7] + '\n';

						theevent += '\n -------------- \n\n';

						document.forms.eventform.eventlist.value = theevent;

					}

				}

			}

		}

		// Now we'll process any One Time events happening on the matching month, day, year:

		else if ((events[i][2] == day) && (events[i][1] == month) && (events[i][3] == year)) {

			theevent += "Events of: \n" + month +'/'+ day +'/'+ year + '\n';

			theevent += events[i][6] + '\n';

			theevent += 'Start Time: ' + events[i][4] + '\n';

			theevent += 'Ending Time: ' + events[i][5] + '\n';

			theevent += 'Description: ' + events[i][7] + '\n';

			theevent += '\n -------------- \n\n';

			document.forms.eventform.eventlist.value = theevent;

		}

	}

	if (theevent == "") document.forms.eventform.eventlist.value = 'No events to show.';

}





function floatingholiday(targetyr,targetmo,cardinaloccurrence,targetday) {



	var firstdate = new Date(String(targetmo)+"/1/"+String(targetyr));	// Object Storing the first day of the current month.

	var firstday = firstdate.getUTCDay();	// The first day (0-6) of the target month.

	var dayofmonth = 0;	// zero out our calendar day variable.



	targetday = targetday - 1;



	if (targetday >= firstday) {

		cardinaloccurrence--;	// Subtract 1 from cardinal day.

		dayofmonth = (cardinaloccurrence * 7) + ((targetday - firstday)+1);

	} else {

		dayofmonth = (cardinaloccurrence * 7) + ((targetday - firstday)+1);

	}

	return dayofmonth;

}
