import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.lang.*;
import java.util.*;
public class M extends Thread
 {
  JFracgen jf;
  String cuetta;
  boolean deb=false;
  boolean ftt=true;
  boolean slchat=false;
  Play play;
  LF lf;
  CC cc;
  JButton b0;
  boolean isApplet=false;
  LC lc,lc0,lc1,lc2,lc3;
  LP lp,lp0,lpp5,lp1,lp2,lp3,lp4,lp5;
  Te te;
  static Te te0;
  Fio fio;
  TA ta,ta0,ta1,ta2,ta3;
  Tu tu;
  Wav wu;
  Wave wue;
  Wavegraph wuegraph;
  FFT fft;
  LSort lsort;
  CuCu cucu;
  // Aux aux;
  QuCu qucu;
  BSCu bscu;
  LScP lscp,sllscp;
  LSpP lspp;
  LSpP lsppv,lsppth,lsppbh,lsppblv;
  LSpP lspph,lspplv,lspplbv,lspprv;
  LSpP lsppthrv;
  LSpP lspplbtv,lspplbbv;
  //  String defbase="file:///C:/webroot/ajlogo/html/ajlogo/version3beta/";
  String defbase="http://www.ajlogo.com/ajlogo/version3beta/";
  //String defbase="http://ajlogo.selfip.com:9800/ajlogo/version3beta/";
  // String defchatbase="http://192.168.1.103/ajlogo/version3beta/";
  // String defchatbase="http://www.richmediacollaboration.com:9928/ajlogo/version3beta/";
  String defchatbase="http://192.168.0.56:8728";
  // String defchatbase="http://www.ajlogo.com:9836/ajlogo/version3beta/";
  //String defchatbase="http://ajlogo.selfip.com:9836/ajlogo/version3beta/";
  URL filescodebase,chatcodebase;
  AJLogo ajlogo;
  Hashtable Teh=new Hashtable();
  String loadme,dudis;
  public M(AJLogo a)
   {
    ajlogo=a;
    //isApplet=a.isApplet;
    isApplet=AJLogo.isApplet;
    loadme=AJLogo.loadme;
    Rec.parent=this;
    GE.parent=this;
    Rec.parent=this;
    LP.parent=this;
    CC.parent=this;
    JFracgen.parent=this;
    Sc.parent=this;
    PP.parent=this;
    Img.parent=this;
    Ci.parent=this;
    te0=new Te(this,0,"",false,true);
    fio=new Fio(this);
    play=new Play(this);
    //te0.play=play;
    Te.play=play;
    te0.fio=fio;
    te=te0;
    //                              lspph
    //              lspplv                                           lspprv
    //        lspplbv                    LC                    Sliders     rightbutton
    // lspplbtv       lspplbbv
    // top    bot      top    bot
    // tta0   tta1     tta2   tta3
    if(slchat)    
     {
      lspph=new LSpP(this,"lspph","horz",0.94,0.94);
      lspplv=new LSpP(this,"lspplv",lspph,"left","vert",0.90,0.9);
      lspprv=new LSpP(this,"lspprv",lspph,"right","vert",.8,.85);
      lspplbv=new LSpP(this,"lspplbv",lspplv,"bottom","vert",0.96,0.5); 
      lspplbtv=new LSpP(this,"lspplbtv",lspplbv,"top","vert",.5,.5);
      lspplbbv=new LSpP(this,"lspplbbv",lspplbv,"bottom","vert",.5,.5);
      //lc0=new LC(this,"lc0",lspplv,"top",new Rec(0,0,1000,500),new Rec(0,0,600,400));
      lc0=new LC(this,"lc0",lspplv,"top",new Rec(0,0,1500,650),new Rec(0,0,600,400));
      lc=lc0;
      te0.lc=lc0; 
      ta0=new TA(this,"ta0",lspplbtv,"top",true,new Rec(0,0,400,250),new K(255,255,10),new K(30,1.0,.41),new K(225,220,10));
      ta=ta0;
      te.ta=ta; 
      ta1=new TA(this,"ta1",lspplbtv,"bottom",false,new Rec(0,0,600,250),new K(255,255,10),new K(120.0,1.0,.21),new K(225,220,10));
      te.ta1=ta1;
      K fk=new K(53.0,1.0,1.0,255.0);
      K bk=new K(243,1.0,.21,255.0);
      K ck=new K(53.0,1.0,1.0,255.0);
      ta2=new TA(this,"ta2",lspplbbv,"top",true,new Rec(0,0,400,250),fk,bk,ck);
      te.ta2=ta2;
      fk=new K(225,220,10);
      bk=new K(0.0,1.0,.21);
      ck=new K(225,220,10);
      ta3=new TA(this,"ta3",lspplbbv,"bottom",false,new Rec(0,0,600,250),fk,bk,ck);
      te.ta3=ta3;
      sllscp=new LScP(this,"sllscp",new Rec(0,0,200,400));
      lspprv.setTopComponent(sllscp);
      lp0=new LP("lp0",sllscp,new Rec(0,0,180,4200),new K(260,.27,.99));
      //lp=lp0;
     }
    else
     {
      lsppv=new LSpP(this,"lsppv","vert",0.50,0.5);
      lsppth=new LSpP(this,"lsppth",lsppv,"top","horz",1.0,1.0);
      lsppthrv=new LSpP(this,"lsppthrv",lsppth,"right","vert",1.0,1.0);
      lsppbh=new LSpP(this,"lsppbh",lsppv,"bottom","horz",0.8,1.0);
      lsppblv=new LSpP(this,"lsppblv",lsppbh,"left","vert",1.0,1.0);
      // lc0=new LC(this,"lc0",lsppth,"left",new Rec(0,0,1000,500),new Rec(0,0,600,400));
      lc0=new LC(this,"lc0",lsppth,"left",new Rec(0,0,1025,450),new Rec(0,0,600,400));
      lc=lc0;
      te0.lc=lc0;
      ta0=new TA(this,"ta0",lsppblv,"top",true,new Rec(0,0,400,250),new K(255,255,10),new K(30,1.0,.41),new K(225,220,10));
      ta=ta0;
      te.ta=ta;
      ta1=new TA(this,"ta1",lsppblv,"bottom",false,new Rec(0,0,600,250),new K(255,255,10),new K(120.0,1.0,.21),new K(225,220,10));
      te.ta1=ta1;
      sllscp=new LScP(this,"sllscp",new Rec(0,0,200,400));
      //lsppth.setRightComponent(sllscp);
      lsppthrv.setTopComponent(sllscp);
      lp0=new LP("lp0",sllscp,new Rec(0,0,180,800),new K(260,.17,.99));
      //lp=lp0;
      lc1=new LC(this,"lc1",lsppthrv,"bottom",new Rec(0,0,200,200),new Rec(0,0,200,200));
      //lsppthrv.setBottomComponent(lc1);
     }
    //lp1=new LP("lp1",lp,new Rec(0,0,180,4000),new K(60,.07,.99));
    lp1=new LP("lp1",lp0,new Rec(0,0,180,4000),new K(60,.07,.99));
    lp2=new LP("lp2",lp0,new Rec(0,0,180,3500),new K(120,.27,.99));
    lp3=new LP("lp3",lp0,new Rec(0,0,180,3000),new K(160,.27,.99));
    lp4=new LP("lp4",lp0,new Rec(0,0,180,2800),new K(200,.27,.99));
    lp5=new LP("lp5",lp0,new Rec(0,0,180,2600),new K(240,.27,.99));
    lp=lp1;
    Rec.te=te;
    jf=new JFracgen(lc);
    Sc.te=te;
   // tta("end constructor");
   }
  public void setCodeBases()
   {
    if(ajlogo.getParameter("filescodebase") !=null)
     {
      try { filescodebase=new URL(ajlogo.getParameter("filescodebase")); }
      catch (MalformedURLException e) {}
     }
    else
     {
      //try { filescodebase=new URL("http://www.ajlogo.com/ajlogo/version3beta/"); }
      try { filescodebase=new URL(defbase); }
      catch (MalformedURLException e) {}
     }
    if(ajlogo.getParameter("chatcodebase") !=null)
     {
      try { chatcodebase=new URL(ajlogo.getParameter("chatcodebase")); }
      catch (MalformedURLException e) {}
     }
    else
     {
      //try {chatcodebase=new URL("http://www.ajlogo.com/ajlogo/version3beta/"); }
      try {chatcodebase=new URL(defchatbase); }
      catch (MalformedURLException e) {}
     }
    if(filescodebase == null)
     {
      try
       {
        // filescodebase=new URL("file:///C:/webroot/ajlogo/html/ajlogo/version3beta/"); 
        filescodebase=new URL("file:///webroot/ajlogo/html/ajlogo/version3beta/"); 
       }
      catch (MalformedURLException e) { tta("malformed URL"); }
      // tta("pre setCodeBases A filescodebase:"+filescodebase);
     }
    fio.filescodebase=filescodebase;
    //   tta("setCodeBases A filescodebase:"+filescodebase);
   }
  public void setCodeBases(String args[])
   {
    int i=args.length;
    //try { chatcodebase=new URL("http://www.ajlogo.com/ajlogo/version3beta/"); }
    try { chatcodebase=new URL(defchatbase); }
    catch (MalformedURLException e) {}
    filescodebase=null;
    for(int j=0;j<i;j++)
     {
      if(args[j].equals("filescodebase"))
       {
        try { filescodebase=new URL(args[++j]); }
        catch (MalformedURLException e) {}
       }
      else if(args[j].equals("chatcodebase"))
       {
        try { chatcodebase=new URL(args[++j]); }
        catch (MalformedURLException e) {}
       }
      else if(j==0) loadme=args[j];
      else if(j==1) 
       {
        dudis=args[j];
        System.out.println("dudis:"+dudis);
       }
     }
    if(filescodebase == null) 
     {
      try 
       {
        //filescodebase=new URL("file:///C:/webroot/ajlogo/html/ajlogo/version3beta/"); 
        filescodebase=new URL("file:///webroot/ajlogo/html/ajlogo/version3beta/");
        tta("M.setCodeBases  new URL(file:///.....) fcb:"+filescodebase);
       }
      catch (MalformedURLException e) { tta("malformed URL"); }
    //  tta("pre setCodeBases B filescodebase:"+filescodebase);
     }
    fio.filescodebase=filescodebase;
    tta("M.setCodeBases B filescodebase:"+filescodebase);
   }
  public void restart()
   {
    te0.start();
   }
  public void rerun(String s)
   {
    ftt=true;
    loadme=s;
    run();
   }
  public void run()
   {
    Te.zzz=0;
    te.mkFta();
    te.schleep(100);
    //tta("run");
    if(slchat) ;
    //now else lsppv.setDiv(.61);
    te.schleep(100);
    if(slchat) ;
    // new else newTeS("lsppth.div - lsppv.bs.x 210 sleep 300");
    lc.scvp(new dP(0,0));
    if(slchat) 
     {
      if(cc ==null) lspprv.max();
      te.schleep(100);
     }
    else 
     {
      // now  if(cc ==null) lsppbh.max();
     }
    if(slchat)
     {
      lspplv.divlib(508);
      te.schleep(200);
      lspplbv.max();
     }
    // now else lsppblv.max();
    // te.schleep(200);
    //  te.Welcome();
    //  tta("F2 General Help");
    te.schleep(100);
    tu=new Tu(this,"tu0",lc,new K(0,0,0));
    te.tu=tu;
    te.teS("dt ht");
    if(ftt)
     {
      if(cc== null)
       {
        // very old if(slchat) cc=new CC("cc0",chatcodebase,8728,lspprv,"bottom");
        
    	//cc=new CC("cc0",chatcodebase,8728,lsppbh,"bottom");
        //cc.start();
        //te.cc=cc;
        
        
     //   tta("M.run  ftt:"+ftt+" CC line 274");
        //      if(slchat) cc=new CC("cc0",chatcodebase,9836,lspprv,"bottom");
        // tagged out M1Y19
        //cc=new CC("cc0",chatcodebase,9836,lsppbh,"bottom");
        //  cc.start();
        // te.cc=cc;
       }
      else
       {
        // now      if(cc.conn) cc.layoutLSpP();
       }
      ftt=false;
      if(loadme !=null && ! loadme.equals("")) 
       {
        tu.ht();
        ttace("Loading:"+loadme);
        if(dudis !=null && ! dudis.equals("")) newTeS("load "+loadme+","+dudis);
        else newTeS("load "+loadme);
       }
     }
    //tta("bottom run");
    te.schleep(100); 
  //  lspplv.setDivpc(60);
  //  te.schleep(100); 
 //   lspplbv.max();
 //   te.schleep(100); 
   // lspplbtv.max();
 //   te.schleep(100);
   }
  public void ttancr(String s)
   {
    if(ta == null)  System.out.println(s);
    else ta.append(s);
   }
  public void deb(String s) { if(deb) tta(s); }
  public void tta(String s)
   {
    if(ta0 == null)
     {
      System.out.println(s);
      cuetta+=s+"\n";
     }
    else 
     {
      if(cuetta!= null)
       {
        s="Cuetta:\n"+cuetta+s;
        cuetta=null;
       }
      ta0.append(s+"\n");
      ta0.carettoend();
     }
   }
  public void ttace(String s)
   {
    tta(s);
    if(ta!=null) ta.carettoend();
   }
  void tacte() { if(ta != null)  ta.carettoend(); }
  void ta1cte() { if(ta1 != null)  ta1.carettoend(); }
  public void tta1(String s)
   {
    if(ta1 == null)  System.out.println(s);
    else ta1.append(s+"\n");
   }
  public int ta1rcp()
   {
    if(ta1 != null)  return ta1.rcp();
    return 0;
   }
  public void ta1scp() { if(ta1 != null)  ta1.scp(); }
  public void newTeSTC(String s)
  {
	  newTeS(s);
	  if(cc ==null) 
		  {
		  // tta("M.newTeSTC cc is null");
		  }
	  else cc.sendo(s);
  }
  public Te newTeS(String s)
   {
    int i=0;
    boolean go=true;
    while(go && Teh.containsKey(Te.Svo(i)) )
     {
      if( ((Te)Teh.get(Te.Svo(i))).isAlive() )
       {
        //tta("Thread:"+Te.Svo(i)+ "is alive");
       }
      else
       {
        go=false;
        break;
       }
      i++;
     }
    //tta("Next free Te index:"+i);
    Te lte=new Te(this,i,s,true,false);
    Teh.put(lte.name,lte);
    lte.start();
    return lte;
   }
 }
