public void DeactivateGate( GateComponent source, GateComponent destination, StargateAddon target )
		{
			if ( source != null )
				source.Delete();
			if ( destination != null )
				destination.Delete();

			foreach( SymbolComponent s in m_ActiveSymbols )
				s.PlaySymbolEffect( false );
			m_ActiveSymbols.Clear();
			m_InUse = false;
			m_CurrentCombo = null;

			if ( target != null )
			{
				foreach( SymbolComponent s in target.Components )
					s.PlaySymbolEffect( false );
				target.ActiveSymbols.Clear();
				target.InUse = false;
				target.CurrentCombo = null;
			}
		}
		public void ActivateGate( Mobile from, StargateAddon gate )
		{
			if ( gate == this )
			{
				from.SendMessage( "The stargate cannot dial to itself." );
				DeactivateGate( null, null, null );
			}
			else if ( gate.InUse )
			{
				from.SendMessage( "The stargate could not reach the destination." );
				DeactivateGate( null, null, null );

				if ( gate.Expire != null )
				{
					gate.Expire.Stop();
					gate.Expire = null;
				}
			}
			else
			{
				from.SendMessage( "The stargate activates with a gate to {0}.", gate.GateDesign.Area );

				GateComponent gatesource = new GateComponent( gate );
				gatesource.Hue = m_GateDesign.GateHue;
				gatesource.MoveToWorld( Location, Map );

				GateComponent gatedest = new GateComponent();
				gatedest.Name = String.Format( "Stargate from {0}", m_GateDesign.Area );
				gatedest.Hue = gate.GateDesign.GateHue;
				gatedest.MoveToWorld( gate.Location, gate.Map );

				m_InUse = gate.InUse = true;
				foreach( SymbolComponent s in gate.Components )
					s.PlaySymbolEffect( true );
				Timer.DelayCall( TimeSpan.FromSeconds( 45.0 ), new TimerStateCallback( DeactivateCallBack ), new object[]{ this, gatesource, gatedest, gate } );
				return;
			}
		}