﻿function CivicAlertItemActions(sender, action, updatePanelID, alertID, categoryID, status) {
	var ysnArchShowForce = -1, doSubmit = true;
	var frm = document.aspnetForm;
	var ysnHasNotifyMeList = hasNotifyMeList();
	
	if (frm.lngCivicAlertCategoryID != null)
		frm.lngCivicAlertCategoryID.value = categoryID;
	if (frm.lngCivicAlertItemID != null)
		frm.lngCivicAlertItemID.value = alertID;
		
	switch (action) {
		case "Link":
			{
				doSubmit = false;
				toClipboard('/CivicAlerts.aspx?AID=' + alertID);
				break;
			}
		case 'Delete':
			{
				if (confirm('Are you sure you want to delete this item?')) {
					frm.strActionFE.value = "CivicAlertItemDelete";
				}
				else
					doSubmit = false;
				break;

			}
		case 'ArchivePublic':
			if (ysnArchShowForce < 0) ysnArchShowForce = 1;
			if (!(confirm('Archiving is a PERMANENT action!\nYou will not be able to edit, publish, unpublish, submit, reject, or move the item out of the archive!\nAre you sure you want to archive this News Flash Item?'))) {
				ysnArchShowForce = -1;
				return;
			}
			frm.ysnArchShowForcesFE.value = ysnArchShowForce;
			frm.strActionFE.value = "CivicAlertItemArchive";
			break;
		case 'ArchiveHidden':
			if (ysnArchShowForce < 0) ysnArchShowForce = 0;
			if (!(confirm('Archiving is a PERMANENT action!\nYou will not be able to edit, publish, unpublish, submit, reject, or move the item out of the archive!\nAre you sure you want to archive this News Flash Item?'))) {
				ysnArchShowForce = -1;
				return;
			}
			frm.ysnArchShowForcesFE.value = ysnArchShowForce;
			frm.strActionFE.value = "CivicAlertItemArchive";
			break;
		case 'Submit':
				frm.strActionFE.value = "CivicAlertItemSubmit";
				break;
		case 'Reject':
				frm.strActionFE.value = "CivicAlertItemReject";
				break;
		case 'Publish':
			if (ysnHasNotifyMeList)
					saveSendFE(frm, '', '', status, updatePanelID, alertID, categoryID);
				else
				frm.strActionFE.value = "CivicAlertItemPublish";
				break;
		case 'Unpublish':
				frm.strActionFE.value = "CivicAlertItemUnPublish";
				break;
		default:
				doSubmit = false;
				break;
	}

	if (doSubmit) {		
		frm.ysnSaveFE.value = 1;
		frm.ysnArchShowForcesFE.value = ysnArchShowForce;
		raiseAsyncPostback(updatePanelID, categoryID, 0);
	}
}
function saveSendFE(frmMain, warningText, title, status, updatePanelID, alertID, categoryID) {
	behaviorID = $find('editItemBehavior');
	var ifrID = document.getElementById('liveEditDialog');
	if (behaviorID) {
		ifrID.style.height = '270px';
		if (frmMain != 'frmAlertInfoForm')
			ifrID.src = '/common/modules/sendEmailFE.aspx?formName=' + frmMain.name + '&from=civicalerts' + '&warning=' + warningText + '&moduleName=' + title + '&status=' + status + '&ItemId=' + categoryID + '&updatePanelId=' + updatePanelID;
		else
			ifrID.src = '/common/modules/sendEmailFE.aspx?formName=' + frmMain.name + '&title=' + title + '&from=civicalerts&moduleName=' + title + '&status=' + status + '&ItemId=' + categoryID + '&updatePanelId=' + updatePanelID;
		ifrID.style.display = 'block';
		behaviorID.show();
	}
}
function CivicAlertChangeOrder(direction, updatePanelID, alertID, categoryID) {
	var frm = document.aspnetForm;
	
	frm.strActionFE.value = "CivicAlertItemOrder";
	frm.ysnSaveFE.value = 1;
	frm.lngCivicAlertItemID.value = alertID;
	frm.lngCivicAlertCategoryID.value = categoryID;
	frm.txtOrderDirection.value = direction;
	
	raiseAsyncPostback(updatePanelID, categoryID, 0);
}

function openEditWindowNewsFlash(categoryID, itemID, isCopy, order, updatePanelID) {
	behavior = $find('editItemBehavior');
	
	if (behavior) {
		var ifr = document.getElementById('liveEditDialog');
		
		if (getCookieValue('showAddDetails') == 'true')
			ifr.style.height = '530px';
		else
			ifr.style.height = '456px';

		var url = '/common/modules/CivicAlerts/CivicAlertLiveEdit.aspx?lngCivicAlertCategoryID=' + categoryID + '&lngCivicAlertItemID=' + itemID + '&updatePanelID=' + updatePanelID + '&Order=' + order;
		
		if (isCopy)
			ifr.src = url + '&strPage=itemCopy';
		else
			ifr.src = url + '&strPage=itemForm';
		
		ifr.style.display = 'block';
		behavior.show();
	}
}

function CivicAlertSearch() {
	document.frmCivicAlertSearch.CID.value = document.aspnetForm.CID.value;
	document.frmCivicAlertSearch.searchTerms.value = document.aspnetForm.searchTerms.value;
	document.frmCivicAlertSearch.submit();
}

function DetailFormSaveFE(alertID, alertCategoryID, updatePanelID, isCopy) {
	var frm = document.frmAlertInfo;
	frm.action = 'CivicAlertLiveEdit.aspx';
	frm.frmFrontEndSave.value = 1;
	frm.ysnSave.value = 1;
	frm.CivicAlertIDFE.value = alertID;
	frm.updatePanelID.value = updatePanelID;
	frm.CivicAlertCategoryIDFE.value = alertCategoryID;
	frm.ContainerIDFE.value = alertID;
	if (isCopy == 'True') {
		var w = frm.lngCivicAlertCategoryID.selectedIndex;
		frm.lngCivicAlertCategoryIDFE.value = frm.lngCivicAlertCategoryID.options[w].value;
	}
	SaveAlertDetails();
}

//this is copy of the below method but just has code to display the notifyme
function SaveAndPublishAlertFE(alertID, alertCategoryID, updatePanelID, isCopy, title) {
	var frm = document.frmAlertInfo;
	frm.action = 'CivicAlertLiveEdit.aspx';
	frm.frmFrontEndSave.value = 1;
	frm.ysnSave.value = 1;
	frm.CivicAlertIDFE.value = alertID;
	frm.updatePanelID.value = updatePanelID;
	frm.CivicAlertCategoryIDFE.value = alertCategoryID;
	frm.ContainerIDFE.value = alertID;
	if (isCopy == 'True') {
		var w = frm.lngCivicAlertCategoryID.selectedIndex;
		frm.lngCivicAlertCategoryIDFE.value = frm.lngCivicAlertCategoryID.options[w].value;
	}
	if (CheckValues()) {
		var ysnHasNotifyMeList = hasNotifyMeList();
		if (ysnHasNotifyMeList) {
			SaveAndSendFE(title, frm.dtiBeginningDate.value);
			return false;
		}
		else {
			document.getElementById("btnCancel").disabled = true;
			try { document.getElementById("btnSaveAlertDetails").disabled = true; } catch (e) { }
			try { document.getElementById("btnSaveAndPublishAlertDetails").disabled = true; } catch (e) { }
			try { document.getElementById("btnSaveAndSubmitAlertDetails").disabled = true; } catch (e) { }
			frm.ysnPublishDetail.value = 1;
			frm.submit();
		}
	}
}

function SaveAndPublishAlertDetailsFE(alertID, alertCategoryID, updatePanelID, isCopy,ysnRadioButtonSelected) {
	var frm = document.frmAlertInfo;
	frm.action = 'CivicAlertLiveEdit.aspx';
	frm.frmFrontEndSave.value = 1;
	frm.ysnSave.value = 1;
	frm.CivicAlertIDFE.value = alertID;
	frm.updatePanelID.value = updatePanelID;
	frm.CivicAlertCategoryIDFE.value = alertCategoryID;
	frm.ContainerIDFE.value = alertID;
	if (isCopy == 'True') {
		var w = frm.lngCivicAlertCategoryID.selectedIndex;
		frm.lngCivicAlertCategoryIDFE.value = frm.lngCivicAlertCategoryID.options[w].value;
	}
	if (CheckValues()) {
		var ysnHasNotifyMeList = hasNotifyMeList();
		if (ysnHasNotifyMeList) {
			DetailFormSaveFE(alertID, alertCategoryID, updatePanelID, isCopy);
			return sendEmailFE(frm.name, ysnRadioButtonSelected, 'civicalerts', alertCategoryID, updatePanelID, true); 
		}
		else {
			document.getElementById("btnCancel").disabled = true;
			try { document.getElementById("btnSaveAlertDetails").disabled = true; } catch (e) { }
			try { document.getElementById("btnSaveAndPublishAlertDetails").disabled = true; } catch (e) { }
			try { document.getElementById("btnSaveAndSubmitAlertDetails").disabled = true; } catch (e) { }
			frm.ysnPublishDetail.value = 1;
			frm.submit();
		}
	}
}

function SaveAndSubmitAlertDetailsFE(alertID, alertCategoryID, updatePanelID, isCopy) {
	var frm = document.frmAlertInfo;
	frm.action = 'CivicAlertLiveEdit.aspx';
	frm.frmFrontEndSave.value = 1;
	frm.ysnSave.value = 1;
	frm.CivicAlertIDFE.value = alertID;
	frm.updatePanelID.value = updatePanelID;
	frm.CivicAlertCategoryIDFE.value = alertCategoryID;
	frm.ContainerIDFE.value = alertID;
	if (isCopy == 'True') {
		var w = frm.lngCivicAlertCategoryID.selectedIndex;
		frm.lngCivicAlertCategoryIDFE.value = frm.lngCivicAlertCategoryID.options[w].value;
	}
	if (CheckValues()) {
		document.getElementById("btnCancel").disabled = true;
		try { document.getElementById("btnSaveAlertDetails").disabled = true; } catch (e) { }
		try { document.getElementById("btnSaveAndSubmitAlertDetails").disabled = true; } catch (e) { }
		frm.ysnSubmitDetail.value = 1;
		frm.submit();
	}
}

// Requires DIV /w value to be placed in page (display: none). 
// For modules with JS outside of simple server-side reach.
function hasNotifyMeList() {
	var elemHNML = document.getElementById('divHasNotifyMeList');
	return (elemHNML && elemHNML.innerHTML == 'true');
}

function SaveAlertDetails() {
	if (CheckValues()) {
		document.getElementById("btnCancel").disabled = true;
		document.getElementById("btnSaveAlertDetails").disabled = true;
		try { document.getElementById("btnSaveAndPublishAlertDetails").disabled = true; } catch (e) { }
		try { document.getElementById("btnSaveAndSubmitAlertDetails").disabled = true; } catch (e) { }
		document.frmAlertInfo.submit();
	}
}

function CheckValues() {
	var objDate = new dateValidator();
	objDate.ysnAllowEqualDates = true;
	objDate.setStartDate(document.frmAlertInfo.dtiBeginningDate.value);
	objDate.ysnStartDateRequired = true;
	objDate.setEndDate(document.frmAlertInfo.dtiEndingDate.value);
	objDate.ysnEndDateRequired = true;
	
	if (!objDate.dateOrderValidate()) {
		if (objDate.error) alert(objDate.error);
		else alert("An unknown error occurred processing date information.");
		return false;
	}
	
	document.frmAlertInfo.txtTitle.value = TrimString(document.frmAlertInfo.txtTitle.value);
	
	if (FieldIsEmpty(document.frmAlertInfo.txtTitle.value)) {
		alert("Please enter a title.");
		return false;
	}
	
	if (SQLSafe(document.frmAlertInfo.txtTitle.value).length > 100) {
		alert("The title is too long.");
		return false;
	}
	
	var tmpArray = document.frmAlertInfo.txtTitle.value.split(' ');
	for (var i = 0; i < tmpArray.length; i++) {
		if (tmpArray[i].length > 30) {
			alert("The title contains more than 30 continuous characters.");
			return false;
		}
	}
	
	if (!FieldIsEmpty(document.frmAlertInfo.txtAlternateURL.value)) {
		if (isValidURL(document.frmAlertInfo.txtAlternateURL.value)) {
			if (document.frmAlertInfo.txtAlternateURL.value.length > 255) {
				alert("Alternate Link may only be 255 characters long.");
				return false;
			}
		}
		else {
			alert("All URLs must begin with /, http:// , https:// , or ftp://");
			return false;
		}
	}
	
	document.frmAlertInfo.txtBriefDescription.value = TrimString(document.frmAlertInfo.txtBriefDescription.value);
	if (MarkupText(SQLSafe(document.frmAlertInfo.txtBriefDescription.value)).length > 255) {
		alert("Brief Description may only be 255 characters long.");
		return false;
	}
	
	return true;
}

// Returns true if the string is empty.
function FieldIsEmpty(strInput) {
	return (strInput.replace(/^\s+/g, "")).replace(/\s+$/g, "").length == 0;
}

// Returns true if it is a valid relative or absolute URL.
function isValidURL(strInput) {
	strInput = TrimString(strInput);
	
	if (FieldIsEmpty(strInput))
		return false;
	
	strInput = strInput.toLowerCase();
	
	return (((strInput.substr(0, 1) == '/') && (strInput.length > 1)) ||
		((strInput.substr(0, 6) == 'ftp://') && (strInput.length > 6)) ||
		((strInput.substr(0, 7) == 'http://') && (strInput.length > 7)) ||
		((strInput.substr(0, 8) == 'https://') && (strInput.length > 8)));
}

function MarkupText(strInput) {
	return strInput.replace(/\n\n/g, "<P>").replace(/\n/g, "<BR>")
}

function publishItemFE(ysnSend, ysnSendAtStart, ysnSendBeforeDays) {
	var frmAAF = document.frmAlertInfo;
	
	try { document.getElementById("btnCancel").disabled = true; } catch (e) { }
	try { document.getElementById("btnSaveAlertDetails").disabled = true; } catch (e) { }
	try { document.getElementById("btnSaveAndPublishAlertDetails").disabled = true; } catch (e) { }
	
	frmAAF.ysnSave.value = 1;
	frmAAF.ysnSend.value = ysnSend;
	frmAAF.ysnSendAtStart.value = ysnSendAtStart;
	frmAAF.ysnSendBeforeDays.value = ysnSendBeforeDays;
	
	if (frmAAF == document.frmAlertInfo)
		frmAAF.ysnPublishDetail.value = 1;
	else
		frmAAF.strPage.value = "CivicAlertItemPublish";
	
	frmAAF.submit();
}

// ==== NEW CODE BELOW =====

// Live edit related:
if (!window.NEWSLE) {
	NEWSLE = function() { };
	window.NEWSLE = NEWSLE;
}

function raiseAsyncPostback(updatePanelID, categoryID, closePopUp) {

	if (closePopUp)
		closeModalDialog('editItemBehavior');
	
	blockMenuSpawn = true;
	newsItemHideMenu();
	newsCategoryHideMenu();
	
	__doPostBack(updatePanelID, categoryID);
}

function newsActionsInit() {
	// Set up state variables (they change per item).
	NEWSLE.updatePanelID = '';
	NEWSLE.itemID = 0;
	NEWSLE.categoryID = 0;
	NEWSLE.counter = 0;
	NEWSLE.order = 0;
	NEWSLE.status = 0;
	NEWSLE.rights = 0;
	NEWSLE.startDate = '';
	
	// Get invisible bullpen (where hidden stuff is stored).
	NEWSLE.elemLiveEditBullpen = $get('newsLiveEditBullpen');
	
	// Set up KAM tooltip.
	NEWSLE.elemTooltip = $get('newsLiveEditToolTip');
	if (!showToolTip)
		NEWSLE.elemTooltip.style.display = 'none';
	
	// Set up category action menu.
	NEWSLE.elemCatMenu = $get('newsCategoryLiveEditMoreActions');
	
	NEWSLE.elemCatActionNew = $get('newsCategoryNewItem');
	hookAnchorClick(NEWSLE.elemCatActionNew,
		function(sender, eventArgs) {
			newsCategoryHideMenu();
			var updatePanel = (NEWSLE.updatePanelID + '').trim();

			if (updatePanel == 'search' || updatePanel == '')
				openEditWindowNewsFlash(NEWSLE.categoryID, 0, 1, 0, 'search');
			else
				openEditWindowNewsFlash(NEWSLE.categoryID, 0, 0, 0, NEWSLE.updatePanelID);
		});
	
	// Set up item action menu.
	NEWSLE.elemItemMenu = $get('newsItemLiveEditMoreActions');
	NEWSLE.elemItemMoveHeading = $get('newsItemMoveHeading');
	NEWSLE.elemItemActionMoveUpIcon = $get('newsItemMoveUpIcon');
	NEWSLE.elemItemActionMoveDownIcon = $get('newsItemMoveDownIcon');
	NEWSLE.elemItemActionModify = $get('newsItemModify');
	NEWSLE.elemItemActionCommands = $get('newsItemCommands');
	hookAnchorClick(NEWSLE.elemItemActionModify,
		function(sender, eventArgs) {
			if (!NEWSLE.elemItemActionModify.inactive) {
				newsItemHideMenu();
				openEditWindowNewsFlash(NEWSLE.categoryID, NEWSLE.itemID, 0, -1, NEWSLE.updatePanelID);
			}
		});
	
	NEWSLE.elemItemActionMoveUp = $get('newsItemMoveUp');
	hookAnchorClick(NEWSLE.elemItemActionMoveUp,
		function(sender, eventArgs) {
			if (!NEWSLE.elemItemActionMoveUp.inactive) {
				newsItemHideMenu();
				CivicAlertChangeOrder('up', NEWSLE.updatePanelID, NEWSLE.itemID, NEWSLE.categoryID);
			}
		});
	
	NEWSLE.elemItemActionMoveDown = $get('newsItemMoveDown');
	hookAnchorClick(NEWSLE.elemItemActionMoveDown,
		function(sender, eventArgs) {
			if (!NEWSLE.elemItemActionMoveDown.inactive) {
				newsItemHideMenu();
				CivicAlertChangeOrder('down', NEWSLE.updatePanelID, NEWSLE.itemID, NEWSLE.categoryID);
			}
		});
	
	var curDate = new Date();
	var startDate = new Date(NEWSLE.startDate);
	if (startDate > curDate);
		NEWSLE.status = 'pending';
	
	NEWSLE.elemItemActionCopyLink = $get('newsItemCopyLink');
	hookAnchorClick(NEWSLE.elemItemActionCopyLink,
		function(sender, eventArgs) {
	CivicAlertItemActions(sender, 'Link', NEWSLE.updatePanelID, NEWSLE.itemID, NEWSLE.categoryID, NEWSLE.status);
		});
	
	NEWSLE.elemItemActionUnpublish = $get('newsItemUnpublish');
	hookAnchorClick(NEWSLE.elemItemActionUnpublish,
		function(sender, eventArgs) {
			newsItemHideMenu();
			CivicAlertItemActions(sender, 'Unpublish', NEWSLE.updatePanelID, NEWSLE.itemID, NEWSLE.categoryID, NEWSLE.status);
		});
	
	NEWSLE.elemItemActionPublish = $get('newsItemPublish');
	hookAnchorClick(NEWSLE.elemItemActionPublish,
		function(sender, eventArgs) {
			newsItemHideMenu();
			CivicAlertItemActions(sender, 'Publish', NEWSLE.updatePanelID, NEWSLE.itemID, NEWSLE.categoryID, NEWSLE.status);
		});
	
	NEWSLE.elemItemActionSubmit = $get('newsItemSubmit');
	hookAnchorClick(NEWSLE.elemItemActionSubmit,
		function(sender, eventArgs) {
			newsItemHideMenu();
			CivicAlertItemActions(sender, 'Submit', NEWSLE.updatePanelID, NEWSLE.itemID, NEWSLE.categoryID, NEWSLE.status);
		});
	
	NEWSLE.elemItemActionCopy = $get('newsItemCopy');
	hookAnchorClick(NEWSLE.elemItemActionCopy,
		function(sender, eventArgs) {
			newsItemHideMenu();
			
			if (NEWSLE.counter > 0)
				openEditWindowNewsFlash(NEWSLE.categoryID, NEWSLE.itemID, 1, -1, 'copy');
			else
				openEditWindowNewsFlash(NEWSLE.categoryID, NEWSLE.itemID, 1, -1, 'search');
		});
	
	NEWSLE.elemItemActionArchive = $get('newsItemArchive');
	hookAnchorClick(NEWSLE.elemItemActionArchive,
		function(sender, eventArgs) {
			newsItemHideMenu();
			CivicAlertItemActions(sender, 'ArchiveHidden', NEWSLE.updatePanelID, NEWSLE.itemID, NEWSLE.categoryID, NEWSLE.status);
		});
	
	NEWSLE.elemItemActionDelete = $get('newsItemDelete');
	hookAnchorClick(NEWSLE.elemItemActionDelete,
		function(sender, eventArgs) {
			newsItemHideMenu();
			CivicAlertItemActions(sender, 'Delete', NEWSLE.updatePanelID, NEWSLE.itemID, NEWSLE.categoryID, NEWSLE.status);
		});
	
	NEWSLE.elemItemActionNewAnchor = $get('newsItemNewItemAnchor');
	NEWSLE.elemItemActionNew = $get('newsItemNewItem');
	hookAnchorClick(NEWSLE.elemItemActionNew,
		function(sender, eventArgs) {
			if (!NEWSLE.elemItemActionNew.inactive) {
				newsItemHideMenu();
				openEditWindowNewsFlash(NEWSLE.categoryID, 0, 0, NEWSLE.order, NEWSLE.updatePanelID);
			}
		});
	
	NEWSLE.elemItemActionReject = $get('newsItemReject');
	hookAnchorClick(NEWSLE.elemItemActionReject,
		function(sender, eventArgs) {
			newsItemHideMenu();
			CivicAlertItemActions(sender, 'Reject', NEWSLE.updatePanelID, NEWSLE.itemID, NEWSLE.categoryID, NEWSLE.status);
		});
}

function newsCategoryHideMenu() {
	var categoryID = NEWSLE.categoryID;
	var controlID = 'LiveEditControl_' + categoryID;
	var liveEditControl = $get(controlID);
	
	if (!liveEditControl)
		return;
	
	// Change z-index, for proper display.
	var parentContainer = resolveLiveEditContainer(liveEditControl);
	parentContainer.style.zIndex = 0;
	
	// Hide any possibly visible tool-tip.
	newsHideTooltip(controlID);
	
	// Hide KAM unless KAMs are set to always show.
	if (!showLiveEditControls)
		liveEditControl.style.display = 'none';
	
	// Hide action menu for category.
	NEWSLE.elemCatMenu.style.display = 'none';
	
	if (NEWSLE.elemCatMenu.parentNode) {
		NEWSLE.elemCatMenu.parentNode.removeChild(NEWSLE.elemCatMenu);
		NEWSLE.elemLiveEditBullpen.appendChild(NEWSLE.elemCatMenu);
	}
}

function newsItemHideMenu() {
	var itemID = NEWSLE.itemID;
	var controlID = 'LiveEditControl' + itemID;
	var liveEditControl = $get(controlID);
	
	if (!liveEditControl)
		return;
	
	// Change z-index, for proper display.
	var parentContainer = resolveLiveEditContainer(liveEditControl);
	parentContainer.style.zIndex = 0;
	
	// Hide action menu for item.
	NEWSLE.elemItemMenu.style.display = 'none';
	
	if (NEWSLE.elemItemMenu.parentNode) {
		NEWSLE.elemItemMenu.parentNode.removeChild(NEWSLE.elemItemMenu);
		NEWSLE.elemLiveEditBullpen.appendChild(NEWSLE.elemItemMenu);
	}
	
	// Hide any possibly visible tool-tip.
	newsHideTooltip(controlID);
	
	// Hide KAM unless KAMs are set to always show.
	if (!showLiveEditControls)
		liveEditControl.style.display = 'none';
}

function newsItemMouseOver(sender, event, itemID) {
	if (blockMenuSpawn)
		return;
	
	NEWSLE.itemID = itemID;
	var controlID = 'LiveEditControl' + itemID;
	var liveEditControl = $get(controlID);
	
	// Make sure previous KAMs are hidden if they need to be.
	if (!showLiveEditControls) {
		if (previousKAMControl)
			previousKAMControl.style.display = 'none';
		previousKAMControl = liveEditControl;
	}
	
	// Change z-index, for proper display.
	var parentContainer = resolveLiveEditContainer(liveEditControl);
	parentContainer.style.zIndex = 2;
	
	// Move action category menu to container for category.
	liveEditControl.appendChild(NEWSLE.elemItemMenu);
	
	// Show tool-tip (if they are not disabled).
	newsShowTooltip(controlID);
	
	// Show KAM.
	liveEditControl.style.display = 'block';
}

function newsItemMouseOut(sender, event) {
	// Ignore when mouse leaves child controls within the live edit control.
	event = (window.event ? window.event : event);
	var toElement = (event.toElement ? event.toElement : event.relatedTarget);
	
	if (!elemInsideOrEq(sender, toElement))
		newsItemHideMenu();
}

function newsCategoryMouseOver(sender, event, categoryID) {
	if (blockMenuSpawn)
		return;
	
	NEWSLE.categoryID = categoryID;
	var controlID = 'LiveEditControl_' + categoryID;
	var liveEditControl = $get(controlID);
	
	// Make sure previous KAMs are hidden if they need to be.
	if (!showLiveEditControls) {
		if (previousKAMControl)
			previousKAMControl.style.display = 'none';
		previousKAMControl = liveEditControl;
	}
	
	// Move action category menu to container for category.
	liveEditControl.appendChild(NEWSLE.elemCatMenu);
	
	// Change z-index, for proper display.
	var parentContainer = resolveLiveEditContainer(liveEditControl);
	parentContainer.style.zIndex = 2;
	
	// Show tool-tip (if they are not disabled).
	newsShowTooltip(controlID);
	
	// Show KAM.
	liveEditControl.style.display = 'block';
}

function newsCategoryMouseOut(sender, event) {
	// Ignore when mouse leaves child controls within the live edit control.
	event = (window.event ? window.event : event);
	var toElement = (event.toElement ? event.toElement : event.relatedTarget);
	
	if (!elemInsideOrEq(sender, toElement))
		newsCategoryHideMenu();
}

// Hides tool-tip text for a category.
function newsHideTooltip(controlID) {
	var liveEditControl = $get(controlID);
	
	if (NEWSLE.elemTooltip.parentNode)
		NEWSLE.elemTooltip.parentNode.removeChild(NEWSLE.elemTooltip);
	
	NEWSLE.elemTooltip.style.display = 'none';
}

// Shows tool-tip text for a category (if enabled).
function newsShowTooltip(controlID) {
	var liveEditControl = $get(controlID);
	liveEditControl.appendChild(NEWSLE.elemTooltip);
	
	if (NEWSLE.elemTooltip) {
		if (showToolTip)
			NEWSLE.elemTooltip.style.display = 'block';
		else
			NEWSLE.elemTooltip.style.display = 'none';
	}
}

// Summons action menu for a category.
function newsActionsCategory(categoryID, catElemID, updatePanelID, status, rights) {
	NEWSLE.updatePanelID = updatePanelID;
	NEWSLE.itemID = 0;
	NEWSLE.categoryID = categoryID;
	NEWSLE.counter = 0;
	NEWSLE.status = status;
	NEWSLE.rights = rights;
	
	liveEditCommonCategory(
		$get(catElemID),
		NEWSLE.elemTooltip,
		NEWSLE.elemCatMenu,
		$get('LiveEditControl_' + categoryID),'newsCategoryLiveEditMoreActions');
}

// Summons action menu for an item.
function newsActionsItem(itemID, updatePanelID, categoryID, order, counter, status, rights, lastItem) {
	NEWSLE.updatePanelID = updatePanelID;
	NEWSLE.categoryID = categoryID;
	NEWSLE.itemID = itemID;
	NEWSLE.counter = counter;
	NEWSLE.order = order;
	NEWSLE.status = status;
	NEWSLE.rights = rights;
	NEWSLE.lastItem = lastItem;
	
	// Determine if modify is available.
	if (rights >= PUBLISHER || rights == AUTHOR && status < MIN_PUBLISHED) {
		NEWSLE.elemItemActionModify.className = 'big modify';
		NEWSLE.elemItemActionModify.title = '';
		NEWSLE.elemItemActionModify.inactive = false;
	}
	else {
		NEWSLE.elemItemActionModify.className = 'big modify inactive';
		NEWSLE.elemItemActionModify.title = 'You do not have rights to modify this item.'
		NEWSLE.elemItemActionModify.inactive = true;
	}

	// Determine if move is available and how it should display.
	var MOVE_ACTIVE_UP = '/App_Themes/CP/Images/IconMoveUp.png';
	var MOVE_ACTIVE_DOWN = '/App_Themes/CP/Images/IconMoveDown.png';
	var MOVE_INACTIVE_UP = '/App_Themes/CP/Images/IconMoveUpInactive.png';
	var MOVE_INACTIVE_DOWN = '/App_Themes/CP/Images/IconMoveDownInactive.png';

	var moveDisplay = (rights > AUTHOR ? 'inline' : 'none')
	NEWSLE.elemItemMoveHeading.style.display = moveDisplay;
	NEWSLE.elemItemActionMoveUp.style.display = moveDisplay;
	NEWSLE.elemItemActionMoveDown.style.display = moveDisplay;

	var moveText;
	if (rights > AUTHOR) {
		if (counter < 0) {
			NEWSLE.elemItemActionMoveUp.className = 'moveUp inactive';
			NEWSLE.elemItemActionMoveUp.inactive = true;
			NEWSLE.elemItemActionMoveDown.className = 'moveDown inactive';
			NEWSLE.elemItemActionMoveDown.inactive = true;

			switch (counter) {
				case -2: // Feature Area
					moveText = 'Can only move items from module page.'
					break;
				default: // Search Screen
					moveText = 'Can\'t move items on the search page.';
					break;
			}

			NEWSLE.elemItemActionMoveUpIcon.src = MOVE_INACTIVE_UP;
			NEWSLE.elemItemActionMoveDownIcon.src = MOVE_INACTIVE_DOWN;
			NEWSLE.elemItemActionMoveUpIcon.title = moveText;
			NEWSLE.elemItemActionMoveUpIcon.alt = moveText;
			NEWSLE.elemItemActionMoveDownIcon.title = moveText;
			NEWSLE.elemItemActionMoveDownIcon.alt = moveText;
		}
		else {
			if (counter == 1) {
				moveText = 'This item is first in the list and can\'t be moved any higher.';
				NEWSLE.elemItemActionMoveUpIcon.src = MOVE_INACTIVE_UP;
				NEWSLE.elemItemActionMoveUp.className = 'moveUp inactive';
				NEWSLE.elemItemActionMoveUp.alt = 'This item is first in the list and can\'t be moved any higher.';
				NEWSLE.elemItemActionMoveUp.inactive = true;
			}
			else {
				moveText = 'Move Up';
				NEWSLE.elemItemActionMoveUpIcon.src = MOVE_ACTIVE_UP;
				NEWSLE.elemItemActionMoveUp.className = 'moveUp';
				NEWSLE.elemItemActionMoveUp.inactive = false;
			}

			NEWSLE.elemItemActionMoveUpIcon.title = moveText;
			NEWSLE.elemItemActionMoveUpIcon.alt = moveText;

			if (lastItem) {
				moveText = 'This item is last in the list and can\'t be moved any lower.';
				NEWSLE.elemItemActionMoveDownIcon.src = MOVE_INACTIVE_DOWN;
				NEWSLE.elemItemActionMoveDown.className = 'moveDown inactive';
				NEWSLE.elemItemActionMoveDown.inactive = true;
			}
			else {
				moveText = 'Move Down';
				NEWSLE.elemItemActionMoveDownIcon.src = MOVE_ACTIVE_DOWN;
				NEWSLE.elemItemActionMoveDown.className = 'moveDown';
				NEWSLE.elemItemActionMoveDown.inactive = false;
			}

			NEWSLE.elemItemActionMoveDownIcon.title = moveText;
			NEWSLE.elemItemActionMoveDownIcon.alt = moveText;
		}
	}

	// Determine visiblity of submit/reject/publish/unpublish.
	NEWSLE.elemItemActionSubmit.style.display = 'none';
	NEWSLE.elemItemActionReject.style.display = 'none';
	NEWSLE.elemItemActionPublish.style.display = 'none';
	NEWSLE.elemItemActionUnpublish.style.display = 'none';

	if (rights > AUTHOR) {
		if (status > MAX_DRAFT)
			NEWSLE.elemItemActionUnpublish.style.display = '';
		else
			NEWSLE.elemItemActionPublish.style.display = '';

		if (status == SUBMITTED)
			NEWSLE.elemItemActionReject.style.display = '';
	}
	else if (status != SUBMITTED && status <= MAX_DRAFT)
		NEWSLE.elemItemActionSubmit.style.display = '';

	// Determine visiblity of delete/archive.
	NEWSLE.elemItemActionArchive.style.display = 'none';
	NEWSLE.elemItemActionDelete.style.display = 'none';

	if (rights > AUTHOR) {
		// Only publisher or higher can delete.
		if (status > MAX_DRAFT)
			NEWSLE.elemItemActionArchive.style.display = '';
		else
			NEWSLE.elemItemActionDelete.style.display = '';
	}
	else if (status <= MAX_DRAFT)
		NEWSLE.elemItemActionDelete.style.display = '';

	// Determine visiblity/behavior of new.
	if (counter > 0) {
		if (rights >= AUTHOR) {
			NEWSLE.elemItemActionNew.style.display = '';
			NEWSLE.elemItemActionNewAnchor.title = '';
			NEWSLE.elemItemActionNewAnchor.className = 'addItem';
			NEWSLE.elemItemActionNew.inactive = false;
		}
		else
			NEWSLE.elemItemActionNew.style.display = 'none';
	}
	else if (counter > -2) {
		NEWSLE.elemItemActionNew.style.display = '';
		NEWSLE.elemItemActionNewAnchor.title = 'You cannot add item on search screen.';
		NEWSLE.elemItemActionNewAnchor.className = 'addItem inactive';
		NEWSLE.elemItemActionNew.inactive = true;
	}
	else
		NEWSLE.elemItemActionNew.style.display = 'none';

	// Apply even/odd classes.
	var listItems = NEWSLE.elemItemActionCommands.firstChild;
	var lc = 0;

	while (listItems != null) {
		if (listItems.nodeType == 1 && listItems.style.display != 'none')
			listItems.className = (((++lc) % 2) == 0 ? 'even' : '');
		listItems = listItems.nextSibling;
	}

	// Show menu.
	liveEditCommonItem(
		NEWSLE.elemTooltip,
		NEWSLE.elemItemMenu,
		$get('LiveEditControl' + itemID),'newsItemLiveEditMoreActions',false);
}