var startMonth;
var currentDate,currentMonth,currentYear;			
var oldid;		// The id of the link for the active month when the page is loaded
var xmlHttp;
var xmlHttpCont;
var xml_doc;

var month, year, mnCont, yrCont;
var arrDays = new Array("S","M","T","W","T","F","S");
var arrMonths = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");
var arrMonthsFull = new Array("January","February","March","April","May","June","July","August","September","October","November","December");


var arrDate = new Array();
var arrTo = new Array();
var arrEvent = new Array();
var arrDesc = new Array();
var arrHlight = new Array();
var highlightText = "";


function createTable(){


	var objTbl = document.createElement("TABLE");
	var objTBdy = document.createElement("TBODY");
	
	objTbl.cellSpacing = "0";
	objTbl.cellPadding = "0";
	objTbl.border = "0";
	objTbl.style.width = "210px";

	
	/* Generation of Month Links (Top of the Calendar)*/
	var objTrCurMn = document.createElement("TR");
	var objTdCurMn = document.createElement("TD");
	objTdCurMn.colSpan="12";
	objTdCurMn.height="20";
	objTdCurMn.style.verticalAlign ="top";
	objTdCurMn.innerHTML='<b style="color:#FF9933;">current month - </b>';
	objTrCurMn.appendChild(objTdCurMn);
	//var objTdCurMn = document.createElement("TD");
	//objTdCurMn.style.verticalAlign ="top";
	objTdCurMn.style.textAlign ="right";
	objTdCurMn.innerHTML+='<a href="#" class="calMonthLink" onclick=changeMonth('+(currentMonth)+','+currentYear+')>'+arrMonths[currentMonth-1]+'</a>';
	objTrCurMn.appendChild(objTdCurMn);
	objTBdy.appendChild(objTrCurMn);
	
	
	var objTrMonths = document.createElement("TR");
	var objTdYear = document.createElement("TD");
	objTdYear.innerHTML = '<b style="color:#FF9933;">'+year+'</b>';
	var objTdMonths = document.createElement("TD");
	objTrMonths.appendChild(objTdYear);
	objTdMonths.colSpan="11"
	objTdMonths.style.textAlign = "right";

	var monthLinks = "";

	if(year==currentYear){
		if(month>6)monthLinks += '<a href="#" class="calMonthLink" onclick="changeMonth('+(month-1)+','+year+')">'+arrMonths[month-2]+'</a> | ';
		monthLinks +='<b class="innerSmallYellow">'+arrMonths[month-1]+'</b>';
		if(month>=6 && month<12){
			monthLinks += ' | <a href="#" class="calMonthLink" onclick="changeMonth('+(month+1)+','+year+')">'+arrMonths[month]+'</a>';
			if(month==6)monthLinks += ' | <a href="#" class="calMonthLink" onclick="changeMonth('+(month+2)+','+year+')">'+arrMonths[month+1]+'</a>';
		}
		else if(month==12) monthLinks += ' | <a href="#" class="calMonthLink" onclick="changeMonth(1,'+(year+1)+')">'+arrMonths[0]+'</a>';
	}
	else
	{
		if(month==1)monthLinks += '<a href="#" class="calMonthLink" onclick="changeMonth(12,'+(year-1)+')">'+arrMonths[11]+'</a>';
		else if(month<=5){
			if(month==5)monthLinks += '<a href="#" class="calMonthLink" onclick="changeMonth('+(month-2)+','+year+')">'+arrMonths[month-3]+'</a> | ';
			monthLinks += '<a href="#" class="calMonthLink" onclick="changeMonth('+(month-1)+','+year+')">'+arrMonths[month-2]+'</a>';
		}
		monthLinks += ' | <b class="innerSmallYellow">'+arrMonths[month-1]+'</b>';		
		if(month<5)	monthLinks += ' | <a href="#" class="calMonthLink" onclick="changeMonth('+(month+1)+','+year+')">'+arrMonths[month]+'</a>';			
	}

	objTdMonths.innerHTML = monthLinks;
	objTrMonths.appendChild(objTdMonths);
	objTBdy.appendChild(objTrMonths);
	/* End */

	/* Generating Days of the Calendar */
	var objTrCal = document.createElement("TR");
	var objTdCal = document.createElement("TD");
	objTdCal.colSpan="13";
	var calTbl = document.createElement("TABLE")
	calTbl.cellSpacing = "0";
	calTbl.cellPadding = "0";calTbl.border = "0";
	var calTBdy = document.createElement("TBODY")
	var objTrSpace = document.createElement("TR");
	var objTdSpace = document.createElement("TD");
	objTdSpace.style.height = "8px";         // The vertical gap between the Month Links and the Days
	objTdSpace.appendChild(document.createTextNode(" "));
	objTrSpace.appendChild(objTdSpace);
	calTBdy.appendChild(objTrSpace);
	
	
	var objTrDays = document.createElement("TR");
	for(var i=0; i<7; i++){
		var objTdDays = document.createElement("TD");
		if (i==0)objTdDays.className = "daysSun";
		else objTdDays.className = "days";
		objTdDays.style.width = "25px";
		objTdDays.appendChild(document.createTextNode(arrDays[i]));
		objTrDays.appendChild(objTdDays);
		if(i<6){
			var objTdSpace = document.createElement("TD");
			objTdSpace.style.width = "6px";        // The Horizontal gap between the Days
			objTdSpace.appendChild(document.createTextNode(" "));
			objTrDays.appendChild(objTdSpace);
		}
	}
	calTBdy.appendChild(objTrDays);
	
	/* End */

	/* Generating the Boxes with Normal and Key Dates */
	for(var i=1; i<=6; i++){
		var objTr = document.createElement("TR");
		var sDate;
		for( var j=1; j<=7; j++){
			var objTd = document.createElement("TD");
			sDate = getMonthDate(i,j);
			objTd.appendChild(document.createTextNode(sDate));
			if(isKeyDate(sDate)){
				if (j==1) objTd.className = "keyDateSun";
				else objTd.className = "keyDate";
			}
			else if (j==1) objTd.className = "sunday";
			else objTd.className = "normalDate";
			if(parseInt(sDate)==currentDate && month==currentMonth && year==currentYear)
			{
				//objTd.style.color="#DD7744";
				objTd.style.borderWidth="2px";
				objTd.style.fontWeight="bold";
			}
			objTr.appendChild(objTd);
			if(j<=6){
				var objTdSpace = document.createElement("TD");
				objTdSpace.style.width = "6px";    // The Horizontal gap between the Dates
				objTdSpace.appendChild(document.createTextNode(" "));
				objTr.appendChild(objTdSpace);
			}
		}
		calTBdy.appendChild(objTr);
		objTR = null;
		var objTrSeparator = document.createElement("TR");
		var objTd = document.createElement("TD");
		objTd.style.height = "6px";
		objTd.appendChild(document.createTextNode(" "));
		objTrSeparator.appendChild(objTd);
		calTBdy.appendChild(objTrSeparator);

		calTbl.appendChild(calTBdy);
		objTdCal.appendChild(calTbl);
		objTrCal.appendChild(objTdCal);
		objTBdy.appendChild(objTrCal);
	}
	/* End */

	/* Generating the Key Dates(Events) Details */
	for (var i=0; i<arrDate.length; i++)
	{
		var objtrSep = document.createElement("TR");
		var objtdSep = document.createElement("TD");
		objtdSep.style.height="5px";
		objtrSep.appendChild(objtdSep);
		objTBdy.appendChild(objtrSep);

		var objtr = document.createElement("TR");
		var objtd = document.createElement("TD");
		objtd.colSpan="13";
		objtd.align="left";
		det='<b class="orange">'+arrDate[i];
		if(arrTo[i]!="") det += ' to ' + arrTo[i] + '</b><br>';
		else
		{
			det +='</b><br>';
		}
		det +=arrEvent[i]
		if(arrDesc[i]!=""){
			det += "<br>" + '<span class="description">'+arrDesc[i]+'</span>';
		}
		objtd.innerHTML=det;

		objtr.appendChild(objtd);
		objTBdy.appendChild(objtr);

		if(arrDate[i]!=""){
		var objtrBorder = document.createElement("TR");
		var objtdBorder = document.createElement("TD");
		objtdBorder.colSpan="13";
		objtdBorder.style.height="7px";
		objtdBorder.className="bottomBorderTD";
		objtdBorder.appendChild(document.createTextNode(" "));
		objtrBorder.appendChild(objtdBorder);
		objTBdy.appendChild(objtrBorder);
		}

	}

	if(arrHlight.length!=0)
	{
		
		var objtrSep = document.createElement("TR");
		var objtdSep = document.createElement("TD");
		objtdSep.style.height="5px";
		objtrSep.appendChild(objtdSep);
		objTBdy.appendChild(objtrSep);

		var objtr = document.createElement("TR");
		var objtd = document.createElement("TD");
		objtd.colSpan="13";
		objtd.className = "highlight";
		str = '<b class="orange">Highlight:</b><br>';
		for (var i=0; i<arrHlight.length; i++)
		{
			str +=arrHlight[i];;
			if(i!=arrHlight.length-1) str +="<br><br>";
		}
		objtd.innerHTML = str;
		objtr.appendChild(objtd);
		objTBdy.appendChild(objtr);

		var objtrBorder = document.createElement("TR");
		var objtdBorder = document.createElement("TD");
		objtdBorder.colSpan="13";
		objtdBorder.style.height="7px";
		objtdBorder.className="bottomBorderTD";
		objtdBorder.appendChild(document.createTextNode(" "));
		objtrBorder.appendChild(objtdBorder);
		objTBdy.appendChild(objtrBorder);
	}
	/* End */

	objTbl.appendChild(objTBdy);
	document.getElementById("calendarDiv").innerHTML="";
	document.getElementById("calendarDiv").appendChild(objTbl);
	dtCounter = 0;
	if(calTimer)clearTimeout(calTimer);

}

var dtCounter=0;
function getMonthDate(r,c){
	var dt = new Date(month+"/01/"+year);
	var mBefore = parseInt(dt.getMonth());
	dt.setDate(dtCounter+1);
	var day = dt.getDay();
	var mAfter = parseInt(dt.getMonth());
	if(day>=c && r==1)return " ";
	dtCounter +=1;
	if(mBefore == mAfter){
		return dtCounter;
	}
	else if(mBefore<mAfter){
		return " ";
	}
	else return " ";
}

function isKeyDate(sdt){
	var toDt;
	var keyDt= false;
	for (var i=0; i<arrDate.length; i++)
	{
		if(arrTo[i]!="")
		{
			toDt=parseInt(arrTo[i]);
			//document.getElementById("toDiv").innerHTML+=toDt;
			if(parseInt(sdt)>=parseInt(arrDate[i]) && parseInt(sdt)<=toDt) keyDt=true;
		}
		if(parseInt(arrDate[i])==parseInt(sdt)) keyDt=true;
		
	}
	return keyDt;
}


function createNavMnLinks ()
{
	
	strLinks = currentYear + "&nbsp;}&nbsp;";
	for (var i=startMonth-1; i<12; i++)
	{
		strLinks = strLinks + '<a id="'+arrMonths[i]+''+currentYear+'" href="#" onClick="changeContent('+(i+1)+','+currentYear+',this.id);" class="monthLink">'+arrMonths[i]+'</a>';
		if(i<11) strLinks = strLinks + "&nbsp;-&nbsp;"
	}
	strLinks = strLinks + "<br />" + (currentYear+1) + "&nbsp;}&nbsp;"
	for (var i=0; i<startMonth-1; i++)
	{
		strLinks = strLinks + '<a id="'+arrMonths[i]+''+(currentYear+1)+'" href="#" onClick="changeContent('+(i+1)+','+(currentYear+1)+',this.id);" class="monthLink">'+arrMonths[i]+'</a>';
		if(i<startMonth-2) strLinks = strLinks + "&nbsp;-&nbsp;"
	}
	
	oldid = arrMonths[month-1]+""+year;
	document.getElementById("navMnLinks").innerHTML = strLinks;
	document.getElementById(oldid).className = "monthLinkOn";
}


function init(){
	var today = new Date();
	startMonth = 6
	month = today.getMonth()+1;
	year = today.getFullYear();
	currentDate = today.getDate()
	currentMonth = month;
	currentYear = year;
	if(month<startMonth){
		currentYear = year-1;
	}
	arrid = month+"-"+year;
	createNavMnLinks();
	changeContent(month, year, arrMonths[month-1]+''+year);
	document.getElementById("calendarDiv").innerHTML='<center><br /><br /><img src="images/loading.gif" alt="Loading" /></center>';
	readXML();
}


function changeMonth(mn,yr){
	month = mn;
	year = yr;
	document.getElementById("calendarDiv").innerHTML='<center><br /><br /><img src="images/loading.gif" alt="Loading" /></center>';
	readXML();
}

function toggleClass(id){
	document.getElementById(oldid).className = "monthLink";
	document.getElementById(id).className = "monthLinkOn";
	oldid = id;
}


var contentTimer;
function changeContent (mn, yr, id)
{
	toggleClass(id);
	if(contentTimer) clearTimeout(contentTimer);
	mnCont = mn;
	yrCont = yr;
	xmlHttpCont=GetXmlHttpObject();
	if (xmlHttpCont==null)
	{
		alert ("Browser does not support HTTP Request");
		return;
	} 
	var url="getcontent.asp"
	url=url+"?year="+yr+"&month="+mn;
	document.getElementById("calendarContent").innerHTML = '<center><br /><br /><br /><br /><br /><br /><img src="images/loading.gif" alt="Loading" /></center>';
	xmlHttpCont.onreadystatechange=getContents;
	xmlHttpCont.open("GET",url,true);
	xmlHttpCont.send(null);
}

var contentStr = "";
function getContents ()
{
	if (xmlHttpCont.readyState==4 || xmlHttpCont.readyState=="complete")
	{ 
		root = xmlHttpCont.responseXML.documentElement;
		//document.getElementById("xml").innerHTML=xmlHttpCont.responseText;
		contentStr += '<table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td colspan="2">';
		contentStr += '<table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><div class="orangeUnderline"><nobr>';
		contentStr += yrCont+' - '+arrMonthsFull[mnCont-1]+'</nobr></div></td><td width="100%"></td></tr></table></td></tr>';

			highlightNodes = root.getElementsByTagName("Highlight");
			eventNodes = root.getElementsByTagName("Event");
			announcementNodes = root.getElementsByTagName("Announcement");
			trainingNodes = root.getElementsByTagName("Training");
			reflectionNodes = root.getElementsByTagName("Reflection");
			
			if(highlightNodes.length==0 && eventNodes.length==0)contentStr += ''//'<tr><td class="rightBorderTD" style="border-width:0px;">';
			else if(announcementNodes.length!=0 || trainingNodes.length!=0) contentStr += '<tr><td class="rightBorderTD" id="rb" width="50%">';
			contentStr += '<table cellpadding="0" cellspacing="0" border="0" width="100%">';
			
			if(highlightNodes.length!=0){
				if(announcementNodes.length==0 && trainingNodes.length==0)contentStr += '<tr><td id="highlightTd" class="bottomTD" colspan="2">';
				else contentStr += '<tr><td id="highlightTd" class="bottomTD">';
				contentStr += '<b class="innerSmallYellow">highlights</b>';
				
			//if(highlightNodes.length==0){
				//contentStr += '<br><br><b>Content coming soon!</b><br><br>';
				//document.getElementById("highlightsTd").style.display="none";
			
				for (var i=0; i<highlightNodes.length; i++)
				{
					if(highlightNodes[i].childNodes[1])contentStr += '<br><br><b class="innerSmall">'+highlightNodes[i].childNodes[0].firstChild.nodeValue+':</b>&nbsp;'+highlightNodes[i].childNodes[1].firstChild.nodeValue;
					else if(highlightNodes[i].childNodes[0].firstChild.nodeValue=="break;") contentStr += '<br><br>';
					else if(highlightNodes[i].childNodes[0].nodeName=="Title") contentStr += '<br><br><b class="innerSmall">'+highlightNodes[i].childNodes[0].firstChild.nodeValue+'</b>';
					else contentStr += '<br><br>'+highlightNodes[i].childNodes[0].firstChild.nodeValue;
				}
				contentStr += '</td></tr>';
				
			}
			
			if(eventNodes.length!=0){
				if(highlightNodes.length!=0)contentStr += '<tr><td class="bottomBorderTD" id="bbHigh">&nbsp;</td></tr>';
				contentStr += '<tr><td id="eventsTd" class="bottomTD"><b class="innerSmallYellow">events</b>';
			
				//contentStr += '<br><br><b>Content coming soon!</b><br><br>';
				//document.getElementById("eventsTd").style.display="none";
			
				for (var i=0; i<eventNodes.length; i++)
				{
					if(eventNodes[i].childNodes[1])contentStr += '<br><br><b class="innerSmall">'+eventNodes[i].childNodes[0].firstChild.nodeValue+':</b>&nbsp;'+eventNodes[i].childNodes[1].firstChild.nodeValue;
					else if(eventNodes[i].childNodes[0].firstChild.nodeValue=="break;") contentStr += '<br><br>';
					else if(eventNodes[i].childNodes[0].nodeName=="Title") contentStr += '<br><br><b class="innerSmall">'+eventNodes[i].childNodes[0].firstChild.nodeValue+'</b>';
					else contentStr += '<br><br>'+eventNodes[i].childNodes[0].firstChild.nodeValue;
				}
				contentStr += '</td></tr>';
			}

			contentStr += '</table></td><td valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%">';
			
			if(announcementNodes.length!=0){
				if(highlightNodes.length==0 && eventNodes.length==0){
				contentStr += '<tr><td id="announcementTd" class="bottomTD" colspan="2">';
				}
				else contentStr += '<tr><td id="announcementTd" class="bottomTD1">';
				contentStr += '<b class="innerSmallYellow">announcements</b>';
			
				//contentStr += '<br><br><b>Content coming soon!</b><br><br>';
				//document.getElementById("announcementTd").style.display="none";
			
				for (var i=0; i<announcementNodes.length; i++)
				{
					if(announcementNodes[i].childNodes[1])contentStr += '<br><br><b class="innerSmall">'+announcementNodes[i].childNodes[0].firstChild.nodeValue+':</b>&nbsp;'+announcementNodes[i].childNodes[1].firstChild.nodeValue;
					else if(announcementNodes[i].childNodes[0].firstChild.nodeValue=="break;") contentStr += '<br><br>';
					else if(announcementNodes[i].childNodes[0].nodeName=="Title") contentStr += '<br><br><b class="innerSmall">'+announcementNodes[i].childNodes[0].firstChild.nodeValue+'</b>';
					else contentStr += '<br><br>'+announcementNodes[i].childNodes[0].firstChild.nodeValue;
				}
				contentStr += '</td></tr>';
			}
			
			if(trainingNodes.length!=0){
				if(announcementNodes.length!=0)contentStr += '<tr><td class="bottomBorderTD">&nbsp;</td></tr>';
				if(highlightNodes.length==0 && eventNodes.length==0)
					contentStr += '<tr><td id="trainingTd" class="bottomTD"><b class="innerSmallYellow">training</b>';
				else contentStr += '<tr><td id="trainingTd" class="bottomTD1"><b class="innerSmallYellow">training</b>';
			
				//contentStr += '<br><br><b>Content coming soon!</b><br><br>';
				//document.getElementById("trainingTd").style.display="none";
			
				for (var i=0; i<trainingNodes.length; i++)
				{
					if(trainingNodes[i].childNodes[1])contentStr += '<br><br><b class="innerSmall">'+trainingNodes[i].childNodes[0].firstChild.nodeValue+':</b>&nbsp;'+trainingNodes[i].childNodes[1].firstChild.nodeValue;
					else if(trainingNodes[i].childNodes[0].firstChild.nodeValue=="break;") contentStr += '<br><br>';
					else if(trainingNodes[i].childNodes[0].nodeName=="Title") contentStr += '<br><br><b class="innerSmall">'+trainingNodes[i].childNodes[0].firstChild.nodeValue+'</b>';
					else contentStr += '<br><br>'+trainingNodes[i].childNodes[0].firstChild.nodeValue;
				}
				contentStr += '</td></tr>';
			}
			
			
			contentStr += '</table>';
			contentStr += '</td></tr>';
			/**/
			
			
			if(reflectionNodes.length!=0){
				if(highlightNodes.length!=0 || eventNodes.length!=0 || announcementNodes.length!=0 || trainingNodes.length!=0)contentStr += '<tr><td colspan="2"><img src="images/inner/dashedline.gif" /></td></tr>';
				contentStr += '<tr><td id="trainingTd" class="" colspan="2"><br /><b class="innerSmallYellow">reflections</b>';
					
				for (var i=0; i<reflectionNodes.length; i++)
				{
					if(reflectionNodes[i].childNodes[1])contentStr += '<br><br><b class="innerSmall">'+reflectionNodes[i].childNodes[0].firstChild.nodeValue+':</b>&nbsp;'+reflectionNodes[i].childNodes[1].firstChild.nodeValue;
					else if(reflectionNodes[i].childNodes[0].firstChild.nodeValue=="break;") contentStr += '<br><br>';
					else if(reflectionNodes[i].childNodes[0].nodeName=="Title") contentStr += '<br><br><b class="innerSmall">'+reflectionNodes[i].childNodes[0].firstChild.nodeValue+'</b>';
					else contentStr += '<br><br>'+reflectionNodes[i].childNodes[0].firstChild.nodeValue;
				}
				contentStr += '</td></tr>';
			}

		contentStr += '</table>';
		
		contentTimer = setTimeout('populateContent()',600);
	}
}
function populateContent ()
{

	//if(navigator.appName=="Netscape"){
		if(contentStr.length<1500)document.getElementById("calendarContent").style.height= "450px";
		else document.getElementById("calendarContent").style.height= "";
	//}
	//else if(navigator.appName=="Microsoft Internet Explorer") document.getElementById("calendarContent").style.height="450px"
	document.getElementById("calendarContent").innerHTML = contentStr;
	contentStr="";
	if(contentTimer)clearTimeout(contentTimer);
}

function clearArrays ()
{
	arrDate = null;
	arrTo = null;
	arrEvent = null;
	arrDesc = null;
	arrHlight = null;

	highlightText = "";

	arrDate = Array();
	arrTo = Array();
	arrEvent = Array();
	arrDesc = Array();
	arrHlight = Array();
}

function readXML ()
{
	clearArrays();
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null)
	{
		alert ("Browser does not support HTTP Request");
		return;
	} 
	var url="getevent.asp"
	url=url+"?year="+year+"&month="+month;
	xmlHttp.onreadystatechange=getEvents ;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

var calTimer;
function getEvents ()
{
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{ 

		root = xmlHttp.responseXML.documentElement;

			dates = root.getElementsByTagName("Date");
			for(i=0;i<dates.length;i++){
				dates[i].firstChild?arrDate[i]=dates[i].firstChild.nodeValue:arrDate[i]="";
				root.getElementsByTagName("To")[i].firstChild?arrTo[i]=root.getElementsByTagName("To")[i].firstChild.nodeValue:arrTo[i]="";
				root.getElementsByTagName("Event")[i].firstChild?arrEvent[i]=root.getElementsByTagName("Event")[i].firstChild.nodeValue:arrEvent[i]="";
				root.getElementsByTagName("Description")[i].firstChild?arrDesc[i]=root.getElementsByTagName("Description")[i].firstChild.nodeValue:arrDesc[i]="";
			}
			hlight = root.getElementsByTagName("Highlight");
			for(i=0; i<hlight.length; i++){
				hlight[i].firstChild?arrHlight[i]=hlight[i].firstChild.nodeValue:arrHlight[i]="";
			}

		calTimer = setTimeout("createTable()",600);
	}
}

function GetXmlHttpObject()
{ 
	var objXMLHttp=null;
	if (window.XMLHttpRequest)
	{
		objXMLHttp=new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	return objXMLHttp;
}
