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

var liabilityID = '';

function loadXMLDoc(url, fnName, fnObj) { // alert(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(getObject(thisObj + "Calendar"), thisObj);
			} else if (functionName == "displayMonth") {
				displayMonth(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 getEventDetails(eventDiv, eventID) {
	var urlPath = location.protocol + "//" + document.domain;
	var previousEventPopup = document.getElementById('eventDetailsWrap');
	if (previousEventPopup) {
		if (previousEventPopup.parentNode != eventDiv) {
			var xmlURL = urlPath + "/intranet/calendarControl.php?mode=getEventInformation&eventID=" + eventID;
			loadXMLDoc(xmlURL, 'showEventDetails', eventDiv);
		}
		previousEventPopup.parentNode.style.position = "static";
		previousEventPopup.parentNode.removeChild(previousEventPopup);
	} else {
		var xmlURL = urlPath + "/intranet/calendarControl.php?mode=getEventInformation&eventID=" + eventID;
		loadXMLDoc(xmlURL, 'showEventDetails', eventDiv);
	}
}

function showEventDetails(eventDiv) { // alert(1);
	var event = req.responseXML.getElementsByTagName("event")[0];
	if (event) {
		var name			= getXMLNode("name", event, 0);
		var eventID			= event.getElementsByTagName("name")[0].getAttribute("id"); 
		var eventLocation	= getXMLNode("location", event, 0).replace(/\n/g, "<br />");
		var description		= getXMLNode("description", event, 0);
		var date			= getXMLNode("date", event, 0);
		var startTime		= getXMLNode("startTime", event, 0);
		var endTime			= getXMLNode("endTime", event, 0);
		
		eventDiv.style.position = 'relative';
		//CREATE DIV
		var detailsDiv = document.createElement('div');
		detailsDiv.id = "eventDetailsWrap";
		if (eventDiv.parentNode.parentNode.offsetLeft > 250) {
			detailsDiv.style.left = "-224px";
		}
		//ADD DATE
		var dateH3 = document.createElement('h3');
		dateH3.appendChild(document.createTextNode(date));
		detailsDiv.appendChild(dateH3);
		//ADD NAME
		var nameH2 = document.createElement('h2');
		nameH2.appendChild(document.createTextNode(name));
		detailsDiv.appendChild(nameH2);
		//ADD LOCATION
		var locationH4 = document.createElement('h4');
		var eventLocation	= eventLocation.replace(/\n/g, "<br />");
		locationH4.innerHTML = eventLocation;
		detailsDiv.appendChild(locationH4);
		//ADD DESCRIPTION
		var descriptionP = document.createElement('p');
		var description	= description.replace(/\n/g, "<br />");
		descriptionP.innerHTML = description;
		detailsDiv.appendChild(descriptionP);
		//ADD TIME
		var timeH3 = document.createElement('h3');
		timeH3.appendChild(document.createTextNode(startTime + " - " + endTime));
		detailsDiv.appendChild(timeH3);
		//DISPLAY CLOSE WINDOW ICON
		var closeA = document.createElement('a');
		closeA.className = "close";
		var closeImg = document.createElement('img');
		closeImg.src = "img/close.gif";
		closeImg.alt = "Close";
		closeA.appendChild(closeImg);	
		detailsDiv.appendChild(closeA);
		closeA.onmouseover=function() { 
			this.getElementsByTagName('img')[0].className = "enlargeIcon";
			this.getElementsByTagName('img')[0].src = "img/closeLarge.gif";
		}
		closeA.onmouseout=function() { 
			this.getElementsByTagName('img')[0].className = "";
			this.getElementsByTagName('img')[0].src = "img/close.gif";
		}
		closeA.onclick=function() { 
			this.parentNode.parentNode.style.position = "static";
			this.parentNode.parentNode.removeChild(this.parentNode);
		}
/*		//DISPLAY EDIT AND DELETE BUTTONS
		var buttons = document.createElement('div');
		buttons.className = "eventButtons";
		var btEdit = document.createElement('a');
		btEdit.className = "Edit Event";
		btEdit.href = "calendarControl.php?mode=edit&ref=" + eventID;
		var btEditImg = document.createElement('img');
		btEditImg.src = "img/btEdit.gif";
		btEditImg.alt = "Edit Event";
		btEdit.appendChild(btEditImg);	
		buttons.appendChild(btEdit);
		var btDelete = document.createElement('a');
		btDelete.className = "Delete Event";
		btDelete.href = "calendarControl.php?mode=delete&ref=" + eventID;
		var btDeleteImg = document.createElement('img');
		btDeleteImg.src = "img/btDelete.gif";
		btDeleteImg.alt = "Delete Event";
		btDelete.appendChild(btDeleteImg);	
		buttons.appendChild(btDelete);
		detailsDiv.appendChild(buttons);*/
		//SHOW DIV
		eventDiv.appendChild(detailsDiv);
//		alert(detailsDiv.innerHTML);
	} else {
		alert("There was a problem retrieving the XML data:\n" + req.statusText);
		return false;
	}
}

function displayMonth(calendarDiv) { 
	var div = document.createElement("div");
	document.getElementsByTagName("body")[0].appendChild(div);
	div.innerHTML = req.responseText;
	var newHTML = div.getElementsByTagName("div")[0].innerHTML;
	div.parentNode.removeChild(div);
	document.getElementById("calendarEvents").innerHTML = newHTML;
}


function getMiniCalendarMonth(month, year, prefix) {
	if (getObject(prefix + "Calendar")) {
		var calendar = getObject(prefix + "Calendar");
		var url = location.protocol + "//" + document.domain + "/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='javascript:setDate(\"" + tempMonth + "\",\"" + tempDay + "\",\"" + tempYear + "\",\"" + prefix + "\");'>" + tempDay + "</a>";
			td.className = tempClass;
			tempDay++
		}
	}
}