import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class namensanalyse extends Applet
{ private GridBagLayout gbl;
  private GridBagConstraints gbc;
  private Button calc;
  private TextField Name,Analyse_1,Analyse_2,Quersumme,innerer_Wert;
  private int i,summe_1,summe_2;
       
  //Methode zum Hinzufügen neuer Elemente zum GridBagLayout
  private void neu(Component com,
                   GridBagLayout l, GridBagConstraints c,
                   int x, int y, int b, int h) //x,y-Koordinaten, Breite, Höhe
  { c.gridx=x; c.gridy=y;
    c.gridwidth=b; c.gridheight=h;
    l.setConstraints(com,c);
    add(com);
  } 

  public void init()
  { setBackground(Color.white);
    gbl=new GridBagLayout();
    setLayout(gbl);
    gbc=new GridBagConstraints();
    gbc.insets=new Insets(3,3,3,3);
    gbc.fill=GridBagConstraints.BOTH;
    neu(new Label("Name:"),gbl,gbc,0,0,1,1);
    neu(Name=new TextField("",30),gbl,gbc,1,0,2,1);
    Name.setEditable(true);
    neu(calc=new Button("analysieren"),gbl,gbc,1,1,2,1);
    ButtonListener bl=new ButtonListener();
    calc.addActionListener(bl);
    neu(new Label("Methode:"),gbl,gbc,0,2,1,1);
    neu(new Label("nach einfacher Reihenfolge"),gbl,gbc,1,2,1,1);
    neu(new Label("nach Kabbalah"),gbl,gbc,2,2,1,1);
    neu(new Label("Wert:"),gbl,gbc,0,3,1,1);
    neu(Analyse_1=new TextField("",6),gbl,gbc,1,3,1,1);
    neu(Analyse_2=new TextField("",6),gbl,gbc,2,3,1,1);
    neu(new Label("Quersumme:"),gbl,gbc,0,4,1,1);
    neu(Quersumme=new TextField("",6),gbl,gbc,1,4,2,1);
    neu(new Label("Quersumme des inneren Wertes:"),gbl,gbc,0,5,1,1);
    neu(innerer_Wert=new TextField("",6),gbl,gbc,1,5,2,1);
    summe_1=summe_2=0;
  }

  public int char_int_r(char c)
  { switch (c)
    { case 'a':
      case 'A':return 1;
      case 'b':
      case 'B':return 2;
      case 'c':
      case 'C':return 3;
      case 'd':
      case 'D':return 4;
      case 'e':
      case 'E':return 5;
      case 'f':
      case 'F':return 6;
      case 'g':
      case 'G':return 7;
      case 'h':
      case 'H':return 8;
      case 'i':
      case 'I':return 9;
      case 'j':
      case 'J':return 10;      
      case 'k':
      case 'K':return 11;
      case 'l':
      case 'L':return 12;
      case 'm':
      case 'M':return 13;
      case 'n':
      case 'N':return 14;
      case 'o':
      case 'O':return 15;
      case 'p':
      case 'P':return 16;
      case 'q':
      case 'Q':return 17;
      case 'r':
      case 'R':return 18;
      case 's':
      case 'S':return 19;
      case 't':
      case 'T':return 20;       
      case 'u':
      case 'U':return 21;
      case 'v':
      case 'V':return 22;
      case 'w':
      case 'W':return 23;
      case 'x':
      case 'X':return 24;
      case 'y':
      case 'Y':return 25;
      case 'z':
      case 'Z':return 26;
      default: return 0;
    }
  }
  
  public int char_int_k(char c)
  { switch (c)
    { case 'a':
      case 'A':return 1;            
      case 'b':
      case 'B':return 2;
      case 'c':
      case 'C':return 3;
      case 'd':
      case 'D':return 4;
      case 'e':
      case 'E':return 5;
      case 'f':
      case 'F':return 6;
      case 'g':
      case 'G':return 7;
      case 'h':
      case 'H':return 8;
      case 'i':
      case 'I':return 9;
      case 'j':
      case 'J':return 10;        
      case 'k':
      case 'K':return 20;
      case 'l':
      case 'L':return 30;
      case 'm':
      case 'M':return 40;
      case 'n':
      case 'N':return 50;
      case 'o':
      case 'O':return 60;
      case 'p':
      case 'P':return 70;
      case 'q':
      case 'Q':return 80;
      case 'r':
      case 'R':return 90;
      case 's':
      case 'S':return 100;
      case 't':
      case 'T':return 200;        
      case 'u':
      case 'U':return 300;
      case 'v':
      case 'V':return 400;
      case 'w':
      case 'W':return 500;
      case 'x':
      case 'X':return 600;
      case 'y':
      case 'Y':return 700;
      case 'z':
      case 'Z':return 800;
      default :return 0;
    }
  }                               
    
  public int length_int(long z)
  { int i=0;
    long t=1; 
    while (z/t > 0)
    { t=t*10;
      i++;
    }
    return i;
  }
  
  public long potenz_10(int z)
  { int i;
    long p=1;
    for (i=1;i<=z;i++) p=p*10;
    return p;
  }  
  
  public long qs(long z)
  { long s,t;
    while (z>9)
    { s=0;
      while (z>0)
      { t=potenz_10(length_int(z)-1);
        s=s+z/t;
        z=z-(z/t)*t;
      }
      z=s;
    }
    return z;
  }          
  
  public long iw(int z)
  { int i;
    long s=0;
    for (i=1;i<=z;i++) s=s+i;
    return s;
  }  
  
  public class ButtonListener implements ActionListener
  { public void actionPerformed(ActionEvent e)
    { if (e.getActionCommand().equals("analysieren"))
      { for (i=0;i<Name.getText().length();i++)
        { summe_1=summe_1+char_int_r(Name.getText().charAt(i));
          summe_2=summe_2+char_int_k(Name.getText().charAt(i));
        }  
        Analyse_1.setText(String.valueOf(summe_1));
        Analyse_2.setText(String.valueOf(summe_2));
        Quersumme.setText(String.valueOf(qs(summe_1)));
        innerer_Wert.setText(String.valueOf(qs(iw(summe_1))));
        summe_1=summe_2=0;
        
      }
    }
  }

}        

