// Scientific Calculator written by Eni Generalic - http://www.periodni.com/
// Copyright © 2010 by EniG. If you use a variant of this in your page, please email me at enig@periodni.com
// Eni Generalic, Split, Create: 1999/10/14; Update: 2010/11/2
// Atomic Weights of the Elements 2007, Pure & Appl. Chem., Vol. 80, No. 11, (2009) 2131-2156.

var EniG = "  Calc4Chem - www.periodni.com";
var que = "";
var ans = 0;
var mem = 0;

var broj = "0";
var tocka = 0;
var eksp = 0;
var baza = "";
var eksponent = 3;
var rjesenje = 0;
var decimala = 14;
var asf = 0;
var rdg = 0;
var sep1000 = 0;
var enter = "";
var mr = "Memory recall";
var pi = 3.141592653589793;
var e = 2.71828182845905;
var abc = "";


function start(){
	enter = "\r\n";
	mr = document.racunalo.memorija.value;
	document.racunalo.notes.value =  enter + EniG + enter;
	var dan = new Date();
	document.racunalo.notes.value += "    " + dan.toLocaleString() + enter + enter;
	document.racunalo.zadatak.focus();
}

function handleError() {
	//alert("YOU HAVE ENCOUNTERED A JAVASCRIPT ERROR");
	document.racunalo.notes.value += " = Syntax Error\r\n";
	document.racunalo.rezultat.value = "Syntax Error";
 	document.racunalo.zadatak.focus();
	return true;
}

function memory(operator) {

	switch(operator) {
	case 1:		// MS 
		memorija = document.racunalo.rezultat.value;
		memorija = memorija.replace(/ /g,'');
		document.racunalo.memorija.value = memorija;
		document.racunalo.MR.title = mr + " (" + memorija + ")";
		mem = parseFloat(memorija);
		stanje = (document.getElementById('nummem').style.color == '#000') ? '#ccc' : '#000';
		document.getElementById('nummem').style.color = stanje;
		break;    
	case 2:	// MR
		var memorija = document.racunalo.memorija.value;
		if (memorija==0 || slovo(memorija.charAt(0))) {memorija = ""}
		document.racunalo.zadatak.value += memorija;	
		break; 
	case 3:	// CLS
		if (document.racunalo.zadatak.value == "") {document.racunalo.rezultat.value = "";}
		else {document.racunalo.zadatak.value = "";	}	
		break; 
	case 4:	// Mode
		vidi('numformat');
		break; 
	case 5:	// Reset
	//enter = "\r\n";
	//mr = document.racunalo.memorija.value;
	document.racunalo.zadatak.value = "";
	document.racunalo.rezultat.value = "";
	document.racunalo.notes.value =  enter + EniG + enter;
	var dan = new Date();
	document.racunalo.notes.value += "    " + dan.toLocaleString() + enter + enter;
	//document.racunalo.zadatak.focus();
	
		//document.racunalo.notes.value = enter + EniG + enter;
		document.racunalo.memorija.value = "";
		document.racunalo.MR.title = "Memory recall";
		decimala = 14;
		asf = 0;
		rdg = 0;
		sep1000 = 0;
		mem = 0;
		ans = 0;
		document.getElementById('numauto').style.color = '#000';
		document.getElementById('numsci').style.color = '#ccc';
		document.getElementById('numfix').style.color = '#ccc';
		document.getElementById('nummem').style.color = '#ccc';
		document.getElementById('numrad').style.color = '#000';
		document.getElementById('numdeg').style.color = '#ccc';
		document.getElementById('numgrad').style.color = '#ccc';	
		break; 
	}

	document.racunalo.zadatak.focus();
}

function dodajBroj(noviznak) {
	document.racunalo.zadatak.focus();
	document.racunalo.zadatak.value += noviznak
}


function dodajConst(noviznak) {
	document.racunalo.zadatak.focus();
	document.racunalo.zadatak.value += noviznak;
	
	vidi('konstante')
}


function izracunaj(zarez) {
	var pitanje = "";
	var odgovor = "";
	var mem = 0;

  //Error handling in JavaScript:  
  try { 	
	if (zarez >= 1) {
		if (document.racunalo.zadatak.value == "") {
			broj = document.racunalo.rezultat.value;
		}
		else {
	    	broj = document.racunalo.zadatak.value;
			if (ubacirezultat(broj.charAt(0))) {
				broj = document.racunalo.rezultat.value + broj;
			}
		}
	}

	for (var i=0; i<broj.length; i++) {
		var mm = broj.charAt(i);
		var mmup = broj.charAt(i+1);
		var mmdn = broj.charAt(i-1);

		if (mm == ",") {mm = ".";}
		else if (mm == "}" || mm == "]") {mm = ")";}
		else if (mm == "{" || mm == "[") {mm = "(";}
		else if (mm == " " || mm == "=") {mm = "";}
		else if (mm == "*" && mmup == "*") {mm = "^"; i += 1;}
		else if (mm == "+" && mmup == "-") {mm = "-"; i += 1;}
		else if (mm == "E" && kemilimat(mmup)) {mm = "e";}
	
		if (mm == "." && BrojAtoma(mmdn)==false) {mm = "0.";}
		else if (velikoslovo(mm)) {var kem = 1;}

		if (pitanje == "0") {
			if (operator(mm)) {}
			else if (mm != ".") {pitanje = "";}
		}
		//if (i == 0) {
		//	if (mm == "0" && mmup == "0") {mm = "";}
		//}

		pitanje += mm;
	}

	if (zarez == 1) {
		document.racunalo.notes.value += pitanje;
		document.racunalo.upit.value = pitanje;
		if (kem == 1) {
			//var atom = "+" + pitanje;
			odgovor = masa(pitanje);
		}
		else {
			odgovor = zagrada(pitanje);
		}
	}
	else {
		for (var i=0; i<pitanje.length; i++) {
			if (operator(pitanje.charAt(i))) {
				pitanje = "(" + pitanje + ")";
				break;
			}
		}
		odgovor = matematika(zarez, pitanje)
	}
	
	odgovor = odgovor.toString();
	document.racunalo.oldrezultat.value = odgovor;
	ans = parseFloat(odgovor);
	
	izgledbroja(odgovor);

	document.racunalo.zadatak.value = "";
 	document.racunalo.zadatak.focus();
  }  
  catch(err) {

	izgledbroja(odgovor);

	document.racunalo.zadatak.value = "";
 	document.racunalo.zadatak.focus();
  }
}


function matematika(zarez, pitanje) {
	var rjesenje = zagrada(pitanje);

	with (Math) {
		if (zarez == 2) {
			pitanje = pitanje + "^2";
			rjesenje = pow(rjesenje, 2)
		}
		else if (zarez == 3) {
			pitanje = pitanje + "^(1/2)";
			rjesenje = sqrt(rjesenje)
		}
		else if (zarez == 4) {
			pitanje = pitanje + "*(-1)";
			rjesenje = -rjesenje
		}
		else if (zarez == 5) {
			pitanje = "ln" + pitanje;
			rjesenje = log(rjesenje)
		}
		else if (zarez == 6) {
			pitanje = "e^" + pitanje;
			rjesenje = pow(E, rjesenje)
		}
		else if (zarez == 7) {
			pitanje = "1/" + pitanje;
			rjesenje = 1/rjesenje
		}
		else if (zarez == 8) {
			pitanje = "log" + pitanje;
			rjesenje = log(rjesenje)/LN10
		}
		else if (zarez == 9) {
			pitanje = "10^" + pitanje;
			rjesenje = pow(10, rjesenje)
		}
		else if (zarez >= 10 && zarez <= 12) {
			if (zarez == 10) {
				pitanje = "atan" + pitanje;
				rjesenje = atan(rjesenje)
			}
			else if (zarez == 11) {
				pitanje = "acos" + pitanje;
				rjesenje = acos(rjesenje)
			}
			else if (zarez == 12) {
				pitanje = "asin" + pitanje;
				rjesenje = asin(rjesenje)
			}

			if (document.racunalo.stupnjevi[1].checked) {rjesenje = (rjesenje * 180) / PI}
			else if (document.racunalo.stupnjevi[2].checked) {rjesenje = (rjesenje * 200) / PI}
		}
		else if (zarez >= 14 && zarez <= 16) {
			if (document.racunalo.stupnjevi[1].checked)
				{radijani = (rjesenje / 180) * PI}
			else if (document.racunalo.stupnjevi[2].checked)
				{radijani = (rjesenje / 200) * PI}
			else
				{radijani = rjesenje}

			if (zarez == 14) {
				pitanje = "tan" + pitanje;
				rjesenje = tan(radijani)
			}
			else if (zarez == 15) {
				pitanje = "cos" + pitanje;
				rjesenje = cos(radijani)
			}
			else if (zarez == 16) {
				pitanje = "sin" + pitanje;
				rjesenje = sin(radijani)
			}
		}
		else if (zarez == 17) {
			pitanje = pitanje + "%";
			rjesenje = rjesenje/100
		}
		else if (zarez == 18) {
			pitanje = pitanje + "ppm";
			rjesenje = rjesenje/1000000
		}
		else if (zarez == 20) {
			pitanje = pitanje + "!";
			rjesenje = factorial(rjesenje)
		}
		else if (zarez == 21) {
			eksponent = prompt("Unesite eksponent / Please enter exponent", 3);
			pitanje = pitanje + "^" + eksponent;
			rjesenje = pow(rjesenje, eksponent)
		}
		else if (zarez == 22) {
			eksponent = prompt("Unesite korijen / Please enter root", 3);
			pitanje = pitanje + "^(1/" + eksponent + ")";
			rjesenje = pow(rjesenje, (1/eksponent))
		}
	}
	document.racunalo.notes.value += pitanje;
	document.racunalo.upit.value = pitanje;
	return rjesenje;
}

function zagrada(xbroj) {
    var intZagClose = 0
    var intZagOpen = 0
	var intXbroj = 0
	var strNoviXbroj = ""
	var strNoviZbroj = "";

	do {
//document.racunalo.notes.value += enter + "intXbroj = " + intXbroj;			2+(2*(2+4)+3)^3+5
		xbroj = xbroj.replace(/--/g,"-1*-");
		intZagClose = xbroj.indexOf(")");
		if (intZagClose != -1) {
			for (var i = intZagClose; i >= 0; i--) {
				if (xbroj.charAt(i)=="(") {
					intZagOpen = i;
					strNoviZbroj = xbroj.substring(intZagOpen+1,intZagClose);
					break;
				}
			}
		}
		else {
			strNoviZbroj = xbroj;
		}

		strNoviZbroj = strNoviZbroj + "*1";
		strNoviZbroj = postotak(strNoviZbroj);
		strNoviZbroj = trigonometrija(strNoviZbroj);
		strNoviZbroj = logaritam(strNoviZbroj);
		strNoviZbroj = potencija(strNoviZbroj);
		strNoviZbroj = racun(strNoviZbroj);

		if (intZagClose != -1) {
			xbroj = xbroj.replace(xbroj.substring(intZagOpen, intZagClose+1), strNoviZbroj);
		}
		else {
			xbroj = strNoviZbroj;
		}	
	}
	while (intZagClose > 0)
	
	return xbroj;
}


function racun(zbroj) {
	with (Math) {zbroj = eval(zbroj);}
	return zbroj;
}


function potencija(ulaz) {
    var intZagClose = 0
    var intZagOpen = 0;

	var intXbroj = ulaz.indexOf("^");  //2+2^3+2,15^2+4
	
	while (intXbroj > 0) {
		for (var i = intXbroj - 1; i >= 0; i--) {
			if (operator(ulaz.charAt(i)) && ulaz.charAt(i-1)!="e") {
				//if (i > 0 && operator(ulaz.charAt(i-1))) {
				intZagOpen = i+1;
				break;
			}
		}
		
		if (ulaz.charAt(i) == "-"){
			if (i == 0) {intZagOpen = 0;}
			else if (i > 0 && operator(ulaz.charAt(i-1))) {intZagOpen = i;}
		}
		
		var strNoviXbroj = ulaz.substring(intZagOpen,intXbroj);
		
		for (var i = intXbroj + 2; i < ulaz.length; i++) {
			if (operator(ulaz.charAt(i)) && ulaz.charAt(i-1)!="e") {intZagClose = i-1; break}
		}
		var strNoviYbroj = ulaz.substring(intXbroj+1,intZagClose+1);
 if (strNoviXbroj == 'e') {strNoviXbroj = e}; //cps	
		with (Math) {
			intXbroj = pow(strNoviXbroj, strNoviYbroj);
		}
		//if (i != 0 && ulaz.charAt(i-1)) {}  // za negativne brojeve -3^2 = -9 ili 9
		
		ulaz = ulaz.replace(ulaz.substring(intZagOpen, intZagClose+1), intXbroj);

		intXbroj = ulaz.indexOf("^");
	}

	return ulaz;
}


function postotak(ulaz) {
    var intZagClose = 0;
    var intZagOpen = 0;

	var strDesnoFun = new Array ("!", "%");

	for (var f = 0; f < 2; f++) {
		var intXbroj = ulaz.indexOf(strDesnoFun[f]);
		
		while (intXbroj > 0) {
			for (var i = intXbroj - 1; i >= 0; i--) {
				if (operator(ulaz.charAt(i)) && ulaz.charAt(i-1)!="e") {intZagOpen = i+1; break}
			}
			var strNoviXbroj = ulaz.substring(intZagOpen,intXbroj);
			intZagClose = intXbroj+1;
			with (Math) {
				if (f == 0) {
					intXbroj = factorial(strNoviXbroj);
				}
				else {
					intXbroj = strNoviXbroj/100;
				}
			}
			ulaz = ulaz.replace(ulaz.substring(intZagOpen, intZagClose), intXbroj);
			intXbroj = ulaz.indexOf(strDesnoFun[f]);
		}
	}

	return ulaz;
}


function trigonometrija(kut) {
    var intZagClose = 0
	var intKut = 0
	var strNoviKut = ""
	var strKrozPi = ")"
	var strPiKroz = ")";
	
	switch(rdg) {
	case 1:
		strKrozPi = ")*180/pi";
		strPiKroz = "*pi/180)";
		break;    
	case 2:
		strKrozPi = ")*200/pi";
		strPiKroz = "*pi/200)";
		break;
	default:
		strKrozPi = ")";
		strPiKroz = ")";
	}

	var strTrigFun = new Array ("sin", "cos", "tan");

	for (var f = 0; f < 3; f++) {
		intKut = kut.indexOf(strTrigFun[f]);

		if (intKut >= 0) {
			do {
//document.racunalo.notes.value += enter + intKut + enter;			cos(2*(3+5)+3*(2+4))+1                        2+(2*(2+cos(4))+3)+(3^3+5)*4
				intZagClose = kut.length;
				for (var i = intKut+4; i < intZagClose; i++) {

					if (operator(kut.charAt(i)) && kut.charAt(i-1)!="e") {
						intZagClose = i;
						strNoviKut = kut.substring(intKut+3, intZagClose);
						break;
					}
				}

				if (intKut>0 && kut.charAt(intKut-1)=="a") {
					intKut = intKut - 1;
					strNoviKut = "a" + strTrigFun[f] + "(" + strNoviKut + strKrozPi;
				}
				else {
					strNoviKut = strTrigFun[f] + "(" + strNoviKut + strPiKroz;
				}

				strNoviKut = racun(strNoviKut);
				strNoviKut = Math.round(strNoviKut * Math.pow(10,14)) / Math.pow(10,14);
				
				kut = kut.replace(kut.substring(intKut, intZagClose), strNoviKut);
				
				intKut = kut.indexOf(strTrigFun[f]);

			}
			while (intKut != -1);
		}
	}

	return kut;
}


function logaritam(kut) {
    var intZagClose = 0
	var intKut = 0
	var strNoviKut = ""
	var strKrozPi = ")"
	var strPiKroz = ")";
// var e = 2.71828182845905	

	var strLogFun = new Array ("ln", "log");

	for (var f = 0; f < 2; f++) {
		intKut = kut.indexOf(strLogFun[f]);

		if (intKut >= 0) {
			do {
				intZagClose = kut.length;
				for (var i = intKut; i < intZagClose; i++) {

					if (operator(kut.charAt(i)) && kut.charAt(i-1)!="e") {
						intZagClose = i;
						strNoviKut = kut.substring(intKut+strLogFun[f].length, intZagClose);
						break;
					}
				}

				if (f == 0) {
					if (intKut>0 && kut.charAt(intKut-1)=="a") {
						intKut = intKut - 1;
						strNoviKut = "pow(E," + strNoviKut + ")";
					}
					else {
						strNoviKut = "log(" + strNoviKut + ")";
					}
				}
				else {
					if (intKut>0 && kut.charAt(intKut-1)=="a") {
						intKut = intKut - 1;
						strNoviKut = "pow(10," + strNoviKut + ")";
					}
					else {
						strNoviKut = "log(" + strNoviKut + ")/LN10";
					}
				}

				strNoviKut = racun(strNoviKut);

				kut = kut.replace(kut.substring(intKut, intZagClose), strNoviKut);
				intKut = kut.indexOf(strLogFun[f]);

			}
			while (intKut != -1);
		}
	}

	return kut;
}


function izazareza(novibroj) {
 with (Math) {

	if (eksp == -1) {
		var duzina = tocka;
		if (duzina == -1) {duzina = novibroj.length}
		var desni = "";

		if (duzina > 16) {
			var privremeni = round(novibroj*pow(10, 16)) + " ";
			var novie = privremeni.indexOf("e");
			var lijevi = (privremeni.substring(0,novie));

			lijevi = round(lijevi*pow(10, 15))/pow(10, 15) + " ";
			desni = (privremeni.substring(novie+2,privremeni.length-1));
			desni = "e+" + (desni-18);
		}
		else {
			var lijevi = round(novibroj*pow(10, decimala))/pow(10, decimala) + " ";
		}
	}
	else {
		var lijevi = novibroj.substring(0,eksp);
		var desni = novibroj.substring(eksp,novibroj.length);

		lijevi = round(lijevi*pow(10, decimala))/pow(10, decimala) + " ";
	}

	lijevi = lijevi.substring(0,lijevi.length - 1);

	if (lijevi.charAt(0) == ".") {lijevi = "0" + lijevi;}

	if (decimala < 14) {
		if (lijevi.indexOf(".") == -1 && decimala != 0) {lijevi += "."}
		var nula = (tocka + decimala) - (lijevi.length - 1);
		if (nula > 0 && decimala > 0) {
			for (var n = 0; n < nula; n++) {
				lijevi += "0";
			}
		}
	}

	return (lijevi + desni);
 }
}


function factorial(n) {
	if ((n == 0) || (n == 1)) {
		return 1;
	}
	else {
		var odgovor = (n * factorial(n-1));
		return odgovor;
	}
}


function masa(atom) {
 with (Math) {
 	var atominfo = false;
	var mm="";
	var mmdn="";
	var mmup="";
	var znak="";
	var izraz="";
	var Pi=pi;
	var H=1.0079;
	var He=4.0026;
	var Li=6.941;
	var Be=9.0122;
	var B=10.811;
	var C=12.011;
	var N=14.007;
	var O=15.999;
	var F=18.998;
	var Ne=20.18;
	var Na=22.99;
	var Mg=24.305;
	var Al=26.982;
	var Si=28.086;
	var P=30.974;
	var S=32.065;
	var Cl=35.453;
	var Ar=39.948;
	var K=39.098;
	var Ca=40.078;
	var Sc=44.956;
	var Ti=47.867;
	var V=50.942;
	var Cr=51.996;
	var Mn=54.938;
	var Fe=55.845;
	var Co=58.933;
	var Ni=58.693;
	var Cu=63.546;
	var Zn=65.38;
	var Ga=69.723;
	var Ge=72.64;
	var As=74.922;
	var Se=78.96;
	var Br=79.904;
	var Kr=83.798;
	var Rb=85.468;
	var Sr=87.62;
	var Y=88.906;
	var Zr=91.224;
	var Nb=92.906;
	var Mo=95.96;
	var Tc=98;
	var Ru=101.07;
	var Rh=102.91;
	var Pd=106.42;
	var Ag=107.87;
	var Cd=112.41;
	var In=114.82;
	var Sn=118.71;
	var Sb=121.76;
	var Te=127.6;
	var I=126.9;
	var Xe=131.29;
	var Cs=132.91;
	var Ba=137.33;
	var La=138.91;
	var Ce=140.12;
	var Pr=140.91;
	var Nd=144.24;
	var Pm=145;
	var Sm=150.36;
	var Eu=151.96;
	var Gd=157.25;
	var Tb=158.93;
	var Dy=162.5;
	var Ho=164.93;
	var Er=167.26;
	var Tm=168.93;
	var Yb=173.05;
	var Lu=174.97;
	var Hf=178.49;
	var Ta=180.95;
	var W=183.84;
	var Re=186.21;
	var Os=190.23;
	var Ir=192.22;
	var Pt=195.08;
	var Au=196.97;
	var Hg=200.59;
	var Tl=204.38;
	var Pb=207.2;
	var Bi=208.98;
	var Po=209;
	var At=210;
	var Rn=222;
	var Fr=223;
	var Ra=226;
	var Ac=227;
	var Th=232.04;
	var Pa=231.04;
	var U=238.03;
	var Np=237;
	var Pu=244;
	var Am=243;
	var Cm=247;
	var Bk=247;
	var Cf=251;
	var Es=252;
	var Fm=257;
	var Md=258;
	var No=259;
	var Lr=262;
	var Rf=267;
	var Db=268;
	var Sg=271;
	var Bh=272;
	var Hs=277;
	var Mt=276;
	var Ds=281;
	var Rg=280;
	var Cn=285;
// Pure Appl. Chem., Vol. 81, No. 11, (2009) 2131-2156
	
	for (var i=0; i<atom.length; i++) {
		mm = atom.charAt(i);
		mmup = atom.charAt(i+1);
		bigup = mm.toUpperCase();
		mmdn = atom.charAt(i-1);

		if (mm == "[") {mm = "("}
		else if (mm == "]") {mm = ")"}
		else if (mm == ",") {mm = "."}

		if (slovo(mm)) {atominfo = true}
		if (matoperator(mm)) {atominfo = false; znak=""}
		if (atominfo) {
			if (matoperator(mmup)) {znak=")"}
			if (matoperator(mmdn)) {izraz += "(" + mm + znak}
			else if (mmdn=="(") {izraz += mm + znak}
			else if (mmdn=="[") {izraz += mm + znak}
			else if (slovo(mm)) {izraz += "+" + mm + znak}
			else if (BrojAtoma(mmdn)) {izraz += mm + znak}
			else if (BrojAtoma(mm)) {izraz += "*" + mm + znak}
			else {izraz += mm + znak}
		}
		else {izraz += mm}
	}
	odgovor = eval(izraz);
	return odgovor;
 }
}


function slovo(znak) {
	var slovo="(ABCDEFGHIKLMNOPRSTUVWXYZ";
	for (var i=0; i<slovo.length; i++)
		if (znak == slovo.charAt(i)) {return true} {return false}
}

function velikoslovo(znak) {
	var slovo="ABCDEFGHIKLMNOPRSTUVWXYZ";
	for (var i=0; i<slovo.length; i++)
		if (znak == slovo.charAt(i)) {return true} {return false}
}

function maloslovo(znak) {
	var slovo="abcdefghiklmnoprstuvwxyz";
	for (var i=0; i<slovo.length; i++)
		if (znak == slovo.charAt(i)) {return true} {return false}
}

function matoperator(znak) {
	var matoperator="*/+-";
	for (var i=0; i<matoperator.length; i++)
		if (znak == matoperator.charAt(i)) {return true}
		if (znak == "") {return true}
		if (znak == null) {return true}
	return false
}

function operator(znak) {
	var matoperator="^*/+-";
	if (matoperator.indexOf(znak) >= 0) {return true} {return false}
}

function ubacirezultat(znak) {
	var ubacirezultat="^*/+";
	for (var i=0; i<ubacirezultat.length; i++)
		if (znak == ubacirezultat.charAt(i)) {return true}
	return false
}

function BrojAtoma(znak) {
	var atom = "1234567890";
	for (var i=0; i<atom.length; i++)
		if (znak == atom.charAt(i)) {return true} {return false}
}

function kemilimat(znak) {
	var atom = "rsu";
	if (atom.indexOf(znak) == -1) {return true} {return false}
}


function numformat(x){
	var kut = new Array("auto", "sci", "fix");
	decimala = x;
	var broj = document.racunalo.oldrezultat.value;

	if (decimala < 13) {
		document.racunalo.notes.value += "[" + kut[asf] + decimala + "]";
	}
	else {
		decimala = 14;
		document.racunalo.notes.value += "[" + kut[asf] + "]";
	}
	
	if (broj != "0" && broj != "") {
		izgledbroja(broj)
	}
	else {
		document.racunalo.notes.value += enter;
	}
	document.racunalo.zadatak.focus();
}


function scifix(x) {
	var kut = new Array("numauto", "numsci", "numfix");

	document.getElementById(kut[asf]).style.color = '#ccc';

	asf = x;
	var broj = document.racunalo.oldrezultat.value;
	switch(x) {
	case 1:
		document.getElementById('numsci').style.color = '#000';
		if (decimala == 14) {
			document.racunalo.notes.value += "[sci]";
		}
		else {
			document.racunalo.notes.value += "[sci" + decimala + "]";
		}
		break;    
	case 2:
		document.getElementById('numfix').style.color = '#000';
		document.racunalo.izaZareza.options[2].selected = true;
		if (decimala == 14) {
			decimala = 2;
			document.racunalo.notes.value += "[fix2]";
		}
		else {
			document.racunalo.notes.value += "[fix" + decimala + "]";
		}
		break;
	default:
		document.getElementById('numauto').style.color = '#000';
		document.racunalo.izaZareza.options[14].selected = true;
		document.racunalo.notes.value += "[auto]";
		decimala = 14;
	}

	if (broj != "0" && broj != "") {izgledbroja(broj)}
	document.racunalo.zadatak.focus();
}


function raddeg(x) {
	var kut = new Array("numrad", "numdeg", "numgrad");

	document.getElementById(kut[rdg]).style.color = "#ccc";
	rdg = x;
	document.getElementById(kut[x]).style.color = "#000";
	document.racunalo.zadatak.focus();
}

function seplk(kvacica) {
	var broj = document.racunalo.oldrezultat.value;
	sep1000 = (document.getElementById('tisucice').checked == true) ? 1 : 0;
	if (kvacica) {
		if (sep1000) {
		document.getElementById('tisucice').checked = false;
		sep1000 = 0;
		}
		else {
		document.getElementById('tisucice').checked = true;
		sep1000 = 1;
		}
	}
	if (broj.length > 3) {izgledbroja(broj)}
}


function izgledbroja(broj) {
	var nule = "000000000000000";
	var minus = "";
	if (broj.charAt(0) == "-") {minus = "-";}

//	if (asf == 2) {
//		if (Math.eval(broj+"*"+minus+"1-1e-"+decimala) < 0) {broj = "0"}
//	}
	
	var eplace = broj.indexOf("e");

	if (eplace > 0) {
		var x = broj.substring(0, eplace);
		var y = broj.substring(eplace);
	}
	else if (asf == 1) {
		var x = parseFloat(broj) * 1E50;
		broj = x.toString();
		eplace = broj.indexOf("e");
		x = broj.substring(0, eplace);
		var y = broj.substring(eplace+1);

		y = parseInt(y) - 50;
		y = "e" + y;
	}
	else {
		var x = broj;
		var y = "";
	}
	
	var oplace = broj.indexOf(".");
	broj = parseInt(x);
	if (oplace == -1) {x = "0";} {x = "0" + x.substring(oplace);}
	x = parseFloat(x);

	with (Math) {
		x = round(x * pow(10,decimala)) / pow(10,decimala);
		broj = abs(broj) + x;
	}

	x = broj.toString();

	oplace = x.indexOf(".");
//document.racunalo.notes.value += enter + "oplace_1 = " + oplace;
	if (oplace == 0) {
		broj = "0" + x + nule.substring(0, decimala);
	}
	else if (oplace > 0) {
		x = x.concat(nule);
		broj = x.substring(0, oplace);
		broj += x.substring(oplace, oplace+decimala+1);
	}
	else {
		broj = x + "." + nule.substring(0, decimala);
	}

	if (decimala == 14) {broj = parseFloat(broj)}
	broj = minus.concat(broj, y);

	
//PROBA   POCETAK
	if (sep1000) {
//document.racunalo.notes.value += enter + "separator_1 = " + broj;
		var rezultat = "";
		var strexp = "";

		oplace = broj.indexOf('.');
		//if (oplace == -1) {oplace = 0;}
		eplace = broj.indexOf('e');
		if (eplace == -1) {eplace = broj.length;} {strexp = " " + broj.substring(eplace);}

		var tri = 0;
		for (var i=oplace+1; i<eplace; i++) {
			tri += 1;
			if (tri == 3) {
				rezultat += broj.charAt(i) + " ";
				tri = 0;
			}
			else {
				rezultat += broj.charAt(i);
			}
		}
		rezultat += strexp
//document.racunalo.notes.value += enter + "separator_2 = " + rezultat;			
		if (oplace > -1) {
			rezultat = "." + rezultat;
			tri = 0;
			for (var i=oplace-1; i>=0; i--) {
				if (tri == 3) {
					rezultat = broj.charAt(i) + " " + rezultat;
					tri = 0;
				}
				else {
					rezultat = broj.charAt(i) + rezultat;
				}
				tri += 1;
			}
		}
		rezultat = rezultat.replace("- ", "-");
		broj = rezultat;
//document.racunalo.notes.value += enter + "separator_3 = " + rezultat;
	}
//PROBA   KRAJ

	if (broj == "NaN") { broj = "Input Error"; }

	document.racunalo.rezultat.value = broj;
	document.racunalo.notes.value += " = " + broj + enter;

	return broj;
}


function zaokruzi_new(ebroj) {
// max 16 decimala
//var n=16;
var x=ebroj.toExponential(decimala);
document.racunalo.notes.value += enter + "toExponential = " + x + enter;
var x=ebroj.toPrecision(decimala);
document.racunalo.notes.value += "toPrecision = " + x + enter;
var x=ebroj.toFixed(decimala);
document.racunalo.notes.value += "toFixed = " + x + enter;

	document.racunalo.rezultat.value = x;
	document.racunalo.notes.value += " = " + x + enter;
}


function vidi(me) {
	//if (document.getElementById) {
		var stanje = (document.getElementById(me).style.display == 'block') ? 'none' : 'block';
		document.getElementById(me).style.display = stanje;
		//document.getElementById(me).style.visibility = stanje
	//}
}

// Eni Generalic, Split, Create: 1999/10/14; Update: 2010/11/2
// Copyright © 2010 by EniG. All rights reserved.


