var RTEFileUploadOverride = null;
var bInsertControl = false;
var bSelectForeColor = false;
var bSelectBackColor = false;
var bCreateLink = false;
var bInsertImage = false;
var bTemplate = false;
var bTrackPerformance = false;
var _Range;
var _SelectedText;
var RTECurrentObj = null;
var RTECurrentMenu = null;
var bRTECommandsEnabled = false;
var RTEControlPrefix = "";
var FocusControl;
var OnLoadFunction;
var OnResizeFunction;
var _ua = navigator.userAgent;
var bRichTextEnabled = ((_ua.indexOf('MSIE') != -1 && navigator.appVersion.indexOf('Macintosh') == -1) || 
					(_ua.indexOf('Firefox/') != -1 && Number(_ua.substr(_ua.indexOf('Firefox/') + 8, 1)) >= 2) ||
					(_ua.indexOf('Safari/') != -1 && Number(_ua.substr(_ua.indexOf('Safari/') + 7, 1)) >= 5) ||
					(_ua.indexOf('Netscape/') != -1 && Number(_ua.substr(_ua.indexOf('Netscape/') + 9, 1)) >= 8) );
var IsMSIE = (_ua.indexOf('MSIE') != -1 && navigator.appVersion.indexOf('Macintosh') == -1);
var IsFirefox = (_ua.indexOf('Firefox') != -1);
var IsNetscape = (_ua.indexOf('Netscape') != -1);
var IsSafari = (_ua.indexOf('Safari') != -1);
var MSIEVersion = (IsMSIE ? Number(_ua.substr(_ua.indexOf('MSIE') + 5, 1)) : -1);
var IsMobile = ((navigator.userAgent.indexOf('iPhone') != -1) || (navigator.userAgent.indexOf('iPod') != -1));

//alert("appCodeName: " + navigator.appCodeName + "\r\n\r\nappName: " + navigator.appName + "\r\n\r\nappVersion: " + navigator.appVersion + "\r\n\r\nuserAgent: " + navigator.userAgent);

// This sets the browser history to defeat backward and forward buttons, wonderful!
window.history.forward(1);

max_file_upload_size = '2000000';  //Max Size in bytes (2mb)
function CheckFileUploadSize(node)
{
	if (IsMSIE)
	{
		// haven't found solution yet
	}
	else if (node.files != null && node.files[0] != null)
	{
		var size = node.files[0].fileSize;
		if (size > max_file_upload_size)
		{
			alert('The file you are attempting to upload exceeds the maximum file size of 2 MB.');
			return false;
		}
	}
	return true;
}
function NoOp()
{
}
function SystemFormInitialize()
{
	if (FocusControl != null && eval("document.forms[0]." + FocusControl) != null)
		eval("document.forms[0]." + FocusControl + ".focus()");
	if (OnLoadFunction != null)
		eval(OnLoadFunction);
}
function SystemFormResize()
{
	if (OnResizeFunction != null)
		eval(OnResizeFunction);
}
function GetLeft(e)
{
	var Offset = e.offsetLeft;
	var Parent = e.offsetParent;

	// problems calculating offset with IE on Mac
	if (navigator.appName.indexOf('Microsoft') != -1)
	{
		if (navigator.appVersion.indexOf('Macintosh') != -1)
			return Offset;
	}

	while (Parent != null)
	{
		Offset += Parent.offsetLeft;
		Parent = Parent.offsetParent;
	}
	return Offset;
}
function GetTop(e)
{
	var Offset = e.offsetTop + e.offsetHeight + 1;

	if (navigator.appName.indexOf('Microsoft') != -1)
	{
		if (navigator.appVersion.indexOf('Macintosh') != -1)
			Offset += 1;
	}
	
	var Parent = e.offsetParent;
	var count = 0;
	while (Parent != null)
	{
		Offset += Parent.offsetTop;
		Parent = Parent.offsetParent;
		count++;
	}
	return Offset;
}
function RTEFocus()
{
	bRTECommandsEnabled = true;
}
function RTEBlur()
{
	bRTECommandsEnabled = false;
	UpdateRTE();
}
function HideRTE()
{
	var Editor = document.getElementById("RichTextEditor");
	if (Editor != null)
	{
		if (IsMSIE)
			Editor.contentWindow.document.designMode = "off";
		else
			Editor.contentDocument.designMode = "off";
		Editor.style.visibility = "hidden";
	}
}
function RTESelect()
{
	document.getElementById(RTEControlPrefix + "FontTypes").options[0].selected = true;
	document.getElementById(RTEControlPrefix + "FontSizes").options[0].selected = true;
}
function RTEClearContent()
{
	var Editor = document.getElementById("RichTextEditor");
	if (Editor != null)
	{
		if (IsMSIE)
		{
			Editor.contentWindow.document.designMode = "off";
			Editor.contentWindow.document.open();
			Editor.contentWindow.document.write("<div style='font-family:arial;font-size:10pt'>");
			Editor.contentWindow.document.close();
			Editor.contentWindow.document.designMode = "on";
		}
		else
		{
			var bSafariHack = false;
			Editor.contentDocument.open();
			if (IsSafari)
			{
				bSafariHack = true;
				Editor.contentDocument.write("&nbsp;");
			}
			Editor.contentDocument.close();
			Editor.contentDocument.designMode = "on";
			if (bSafariHack)
				Editor.contentDocument.execCommand("selectall", false, null);
			Editor.contentDocument.execCommand("fontname", false, "Arial");
			Editor.contentDocument.execCommand("fontsize", false, "2pt");
			if (bSafariHack)
				Editor.contentDocument.execCommand("delete", false, null);
		}
	}
}
function UpdateRTE()
{
	var body = "";
	var Editor = document.getElementById("RichTextEditor");
	if (Editor != null)
	{
		if (IsMSIE)
			body = Editor.contentWindow.document.body.innerHTML;
		else
			body = Editor.contentDocument.body.innerHTML;

		var elements = document.getElementsByTagName("textarea");
		for (i = 0; i < elements.length; i++)
		{
			var ta = elements[i];
			if (ta.id.indexOf("TextEditor") != -1)
			{
				ta.value = body;
				break;
			}
		}
	}
}
function InitializeRTE()
{
	var Editor = document.getElementById("RichTextEditor");
	var elements = document.getElementsByTagName("textarea");
	for (i = 0; i < elements.length; i++)
	{
		var ta = elements[i];
		if (ta.id.indexOf("TextEditor") != -1)
		{
			RTEControlPrefix = ta.id.indexOf('_') == -1 ? "" : ta.id.substr(0, ta.id.indexOf('_') + 1);
			if (IsRichTextEnabled() && ta.getAttribute("EditRichText") == "True")
			{
				if (Editor == null)
				{
					var e = document.createElement("iframe");
					e.id = "RichTextEditor";
					e.marginWidth = "2";
					e.marginHeight = "1";
					e.scrolling = "auto";
					e.setAttribute("application", "yes");
					e.setAttribute("scrolling", "auto");
					e.style.backgroundColor = "White";

					var width = ta.style.width.substr(0, ta.style.width.length - 2);
					e.width = ta.style.width;
					e.height = ta.style.height;
					ta.parentNode.insertBefore(e, ta);
				}
				else
					Editor.style.visibility = "visible";

				Editor = document.getElementById("RichTextEditor");
				if (IsMSIE)
				{
					Editor.contentWindow.document.open();
					if (ta.value.length > 0)
						Editor.contentWindow.document.write(ta.value);
					else
						Editor.contentWindow.document.write("<div style='font-family:arial;font-size:10pt'>");

					Editor.contentWindow.document.close();
					Editor.contentWindow.document.designMode = "on";
					Editor.attachEvent("onblur", RTEBlur);
					Editor.contentWindow.document.attachEvent("onselectstart", RTESelect);
				}
				else
				{
					var bSafariHack = false;
					Editor.contentDocument.open();
					if (ta.value.length > 0)
						Editor.contentDocument.write(ta.value);
					else if (IsSafari)
					{
						bSafariHack = true;
						Editor.contentDocument.write("&nbsp;");
					}
					Editor.contentDocument.close();

					Editor.contentDocument.designMode = "on";
					if (bSafariHack)
						Editor.contentDocument.execCommand("selectall", false, null);
					Editor.contentDocument.execCommand("fontname", false, "Arial");
					Editor.contentDocument.execCommand("fontsize", false, "2pt");
					if (bSafariHack)
						Editor.contentDocument.execCommand("delete", false, null);

					if (Editor.contentDocument != null && Editor.contentDocument.addEventListener)
					{
						Editor.contentDocument.addEventListener("blur", RTEBlur, true);
						Editor.contentDocument.addEventListener("focus", RTESelect, true);
					}
					else if (Editor.addEventListener)
					{
						Editor.addEventListener("blur", RTEBlur, true);
						Editor.addEventListener("focus", RTESelect, true);
					}
					else if (Editor.attachEvent)
					{
						Editor.attachEvent("onblur", RTEBlur);
						Editor.attachEvent("onblur", RTESelect);
					}
					Editor.contentDocument.body.style.cursor = "default";
				}
				ta.style.width = "1px";
				ta.style.height = "1px";
				ta.style.visibility = "hidden";
			}
			else
			{
				if (Editor != null)
				{
					ta.style.width = Editor.style.width;
					ta.style.height = Editor.style.height;
					ta.style.visibility = "visible";
					Editor.style.width = "1px";
					Editor.style.height = "1px";
					Editor.style.visibility = "hidden";
				}
			}
			break;
		}
	}
	SizeRTEControls();
}
function RTETemplate()
{
	bTemplate = !bTemplate;
	PostClientCommand("Template");
}
function SizeRTEControls()
{
	var WindowWidth = GetWindowWidth() - (IsMSIE ? 50 : 80);

	if (WindowWidth > 0)
	{
		if (!IsMSIE || MSIEVersion > 6)
			OnResizeFunction = "SizeRTEControls()";

		var FixedWidth = 0;

		var e = document.getElementById('FixedWidth');
		if (e != null)
			FixedWidth = e.value;

		var Editor = (IsRichTextEnabled() ? document.getElementById("RichTextEditor") : document.getElementById(RTEControlPrefix + "TextEditor"));
		if (Editor != null && bAutoResizeRTE)
		{
			if (FixedWidth > 0)
				Editor.style.width = FixedWidth;
			else
				Editor.style.width = WindowWidth + 'px';

			setTimeout("SizeRTEHeight();");
		}
	}
}
function SizeRTEHeight()
{
	var Editor = (IsRichTextEnabled() ? document.getElementById("RichTextEditor") : document.getElementById(RTEControlPrefix + "TextEditor"));
	if (Editor != null)
	{
		SizeIFrameHeightToContent(Editor);
		var NewHeight = Number(Editor.style.height.substr(0, Editor.style.height.indexOf("px")));
		if (NewHeight < 200)
			Editor.style.height = "200px";
		else if (NewHeight > 5000)
			Editor.style.height = "5000px";
	}
}
function ExecRTECommand(e, command, arguments)
{
	var Editor = document.getElementById("RichTextEditor");
	if (Editor != null)
	{
		var Args = arguments;
		switch (command)
		{
			case "fontname":
				Args = e.options[e.selectedIndex].value;
				break;
			case "fontsize":
				Args = e.options[e.selectedIndex].value;
				break;
			case "forecolor":
			case "backcolor":
				Args = e.style.backgroundColor;
				break;
		}
		if (IsMSIE)
			Editor.contentWindow.document.execCommand(command, false, Args);
		else
			Editor.contentDocument.execCommand(command, false, Args);
		UpdateRTE();
	}
}
function IsRichTextEnabled()
{
	var bEnabled = bRichTextEnabled;

	if (bEnabled)
	{	
		var CheckBox = document.getElementById(RTEControlPrefix + "RichText");
		if (CheckBox != null)
			bEnabled = CheckBox.checked;
			
		if (bEnabled)
		{
			var TextEditor = document.getElementById(RTEControlPrefix + "TextEditor");
			if (TextEditor != null)
				bEnabled = (TextEditor.getAttribute("EditRichText") == "True");
		}
	}
	return bEnabled;
}
function GetRTEPrefix(e)
{
	return (e.id.indexOf('_') == -1 ? "" : e.id.substr(0, e.id.indexOf('_') + 1));
}
function _cOver(e)
{
	var Prefix = GetRTEPrefix(e);
	var Obj = document.getElementById(Prefix + "Color");
	if (Obj != null)
	{
		var color = e.style.backgroundColor;
		e.className = "SystemColorCellSelected";
		if (IsFirefox || IsNetscape)
			Obj.textContent = color.substr(0, 1).toUpperCase() + color.substr(1, color.length - 1);
		else
			Obj.innerText = color.substr(0, 1).toUpperCase() + color.substr(1, color.length - 1);
	}
	Obj = document.getElementById(Prefix + "TemplateColor");
	if (Obj != null)
	{
		var color = e.style.backgroundColor;
		e.className = "SystemColorCellSelected";
		if (IsFirefox || IsNetscape)
			Obj.textContent = color.substr(0, 1).toUpperCase() + color.substr(1, color.length - 1);
		else
			Obj.innerText = color.substr(0, 1).toUpperCase() + color.substr(1, color.length - 1);
	}
}
function _cOut(e)
{
	var Prefix = GetRTEPrefix(e);
	var Obj = document.getElementById(Prefix + "Color");
	e.className = "SystemColorCell";
	if (Obj != null)
	{
		if (IsFirefox || IsNetscape)
			Obj.textContent = "";
		else
			Obj.innerText = "";
	}
	Obj = document.getElementById(Prefix + "TemplateColor");
	if (Obj != null)
	{
		if (IsFirefox || IsNetscape)
			Obj.textContent = "";
		else
			Obj.innerText = "";
	}
}
function _cExec(e)
{
	ExecRTECommand(e, (bSelectForeColor ? 'forecolor' : 'backcolor'));
	ToggleRTEMenus(e, "");
}
function UpdateRTELinkControls(e)
{
	var Prefix = GetRTEPrefix(e);
	var cb = document.getElementById(Prefix + "LinkCheckBox");
	var lf = document.getElementById(Prefix + "LinkFiles");
	document.getElementById(Prefix + "LinkUrlLabel").disabled = cb.checked;
	document.getElementById(Prefix + "LinkUrl").disabled = cb.checked;
	document.getElementById(Prefix + "LinkFileLabel").disabled = !cb.checked;
	document.getElementById(Prefix + "LinkFiles").disabled = !cb.checked;
	document.getElementById(Prefix + "LinkFileUploadLabel").disabled = (!cb.checked || lf.selectedIndex > 0);
	document.getElementById(Prefix + "LinkFileUpload.FileUpload").disabled = (!cb.checked || lf.selectedIndex > 0);
}
function UpdateRTEImageControls(e)
{
	var Prefix = GetRTEPrefix(e);
	var lf = document.getElementById(Prefix + "ImageFiles");
	document.getElementById(Prefix + "ImageFileUploadLabel").disabled = (lf.selectedIndex > 0);
	document.getElementById(Prefix + "ImageFileUpload.FileUpload").disabled = (lf.selectedIndex > 0);

	var cb = document.getElementById(Prefix + "ImageLinkCheckBox");
	lf = document.getElementById(Prefix + "ImageLinkFiles");
	document.getElementById(Prefix + "ImageLinkUrlLabel").disabled = cb.checked;
	document.getElementById(Prefix + "ImageLinkUrl").disabled = cb.checked;
	document.getElementById(Prefix + "ImageLinkFileLabel").disabled = !cb.checked;
	document.getElementById(Prefix + "ImageLinkFiles").disabled = !cb.checked;
	document.getElementById(Prefix + "ImageLinkFileUploadLabel").disabled = (!cb.checked || lf.selectedIndex > 0);
	document.getElementById(Prefix + "ImageLinkFileUpload.FileUpload").disabled = (!cb.checked || lf.selectedIndex > 0);
}
function RTESelectChange(e)
{
	var Prefix = GetRTEPrefix(e);
	var obj = document.getElementById(e.id);
	
	switch (e.id)
	{
		case Prefix + "ApplicationControls":
		{
			var node = document.getElementById(Prefix + "ControlOptions");
			switch (obj.options[obj.selectedIndex].value)
			{
				case "CancelReservation":
				{
					node.innerHTML = "<table style='margin-left: auto; margin-right: auto' cellpadding='0' cellspacing='0' border='0'>" +
										"<tr>" +
											"<td align='right'>On Yes:&nbsp;</td>" +
											"<td align='left'><input id='OnYes' type='text' value='' style='width: 220px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>On No:&nbsp;</td>" +
											"<td align='left'><input id='OnNo' type='text' value='' style='width: 220px' /></td>" +
										"</tr>" +
									"</table>";
					break;
				}
				case "ConfirmReservation":
				{
					node.innerHTML = "<table style='margin-left: auto; margin-right: auto' cellpadding='0' cellspacing='0' border='0'>" +
										"<tr>" +
											"<td align='right'>Ticket Type:&nbsp;</td>" +
											"<td align='left'><input id='TicketTypeName' type='text' value='Bundled Tickets' style='width: 220px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>On Finish:&nbsp;</td>" +
											"<td align='left'><input id='OnFinish' type='text' value='' style='width: 220px' /></td>" +
										"</tr>" +
									"</table>";
					break;
				}
				case "EventName":
				{
					node.innerHTML = "<table style='margin-left: auto; margin-right: auto' cellpadding='0' cellspacing='0' border='0'>" +
										"<tr>" +
											"<td align='right'>Use Current Event:&nbsp;</td>" +
											"<td align='left'><input id='UseCurrentEvent' type='checkbox' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Event Type:&nbsp;</td>" +
											"<td align='left'><input id='EventType' type='text' value='Theatre' style='width: 220px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Starting Index:&nbsp;</td>" +
											"<td align='left'><input id='StartingIndex' type='text' value='First Event' style='width: 120px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Event Index:&nbsp;</td>" +
											"<td align='left'><input id='EventIndex' type='text' value='0' style='width: 30px' /></td>" +
										"</tr>" +
									"</table>";
					break;
				}
				case "Login":
				{
					node.innerHTML = "<table style='margin-left: auto; margin-right: auto' cellpadding='0' cellspacing='0' border='0'>" +
										"<tr>" +
											"<td align='right'>Target Page:&nbsp;</td>" +
											"<td align='left'><input id='TargetPage' type='text' value='' style='width: 220px' /></td>" +
										"</tr>" +
									"</table>";
					break;
				}
				case "Registration":
				{
					node.innerHTML = "<table style='margin-left: auto; margin-right: auto' cellpadding='0' cellspacing='0' border='0'>" +
										"<tr>" +
											"<td align='right'>Require Address:&nbsp;</td>" +
											"<td align='left'><input id='RequireAddress' type='checkbox' checked='true' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Require Email:&nbsp;</td>" +
											"<td align='left'><input id='RequireEmail' type='checkbox' checked='true' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Require Phone:&nbsp;</td>" +
											"<td align='left'><input id='RequirePhone' type='checkbox' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Date of Birth:&nbsp;</td>" +
											"<td align='left'><input id='ShowDOB' type='checkbox' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Require&nbsp;Account:&nbsp;</td>" +
											"<td align='left'><table cellpadding='0' cellspacing='0' border='0'><tr><td><input id='RequireAccount' type='checkbox' /></td><td>&nbsp;(Username and Password fields)</td></tr></table></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Continue&nbsp;to&nbsp;Page:&nbsp;</td>" +
											"<td align='left'>&nbsp;<input id='RegistrationContinue' type='text' style='width: 220px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Cancel&nbsp;to&nbsp;Page:&nbsp;</td>" +
											"<td align='left'>&nbsp;<input id='RegistrationCancel' type='text' style='width: 220px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Tracking Key:&nbsp;</td>" +
											"<td align='left'>&nbsp;<input id='RegistrationTrackingKey' type='text' style='width: 120px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Send Email Alert:&nbsp;</td>" +
											"<td align='left'><input id='RegistrationEmailAlert' type='checkbox' /></td>" +
										"</tr>" +
									"</table>";
					break;
				}
				case "ReservationStatus":
				{
					node.innerHTML = "<table style='margin-left: auto; margin-right: auto' cellpadding='0' cellspacing='0' border='0'>" +
										"<tr>" +
											"<td align='right'>Event Index:&nbsp;</td>" +
											"<td align='left'><input id='EventIndex' type='text' value='0' style='width: 30px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Ticket Type:&nbsp;</td>" +
											"<td align='left'><input id='TicketTypeName' type='text' value='Bundled Tickets' style='width: 220px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>On New:&nbsp;</td>" +
											"<td align='left'><input id='OnNew' type='text' value='' style='width: 220px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>On Modify:&nbsp;</td>" +
											"<td align='left'><input id='OnModify' type='text' value='' style='width: 220px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>On Cancel:&nbsp;</td>" +
											"<td align='left'><input id='OnCancel' type='text' value='' style='width: 220px' /></td>" +
										"</tr>" +
									"</table>";
					break;
				}
			case "Season":
				{
					node.innerHTML = "<table style='margin-left: auto; margin-right: auto' cellpadding='0' cellspacing='0' border='0'>" +
										"<tr>" +
											"<td align='right'>Event Index:&nbsp;</td>" +
											"<td align='left'><input id='EventIndex' type='text' value='0' style='width: 30px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Ticket Type:&nbsp;</td>" +
											"<td align='left'><input id='TicketTypeName' type='text' value='Bundled Tickets' style='width: 220px' /></td>" +
										"</tr>" +
									"</table>";
					break;
				}
			case "BundledTickets":
				{
					node.innerHTML = "<table style='margin-left: auto; margin-right: auto' cellpadding='0' cellspacing='0' border='0'>" +
										"<tr>" +
											"<td align='right'>Event Index:&nbsp;</td>" +
											"<td align='left'><input id='EventIndex' type='text' value='0' style='width: 30px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Ticket Type:&nbsp;</td>" +
											"<td align='left'><input id='TicketTypeName' type='text' value='Bundled Tickets' style='width: 220px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Default Page:&nbsp;</td>" +
											"<td align='left'><input id='DefaultPage' type='text' value='' style='width: 220px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Welcome Page:&nbsp;</td>" +
											"<td align='left'><input id='WelcomePage' type='text' value='' style='width: 220px' /></td>" +
										"</tr>" +
									"</table>";
					break;
				}
				case "SelectEventDateTime":
				{
					node.innerHTML = "<table style='margin-left: auto; margin-right: auto' cellpadding='0' cellspacing='0' border='0'>" +
										"<tr>" +
											"<td align='right'>On Save:&nbsp;</td>" +
											"<td align='left'><input id='OnSave' type='text' value='' style='width: 220px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>On Cancel:&nbsp;</td>" +
											"<td align='left'><input id='OnCancel' type='text' value='' style='width: 220px' /></td>" +
										"</tr>" +
									"</table>";
					break;
				}
				case "SelectSeats":
				{
					node.innerHTML = "<table style='margin-left: auto; margin-right: auto' cellpadding='0' cellspacing='0' border='0'>" +
										"<tr>" +
											"<td align='right'>Ticket Type:&nbsp;</td>" +
											"<td align='left'><input id='TicketTypeName' type='text' value='Bundled Tickets' style='width: 220px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>On Save:&nbsp;</td>" +
											"<td align='left'><input id='OnSave' type='text' value='' style='width: 220px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>On Cancel:&nbsp;</td>" +
											"<td align='left'><input id='OnCancel' type='text' value='' style='width: 220px' /></td>" +
										"</tr>" +
									"</table>";
					break;
				}
				case "UnusedBundledTickets":
				{
					node.innerHTML = "<table style='margin-left: auto; margin-right: auto' cellpadding='0' cellspacing='0' border='0'>" +
										"<tr>" +
											"<td align='right'>Event Index:&nbsp;</td>" +
											"<td align='left'><input id='EventIndex' type='text' value='0' style='width: 30px' /></td>" +
										"</tr>" +
										"<tr>" +
											"<td align='right'>Ticket Type:&nbsp;</td>" +
											"<td align='left'><input id='TicketTypeName' type='text' value='Bundled Tickets' style='width: 220px' /></td>" +
										"</tr>" +
									"</table>";
					break;
				}
				default:
				{
					node.innerHTML = "";
					break;
				}
			}
			break;
		}
	}
}
function RTEInsertControl(e)
{
	var Prefix = GetRTEPrefix(e);
	var obj = document.getElementById(Prefix + "ApplicationControls");
	if (obj.selectedIndex == 0)
		alert("An application control was not selected.  Please select an application control from the drop down list and try again.");
	else
	{
		var html = "";
		switch (obj.options[obj.selectedIndex].value)
		{
			case "BulletinBoard":
				html = "<IFRAME id=bulletinboard_control style=\"WIDTH: 95%\" marginWidth=0 marginHeight=0 src=\"/BBS.aspx?Entity=" + obj.getAttribute("Entity") + "&amp;Control=BulletinBoard\" frameBorder=0 scrolling=no onload=SizeIFrameHeightToContent(this)></IFRAME>";
				break;
			case "Calendar":
				html = "<table style='width: 100%' border=0 cellpadding=0 cellspacing=0><tr><td><dvs:control type=\"Calendar\">[Calendar]</dvs:control></dvs></td></tr></table>";
				break;
			case "CancelReservation":
				html = "<table style='width: 100%' border=0 cellpadding=0 cellspacing=0><tr><td>" +
				"<dvs:control type=\"CancelReservation\" OnYes=\"" + (document.getElementById("OnYes").value.length > 0 ? document.getElementById("OnYes").value : "") + "\"" +
				"OnNo=\"" + (document.getElementById("OnNo").value.length > 0 ? document.getElementById("OnNo").value : "") + "\"" +
				">[Cancel Reservation]</dvs:control></dvs></td></tr></table>";
				break;
			case "ConfirmReservation":
				html = "<table style='width: 100%' border=0 cellpadding=0 cellspacing=0><tr><td>" +
				"<dvs:control type=\"ConfirmReservation\" TicketTypeName=\"" + (document.getElementById("TicketTypeName").value.length > 0 ? document.getElementById("TicketTypeName").value : "Bundled Tickets") + "\"" +
				"OnFinish=\"" + (document.getElementById("OnFinish").value.length > 0 ? document.getElementById("OnFinish").value : "") + "\"" +
				">[Confirm Reservation]</dvs:control></dvs></td></tr></table>";
				break;
			case "ContactInformation":
				html = "<IFRAME id=contactinfo_control style=\"WIDTH: 95%\" marginWidth=0 marginHeight=0 src=\"/Resources.aspx?Entity=" + obj.getAttribute("Entity") + "&amp;Control=ContactInfo\" frameBorder=0 scrolling=no onload=SizeIFrameHeightToContent(this)></IFRAME>";
				break;
			case "Documents":
				html = "<table style='width: 100%' border=0 cellpadding=0 cellspacing=0><tr><td><dvs:control type=\"Documents\">[Documents]</dvs:control></dvs></td></tr></table>";
				break;
			case "ErrorMessage":
				html = "<table style='width: 100%' border=0 cellpadding=0 cellspacing=0><tr><td><dvs:control type=\"ErrorMessage\">[Error Messages]</dvs:control></dvs></td></tr></table>";
				break;
			case "EventName":
				if (document.getElementById("UseCurrentEvent").checked)
				{
					html = "<dvs:control type=\"EventName\" UseCurrentEvent=\"1\">[Event Name]</dvs:control></dvs>";
				}
				else
				{
					html = "<dvs:control type=\"EventName\" EventType=\"" + (document.getElementById("EventType").value.length > 0 ? document.getElementById("EventType").value : "Theatre") + "\"" +
							"StartingIndex=\"" + (document.getElementById("StartingIndex").value.length > 0 ? document.getElementById("StartingIndex").value : "First Event") + "\"" +
							"EventIndex=\"" + (document.getElementById("EventIndex").value.length > 0 ? document.getElementById("EventIndex").value : "0") + "\"" +
							 ">[Event Name]</dvs:control></td></tr></table>";
				}
				break;
			case "ForgotPassword":
				html = "<table style='width: 100%' border=0 cellpadding=0 cellspacing=0><tr><td><dvs:control type=\"ForgotPassword\">[Forgot Password]</dvs:control></dvs></td></tr></table>";
				break;
			case "Interests":
				html = "<IFRAME id=interests_control style=\"WIDTH: 95%\" marginWidth=0 marginHeight=0 src=\"/Resources.aspx?Entity=" + obj.getAttribute("Entity") + "&amp;Control=Interests\" frameBorder=0 scrolling=no onload=SizeIFrameHeightToContent(this)></IFRAME>";
				break;
			case "Login":
				html = "<IFRAME id=login_control style=\"WIDTH: 95%\" marginWidth=0 marginHeight=0 src=\"/General.aspx?Entity=" + obj.getAttribute("Entity") +
						"&amp;Control=Login&amp;TargetPage=" + (document.getElementById("TargetPage").value.length > 0 ? document.getElementById("TargetPage").value : "/Resources.aspx?Control=Welcome") +
						 "\" frameBorder=0 scrolling=no onload=SizeIFrameHeightToContent(this)></IFRAME>";
				break;
			case "MembershipInformation":
				html = "<IFRAME id=membershipinfo_control style=\"WIDTH: 95%\" marginWidth=0 marginHeight=0 src=\"/Resources.aspx?Entity=" + obj.getAttribute("Entity") + "&amp;Control=Member\" frameBorder=0 scrolling=no onload=SizeIFrameHeightToContent(this)></IFRAME>";
				break;
			case "Photos":
				html = "<table style='width: 100%' border=0 cellpadding=0 cellspacing=0><tr><td><dvs:control type=\"Photos\">[Photos]</dvs:control></dvs></td></tr></table>";
				break;
			case "Registration":
				html = "<IFRAME id=registration_control style=\"WIDTH: 95%\" marginWidth=0 marginHeight=0 src=\"/General.aspx?Entity=" + obj.getAttribute("Entity") + 
						"&amp;Control=Register&amp;Address=" + (document.getElementById("RequireAddress").checked ? "Yes" : "No") +
						"&amp;Email=" + (document.getElementById("RequireEmail").checked ? "Yes" : "No") +
						"&amp;Phone=" + (document.getElementById("RequirePhone").checked ? "Yes" : "No") +
						"&amp;DOB=" + (document.getElementById("ShowDOB").checked ? "Yes" : "No") +
						"&amp;Account=" + (document.getElementById("RequireAccount").checked ? "Yes" : "No") +
						"&amp;Continue=" + (document.getElementById("RegistrationContinue").value.length > 0 ? document.getElementById("RegistrationContinue").value : "NA") +
						"&amp;Cancel=" + (document.getElementById("RegistrationCancel").value.length > 0 ? document.getElementById("RegistrationCancel").value : "NA") +
						"&amp;Tracking=" + (document.getElementById("RegistrationTrackingKey").value.length > 0 ? document.getElementById("RegistrationTrackingKey").value : "NA") +
						"&amp;Alert=" + (document.getElementById("RegistrationEmailAlert").checked ? "Yes" : "No") +
						 "\" frameBorder=0 scrolling=no onload=SizeIFrameHeightToContent(this)></IFRAME>";
				break;
			case "ReservationStatus":
				html = "<table style='width: 100%' border=0 cellpadding=0 cellspacing=0><tr><td>" +
						"<dvs:control type=\"ReservationStatus\" EventIndex=\"" + (document.getElementById("EventIndex").value.length > 0 ? document.getElementById("EventIndex").value : "0") + "\"" +
						"TicketTypeName=\"" + (document.getElementById("TicketTypeName").value.length > 0 ? document.getElementById("TicketTypeName").value : "Bundled Tickets") + "\"" +
						"OnNew=\"" + (document.getElementById("OnNew").value.length > 0 ? document.getElementById("OnNew").value : "") + "\"" +
						"OnModify=\"" + (document.getElementById("OnModify").value.length > 0 ? document.getElementById("OnModify").value : "") + "\"" +
						"OnCancel=\"" + (document.getElementById("OnCancel").value.length > 0 ? document.getElementById("OnCancel").value : "") + "\"" +
						 ">[Reservation Status]</dvs:control></td></tr></table>";
				break;
			case "Season":
				html = "<table style='width: 100%' border=0 cellpadding=0 cellspacing=0><tr><td>" +
						"<dvs:control type=\"Season\" EventIndex=\"" + (document.getElementById("EventIndex").value.length > 0 ? document.getElementById("EventIndex").value : "0") + "\"" +
						"TicketTypeName=\"" + (document.getElementById("TicketTypeName").value.length > 0 ? document.getElementById("TicketTypeName").value : "Bundled Tickets") + "\"" +
						 ">[Season]</dvs:control></td></tr></table>";
				break;
			case "BundledTickets":
				html = "<table style='width: 100%' border=0 cellpadding=0 cellspacing=0><tr><td>" +
						"<dvs:control type=\"BundledTickets\" EventIndex=\"" + (document.getElementById("EventIndex").value.length > 0 ? document.getElementById("EventIndex").value : "0") + "\"" +
						"TicketTypeName=\"" + (document.getElementById("TicketTypeName").value.length > 0 ? document.getElementById("TicketTypeName").value : "Bundled Tickets") + "\"" +
						"DefaultPage=\"" + (document.getElementById("DefaultPage").value.length > 0 ? document.getElementById("DefaultPage").value : "") + "\"" +
						"WelcomePage=\"" + (document.getElementById("WelcomePage").value.length > 0 ? document.getElementById("WelcomePage").value : "") + "\"" +
						 ">[Bundled Ticket Reservation Form]</dvs:control></td></tr></table>";
				break;
			case "SelectEventDateTime":
				html = "<table style='width: 100%' border=0 cellpadding=0 cellspacing=0><tr><td>" +
						"<dvs:control type=\"SelectEventDateTime\" OnSave=\"" + (document.getElementById("OnSave").value.length > 0 ? document.getElementById("OnSave").value : "") + "\"" +
						"OnCancel=\"" + (document.getElementById("OnCancel").value.length > 0 ? document.getElementById("OnCancel").value : "") + "\"" +
						 ">[Select Event Date &amp; Time]</dvs:control></td></tr></table>";
				break;
			case "SelectSeats":
				html = "<table style='width: 100%' border=0 cellpadding=0 cellspacing=0><tr><td>" +
						"<dvs:control type=\"SelectSeats\" TicketTypeName=\"" + (document.getElementById("TicketTypeName").value.length > 0 ? document.getElementById("TicketTypeName").value : "Bundled Tickets") + "\"" +
						"OnSave=\"" + (document.getElementById("OnSave").value.length > 0 ? document.getElementById("OnSave").value : "") + "\"" +
						"OnCancel=\"" + (document.getElementById("OnCancel").value.length > 0 ? document.getElementById("OnCancel").value : "") + "\"" +
						 ">[Select Seats]</dvs:control></td></tr></table>";
				break;
			case "SystemMessages":
				html = "<table style='width: 100%' border=0 cellpadding=0 cellspacing=0><tr><td><dvs:control type=\"SystemMessages\">[System Messages]</dvs:control></dvs></td></tr></table>";
				break;
			case "UnusedBundledTickets":
				html = "<span><dvs:control type=\"UnusedBundledTickets\" EventIndex=\"" + (document.getElementById("EventIndex").value.length > 0 ? document.getElementById("EventIndex").value : "0") + "\"" +
						"TicketTypeName=\"" + (document.getElementById("TicketTypeName").value.length > 0 ? document.getElementById("TicketTypeName").value : "Bundled Tickets") + "\"" +
						 ">[Unused Bundled Tickets]</dvs:control></span>";
				break;
			case "Welcome":
				html = "<IFRAME id=welcome_control style=\"WIDTH: 95%\" marginWidth=0 marginHeight=0 src=\"/General.aspx?Entity=" + obj.getAttribute("Entity") + "&amp;Control=Login\" frameBorder=0 scrolling=no onload=SizeIFrameHeightToContent(this)></IFRAME>";
				break;
		}
		if (html.length > 0)
		{
			if (IsMSIE)
			{
				if (_Range.offsetLeft > 1 && _Range.offsetTop > 1)
				{
					_Range.pasteHTML(html);
					UpdateRTE();
				}
			}
			else
				ExecRTECommand(obj, "inserthtml", html);

			ToggleRTEMenus(obj, "none");
		}
	}
}
function RTEInsertImage(e)
{
	var bFileUpload = false;
	var Prefix = GetRTEPrefix(e);
	var url = "";
	var obj = document.getElementById(Prefix + "ImageFiles");
	if (obj.selectedIndex == 0)
	{
		bFileUpload = true;
		obj = document.getElementById(Prefix + "ImageFileUpload.FileUpload");
		if (obj.value.toUpperCase().lastIndexOf(".GIF") == -1 && obj.value.toUpperCase().lastIndexOf(".JPG") == -1)
		{
			alert("The file you have selected to upload is not a valid image file. Valid image files include .GIF and .JPG.");
			return;
		}
		if (!CheckFileUploadSize(obj))
			return;

		url = obj.value;
		if (url.lastIndexOf("\\") > 0)
			url = "http://uploadfolder/" + url.substr(url.lastIndexOf("\\") + 1, url.length - (url.lastIndexOf("\\") + 1));
		else if (url.lastIndexOf("/") > 0)
			url = "http://uploadfolder" + url.substr(url.lastIndexOf("/"), url.length - url.lastIndexOf("/"));
		else if (url.length > 0 && url != "http://")
		{
			if (IsMSIE)
			{
				alert("ERROR:  A file path was not specified.  Please specify a valid path and file name and try again.");
				obj.parentNode.removeNode(obj);
				PostClientCommand("Reset")
			}
			url = "http://uploadfolder/" + obj.value;
		}
	}
	else
	{
		url = obj.value;
		obj.value = "";
	}
	if (url.length == 0 || url == "http://")
	{
		alert("Please select an existing image or upload a new image to the web server.");
		return;
	}
	var height = Number(document.getElementById(Prefix + "ImageHeight").value);
	var width = Number(document.getElementById(Prefix + "ImageWidth").value);

	var linkUrl = ""
	var obj = document.getElementById(Prefix + "ImageLinkCheckBox");
	var bUseLinkFile = obj.checked;
	var obj = document.getElementById(Prefix + (bUseLinkFile ? "ImageLinkFiles" : "ImageLinkUrl"));
	if (bUseLinkFile)
	{
		if (obj.selectedIndex == 0)
		{
			bFileUpload = true;
			obj = document.getElementById(Prefix + "ImageLinkFileUpload.FileUpload");
			linkUrl = obj.value;
			if (linkUrl.lastIndexOf("\\") > 0)
				linkUrl = "http://uploadfolder/" + linkUrl.substr(linkUrl.lastIndexOf("\\") + 1, linkUrl.length - (linkUrl.lastIndexOf("\\") + 1));
			else if (linkUrl.lastIndexOf("/") > 0)
				linkUrl = "http://uploadfolder" + linkUrl.substr(linkUrl.lastIndexOf("/"), linkUrl.length - linkUrl.lastIndexOf("/"));
			else if (linkUrl.length > 0 && linkUrl != "http://")
			{
				if (IsMSIE)
				{
					alert("ERROR:  A file path was not specified.  Please specify a valid path and file name and try again.");
					document.getElementById(Prefix + "ImageLinkCheckBox").checked = false;
					obj.parentNode.removeNode(obj);
					PostClientCommand("Reset")
				}
				linkUrl = "http://uploadfolder/" + obj.value;
			}
		}
		else
		{
			linkUrl = obj.options[obj.selectedIndex].value;
			obj.selectedIndex = 0;
		}
	}
	else
	{
		linkUrl = obj.value;
		obj.value = "";
	}
	
	var html = "<img src='" + url + "'" + 
				(height > 0 ? " height='" + height + "px'" : "") +
				(width > 0 ? " width='" + width + "px'" : "") +
				"></img>";
	if (linkUrl.length > 0 && linkUrl != "http://")
		html = "<a href='" + linkUrl + "' target='_blank' style='text-decoration:none'>" + html + "</a>"

	if (document.getElementById(Prefix + "ImageAlignRight").checked)
		html = "<div style='float: left; padding: 4px 4px 4px 4px'>" + html + "</div><div>" + (IsSafari ? "&nbsp;" : "") + "</div>";
	else if (document.getElementById(Prefix + "ImageAlignLeft").checked)
		html = "<div style='float: right; padding: 4px 4px 4px 4px'>" + html + "</div><div>" + (IsSafari ? "&nbsp;" : "") + "</div>";

	obj = document.getElementById(Prefix + "XmlMenuCell.insertimage");
	if (IsMSIE)
	{
		if (_Range.offsetLeft > 1 && _Range.offsetTop > 1)
		{
			_Range.pasteHTML(html);
			UpdateRTE();
		}
	}
	else
		ExecRTECommand(obj, "inserthtml", html);

	document.getElementById(Prefix + "ImageHeight").value = "";
	document.getElementById(Prefix + "ImageWidth").value = "";
	document.getElementById(Prefix + "ImageFiles").selectedIndex = 0;
	document.getElementById(Prefix + "ImageLinkFiles").selectedIndex = 0;
	document.getElementById(Prefix + "ImageLinkCheckBox").checked = false;
	document.getElementById(Prefix + "ImageAlignCenter").checked = true;

	if (bFileUpload)
	{
		ToggleRTEMenus(obj, 'insertimage');
		popupMessageBox(document.getElementById(Prefix + "PleaseWait"));
		if (RTEFileUploadOverride != null)
			RTEFileUploadOverride();
		else
			PostClientCommand("UploadFile");
	}
	else
		ToggleRTEMenus(obj, 'insertimage');
}
function RTECreateLink(e)
{
	var AnchorID = null;
	var bFileUpload = false;
	var bHelpLink = false;
	var url = "";
	var Prefix = GetRTEPrefix(e);
	var obj = document.getElementById(Prefix + "LinkCheckBox");
	var bUseFile = obj.checked;
	var obj = document.getElementById(Prefix + (bUseFile ? "LinkFiles" : "LinkUrl"));
	if (bUseFile)
	{
		obj = document.getElementById(Prefix + "LinkFiles");
		if (obj.selectedIndex == 0)
		{
			bFileUpload = true;
			obj = document.getElementById(Prefix + "LinkFileUpload.FileUpload");
			url = obj.value;
			if (url.lastIndexOf("\\") > 0)
				url = "http://uploadfolder/" + url.substr(url.lastIndexOf("\\") + 1, url.length - (url.lastIndexOf("\\") + 1));
			else if (url.lastIndexOf("/") > 0)
				url = "http://uploadfolder" + url.substr(url.lastIndexOf("/"), url.length - url.lastIndexOf("/"));
			else if (url.length > 0 && url != "http://")
			{
				if (IsMSIE)
				{
					alert("ERROR:  A file path was not specified.  Please specify a valid path and file name and try again.");
					document.getElementById(Prefix + "LinkCheckBox").checked = false;
					obj.parentNode.removeNode(obj);
					PostClientCommand("Reset")
				}
				url = "http://uploadfolder/" + obj.value;
			}
		}
		else
		{
			url = obj.options[obj.selectedIndex].value;
			obj.selectedIndex = 0;
		}
	}
	else
	{
		obj = document.getElementById(Prefix + "HelpPageList");
		if (obj != null && obj.selectedIndex > 0)
		{
			bHelpLink = true;
			url = "javascript:SelectHelpPage('" + obj.options[obj.selectedIndex].value + "')";
			obj.selectedIndex = 0;
		}
		else
		{
			obj = document.getElementById(Prefix + "LinkUrl");
			url = obj.value;
			obj.value = "";
			if (url.length == 0 || url == "http://")
			{
				obj = document.getElementById(Prefix + "PopupText");
				if (obj != null)
				{
					if (obj.value.length > 0)
					{
						bHelpLink = true;
						obj.value = obj.value.replace(/["]/g, "'");
						obj.value = obj.value.replace(/[']/g, "\\'");
						AnchorID = "XmlMenuCell_" + Math.floor(Math.random() * (url.length * 10000));
						url = "javascript:PopupText('" + AnchorID + "', '" + obj.value + "')";
						obj.value = "";
					}
				}
			}
		}
	}
	if (url.length == 0 || url == "http://")
	{
		alert("To create a text link you must provide a valid click-thru URL or specify a file that exists on the web server.\n\n(example: 'http://www.website.com')");
		return;
	}
	if (IsMSIE)
	{
		if (bHelpLink)
		{
			if (AnchorID == null)
			{
				_Range.pasteHTML("<a href=\"" + url + "\" class=\"SystemHelpPageLink\">" + _Range.htmlText + "</a>");
			}
			else
			{
				_Range.pasteHTML("<a id=\"" + AnchorID + "\" href=\"" + url + "\" ParentMenu=\"True\" NoSelection=\"True\" class=\"SystemPopupTextLink\">" + _Range.htmlText + "</a>");
			}
		}
		else
			_Range.pasteHTML("<a href=\"" + url + "\" target=\"_blank\">" + _Range.htmlText + "</a>");
		UpdateRTE();
	}
	else
	{
		obj = document.getElementById("RichTextEditor");
		var anchor = obj.contentWindow.document.createElement("a");
		anchor.setAttribute("href", url);
		if (bHelpLink)
		{
			if (AnchorID != null)
			{
				anchor.id = AnchorID;
				anchor.setAttribute("ParentMenu", "True");
				anchor.setAttribute("NoSelection", "True");
				anchor.setAttribute("class", "SystemPopupTextLink");
			}
			else
			{
				anchor.setAttribute("class", "SystemHelpPageLink");
			}
		}
		else
			anchor.setAttribute("target", "_blank");
		if (IsNetscape)
		{
			var fragment = _Range.extractContents();
			if (fragment != null)
				anchor.appendChild(fragment);
			_Range.insertNode(anchor);
		}
		else
		{
			_Range.surroundContents(anchor);
		}
		UpdateRTE();
	}
	document.getElementById(Prefix + "LinkCheckBox").checked = false;
	obj = document.getElementById(Prefix + "XmlMenuCell.createlink");
	if (bFileUpload)
	{
		ToggleRTEMenus(obj, 'createlink');
		popupMessageBox(document.getElementById(Prefix + "PleaseWait"));
		if (RTEFileUploadOverride != null)
			RTEFileUploadOverride();
		else
			PostClientCommand("UploadFile");
	}
	else
		ToggleRTEMenus(obj, 'createlink');
}
function ToggleRTEMenus(e, command)
{
	var obj = null;
	var Prefix = GetRTEPrefix(e);
	if (RTECurrentObj != null && RTECurrentObj.id != e.id)
	{
		RTEMenuBar.ToggleMenu(RTECurrentObj, RTECurrentMenu);
		OnMouseUp(RTECurrentObj);
		RTECurrentObj = null;
		RTECurrentMenu = null;
		bTemplate = bInsertControl = bSelectForeColor = bSelectBackColor = bCreateLink = bInsertImage = bTrackPerformance = false;
	}
	switch (command)
	{
		case "blockmode":
			obj = document.getElementById(Prefix + "XmlMenuCell.blockmode");
			RTETemplate();
			if (bTemplate)
				OnMouseDown(obj)
			else
				OnMouseUp(obj);
			break;

		case "insertcontrol":
			obj = document.getElementById("RichTextEditor");
			if (IsMSIE)
			{
				try
				{
					_Range = obj.contentWindow.document.selection.createRange();
				}
				catch(err)
				{
					alert("ERROR: The cursor location is invalid.\r\n\r\nPlease reposition the cursor and try again.");
					return;
				}
			}
			obj = document.getElementById(Prefix + "XmlMenuCell.insertcontrol");
			RTEMenuBar.ToggleMenu(obj, 'XmlMenu_ControlSelector');
			bSelectBackColor = RTEMenuBar.bToggleMenuUp;
			RTECurrentObj = (RTEMenuBar.bToggleMenuUp ? obj : null);
			RTECurrentMenu = (RTEMenuBar.bToggleMenuUp ? "XmlMenu_ControlSelector" : null);
			if (RTEMenuBar.bToggleMenuUp)
			{
				document.getElementById(Prefix + "ApplicationControls").selectedIndex = 0;
				document.getElementById(Prefix + "ControlOptions").innerHTML = "";
				OnMouseDown(obj);
			}
			break;
		case "backcolor":
			obj = document.getElementById(Prefix + "XmlMenuCell.backcolor");
			RTEMenuBar.ToggleMenu(obj, 'XmlMenu_ColorSelector');
			bSelectBackColor = RTEMenuBar.bToggleMenuUp;
			RTECurrentObj = (RTEMenuBar.bToggleMenuUp ? obj : null);
			RTECurrentMenu = (RTEMenuBar.bToggleMenuUp ? "XmlMenu_ColorSelector" : null);
			if (RTEMenuBar.bToggleMenuUp)
				OnMouseDown(obj);
			break;
		case "forecolor":
			obj = document.getElementById(Prefix + "XmlMenuCell.forecolor");
			RTEMenuBar.ToggleMenu(obj, 'XmlMenu_ColorSelector');
			bSelectForeColor = RTEMenuBar.bToggleMenuUp;
			RTECurrentObj = (RTEMenuBar.bToggleMenuUp ? obj : null);
			RTECurrentMenu = (RTEMenuBar.bToggleMenuUp ? "XmlMenu_ColorSelector" : null);
			if (RTEMenuBar.bToggleMenuUp)
				OnMouseDown(obj);
			break;
		case "createlink":
			if (!RTEMenuBar.bToggleMenuUp)
			{
				_Range = null;
				_SelectedText = "";
			}
			obj = document.getElementById("RichTextEditor");
			if (IsMSIE)
			{
				_Range = obj.contentWindow.document.selection.createRange();
				_SelectedText = _Range.text;
			}
			else if (obj.contentWindow && obj.contentWindow.getSelection)
			{
				var selection = obj.contentWindow.getSelection();
				_SelectedText = selection.toString();
				_Range = selection.getRangeAt(0);
			}
			else
				alert("Your browser does not support this feature at this time.");
				
			if (!RTEMenuBar.bToggleMenuUp && (_SelectedText.length == 0 || _SelectedText == null || _SelectedText == ""))
			{
				alert("\nTo create a link you must first select a word or phrase within your document.\n\nPlease select some text and try again.");
				return;
			}
			obj = document.getElementById(Prefix + "XmlMenuCell.createlink");
			RTEMenuBar.ToggleMenu(obj, "XmlMenu_LinkOptions");
			bCreateLink = RTEMenuBar.bToggleMenuUp;
			RTECurrentObj = (RTEMenuBar.bToggleMenuUp ? obj : null);
			RTECurrentMenu = (RTEMenuBar.bToggleMenuUp ? "XmlMenu_LinkOptions" : null);
			RTEMenuBar.bToggleMenuUp ? OnMouseDown(obj) : OnMouseUp(obj);
			if (bCreateLink)
			{
				var obj = document.getElementById(Prefix + "LinkUrl");
				if (obj != null && !obj.disabled)
					obj.focus();
			}
			break;
		case "insertimage":
			obj = document.getElementById("RichTextEditor");
			if (IsMSIE)
				_Range = obj.contentWindow.document.selection.createRange();
			obj = document.getElementById(Prefix + "XmlMenuCell.insertimage");
			RTEMenuBar.ToggleMenu(obj, "XmlMenu_ImageOptions");
			bInsertImage = RTEMenuBar.bToggleMenuUp;
			RTECurrentObj = (RTEMenuBar.bToggleMenuUp ? obj : null);
			RTECurrentMenu = (RTEMenuBar.bToggleMenuUp ? "XmlMenu_ImageOptions" : null);
			RTEMenuBar.bToggleMenuUp ? OnMouseDown(obj) : OnMouseUp(obj);
			if (bInsertImage)
				document.getElementById(Prefix + "ImageFiles").focus();
			break;
		case "trackperformance":
			obj = document.getElementById(Prefix + "XmlMenuCell.trackperformance");
			RTEMenuBar.ToggleMenu(obj, "XmlMenu_TrackingOptions");
			bTrackPerformance = RTEMenuBar.bToggleMenuUp;
			RTECurrentObj = (RTEMenuBar.bToggleMenuUp ? obj : null);
			RTECurrentMenu = (RTEMenuBar.bToggleMenuUp ? "XmlMenu_TrackingOptions" : null);
			RTEMenuBar.bToggleMenuUp ? OnMouseDown(obj) : OnMouseUp(obj);
			break;
	}
}
function doMessageClientPost(Command)
{
	PostClientCommand(Command);
}
function GetWindowWidth()
{
	if (window.innerWidth)
		return window.innerWidth;
	else if (document.body.clientWidth)
		return document.body.clientWidth;
	return 0;
}
function GetWindowHeight()
{
	if (window.innerHeight && window.innerHeight > 0)
		return window.innerHeight;
	else if (document.documentElement.clientHeight && document.documentElement.clientHeight > 0)
		return document.documentElement.clientHeight;
	else if (document.body.clientHeight && document.body.clientHeight > 0)
		return document.body.clientHeight;
	return 0;
}
function GetDocumentHeight()
{
	if (document.body.clientHeight)
		return document.body.clientHeight;
	return 0;
}
function getScrollXY()
{
	var scrOfX = 0, scrOfY = 0;
	if (typeof (window.pageYOffset) == 'number')
	{
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if (document.body && (document.body.scrollLeft || document.body.scrollTop))
	{
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop))
	{
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return { x: scrOfX, y: scrOfY };
}
function SizeIFrameHeightToContent(e)
{
	var height = 0;
	var frame = document.getElementById(e.id);

	if (frame && !window.opera)
		frame.style.display = "block"

	if (frame.contentWindow && frame.contentWindow.document)
	{
		height = frame.contentWindow.document.body.scrollHeight;
		frame.style.height = height + "px";
	}
	else if (frame.contentDocument && frame.contentDocument.documentElement)
	{
		frame.height = 1;
		frame.parentNode.style.height = "auto";
		frame.height = frame.contentDocument.documentElement.scrollHeight;
		if (frame.height == 1)
			frame.height = 0;
	}
}

