// JavaScript Document

function createSmallCal(month, year)
			{
				
				showNextEvent();
				
				// reprogram next and previous button
				
				// switchMon(month, year);
			
			    // reference the small calendar div for eventual modification
			
				cal = document.getElementById('SmallCal');
				
				// if small calendar exists erase it so that it can be replaced with a new one
				// this is for the situation where u want to scroll to a different month
				
				while (cal.hasChildNodes())
				{
					cal.removeChild(cal.lastChild);
				}
				
				// create references for the different elements of the calendar so they can be 
				// regenerated dynamically
			
				var table, thead, tbody, tr, th, td, text, a_tag;
				var this_month = false;
				table = document.createElement('table');
				table.setAttribute("id", "cal_table");
				thead = document.createElement('thead');
				tbody = document.createElement('tbody');
				tr = document.createElement('tr');
				
				// obtain next event from or equals to todays date
				
				var eventtop = document.getElementById("diary");
var calhead = document.getElementById("calheading");
var eventdetail = document.getElementById("eventdetails");

				var nextE = new NextEvent();
				var NED = nextE.getNED();
				var NEC = nextE.getNEC();
				
				var contentText = document.createTextNode(NEC);
				if(NED) 
				{
					var dateText = document.createTextNode(showdatestring(NED));
				}
				else
				{
					var dateText = document.createTextNode("");
				}
				
				// initualize calendar header
				
				var weekdays = ["M", "Tu", "W", "Th", "F", "Sa", "Su"];
				
				var today = new Date();
				var date = new Date();
				var events = new Events();
				
				// create calendar header
				
				for(var i = 0; i < 7; i++)
				{
					th = document.createElement('th');
					th.setAttribute('class', 'weekday');
					th.className = "weekday";
					text = document.createTextNode(weekdays[i]);
					th.appendChild(text);
					tr.appendChild(th);
				}
				
				thead.appendChild(tr);
				table.appendChild(thead);
				
				var a = date.getDate();
				var b = date.getDay();
				
				date.setYear(year);
				
				date.setDate(1);
				
				date.setMonth(month);
				
				// accumulate the target month and year and then display them on the site
				
				var display_month = document.getElementById("selected_month");
				var display_year = document.getElementById("selected_year");
				
				var mon = document.createTextNode(showMonth(month));
				var yr = document.createTextNode(year);
				
				// if target month and year is already displayed replace them with new month and year if 
				// the button next or previous is activated
				
				if(display_month.hasChildNodes())
				{
					display_month.removeChild(display_month.lastChild);
					display_month.appendChild(mon);
				}
				else
				{
					display_month.appendChild(mon);
				}
				
				if(display_year.hasChildNodes())
				{
					display_year.removeChild(display_year.lastChild);
					display_year.appendChild(yr);
				}
				else
				{
					display_year.appendChild(yr);
				}
				
				// create calendar table body
				// calendar table is created dynamically from left to right and then from top to bottom
				
				// start creating table by figuring out what goes on the first top left table cell
				
				switch(date.getDay())
				{
					case 0 :
						date.setDate(-5);
					break;
					case 1 : 
						date.setDate(1);
					break;
					case 2 :
						date.setDate(0);
					break;
					case 3 :
						date.setDate(-1);
					break;
					case 4 :
						date.setDate(-2);
					break;
					case 5 :
						date.setDate(-3);
					break;
					case 6 :
						date.setDate(-4);
					break;
				}
				
				// use this loop to create each row
				
				for(var j = 0; j < 6; j++)
				{
				
					tr = document.createElement('tr');
					
					// use this loop to create each column
					
					for(var i = 0; i < 7; i++)
					{
						var all_events = new getAllEventsIn();
						
						td = document.createElement('td');
						td.setAttribute('class', 'day');
							
						// state if month in calendar, is the target month or not
						
						if(date.getDate() == 1)
						{
							
							if(this_month)
							{
								this_month = false;
							}
							else
							{
								this_month = true;
							}
						}
						
						// if it is the target month then do the following:
						
						if(this_month)
						{
							
							// if target date is equal to todays date
							
							if(date.toLocaleDateString() == today.toLocaleDateString())
							{
								// then set table cell - class="today"
								
								td.className = "today";
								
								// look for events in each table cell
								
								for(var h = 0; h < events.getEventLength(); h++)
								{
									// if there is an event in todays date in the appropriate
									// table cell do the following:
									
									if(events.getEvent(h) == date.toLocaleDateString())
									{
										td.className = "next_event";
										
										td.onmouseover = function() {
											
											this.className = "next_event_hover";
										};
										
										td.onmouseout = function() {
											
											this.className = "next_event";
										};
										
										break;
									
									} 
								}
							}
							else
							{
								// else if targat date isnt equals to todays date then set table cell - class="day"
								
								td.className = "day"; // DAY DAY DAY DAY DAY DAY DAY DAY DAY DAY DAY DAY DAY
								
								// look for events in each table cell
								
								for(var h = 0; h < events.getEventLength(); h++)
								{
									
									// for every event inside a table cell do the following:
									
									// if this is the next event:
									
									if(NED){
										if(NED.toLocaleDateString() == date.toLocaleDateString())
										{
											td.className = "next_event";
										
											td.onmouseover = function() {
												
												this.className = "next_event_hover";
											};
											
											td.onmouseout = function() {
												
												this.className = "next_event";
											};
											
											break;
										} 
									}
									
									if(events.getEvent(h) == date.toLocaleDateString())
									{
										
										// add a border
										
										td.className = "event";
										
										// when event is hovered over change border and background image
										
										var u = document.createTextNode(h);
										
										var eventContent = eventContent;
										
										var hiddenSpan = document.createElement('span');
										hiddenSpan.style.display = "none";
										
										hiddenSpan.appendChild(all_events.eventContentCol(date));
										td.appendChild(hiddenSpan);
										
										var hiddenSpan = document.createElement('span');
										hiddenSpan.style.display = "none";
										
										hiddenSpan.appendChild(u);
										td.appendChild(hiddenSpan);
										
										td.onmouseover = function() {
											
											setmouseout(this, "event");
											
											this.className = "event_hover";
											
												if(document.all)
												{
													var eve = this.getElementsByTagName('span')[1].innerText; // only for ie
												}
												else
												{
													var eve = this.getElementsByTagName('span')[1].textContent; // only for firefox
												}
												
												var disp_date = document.createTextNode(showdatestring(events.getEventDate(eve)));
												var disp_content = this.getElementsByTagName('span')[0].innerHTML;
												
												while (eventdetail.hasChildNodes())
												{
													eventdetail.removeChild(eventdetail.lastChild);
												}
												
												eventdetail.innerHTML = disp_content;
											
												while (calhead.hasChildNodes())
												{
													calhead.removeChild(calhead.lastChild);
												}
												
												calhead.appendChild(disp_date);
										};
										
										break;
									}
								}
							}
						}
						else
						{
							
							// but if it is not the target month then set table cell - class="greyday"
							
							td.className = "greyday";
							
								// look for events in each table cell
								
								for(var h = 0; h < events.getEventLength(); h++)
								{
									
									if(NED)
									{
										if(NED.toLocaleDateString() == date.toLocaleDateString())
										{
											td.className = "next_event";
										
											td.onmouseover = function() {
												
												this.className = "next_event_hover";
											};
											
											td.onmouseout = function() {
												
												this.className = "next_event";
											};
											
											break;
										
										} 
									}
									
									if(events.getEvent(h) == date.toLocaleDateString())
									{
										td.className = "greyevent";
										
										var u = document.createTextNode(h);
										
										var eventContent = eventContent;
										
										var hiddenSpan = document.createElement('span');
										hiddenSpan.style.display = "none";
										
										hiddenSpan.appendChild(all_events.eventContentCol(date));
										td.appendChild(hiddenSpan);
										
										var hiddenSpan = document.createElement('span');
										hiddenSpan.style.display = "none";
										
										hiddenSpan.appendChild(u);
										td.appendChild(hiddenSpan);
										
										td.onmouseover = function() {
											
											setmouseout(this, "greyevent");
											
											this.className = "greyevent_hover";
												
												if(document.all)
												{
													var eve = this.getElementsByTagName('span')[1].innerText; // only for ie
												}
												else
												{
													var eve = this.getElementsByTagName('span')[1].textContent; // only for firefox
												}
												
												var disp_date = document.createTextNode(showdatestring(events.getEventDate(eve)));
												var disp_content = this.getElementsByTagName('span')[0].innerHTML;
												
												while (eventdetail.hasChildNodes())
												{
													eventdetail.removeChild(eventdetail.lastChild);
												}
												
												eventdetail.innerHTML = disp_content;
											
												while (calhead.hasChildNodes())
												{
													calhead.removeChild(calhead.lastChild);
												}
												
												calhead.appendChild(disp_date);
										};
										
										break;
									}
								}
						}
						
						if((b == i) || (a < 32))
						{
							text = document.createTextNode(date.getDate());
						}
						else
						{
							text = document.createTextNode("");
						}
						
						if(all_events.hrefList(date) > 0)
						{
							a_tag = document.createElement("a");
							a_tag.appendChild(text);
							if(document.getElementById("location"))
							{
								if(document.all)
								{
									var location = document.getElementById("location").innerText; // only for ie
								}
								else
								{
									var location = document.getElementById("location").textContent; // only for firefox
								}
								
								a_tag.setAttribute("href", location + "?m=" + date.getMonth() + "&y=" + date.getFullYear());
								a_tag.href = location + "?m=" + date.getMonth() + "&y=" + date.getFullYear();
							}
							
							a_tag.style.cursor = "pointer";
							a_tag.style.cursor = "hand";
							if(all_events.hrefList(date) == 1)
							{
								a_tag.setAttribute("title", all_events.eventContent(date));
								a_tag.title = all_events.eventContent(date);
							}
							else
							{
								a_tag.setAttribute("title", "There are " + all_events.hrefList(date) + " events on this date");
								a_tag.title = "There are " + all_events.hrefList(date) + " events on this day";
							}
							
							td.appendChild(a_tag);
						}
						else
						{
							td.appendChild(text);
						}
						
						tr.appendChild(td);
					
						date.setDate(date.getDate() + 1);
					}
				
					tbody.appendChild(tr);
					table.appendChild(tbody);
				}
				
				cal.appendChild(table);
			}
		
function findAllEventsIn(date, what){
	
	var events = new Events();
	
	var hrefList = 0;
	var eventContent = "";
	var eventContentCol = document.createElement('ul');
	eventContentCol.className = "EventList";
							
	for(var h = 0; h < events.getEventLength(); h++)
	{
		if(events.getEvent(h) == date.toLocaleDateString())
		{
			hrefList = hrefList + 1;
			eventContent = events.getFullContent(h);
			
			var eventContenttext = document.createTextNode(events.getFullContent(h));
			var eventContentline = document.createElement('li');
			
			var a = document.createElement('a');
			a.href = events.get_a_tag(h);
			a.setAttribute("href", events.get_a_tag(h));
			
			a.appendChild(eventContenttext);
			eventContentline.appendChild(a);
			eventContentCol.appendChild(eventContentline);
			
			/* var eventContenttext = document.createTextNode("");
			var eventContentline = document.createElement('li');
			eventContentline.style.border = "0px";
			
			eventContentline.appendChild(eventContenttext);
			eventContentCol.appendChild(eventContentline); */
		}
	}
	
	if(what == "hrefList"){
	 
		return hrefList;
	}
	if(what == "eventContent"){
	 
	 	return eventContent;
	}
	if(what == "eventContentCol"){
	 	
		return eventContentCol;
	}
}		
		
function getAllEventsIn(){
	
	this.hrefList = function(date)
	{
		return findAllEventsIn(date, "hrefList");
	}
	
	this.eventContent = function(date)
	{
		return findAllEventsIn(date, "eventContent");
	}
	
	this.eventContentCol = function(date)
	{
		return findAllEventsIn(date, "eventContentCol");
	}
}

function setmouseout(td, classname)
{
	// obtain next event from or equals to todays date
	
	var color = color;
	var border = border;
	
	var eventtop = document.getElementById("diary");
var calhead = document.getElementById("calheading");
var eventdetail = document.getElementById("eventdetails");
var all_events = new getAllEventsIn();

var today = new Date();

				var nextE = new NextEvent();
				var NED = nextE.getNED();
				var NEC = nextE.getNEC();
				
				if(NED)
				{
					var contentText = document.createTextNode(NEC);
					var dateText = document.createTextNode(showdatestring(NED));
					
					if(NED.toLocaleDateString() == today.toLocaleDateString())
					{
						dateText.nodeValue = "Todays Event(s)";
					}
					else
					{
						dateText.nodeValue = "Next: " + dateText.nodeValue;
					}
				}
				else
				{
					var dateText = document.createTextNode("");
				}
	
	td.onmouseout = function() {
		td.className = classname;
			
		while (eventdetail.hasChildNodes())
		{
			eventdetail.removeChild(eventdetail.lastChild);
		}
		
		//eventdetail.appendChild(contentText);
		
		if(NED) eventdetail.appendChild(all_events.eventContentCol(NED));
												
		while (calhead.hasChildNodes())
		{
			calhead.removeChild(calhead.lastChild);
		}
												
		calhead.appendChild(dateText);
	};	
	
}
