var remoteActors = new Array;

function RemoteActor() {}

RemoteActor.requestRemoteInvoke = function(remoteRequest)
{

	if(!remoteEnabled) return;
  for(var memberName in remoteActors)
  {
	  var state = remoteActors[memberName];
	  if(state == "control")
	  {
		    directorTrace('RemoteActor.requestRemoteInvoke' + ' memberName: ' + memberName + ' remoteRequest: ' + remoteRequest);
			db_setProperty2(memberName,'remoteActorRequest',RemoteActor.encode(remoteRequest));
	  }
  }
}

var lastRequest=null;
var raTimer=null;
var remoteEnabled = true;

RemoteActor.remoteInvoke = function(remoteRequest)
{
  var ue = unescape(remoteRequest.replace(/_/g,"%"));
  directorTrace('RemoteActor.remoteInvoke ' + ue);

  if(ue == lastRequest && raTimer) return;
  lastRequest = ue;
  raTimer=setTimeout("RemoteActor.timeCheck()",3000);
  eval(ue);
}

RemoteActor.encode = function(txt)
{
  var encoded = '';
  var i;
  var len = txt.length;
  for (i = 0; i < len; i++) {encoded += "_" + txt.charCodeAt(i).toString(16).toUpperCase();}
  return encoded; 
}

RemoteActor.timeCheck = function()
{
	lastRequest = null;
}

RemoteActor.disable = function()
{
   remoteEnabled = false;
}

RemoteActor.enable = function()
{
   remoteEnabled = true;
}

RemoteActor.requestRemoteInvokeOnActive = function(remoteRequest)
{

	if(!remoteEnabled) return;
	if(isNull(activeRemote)) return;

    directorTrace('RemoteActor.requestRemoteInvokeOnActive' + ' memberName: ' + activeRemote + ' remoteRequest: ' + remoteRequest);
	db_setProperty2(activeRemote,'remoteActorRequest',RemoteActor.encode(remoteRequest));
}

RemoteActor.requestRemoteInvokeOn = function(remote, remoteRequest)
{

	if(isNull(remote)) return;

    directorTrace('RemoteActor.requestRemoteInvokeOn' + ' memberName: ' + remote + ' remoteRequest: ' + remoteRequest);
	db_setProperty2(remote,'remoteActorRequest',RemoteActor.encode(remoteRequest));
}


