public VendorStoneBuyGump( VSShopper shopper, VendorStone stone ) : base( 125, 125 )
                {
			m_Shopper = shopper;
			m_Stone = stone;

			m_Stone.CloseGumps( m_Shopper.Owner );

			AddPage( 0 ); 

			AddBackground( 0, 0, 375, 210, 0x2436 );

			AddLabel( 12, 17, 5, "Your Buy List" );
			AddLabel( 110, 22, 5, "Total Purchase: "+m_Shopper.TotalPrice() );

			AddButton( 15, 160, 4005, 4007, 0, GumpButtonType.Reply, 0 ); 
			AddLabel( 45, 160, 33, "Back" );
			AddButton( 110, 160, 4005, 4007, 1, GumpButtonType.Reply, 0 ); 
			AddLabel( 140, 160, 1152, "Buy" );

			for ( int i = 0; i < m_Shopper.ItemList.Count; ++i )
			{
				int item = (int)m_Shopper.ItemList[i];

				if ( (i % 5) == 0 )
				{
					if ( i != 0 )
					{
						AddButton( 190, 235, 0x1196, 0x1196, 1152, GumpButtonType.Page, (i / 5) + 1 );
						AddLabel( 190, 220, 1152, "Next page" ); 
					}

					AddPage( (i / 5) + 1 );

					if ( i != 0 )
					{
						AddButton( 10, 235, 0x119a, 0x119a, 1152, GumpButtonType.Page, (i / 5) );
						AddLabel( 10, 220, 1152, "Previous page" ); 
					}
				}

				VSItem vsi = (VSItem)m_Stone.ItemList[item];

				string blessbond = (vsi.BlessBond ? "(B)" : "");

				AddButton( 13, 40 + ((i % 5) * 20), 0x26AF, 0x26B1, i+2, GumpButtonType.Reply, 0 ); 
				AddLabel( 40, 40 + ((i % 5) * 20), 1152, vsi.Amount+" "+vsi.Name+" "+blessbond+" "+vsi.Price+" "+m_Stone.Currency );
			}
		}
                public StaffVendorGump( Mobile from, VendorStone stone ) : base( 125, 125 )
                {
			m_Stone = stone;

			m_Stone.CloseGumps( from );

			AddPage( 0 ); 

			AddBackground( 0, 0, 160, 140, 0x2436 );

			AddButton( 10, 10, 4005, 4007, 1, GumpButtonType.Reply, 0 ); 
			AddLabel( 40, 10, 1152, "Vendor Gump" );
			AddButton( 10, 30, 4005, 4007, 2, GumpButtonType.Reply, 0 ); 
			AddLabel( 40, 30, 1152, "Add Item" );

			if ( from.AccessLevel >= AccessLevel.Owner )
				AddButton( 10, 50, 4005, 4007, 3, GumpButtonType.Reply, 0 ); 
            if ( m_Stone.AccessLevel == AccessLevel.Owner )
				AddLabel( 40, 50, 1302, "Owner" );
            else if ( m_Stone.AccessLevel == AccessLevel.Developer )
				AddLabel( 40, 50, 1302, "Developer" );
			else if ( m_Stone.AccessLevel == AccessLevel.Administrator )
				AddLabel( 40, 50, 1302, "Administrator" );
			else if ( m_Stone.AccessLevel == AccessLevel.Seer )
				AddLabel( 40, 50, 324, "Seer" );
			else if ( m_Stone.AccessLevel == AccessLevel.GameMaster )
				AddLabel( 40, 50, 33, "Game Master" );
			else if ( m_Stone.AccessLevel == AccessLevel.Counselor )
				AddLabel( 40, 50, 2, "Counselor" );
			else if ( m_Stone.AccessLevel == AccessLevel.Player )
				AddLabel( 40, 50, 88, "Player" );

			AddButton( 10, 70, 4005, 4007, 4, GumpButtonType.Reply, 0 ); 
			if ( m_Stone.EditMode )
				AddLabel( 40, 70, 5, "Edit Mode" );
			else
				AddLabel( 40, 70, 33, "Edit Mode" );
			AddLabel( 10, 90, 1152, "Currency:" );
			AddTextEntry( 70, 90, 85, 15, 1152, 0, m_Stone.Currency );

			AddButton( 10, 110, 4005, 4007, 0, GumpButtonType.Reply, 0 ); 
			AddLabel( 40, 110, 33, "Close" );
		}
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();
			m_Stone = reader.ReadItem() as VendorStone;
		}
                public VendorGump( VSShopper shopper, VendorStone stone ) : base( 25, 25 )
                {
			m_Stone = stone;
			m_Shopper = shopper;

			m_Stone.CloseGumps( m_Shopper.Owner );

			AddPage( 0 ); 

			AddBackground( 0, 0, 550, 480, 0x2436 );
			AddAlphaRegion( 10, 10, 530, 460 );

			AddImageTiled( 10, 40, 530, 5, 2624 );
			AddImageTiled( 10, 58, 390, 5, 2624 );

			AddImageTiled( 90, 40, 5, 430, 2624 );
			AddImageTiled( 125, 40, 5, 430, 2624 );
			AddImageTiled( 160, 40, 5, 430, 2624 );
			AddImageTiled( 310, 40, 5, 430, 2624 );
			AddImageTiled( 400, 40, 5, 430, 2624 );

			if ( m_Stone.Name != null && m_Stone.Name != "" )
				AddHtml( 10, 10, 510, 20, Color( Center( m_Stone.Name ), 0xFFFFFF ), false, false );
			else
				AddHtml( 10, 10, 510, 20, Color( Center( "Vendor Stone" ), 0xFFFFFF ), false, false );

			AddLabel( 420, 60, 5, "Stone Currency:" );
			if ( m_Stone.Currency != null  )
				AddLabel( 420, 80, 5, m_Stone.Currency );
			else
				AddLabel( 420, 80, 33, "None" );

			AddHtml( 10, 42, 85, 20, Color( Center( "Item Amount" ), 0xFFFFFF ), false, false );
			AddHtml( 95, 42, 30, 20, Color( Center( ((m_Stone.EditMode && shopper.Owner.AccessLevel >= m_Stone.AccessLevel) ? "Edit" : "Buy") ), 0xFFFFFF ), false, false );
			AddHtml( 130, 42, 30, 20, Color( Center( "Des" ), 0xFFFFFF ), false, false );
			AddHtml( 165, 42, 145, 20, Color( Center( "Item" ), 0xFFFFFF ), false, false );
			AddHtml( 315, 42, 85, 20, Color( Center( "Price" ), 0xFFFFFF ), false, false );

			if ( !m_Stone.EditMode )
			{
				AddButton( 420, 120, 1209, 1210, 1, GumpButtonType.Reply, 0 );
				AddLabel( 440, 120, 1152, "Buy Items" );
			}

			AddLabel( 410, 160, 1152, "The (B) beside" );
			AddLabel( 410, 175, 1152, "items and creatures" );
			AddLabel( 410, 190, 1152, "stands for blessing" );
			AddLabel( 410, 205, 1152, "or bonding." );


			AddLabel( 420, 400, 906, "Created By" );
			AddLabel( 420, 420, 906, "~Raelis~" );

			AddButton( 420, 440, 4005, 4007, 0, GumpButtonType.Reply, 0 ); 
			AddLabel( 450, 440, 33, "Close" );

			int index = 0;
			int page = 1;

			AddPage( 1 );

			for ( int i = 0; i < m_Stone.ItemList.Count; ++i )
			{
				if ( index >= AmountPerPage )
				{ 
					AddButton( 420, 365, 0x1196, 0x1196, 1152, GumpButtonType.Page, page + 1 );
					AddLabel( 420, 350, 1152, "Next page" ); 

					++page; 
					index = 0; 

					AddPage( page );

					AddButton( 420, 315, 0x119a, 0x119a, 1152, GumpButtonType.Page, page - 1 );
					AddLabel( 420, 300, 1152, "Previous page" ); 
				}

				int price = ((VSItem)m_Stone.ItemList[i]).Price;
				int amount = ((VSItem)m_Stone.ItemList[i]).Amount;
				string gumpname = ((VSItem)m_Stone.ItemList[i]).Name;

				AddLabel( 165, 60 + (index * 20), 1152, gumpname +( ((VSItem)m_Stone.ItemList[i]).BlessBond ? " (B)" : "") );
				AddLabel( 25, 60 + (index * 20), 1152, ""+ amount );
				AddLabel( 320, 60 + (index * 20), 1152, ""+ price );

				AddButton( 100, 65 + (index * 20), 1209, 1210, i+2, GumpButtonType.Reply, 0 );
				if ( ((VSItem)m_Stone.ItemList[i]).Description != null && ((VSItem)m_Stone.ItemList[i]).Description != "" )
					AddButton( 135, 65 + (index * 20), 0x1523, 0x1523, i+m_Stone.ItemList.Count+3, GumpButtonType.Reply, 0 );

				AddImageTiled( 10, 80 + (index * 20), 390, 3, 2624 );

				index++;
			}
		}
		private void ConnectTarget_Callback( Mobile from, object obj ) 
		{ 
			if ( obj is VendorStone && obj is Item ) 
			{ 
				Item item = (Item)obj;
				VendorStone ps = (VendorStone)obj;

				Stone = ps;
				from.SendMessage( "You have connected the ball to the stone." );
			} 
			else 
			{ 
				from.SendMessage( "That is an invalid target!" );
			}
		}
                public VendorStoneBlessBondGump( Mobile from, VSItem vsi, VendorStone stone, ArrayList objects ) : base( 125, 125 )
                {
			m_Stone = stone;
			m_VSI = vsi;
			m_Objects = objects;

			m_Stone.CloseGumps( from );

			AddPage( 0 ); 

			AddBackground( 0, 0, 375, 85, 0x2436 );

			if ( objects.Count > 0 && objects[0] is Item )
				AddLabel( 13, 10, 1152, "Would you like to bless this item: '"+ vsi.Name +"'?" );
			else if ( objects.Count > 0 && objects[0] is Mobile )
				AddLabel( 13, 10, 1152, "Would you like to bond this pet: '"+ vsi.Name +"'?" );
			AddLabel( 13, 25, 1152, "Price: "+ vsi.BBPrice );

			AddButton( 15, 50, 4005, 4007, 0, GumpButtonType.Reply, 0 ); 
			AddLabel( 45, 50, 33, "No" );
			AddButton( 85, 50, 4005, 4007, 1, GumpButtonType.Reply, 0 ); 
			AddLabel( 115, 50, 33, "Yes" );
		}
                public VendorStoneEditGump( Mobile from, VSItem vsi, VendorStone stone ) : base( 125, 125 )
                {
			m_Stone = stone;
			m_VSI = vsi;

			m_Stone.CloseGumps( from );

			AddPage( 0 ); 

			AddBackground( 0, 0, 420, 300, 0x2436 );

			AddLabel( 13, 10, 1152, "Item Type:" );
			AddTextEntry( 83, 10, 100, 15, 1152, 0, m_VSI.Item );

			AddLabel( 13, 30, 1152, "Gump Name:" );
			AddTextEntry( 90, 30, 90, 15, 1152, 1, m_VSI.Name );

			AddLabel( 13, 50, 1152, "Price:" );
			AddTextEntry( 53, 50, 85, 15, 1152, 2, ""+m_VSI.Price );

			AddLabel( 13, 70, 1152, "Amount:" );
			AddTextEntry( 63, 70, 85, 15, 1152, 3, ""+m_VSI.Amount );

			AddCheck( 15, 90, 0x2342, 0x2343, m_VSI.BlessBond, 1 );
			AddLabel( 45, 90, 1152, "Bless/Bond:" );

			AddLabel( 13, 110, 1152, "Bless/Bond Price:" );
			AddTextEntry( 123, 110, 225, 15, 1152, 4, ""+m_VSI.BBPrice );

			AddLabel( 13, 130, 1152, "Description:" );
			AddTextEntry( 13, 150, 387, 75, 1152, 5, m_VSI.Description );

			AddButton( 15, 245, 4005, 4007, 2, GumpButtonType.Reply, 0 ); 
			AddLabel( 45, 245, 33, "Remove" );

			AddButton( 15, 265, 4005, 4007, 0, GumpButtonType.Reply, 0 ); 
			AddLabel( 45, 265, 33, "Back" );
			AddButton( 85, 265, 4005, 4007, 1, GumpButtonType.Reply, 0 ); 
			AddLabel( 115, 265, 33, "Apply" );
		}
		public VendorStoneAddItemGump( Mobile mobile, VendorStone stone ) : base( 25, 50 )
		{
			m_Mobile = mobile;
			m_Stone = stone;

			m_Stone.CloseGumps( m_Mobile );

			AddPage( 0 );

			AddBackground( 25, 10, 420, 430, 0x2436 );

			AddImageTiled( 33, 20, 401, 411, 2624 );
			AddAlphaRegion( 33, 20, 401, 411 );

			AddLabel( 125, 40, 1152, "Vendor Stone" );

			AddLabel( 40, 60, 1152, "Add a Mobile or Item:" );
			AddTextEntry( 40, 80, 225, 15, 5, 0, "Item Here" );
			AddLabel( 40, 100, 1152, "Gump Name:" );
			AddTextEntry( 40, 120, 225, 15, 5, 1, "Name Here" );
			AddLabel( 40, 140, 1152, "Price:" );
			AddTextEntry( 40, 160, 225, 15, 5, 2, "0" );
			AddLabel( 40, 180, 1152, "Item Amount:" );
			AddTextEntry( 40, 200, 225, 15, 5, 3, "1" );

			AddCheck( 40, 220, 0x2342, 0x2343, false, 1 );
			AddLabel( 70, 220, 1152, "Bless/Bond:" );

			AddLabel( 40, 240, 1152, "Bless/Bond Price:" );
			AddTextEntry( 40, 260, 225, 15, 5, 4, "0" );

			AddLabel( 40, 280, 1152, "Description:" );
			AddTextEntry( 40, 300, 360, 75, 5, 5, "Des Here" );

			AddButton( 40, 390, 4005, 4007, 0, GumpButtonType.Reply, 0 );
			AddLabel( 70, 393, 1152, "Back" );
			AddButton( 120, 390, 4005, 4007, 1, GumpButtonType.Reply, 0 );
			AddLabel( 150, 393, 1152, "Apply" );
		}
		public VSShopper( Mobile owner, VendorStone stone )
		{
			m_Owner = owner;
			m_Stone = stone;
		}