var objItemTab = null;
var objPropertiesTab = null;

var objItem = null;
var objProperties = null;
var objOtherProperties = null;


//------------------------------------------------------------------------------
// handleRetraction
//------------------------------------------------------------------------------
function handleRetraction(e,type)
{
	if( type == 0 )
	{
		baseURL = baseURL + "&Item.Retract=&Url.Item.Deleted=";
	}
	else
	{
		baseURL = baseURL + "&Item.RetractAll=&Url.Item.Deleted=";
	}

	window.location.href=baseURL + "&action=Item.Action&merge=msgitem";
}

//------------------------------------------------------------------------------
// updateAndClose
//------------------------------------------------------------------------------
function updateAndClose()
{
		updateMessageListDelay(inc_folderId);
		self.setTimeout( 'self.close()', 500 );		
}

//------------------------------------------------------------------------------
// updateMessageListDelay
//------------------------------------------------------------------------------
function updateMessageListDelay(inc_folderId)
{
	self.setTimeout( 'updateMessageList(inc_folderId,0)', 400 );
}

//------------------------------------------------------------------------------
// showReplyPopupMenu
//------------------------------------------------------------------------------
function showReplyPopupMenu(e,flag)
{
	var objReplyPopupMenu = document.getElementById( "idReplyPopupMenu" );
	var objToolbarButton = document.getElementById( "id" +  inc_replyDefaultId );
	
	if( flag )
	{
		var posX = getOffsetLeft(objToolbarButton);
		setXPosition( objReplyPopupMenu, posX );
	
		// Make sure other pop ups are closed before displaying this one
		closePopupMenus(e)
		
		objReplyPopupMenu.style.top = getOffsetTop(objToolbarButton) + objToolbarButton.offsetHeight + "px";
		objReplyPopupMenu.style.visibility = "visible";
		objReplyPopupMenu.style.display = "block";
	}
	else
	{
		objReplyPopupMenu.style.visibility = "hidden";
		objReplyPopupMenu.style.display = "none";
	}
	
	if( window.event )
	{
		window.event.cancelBubble = true;
	}
	else
	{
		e.stopPropagation();
	}
	
	return false;
}



//------------------------------------------------------------------------------
// showResendPopupMenu
//------------------------------------------------------------------------------
function showResendPopupMenu(e,flag)
{
	var objResendPopupMenu = document.getElementById( "idResendPopupMenu" );
	var objToolbarButton = document.getElementById( "id" +  inc_resendDefaultId );
	
	if( objResendPopupMenu == null )
		return;
	
	if( flag )
	{
		var posX = getOffsetLeft(objToolbarButton) + 10;
		setXPosition( objResendPopupMenu, posX );

		// Make sure other pop ups are closed before displaying this one
		closePopupMenus(e)
		
		objResendPopupMenu.style.top = getOffsetTop(objToolbarButton) + objToolbarButton.offsetHeight + "px";
		objResendPopupMenu.style.visibility = "visible";
		objResendPopupMenu.style.display = "block";
	}
	else
	{
		objResendPopupMenu.style.visibility = "hidden";
		objResendPopupMenu.style.display = "none";
	}

	if( window.event )
	{
		window.event.cancelBubble = true;
	}
	else
	{
		e.stopPropagation();
	}
	
	return false;

}	// showResendPopupMenu


//------------------------------------------------------------------------------
// showRetractPopupMenu
//------------------------------------------------------------------------------
function showRetractPopupMenu(e,flag)
{
	var objRetractPopupMenu = document.getElementById( "idRetractPopupMenu" );
	var objToolbarButton = document.getElementById( "id" + inc_retractDefaultId );
	
	if( flag )
	{
		var posX = getOffsetLeft(objToolbarButton);
		setXPosition( objRetractPopupMenu, posX );
		
		// Make sure other pop ups are closed before displaying this one
		closePopupMenus(e)
		
		objRetractPopupMenu.style.top = getOffsetTop(objToolbarButton) + objToolbarButton.offsetHeight + "px";
		objRetractPopupMenu.style.visibility = "visible";
		objRetractPopupMenu.style.display = "block";
	}
	else
	{
		objRetractPopupMenu.style.visibility = "hidden";
		objRetractPopupMenu.style.display = "none";
	}
	
	if( window.event )
	{
		window.event.cancelBubble = true;
	}
	else
	{
		e.stopPropagation();
	}
	
	return false;
}

//------------------------------------------------------------------------------
// selectTab
//------------------------------------------------------------------------------
function selectTab(tab, obj)
{
	if( tab != null && obj != null )
	{
		tab.className = "tab_active";
		obj.style.visibility = "visible";
		obj.style.display = "block";
	}
}

//------------------------------------------------------------------------------
// deselectTab
//------------------------------------------------------------------------------
function deselectTab(tab, obj)
{
	if( tab != null && obj != null )
	{
		tab.className = "tab_inactive";
		obj.style.visibility = "hidden";
		obj.style.display = "none";
	}
}

//------------------------------------------------------------------------------
// handleTabSelection
//------------------------------------------------------------------------------
function handleTabSelection(e)
{
	var eventSrc = getEventSrc(e);

	if( eventSrc == objPropertiesTab )
	{
		deselectTab(objItemTab, objItem);
		selectTab(objPropertiesTab, objProperties);
	}
	else
	{
		selectTab(objItemTab, objItem);
		deselectTab(objPropertiesTab, objProperties);
	}
}

//------------------------------------------------------------------------------
// fixIFrameHeight
//------------------------------------------------------------------------------
function fixIFrameHeight()
{
	var messageBody = document.getElementById( "idMsgBody" );
	if( messageBody )
	{
		messageBody.style.height = document.documentElement.clientHeight - messageBody.offsetTop - 30 + "px";
	}
}

//------------------------------------------------------------------------------
// closeWindow
//------------------------------------------------------------------------------
function closeWindow(e)
{
	var thisEvent = ( e != null ) ? e : window.event;

	//Close this window when <ESCAPE> key is hit		
	if( thisEvent.keyCode==27 )
	{
		self.close();
	}
}

//------------------------------------------------------------------------------
// closePopupMenus
//------------------------------------------------------------------------------
function closePopupMenus(e)
{
	var thisEvent = ( window.event ) ? window.event : e;

	//KPALAGIRI: Fix this for Linux
	if( inc_browserName == "FIREFOX" && inc_browserOS == "Linux" && thisEvent.button == "2" )
	{
		return true;
	}
		
	showReplyPopupMenu(e,0,null);
	showRetractPopupMenu(e,0,null);
	showResendPopupMenu(e,0,null);

	return true;
}

//------------------------------------------------------------------------------
// initHandlers
//------------------------------------------------------------------------------
function initHandlers(e)
{
	if( inc_bUpdateAndClose )
	{
		updateAndClose();
	}
	else
	{
		for( var i = 1; i <= ACT_LAST_DEFINED; i++ )
		{
			var id = "id" + i;
			var obj = document.getElementById( id ); 

			if( obj )
			{
				obj.onclick = handleClick;
			}
		}
		
		objItemTab = document.getElementById( 'idItemTab' );
		objPropertiesTab = document.getElementById( 'idPropertiesTab' );
		
		objItem = document.getElementById( 'idItemBody' );
		objProperties = document.getElementById( 'idPropBody' );
		objOtherProperties = document.getElementById( 'idOtherPropBody' );

		if( inc_tab == 1 )
		{
			selectTab(objPropertiesTab, objProperties);
			deselectTab(objItemTab, objItem);
		}
		else if( inc_tab == 2 )
		{
			selectTab(objPropertiesTab, objOtherProperties);
			deselectTab(objItemTab, objItem);
		}
		else
		{
			selectTab(objItemTab, objItem);
			deselectTab(objPropertiesTab, objProperties);
		}
		
		fixIFrameHeight();
		
		if( inc_browserName != "FIREFOX" )
		{
			self.onresize = fixIFrameHeight;
		}
		
		window.focus();
	}
}


//------------------------------------------------------------------------------
// handleClick
//------------------------------------------------------------------------------
function handleClick(e)
{
	var eventSrc = getEventSrc(e);

	//KPALAGIRI: Fix for IE as it returns the IMG element when clicked upon instead of its parent element.			
	if( eventSrc.tagName == "TD" || eventSrc.tagName == "IMG" )
	{
		eventSrc = eventSrc.parentElement;
	}
	
	var type = eventSrc.id.substr(2);
	baseURL = homeURL + "?User.context=" + userContext + inc_providerString + "Item.drn=" + inc_itemDRN + inc_urlFolderType + inc_urlFolderRightsPost + inc_urlFolderRightsDelete;

	if( type == ACT_CLOSE )
	{
		handleClose();
	}
	else if( type == ACT_PREVIOUS )
	{
		window.location.href =  baseURL + "&action=Item.Action&merge=msgitem&Item.Previous=";
	}
	else if( type == ACT_NEXT )
	{
		window.location.href =  baseURL + "&action=Item.Action&merge=msgitem&Item.Next=";
	}
	else if( type == ACT_REPLY_DEFAULT )
	{
		handleReply( e, "sender" );
	}
	else if( type == ACT_REPLY )
	{
		var objReplyPopupMenu = document.getElementById( "idReplyPopupMenu" );
		
		//TODO: We probably should get rid of this first check here. Its just a 'fix'
		if( objReplyPopupMenu.style.visibility == "" || objReplyPopupMenu.style.visibility == "hidden" )
		{
			return showReplyPopupMenu(e, 1);
		}
		else
		{
			return showReplyPopupMenu(e, 0);
		}
	}
	else if( type == ACT_RESEND_ADT )
	{
		var objResendPopupMenu = document.getElementById( "idResendPopupMenu" );

		//TODO: We probably should get rid of this first check here. Its just a 'fix'
		if( objResendPopupMenu.style.visibility == "" || objResendPopupMenu.style.visibility == "hidden" )
		{
			return showResendPopupMenu(e, 1);
		}
		else
		{
			return showResendPopupMenu(e, 0);
		}
	}
	else if( type == ACT_RESEND_ADT_ONE)
	{
		handleResend( e, ACT_RESEND_ADT_ONE );
	}
	else if( type == ACT_RESEND_ADT_ALL)
	{
		handleResend( e, ACT_RESEND_ADT_ALL );
	}
	else if( type == ACT_REPLY_SENDER)
	{
		handleReply( e, "sender", 0 );
	}
	else if( type == ACT_REPLY_SENDER_MESSAGE)
	{
		handleReply( e, "sender" );
	}
	else if( type == ACT_REPLY_ALL)
	{
		handleReply( e, "all", 0 );
	}
	else if( type == ACT_REPLY_ALL_MESSAGE)
	{
		handleReply( e, "all" );
	}
	else if ( type == ACT_FORWARD )
	{
		popoutComposeEx( baseURL + "&action=Compose.Action&merge=xsend&Item.Enclosure.id=" + inc_itemDRN + "&Url.Enclosure.type=forward", "_blank" );
	}
	else if ( type == ACT_RESEND )
	{
		popoutComposeEx( baseURL + "&action=Item.Resend&merge=xsend&Item.drn=" + inc_itemDRN, "_blank" );
	}
	else if ( type == ACT_MOVE )
	{
		window.location.href = baseURL + "&action=Folder.List&Move=&Url.Item.Moved=&merge=fldrmove" + inc_updateMessageList;
	}
	else if( type == ACT_DELETE )
	{
		var deleteURL =  baseURL + "&action=Item.Action&Item.Delete.Next=&Item.Delete=&Url.Item.Deleted=&merge=msgitem";

		if( inc_itemRR == "1" )
		{
			if( confirm( inc_replyRequestedWarning ) )
			{
				window.location.href =  deleteURL;
			}
		}
		else
		{
			window.location.href =  deleteURL;
		}

		updateAndClose();
	}
	else if( type == ACT_RETRACT)
	{
		var objRetractPopupMenu = document.getElementById( "idRetractPopupMenu" );
		
		//TODO: We probably should get rid of this first check here. Its just a 'fix'
		if( objRetractPopupMenu.style.visibility == "" || objRetractPopupMenu.style.visibility == "hidden" )
		{
			return showRetractPopupMenu(e, 1);
		}
		else
		{
			return showRetractPopupMenu(e, 0);
		}
	}
	else if( type == ACT_RETRACT_DEFAULT)
	{
		handleRetraction( e, 0 );
	}
	else if( type == ACT_RETRACT_THIS_MAILBOX)
	{
		handleRetraction( e, 0 );
	}
	else if( type == ACT_RETRACT_ALL_MAILBOX)
	{
		handleRetraction( e, "All" );
	}
	else if( type == ACT_UNDELETE)
	{
		window.location.href =  baseURL + "&action=Item.Action&Item.Undelete=&merge=msgitem&Url.Item.Undelete=";
		updateAndClose();
	}
	else if( type == ACT_PURGE)
	{
		window.location.href =  baseURL + "&action=Item.Action&Item.Purge=&merge=msgitem&Url.Item.Purged=";
		updateAndClose();
	}
	else if( type == ACT_ACCEPT_PAB )
	{
		//window.location.href =  homeURL + "?User.context=" + userContext + inc_providerString + "action=Item.AcceptSharedAddressBook" + inc_updateMessageList + "&Item.drn=" + inc_itemDRN + "&Url.Item.Accepted=&merge=msgitem";
		window.location.href =  baseURL + "&action=Item.AcceptSharedAddressBook&Url.Item.Accepted=&merge=msgitem" + inc_updateMessageList ;
	}
	else if( type == ACT_ACCEPT_FOLDER )
	{
		window.location.href =  baseURL + "&Url.Item.drn=" + inc_itemDRN + "&action=Folder.List" + inc_updateMessageList + "&Url.Folder.accept=1&Url.Folder.newName=" + inc_newFolderName + "&merge=fldrmgmt";
	}
	else if( type == ACT_ACCEPT )
	{
		window.location.href = baseURL + "&action=Item.Action&Item.Read=&Url.Item.Accept=&merge=msgaction";
	}
	else if( type == ACT_DECLINE )
	{
		window.location.href = baseURL + "&action=Item.Action&Item.Read=&Url.Item.Decline=&merge=msgaction";
	}
	else if( type == ACT_COMPLETE )
	{
		window.location.href = baseURL + "&action=Item.Action" + inc_updateMessageList + "&Item.Read=&Url.Item.Complete=&merge=msgaction";
	}
	else if( type == ACT_DELEGATE )
	{
		popoutComposeEx( baseURL + "&action=Compose.Action" + inc_updateMessageList + "&Item.Enclosure.id=" + inc_itemDRN + "&Url.Enclosure.type=delegate&merge=xsend" ) ;
	}
	else if( type == ACT_READLATER)
	{
		window.location.href = baseURL + "&action=Item.Action&Item.ReadLater=&Url.Item.ReadLater=&merge=msgitem";

		updateAndClose();
	}
	else if( type == ACT_VIEW_OTHERPROPERTIES )
	{
		//window.location.href =  homeURL + "?action=Item.Action&Item.Properties.ReadInfo=" + inc_providerString + "&User.context=" + userContext + inc_updateMessageList + "&Item.drn=" + inc_itemDRN + "&merge=msgitem" + inc_urlFolderType + inc_urlFolderRightsPost + inc_urlFolderRightsDelete + "&tab=2";
		window.location.href =  baseURL + "&action=Item.Action&Item.Properties.ReadInfo=" + inc_updateMessageList + "&merge=msgitem&tab=2";
	}
	else if( type == ACT_READITEM )
	{
		//window.location.href = homeURL + "?action=Item.Read&User.context=" + userContext + "&Item.drn=" + inc_itemDRN + inc_urlFolderType + "&Folder.name=" + inc_folderName  + "&Folder.id=" + inc_folderId + "&merge=msgitem" + inc_findUpdateList + "&tab=0";
		window.location.href = baseURL + "&action=Item.Read&" + "&Folder.name=" + inc_folderName  + "&Folder.id=" + inc_folderId + "&merge=msgitem" + inc_findUpdateList + "&tab=0";
	}
	else if( type == ACT_CHECKLIST)
	{
		window.location.href = baseURL + "&merge=chklist" + inc_checklistDueDate + inc_checklistCompleted + inc_itemEndDate + "&Item.type=&Url.Item.drn=" + inc_itemDRN;
	}
	else if( type == ACT_PRINT)
	{
		if( inc_urlEnvelope == true )
		{
			//var sURL = homeURL + "?User.context=" + userContext + inc_providerString + "&action=Item.ReadChild&Item.drn=" + inc_parentItemDRN + "&Item.Attachment.id=" + inc_itemAttachmentId + "&Item.Child.id=" + inc_replyChildId + inc_findUpdateList + "&merge=msgprint&amp;" + inc_urlFolderType;
			var sURL = baseURL + "&action=Item.ReadChild&Item.drn=" + inc_parentItemDRN + "&Item.Attachment.id=" + inc_itemAttachmentId + "&Item.Child.id=" + inc_replyChildId + "&merge=msgprint" + inc_findUpdateList;
			
			popout( sURL, "_blank" );
		}
		else
		{
			//var sURL = homeURL + "?User.context=" + userContext + inc_providerString + "&action=Item.Read&Item.drn=" + inc_findUpdateList + "&merge=msgprint" + inc_urlFolderType;
			var sURL = baseURL + "&action=Item.Read" + "&merge=msgprint" + inc_findUpdateList;
			
			popout( sURL, "_blank" );
		}
	}
	else if( type == ACT_VIEW_PROPERTIES || type == ACT_BACKTO_PROPERTIES)
	{
		//window.location.href =  homeURL + "?User.context=" + userContext + inc_providerString + "&action=Item.Action" + inc_findUpdateList + "&Item.Properties=&Item.drn=" + inc_itemDRN + "&Item.Enclosure.id=" + inc_itemDRN + "&Url.Item.isOutbound=" + inc_itemIsOutbound + "&merge=msgitem" + inc_urlFolderType + inc_urlFolderRightsPost + inc_urlFolderRightsDelete + "&tab=1&writeAccess=" + inc_writeAccess + "&Item.type=" + inc_itemType;
		window.location.href =  baseURL + "&action=Item.Action" + inc_findUpdateList + "&Item.Properties=&" + "Item.Enclosure.id=" + inc_itemDRN + "&Url.Item.isOutbound=" + inc_itemIsOutbound + "&merge=msgitem&tab=1&writeAccess=" + inc_writeAccess + "&Item.type=" + inc_itemType;
	}			
	else
	{
		alert( "Unhandled action selected" );
	}

	return false;
}

