/* Kevin Fleming
   Assignment #20
   Due
   Allows user to browse through housing listings
*/

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class Rentals extends Applet implements ActionListener, ItemListener {
        private CheckboxGroup rent;
        private Checkbox rent1To15, rent15To20, rentPlus, allrent;
        private Label headerLabel1, headerLabel2, rentLabel, rents, beds, baths, address; 
        private Image logo, picture;
        private TextField addressText, rent1Text, rent2Text, bedText, bathText;
        private Font headerFont, plainFont, boldFont;
        private Button search;
        private Panel buttonPanel;
        private Button buttons[];
        public String masterAddress[] = { "1691 35th St. NW", "100 O St. NW.", "1029 37th St.", "11 P ST. NW", "1904 N ST. NW", "1208 Resevoir RD. NW", "3466 R ST. NW", "2345 Q ST. NW; APT #6 ", "4102 Foxhall NW", "1209 32nd ST. NW", "3508 Prospect ST. NW", "1459 Dent ST. NW", "2419 T ST. NW", "3456 MacArthur BLVD", "783 P ST. NW", "1287 Prospect ST. NW", "3012 R ST. NW", "1695 34th ST. NW", "1754 33rd ST. NW", "1409 38th ST. NW", "3401 S ST. NW", "1156 36th ST. NW", "1923 37th ST. NW", "1845 38th ST. NW", "3790 Q ST. NW"};
        public int masterRent[] = { 1500, 1750, 2250, 1500, 900, 2000, 2500, 500, 2000, 1200, 1800, 1750, 1500, 1250, 1000, 1275, 950, 1000, 2250, 2400, 1850, 1500, 1950, 1150, 800 }, 
                   masterBed[] = { 2, 3, 4, 2, 2, 4 , 5, 1, 4, 2, 3, 4, 3, 2, 2, 2, 1, 2, 4, 5, 3, 3, 4, 2, 2},
                   masterBath[] = { 1, 2, 3, 1, 1, 2, 3, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1};
        public static int toggle = 0, temp, rentX, rentout, bedout, bathout;

        public void init()
        {
                setBackground(Color.white);

                logo = getImage(getDocumentBase(), "homes.jpg");
                picture = getImage(getDocumentBase(), "homes.jpg");

                headerFont = new Font("Times New Roman", Font.BOLD, 26);
                plainFont = new Font("Times New Roman", Font.PLAIN, 14);
                boldFont = new Font("Times New Roman", Font.BOLD, 14);

                buttonPanel = new Panel();
                buttons = new Button[2];
                buttonPanel.setLayout(new GridLayout(1, buttons.length));
                buttons[0] = new Button("Next House");
                buttons[0].addActionListener(this);
                buttons[1] = new Button("Last House");
                buttons[1].addActionListener(this);
                for(int i = 0; i < buttons.length; i++)
                        buttonPanel.add(buttons[i]);

                headerLabel1 = new Label("Welcome To GSHA!");
                headerLabel2 = new Label("First Let Us Know What You Are Searching For!");
                add(headerLabel1);
                add(headerLabel2);

                setFont(boldFont);
                rent = new CheckboxGroup();
                rentLabel = new Label("**Click 'SEARCH' after changing rent selection**");
                allrent = new Checkbox("All", rent, true);
                allrent.addItemListener(this);
                rent1To15 = new Checkbox("$1000 - $1499", rent, false);
                rent1To15.addItemListener(this);
                rent15To20 = new Checkbox("$1500 - $2000", rent, false);
                rent15To20.addItemListener(this);
                rentPlus = new Checkbox("$2000+", rent, false);
                rentPlus.addItemListener(this);

                add(allrent);
                add(rent1To15);
                add(rent15To20);
                add(rentPlus);
                add(rentLabel);


                search = new Button("Search For My New Home!");
                add(search);
                search.addActionListener(this);

                addressText = new TextField(40);
                rent2Text = new TextField(15);
                bedText = new TextField(15);
                bathText = new TextField(15);

                rents = new Label("Monthly Rent ->");
                beds = new Label("Number of Bedrooms ->");
                baths = new Label("Number of Bathrooms ->");


                add(addressText);
                add(rents);
                add(rent2Text);
                add(baths);
                add(bathText);
                add(beds);
                add(bedText);
                add(buttonPanel);


        }

        public void itemStateChanged(ItemEvent e)
        {
                if(e.getSource() == allrent)
                        rentX = 0;
                else if(e.getSource() == rent1To15)
                        rentX = 1;
                else if(e.getSource() == rent15To20)
                        rentX = 2;
                else if(e.getSource() == rentPlus)
                        rentX = 3;

        }

        public void paint(Graphics g)
        {
                g.drawImage(picture, 122, 295, this);
        }

        public void setValue()
        {
                rentout = masterRent[toggle];
                rent2Text.setText(Integer.toString(rentout));
                bedout = masterBed[toggle];
                bedText.setText(Integer.toString(bedout));
                bathout = masterBath[toggle];
                bathText.setText(Integer.toString(bathout));
                addressText.setText(masterAddress[toggle]);
                picture = getImage(getDocumentBase(), toggle + ".gif");
                repaint();
        }          

        public void actionPerformed(ActionEvent e)
        {
                if(e.getSource() == search)
                {
                if(rentX == 0)
                {
                        toggle = 0;
                        setValue();
                }
                if(rentX == 1)
                {
                        toggle = 0;
                        while(masterRent[toggle] < 1000 || masterRent[toggle] >= 1500)
                             {   toggle++;  }
                        
                        setValue();
                }
                if(rentX == 2)
                {
                        toggle = 0;
                        while(masterRent[toggle] < 1500 || masterRent[toggle] >= 2000)
                             {   toggle++;  }
                        
                        setValue();
                }
                if(rentX == 3)
                {
                        toggle = 0;
                        while(masterRent[toggle] < 2000)
                             {   toggle++;  }
                        
                        setValue();
                }}
                if(e.getSource() == buttons[0])
                { 
                if(toggle < 24)
                {
                if(rentX == 0)
                {
                        toggle++;
                        setValue();
                }
                if(rentX == 1)
                {
                        temp = toggle;
                        toggle++;
                        while((masterRent[toggle] < 1000 || masterRent[toggle] >= 1500) && toggle < 24)
                             {   toggle++;  }
                        
                        if(masterRent[toggle] >= 1000 && masterRent[toggle] < 1500)
                                setValue();
                        else
                                toggle = temp;
                }
                if(rentX == 2)
                {
                        temp = toggle;
                        toggle++;
                        while((masterRent[toggle] < 1500 || masterRent[toggle] >= 2000) && toggle < 24)
                             {   toggle++;  }
                        
                        if(masterRent[toggle] >= 1500 && masterRent[toggle] < 2000)
                                setValue();
                        else
                                toggle = temp;
                        
                }
                if(rentX == 3)
                {
                        temp = toggle;
                        toggle++;
                        while((masterRent[toggle] < 2000) && toggle < 24)
                             {   toggle++;  }
                        
                        if(masterRent[toggle] >= 2000)
                                setValue();
                        else
                                toggle = temp;
                }}}
                if(e.getSource() == buttons[1])
                {
                if(toggle > 0)
                {
                if(rentX == 0)
                {
                        toggle--;
                        setValue();
                }
                if(rentX == 1)
                {
                        temp = toggle;
                        toggle--;
                        while((masterRent[toggle] < 1000 || masterRent[toggle] >= 1500) && toggle > 0)
                             {   toggle--;  }
                        
                        if(masterRent[toggle] >= 1000 && masterRent[toggle] < 1500)
                                setValue();
                        else
                                toggle = temp;
                }
                if(rentX == 2)
                {
                        temp = toggle;
                        toggle--;
                        while((masterRent[toggle] < 1500 || masterRent[toggle] >= 2000) && toggle > 0)
                             {   toggle--;  }
                        
                        if(masterRent[toggle] >= 1500 && masterRent[toggle] < 2000)
                                setValue();
                        else
                                toggle = temp;
                }
                if(rentX == 3)
                {
                        temp = toggle;
                        toggle--;
                        while((masterRent[toggle] < 2000) && toggle > 0)
                             {   toggle--;  }
                        
                        if(masterRent[toggle] >= 2000)
                                setValue();
                        else
                                toggle = temp;
                        }
                }
        }
        }
}