// Calendar Control
      bgClrToday = '#FFFF00';
      bgClrOffMonth = '#E0E0E0';
	  bgClrNormal = '#FFFFCC';
	  
	  /* Establish work variables */
	  var curBegMonth = new Date();
	  var curEndMonth = new Date();
	  var calStart = new Date();
	  var calEnd = new Date();
	  var calHold = new Date();

	  var today = new Date();
	  var hold = new Date();
      var date = new Date()

      var i = 0;
	  var r = 0;
	  var c = 0;
	  var objBox = '';
	  var objDay = '';
	  var calDept = '';
	  
	  //Set one day in ms
	  var oneDay=1000*60*60*24;

	  var weekday = new Array(7)
      weekday[0]="Sunday"
      weekday[1]="Monday"
      weekday[2]="Tuesday"
      weekday[3]="Wednesday"
      weekday[4]="Thursday"
      weekday[5]="Friday"
      weekday[6]="Saturday"
      
	  var monthName = new Array(12)
      monthName[0]="January"
      monthName[1]="February"
      monthName[2]="March"
      monthName[3]="April"
      monthName[4]="May"
      monthName[5]="June"
      monthName[6]="July"
      monthName[7]="August"
      monthName[8]="September"
      monthName[9]="October"
      monthName[10]="November"
      monthName[11]="December"

	  var monthLen = new Array(12)
      monthLen[0]=31
      monthLen[1]=28
      monthLen[2]=31
      monthLen[3]=30
      monthLen[4]=31
      monthLen[5]=30
      monthLen[6]=31
      monthLen[7]=31
      monthLen[8]=30
      monthLen[9]=31
      monthLen[10]=30
      monthLen[11]=31
	  
	  var event = new Array(999)

	  /* Check AJAX availability and configure */
	  var request = false;
	  try { request = new XMLHttpRequest();}
	  catch (trymicrosoft) {
	  	try {request = new ActiveXObject("Msxml2.XMLHTTP");}
		catch (othermicrosoft) {
			try {request = new ActiveXObject("Microsoft.XMLHTTP");}
			catch (failed) {
				request = false;
			}
		}
	  }
	  if (!request) {alert("Error initializing XMLHTTP Request!");}
	  
	  function initCal(t) {
	    initTab(t);
	    dir = '';
		pd = '';
        drawCal(date, dir, pd, t);
	  }
	  function drawCal(date, dir, pd, calDept) {
	    if (dir == 'R') {inc=-1;}
	    if (dir == 'F') {inc=+1;}
	    if (pd == 'M') {date.setMonth(date.getMonth()+inc);}
	    if (pd == 'Y') {date.setFullYear(date.getFullYear()+inc);}
		/* Use date supplied to function */
	  	curMonth = date.getMonth();
	  	curDate = date.getDate();
	  	curDay = date.getDay();
	  	curYear = date.getFullYear();

		/* Find starting dates for calendar */	
		curBegMonth.setFullYear(curYear,curMonth,1);
		curEndMonth.setFullYear(curYear,curMonth+1,1);
		curEndMonth.setDate(curEndMonth.getDate()-1);
		curBegMonthDay = curBegMonth.getDay();
		curEndMonthDay = curEndMonth.getDay();
		calStart.setFullYear(curBegMonth.getFullYear(),curBegMonth.getMonth(),curBegMonth.getDate()-curBegMonthDay);
		calEnd.setFullYear(curEndMonth.getFullYear(),curEndMonth.getMonth(),curEndMonth.getDate()+(6-curEndMonthDay));

	    document.getElementById('m1Year').innerHTML = curYear;
        document.getElementById('m1MonthName').innerHTML = monthName[curMonth];

		calHold.setFullYear(calStart.getFullYear(),calStart.getMonth(),calStart.getDate());
		i = 1;
        while (calHold <= calEnd) {
		    objBox = getCalObjs(i,"objBox");
		    objDay = getCalObjs(i,"objDay");
			/* Format display of each day */
			dayHide('visible',i);
            document.getElementById(objBox).innerHTML = '<div class="m1Head" id="'+objDay+'"><\/div>';
            document.getElementById(objDay).innerHTML = calHold.getDate();
  			if (calHold < curBegMonth || calHold > curEndMonth) {
	            document.getElementById(objBox).style.backgroundColor = bgClrOffMonth;
			}			
  			else if (calHold.getFullYear() == today.getFullYear() 
			  	&& calHold.getMonth() == today.getMonth() 
				&& calHold.getDate() == today.getDate()) {
	            document.getElementById(objBox).style.backgroundColor = bgClrToday;
			}
			else {
	            document.getElementById(objBox).style.backgroundColor = bgClrNormal;
			}			
			/* Finish Loop */
			i = i + 1;
			calHold.setDate(calHold.getDate()+1);
		}
		while (i < 43) {
			dayHide('hidden',i);
			i = i + 1
		}
		if (calDept == "") {dspDept = "all departments";}
		else {dspDept = calDept + " department";}
//		waitMsg("show");   
		getEvents(calStart, calEnd, calDept);
//		waitMsg("hide");   
	  }
	  function waitMsg(toggle) {
	    if (toggle == "show") {
		  document.getElementById("msgWait").style.visibility = "visible";
		  document.getElementById("msgWait").style.zIndex = "99";
		  }
        else {
		  document.getElementById("msgWait").style.visibility = "hidden";
		  document.getElementById("msgWait").style.zIndex = "-1";
		  }
	  }
      function dayHide(visible, i) {
		document.getElementById(getCalObjs(i,"objBox")).style.visibility = visible;
		document.getElementById(getCalObjs(i,"objDay")).style.visibility = visible;
	  }
      function getCalObjs(i, type) {
		boxPrefix = 'm1';
		boxSuffix = '';
		dayPrefix = '';
		daySuffix = 'd';
		r = Math.ceil(i/7);
		c = i-7*(r-1);		
		if (type == 'objBox') {
	      return boxPrefix.concat('r',r,'c',c,boxSuffix);
		  }
        else if (type == 'objDay') {
	      return dayPrefix.concat('r',r,'c',c,daySuffix);
		  }
		else {return null;}
	  }
	  function getEvents(calStart, calEnd, calDept) {
	    // show wait message
		document.getElementById("msgWait").style.visibility = "visible";
	    document.getElementById("msgWait").style.zIndex = "99";
	    // abort prior request
		request.abort();
        // format url to request events within date range and filtered 
		var url = "svcEvents.php?p=" + calDept 
		       + "&dateBegin='" + isoDate(calStart) + "'"
		       + "&dateEnd='" + isoDate(calEnd) + "'"
		       ;
        request.open("GET", url, true);
		request.onreadystatechange = updatePage;
		request.send(null);
	  }
	  function updatePage() {
	    if (request.readyState == 4 && request.status == 200) {
          xmlEventList = request.responseXML.documentElement;
//          document.getElementById("errorMsg").innerHTML = getXMLText(xmlEventList, "errorMsg");
          xmlEvents = xmlEventList.getElementsByTagName("event");
          for (i = 0; i < xmlEvents.length; i++) {
          	eID = xmlEvents[i].getAttribute("id");

  			var eDate = new Date(); 
  			var eDateEnd = new Date(); 
			eName = getXMLText(xmlEvents[i], "name");
			eDesc = getXMLText(xmlEvents[i], "desc");
			eCalDesc = getXMLText(xmlEvents[i], "calDisplay");
			if (eCalDesc != '') {eName = eCalDesc};
//			startDate = getXMLText(xmlEvents[i], "imageName")
			eDateStr = getXMLText(xmlEvents[i], "startDate")
			eDate.setFullYear(eDateStr.substr(0,4),eDateStr.substr(5,2)-1,eDateStr.substr(8,2));
			eDateStrStart = eDateStr;
			eDateStr = getXMLText(xmlEvents[i], "endDate");
			if (!eDateStr) {eDateStr = eDateStrStart; eDateEnd = eDate;}
			else {eDateEnd.setFullYear(eDateStr.substr(0,4),eDateStr.substr(5,2)-1,eDateStr.substr(8,2));}
			eLink = getXMLText(xmlEvents[i], "link");
			if (eLink == "Y") {
				eLink = '<a href="wrcEvent.php?id=' + eID + '" target="_blank">' + eName + '<\/a>';
			}
			else {eLink = eName;}
			do {
//alert(eDate);
			var calDays = Math.ceil(0.05+(eDate.getTime() - calStart.getTime())/oneDay);
			objBox = getCalObjs(calDays, "objBox");
            document.getElementById(objBox).innerHTML = document.getElementById(objBox).innerHTML 
			    + '<div style="background-color: white; padding: 0.5ex; font-size: 9pt; margin-top: 0.5ex; border: 1px solid #333333; border-right-color: #CCCCCC; border-top-color: #CCCCCC;" title="'+eDesc+'">'
// 			    + '<div style="margin: 0; border: none;">'
// image	    + '<div style="width: 15px; text-align: center; float: left;">' + eventDetails[3] + '<\/div>'
// times				+ '<span style="width: 5ex; text-align: right;">' + eventDetails[1].substr(0,5) + '<\/span>'
//				+ '-'
//				+ '<span style="width: 5ex;">' + eventDetails[2].substr(0,5) + '<\/span>'
//				+ '<\/div>'
			    + '<div style="font-size: 9pt; margin: 0; padding: 0; border: none; text-align: center;">'
			    + eLink 
				+ '<\/div>'
//			    + eDesc
				+ '<\/div>';
			eDate.setDate(eDate.getDate()+1);
			} while (eDate <= eDateEnd)
          }
          
//				boxDesc = '<div style="font-size: 9pt; font-style: italic; color: 999999; margin: 0; border: none; width: 100%; overflow: hidden;">'
//							+ eventDetails[8]
//							+ '<\/div>';
		  document.getElementById("msgWait").style.visibility = "hidden";
		  document.getElementById("msgWait").style.zIndex = "-1";
		}  	
//		window.status = "Done";
	  }
	  function isoDate(wkDate) {
	    var mm = (wkDate.getMonth() + 1);
		if (mm <= 9) {mm = "0" + mm;}
	    var dd = (wkDate.getDate());
		if (dd <= 9) {dd = "0" + dd;}
	    var yy = (wkDate.getFullYear());
        return yy+"-"+mm+"-"+dd;
	  }
 function getXMLText(obj, tag) {
   if (obj.getElementsByTagName(tag)[0].hasChildNodes()) 
     {return obj.getElementsByTagName(tag)[0].firstChild.nodeValue;}
   else {return false;}
 }


