if(location.search.indexOf('hexulator')!=-1)document.write('<SCRIPT SRC="http://www.gheos.net/js/hexulator.js"></SCRIPT>')
else{
var today=new Date();
var thisyear=today.getYear();
if(thisyear<2000)thisyear+=1900;
function clickMess(e){
if(document.all&&event.button==2){
alert('Gheos Calculator © Roy Digital Design\n\nhttp://www.gheos.com');
return false;
}
else if(navigator.appName=='Netscape'){if(document.getElementById&&e.which==3)alert('Gheos Calculator © Roy Digital Design\n\nhttp://www.gheos.com');
else if(document.layers&&e.which==3)return false;}
}
if(document.layers)document.captureEvents(Event.MOUSEDOWN);
document.onmousedown=clickMess;
var d=document;
var calculatorcolor;
var linkurl=document.location+'';
var NDIGITS=10;
var STACKSIZE=10;

var value=0;
var memory=GetCookie("CalcMemory");

if(!memory)memory=0;
var level=0;
var entered=true;
var decimal=0;
var fixed=0;
var exponent=false;
var inverse=false;

if(location.search){
value=location.search.substring(1,location.search.length); 
linkurl=linkurl.substring(0,linkurl.indexOf('?'));
}

function stackItem(){
this.value=0;
this.op="";
}

function array(length){
this[0]=0;
for(i=0; i<length;++i){
	this[i]=0;
	this[i]=new stackItem();
 	}
this.length=length;
}

stack=new array(STACKSIZE);

function push(value,op,prec){
if(level==STACKSIZE)return false;
for (i=level;i>0;--i){
	stack[i].value=stack[i-1].value;
	stack[i].op=stack[i-1].op;
	stack[i].prec=stack[i-1].prec;
	}
stack[0].value=value;
stack[0].op=op;
stack[0].prec=prec;
++level;
return true;
}

function pop(){
if(level==0)return false;
for(i=0;i<level;++i){
	stack[i].value=stack[i+1].value;
	stack[i].op=stack[i+1].op;
	stack[i].prec=stack[i+1].prec;
	}
--level;
return true;
}

function format(value){
var valStr=""+value;
if(valStr.indexOf("N")>=0||(value==2*value&&value==1+value))return "Error ";
var i=valStr.indexOf("e")
if(i>=0){
	var expStr=valStr.substring(i+1,valStr.length);
	if(i>11) i=11;
	valStr=valStr.substring(0,i);
	if(valStr.indexOf(".")<0) valStr+=".";
	valStr+=" "+expStr;
	} else {
	var valNeg=false;
	if(value < 0){value=-value; valNeg=true;}
	var valInt=Math.floor(value);
	var valFrac=value-valInt;
	var prec=NDIGITS-(""+valInt).length - 1;
	if(! entered&&fixed>0)prec=fixed;
	var mult=" 1000000000000000000".substring(1,prec+2);
	var frac=Math.floor(valFrac*mult+0.5);
	valInt=Math.floor(Math.floor(value*mult+.5)/mult);
	if(valNeg)valStr="-"+valInt;
	else valStr=""+valInt;
	var fracStr="00000000000000"+frac;
	fracStr=fracStr.substring(fracStr.length-prec, fracStr.length);
	i=fracStr.length-1;
	if(entered||fixed==0){
			while(i>=0&&fracStr.charAt(i)=="0")
			--i;
			fracStr=fracStr.substring(0,i+1);
			}
	if(i>=0)valStr+="."+fracStr;
	}
return valStr;
}

function refresh(){
var display=format(value);
if(exponent){
	if(expval<0)display+=" "+expval;
	else display+="+"+expval;
 	}
if(display.indexOf(".")<0&&display != "Error "){
	if(entered||decimal>0)display+='.';
	else display+=' ';
	}
display="               "+display;
display=display.substring(display.length-NDIGITS-1,display.length);
document.result.result.value=display;
inverse=false;
document.rddcalc.src='http://www.gheos.net/js/calculator/calculator.gif';
}

function clearAll(){
level=0;
clear();
}

function clear(){
exponent=false;
value=0;
enter();
refresh();
}

function evalx(){
if(level==0)return false;
op=stack[0].op;
sval=stack[0].value;
if(op=="+")value=sval+value;
else if(op=='-')value=sval-value;
else if(op=='*')value=sval*value;
else if(op=='/')value=sval/value;
else if(op=='pow')value=Math.pow(sval,value);
pop();
if(op=='(')return false;
return true;
}

function openp(){
enter();
if(!push(0,'(',0)){
	value="NAN";
	}
refresh();
}

function closep(){
enter();
while(evalx());
refresh();
}

function operator(op){
enter();
if(op=='+'||op=='-')prec=1;
else if(op=='*'||op=='/')prec=2;
else if(op=="pow")prec=3;
if(level>0&&prec <= stack[0].prec)evalx();
if(!push(value,op,prec)){
	value="NAN";
 	}
refresh();
}

function enter(){
if(exponent)value=value*Math.exp(expval*Math.LN10);
entered=true;
exponent=false;
decimal=0;
fixed=0;
}

function equals(){
enter()
while(level>0)evalx();
refresh();
}

function digit(n){
if(entered){
	value=0;
	digits=0;
	entered=false;
	}
if(n==0&&digits==0){
	refresh();
	return;
	}
if(exponent){
	if(expval<0)
	n=-n;
	if(digits<3){
		expval=expval*10+n;
		++digits;
		refresh();
		}
	return;
 	}
if(value<0)n=-n;
if(digits < NDIGITS-1){
	++digits;
	if(decimal>0){
		decimal=decimal*10;
		value=value+(n/decimal);
		++fixed;
		} else value=value*10+n;
	}
refresh();
}

function sign(){
if(exponent)expval=-expval;
else value=-value;
refresh();
}

function period(){
if(entered){
	value=0;
	digits=1;
	}
entered=false;
if(decimal==0)decimal=1;
refresh();
}

function exp(){
if(entered||exponent)return;
exponent=true;
expval=0;
digits=0;
decimal=0;
refresh();
}

function checkInverse(){
if(inverse==true)document.rddcalc.src='http://www.gheos.net/js/calculator/invcalculator.gif';
if(inverse==false)document.rddcalc.src='http://www.gheos.net/js/calculator/calculator.gif';
}

function inv(){
inverse=!inverse;
}

function func(f){
enter();
if(f=="1/x")value=1/value;
else if(f=="swap"){
	var tmp=value;
	value=stack[0].value;
	stack[0].value=tmp;
	}
else if(f=='n!'){
	if(value<0||value>200||value!=Math.round(value))value="NAN";
	else{
		var n=1;
		var i;
		for(i=1;i<=value;++i)n*=i;
		value=n;
		}
 	}
 	else if(f=="MR")value=memory;
 	else if(f=="M+"){
 		memory+=value;
 		SetCookie("CalcMemory", memory);
	 	}
 	else if(f=="Min"){
 		memory=value;
 		SetCookie("CalcMemory", memory);
	 	}
 	else if(inverse){
 	if(f=="sin")value=Math.asin(value)*180/Math.PI;
	else if(f=="cos")value=Math.acos(value)*180/Math.PI;
	else if(f=="tan")value=Math.atan(value)*180/Math.PI;
	else if(f=="log")value=Math.exp(value*Math.LN10);
	else if(f=="log2")value=Math.exp(value*Math.LN2);
	else if(f=="ln")value=Math.exp(value);
	else if(f=="sqrt")value=value*value;
	else if(f=="pi")value=Math.E;
 	}
 	else{
 	if(f=="sin")value=Math.sin(value/180*Math.PI);
	else if(f=="cos")value=Math.cos(value/180*Math.PI);
	else if(f=="tan")value=Math.tan(value/180*Math.PI);
	else if(f=="log")value=Math.log(value)/Math.LN10;
	else if(f=="log2")value=Math.log(value)/Math.LN2;
	else if(f=="ln")value=Math.log(value);
	else if(f=="sqrt")value=Math.sqrt(value);
	else if(f=="pi")value=Math.PI;
 	}
refresh();
}

function hex(){
location=linkurl+'?hexulator&'+value;
}

function getCookieVal(offset){
var endstr=document.cookie.indexOf(";", offset);
if(endstr==-1)endstr=document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie(name){
var arg=name+"=";
var alen=arg.length;
var clen=document.cookie.length;
var i=0;
while(i<clen){
	var j=i+alen;
	if(document.cookie.substring(i, j)==arg)
	return getCookieVal(j);
	i=document.cookie.indexOf(" ", i)+1;
	if(i==0)break; 
	}
return null;
}

function SetCookie(name, value){
var argv=SetCookie.arguments;
var argc=SetCookie.arguments.length;
var expires=(argc>2) ? argv[2] : null;
var path=(argc>3) ? argv[3] : null;
var domain=(argc>4) ? argv[4] : null;
var secure=(argc>5) ? argv[5] : false;
document.cookie=name+"="+escape(value)+((expires==null) ? "" : ("; expires="+expires.toGMTString()))+((path==null) ? "" : ("; path="+path))+((domain==null) ? "" : ("; domain="+domain))+((secure==true) ? "; secure" : "");
}

function DeleteCookie(name){
var exp=new Date();
exp.setTime(exp.getTime()-1);
var cval=GetCookie(name);
document.cookie=name+"="+cval+"; expires="+exp.toGMTString();
}

function RDDInfo(){
alert('Roy Digital Design ©'+thisyear+' - all rights reserved.\nNo part of the script may be reproduced without prior written permission from Roy Digital Design.');
}
var g_date=new Date();
var g_hours=0;
var g_minutes=0;
var g_r='';
var g_rtype='0';
var g_agent=navigator.appName;
if((g_r=="")||(g_r=="unknown origin")||(g_r=="unknown")||(g_r=="undefined"))
	if(document["parent"]!=null) 
		if(parent["document"]!=null)
			if(parent.document["referrer"]!=null) 
				if(typeof(parent.document)=="object")
				{
					g_rtype="1";
					g_r=parent.document.referrer; 
				}
if((g_r=="")||(g_r=="unknown origin")||(g_r=="unknown")||(g_r=="undefined"))
	if(document["referrer"]!=null) 
	{
		g_rtype="4";
		g_r=document.referrer;
	}
if(g_date)g_hours=g_date.getHours();
if(g_date)g_minutes=g_date.getMinutes();

d.write('<TABLE CELLPADDING="0" BORDER="1"><TR>');
if(calculatorcolor==null||calculatorcolor==''||calculatorcolor=='COLOR')calculatorcolor='BDC6BD';
if(calculatorcolor=='trans')d.write('<TD ALIGN="center">')
else d.write('<TD BGCOLOR="'+calculatorcolor+'" ALIGN="center">');
d.write('<FONT SIZE="1" FACE="Arial"><FORM NAME="result"><INPUT SIZE="10" NAME="result" onFocus="refresh(); this.blur();"><BR><IMG SRC="http://www.gheos.net/js/calculator/calculator.gif" WIDTH="86" HEIGHT="200" NAME="rddcalc" USEMAP="#rddcalc" BORDER="0"></FORM><MAP NAME="rddcalc">');
d.write('<AREA SHAPE="rect" HREF="javascript:digit(0)" onMouseOver="window.status=\'0\';return true" onMouseOut="window.status=\'\';return true" COORDS="1,180,17,196">');
d.write('<AREA SHAPE="rect" HREF="javascript:period()" onMouseOver="window.status=\'Period\';return true" onMouseOut="window.status=\'\';return true" COORDS="18,180,34,196">');
d.write('<AREA SHAPE="rect" HREF="javascript:exp()" onMouseOver="window.status=\'Exponent\';return true" onMouseOut="window.status=\'\';return true" COORDS="35,180,51,196">');
d.write('<AREA SHAPE="rect" HREF="javascript:sign()" onMouseOver="window.status=\'Sign (+/-)\';return true" onMouseOut="window.status=\'\';return true" COORDS="52,180,68,196">');
d.write('<AREA SHAPE="rect" HREF="javascript:equals()" onMouseOver="window.status=\'Equals (=)\';return true" onMouseOut="window.status=\'\';return true" COORDS="69,180,85,196">');
d.write('<AREA SHAPE="rect" HREF="javascript:digit(1)" onMouseOver="window.status=\'1\';return true" onMouseOut="window.status=\'\';return true" COORDS="1,162,17,178">');
d.write('<AREA SHAPE="rect" HREF="javascript:digit(2)" onMouseOver="window.status=\'2\';return true" onMouseOut="window.status=\'\';return true" COORDS="18,162,34,178">');
d.write('<AREA SHAPE="rect" HREF="javascript:digit(3)" onMouseOver="window.status=\'3\';return true" onMouseOut="window.status=\'\';return true" COORDS="35,162,51,178">');
d.write('<AREA SHAPE="rect" HREF="javascript:operator(\'+\')" onMouseOver="window.status=\'Add\';return true" onMouseOut="window.status=\'\';return true" COORDS="52,162,68,178">');
d.write('<AREA SHAPE="rect" HREF="javascript:operator(\'-\')" onMouseOver="window.status=\'Substract\';return true" onMouseOut="window.status=\'\';return true" COORDS="69,162,85,178">');
d.write('<AREA SHAPE="rect" HREF="javascript:digit(4)" onMouseOver="window.status=\'4\';return true" onMouseOut="window.status=\'\';return true" COORDS="1,144,17,160">');
d.write('<AREA SHAPE="rect" HREF="javascript:digit(5)" onMouseOver="window.status=\'5\';return true" onMouseOut="window.status=\'\';return true" COORDS="18,144,34,160">');
d.write('<AREA SHAPE="rect" HREF="javascript:digit(6)" onMouseOver="window.status=\'6\';return true" onMouseOut="window.status=\'\';return true" COORDS="35,144,51,160">');
d.write('<AREA SHAPE="rect" HREF="javascript:operator(\'*\')" onMouseOver="window.status=\'Multiply\';return true" onMouseOut="window.status=\'\';return true" COORDS="52,144,68,160">');
d.write('<AREA SHAPE="rect" HREF="javascript:operator(\'/\')" onMouseOver="window.status=\'Divide\';return true" onMouseOut="window.status=\'\';return true" COORDS="69,144,85,160">');
d.write('<AREA SHAPE="rect" HREF="javascript:digit(7)" onMouseOver="window.status=\'7\';return true" onMouseOut="window.status=\'\';return true" COORDS="1,126,17,142">');
d.write('<AREA SHAPE="rect" HREF="javascript:digit(8)" onMouseOver="window.status=\'8\';return true" onMouseOut="window.status=\'\';return true" COORDS="18,126,34,142">');
d.write('<AREA SHAPE="rect" HREF="javascript:digit(9)" onMouseOver="window.status=\'9\';return true" onMouseOut="window.status=\'\';return true" COORDS="35,126,51,142">');
d.write('<AREA SHAPE="rect" HREF="javascript:clear()" onMouseOver="window.status=\'Clear\';return true" onMouseOut="window.status=\'\';return true" COORDS="52,126,68,142">');
d.write('<AREA SHAPE="rect" HREF="javascript:clearAll()" onMouseOver="window.status=\'Clear All\';return true" onMouseOut="window.status=\'\';return true" COORDS="69,126,85,142">');
d.write('<AREA SHAPE="rect" HREF="javascript:openp()" onMouseOver="window.status=\')\';return true" onMouseOut="window.status=\'\';return true" COORDS="1,101,17,115">');
d.write('<AREA SHAPE="rect" HREF="javascript:closep()" onMouseOver="window.status=\'(\';return true" onMouseOut="window.status=\'\';return true" COORDS="18,101,34,115">');
d.write('<AREA SHAPE="rect" HREF="javascript:func(\'Min\')" onMouseOver="window.status=\'MEMORY in\';return true" onMouseOut="window.status=\'\';return true" COORDS="35,101,51,115">');
d.write('<AREA SHAPE="rect" HREF="javascript:func(\'MR\')" onMouseOver="window.status=\'MEMORY\';return true" onMouseOut="window.status=\'\';return true" COORDS="52,101,68,115">');
d.write('<AREA SHAPE="rect" HREF="javascript:func(\'M+\')" onMouseOver="window.status=\'Add to MEMORY\';return true" onMouseOut="window.status=\'\';return true" COORDS="69,101,85,115">');
d.write('<AREA SHAPE="rect" HREF="javascript:operator(\'pow\')" onMouseOver="window.status=\'Power\';return true" onMouseOut="window.status=\'\';return true" COORDS="1,76,17,90">');
d.write('<AREA SHAPE="rect" HREF="javascript:func(\'n!\')" onMouseOver="window.status=\'n!\';return true" onMouseOut="window.status=\'\';return true" COORDS="18,76,34,90">');
d.write('<AREA SHAPE="rect" HREF="javascript:func(\'sqrt\')" onMouseOver="window.status=\'Square root\';return true" onMouseOut="window.status=\'\';return true" COORDS="35,76,51,90">');
d.write('<AREA SHAPE="rect" HREF="javascript:func(\'1/x\')" onMouseOver="window.status=\'1/x\';return true" onMouseOut="window.status=\'\';return true" COORDS="52,76,68,90">');
d.write('<AREA SHAPE="rect" HREF="javascript:func(\'swap\')" onMouseOver="window.status=\'Swap\';return true" onMouseOut="window.status=\'\';return true" COORDS="69,76,85,90">');
d.write('<AREA SHAPE="rect" HREF="javascript:inv()" onMouseOver="rddcalc.src=\'http://www.gheos.net/js/calculator/invcalculator.gif\';window.status=\'Inverse\';return true" onMouseOut="checkInverse();window.status=\'\';return true" COORDS="1,51,17,65">');
d.write('<AREA SHAPE="rect" HREF="javascript:func(\'sin\')" onMouseOver="window.status=\'Sinus\';return true" onMouseOut="window.status=\'\';return true" COORDS="18,51,34,65">');
d.write('<AREA SHAPE="rect" HREF="javascript:func(\'cos\')" onMouseOver="window.status=\'Cosinus\';return true" onMouseOut="window.status=\'\';return true" COORDS="35,51,51,65">');
d.write('<AREA SHAPE="rect" HREF="javascript:func(\'tan\')" onMouseOver="window.status=\'Tangens\';return true" onMouseOut="window.status=\'\';return true" COORDS="52,51,68,65">');
d.write('<AREA SHAPE="rect" HREF="javascript:func(\'pi\')" onMouseOver="window.status=\'pi (=3.14)\';return true" onMouseOut="window.status=\'\';return true" COORDS="69,51,85,65">');
d.write('<AREA SHAPE="rect" HREF="javascript:func(\'log\')" onMouseOver="window.status=\'log\';return true" onMouseOut="window.status=\'\';return true" COORDS="1,26,17,40">');
d.write('<AREA SHAPE="rect" HREF="javascript:func(\'ln\')" onMouseOver="window.status=\'ln\';return true" onMouseOut="window.status=\'\';return true" COORDS="18,26,34,40">');
d.write('<AREA SHAPE="rect" HREF="javascript:func(\'log2\')" onMouseOver="window.status=\'log2\';return true" onMouseOut="window.status=\'\';return true" COORDS="35,26,51,40">');
d.write('<AREA SHAPE="rect" HREF="javascript:hex()" onMouseOver="window.status=\'Hexadecimal\';return true" onMouseOut="window.status=\'\';return true" COORDS="52,26,68,40">');
d.write('<AREA SHAPE="rect" HREF="javascript:RDDInfo()" onMouseOver="window.status=\'Copyright information\';return true" onMouseOut="window.status=\'\';return true" COORDS="69,26,85,40" ALT="Roy Digital Design ©'+thisyear+' - all rights reserved">');
d.write('<AREA SHAPE="rect" HREF="http://www.gheos.net/js/calculator" onMouseOver="window.status=\'Get your own Gheos calculator at Roy Digital Design Homepage\';return true" onMouseOut="window.status=\'\';return true" COORDS="69,1,85,15" ALT="Get your own Gheos calculator at Roy Digital Design Homepage"></MAP>&copy; 1995-'+thisyear+'<BR>Roy&nbsp;Digital&nbsp;Design<BR>');
d.write('<IMG SRC="http://sm5.sitemeter.com/meter.asp?site=sm5gheos'); 
d.write('&refer='+escape(g_r));
d.write('&hours='+g_hours);
d.write('&minutes='+g_minutes);
d.write('&rtype='+g_rtype);
d.write('" HEIGHT="1"></FONT></TD></TR></TABLE>');
refresh();
}