
var leapYear = [31,29,31,30,31,30,31,31,30,31,30,31];
var notleapYear = [31,28,31,30,31,30,31,31,30,31,30,31];
var dotm = new Array();
var dotw = ["Mon", "Tues", "Weds", "Thurs", "Fri", "Sat", "Sun"];
var monthName = ["January", "February", "March","April", "May", "June","July","August","September","October","November","December"];
var end = false;
var calItem = new Array();
var itemcount=0;
var popIn = new Array();
var popInFlag = false;
var cur = new Date();
var mo = cur.getMonth();
var yr = cur.getFullYear();
var MO = mo;
var DAYS = dotm[mo];
var YR = yr;
var F = 0;



function isLeapYear(year)
{
	if(year % 4 == 0) 
	{
		return true;
	}
	else
	{
		return false;
	}
}
if (isLeapYear(yr)) 
{
	dotm=leapYear;
}
else
{
	dotm=notleapYear;
}


/*functions
* MakeEvent::		dependant on: script in calendar.asp that opens the database and reads the events into this constructor for the array of objects Ev
*					depended on by: the array of objects Ev.
*
* getDayName::		dependant on: nothing.
*					depended on by: makeBody() for the local var dayName
*
*
*/
function MakeEvent(eYear,eMon, eDay, eText, eTitle,eDate)
{
	var d, t, x, y, m, a;
	this.y = eYear;//year
	this.m = eMon;//month
	this.a = eDay;//day
	this.d = (Number(this.m)+1) + "/" + this.a +"/"+ this.y;
	this.x = eText;
	this.t = eTitle;
}
function getDayName(year, mon)
{
	var dateFOM = new Date(year,mon,1);
	var DAY = dateFOM.getDay();
	if (DAY == 0)
	{  
		DAY = 6;
	}
	else	
	{
		DAY = DAY - 1;
	}
	return DAY;
}

function initCal(mon, days, year,first)
{
     var cu = new Date();
     var current = cu.getMonth()
     var cyear = cu.getFullYear();
     if (isLeapYear(year))
     {
		dotm = leapYear;
     }
     else
     {
		dotm = notleapYear;
     }
     if (first == 1)
     {
		makeHeader(mon, dotm[mon], year);
		makeBody(mon, dotm[mon], year);
		makeCalendar(mon, dotm[mon], year);
     }
     else
     {
		makeHeader(current,dotm[current],cyear);
		makeBody(current,dotm[current],cyear);
		makeCalendar(current,dotm[current],cyear);
     }
  
}
function reinitCal (mon, days, year)
{
    if (isLeapYear(year))
    {
		dotm = leapYear;
    }
    else
    {
		dotm = notleapYear;
    }
	makeHeader(mon, dotm[mon], year);
	makeBody(mon, dotm[mon], year);
	makeCalendar(mon, dotm[mon], year);
}
function makeHeader(m, d, y)
{
	var month=m;
	var day= d;
	var year= y;
	var nextmon;
	var prevmon;

	var yearNext = year;
	var yearPrev = year;

	nextmon = month +1;
    if (nextmon > 11) 
	{
		nextmon = 0;
		yearNext += 1;
	}
	prevmon = month -1;
	if (prevmon < 0) 
	{
		prevmon = 11;
		yearPrev -= 1;
	}

	var previousdays = dotm[prevmon];
	var nextdays = dotm[nextmon];
	
	
	//build header area of calendar
	document.getElementById("rightarrows").innerHTML = "<button type='button' title='previous month' onClick=\"reinitCal("+prevmon+", "+previousdays+", "+yearPrev+")\">&nbsp;&lt;&lt;&nbsp;</button>"
	document.getElementById("mnth").innerHTML = "<span class='ch'>"+monthName[month] +"</span> ("+ year+")";
	document.getElementById("leftarrows").innerHTML = "<button type='button' title='previous month' onClick=\"reinitCal("+nextmon+", "+nextdays+", "+yearNext+")\">&nbsp;&gt;&gt;&nbsp;</button>"
}
function makeBody(month, day, year)
{
	var calendar="";
	var dayName = getDayName(year, month);
	var currentDay = false;
	var DaysOfTheMonth =1;
	end = false;

	//make days of the week
	calendar = "<div class='cal2'>";
	for (var w = 0; w< 7; w++)
	{
		calendar += "<div class='"+dotw[w]+"'><div class='smallfiller'><span>"+dotw[w]+"</span></div></div>"
	}
	calendar += "</div>";
	//cycle through each week: 1 through 6
	for(var w=1; w<=6; w++)
	{
		calendar += "<div class='cal1'>";
		//innerloop cycles through the days monday to sunday
		for(var d=0; d<7;d++)
		{
			if(!currentDay)//if first of month hasnt been set
			{
				if(d== dayName)	//is this the day? draw it 
				{
					calendar += "<div id='x1' class='"+dotw[d]+"'><div class='filler'><span>"+DaysOfTheMonth+"</span></div></div>";
					currentDay=true;
					DaysOfTheMonth++;
				}
				else
				{
					calendar += "<div class='"+dotw[d]+"'><div class='emptyfill'><span></span></div></div>";	
				}
			}
			else
			{
				if(!(end))
				{
					if(DaysOfTheMonth<=dotm[month])
					{
						calendar += "<div class='"+dotw[d]+"'><div id='x"+DaysOfTheMonth+"' class='filler'><span>"+DaysOfTheMonth+"</span></div></div>";
						DaysOfTheMonth++;
					}
					else if(d > 0)
					{
						calendar += "<div class='"+dotw[d]+"'><div class='emptyfill'><span></span></div></div>";
					}
					else
					{
						end = true;
					}
				}
				else
				{
					calendar += "<div class='endofmonth'></div>";
				}
			}
		}
		calendar+= "</div>"
	}
	document.getElementById("calendar").innerHTML = calendar;
}
function excludeEvent(month, year)
{
	var objEvent = new Object();
	var l=0;
	
	for(var i = 0; i < last;i++)
	{
		if(Ev[i].m == month && Ev[i].y == year)
		{
			objEvent[l] = Ev[i];
			l++;	
		}
	}
	
	itemcount = l;
	
	return objEvent;
}
function makeCalendar(month, day, year)
{
	setupPopIn(month, year);
	for(var i = 0; i < itemcount; i++)
	{
		document.getElementById("x"+calItem[i].a).innerHTML ="<div class='filler'><span><a title='"+calItem[i].t+"' href='javascript:void(0);' onClick='showPopIn("+i+")'>"+calItem[i].a+"</a></span></div>"
	}
}



function setupPopIn(month, year)
{
	calItem=excludeEvent(month, year);
	for (var i = 0; i < itemcount; i++)
	{
		popIn[i] = new makePopIn(calItem[i].t, calItem[i].t, calItem[i].d, calItem[i].x)
	}
}

function setupEventListPopIn()
{
	calItem=Ev;
	for (var i = 0; i < calItem.length; i++)
	{
	
		popIn[i] = new makePopIn(calItem[i].t, calItem[i].t, calItem[i].d, calItem[i].x)
		
	}
	
}


function makePopIn(eTitle,eName,eDate, eInfo)
{
	var t, n, d, i;
  	this.t = eTitle;
   	this.n = "Event: "+eName;
   	this.d = "Date: "+eDate;
   	this.i = eInfo;
}
function chooseClassName() //I discovered that IE and FF handle the term 'class' differently in the setAttribute function. IE only recognizes "className" and FF only recognizes "class". Since "class" is the attribute you use inline I assume it is the more correct term.
{
	var r="";
	if(navigator.appName == "Netscape"){r = "class";}
	else {r = "className";}
	return r;
}
function showPopIn(index)
{

//set up Pop In Window before showing it.

	if(popInFlag == true)	//if its not already up
	{
		closePopIn();
	}

	var targetEl = parent.document.getElementById("popInContent");
	var cname = chooseClassName();

//set up title data
	var titleEl = document.createElement("div");
	titleEl.setAttribute("id", "popInTitle");
 	titleEl.setAttribute(cname, "popInTitleBox");
	var titleElText = document.createTextNode(popIn[index].t);
	titleEl.appendChild(titleElText);
	targetEl.appendChild(titleEl);

//set up event data
	var eventEl = document.createElement("div");
	eventEl.setAttribute("id", "popInEvent");
	eventEl.setAttribute(cname, "popInEventBox");
	var eventElName = document.createElement("div");
	eventElName.setAttribute(cname, "popInEventTextBox");
	var eventElDate = document.createElement("div");
	eventElDate.setAttribute(cname, "popInEventTextBox");
	var eventElText1 = document.createTextNode(popIn[index].n);
	var eventElText2 = document.createTextNode(popIn[index].d);
	eventElName.appendChild(eventElText1);
	eventElDate.appendChild(eventElText2);
	eventEl.appendChild(eventElName);
	eventEl.appendChild(eventElDate);
	targetEl.appendChild(eventEl);

// set up event info data
	var infoEl = document.createElement("div");
	infoEl.setAttribute("id", "popInInfo");
	infoEl.setAttribute(cname, "popInInfoBox");
	
	//var infoElText = document.createTextNode(popIn[index].i);
	//infoEl.appendChild(infoElText);
	targetEl.appendChild(infoEl);
	document.getElementById("popInInfo").innerHTML = popIn[index].i;

// make close tag in Pop In
	var popInBottom = document.createElement("div");
	popInBottom.setAttribute(cname, "popInBottomBox");

	var closeItTag = document.createElement("a");
	var closeItTagText = document.createTextNode("Close This");
	closeItTag.appendChild(closeItTagText);
	closeItTag.setAttribute("href", "javascript:closePopIn();"); //internet explorer doesnt like the onclick attribute so it has to be done this way.
	
	popInBottom.appendChild(closeItTag);
	targetEl.appendChild(popInBottom);
	
	

//show it
	document.getElementById("popInContent").style.display = "block";
	popInFlag = true;

	
}


function setupEventList()
{
	var listOfEvents = "";
	for (var i = Ev.length - 1; i >= 0 ;i--)
	{
	
		if (i%2)
		{
			listOfEvents += "<div class='oddItem'>"+Ev[i].d+ " :: " +Ev[i].t +"<br><span class='itemLink'><a class='itemLink' href='javascript:void(0);' onclick='showPopIn("+i+")'>view info</a></span></div>";
		}
		else 
		{
			listOfEvents += "<div class='evenItem'> "+Ev[i].d+ " :: " +Ev[i].t +"<br><span class='itemLink'><a class='itemLink' href='javascript:void(0);' onclick='showPopIn("+i+")'>view info</a></span></div>";
		}
		
	}
	setupEventListPopIn();
	document.getElementById("elist").innerHTML = listOfEvents;
}

























