var prg_counter = 0;
var prg_run     = 0; 
var prg_stopped = 0; 

var sor = '';
var kodtxt  = '';
var kodlist = new Array();

var verem  = new Array();
var vermut = 0;
 

var inputra_var = 0;

var paramlista = new Array();

var D00, D01, D02, D03, D04, D05, D06, D07, D08, D09, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20;
var S0, S1, S2, S3, S4, S5, S6, S7, S8, S9;


function prog_indit()
{

   szoveg = topdisplay.innerHTML;
   paramlista = szoveg.split(",");
   

   prg_counter = 1;
   prg_run     = 1; 
   prg_stopped = 0; 


   var ellenoriz = '';
   eval ("ellenoriz = proginput" + egyedi + ".value");
   if (ellenoriz == '') { kodtxt = '#END';}
    else {   eval ("kodtxt = proginput" + egyedi + ".value"); }



   for(i=0;i<=999;i++) { kodlist[i] = '';}
         
   // alert(kodtxt.length);
   i = 0;
   for(k=1;k<=kodtxt.length;k++)
     {
         betu = kodtxt.charAt(k);

         if(betu !='#') {kodlist[i] = kodlist[i] + '' + betu;}
         else  { i++;}
     }

    // alert('--' + kodlist[0] + '--' + kodlist[1] + '--' + kodlist[2]+ '--');

   
   program_run(0);

}



function program_run(kezdo)
{
 prg_counter = kezdo;

 sor = kodlist[prg_counter];
 utasitas = sor.charAt(0) + sor.charAt(1) + sor.charAt(2);

 while ( (utasitas != 'END') && (prg_counter < 300) )
 {
   sor = kodlist[prg_counter];
   utasitas = sor.charAt(0) + sor.charAt(1) + sor.charAt(2);

   if(utasitas == 'BTN') { gomb_ertelmez(sor.charAt(4) + '' + sor.charAt(5));}

   if(utasitas == 'WRI') { utas_wri();}
   if(utasitas == 'PRI') { utas_pri();}

   if(utasitas == 'STO') { utas_sto();}
   if(utasitas == 'RCL') { utas_rcl();}

   if(utasitas == 'SAV') { utas_sav();} // string mentése, leprogramozni!
   if(utasitas == 'ADD') { utas_add();} // string hozzáadása, leprogramozni!

   if(utasitas == 'STR') { utas_str();}

   if(utasitas == 'PSH') { utas_psh();}
   if(utasitas == 'POP') { utas_pop();}

   if(utasitas == 'MAX') { utas_max();}
   if(utasitas == 'MIN') { utas_min();}
   if(utasitas == 'SUM') { utas_sum();}
   if(utasitas == 'MLT') { utas_mlt();}
   if(utasitas == 'SUM') { utas_sum();}
   if(utasitas == 'DIF') { utas_dif();}
   if(utasitas == 'CHG') { utas_chg();}

   if(utasitas == 'GTO') { utas_gto(sor.charAt(4) + '' + sor.charAt(5) + '' + sor.charAt(6));}
   if(utasitas == 'JMP') { utas_jmp(sor.charAt(4));}

   if(utasitas == 'IFE') { utas_ife();}   
   if(utasitas == 'IFN') { utas_ifn();}
   if(utasitas == 'IFG') { utas_ifg();}
   if(utasitas == 'IFL') { utas_ifl();}

   if(utasitas == 'INC') { utas_inc();} 
   if(utasitas == 'DEC') { utas_dec();} 

   if(utasitas == 'PAR') { utas_par();} 

   if(utasitas == 'HCK') { utas_hck();} 

   if(utasitas == 'INP') { utas_inp(); break;}
   if(utasitas == 'STP') { utas_stp(); break;}
   if(utasitas == 'WAI') { utas_wai(); break;}

   prg_counter++;
  }
}


function utas_psh()
{
  v1 = sor.charAt(5) + '' + sor.charAt(6);
  vermut++;
  eval("verem[vermut] = D" + v1);
  D00 = vermut;
  // D00 tárolja a veremmutató állását
}

function utas_pop()
{
  if(vermut != 0)
  {
  v1 = sor.charAt(5) + '' + sor.charAt(6);
  eval("D" + v1 + " = verem[vermut]");
  vermut--;
  }
  D00 = vermut;
  // D00 tárolja a veremmutató állását
}




function utas_wai()
{
   valtozo = sor.charAt(4) + '' +sor.charAt(5);
   prg_counter++;
   honnan = prg_counter;
   window.setTimeout("program_run(honnan)",100 * valtozo);
}

function utas_inp()
{
  inputra_var = 1;
}

function utas_stp()
{
  inputra_var = 2;
}

function utas_hck()
{
  szoveg = ''; ind = 0;
  while (sor.charAt(ind) != '"') { ind++;}
  veg = ind;  veg++;
  while (sor.charAt(veg) != '"') { szoveg += sor.charAt(veg); veg++;}
 
  hova = sor.charAt(4) + '' + sor.charAt(5) + '' + sor.charAt(6);
  kodlist[hova] = szoveg;
}


function utas_wri()
{
  szoveg = ''; ind = 0;
  while (sor.charAt(ind) != '"') { ind++;}
  veg = ind;  veg++;
  while (sor.charAt(veg) != '"') { szoveg += sor.charAt(veg); veg++;}
  topdisplay.innerHTML += szoveg;
}

function utas_pri()
{
  szoveg = ''; ind = 0;
  while (sor.charAt(ind) != '"') { ind++;}
  veg = ind;  veg++;
  while (sor.charAt(veg) != '"') { szoveg += sor.charAt(veg); veg++;}
  bottomdisplay.innerHTML = szoveg;
}

function utas_sto()
{
  valtozo = sor.charAt(5) + '' + sor.charAt(6);
  eval("D" + valtozo + " = bottomdisplay.innerHTML");
}

function utas_rcl()
{
  valtozo = sor.charAt(5) + '' + sor.charAt(6);
  eval("topdisplay.innerHTML += D" + valtozo);
}

function utas_sav()
{
  valtozo = sor.charAt(4);
  eval("S" + valtozo + " = topdisplay.innerHTML");
}

function utas_add()
{
  valtozo = sor.charAt(4);
  eval("topdisplay.innerHTML += S" + valtozo);
}




function utas_max()
{
  v1 = sor.charAt(5) + '' + sor.charAt(6);
  v2 = sor.charAt(9) + '' + sor.charAt(10);
  v3 = sor.charAt(13) + '' + sor.charAt(14);
  eval("D" + v1 + " = Math.max( D" + v2 + ",D" + v3 + ")"); 
}

function utas_min()
{
  v1 = sor.charAt(5) + '' + sor.charAt(6);
  v2 = sor.charAt(9) + '' + sor.charAt(10);
  v3 = sor.charAt(13) + '' + sor.charAt(14);
  eval("D" + v1 + " = Math.min( D" + v2 + ",D" + v3 + ")"); 
}


function utas_sum()
{
  v1 = sor.charAt(5) + '' + sor.charAt(6);
  v2 = sor.charAt(9) + '' + sor.charAt(10);
  v3 = sor.charAt(13) + '' + sor.charAt(14);
  eval("D" + v1 + " = 1 * D" + v2 + "+ 1 * D" + v3); 
}

function utas_mlt()
{
  v1 = sor.charAt(5) + '' + sor.charAt(6);
  v2 = sor.charAt(9) + '' + sor.charAt(10);
  v3 = sor.charAt(13) + '' + sor.charAt(14);
  eval("D" + v1 + " = D" + v2 + "* D" + v3); 
}

function utas_dif()
{
  v1 = sor.charAt(5) + '' + sor.charAt(6);
  v2 = sor.charAt(9) + '' + sor.charAt(10);
  v3 = sor.charAt(13) + '' + sor.charAt(14);
  eval("D" + v1 + " = D" + v2 + "- D" + v3); 
}

function utas_chg()
{
  v1 = sor.charAt(5) + '' + sor.charAt(6);
  v2 = sor.charAt(9) + '' + sor.charAt(10);
  var atmeneti;
  eval("atmeneti = D" + v1);
  eval("D" + v1 + " = D" + v2);
  eval("D" + v2 + " = atmeneti"); 
}

function utas_jmp(hova)
{
  prg_counter = prg_counter + hova * 1;
}


function utas_gto(hova)
{
  keres = 0;
  ell = kodlist[keres];
  labele = ell.charAt(0) + '' + ell.charAt(1) + '' + ell.charAt(2);
  cimke  = ell.charAt(4) + '' + ell.charAt(5) + '' + ell.charAt(6);
  
  while (labele + cimke != 'LBL' + hova)
    {
         keres++;
         ell = kodlist[keres];
         labele = ell.charAt(0) + '' + ell.charAt(1) + '' + ell.charAt(2);
         cimke  = ell.charAt(4) + '' + ell.charAt(5) + '' + ell.charAt(6);
         if(keres>=999) {break;}
    } 
  prg_counter = keres;
}


function utas_ife()
{
  v1 = sor.charAt(5) + '' + sor.charAt(6);
  v2 = sor.charAt(9) + '' + sor.charAt(10);
  eval("egyik = D" + v1);
  eval("masik = D" + v2);
  if(egyik == masik) { utas_gto(sor.charAt(13) + '' + sor.charAt(14)+ '' + sor.charAt(15));}
}

function utas_ifn()
{
  v1 = sor.charAt(5) + '' + sor.charAt(6);
  v2 = sor.charAt(9) + '' + sor.charAt(10);
  eval("egyik = D" + v1);
  eval("masik = D" + v2);
  if(egyik != masik) { utas_gto(sor.charAt(13) + '' + sor.charAt(14)+ '' + sor.charAt(15));}
}

function utas_ifg()
{
  v1 = sor.charAt(5) + '' + sor.charAt(6);
  v2 = sor.charAt(9) + '' + sor.charAt(10);
  eval("egyik = D" + v1);
  eval("masik = D" + v2);
  if(egyik > masik) { utas_gto(sor.charAt(13) + '' + sor.charAt(14)+ '' + sor.charAt(15));}
}

function utas_ifl()
{
  v1 = sor.charAt(5) + '' + sor.charAt(6);
  v2 = sor.charAt(9) + '' + sor.charAt(10);
  eval("egyik = D" + v1);
  eval("masik = D" + v2);
  if(egyik < masik) { utas_gto(sor.charAt(13) + '' + sor.charAt(14)+ '' + sor.charAt(15));}
}


function utas_inc()
{
  v1 = sor.charAt(5) + '' + sor.charAt(6);
  eval("D" + v1 + " = D" + v1 + " * 1 + 1 * 1");
}

function utas_dec()
{
  v1 = sor.charAt(5) + '' + sor.charAt(6);
  eval("D" + v1 + " = D" + v1 + " * 1 - 1 * 1");
}




function utas_par()
{
  v1 = sor.charAt(4);
  topdisplay.innerHTML += paramlista[v1-1];
}




function gomb_ertelmez(gombkod)
{
   if(gombkod == 'A1') { torol(); }
   if(gombkod == 'A2') { vissza(); }
   if(gombkod == 'A3') { del(); }
   if(gombkod == 'A4') { insert(); }
   if(gombkod == 'A5') {  }

   if(gombkod == 'B1') { top(); }
   if(gombkod == 'B2') { bal(); }
   if(gombkod == 'B3') { jobb(); }
   if(gombkod == 'B4') { bottom(); }
   if(gombkod == 'B5') { resetx(); }

   if(gombkod == 'C1') { gomb('sin('); }
   if(gombkod == 'C2') { gomb('cos('); }
   if(gombkod == 'C3') { gomb('tg('); }
   if(gombkod == 'C4') { gomb('pi'); }
   if(gombkod == 'C5') { gomb('euler'); }

   if(gombkod == 'D1') { gomb('asin('); }
   if(gombkod == 'D2') { gomb('acos('); }
   if(gombkod == 'D3') { gomb('atg('); }
   if(gombkod == 'D4') { gomb('log('); }
   if(gombkod == 'D5') { gomb('ln('); }

   if(gombkod == 'E1') { gomb(','); }
   if(gombkod == 'E2') { gomb('solve('); }
   if(gombkod == 'E3') { gomb('fact('); }
   if(gombkod == 'E4') { gomb('rand('); }
   if(gombkod == 'E5') { dr(); }

   if(gombkod == 'F1') { sto(1); }
   if(gombkod == 'F2') { rcl(1); }
   if(gombkod == 'F3') { stoplus(1); }
   if(gombkod == 'F4') { gomb('pow('); }
   if(gombkod == 'F5') { gomb('powx('); }

   if(gombkod == 'G1') { sto(2); }
   if(gombkod == 'G2') { rcl(2); }
   if(gombkod == 'G3') { stoplus(2); }
   if(gombkod == 'G4') { gomb('sqrt('); }
   if(gombkod == 'G5') { gomb('sqrtx('); }

   if(gombkod == 'H1') { gomb(7); }
   if(gombkod == 'H2') { gomb(8); }
   if(gombkod == 'H3') { gomb(9); }
   if(gombkod == 'H4') { gomb('('); }
   if(gombkod == 'H5') { gomb(')'); }

   if(gombkod == 'I1') { gomb(4); }
   if(gombkod == 'I2') { gomb(5); }
   if(gombkod == 'I3') { gomb(6); }
   if(gombkod == 'I4') { gomb('-'); }
   if(gombkod == 'I5') { gomb('/'); }

   if(gombkod == 'J1') { gomb(1); }
   if(gombkod == 'J2') { gomb(2); }
   if(gombkod == 'J3') { gomb(3); }
   if(gombkod == 'J4') { gomb('+'); }
   if(gombkod == 'J5') { gomb('*'); }

   if(gombkod == 'K1') { gomb(0); }
   if(gombkod == 'K2') { gomb('00'); }
   if(gombkod == 'K3') { gomb('000'); }
   if(gombkod == 'K4') { gomb('.'); }
   if(gombkod == 'K5') { gomb('E'); }

   if(gombkod == 'L1') { gomb('prc('); }
   if(gombkod == 'L2') { gomb('plusprc('); }
   if(gombkod == 'L3') { gomb('multprc('); }
   if(gombkod == 'L4') { eredmeny_torol(); }
   if(gombkod == 'L5') { eredmeny(''); }


}






function bevitel_torol()
{
   eval("proginput" + egyedi + ".value = ''");
}

function prog_save()
{
 eval("progszoveg = proginput" + egyedi + ".value");
}

