
// KALKUU - Calculadora científica
// Based on Scientific Calculator by Eni Generalic

var numero = "0";
var punto = 0;
var expo = 0;
var exponente = 3;
var solucion = 0;
var decimal = 0;
var entrar = "";

function f_memoria(operador) {
	document.calculadora.operacion.focus();

	if (operador == 1) {		// M+ 
		document.calculadora.memoria.value = (document.calculadora.memoria.value)*1 + (document.calculadora.resultado.value)*1;
	}
	else if (operador == 2)	{	// MR
		var memoria = document.calculadora.memoria.value;
		if (memoria==0 || f_caracter(memoria.charAt(0))) {memoria = ""};
		document.calculadora.operacion.value += memoria;
	}
	else if (operador == 3) {	// CLS
		if (document.calculadora.operacion.value == "") {
			document.calculadora.resultado.value = "";
		}
		else {
			document.calculadora.operacion.value = "";
		}
	}
	else	if (operador == 4) {		// M- 
		document.calculadora.memoria.value = (document.calculadora.memoria.value)*1 - (document.calculadora.resultado.value)*1;
	}
	else if (operador == 5) {	// MC
		document.calculadora.memoria.value = "";
	}
}


function f_display(nuevocaracter) {
	if (nuevocaracter=="")
		{document.calculadora.operacion.focus();}
	else
		{document.calculadora.resultado.select();}
}


function f_anyadirnumero(nuevocaracter) {
  if(document.location.href.substring(13,15) == "lk")
	{
    document.calculadora.operacion.focus();
	  document.calculadora.operacion.value += nuevocaracter;
	}
}


eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('g h(a){3(4.j.k.l(m,n)=="o"){9 b="";9 c=0;3(a>=1){3(4.5.8.6==""){2=4.5.e.6}d{2=4.5.8.6;3(p(2.7(0))){2=4.5.e.6+2}}}q(9 i=0;i<2.f;i++){3(2.7(i)==","){b+="."}d 3(2.7(i)==" "){}d{b+=2.7(i)}}3(r(2.7(2.f-1))){s t}b=u("1*"+b);3(a>1){b=v(a,b)}4.5.w.6=b;x(b);4.5.8.6="";4.5.8.y()}}',35,35,'||numero|if|document|calculadora|value|charAt|operacion|var||||else|resultado|length|function|f_calcular||location|href|substring|13|15|lk|f_anyadirresultado|for|operador|return|false|eval|f_matematica|oldresultado|f_redondear|focus'.split('|'),0,{}))


eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('u v(a,b){0(g.w.x.y(A,h)=="B"){C(D){0(a==2){b=d(b,2)}c 0(a==3){b=F(b)}c 0(a==4){b=-b}c 0(a==5){b=i(b)}c 0(a==6){b=d(E,b)}c 0(a==7){b=1/b}c 0(a==8){b=i(b)/G}c 0(a==9){b=d(10,b)}c 0(a>=10&&a<=j){0(a==10){b=H(b)}c 0(a==I){b=J(b)}c 0(a==j){b=K(b)}0(g.k.l[1].m){b=(b*o)/p}}c 0(a>=q&&a<=r){0(g.k.l[1].m){e=(b/o)*p}c{e=b}0(a==q){b=L(e)}c 0(a==h){b=M(e)}c 0(a==r){b=N(e)}}c 0(a==O){b=b/P}c 0(a==Q){b=b/R}c 0(a==S){b=T(b)}c 0(a==U){f=s("t f:",3);b=d(b,f)}c 0(a==V){f=s("t núW X Yíz:",3);b=d(b,(1/f))}Z b}}}',62,63,'if||||||||||||else|pow|radianes|exponente|document|15|log|12|calculadora|grados|checked||180|PI|14|16|prompt|Introduce|function|f_matematica|location|href|substring||13|lk|with|Math||sqrt|LN10|atan|11|acos|asin|tan|cos|sin|17|100|18|1000000|20|f_factorial|21|22|mero|de|ra|return|'.split('|'),0,{}))


function f_redondear(enumero) {

	decimal=parseFloat(document.calculadora.f_parte.options[document.calculadora.f_parte.selectedIndex].value);
	var strnumero = enumero + " ";
	if (strnumero.charAt(0) == ".") {strnumero = "0" + strnumero};
	var intnumero = strnumero.length - 1;
	f_decop(strnumero);

	if (intnumero > 16 && expo == -1) {
		if (decimal == -1) {decimal = 14;}
		strnumero = f_parte(strnumero.substring(0,intnumero)) + " ";
		intnumero = strnumero.length - 1;
		f_decop(strnumero);
	}

	if (decimal >= 0 && decimal != 14) {
		if (punto > 0) {
			var respuesta = f_parte(strnumero.substring(0,intnumero));
		}
		else {
			enumero = strnumero.substring(0,intnumero);
			if (decimal > 0) {
				enumero += ".";
				for (var n = 0; n < decimal; n++) {
					enumero += "0";
				}
			}
			var respuesta = enumero;
		}
	}
	else {
		decimal = 14;
		var respuesta = f_parte(strnumero);
	}

	if (respuesta.charAt(0) == ".") {respuesta = "0" + respuesta;}

	document.calculadora.resultado.value = respuesta;
}


function f_decop(nuevonumero) {
	punto = 0;
	expo = 0;

	punto = nuevonumero.indexOf(".");
	expo = nuevonumero.indexOf("e");
}


function f_parte(nuevonumero) {
with (Math) {

	if (expo == -1) {
		var longitud = punto;
		if (longitud == -1) {longitud = nuevonumero.length;}
		var derecha = "";

		if (longitud > 16) {
			var temporal = round(nuevonumero*pow(10, 18)) + " ";
			var nuevoe = temporal.indexOf("e");
			var izquierda = (temporal.substring(0,nuevoe));

			izquierda = round(izquierda*pow(10, 15))/pow(10, 15) + " ";
			derecha = (temporal.substring(nuevoe+2,temporal.length-1));
			derecha = "e+" + (derecha-18);
		}
		else {
			var izquierda = round(nuevonumero*pow(10, decimal))/pow(10, decimal) + " ";
		}
	}
	else {
		var izquierda = nuevonumero.substring(0,expo);
		var derecha = nuevonumero.substring(expo,nuevonumero.length);
		decimal=10;
		izquierda = round(izquierda*pow(10, decimal))/pow(10, decimal) + " ";
	}

	izquierda = izquierda.substring(0,izquierda.length - 1);

	if (izquierda.charAt(0) == ".") {izquierda = "0" + izquierda;}

	if (decimal < 14) {
		if (izquierda.indexOf(".") == -1 && decimal != 0) {izquierda += ".";}
		var nula = (punto + decimal) - (izquierda.length - 1);
		if (nula > 0 && decimal > 0) {
			for (var n = 0; n < nula; n++) {
				izquierda += "0";
			}
		}
	}
	return (izquierda + "" + derecha);
}
}


function f_factorial(n) {
	if ((n == 0) || (n == 1)) {
		return 1;
	}
	else {
		var respuesta = (n * f_factorial(n-1));
		return respuesta;
	}
}


function f_caracter(caracter) {
	var f_caracter="(ABCDEFGHIKLMNOPRSTUVWXYZ";
	for (var i=0; i<f_caracter.length; i++)
		if (caracter == f_caracter.charAt(i)) {return true;} {return false;}
}


function operador(caracter) {
	var matoperador="*/+-";
	for (var i=0; i<matoperador.length; i++)
		if (caracter == matoperador.charAt(i)) {return true;}
	return false;
}

function f_anyadirresultado(caracter) {
	var f_anyadirresultado="*/+";
	for (var i=0; i<f_anyadirresultado.length; i++)
		if (caracter == f_anyadirresultado.charAt(i)) {return true;}
	return false;
}


function f_pulsarboton(keycode)
{
  if (keycode==13) {f_calcular(1); f_pulsarboton_render("bot_enter");}
  if (keycode==48 || keycode==96) {f_pulsarboton_render("bot_0");}
  if (keycode==49 || keycode==97) {f_pulsarboton_render("bot_1");}
	if (keycode==50 || keycode==98) {f_pulsarboton_render("bot_2");}
	if (keycode==51 || keycode==99) {f_pulsarboton_render("bot_3");}
	if (keycode==52 || keycode==100) {f_pulsarboton_render("bot_4");}
	if (keycode==53 || keycode==101) {f_pulsarboton_render("bot_5");}
	if (keycode==54 || keycode==102) {f_pulsarboton_render("bot_6");}
	if (keycode==55 || keycode==103) {f_pulsarboton_render("bot_7");}
	if (keycode==56 || keycode==104) {f_pulsarboton_render("bot_8");}
	if (keycode==57 || keycode==105) {f_pulsarboton_render("bot_9");}
}

function f_pulsarboton_render(boton)
{
  var clase = document.getElementById(boton).className;
	document.getElementById(boton).className = clase.replace("btn ", "btn_down ");
  setTimeout('document.getElementById("'+boton+'").className = "'+clase+'"', 100);
}

function getClassName(obj) {
  if (typeof obj != "object" || obj === null) return false;
  return /(\w+)\(/.exec(obj.constructor.toString())[1];
}

