var isIE = false;
var req;
var functionName = '';
var thisObj;

var liabilityID = '';

function loadXMLDoc(url, fnName, fnObj) {
	functionName = fnName;
	thisObj = fnObj;
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
        req.send(null);
    } else if (window.ActiveXObject) {
        isIE = true;
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
			if (functionName == "getProbBorrowRange") {
				req.open("GET", url, true);
			} else {
				req.open("GET", url, false);
			}
            req.send();
        }
    }
}

function processReqChange() {
    if (req.readyState == 4) {
        if (req.status == 200) { 
			if (functionName == 'showEventDetails') {
				showEventDetails(thisObj);
			} else if (functionName == 'displayMiniCalendarMonth') {
				displayMiniCalendarMonth(document.getElementById(thisObj + "Calendar"),thisObj);
			} else if (functionName == 'displayMiniCalendarMonthEvents') {
				displayMiniCalendarMonthEvents(document.getElementById(thisObj + "Calendar"),thisObj);
			}
			return true;
         } else {
			alert("There was a problem retrieving the XML data:\n" + req.statusText);
			return false;
         }
    }
}

function getXMLNode(local, parentElem, index) {
    var result = parentElem.getElementsByTagName(local)[index];
    if (result) {
        if (result.childNodes.length > 1) {
            return result.childNodes[1].nodeValue;
        } else if (result.childNodes.length == 1) {
            return result.firstChild.nodeValue;    		
        } else {
			return "";
		}
    } else {
		return false;
	}
}

function checkResponse() {
	var message = req.responseXML.getElementsByTagName("response")[0];
	if (message) {
		var response = getXMLNode("message", message, 0);
	}
	return response;
}

function getMiniCalendarMonth(month,year,prefix) {
	if (document.getElementById(prefix + "Calendar")) {
		var calendar = document.getElementById(prefix + "Calendar");
		var url = "http://www.longleafopera.org/intranet/calendarControl.php?mode=getCalendarMonth&month=" + month + "&year=" + year;
		loadXMLDoc(url, 'displayMiniCalendarMonth', prefix);
	}
}

function displayMiniCalendarMonth(calendarObj,prefix) {
	var calendar = req.responseXML.getElementsByTagName("calendar")[0];
	if (calendar) {
		var month			= getXMLNode("month", calendar, 0);
		var year			= getXMLNode("year", calendar, 0);
		var monthName		= getXMLNode("monthName", calendar, 0);
		var numDays			= getXMLNode("numDays", calendar, 0);
		var startDay		= getXMLNode("startDay", calendar, 0);
		var prevMonthDays	= getXMLNode("prevMonthDays", calendar, 0);
		var prevMonth		= getXMLNode("prevMonth", calendar, 0);
		var prevYear		= getXMLNode("prevYear", calendar, 0);
		var nextMonth		= getXMLNode("nextMonth", calendar, 0);
		var nextYear		= getXMLNode("nextYear", calendar, 0);
		var dayNames = new Array(7) 
			dayNames[0]		= "Sunday"; 
			dayNames[1]		= "Monday"; 
			dayNames[2]		= "Tuesday"; 
			dayNames[3]		= "Wednesday"; 
			dayNames[4]		= "Thursday"; 
			dayNames[5]		= "Friday"; 
			dayNames[6]		= "Saturday"; 
		for (var d = 0; d < dayNames.length; d++) {
			if (dayNames[d] == startDay) {
				var prevMonthDaysShown = parseInt(prevMonthDays) - (d - 1);
			}
		}
		var tempDay = prevMonthDaysShown;
		var tempMonth = prevMonth;
		var tempYear = prevYear;
		var tempClass = "previousMonth";
		var writingCurrentMonth = false;
		calendarObj.getElementsByTagName('h6')[0].innerHTML = "<a href='javascript:getMiniCalendarMonth(\"" + prevMonth + "\",\"" + prevYear + "\",\"" + prefix + "\");' title='Previous Month'><img src='/img/calendarBtLeft.gif' alt='Previous Month' /></a> " + monthName + " " + year + " <a href='javascript:getMiniCalendarMonth(\"" + nextMonth + "\",\"" + nextYear + "\",\"" + prefix + "\");' title='Next Month'><img src='/img/calendarBtRight.gif' alt='Next Month' /></a>";
		var tds = calendarObj.getElementsByTagName('td');
		for (var i = 0; i < tds.length; i++) {
			td = tds[i];
			if (tempDay > prevMonthDays && writingCurrentMonth == false) {
				tempDay = 1;
				tempMonth = month;
				tempYear = year;
				tempClass = "";
				writingCurrentMonth = true;
			} else if (tempDay > numDays && writingCurrentMonth == true) {
				tempDay = 1;
				tempMonth = nextMonth;
				tempYear = nextYear;
				tempClass = "nextMonth";
			}
			td.innerHTML = "<a href='#'>" + tempDay + "</a>";
			td.className = tempClass;
			tempDay++
		}
	}
	if (month < 10) {
		month = "0" + month;
	}
	var url = "http://www.longleafopera.org/intranet/calendarControl.php?mode=getMonthEvents&month=" + month + "&year=" + year;
	globalMonth = month;
	globalYear = year;
	loadXMLDoc(url, 'displayMiniCalendarMonthEvents', prefix);

}

var globalMonth = "";
var globalYear = "";

function displayMiniCalendarMonthEvents(calendarObj,prefix) { //alert(calendarObj.innerHTML);
	var events = req.responseXML.getElementsByTagName("event"); // alert(req.responseXML);
	if (events) {//alert(events[0]);
		var eventPopupWrap = document.getElementById('eventPopupWrap');
		eventPopupWrap.innerHTML = "";
		var tds = calendarObj.getElementsByTagName('table')[1].getElementsByTagName('td');
		var tempDay = "";
		for (var i = 0; i < events.length; i++) {
			var event = events[i];
			var id = event.getAttribute("id"); 
			var dayAdjusted = getXMLNode("day", event, 0); //alert(dayAdjusted);
			var day = parseInt(dayAdjusted);
			var name = getXMLNode("name", event, 0);
			var description = getXMLNode("description", event, 0);
			var eventLocation = getXMLNode("location", event, 0);

			if (tempDay != dayAdjusted && tempDay != "") {
				eventPopupWrap.innerHTML += "</div>";
			} 			
			if (tempDay != dayAdjusted) {
				eventPopupWrap.innerHTML += "<div id='event" + dayAdjusted + "' class='eventDay'>";
			} // alert(document.getElementById("event28").parentNode.innerHTML);
			document.getElementById("event" + dayAdjusted + "").innerHTML += "" +
				"		<div class='eventDetail'>" +
				"			<div class='eventName'>" + name + "</div>" +
				"			<div class='eventDescription'>" + description + "</div>" +
				"			<div class='eventLocation'>" + eventLocation + "</div>" +
				"		</div>" +
				"";
			
			for (var j = 0; j < tds.length; j++) {
				if (tds[j].getElementsByTagName('a')[0].innerHTML == day && tds[j].className != "previousMonth" && tds[j].className != "nextMonth") {
					tds[j].getElementsByTagName('a')[0].parentNode.innerHTML = "<a href='calendar.php?mode=dayevents&day=" + globalYear + globalMonth + dayAdjusted + "000000' class='event' onmouseover='showEvent(\"event" + dayAdjusted + "\");' onmouseout='hideEvent(\"event" + dayAdjusted + "\");'>" + day + "</a>";
					break;
				}
			}
			tempDay = dayAdjusted;
		}
		eventPopupWrap.innerHTML += "</div>";		//alert(eventPopupWrap.innerHTML);
	}
}