











































































//Copyright (c) 2000-2003 Microsoft Corporation. All rights reserved.
//<script>

var objHiddenAllDay				= null;
var objHiddenResponseRequest	= null;
var g_iDTStartIndex				= -1;
var g_oStartDate				= -1;
var g_oEndDate					= -1;
var g_oOldStartDate;
var objHiddenImportance			= null;
var objReminderOffset			= null;


function MakeDate(fStart)
{
	var oYr, oMo, oDy, oHr, szVal, iHrs, iMin, oDate, oldDate;
	var oForm = document.MainForm;
	if(true == fStart)
	{
		oYr=oForm.dtstart_Year;
		oMo=oForm.dtstart_Month;
		oDy=oForm.dtstart_Day;
		oHr=oForm.dtstart_Time;
		if(-1 == g_oStartDate)
		{
			g_oOldStartDate	= -1;
		}
		else
		{
			g_oOldStartDate = new Date(g_oStartDate);
		}
		if(-1 == g_oStartDate)
		{
			g_oStartDate = new Date();
		}
		oDate = g_oStartDate;
	}
	else
	{
		oYr = oForm.dtend_Year;
		oMo = oForm.dtend_Month;
		oDy = oForm.dtend_Day;
		oHr = oForm.dtend_Time;
		if(-1 == g_oEndDate)
		{
			g_oEndDate = new Date();
		}
		oDate = g_oEndDate;
	}
	szVal = oHr.options[oHr.selectedIndex].value;
	iHrs = szVal.substring(0, 2);
	iMin = szVal.substring(3, 5);
	oDate.setFullYear(oYr.options[oYr.selectedIndex].value, oMo.selectedIndex, oDy.options[oDy.selectedIndex].value);
	oDate.setHours(iHrs, iMin, 0);
}

function DisplayDate(oDate, fStart)
{
	var oYr, oMo, oDy, oHr, szVal, iHrs, iMin, i;
	var oForm = document.MainForm;
	if(true == fStart)
	{
		oYr=oForm.dtstart_Year;
		oMo=oForm.dtstart_Month;
		oDy=oForm.dtstart_Day;
		oHr=oForm.dtstart_Time;
	}
	else
	{
		oYr=oForm.dtend_Year;
		oMo=oForm.dtend_Month;
		oDy=oForm.dtend_Day;
		oHr=oForm.dtend_Time;
	}
	oHr.selectedIndex = oDate.getHours() * 2;
	if(0 != oDate.getMinutes())
	{
		oHr.selectedIndex += 1;
	}
	if (oHr.length > 48)
	{
		var szHours = ((oDate.getHours() < 10) ? "0" : "")+oDate.getHours();
		var szMinutes = ((oDate.getMinutes() < 10) ? "0" : "")+oDate.getMinutes();
		if (oHr.options[oHr.selectedIndex + 1].value == (szHours+":"+szMinutes))
		{
			oHr.selectedIndex +=1;
		}
	}
	oDy.selectedIndex = oDate.getDate()-1;
	oMo.selectedIndex = oDate.getMonth();
	for(i = 0; i < oYr.options.length;i++)
	{
		if(null != oYr.options[i] && oDate.getFullYear() == oYr.options[i].value)
		{
			oYr.selectedIndex = i;
			break;
		}
	}

}

function MakeDates()
{
	MakeDate(true);
	MakeDate(false);

	if(-1 != g_oOldStartDate)

	{
			var iTimeDiff = g_oStartDate.getTime() - g_oOldStartDate.getTime();
			g_oEndDate.setTime(g_oEndDate.getTime() + iTimeDiff);
	}
	if(g_oEndDate < g_oStartDate)
	{
		g_oEndDate = new Date(g_oStartDate);
		g_oEndDate.setMinutes(g_oEndDate.getMinutes() + 30);
	}
	DisplayDate(g_oEndDate, false);
}

function FindElementIndices()
{
	var i = 0;
	var composeForm = document.MainForm;
	for(i = 0;composeForm[i] != null; i++)
	{
		if(composeForm[i].name == "urn:schemas:calendar:dtstart")
		{
			g_iDTStartIndex = i;
		}
		if(composeForm[i].name == "urn:schemas:calendar:alldayevent")
		{
			objHiddenAllDay	= composeForm[i];
		}
		if(composeForm[i].name == "urn:schemas:calendar:responserequested")
		{
			objHiddenResponseRequest = composeForm[i];
		}
		if(composeForm[i].name == "urn:schemas:httpmail:importance")
		{
			objHiddenImportance = composeForm[i];
		}
		if(composeForm[i].name == "urn:schemas:calendar:reminderoffset")
		{
			objReminderOffset	=	composeForm[i];
		}
	}
}

function FormModified()
{
	document.MainForm.DATACHANGED.value = "1";
}

function DeleteAppt()
{
	var fIsMeeting;

	// If there is no URL then we can't delete
	if (document.MainForm.MsgID.value=="")
	{
		NavigateTo (g_szURL + g_szLAFolderURL + "/?Cmd=contents&View=" + g_szLAView + "&Page=" + g_szLAPage + g_szLADate);
		return;
	}

	if (g_szConfirm == "CONFIRMED" )
	{
		fIsMeeting = true;
	}
	else
	{
		fIsMeeting = false;
	}

	// If this is a meeting, we need to send an update
	if (fIsMeeting)
	{
		if (confirm (g_szSendUpdate))
		{
			// If we are in the default calendar folder, get meeting cancellation form.
			//
			if (g_fIsDefaultCal)
			{
				NavigateTo (g_szURL + "?cmd=getcancel");
				return;
			}
			else
				document.MainForm.SENDUPDATE.value="1";
		}
	}

	SetCmd(cmdDelete);
}

function SetResponseRequested()
{
	if(objHiddenResponseRequest == null)
	{
		return(false);
	}
	if(document.MainForm.responserequested.checked == true)
	{
		objHiddenResponseRequest.value = 1
	}
	else
	{
		objHiddenResponseRequest.value = 0
	}
	return (true);
}

function InitCheckBox()
{
	if (typeof g_fIsDelegate == "undefined" || g_fIsDelegate == false)
		InitCheckBox_Importance();

	if (typeof g_fIsApptMaster == "undefined" || g_fIsApptMaster == false)
		InitCheckBox_Alldayevent();

	if (typeof g_fIsPublicFolder == "undefined" || g_fIsPublicFolder == false)
		InitCheckBox_ResponseRequested();
}

function InitCheckBox_Importance()
{
	if (objHiddenImportance.value == "")
	{
		document.MainForm.Importance.selectedIndex = 1;
		objHiddenImportance.value = 1;
	}
	else
	{
		document.MainForm.Importance.selectedIndex = parseInt(objHiddenImportance.value,10);
	}
}

function InitCheckBox_ResponseRequested()
{
	var oRespReq = document.MainForm.responserequested;
	if(objHiddenResponseRequest.value == 1)
	{
		oRespReq.checked = true;
	}
	// x5:137241: always default RR to true in case it's not set
	//
	else
	{
		oRespReq.checked = true;
		objHiddenResponseRequest.value = 1;
	}
}

function InitCheckBox_Alldayevent()
{
	if(objHiddenAllDay.value == 1)
	{
		if(null != document.MainForm.alldayevent)
		{
			document.MainForm.alldayevent.checked = true;
		}
		if(null != document.MainForm.dtstart_Time)
		{
			document.MainForm.dtstart_Time.disabled = true;
		}
		if(null != document.MainForm.dtend_Time)
		{
			document.MainForm.dtend_Time.disabled = true;
		}
	}
}

function ApptFormOnLoad()
{
	if(g_iDTStartIndex == -1 || objHiddenAllDay == null
		|| objHiddenResponseRequest == null || objHiddenImportance == null
		|| objReminderOffset == null)
	{
		FindElementIndices();
	}

	if (typeof g_fIsApptMaster == "undefined" || g_fIsApptMaster == false)
	{
		ApptTimes_OnChange();
	}

	if (typeof g_fIsApptRecurrence == "undefined" || g_fIsApptRecurrence == false)
	{
		InitCheckBox();
	}

	if (typeof g_fIsPublicFolder == "undefined" || g_fIsPublicFolder == false)
	{
		if (objReminderOffset != null)
		{
			var szSelectedOffset = g_szDefaultReminder;
			if (document.location.search.toLowerCase().indexOf("cmd=new") == -1 )
			{
				// figure out if the appointment has a reminder set
				if(objReminderOffset.value != "")
				{
					document.MainForm.remindercheckbox.checked = true;
					szSelectedOffset = objReminderOffset.value;
				}
				else
				{
					objReminderOffset.value = "4294967295"; // ULONG_MAX (0xffffffff)
				}
			}
			else
			{
				// by default, on a new appointment form:
				// if EnableReminders contain the value 0x4 for the user, then the reminder checkbox should be checked
				// otherwise it is unchecked
				if (CONST_B_CALENDAR == (g_bmpEnableReminders & CONST_B_CALENDAR))
				{
					document.MainForm.remindercheckbox.checked = true;
					objReminderOffset.value = g_szDefaultReminder;
				}
				else
				{
					objReminderOffset.value = "4294967295"; // ULONG_MAX (0xffffffff)
				}
			}
			document.MainForm.reminderoffset.selectedIndex = CalculateIndex(szSelectedOffset);
			document.MainForm.reminderoffset.disabled = !document.MainForm.remindercheckbox.checked;
		}
	 }
	// Bug 122443. IE4 on MAC doesn't fire the on change
	// until the user leaves the input field

	if (g_fIsMac == true)
		FormModified();
}

function ReminderOffset_OnChange()
{
	if (objReminderOffset == null)
	{
		FindElementIndices();
	}
	if (document.MainForm.remindercheckbox.checked)
	{
		objReminderOffset.value = aOffsets[document.MainForm.reminderoffset.selectedIndex];
	}
	else
	{
		objReminderOffset.value = "4294967295"; // ULONG_MAX (0xffffffff)
	}
	document.MainForm.reminderoffset.disabled = !document.MainForm.remindercheckbox.checked;
	FormModified();
}

function OnImportanceChange()
{
	objHiddenImportance.value = document.MainForm.Importance.selectedIndex;
	FormModified();
}


function IsLeapYear(yr)
{
	return (((yr % 4 == 0) && (yr % 100 != 0)) || (yr % 400 == 0))?1:0;
}

function daysInMonth(mo, yr)
{
	if (mo == 2)
		return 28 + IsLeapYear(yr);
	else
		return 30 + ((mo + (mo > 7)) % 2);
}

function getSelectedVal(oSel)
{
	return oSel.options[oSel.selectedIndex].value;
}

function Times_OnChange(fStart,  fDay)
{
	if (fDay)
		var otxtDay = document.MainForm.month_day_number;

	if (fStart)
	{
		var oSelYr = document.MainForm.dtstart_Year;
		var oSelMo = document.MainForm.dtstart_Month;
		var oSelMo2 = document.MainForm.year_recur1;
		var oSelDay = document.MainForm.dtstart_Day;
	}
	else
	{
		var oSelYr = document.MainForm.recur_end_Year;
		var oSelMo = document.MainForm.recur_end_Month;
		var oSelDay = document.MainForm.recur_end_Day;
	}

	var iDay = parseInt(getSelectedVal(oSelDay), 10);
	
	if (fDay)
	{
		var iDay = parseInt(otxtDay.value, 10);
		if (isNaN(iDay))
			iDay = parseInt(getSelectedVal(oSelDay), 10);
		otxtDay.value = ValidateDate(parseInt(getSelectedVal(oSelYr, 10)) , parseInt(getSelectedVal(oSelMo2), 10),  iDay) + 1;
	}
	else
	{
		oSelDay.selectedIndex  = ValidateDate(parseInt(getSelectedVal(oSelYr, 10)) , parseInt(getSelectedVal(oSelMo), 10),  iDay);
	}
}

function ValidateDate(iYr, iMo, iDay)
{
	var maxDays = daysInMonth(iMo,iYr);

	if (iDay > maxDays)
		return (maxDays - 1);
	else
		return (iDay - 1);
}


function ApptTimes_OnChange()
{
	if(g_iDTStartIndex == -1 || objHiddenAllDay == null || objHiddenResponseRequest == null)
	{
		FindElementIndices();
	}

	var iStYr = parseInt(getSelectedVal(document.MainForm.dtstart_Year), 10);
	var iStMo = parseInt(getSelectedVal(document.MainForm.dtstart_Month), 10);
	var iStDay = parseInt(getSelectedVal(document.MainForm.dtstart_Day), 10);
	var iEndYr = parseInt(getSelectedVal(document.MainForm.dtend_Year), 10);
	var iEndMo = parseInt(getSelectedVal(document.MainForm.dtend_Month), 10);
	var iEndDay = parseInt(getSelectedVal(document.MainForm.dtend_Day), 10);

	document.MainForm.dtstart_Day.selectedIndex = ValidateDate(iStYr, iStMo, iStDay);
	document.MainForm.dtend_Day.selectedIndex  = ValidateDate(iEndYr , iEndMo,  iEndDay);

	MakeDates();
	
	BuildISODate(document.MainForm[g_iDTStartIndex], document.MainForm.dtstart_Year, document.MainForm.dtstart_Month, document.MainForm.dtstart_Day, document.MainForm.dtstart_Time);
	BuildISODate(document.MainForm[g_iDTStartIndex+1], document.MainForm.dtend_Year, document.MainForm.dtend_Month, document.MainForm.dtend_Day, document.MainForm.dtend_Time);
}

function BuildISODate (Dest, Year, Month, Day, Time)
{
	Dest.value = Year.options[Year.selectedIndex].value + "-" + Month.options[Month.selectedIndex].value + "-" + Day.options[Day.selectedIndex].value + "T" + Time.options[Time.selectedIndex].value + ":00.000Z";
	FormModified();
}

function SetTimeAs()
{
	if(objHiddenAllDay == null)
	{
		return(false);
	}
	if(document.MainForm.alldayevent.checked == true)
	{
		objHiddenAllDay.value = 1
		document.MainForm.dtstart_Time.disabled = true;
		document.MainForm.dtend_Time.disabled = true;
	}
	else
	{
		objHiddenAllDay.value = 0
		document.MainForm.dtstart_Time.disabled = false;
		document.MainForm.dtend_Time.disabled = false;
	}
	FormModified();
	return(true);
}

