
function ZE_Msgs_OnClickAll(box)
{
	if ( !box ) { return; }
	
	// go through the checkboxes for the messages and check/uncheck
	var i=0;
	do{
		var b = GetElement('box_'+i);
		if (b) { b.checked = box.checked; }
		++i;
	} while(b);	
}

function ZE_Msgs_ToggleDelete(id,msgid)
{
	if ( !(id&&msgid) ) { return; }
	
	var obj = GetElement( id );
	if ( !obj ) { return; }
	
	if ( !obj.mUndeleteHTML ) 	{ obj.mUndeleteHTML = '<TABLE style="margin-right:0px;margin-bottom:0px;"><TR><TD><INPUT type=button class="msgs_btn" value="Undelete" style="width:60px;" onmouseover="UI_ShowPopup(true,\'Message cannot be recovered if you reload this page, navigate to another page or close this window!\',200,event);" onclick="ZE_Msgs_ToggleDelete(\''+id+'\',\''+msgid+'\')" onclick="UI_ShowPopup(false);"></TD></TR></TABLE>'; }
	if ( !obj.mMsgHTML )		{ obj.mMsgHTML = obj.innerHTML; }
	if ( !obj.mOverlayObj )		
	{ 
		var d = document.createElement('DIV');
		d.className='msgs_update_overlay'; 
		
		var s		= d.style; 
		s.visibility= 'hidden'; 
		d.innerHTML	= '<DIV style="padding-top:8px;color:#FFFFFF;background-color:#000000;">Updating...</DIV>'; 
		obj.mOverlayObj = d; 
		obj.parentNode.appendChild(d);
	}
	
	if ( obj.mOverlayObj ) // adjust position and dims
	{
		var p = obj.parentNode.parentNode;
		if ( p )
		{
			var s		= obj.mOverlayObj.style; 
			s.width		= (p.offsetWidth-2)+'px'; 
			s.height	= (p.offsetHeight-2)+'px'; 
			s.top		= '-4px';
			s.left		= '-4px';
		}
	}

	var thingy = obj.mOverlayObj;
	thingy.style.visibility = 'visible';
	obj.mTimeoutID = window.setTimeout( function(){if(obj && (!obj.mRR || obj.mRR.mbComplete)){ZE_Msgs_UpdateObjectState(obj);}}, 1*1000 ); //make sure the overlay is shown for a miniumum amount of time
	
	UI_ShowPopup( false );
	var rr = RemoteRequest.NewRequest( '/messages.pl', 'delete_one='+msgid, {mCompletion:ZE_Msgs_Toggle_Complete, mTimeout:ZE_Msgs_Toggle_Timeout}, true );
	if ( rr && rr.Issue() ) 	
	{
		obj.mRR = rr;
		rr.mMsgElement = obj; 
	}
	else
	{
		ErrorOutput( "Unable to send remote request to toggle delete message" );
	}	
}

function ZE_Msgs_UpdateObjectState(obj)
{
	if (!( obj && obj.mUndeleteHTML && obj.mMsgHTML )){ ErrorOutput( 'Invalid state for ZE_Msgs_UpdateObjectState' ); return;}
	obj.mTimeoutID = undefined;
	obj.mRR = undefined;
	obj.mOverlayObj.style.visibility = 'hidden';
	obj.innerHTML = (obj.mbDeleted) ? obj.mUndeleteHTML : obj.mMsgHTML;
}

function ZE_Msgs_Toggle_Timeout(rr)
{
	UI_ShowRequestTimeoutPopup();
	ErrorOutput( 'Timed out when trying to toggle delete message' );
	if ( rr )
	{
		ZE_Msgs_UpdateObjectState(rr.mMsgElement);
	}
}

function ZE_Msgs_Toggle_Complete(response,rr)
{
	var state;
	var args = response ? response.split( '&' ) : [];
	if ( args && args[0] && args[0] == 'ze_ok' )
	{
		var val = '';
		for ( var i = 1; i < args.length; ++i )
		{
			var vals = args[i];
			vals = vals.split( '=' );
			var key = vals[0];
			val = vals[1];
			if ( key == 'state' )
			{
				if ( val !== undefined )
				{
					state = ConvertToInt(val);
				}
			}
		}		
	}

	if ( rr && rr.mMsgElement && state !== undefined )
	{
		rr.mbComplete = true;
		rr.mMsgElement.mbDeleted = state ? true : false;
		if ( !rr.mMsgElement.mTimeoutID )
		{
			ZE_Msgs_UpdateObjectState(rr.mMsgElement);
		}
	}
	else
	{
		ErrorOutput( "Msg_Toggle_Complete did not return a valid response: " + response );
	}	
}


