var a=0;var d;var dM;var f=false;var h;var m=0;var n=0;var p=0;var r=0;
function a1(){alert("Entrada ilegal")}
function a2(s){alert("Error en cálculo:\n"+s)}
function ce(){d=document.calculadora.expr;h=document.calculadora.h;dM=document.getElementById('M');document.onkeyup=ev}
function ev(a){if(!a){if(window.event)a=window.event;else return}if(typeof(a.keyCode)=='number'){k=a.keyCode}else if(typeof(a.which)=='number'){k=a.which}else if(typeof(a.charCode)=='number'){k=a.charCode}else return;
if(k==8)bs();if(k==13)c();if((k==46)||(k==67))del();if((k>47)&&(k<58))pn(k-48);if((k>95)&&(k<106))pn(k-96);if((k==110)||(k==188)||(k==190))pn(".");if((k==107)||(k==187))pn("+");if((k==109)||(k==189))pn("-");
if((k==106)||(k==191))pn("*");if(k==111)pn("/");if(k==186)pn("^");if(k==69)p2e();if(k==80)e2p()}
function cc(){var s=new String(d.value);var b=s.lastIndexOf('(');if(b>0){var j=s.length;if(cA(s.substring(b+1,j)))d.value=s.substring(0,b+1)+eA(s.substring(b+1,j))}else{if(cA(d.value))d.value=eA(d.value)}}
function ix(a,b){if(a.length!=1)return f;for(i=0;i<b.length;i++)if(a==b.substring(i,i+1))return true;return f}
function pn(x){var s=new String(x);if(r)if(ix(s,"0123456789.e"))del();r=0;if(n)if(ix(s,"0123456789.e"))return;n=0;if(ix(s,"*/^-+"))cc();var z=new String(d.value);var j=z.length;if(s==")"){var b=z.lastIndexOf('(');if(b>=0){if(b==j-1){d.value=z.substring(0,b);return}else{if(cA(z.substring(b+1,j)))
{s=eA(z.substring(b+1,j));d.value=z.substring(0,b);a--}else{a1();return}}}else{a1();return}d.value+=s;if(a<=0)c();return}if(d.value=='0'){if(s=="(")a++;if(s==".")p++;else p=0;if(s=="e"){a1();return}d.value=s;if(ix(s,"+*/^-."))
{d.value="0"+s}}else{var l=z.substring(j-1,j);if(l=="("){if(s=='.')p++;if(s=="(")a++;if(ix(s,"*/^e")){a1();return}}if(l=="e"){if(s=='.'){a1();return}if(ix(s,"*e/^(")){a1();return}}if(l=="."){if(s=='.')
{a1();return}if(ix(s,"*.e/^-+(")){a1();return}}if(ix(l,"+-*/^")){if(s=='.'){if(p){a1();return}p++}if(ix(s,"e*/^-+")){a1();return}if(s=="(")a++}if(ix(l,"0123456789"))
{if(s=="("){a1();return}if(s=='.'){if(p){a1();return}p++}if(ix(s,"*e/^-+"))p=0;if(s=="("){a1();return}}d.value+=s}}
function cA(z){var j=z.length;if(!j)return f;if(j>1){var l=z.substring(j-1,j);if(ix(l,"+-*/^"))return f;var k=z.indexOf('^');if(k>0){var a=z.substring(0,k);var b=z.substring(k+1,j);return(cA(a)&&cA(b))}}
try{ez(z)}catch(e){return f}return true}
function cE(){var z=new String(d.value);if(z.length>1){var j=z.length;var l=z.substring(j-1,j);if(ix(l,"+-*/^")){a2("Falta operando");return f}var i=z.indexOf('^');if(i>0){var a=z.substring(0,i);var b=z.substring(i+1,j);if(!(cA(a)&&cA(b)))
{a2("Operandos erróneos.");return f}}}try{eval(d.value)}catch(e){a2("Operando erróneo.");return f}return true}
function ez(z){h.value=z;return eval(h.value)}
function eA(z){var i=z.indexOf('^');if(i>0){var a=z.substring(0,i);var b=z.substring(i+1,z.length);return Math.pow(eA(a),eA(b))}else{return ez(z)}}
function c(){if(cE()){d.value=eA(d.value);a=0;p=0;r=1;n=0}}
function del(){d.value="0";a=0;p=0;r=0;n=0;if(m==0)dM.innerHTML='&nbsp;';else dM.innerHTML='M'}
function bs(){var z=new String(d.value);var j=z.length;if(j==1){del();return}var l=z.substring(j-1,j);if(l=="(")a--;if(l==")")a++;if(l==".")p--;r=0;n=0;d.value=z.substring(0,j-1)}
function e2p(){if(cE())c();else return;d.value=166.386*eval(d.value)}
function p2e(){if(cE())c();else return;d.value=eval(d.value)/166.386}
function gm(){if(cE())c();else return;m=eval(d.value);del()}
function bm(){m=0;dM.innerHTML='&nbsp;'}
function sm(){if(cE())c();else return;m=eval(eval(d.value)+eval(m));del()}
function rm(){if(cE())c();else return;m=eval(eval(m)-eval(d.value));del()}
function pm(){if(n||!m)return;if(d.value!="0"){var z=new String(d.value);var j=z.length;var l=z.substring(j-1,j);if(ix(l,"0123456789.e")){if(cA(z)){if(eA(z)!=z)return}else{n=0;r=0;return}r=1}if(r)del()}var a=d.value;pn(m);if(a=="0")r=1;n=1}
function pot(y){if(cE())c();else return;d.value=eval(Math.pow(eval(d.value),y))}
function inv(){if(cE())c();else return;d.value='1/'+d.value;if(cE())c();else return}
function neg(){if(cE())c();else return;d.value=-eval(d.value)}
