import java.awt.*;
import java.applet.*;

public class LetterPermutation extends Applet {
    private String decryptedMessage, encryptedMessage;
    private char[] translationBuffer;
    private char[] encryptionIndex, decryptionIndex;
    private TextArea decryptedMessageTextArea, encryptedMessageTextArea;
    private Button encryptButton, decryptButton;
    private Label encryptedLabel, decryptedLabel;

        public void init() { 
                setBackground(Color.lightGray);
                encryptionIndex = new char[26];
                encryptionIndex = getParameter("permutationString").toCharArray();
                decryptionIndex = new char[26];
                for (int i = 0; i <= 25; i++) {
                   decryptionIndex[Character.digit(encryptionIndex[i], 36)-10] = Character.forDigit(i+10, 36);
                }
                decryptedLabel = new Label("Unencrypted Message");
                encryptedLabel = new Label("Encrypted Message");
            decryptedMessageTextArea = new TextArea(12, 80);
        encryptedMessageTextArea = new TextArea(12, 80);
        add(decryptedLabel);
        encryptButton = new Button("Encrypt");
        add(encryptButton);
        add(decryptedMessageTextArea);
        add(encryptedLabel);
        decryptButton = new Button("Decrypt");
                add(decryptButton);
            add(encryptedMessageTextArea);
    }





public boolean action(Event event, Object arg) {
        if (arg.equals("Encrypt")) {
                        encrypt();
                        return true;
                }
                else if (arg.equals("Decrypt")) {
                        decrypt();
                        return true;
                }
                return super.handleEvent(event);
        }

        public void encrypt() {
           int len;
       decryptedMessage = new String(decryptedMessageTextArea.getText());
       len = decryptedMessage.length();
       translationBuffer = decryptedMessage.toCharArray();
       for (int i = 0; i < len; i++)
         translationBuffer[i] = encryptChar(translationBuffer[i]);
       encryptedMessage = new String(translationBuffer);
       encryptedMessageTextArea.setText(encryptedMessage);
        }

        public void decrypt() {
           int len;
           encryptedMessage = new String(encryptedMessageTextArea.getText());
           len = encryptedMessage.length();
           translationBuffer = encryptedMessage.toCharArray();
           for (int i = 0; i < len; i++)
         translationBuffer[i] = decryptChar(translationBuffer[i]);
       decryptedMessage = new String(translationBuffer);
       decryptedMessageTextArea.setText(decryptedMessage);
        }

        public char encryptChar(char ch) {
            boolean isUpperCase;
            isUpperCase = Character.isUpperCase(ch);
            if (Character.isLetter(ch))
              ch = encryptionIndex[Character.digit(ch, 36) - 10];
            if (isUpperCase)
              ch = Character.toUpperCase(ch);
            return ch;
        }

        public char decryptChar(char ch) {
            boolean isUpperCase;
            isUpperCase = Character.isUpperCase(ch);
        if (Character.isLetter(ch))
            ch = decryptionIndex[Character.digit(ch, 36) - 10];
            if (isUpperCase)
              ch = Character.toUpperCase(ch);
            return ch;
        }

}

