﻿var planck = 6.6260755E-34;
var boltz  = 1.380658E-23;
var el_charge = 1.60217733E-19;
var avogadro  = 6.0221367E23;
var sp_light = 2.99792458E8;
var prme_vac = 12.566370614E-7;
var prmi_vac = 8.854187817E-12;
var fn_struc = 1 / 137.0359895;
var elec_mss = 9.1093897E-31;
var prot_mss = 1.6726231E-27;
var neut_mss = 1.6749286E-27;
var bohr_mag = 9.2740154E-24;
var nucl_mag = 5.0507866E-27;
var free_e_g = 2.002319304386;
var faraday  = 9.64846E4;
var gravity  = 9.80665;

function billentyu(ertek)
{
  k=(window.event)?event.keyCode:ertek.keyCode;

  if(progablak_volt==1){eval("progszoveg=proginput"+egyedi+".value");}

  (k>=96)&&(k<=105)?gomb(k-96):1;
  (k>=48)&&(k<=57)?gomb(k-48):1;

  k==110?gomb('.'):1;     
  k==107?gomb('+'):1;
  k==109?gomb('-'):1;
  k==106?gomb('*'):1;
  k==111?gomb('/'):1;

  if (hotkeys_ertek == 1)
  {

if(k==72)change_hist();
if(k==65)hiquest();
if(k==83)change_stat();
if(k==78)change_conv();
if(k==79)change_hot();
if(k==80)change_prog();
if(k==83)change_set();

if(k==32)eredmeny_torol('');//space=eredmény
if(k==13)eredmeny_torol('');//enter=eredmény

if(k==70)gomb('(');
if(k==71)gomb(')');

if(k==37)bal();
if(k==39)jobb();
if(k==67)torol();
if(k==66)vissza();
if(k==68)del();
if(k==84)top();
if(k==77)bottom();
if(k==73)insert();

if(k==82)dr();
  }

}


function gomb(vmi)
{

 if(vmi=='idez')vmi='\"';
 if(folytat==0){topdisplay.innerHTML='';bottomdisplay.innerHTML='';folytat=1;}
 if(torolni_lenn==1){bottomdisplay.innerHTML='';torolni_lenn=0;}
 felso=topdisplay.innerHTML;

 if(bevitel=='insert')
 {
  if(mutato!=1)
  {
    kimenet=felso.substr(0,mutato-1)+vmi+felso.substr(mutato-1,felso.length-1); 
    topdisplay.innerHTML=kimenet;
  }else{topdisplay.innerHTML=vmi+topdisplay.innerHTML;}
  mutato++;
  rajzol();
  }
 else{topdisplay.innerHTML=topdisplay.innerHTML+vmi;}

 meretez();
}


function G(x){gomb(x);}
function K(x){kerekit_allit(x);}


function meretez()
{
  if(topdisplay.innerHTML.length>=33)
  {
  topdisplay.style.letterSpacing='-1px';
  topdisplay.style.fontWeight='normal';
  topdisplay.style.fontSize='11px';
  cursor.style.letterSpacing='-1px';
  cursor.style.fontWeight='normal';
  cursor.style.fontSize='11px';
  }
  else
  {
  topdisplay.style.letterSpacing='0 px';
  topdisplay.style.fontWeight='bold';
  topdisplay.style.fontSize='14px';
  cursor.style.letterSpacing='0 px';
  cursor.style.fontWeight='bold';
  cursor.style.fontSize='14px';
  }
}


function eredmeny_nemtorol()
{
   folytat = 1;
   torolni_lenn = 1;
   bottomdisplay.innerHTML = '';
   eredmeny('');
}

function eredmeny_torol()
{
   folytat = 0;
   torolni_lenn = 1;
   bottomdisplay.innerHTML = '';
   eredmeny('');
}


function eredmeny(megj)
{
  
    if(inputra_var==1)
    {
        valtozo = sor.charAt(5) + '' + sor.charAt(6);
        eval("D" + valtozo + " = topdisplay.innerHTML");
        inputra_var = 0;
        prg_counter++;
        honnan = prg_counter;
        program_run(honnan);
    }

    else if(inputra_var==2)
    {
        inputra_var = 0;
        prg_counter++;
        honnan = prg_counter;
        program_run(honnan);
    }

    else if(inputra_var==3)
    {
        jatek_ok();
    }

    else 
    {
       if(topdisplay.innerHTML==''){return;}
       zj=0;
       str_kezd=str_veg='';
       txt=topdisplay.innerHTML;
       for(i=0;i<txt.length;i++) 
          { txt.charAt(i)=='('?zj++:1;
            txt.charAt(i)==')'?zj--:1;
          }
       if(zj<0)for(i=0;i>zj;i--)str_kezd+='(';
       if(zj>0)for(i=0;i<zj;i++)str_veg +=')';
       topdisplay.innerHTML=str_kezd+txt+str_veg;

       try 
       {
          if (kerekites != 10) 
          { 
             bottomdisplay.innerHTML=kerekit(eval(szorzasjel(topdisplay.innerHTML)),kerekites);
          }
          else 
          {
             bottomdisplay.innerHTML=eval(szorzasjel(topdisplay.innerHTML)); 
          }

          mit = bottomdisplay.innerHTML;
          if(mit.indexOf("e")>0)
          {
              ki = '';
              for(k=0;k<=12;k++) { if(mit.charAt(k)=='e') {break;} ki = ki + '' + mit.charAt(k);}
              honnan = mit.indexOf("e");
              bottomdisplay.innerHTML = kerekit(ki,kerekites) + "e" + mit.substring(honnan+1);
          }
  
          if(bottomdisplay.innerHTML=='15121802'){game();}
       }
 
       catch (e)
          { 
            bf = topdisplay.innerHTML;
            inconnu = 1;
            if(bf.indexOf("fact()")>=0) {inconnu=0;hibaablak("fact");}
            if(bf.indexOf("sin()")>=0)  {inconnu=0;hibaablak("sin");}
            if(bf.indexOf("cos()")>=0)  {inconnu=0;hibaablak("cos");}
            if(bf.indexOf("tg()")>=0)   {inconnu=0;hibaablak("tg");}
            if(bf.indexOf("asin()")>=0) {inconnu=0;hibaablak("asin");}
            if(bf.indexOf("acos()")>=0) {inconnu=0;hibaablak("acos");}
            if(bf.indexOf("atg()")>=0)  {inconnu=0;hibaablak("atg");}
            if(bf.indexOf("sqrt()")>=0) {inconnu=0;hibaablak("sqrt");}
            if(bf.indexOf("pow()")>=0)  {inconnu=0;hibaablak("pow");}
            if(bf.indexOf("sqrtx()")>=0){inconnu=0;hibaablak("sqrtx");}
            if(bf.indexOf("powx()")>=0) {inconnu=0;hibaablak("powx");}
            if(bf.indexOf("log()")>=0)  {inconnu=0;hibaablak("log");}
            if(bf.indexOf("ln()")>=0)   {inconnu=0;hibaablak("ln");}
            if(bf.indexOf("prc()")>=0)     {inconnu=0;hibaablak("prc");}
            if(bf.indexOf("plusprc()")>=0) {inconnu=0;hibaablak("plusprc");}
            if(bf.indexOf("multprc()")>=0) {inconnu=0;hibaablak("multprc");}
            if(bf.indexOf("solve()")>=0)   {inconnu=0;hibaablak("solve");}
            if(inconnu==1){hibaablak("inconnu");}
            bottomdisplay.innerHTML='ERROR'; 
          }
   if(bottomdisplay.innerHTML == 'NaN') { bottomdisplay.innerHTML = 'ERROR'; }
   history_ad(megj);
   nekerekits = 0;
   try {
          window.frames['book'].document.kuld.mezo1.value=topdisplay.innerHTML;
          window.frames['book'].document.kuld.mezo2.value=bottomdisplay.innerHTML;
          window.frames['book'].document.kuld.submit(); 
          window.setTimeout("window.frames['book'].document.location = 'book.html';",300);
    }catch(e){1;}
}


function history_ad(megjegyz)
{
    if((topdisplay.innerHTML!=last_calc)||(bottomdisplay.innerHTML!=last_ans)||(megjegyz!=last_megj)||(megjegyz.indexOf('+')>0))
     {
       felso=topdisplay.innerHTML;
       felso2="'" + felso + "'";
       also="'("+bottomdisplay.innerHTML+")'"; // ez itt a zárójeles rész

       if(history_ertek == 1)
       {
          eredki="ERROR<br>";
          if(also!="'(ERROR)'"){eredki= '<a href="javascript: gomb('+also+');">' 
                  +bottomdisplay.innerHTML+megjegyz+'</a><br>';}

          hozzafuz='<a href="javascript:replay('+felso2+');">'+felso+'</a> = '+eredki;
 
          if(hist_mutat==1)
          {
             his_tart.innerHTML+=hozzafuz;
             str_history=his_tart.innerHTML;
          }
          else{str_history+=hozzafuz;}
       }
      }
      last_calc=topdisplay.innerHTML;
      last_ans =bottomdisplay.innerHTML;
      last_megj=megjegyz;
   }
}




function kerekit(mit,jegyek)
{
  if(nekerekits==1)return mit;
  return Math.floor(mit*Math.pow(10,jegyek)+0.5)/Math.pow(10,jegyek);
}


function kerekit_allit(mennyi)
{
  kerekites=mennyi;
  spandisp.innerHTML="disp: "+kerekites;
  if(kerekites==10)spandisp.innerHTML="disp: "+'x';
  for(i=0;i<=10;i++)eval("ker"+i+""+egyedi+".style.background='#eee'");
  eval("ker"+kerekites+""+egyedi+".style.background='lightblue'");
}


function hot_all(mennyi)
{
  hotkeys_ertek=mennyi;
  eval("hot"+0+""+egyedi+".style.background='#eee'");
  eval("hot"+1+""+egyedi+".style.background='#eee'");
  eval("hot"+mennyi+""+egyedi+".style.background='lightblue'");
}


function his_all(mennyi)
{
  history_ertek = mennyi;
  eval("his"+0+""+egyedi+".style.background='#eee'");
  eval("his"+1+""+egyedi+".style.background='#eee'");
  eval("his"+mennyi+""+egyedi+".style.background='lightblue'");
}

function hiquest()
{
  change_hist();
  str_history!=''?biztkerdes.style.display='block':biztkerdes2.style.display='block';
  window.setTimeout("biztkerdes2.style.display='none';",800);
}

function hicancel()
{
  biztkerdes.style.display='none';
}


function hiclear()
{
 if(hist_mutat==1)his_tart.innerHTML=''; 
 str_history=last_calc=last_ans='';
 hicancel();
}


function about(){topdisplay.innerHTML="AVASMATH 80, ver. 0.1";}


function replay(vmi)
{
folytat=1;
topdisplay.innerHTML=vmi;
bottomdisplay.innerHTML='';
}


function torol()
{
folytat=1; 
bottomdisplay.innerHTML="";
topdisplay.innerHTML="";
meretez();
}


function del()
{
folytat=1; 
sor=topdisplay.innerHTML;
sor=sor.substr(0,mutato-1)+sor.substr(mutato,sor.length-1);
topdisplay.innerHTML=sor;
meretez();
}


function vissza()
{
folytat=1; 
topdisplay.innerHTML=topdisplay.innerHTML.slice(0,-1);
meretez();
}


function jobb()
{
folytat=1; 
mutato++;
rajzol();
}

function bal()
{
folytat=1; 
if(mutato>1){mutato--;}
rajzol();
}

function top()
{
folytat=1; 
mutato=1;
rajzol();
}

function bottom()
{
folytat=1; 
mutato=topdisplay.innerHTML.length;
rajzol();
}


function insert()
{
folytat=1; 
ujbevitel='normal';
if(bevitel=='normal')ujbevitel='insert';
bevitel=ujbevitel;
spanins.style.color='#999';
if(bevitel=='insert')spanins.style.color='black';
rajzol();
}


function resetx()
{
mutato=1;
rajzol();
if(bevitel=='insert')insert();
if(fok=='deg')dr();
}


function rajzol()
{
kitolt='';
for(i=1;i<mutato;i++)kitolt+="&nbsp;";
jel='-';
if(bevitel=='insert')jel='<span style="color:black;background:black;">-</span>';
cursor.innerHTML=kitolt+jel;
}


function szelesit()
{
display.style.width = "500px";
}


function ra(x)
{
 s='86d0a0';
 (x== 5)||(x==10)?s='ffa89a':1;
 (x>=11)&&(x<=35)?s='fff730':1;
 ((x>=26)&&(x<=28))||((x>=31)&&(x<=33))?s='ffba15':1;
 x>=36?s='dddddd':1;
 ((x>=36)&&(x<=38))||((x>=41)&&(x<=43))||((x>=46)&&(x<=48))||(x==51)?s='ffffaa':1;
 x==60?s='fff730':1;
 eval("g"+x+".style.backgroundColor='#"+s+"'");
}

function le(x)
{
 s='66B080';
 (x== 5)||(x==10)?s='ff786a':1;
 (x>=11)&&(x<=35)?s='ffd700':1;
 ((x>=26)&&(x<=28))||((x>=31)&&(x<=33))?s='ffa500':1;
 x>=36?s='cdcdcd':1;
 ((x>=36)&&(x<=38))||((x>=41)&&(x<=43))||((x>=46)&&(x<=48))||(x==51)?s='f8f8f8':1;
 x==60?s='ffd700':1;
 eval("g"+x+".style.backgroundColor='#"+s+"'");
}


function dr()
{
  fok=fok=='deg'?'rad':'deg';
  rad.style.color=deg.style.color='#999';
  fok=='deg'?deg.style.color='black':rad.style.color='black';
}


function sto(x)
{
  if(topdisplay.innerHTML=='')return;
  x=kerekit(x,kerekites);
  folytat=0;
  eredmeny(" (M"+x+")");
  if(x==1)
  {
  mem1=bottomdisplay.innerHTML;
  g26.title=g27.title=g28.title=mem1;
  bottomdisplay.innerHTML='M1: '+bottomdisplay.innerHTML;
  if(mem1!=0){spanmem1.style.color='black';} 
  else{spanmem1.style.color='#999';}
  }
  else
  {
  mem2=bottomdisplay.innerHTML;
  g31.title=g32.title=g33.title=mem2;
  bottomdisplay.innerHTML='M2: '+bottomdisplay.innerHTML;
  if(mem2!=0){spanmem2.style.color='black';} 
  else{spanmem2.style.color='#999';}
  }
}

function rcl(x)
{
  y=(x==1)?mem1:mem2;
  topdisplay.innerHTML+="("+y+")";
}



function stoplus(x)
{
  if(topdisplay.innerHTML=='')return;
  x=kerekit(x,kerekites);
  folytat = 0;
  eredmeny(" (+M"+kerekit(x,kerekites)+")");
  if(x==1)
  {
  mem1=mem1*1+1*(bottomdisplay.innerHTML);
  bottomdisplay.innerHTML='M1: '+kerekit(mem1,kerekites)*1;
  }
  else
  {
  mem2=mem2*1+1*(bottomdisplay.innerHTML);
  bottomdisplay.innerHTML='M2: '+kerekit(mem2,kerekites)*1;
  }

  if(history_ertek == 1)
  {
     str_history=str_history.substring(0,str_history.length-9);
     str_history+=": "+kerekit(eval("mem"+x),kerekites)+")</a></br>";
     if(hist_mutat==1){his_tart.innerHTML=str_history;}

     if(mem2!=0){spanmem2.style.color='black';g31.title=g32.title=g33.title=mem2;} 
            else{spanmem2.style.color='#999';}
     if(mem1!=0){spanmem1.style.color='black';g26.title=g27.title=g28.title=mem1;}
            else{spanmem1.style.color='#999';}
  }
}


function menutorol(y)
{
  hicancel();
  for(i=1;i<=6;i++){eval("menu"+i+".style.fontWeight='normal'");}
  his_tart.innerHTML='';his_tart.style.fontFamily='arial';
  eval("menu"+y+".style.fontWeight='bold'");
  hist_mutat = 0;
}


function change_hist()
{
  menutorol(1);
  his_tart.innerHTML=str_history;
  his_tart.style.fontFamily='courier';
  hist_mutat=1;
  progablak_volt=0;
}


function change_stat()
{
menutorol(2);
j='<a href="javascript:';
his_tart.innerHTML=j+'stolist(1)">sto List1</a> | '
+j+'rcllist(1)">rcl List1</a> <br> ' 
+j+'stolist(2)">sto List2</a> | ' 
+j+'rcllist(2)">rcl List2</a> | ' 
+j+'filllist()">fill List2</a> (List2: weight) '
+'<hr align="left" class="kicsi">' 
+j+'G(\'min()\')">min</a> | '
+j+'G(\'max()\')">max</a> | '
+j+'G(\'avg()\')">avg</a> | ' 
+j+'G(\'med()\')">med</a> | '
+j+'G(\'count()\')">count</a><br>'
+j+'G(\'sum()\')">sum</a> | '
+j+'G(\'sump()\')">sump</a> | '
+j+'G(\'devia()\')">devia</a> | '
+j+'G(\'varia()\')">varia</a><br>'
+'<hr align="left" class="kicsi">';
progablak_volt = 0;
}


function change_conv()
{
menutorol(3);
j='<a href="javascript:';
his_tart.innerHTML='length<br>'
+j+'G(\'km_miles(\')">km_miles</a> | '
+j+'G(\'miles_km(\')">miles_km</a>'
+'<br>'
+j+'G(\'cm_inch(\')">cm_inch</a> | '
+j+'G(\'inch_cm(\')">inch_cm</a>'
+'<hr align="left" class="kicsi">' 
+'weight<br>'
+j+'G(\'gr_ounce(\')">gr_ounce</a> | '
+j+'G(\'ounce_gr(\')">ounce_gr</a>'
+'<hr align="left" class="kicsi">'
+'volume<br>'
+j+'G(\'lit_gal(\')">lit_gal</a> | '
+j+'G(\'gal_lit(\')">gal_lit</a>'
+'<hr align="left" class="kicsi">'
+'temperature<br>'
+j+'G(\'cels_kelv(\')">cels_kelv</a> | '
+j+'G(\'kelv_cels(\')">kelv_cels</a>'
+'<hr align="left" class="kicsi">';
progablak_volt = 0;
}


function change_prog()
{
egyedi++;
menutorol(4);
j='<a href="javascript:';
his_tart.innerHTML =  '<b>Calprola</b> program code window<br>'
+'<textarea id="proginput' + egyedi + '" style="width:278px;height:120px;border:1px solid;border-color:#999; background:#f3f3f3;"></textarea><br>'
+j+'prog_indit()"><b>run</b></a> | '
+j+'bevitel_torol()">clear</a> | '
+j+'displayinput()">disp input</a> | '
+j+'prog_save()">save</a>'
+'  | '
+'<span style="font-size: 12px;">hkeys: '
+j+'hot_all(1);" id="hot1' + egyedi + '">\240on\240</a> | '
+j+'hot_all(0);" id="hot0' + egyedi + '">\240off\240</a>'
+' </span><hr align="left" class="kicsi">';

eval("hot"+hotkeys_ertek+""+egyedi+".style.background='lightblue'");
eval("proginput"+egyedi+".value=progszoveg");
progablak_volt=1;      
}


function skeleton() 
{
  ki = '#BTN A1 // clear\n#\n#END';
  eval("proginput" + egyedi + ".value = ki");
}



function change_set()
{
egyedi++;
menutorol(5);
j='<a href="javascript:';
ki='';
for(i=0;i<=9;i++)ki+=j+'K('+i+');" id="ker'+i+''+egyedi+'">\240'+i+'\240</a> | '
his_tart.innerHTML='display <br>'+ki
+j+'K(10);" id="ker10' + egyedi + '">\240ext\240</a>'
+' <hr align="left" class="kicsi">'
+'hotkeys <br>'
+j+'hot_all(1);" id="hot1'+egyedi+'">\240on\240</a> | '
+j+'hot_all(0);" id="hot0'+egyedi+'">\240off\240</a>'
+' <hr align="left" class="kicsi">'
+'history <br>'
+j+'his_all(1);" id="his1'+egyedi+'">\240on\240</a> | '
+j+'his_all(0);" id="his0'+egyedi+'">\240off\240</a>'
+' <hr align="left" class="kicsi">';

eval("ker"+kerekites+""+egyedi+".style.background='lightblue'");
eval("hot"+hotkeys_ertek+""+egyedi+".style.background='lightblue'");
eval("his"+history_ertek+""+egyedi+".style.background='lightblue'");
progablak_volt = 0;
}



function change_hot()
{
menutorol(6);
j='<a href="javascript:';
his_tart.innerHTML =j+'G(\'nCr(\')">nCr</a> | '
+j+'G(\'nPr(\')">nPr</a> '
+'<hr align="left" class="kicsi">'
+j+'G(\'A\')">A</a> | '
+j+'G(\'B\')">B</a> | '
+j+'G(\'C\')">C</a> | '
+j+'G(\'D\')">D</a> | '
+j+'G(\'E\')">E</a> | '
+j+'G(\'F\')">F</a> | '
+j+'G(\'idez\')">\"</a> '
+'<hr align="left" class="kicsi">'
+j+'G(\'dec_bin(\')">dec_bin</a> | '
+j+'G(\'dec_oct(\')">dec_oct</a> | '
+j+'G(\'dec_hex(\')">dec_hex</a><br>'
+j+'G(\'bin_dec(\')">bin_dec</a> | '
+j+'G(\'oct_dec(\')">oct_dec</a> | '
+j+'G(\'hex_dec(\')">hex_dec</a> | '
+j+'G(\'sys_sys(\')">sys_sys</a>'
+'<hr align="left" class="kicsi">'
+' physical constants <br> '
+j+'G(\'planck\')">planck</a> | '
+j+'G(\'boltz\')">boltz</a> | '
+j+'G(\'el_charge\')">el_charge</a> | '
+j+'G(\'avogadro\')">avogadro</a><br>'
+j+'G(\'sp_light\')">sp_light</a> | '
+j+'G(\'prme_vac\')">prme_vac</a> | '
+j+'G(\'prmi_vac\')">prmi_vac</a> | '
+j+'G(\'fn_struc\')">fn_struc</a><br>'
+j+'G(\'elec_mss\')">elec_mss</a> | '
+j+'G(\'prot_mss\')">prot_mss</a> | '
+j+'G(\'neut_mss\')">neut_mss</a> | '
+j+'G(\'bohr_mag\')">bohr_mag</a><br>'
+j+'G(\'nucl_mag\')">nucl_mag</a> | '
+j+'G(\'free_e_g\')">free_e_g</a> | '
+j+'G(\'faraday\')">faraday</a> | '
+j+'G(\'gravity\')">gravity</a>'  
+'<hr align="left" class="kicsi">'
progablak_volt = 0;
}


function displayinput()
{
  szoveg = '';
  eval("szoveg=proginput"+egyedi+".value");
  if(szoveg.length<42){topdisplay.innerHTML=szoveg;}
}



function szorzasjel(inp)
{
 function nm(ertek)
        {  var ok=0; var i; 
           for(i=0;i<=11;i++)if('0123456789@@@'.charAt(i)==ertek)ok=1;
           return ok;}

 var ki='';var i;var ad='';
 for(i=0;i<inp.length;i++)
   {  ad=inp.charAt(i);
      if(inp.charAt(i)+inp.charAt(i+1)==')('){ad=')*(';i++;}ki+=ad;
   }
 inp = ki;
 ki = '';
 for(i=0;i<inp.length;i++)
   {  ad=inp.charAt(i);
      if((nm(inp.charAt(i)))&&(inp.charAt(i+1)=='(')){ad=inp.charAt(i)+'*(';i++;}ki+=ad;
   }
 inp = ki;
 ki = '';
 for(i=0;i<inp.length;i++)
   {  ad=inp.charAt(i);
      if((inp.charAt(i)==')')&&(nm(inp.charAt(i+1)))){ad=')*'+inp.charAt(i+1);i++;}ki+=ad;
   }
 return ki;
}

