////////////////////////////////////////////////////////////////////////////////
// Home Page Data
////////////////////////////////////////////////////////////////////////////////

// <script language="javascript">
// Copyright (c) Home Automation, Inc. All rights reserved.          
// Copyright (c) HomeRun Software Systems LLC. All rights reserved.

////////////////////////////////////////////////////////////////////////////////
// getEventXML: Obtain Event information locally
////////////////////////////////////////////////////////////////////////////////
function getEventXML
(
	iRequestedEvents
)
{
	var szXML;

	szXML = "<EVENTS>";
	
	// Display the most recent events
	var iNumEvents = g_oHAI.Events.count
	var oEventItem;
	var szDescription = new String();
	var szAlarmType;
	var dtDate;
	var dtTime;
	var szDate;
	var szTime;
	var iEventCountStop = iNumEvents - iRequestedEvents + 1;

	// Only get the last requested number of events
	if (iEventCountStop < 1)
		iEventCountStop = 1;
		
	for (idx = iNumEvents; idx >= iEventCountStop; idx--)	
	{
		oEventItem = g_oHAI.Events.Item(idx);
		iType = oEventItem.Type-0;
			
	  switch (iType)	
	  {
			case eZoneBypass:
				szDescription = HTMLEncode(oEventItem.Zone.Name) + " bypassed by " + oEventItem.Code;
				break;
			case eZoneRestored:
				szDescription = HTMLEncode(oEventItem.Zone.Name) + " restored by " + oEventItem.Code;
				break;
			case eAllAreaZonesRestored:
				if (oEventItem.AllZones-0)
					szDescription = "All Zones in All Areas restored";
				else			
					szDescription = "All Zones restored";
				szDescription = szDescription + " by " + oEventItem.Code;
				break;
			case eZoneTripped:
				szDescription = HTMLEncode(oEventItem.Zone.Name) + " tripped";
				break;
			case eZoneTrouble:
				szDescription = HTMLEncode(oEventItem.Zone.Name) + " trouble";
				break;
			case eRemotePhoneAccess:
				szDescription = "Remote phone access by " + oEventItem.Code;
				break;
			case eRemotePhoneLockout:
				szDescription = "Remote phone lockout";
				break;
			case eZoneAutoBypass:
				szDescription = HTMLEncode(oEventItem.Zone.Name) + " bypassed by system";
				break;
			case eZoneTroubleCleared:
				szDescription = HTMLEncode(oEventItem.Zone.Name) + " trouble cleared";
				break;
			case ePCAccess:
				szDescription = "PC access to system by " + oEventItem.Code;
				break;
			case eAreaAlarmActivated:
			case eAreaAlarmReset:
				switch(oEventItem.AlarmType-0)	
				{
					case atAny:
						szAlarmType = "Alarm";
						break;
					case atBurglary:
						szAlarmType = "Burglary alarm";
						break;
					case atFire:
						szAlarmType = "Fire alarm";
						break;
					case atGas:
						szAlarmType = "Gas alarm";
						break;
					case atAuxiliary:
						szAlarmType = "Auxiliary alarm";
						break;
					case atFreeze:
						szAlarmType = "Freeze alarm";
						break;
					case atWater:
						szAlarmType = "Water alarm";
						break;
					case atDuress:
						szAlarmType = "Duress alarm";
						break;
					case atTemperature:
						szAlarmType = "Temperature alarm";
						break;
					default:
						szAlarmType = "Unknown alarm (#" + oEventItem.AlarmType + ")";
				}
				
				if(iType == eAreaAlarmActivated)
					szDescription = HTMLEncode(oEventItem.Area.Name) + " " + szAlarmType + " activated";
				else
					szDescription = HTMLEncode(oEventItem.Area.Name) + " " + szAlarmType + " reset";
				break;
				
			case eSystemReset:
				szDescription = "System reset";
				break;
			case eMessageLogged:
				if (oEventItem.Message.Name != "")
					szMessageName = HTMLEncode(oEventItem.Message.Name);
				else
					szMessageName = "Unknown Message";
				szDescription = "'" + szMessageName + "' logged";
				break;
			default:
				if (iType >= 48 && iType <= 54)	
				{
					strUser = "<b><i>-Unknown-</b></i>";
					switch (oEventItem.SecurityMode)	
					{
						case areamodeOff:
							strState = "Disarmed";
							break;
						case areamodeDay:
							strState = "Armed Day";
							break;
						case areamodeNight:
							strState = "Armed Night";
							break;
						case areamodeAway:	
							strState = "Armed Away";
							break;
						case areamodeVacation:
							strState = "Armed Vacation";
							break;
						case areamodeDayInstant:
							strState = "Armed Day Instant";
							break;
						case areamodeNightDelayed:
							strState = "Armed Night Delayed";
							break;
						default:
							strState = "Unknown Security Mode: " + oEventItem.SecurityMode;
					}
					strUser = HTMLEncode(oEventItem.Code);
					if (oEventItem.AllAreas-0)
						szDescription = "All Areas " + strState + " by " + strUser;
					else	
					{
						var iAreaCount = g_oHAI.Areas.count;
						strAreaName = HTMLEncode(oEventItem.Area.Name);
						if (strAreaName == "" && iAreaCount > 1)
						{
							strAreaName = "Area #" + oEventItem.Area.Index;
						}
						else if (strAreaName == "" && iAreaCount == 1)
						{
							strAreaName = "Security";
						}
						if (strAreaName == "(Unknown)")
							szDescription = strState + " by " + strUser;
						else
							szDescription = strAreaName + " " + strState + " by " + strUser;
					}
				}
				else
					szDescription = "Unknown event";
		}		
		if (oEventItem.Time != "(Unknown)")	
		{
			dtDate = new Date(oEventItem.Time);
			szDate = formatDateTime(dtDate,3);
			szTime = formatDateTime(dtDate,2);
		}
		else	
		{
			szDate = "Unknown";
			szTime = "Unknown";
		}
				
		szXML += "<EVENT><DESCRIPTION>" + szDescription + "</DESCRIPTION>";
		szXML += "<DATE>" + szDate + "</DATE>";
		szXML += "<TIME>" + szTime + "</TIME>";
		szXML += "<TYPE>" + iType + "</TYPE>";
		szXML += "</EVENT>\n";
		dtDate = null;
		dtTime = null;
	}
	szXML += "</EVENTS>";

	return (szXML);
}
