var Messages={};
Messages.URL_TOO_LONG="Sorry, there's too much data for one link! Try putting your equations into two calculators.";
var InstaCalc={};
var I=InstaCalc;
logging=false;
I.cells=0;
I.startcells=7;
I.maxCells=40;
I.version=0.9;
I.uiversion="";
I.inputs=[];
I.outputs=[];
I.outputCache=[];
I.outputCache.format=[];
I.inputCache=[];
I.titles=[];
I.comments=[];
I.lib={};
I.lib.chart=[];
I.format={};
I.format.currency=false;
I.format.symbol="$";
I.format.decimals=2;
I.format.angle="deg";
I.format.currencies={};
I.format.currencies["BRL"]={};
I.format.currencies["BRL"].symbol="R$";
I.format.currencies["BRL"].regex=/R[$]/gi;
I.format.currencies["BRL"].decimals=2;
I.format.currencies["USD"]={};
I.format.currencies["USD"].symbol="$";
I.format.currencies["USD"].regex=/[$]/gi;
I.format.currencies["USD"].decimals=2;
I.format.currencies["INR"]={};
I.format.currencies["INR"].symbol="Rs. ";
I.format.currencies["INR"].regex=/Rs[.]/gi;
I.format.currencies["INR"].decimals=2;
I.format.currencies["EUR"]={};
I.format.currencies["EUR"].symbol="\u20ac";
I.format.currencies["EUR"].regex=/\u20AC/gi;
I.format.currencies["EUR"].decimals=2;
I.format.currencies["JPY"]={};
I.format.currencies["JPY"].symbol="\xa5";
I.format.currencies["JPY"].regex=/\u00A5/gi;
I.format.currencies["JPY"].decimals=0;
I.separator="z#x3!~";
I.description="";
I.unitlabel="";
I.saved=[];
I.permalink="";
I.plotter=null;
I.settings={};
I.settings.visibility=[];
I.settings.basic=true;
I.settings.round=false;
I.settings.embed=false;
I.settings.gadget=false;
I.settings.gadget=false;
I.settings.standalone=false;
I.settings.base_url="http://instacalc.com/";
I.settings.embed_preview_url="http://instacalc.com/embedpreview.html";
I.divs=["instructions","overview","tutorial","comments","reference","chart"];
function getVersion(){
return I.version;
}
function setError(_1){
I.error=_1;
}
function getError(){
return I.error;
}
function updateReferences(_2,_3){
var i;
var _5="";
for(var i=0;i<_2;i++){
_5=_2[i];
if(_5.match(/\bR(\d+)\b/ig)){
}
}
I.expressions.push([/\bR(\d+)\b/ig,"getOutputValue($1 - 1)"]);
}
function setStatus(_6,_7){
if(isdefined(status)){
status.innerHTML=_6;
if(_7===true){
status.className="statusError";
}else{
status.className="statusOK";
}
}
}
if(I.settings.homepage){
loadCurrencyData();
}
I.PHI=1.6180339887;
I.MOL=6.0221415e+23;
I.deg2rad=function(_8){
return _8*Math.PI/180;
};
I.rad2deg=function(_9){
return _9*180/Math.PI;
};
I.convertToRadiansConditional=function(n){
var _b;
if(I.format.angle=="rad"){
_b=n;
}else{
_b=I.deg2rad(n);
}
return _b;
};
I.sin=function(n){
var _d;
if(I.format.angle=="rad"){
_d=n;
}else{
_d=I.deg2rad(n);
}
return Math.sin(_d);
};
I.asin=function(n){
return I.rad2deg(Math.asin(n));
};
I.acos=function(n){
return I.rad2deg(Math.acos(n));
};
I.atan=function(n){
return I.rad2deg(Math.atan(n));
};
I.sinh=function(n){
var rad=I.convertToRadiansConditional(n);
return (Math.exp(rad)-Math.exp(-rad))/2;
};
I.cosh=function(n){
var rad=I.convertToRadiansConditional(n);
return (Math.exp(rad)+Math.exp(-rad))/2;
};
I.tanh=function(n){
return I.sinh(n)/I.cosh(n);
};
I.coth=function(n){
return I.cosh(n)/I.sinh(n);
};
I.sech=function(n){
return 1/I.cosh(n);
};
I.csch=function(n){
return 1/I.sinh(n);
};
I.asinh=function(n){
var rad=I.convertToRadiansConditional(n);
return Math.log(rad+Math.sqrt(1+rad*rad));
};
I.acosh=function(n){
var rad=I.convertToRadiansConditional(n);
return 2*Math.log(Math.sqrt((rad+1)/2)+Math.sqrt((rad-1)/2));
};
I.atanh=function(n){
var rad=I.convertToRadiansConditional(n);
return (Math.log(1+rad)-Math.log(1-rad))/2;
};
I.cos=function(n){
var rad;
if(I.format.angle=="rad"){
rad=n;
}else{
rad=I.deg2rad(n);
}
return Math.cos(rad);
};
I.tan=function(n){
var rad;
if(I.format.angle=="rad"){
rad=n;
}else{
rad=I.deg2rad(n);
}
return Math.tan(rad);
};
I.cot=function(n){
return 1/I.tan(n);
};
I.sec=function(n){
return 1/I.cos(n);
};
I.csc=function(n){
return 1/I.sin(n);
};
I.fibonacci=function(n){
var t=(Math.pow(I.PHI,n)-Math.pow(1-I.PHI,n))/Math.sqrt(5);
return Math.round(t);
};
I.factorial=function(n){
if(!isdefined(n)){
return;
}
if(n<0){
return "undefined";
}
if(n===0||n==1){
return 1;
}
if(n>170){
return "Way too big!";
}
var i=1;
n=Math.ceil(n);
while(n>1){
i*=n;
n--;
}
return i;
};
I.combin=function(n,k){
return I.factorial(n)/(I.factorial(n-k)*I.factorial(k));
};
I.convert=function(n,_2d){
var i=0;
var sum=0;
while(n>0){
var _30=n%10;
sum+=_30*Math.pow(_2d,i);
i++;
n=Math.floor(n/10);
}
return sum;
};
I.sbin=function(n){
var i=0;
var str="";
for(var i=0;i<32;i++){
var _34=(n&(1<<i))>>i;
if(_34==0){
str+="0";
}else{
str+="1";
}
}
str=str.split("").reverse().join("");
return str;
};
I.bin=function(n){
var tmp;
var _37="0";
if(n<0){
return I.sbin(n);
}else{
tmp=n.toString(2);
}
if(tmp==NaN||tmp==""){
return "";
}
var i;
var _39="0b";
var _3a=(8-(tmp.length%8))%8;
for(i=0;i<_3a;i++){
_39+=_37;
}
return _39+tmp;
};
I.oct=function(n){
return "0o"+n.toString(8);
};
I.hex=function(n){
var tmp=n.toString(16);
var i;
var _3f="0x";
var _40=(4-(tmp.length%4))%4;
for(i=0;i<_40;i++){
_3f+="0";
}
return _3f+tmp;
};
I.dec=function(n){
return n;
};
I.log10=function(n){
return Math.log(n)/Math.LN10;
};
I.frombin=function(n){
return I.convert(n,2);
};
I.fromhex=function(n){
return I.convert(n,16);
};
I.fromoct=function(n){
return I.convert(n,8);
};
I.deg=function(n){
return n*180/Math.PI;
};
I.rad=function(n){
return n*Math.PI/180;
};
I.time=function(n){
years=days=hours=minutes=seconds=0;
var _49=false;
if(n<0){
n=Math.abs(n);
}
if(n>=31536000){
years=Math.floor(n/31536000);
n-=Math.round(years*31536000);
}
if(n>=86400){
days=Math.floor(n/86400);
n-=Math.round(days*86400);
}
if(n>=3600){
hours=Math.floor(n/3600);
n-=Math.round(hours*3600);
}
if(n>=60){
minutes=Math.floor(n/60);
n-=Math.round(minutes*60);
}
seconds=n;
str="";
if(years>0){
str+=(years+"y ");
_49=true;
}
if(days>0||_49){
str+=(days+"d ");
_49=true;
}
if(hours>0||_49){
str+=(hours+"h ");
_49=true;
}
if(minutes>0||_49){
str+=(minutes+"m ");
_49=true;
}
if(seconds>0||_49){
str+=(seconds.toPrecision(4)+"s ");
_49=true;
}
return str;
};
I.plot=new ReplotObject();
I.plotTimeout=null;
I.plotRefresh=500;
I.resetChart=function(){
if($("example2")){
$("example2").innerHTML="";
}
};
I.linechart=function(_4a){
I.plot.data=_4a;
I.plot.type="line";
self.clearTimeout(I.plotTimeout);
I.plotTimeout=self.setTimeout("I.plot.update()",I.plotRefresh);
};
I.barchart=function(_4b){
I.plot.data=_4b;
I.plot.type="bar";
self.clearTimeout(I.plotTimeout);
I.plotTimeout=self.setTimeout("I.plot.update()",I.plotRefresh);
};
I.piechart=function(_4c){
I.plot.data=_4c;
I.plot.type="pie";
self.clearTimeout(I.plotTimeout);
I.plotTimeout=self.setTimeout("I.plot.update()",I.plotRefresh);
};
I.arraymax=function(a){
if(a==[]){
return "";
}
max=a[0][1];
for(i=0;i<a.length;i++){
if(a[i][1]>max){
max=a[i][1];
}
}
return max;
};
I.arraymin=function(a){
if(a==[]){
return "";
}
min=a[0][1];
for(var i=0;i<a.length;i++){
if(a[i][1]<min){
min=a[i][1];
}
}
return min;
};
I.arraysum=function(a){
if(a==[]){
return "";
}
total=0;
for(var i=0;i<a.length;i++){
total+=a[i][1];
}
return total;
};
I.arraydifference=function(a){
if(a==[]){
return "";
}
total=a[0][1];
for(i=1;i<a.length;i++){
total-=a[i][1];
}
return total;
};
I.arrayavg=function(a){
if(a==[]){
return "";
}
var _54=I.arraysum(a);
var _55=_54/a.length;
return _55;
};
I.random=function(a){
return Math.ceil(Math.random()*a);
};
I.add=function(a,b){
return a+b;
};
I.subtract=function(a,b){
return a-b;
};
I.multiply=function(a,b){
return a*b;
};
I.divide=function(a,b){
return a/b;
};
I.conversion=function(a,b){
if(typeof (b)=="number"){
return a*b;
}
if(typeof (b)=="function"){
return b(a);
}
return a;
};
function isUnit(str){
for(var i in Unit){
if(Unit[i][str]){
return Unit[i];
}
}
return false;
}
I.convertUnitScale=function(_63,to){
var _65=isUnit(_63);
var _66=isUnit(to);
if(!_65||!_66){
return 1;
}else{
return _65[fromRate]/_66[toRate];
}
};
I.getUnitPower=function(str){
var re;
str=str.replace("^2"," sq");
str=str.replace("^3"," cu");
for(var i=0;i<Unit.area.length;i++){
re=new RegExp("\\b"+Unit.area[i]+"\\b","gi");
if(str.match(re)){
str=strtrim(str.replace(re,""));
return [str,2];
}
}
for(var i=0;i<Unit.volume.length;i++){
re=new RegExp("\\b"+Unit.volume[i]+"\\b","gi");
if(str.match(re)){
str=strtrim(str.replace(re,""));
return [str,3];
}
}
return [str,1];
};
I.unitMatch=function(_6a,_6b,to,_6d){
var _6e=isUnit(_6a);
var _6f=isUnit(to);
if(!_6e||!_6f){
var _70=Inflector.pluralize(Inflector.pluralize(_6a));
var _71=Inflector.pluralize(Inflector.pluralize(to));
if((_70==_71)&&(_6b==_6d)){
return true;
}
return false;
}
if(_6e==_6f&&_6b==_6d){
return true;
}
if(!_6e.SI||!_6f.SI){
return false;
}
for(var i in _6e.SI){
if(_6e.SI[i]*_6b!=_6f.SI[i]*_6d){
return false;
}
}
for(var i in _6f.SI){
if(_6e.SI[i]*_6b!=_6f.SI[i]*_6d){
return false;
}
}
return true;
};
I.parseUnitObject=function(str){
var a=I.splitUnits(str);
return {from:a[0],fromRate:a[1],to:a[2],toRate:a[3],label:a[4]};
};
I.splitUnits=function(str){
var re=new RegExp(I.safeprepend,"g");
str=str.replace(re,"");
var tmp;
re=new RegExp(/per/ig);
str=str.replace(re,"/");
str=str.replace(/for/ig,"/");
str=str.replace(/every/ig,"/");
str=str.replace(/each/ig,"/");
str=str.replace(/until/ig,"/");
str=str.replace(/thousand/,"1000");
str=str.replace(/million/,"1000000");
str=str.replace(/billion/,"1000000000");
str=str.replace(/trillion/,"1000000000000");
if(str.match(/\s+in\s+/i)){
tmp=str.split(" in ");
}else{
if(str.match(/\s+into\s+/i)){
tmp=str.split(" into ");
}else{
if(str.match(/\s+as\s+/i)){
tmp=str.split(" as ");
}else{
if(str.match(/\s+to\s+/i)){
tmp=str.split(" to ");
}else{
if(str.match(/\s+en\s+/i)){
tmp=str.split(" en ");
}else{
return null;
}
}
}
}
}
if(tmp.length<2){
return null;
}
var _78=strtrim(tmp[0].toLowerCase());
var _79=1;
var to=strtrim(tmp[1].toLowerCase());
var _7b=1;
if(Unit.alias[_78]){
_78=Unit.alias[_78];
}
if(Unit.alias[to]){
to=Unit.alias[to];
}
var _7c;
var _7d;
var _7e="unity";
var _7f="unity";
if((_7c=_78.match(/(.+)\/(.+)/))&&(_7d=to.match(/(.+)\/(.+)/))){
_78=strtrim(_7c[1]);
to=strtrim(_7d[1]);
_7e=strtrim(_7c[2]);
_7f=strtrim(_7d[2]);
}
var _80=tmp[1];
return [_78,_7e,to,_7f,_80];
};
I.isConversionFunction=function(_81,to){
var _83=isUnit(_81);
var _84=isUnit(to);
if(_83==_84&&_83.conversion=="function"){
return _83;
}
return false;
};
I.getUnitPowers=function(obj){
var _86={};
_86.from={};
_86.to={};
_86.fromRate={};
_86.toRate={};
var a=I.getUnitPower(obj.from);
_86.from.unit=a[0];
_86.from.power=a[1];
var b=I.getUnitPower(obj.to);
_86.to.unit=b[0];
_86.to.power=b[1];
a=I.getUnitPower(obj.fromRate);
_86.fromRate.unit=a[0];
_86.fromRate.power=a[1];
b=I.getUnitPower(obj.toRate);
_86.toRate.unit=b[0];
_86.toRate.power=b[1];
return _86;
};
I.getScalingFactors=function(_89){
var _8a={};
_8a.from=1;
_8a.to=1;
var obj={};
obj=_89;
obj.from.scale=1;
var num=obj.from.unit.match(/[.,\d]+/);
if(num){
var tmp=parseNumber(num[0]);
obj.from.unit=obj.from.unit.replace(/[.,\d]+\s*/,"");
obj.from.scale=tmp;
_8a.from*=tmp;
}
obj.fromRate.scale=1;
var num=obj.fromRate.unit.match(/[.,\d]+/);
if(num){
var tmp=parseNumber(num[0]);
obj.fromRate.unit=obj.fromRate.unit.replace(/[.,\d]+\s*/,"");
obj.fromRate.scale=tmp;
_8a.from*=1/tmp;
}
obj.to.scale=1;
num=obj.to.unit.match(/[.,\d]+/);
if(num){
var tmp=parseNumber(num[0]);
obj.to.unit=obj.to.unit.replace(/[.,\d]+\s*/,"");
obj.to.scale=tmp;
_8a.to*=tmp;
}
obj.toRate.scale=1;
num=obj.toRate.unit.match(/[.,\d]+/);
if(num){
var tmp=parseNumber(num[0]);
obj.toRate.unit=obj.toRate.unit.replace(/[.,\d]+\s*/,"");
obj.toRate.scale=tmp;
_8a.to*=1/tmp;
}
obj.scale=_8a;
return obj;
};
I.getUnitMatches=function(_8e){
var _8f=false;
var ret={match:false,invert:false};
var obj={};
obj=_8e;
obj.inverted=false;
if(!I.unitMatch(obj.from.unit,obj.from.power,obj.to.unit,obj.to.power)){
_8f=true;
}
if(!I.unitMatch(obj.fromRate.unit,obj.fromRate.power,obj.toRate.unit,obj.toRate.power)){
_8f=true;
}
if(_8f){
var _92=I.unitMatch(obj.from.unit,obj.from.power,obj.toRate.unit,obj.toRate.power);
var _93=I.unitMatch(obj.to.unit,obj.to.power,obj.fromRate.unit,obj.fromRate.power);
if(_92&&_93){
obj.inverted=true;
}else{
return null;
}
}
return obj;
};
I.getUnitConversion=function(_94){
var n=1;
var obj;
if(obj=isUnit(_94)){
n=obj[_94];
}
return n;
};
I.getConversionFactor=function(_97){
var obj=_97;
var n;
var _9a;
n=I.getUnitConversion(obj.from.unit);
var ft=Math.pow(n,obj.from.power);
n=I.getUnitConversion(obj.fromRate.unit);
var fb=Math.pow(n,obj.fromRate.power);
n=I.getUnitConversion(obj.to.unit);
var tt=Math.pow(n,obj.to.power);
n=I.getUnitConversion(obj.toRate.unit);
var tb=Math.pow(n,obj.toRate.power);
var _9f=(obj.from.scale*ft)/(obj.fromRate.scale*fb);
var _a0=(obj.to.scale*tt)/(obj.toRate.scale*tb);
var _a1=_9f/_a0;
var _a2;
if(obj.inverted){
_9f=_9f;
_a0=(obj.toRate.scale*tb)/(obj.to.scale*tt);
_a2=_9f/_a0;
}
if(obj.inverted){
return function(x){
return 1/(x*_a2);
};
}else{
return _a1;
}
};
I.getUnitScale2=function(_a4,_a5,to,_a7){
var obj={from:_a4,fromRate:_a5,to:to,toRate:_a7};
obj=I.getUnitPowers(obj);
if(!obj){
return null;
}
obj=I.getScalingFactors(obj);
if(!obj){
return null;
}
obj=I.getUnitMatches(obj);
if(!obj){
return null;
}
var _a9;
if(_a9=I.isConversionFunction(_a4,to)){
var _aa=_a9[_a4][0];
var _ab=_a9[to][1];
var _ac=function(x){
return _ab(_aa(x));
};
return _ac;
}
return I.getConversionFactor(obj);
};
I.getUnitScale=function(_ae,_af,to,_b1){
return I.getUnitScale2(_ae,_af,to,_b1);
var a=I.getUnitPower(_ae);
_ae=a[0];
var _b3=a[1];
var b=I.getUnitPower(to);
to=b[0];
var _b5=b[1];
a=I.getUnitPower(_af);
_af=a[0];
var _b6=a[1];
b=I.getUnitPower(_b1);
_b1=b[0];
var _b7=b[1];
var _b8=1;
var _b9=1;
num=_ae.match(/[.,\d]+/);
if(num){
var tmp=parseNumber(num[0]);
_ae=_ae.replace(/[.,\d]+\s*/,"");
_b8*=tmp;
}
var num=_af.match(/[.,\d]+/);
if(num){
var tmp=parseNumber(num[0]);
_af=_af.replace(/[.,\d]+\s*/,"");
_b8*=1/tmp;
}
num=to.match(/[.,\d]+/);
if(num){
var tmp=parseNumber(num[0]);
to=to.replace(/[.,\d]+\s*/,"");
_b9*=1/tmp;
}
num=_b1.match(/[.,\d]+/);
if(num){
var tmp=parseNumber(num[0]);
_b1=_b1.replace(/[.,\d]+\s*/,"");
_b9*=tmp;
}
var _bc;
if(_bc=I.isConversionFunction(_ae,to)){
var _bd=_bc[_ae][0];
var _be=_bc[to][1];
var _bf=function(x){
return _be(_bd(x));
};
return _bf;
}
var _c1=false;
if(!I.unitMatch(_ae,_b3,to,_b5)){
_c1=true;
}
if(!I.unitMatch(_af,_b6,_b1,_b7)){
_c1=true;
}
var _c2=false;
if(_c1){
var tmp=to;
var _c3=_b5;
to=_b1;
_b5=_b7;
_b1=tmp;
_b7=_c3;
if(!I.unitMatch(_ae,_b3,to,_b5)){
InstaCalc.unitlabel="";
return 1;
}
if(!I.unitMatch(_af,_b6,_b1,_b7)){
InstaCalc.unitlabel="";
return 1;
}
_c2=true;
}
var obj;
var n;
if(obj=isUnit(_ae)){
n=obj[_ae];
}else{
n=1;
}
var ft=Math.pow(n,_b3);
if(obj=isUnit(_af)){
n=obj[_af];
}else{
n=1;
}
var fb=Math.pow(n,_b6);
if(obj=isUnit(to)){
n=obj[to];
}else{
n=1;
}
var tt=Math.pow(n,_b5);
if(obj=isUnit(_b1)){
n=obj[_b1];
}else{
n=1;
}
var tb=Math.pow(n,_b7);
var f2=(ft/tt)*(tb/fb);
f2*=_b8;
if(_c2){
I.log+="inverting!";
return function(x){
return (1*_b9)/(x*f2);
};
}else{
f2*=_b9;
return f2;
}
};
I.conversionCache={};
I.convertUnit=function(str){
var _cd=I.conversionCache[str];
if(_cd){
InstaCalc.unitlabel=_cd.unitlabel;
return _cd.conversion;
}
var _ce=1;
var _cf=1;
var ret=I.splitUnits(str);
if(ret==null){
InstaCalc.unitlabel="";
return 1;
}
var _d1=ret[0];
var _d2=ret[1];
var to=ret[2];
var _d4=ret[3];
var _d5=ret[4];
var _d6=I.getUnitScale(_d1,_d2,to,_d4);
if(_d6==null||typeof (_d6)=="undefined"){
InstaCalc.unitlabel="";
return 1;
}else{
InstaCalc.unitlabel=_d5;
I.conversionCache[str]={conversion:_d6,unitlabel:_d5};
return _d6;
}
};
I.allowedfn={};
I.locals={};
I.safeprepend="I.locals.__qweasdzxc";
I.stringprepend="InstaCalc__String__qweasdzxc";
I.clearLocals=function(){
I.locals={};
};
var a=I.allowedfn;
a.IF="if";
a.ABS="Math.abs";
a.ACOS="I.acos";
a.ASIN="I.asin";
a.ATAN="I.atan";
a.ATAN2="Math.atan2";
a.CEIL="Math.ceil";
a.COS="I.cos";
a.EXP="Math.exp";
a.FLOOR="Math.floor";
a.LN="Math.log";
a.LOG="I.log10";
a.MAX="Math.max";
a.MIN="Math.min";
a.POWER="Math.pow";
a.COSH="I.cosh";
a.SINH="I.sinh";
a.TANH="I.tanh";
a.COTH="I.coth";
a.SECH="I.sech";
a.CSCH="I.csch";
a.ASINH="I.asinh";
a.ACOSH="I.acosh";
a.ATANH="I.atanh";
a.COMBIN="I.combin";
a.ADD="I.add";
a.SUBTRACT="I.subtract";
a.MULTIPLY="I.multiply";
a.DIVIDE="I.divide";
a.CONVERT="I.convertUnit";
a.ROUND="Math.round";
a.ROUNDDOWN="Math.floor";
a.ROUNDUP="Math.ceil";
a.SIN="I.sin";
a.SQRT="Math.sqrt";
a.TAN="I.tan";
a.CHARCODE=true;
a.FROMCHARCODE=true;
a.FIB=true;
a.FAC="I.factorial";
a.NCHOOSEK=true;
a.TIME=true;
a.BIN="I.bin";
a.OCT="I.oct";
a.HEX="I.hex";
a.DEC="I.dec";
a.FROMBIN="I.frombin";
a.FROMOCT="I.fromoct";
a.RANDOM="I.random";
a.DEG=true;
a.RAD=true;
a.LINECHART="I.linechart";
a.BARCHART="I.barchart";
a.PIECHART="I.piechart";
a.PARSENUMBER="parseNumber";
a.GETROWVALUES="getRowValues";
a.GETOUTPUTVALUE="getOutputValue";
a.MAX="I.arraymax";
a.MIN="I.arraymin";
a.SUM="I.arraysum";
a.SUB="I.arraydifference";
a.AVERAGE="I.arrayavg";
a.FUNCTION="function";
a.TIME="I.time";
a.CONVERSION="I.conversion";
I.allowedcn={};
var c=I.allowedcn;
c.RANDOM="Math.random()";
c.PI="Math.PI";
c.pi="Math.PI";
c.Pi="Math.PI";
c.pI="Math.PI";
c.PHI="I.PHI";
c.E="Math.E";
I.keywords={};
var k=I.keywords;
k.IF="if";
k.ELSE="else";
k.ELSE_IF="else if";
k.TRUE="true";
k.FALSE="false";
I.expressions=[];
var re=new RegExp("\\b"+I.stringprepend+"(\\d+)\\b","g");
I.expressions.push([re,I.stringprepend+"$1"]);
I.expressions.push([/\band\b/ig," & "]);
I.expressions.push([/\bor\b/ig," | "]);
I.expressions.push([/\bnot\b/ig," ~ "]);
I.expressions.push([/\bxor\b/ig," ^ "]);
I.expressions.push([/\bmod\b/ig," % "]);
I.firstfilter=[];
var f=I.firstfilter;
f.push([/^(.*)=(.*[)]|.*\d)\s+(([a-zA-Z].*\s+(in|as|into|to|en)\s+.*))$/g,"$1 = CONVERSION($2, CONVERT(\"$3\") )"]);
f.push([/^\s*(-?[\d()\w.,]+)\s+(([a-zA-Z].*\s+(in|as|into|to|en)\s+.*))$/g,"CONVERSION($1, CONVERT(\"$2\") )"]);
f.push([/^\s*[(](.+)[)]\s+(([a-zA-Z].*\s+(in|as|into|to|en)\s+.*))$/g,"CONVERSION($1, CONVERT(\"$2\"))"]);
f.push([/\u0660/ig,"0"]);
f.push([/\u0661/ig,"1"]);
f.push([/\u0662/ig,"2"]);
f.push([/\u0663/ig,"3"]);
f.push([/\u0664/ig,"4"]);
f.push([/\u0665/ig,"5"]);
f.push([/\u0666/ig,"6"]);
f.push([/\u0667/ig,"7"]);
f.push([/\u0668/ig,"8"]);
f.push([/\u0669/ig,"9"]);
I.prefilter=[];
var p=I.prefilter;
p.push([/^\s*=\s*/,""]);
p.push([/\s*=\s*$/,""]);
p.push([/[+]\s*([0-9.,]+)%/g," * (1 + .01 * $1)"]);
p.push([/-\s*([0-9.,]+)%/g," * (1 - .01 * $1)"]);
p.push([/%\s+of\s+/ig," * .01 * "]);
p.push([/\s*([0-9.,]+)%/g,"($1 * .01)"]);
p.push([/%/g," * .01"]);
p.push([/[|]([^|]+)[|]/g,"ABS($1)"]);
p.push([/\b((\d|[,.])+)\s*KB\b/ig,"($1 * 1024)"]);
p.push([/\b((\d|[,.])+)\s*MB\b/ig,"($1 * 1024 * 1024)"]);
p.push([/\b((\d|[,.])+)\s*GB\b/ig,"($1 * 1024 * 1024 * 1024)"]);
p.push([/\b((\d|[,.])+)\s*TB\b/ig,"($1 * 1024 * 1024 * 1024 * 1024)"]);
p.push([/\b((\d|[,.])+)\s*PB\b/ig,"($1 * 1024 * 1024 * 1024 * 1024 * 1024)"]);
p.push([/\b((\d|[,.])+)\s*KBPS\b/ig,"($1 * 1024 / 8)"]);
p.push([/\b((\d|[,.])+)\s*MBPS\b/ig,"($1 * 1024 * 1024 / 8)"]);
p.push([/\b((\d|[,.])+)\s*GBPS\b/ig,"($1 * 1024 * 1024 * 1024 / 8)"]);
p.push([/\b((\d|[,.])+)\s*K\b/ig,"($1 * 1e3)"]);
p.push([/\b((\d|[,.])+)\s*M\b/ig,"($1 * 1e6)"]);
p.push([/\b((\d|[,.])+)\s*B\b/ig,"($1 * 1e9)"]);
p.push([/\b((\d|[,.])+)\s*T\b/ig,"($1 * 1e12)"]);
p.push([/((\d|[,.])+)\s*thousand\b/ig,"($1 * 1e3)"]);
p.push([/((\d|[,.])+)\s*million\b/ig,"($1 * 1e6)"]);
p.push([/((\d|[,.])+)\s*billion\b/ig,"($1 * 1e9)"]);
p.push([/((\d|[,.])+)\s*trillion\b/ig,"($1 * 1e12)"]);
p.push([/\s+rad\b/ig,"* 180 / PI"]);
p.push([/\b([0-9.,]+)rad\b/ig,"$1 * 180 / PI"]);
p.push([/\s+deg\b/ig,""]);
p.push([/(\d)\s+(\d)/g,"$1$2"]);
p.push([/0[bB]([01]+)/g,"FROMBIN($1)"]);
p.push([/0[oO]([01234567]+)/g,"FROMOCT($1)"]);
p.push([/((\b|[.])+[0-9.,]+((e|e-|e+)[0-9]+)?)\b/g,"PARSENUMBER(\"$1\")"]);
p.push([/\bR(\d+):R(\d+)\b/ig,"getRowValues($1,$2)"]);
p.push([/\bR(\d+),R(\d+)\b/ig,"getRowValues($1,$2)"]);
p.push([/\bR(\d+)\b/ig,"getOutputValue($1 - 1)"]);
p.push([/\brandom\b/ig,"RANDOM"]);
I.postfilter=[];
I.postfilter.push([/([)])\s+(([a-zA-Z].*))$/g,"$1 * I.convertUnit(\"$2\")"]);
I.postfilter.push([/[=]\s*[?]\s/," to "]);
I.plotColorScheme=0;
I.colors={};
I.colors.blue=0;
I.colors.red=1;
I.colors.green=2;
I.colors.purple=3;
I.colors.teal=4;
I.colors.orange=5;
function changePlotColor(x){
var foo=document.getElementById("example2");
foo.innerHTML="";
I.plotColorScheme=x;
I.plot.update();
}
function ReplotObject(){
this.data=[];
this.type="";
this.update=function(){
replot(this.data,this.type);
};
}
I.firstChart=true;
I.hasChart=false;
I.plotter=null;
function replot(_d9,_da){
if(I.settings.embed){
return;
}
if(I.firstChart){
showItem("chart");
I.firstChart=false;
}
I.hasChart=true;
if(_da!="line"&&_da!="pie"&&_da!="bar"){
_da="line";
}
var foo=document.getElementById("example2");
foo.innerHTML="";
try{
var i;
var _dd=[];
var _de=[];
for(i=0;i<I.datatitles.length;i++){
_dd.push({label:I.datatitles[i][0],v:i+1});
_de.push([[i+1],I.datatitles[i][1]]);
}
var _df=(_da=="bar"||_da=="line")?false:true;
I.plotter=new EasyPlot(_da,{"xTicks":_dd,"padding":{top:5,bottom:15,left:70,right:10},"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[I.plotColorScheme]),"backgroundColor":PlotKit.Base.baseColors()[I.plotColorScheme].lighterColorWithLevel(0.45),"xOriginIsZero":_df,"pieRadius":0.35},$("example2"),[_de]);
}
catch(e){
setStatus("Sorry, there was an error plotting: ("+e.message+"). Please try a browser with SVG support like <a href='http://getfirefox.com'>FireFox 2.0</a> or <a href='http://www.microsoft.com/windows/ie/'>IE7</a>.");
}
}
function findCommentText(str){
}
function findTitle(str){
if(isNull(str)||!str.match(/=/)){
return "";
}
var raw=str.split(/=/)[0];
var tmp=raw.split(/[{}()]/);
raw=tmp[tmp.length-1];
var out=raw.match(/[^{}]*/)[0];
var _e5=strtrim(out);
var _e6=_e5.replace(/_/g," ").replace("$","");
return _e6;
var _e7=str.match(/[a-zA-Z_][a-zA-Z0-9_:\.]*\s*=/);
if(isNull(_e7)){
return "";
}
var _e8="";
_e8=_e7[0].match(/[a-zA-Z_][a-zA-Z0-9_:\.]*/)[0];
re=new RegExp("_","g");
_e8=_e8.replace(re," ");
return _e8;
}
function replacefn(_e9){
replace="";
if(I.allowedfn[_e9.toUpperCase()]){
replace=I.allowedfn[_e9.toUpperCase()];
}else{
replace=I.safeprepend+_e9;
}
return replace;
}
function replacekeyword(_ea){
var _eb=I.keywords[_ea.toUpperCase()];
if(_eb){
return _eb;
}
return _ea;
}
function replacecn(_ec){
if(I.allowedcn[_ec]){
return I.allowedcn[_ec];
}
return "";
}
function validcn(_ed){
if(_ed===""){
return false;
}
if(I.allowedcn[_ed]){
return true;
}
return false;
}
function validkeyword(_ee){
if(_ee===""){
return false;
}
if(I.keywords[_ee.toUpperCase()]){
return true;
}
return false;
}
function validExpression(_ef){
var i;
for(i=0;i<I.expressions.length;i++){
if(_ef.match(I.expressions[i][0])){
return i;
}
}
return -1;
}
function replaceExpression(_f1){
var i;
for(i=0;i<I.expressions.length;i++){
if(_f1.match(I.expressions[i][0])){
return _f1.replace(I.expressions[i][0],I.expressions[i][1]);
}
}
return _f1;
}
function replacevariable(_f3){
return I.safeprepend+_f3;
}
function cleanVariable(_f4){
myregexp=new RegExp(I.safeprepend,"g");
return _f4.replace(myregexp,"");
}
function tokenType(_f5){
if(_f5.match(/[(]/)){
return "function";
}
if(validcn(_f5)){
return "constant";
}
if(validkeyword(_f5)){
return "keyword";
}
if(validExpression(_f5)!=-1){
return "expression";
}
return "variable";
}
function findString(_f6){
var i;
for(i=0;i<_f6.length;i++){
}
}
function isOperator(str){
if(str===""){
return false;
}
var c=str[0];
}
function parser(str){
var i;
for(i=0;i<str.length;i++){
}
}
function firstfilter(str){
var i;
for(i=0;i<I.firstfilter.length;i++){
re=I.firstfilter[i][0];
var _fe=I.firstfilter[i][1];
str=str.replace(re,_fe);
}
return str;
}
function prefilter(str){
var i;
for(i=0;i<I.prefilter.length;i++){
re=I.prefilter[i][0];
var _101=I.prefilter[i][1];
str=str.replace(re,_101);
}
return str;
}
function customOperators(str){
str=parseSuffixOperator(str,"!","FAC");
str=parseBinaryOperator(str,"^","POWER");
return str;
}
function postfilter(str){
var i;
for(i=0;i<I.postfilter.length;i++){
re=I.postfilter[i][0];
var _105=I.postfilter[i][1];
str=str.replace(re,_105);
}
return str;
}
function cleanup2(str){
var i;
if(isNull(str)||!isdefined(str)||str===""){
return str;
}
str=firstfilter(str);
var ret=extractStrings2(str);
str=ret[0];
var _109=ret[1];
var tmp=I.format.currencies;
for(var _10b in tmp){
var cur=tmp[_10b];
if(str.match(cur.regex)){
str=str.replace(cur.regex,"");
I.format.currency=true;
I.format.currencySymbol=cur.symbol;
I.format.decimals=cur.decimals;
}
}
str=customOperators(str);
str=prefilter(str);
var _10d=str.match(/[a-zA-Z_][a-zA-Z0-9_:]*\s*[(]*/g);
if(isNull(_10d)){
return str;
}
var _10e,type,_110;
for(i=0;i<_10d.length;i++){
_10e=_10d[i];
_10e=_10e.match(/\S+/)[0];
type=tokenType(_10e);
if(type=="function"){
var _111=_10e.match(/\w+/)[0];
_110=replacefn(_111);
re=new RegExp("([^.]|^)"+_111+"s*[(]","g");
str=str.replace(re,"$1"+_110+"(");
continue;
}
if(type=="constant"){
var _112=_10e.match(/\w+/)[0];
re=new RegExp("([^.]|^)"+_112+"\\b","");
str=str.replace(re,"$1"+replacecn(_112));
continue;
}
if(type=="keyword"){
var _113=_10e.match(/\w+/)[0];
re=new RegExp("(\\s|^)"+_113+"\\b","");
str=str.replace(re," "+replacekeyword(_113));
continue;
}
if(type=="expression"){
var _114=replaceExpression(_10e);
re=new RegExp("\\b"+_10e+"\\b","");
str=str.replace(re,_114);
continue;
}
var _115=I.safeprepend+_10e.toLowerCase();
re=new RegExp("\\b"+_10e+"\\b","g");
str=str.replace(re,_115);
}
str=postfilter(str);
str=replaceStrings(str,_109);
return str;
}
function extractStrings2(str){
var i;
var _118=false;
var _119="";
var _11a=[];
var _11b=[];
var _11c=str.match(/"([\\]"|[^"])+"/g);
if(isNull(_11c)){
return [str,[]];
}
for(i=0;i<_11c.length;i++){
var name=I.stringprepend+i;
var _11e=_11c[i];
str=str.replace(_11e,name);
_11b.push([name,_11e]);
}
return [str,_11b];
}
function extractStrings(str){
var i;
var _121=false;
var _122="";
var _123=[];
var _124=[];
for(i=0;i<str.length;i++){
if(i==0&&str[i]=="\""){
_121=true;
_122+=str[i];
continue;
}
if(str[i]=="\""&&(str[i-1]!="\\")){
_121=!_121;
if(_122!==""){
var name=I.stringprepend+_124.length;
str=str.replace(_122,name);
_124.push([name,_122]);
}
_122="";
continue;
}
if(_121===true){
_122+=str[i];
}
}
return [str,_124];
}
function extractConversion(str){
var expr;
var _128;
return 3;
var _129=str.match(array[0]);
if(!isNull(_129)){
expr=_129[1];
_128=_129[2];
return [expr,_128];
}
return [str,""];
}
function replaceStrings(str,_12b){
var i;
for(i=0;i<_12b.length;i++){
var item=_12b[i];
str=str.replace(item[0],item[1]);
}
return str;
}
function tokenize(str){
return str.match(/[a-zA-Z_][a-zA-Z0-9_:]*\s*[(]*/g);
}
function escapeUnicode(str){
var _130="";
for(var i=0;i<str.length;i++){
var c=str.charAt(i);
if(str.charCodeAt(i)>127){
c="_"+str.charCodeAt(i);
}
_130+=c;
}
return _130;
}
function scanCurrencyFormatting(str){
var tmp=I.format.currencies;
for(var _135 in tmp){
var cur=tmp[_135];
if(str.match(cur.regex)){
str=str.replace(cur.regex,"");
I.format.currency=true;
I.format.currencySymbol=cur.symbol;
I.format.decimals=cur.decimals;
}
}
return str;
}
function cleanup(str){
var i;
if(isNull(str)||!isdefined(str)||str===""){
return str;
}
str=scanCurrencyFormatting(str);
str=firstfilter(str);
str=strtrim(str);
var ret=extractStrings2(str);
str=ret[0];
var _13a=ret[1];
str=escapeUnicode(str);
str=replaceVariableNames(str);
str=prefilter(str);
str=customOperators(str);
var _13b=tokenize(str);
if(isNull(_13b)){
return str;
}
var _13c,type,_13e;
for(i=0;i<_13b.length;i++){
_13c=_13b[i];
_13c=_13c.match(/\S+/)[0];
type=tokenType(_13c);
if(type=="function"){
var _13f=_13c.match(/\w+/)[0];
_13e=replacefn(_13f);
re=new RegExp("([^.\\w]|^)"+_13f+"\\s*[(]","g");
str=str.replace(re,"$1"+_13e+"(");
continue;
}
if(type=="constant"){
var _140=_13c.match(/\w+/)[0];
re=new RegExp("([^.]|^)"+_140+"\\b","");
str=str.replace(re,"$1"+replacecn(_140));
continue;
}
if(type=="keyword"){
var _141=_13c.match(/\w+/)[0];
re=new RegExp("(\\s|^)"+_141+"\\b","");
str=str.replace(re," "+replacekeyword(_141));
continue;
}
if(type=="expression"){
var _142=replaceExpression(_13c);
re=new RegExp("\\b"+_13c+"\\b","");
str=str.replace(re,_142);
continue;
}
var _143=I.safeprepend+_13c.toLowerCase();
re=new RegExp("\\b"+_13c+"\\b","g");
str=str.replace(re,_143);
}
str=postfilter(str);
str=replaceStrings(str,_13a);
return str;
}
function replaceVariableNames(str){
while(str.match(/\b([a-zA-Z_][\w]*)\s+([a-zA-Z_][\w]*)/)){
str=str.replace(/\b([a-zA-Z_][\w]*)\s+([a-zA-Z_][\w]*)/,"$1_$2");
}
return str;
}
function replaceOperatorShortcuts(str){
while(str.match(/\b([0-9.]+)([\(a-zA-Z])/)){
str=str.replace(/\b(\d+)([\(a-zA-Z])/,"$1 * $2");
}
return str;
}
function iscomment(str){
if(str.match(/[\/][\/]/)){
return true;
}else{
return false;
}
}
function extractComment(str){
var a=str.match(/([\/][\/].*)/);
var _149;
if(!isNull(a)){
_149=str.split(/[\/][\/]+/)[0];
if(!isNull(_149)&&isdefined(_149)){
}else{
_149="";
}
var _14a=str.match("[/][/](.*)")[1];
return [_149,_14a];
}
return [str,""];
}
function extractTitle(str){
var a=str.split(/^\[[^\]]*\]/);
return a;
}
I.lastRecalculation=null;
I.recalculationDelay=50;
I.recalculationMinDelay=100;
I.recalculationTimeout=null;
var perftime=0;
var max_perf_time=0;
function generateGUID(){
var guid=Math.round(Math.random()*1000000000000);
return guid;
}
I.guid=generateGUID();
function scheduleRecalculation(){
var now=new Date();
var _14f=now-I.lastRecalculation;
if(Log){
Log.update();
}
if(_14f>=I.recalculationDelay){
recalculate();
I.lastRecalculation=new Date();
saveCalcCookie();
var _150=new Date();
perftime=_150-now;
if(perftime>I.recalculationDelay){
I.recalculationDelay=perftime+250;
}else{
I.recalculationDelay=perftime;
}
if(I.recalculationDelay<I.recalculationMinDelay){
I.recalculationDelay=I.recalculationMinDelay;
}
if(perftime>max_perf_time){
max_perf_time=perftime;
}
}else{
clearTimeout(I.recalculationTimeout);
I.recalculationTimeout=setTimeout("recalculate()",I.recalculationDelay);
}
}
function reset_cell(i){
I.inputs[i]=document.getElementById("input_"+i);
I.outputs[i]=document.getElementById("output_"+i);
I.outputCache[i]="";
I.outputs[i].innerHTML="";
setComment(i,"");
setTitleText(i,"");
I.format.currency=false;
InstaCalc.unitlabel="";
}
function valid_cell(i){
if(!isdefined(I.outputs[i])||!isdefined(I.inputs[i])){
return false;
}
if(isNull(I.inputs[i].value)||!isdefined(I.inputs[i].value)||I.inputs[i].value===""){
return false;
}
return true;
}
function simple_calculation(str){
}
function blank_calc_object(){
var ret={};
ret.commentText="";
ret.title="";
ret.input="";
ret.row="";
ret.parsed="";
ret.eval_result="";
ret.final_result="";
return ret;
}
function recalculate_cell(i){
var ret=blank_calc_object();
ret.input=I.inputs[i].value;
ret.row=i;
reset_cell(i);
if(!valid_cell(i)){
return ret;
}
var a=extractComment(ret.input);
ret.input=a[0];
ret.commentText=escapeHTML(a[1].toString());
ret.title=findTitle(ret.input);
parseCalculationObject(ret);
evaluateCalculationObject(ret);
if(InstaCalc.unitlabel){
ret.commentText=InstaCalc.unitlabel+ret.commentText;
}
displayCalculationObject(ret);
I.outputCache[i]=ret.final_result;
ret.result=ret.final_result;
return ret;
}
function displayCalculationObject(obj){
var i=obj.row;
var _15a=cleanVariable(escapeHTML(obj.final_result.toString()));
I.outputs[i].innerHTML=_15a;
if(!isNull(obj.commentText)&&isdefined(obj.commentText)){
if(I.usingCell3){
getComment(i).innerHTML=obj.commentText;
}else{
if(obj.final_result!=""){
I.outputs[i].innerHTML+="<span class = \"outputCommentSpacer\"></span>";
}
I.outputs[i].innerHTML+=" "+"<span class=\"outputComment\">"+obj.commentText+"</span>";
}
}
if(!isNull(obj.title)){
setTitleText(i,obj.title);
}
}
function parseCalculationObject(obj){
var i=obj.row;
var _15d=obj.input;
if(I.inputCache[i]!=null&&I.inputCache[i][0]==_15d){
obj.parsed=I.inputCache[i][1];
I.format.currency=I.outputCache.format[i].currency;
I.format.currencySymbol=I.outputCache.format[i].currencySymbol;
I.format.decimals=I.outputCache.format[i].decimals;
}else{
obj.parsed=cleanup(_15d);
I.inputCache[i]=[_15d,obj.parsed];
I.outputCache.format[i]={};
I.outputCache.format[i].currency=I.format.currency;
I.outputCache.format[i].currencySymbol=I.format.currencySymbol;
I.outputCache.format[i].decimals=I.format.decimals;
}
}
function evaluateCalculationObject(obj){
var ret=evaluateCalculation(obj.parsed);
obj.eval_result=ret.eval_result;
var ret2=cleanupEvalResult(ret.eval_result);
obj.final_result=ret2.final_result;
if(ret.error){
obj.error=ret.error;
if(ret.error instanceof ReferenceError){
obj.status="Waiting to define variable in row "+(obj.row+1)+"...";
}else{
obj.status="Waiting on row "+(obj.row+1)+"...";
}
}
if(ret2.error){
obj.error=ret2.error;
obj.status=obj.status="Waiting on row "+(obj.row+1)+"...";
}
return obj;
}
function cleanupEvalResult(_161){
var ret={};
ret.final_result="";
if(_161=="NaN"||_161=="undefined"){
_161="";
ret.error="undefined";
}
if(typeof (_161)=="function"){
_161="";
}
if(typeof (_161)=="number"){
if(_161==Infinity){
_161="Infinity";
}else{
if(_161==-Infinity){
_161="-Infinity";
}else{
if(isNaN(_161)){
_161="Number undefined";
ret.error=true;
}else{
_161=formatNumber(_161);
if(_161==Infinity){
_161="Infinity";
}
}
}
}
}
if(typeof (_161)=="boolean"){
_161=_161.toString();
}
if(!_161){
_161="";
}
ret.final_result=_161;
return ret;
}
function evaluateCalculation(str){
var ret={};
ret.eval_result="";
if(!isNull(str)){
try{
ret.eval_result=eval(str);
}
catch(e){
ret.error=e;
ret.eval_result="";
}
}
return ret;
}
function shouldRedoCalculation(obj){
if(isNull(obj)){
return false;
}
if(obj["error"]){
return true;
}
if(obj["parsed"].match("getOutputValue")){
return true;
}
return false;
}
function recalculate(){
var tmp="";
var _167="";
var _168=false;
var i;
I.clearLocals();
var redo=[];
for(var i=0;i<I.cells;i++){
var ret=recalculate_cell(i);
if(shouldRedoCalculation(ret)){
redo.push(i);
}
}
if(redo.length>=1){
for(var i=0;i<redo.length;i++){
recalculate_cell(redo[i]);
}
}
setStatus(_167);
}
I.cache_count=0;
I.cache_max=1000;
I.cache=[];
I.cache_hits=0;
I.cache_misses=0;
function get_cache(key){
if(I.cache[key]){
I.cache_hits+=1;
return I.cache[key];
}
I.cache_misses+=1;
return false;
}
function clear_cache(){
I.cache=[];
I.cache_count=0;
}
function set_cache(key,_16e){
if(I.cache_count>I.cache_max){
clear_cache();
}
I.cache[key]=_16e;
I.cache_count+=1;
return _16e;
}
function parseNumber(n){
var _170=get_cache(n);
if(_170){
return _170;
}
if(n==Infinity||n==-Infinity){
return n;
}
if(n.match(/^0x[0-9a-f]+/i)){
n=parseInt(n,16);
}
if(matches=n.toString().match(/^0b([01]+)/i)){
n=parseInt(matches[1],2);
}
if(matches=n.toString().match(/^0o([01234567]+)/i)){
n=parseInt(matches[1],8);
}
var num=new NumberFormat();
num.setInputDecimal(".");
num.setNumber(n);
num.setPlaces("-1",false);
num.setCurrencyValue("$");
num.setCurrency(false);
num.setCurrencyPosition(num.LEFT_OUTSIDE);
num.setNegativeFormat(num.LEFT_DASH);
num.setNegativeRed(false);
num.setSeparators(false,",",",");
var str=parseFloat(num.toFormatted());
set_cache(n,str);
return str;
}
var num=new NumberFormat();
num.setInputDecimal(".");
num.setCurrency(I.format.currency);
num.setCurrencyPosition(num.LEFT_OUTSIDE);
num.setNegativeFormat(num.LEFT_DASH);
num.setNegativeRed(false);
num.setSeparators(true,",",",");
I.settings.numberFormat={};
I.settings.numberFormat.precisionLimitUpper=1000000000000000;
I.settings.numberFormat.precisionLimitLower=1e-11;
I.settings.numberFormat.roundingLimit=1000000000;
I.settings.numberFormat.precisionDefault=15;
I.settings.numberFormat.precisionExponential=10;
I.settings.numberFormat.fixedDefault=11;
function formatNumber(n){
var str=n.toString();
if(n>=I.settings.numberFormat.precisionLimitUpper){
return n.toPrecision(10).replace("e+","e");
}
if(InstaCalc.unitlabel!=""){
if(n<=I.settings.numberFormat.precisionLimitLower){
return n.toString();
}
}
n=parseFloat(n.toPrecision(I.settings.numberFormat.precisionDefault));
if(I.format.currency){
n=n.toFixed(I.format.decimals);
}else{
n=n.toFixed(I.settings.numberFormat.fixedDefault);
}
if(n>=I.settings.numberFormat.roundingLimit){
n=parseFloat(n).toPrecision(I.settings.numberFormat.precisionDefault);
}else{
num.setPlaces("-1",false);
}
num.setPlaces("-1",false);
if(I.format.currency){
num.setPlaces(I.format.decimals);
num.setCurrencyValue(I.format.currencySymbol);
}
num.setNumber(n);
return num.toFormatted();
}
function inputReplace(find,_176){
var i;
for(i=0;i<I.inputs.length;i++){
var str=getInputValue(i);
if(str.match(find)){
var _179=str.replace(find,_176);
setInputValue(i,_179);
}
}
recalculate();
}
function setBarChart(){
inputReplace(/^\s*\w+chart/,"barchart");
}
function setLineChart(){
inputReplace(/^\s*\w+chart/,"linechart");
}
function setPieChart(){
inputReplace(/^\s*\w+chart/,"piechart");
}
function getRowValues(_17a,end){
if(typeof (_17a)=="string"){
_17a=parseInt(_17a,10);
}
if(typeof (end)=="string"){
end=parseInt(end,10);
}
if(end<_17a){
return [];
}
if(_17a<1||end>I.cells){
return [];
}
var a=[];
var t=[];
for(row=_17a;row<=end;row++){
var cell=row-1;
var _17f="Row "+row;
var val;
try{
val=getOutputValue(cell);
_17f=getTitleText(cell);
}
catch(e){
val=0;
_17f="Row "+row;
}
if(typeof (val)!="number"){
val=parseNumber(val);
}
if(_17f===""){
_17f="Row "+row;
}
a.push([row,val]);
t.push([_17f,val]);
}
I.datatitles=t;
I.data=a;
return a;
}
I.id=false;
function setupCookies(){
I.id=Cookie.get("id");
if(!I.id){
I.id=Math.round(Math.random()*100000000000000000000);
Cookie.set("id",id,{duration:1000});
}
}
function saveCalcCookie(){
if(!I.id){
return;
}
updateLocalPermalink();
Cookie.set("last",I.permalink,{duration:365});
}
function loadCookieData(){
var last=Cookie.get("last");
if(last){
loadCellsFromURL(last);
recalculate();
}
}
function loadWindowSettings(){
if(Cookie.get("showpanel")=="false"){
hideItem("user-panel");
}else{
showItem("user-panel");
}
}
function saveWindowSettings(){
if($("user-panel").style.display=="none"){
Cookie.set("showpanel","false",{duration:365});
}else{
Cookie.set("showpanel","true",{duration:365});
}
}
function encodeForURL(str){
return encodeBase64ForURL(Utf8.encode(str));
}
function decodeFromURL(url){
return Utf8.decode(decodeBase64ForURL(url));
}
function createDataString(_184){
var str="";
var tmp="";
for(i=0;i<_184.length;i++){
tmp=_184[i];
tmp=tmp.replace(/[|]/g,I.separator);
if(i===0){
str+=tmp;
}else{
str+="|"+tmp;
}
}
return str;
}
function getCurrentDataString(){
saveCells();
return createDataString(saved);
}
function createURL(){
var str=encodeForURL(getCurrentDataString());
var desc=encodeForURL(getDescription());
var _189=getShowHideSettings();
var _18a="?d="+desc+"&c="+str+"&s="+_189+"&v="+I.version;
I.permalink=I.settings.base_url+_18a;
I.embedlink=I.settings.embed_preview_url+_18a;
if(I.permalink.length>2000){
setStatus(Messages.URL_TOO_LONG);
}
}
function embedPixelHeight(){
return 80+(24*I.cells);
}
function hasURLParams(){
str=getURLParam("c",getURLParams());
if(isNull(str)||str.length==0){
return false;
}else{
return true;
}
}
function getURLParams(url){
if(url==null){
url=window.location.href;
}
var _18c=url.match(/(.*)([#?].+)/);
var _18d="";
if(_18c){
_18d=_18c[2];
}
return _18d;
}
function getURLNoParams(){
var url=window.location.href;
var base=url.split(/[#?]/)[0];
return base;
}
function getURLDirectory(){
return window.location.href.match(".*/");
}
function loadCellsFromURL(url){
var str=getURLParam("c",url);
str=decodeFromURL(str);
if(isNull(str)){
return;
}
loadCellsFromDataString(str);
}
function showHideCellsFromURL(url){
var str=unescape(getURLParam("s",url));
I.showHide=str;
showHideCells(str);
}
function setDescriptionFromURL(url){
var str=getURLParam("d",url);
if(str!==""){
I.description=decodeFromURL(str);
setDescription(I.description);
}
}
function loadDataFromURL(url){
I.resetChart();
eraseRows();
setDescription("");
loadCellsFromURL(url);
showHideCellsFromURL(url);
setDescriptionFromURL(url);
recalculate();
}
function loadURLParams(){
loadDataFromURL(getURLParams());
}
function saveSettings(){
I.showHideSettings=getShowHideSettings();
}
function restoreSettings(){
showHideCells(I.showHideSettings);
}
function loadCellsFromString(str){
var _198=str.split("\n");
loadInput(_198);
}
function loadCellsFromDataString(str){
var _19a=str.split("|");
for(var i=0;i<_19a.length;i++){
_19a[i]=unescapeSeparator(_19a[i]);
}
loadInput(_19a);
saveCells();
}
function unescapeSeparator(str){
var re=new RegExp(I.separator,"g");
str=str.replace(re,"|");
return str;
}
function loadInput(_19e){
eraseRows();
addMultipleCells(_19e.length);
setCells(_19e);
}
function loadTextArea(){
var foo=document.getElementById("inputtextarea");
var str="";
for(i=0;i<I.inputs.length;i++){
str+="<span style=\"color: blue;\">"+I.inputs[i].value+"</span><br/>";
}
foo.value=str;
return str;
}
function exportOutputHTML(){
var str="";
for(var i=0;i<I.outputs.length;i++){
str+="<span class=\"textitem\">"+getOutput(i).innerHTML+"&nbsp;"+"</span><br/>";
}
return str;
}
I.settings.exportTable={};
function exportHTML(){
var str="";
for(var i=0;i<I.inputs.length;i++){
str+="<span>"+getInputValue(i)+"</span><br/>";
}
str="";
str+="<div><table width=\"600px\" id=\"html-table\">";
str+="<tr class=\"html-header\"><th>Row</td><th>"+"Calculation"+"</th>"+"<th>Result</th></tr>";
var i;
for(i=0;i<I.inputs.length;i++){
var _1a5=getInputValue(i);
var _1a6=getOutput(i).innerHTML;
str+="<tr class=\"html-number\">";
str+="<td>r"+(i+1)+"</td>";
str+="<td class=\"html-input\">"+_1a5+"</td>";
str+="<td class=\"html-output \">"+_1a6+"</td>";
str+="</tr>";
}
str+="</table></div>";
return str;
}
function exportString(){
var i;
var str="";
for(i=0;i<I.inputs.length;i++){
str+=getInputValue(i);
if(i+1<I.inputs.length){
str+="\n";
}
}
return str;
}
I.toString=function(){
return exportString();
};
function saveCells(){
saved=getValueArray(I.inputs);
}
function loadCells(){
setValueArray(saved,I.inputs);
}
function getValueArray(_1a9){
var _1aa=[];
if(!isdefined(_1a9)){
return _1a9;
}
for(var i=0;i<_1a9.length;i++){
_1aa[i]=_1a9[i].value;
}
return _1aa;
}
function setValueArray(_1ac,_1ad){
for(var i=0;i<_1ac.length;i++){
if(isdefined(_1ac[i])&&isdefined(_1ad[i])){
_1ad[i].value=_1ac[i];
}
}
}
function setCells(_1af){
if(!isdefined(_1af)){
_1af=saved;
}
for(var i=0;i<I.cells;i++){
var _1b1="";
if(isdefined(_1af[i])){
_1b1=_1af[i];
}
setInputValue(i,_1b1);
}
}
function rowselect(a,b){
rows=[];
if(b>a){
return rows;
}
if(b>I.cells){
return rows;
}
for(i=a;i<=b;i++){
rows.push(getOutput(i+1).innerHTML);
}
return rows;
}
function changeRow(row){
if(getInputValue(row)===""){
deleteRow(row);
}else{
insertRow(row);
}
}
function eraseRows(){
var _1b5=document.getElementById("myTbody");
if(isdefined(_1b5)&&!isNull(_1b5)){
var _1b6=document.getElementById("myTbody");
while(_1b6.childNodes.length>0){
_1b6.removeChild(_1b6.firstChild);
}
}
I.cells=0;
I.inputs=[];
I.titles=[];
}
function clearAllRows(){
var tmp=[];
for(var i=0;i<I.cells;i++){
tmp.push("");
}
setCells(tmp);
recalculate();
}
function deleteRow(row){
if(I.cells<=1){
return;
}
saveCells();
saved.splice(row,1);
var v=getVisibility();
v.splice(row,1);
var tmp=createDataString(saved);
if(row>0){
selectRow(getSelectedRow()-1);
}else{
selectRow(0);
}
loadCellsFromDataString(tmp);
showAllInputs();
recalculate();
setVisibility(v);
return;
}
function insertRow(row){
if(I.cells>=(I.maxCells-1)){
setStatus("You hit the max -- can't insert any more rows");
return;
}
saveCells();
saved.splice(row+1,0,"");
var v=getVisibility();
v.splice(row+1,0,"s");
var tmp=createDataString(saved);
loadCellsFromDataString(tmp);
recalculate();
setVisibility(v);
return;
}
function getVisibility(){
I.settings.visibility=[];
for(var i=0;i<I.inputs.length;i++){
if(inputHidden(i)){
I.settings.visibility[i]="h";
}else{
I.settings.visibility[i]="s";
}
}
return I.settings.visibility;
}
function setVisibility(_1c0){
var i=0;
for(i=0;i<I.inputs.length;i++){
if(_1c0[i]=="h"){
hideInput(i);
}else{
showInput(i);
}
}
getVisibility();
}
function addCell3(div){
I.usingCell3=true;
var html="";
var i=I.cells;
html+="<div class=\"row\" onkeyup=\"recalculate()\">";
html+="<div class=\"row-number\" title=\"Click to modify row\" onContextMenu=\"return false;\" id=\"parentmenu_"+i+"\" >"+"R"+(i+1)+"</div>";
html+="<div class=\"row-inputarea\">";
html+="<input id=\"input_"+i+"\" autocomplete=\"OFF\" class=\"row-input\" onFocus= \"selectRow("+i+")\" />";
html+="<div id=\"title_"+i+"\" class=\"titleArea\" >"+"</div>";
html+="</div>";
html+="<div class=\"row-outputarea\">";
html+="<div id=\"output_"+i+"\" class=\"row-output\" >"+"</div>";
html+="<div id=\"comment_"+i+"\" class=\"comment\" >"+"</div>";
html+="</div>";
html+="</div>";
div.innerHTML+=html;
hideObject(getTitle(i));
showInput(i);
I.cells++;
return html;
}
function addCell2(_1c5){
var html="";
html+="<div class=\"row\">";
html+="<div class=\"row-number\" title=\"Click to modify row\" onContextMenu=\"return false;\" id=\"parentmenu_"+i+"\" >"+"R"+(i+1)+"</div>";
html+="<div class=\"row-inputarea\">";
html+="<input id=\"input_"+i+"\" autocomplete=\"OFF\" class=\"row-input\" onFocus= \"selectRow("+i+")\" />";
html+="<div id=\"title_"+i+"\" class=\"titleArea\" >"+"</div>";
html+="</div>";
html+="<div id=\"output_"+i+"\" title = \"Click to show/hide details\" class=\"row-output\" >"+"</div>";
html+="</div>";
_1c5.innerHTML+=html;
hideObject(getTitle(i));
showInput(i);
I.cells++;
return html;
}
function addCell(_1c7,i,_1c9){
var _1ca=document.getElementById("myTbody");
var _1cb,_1cc;
_1cb=_1ca.insertRow(_1ca.rows.length);
_1cb.className="tr0";
_1cc=_1cb.insertCell(_1cb.cells.length);
_1cc.className="col0";
_1cc.innerHTML="<span class=\"number\" title=\"Click to modify row\" onContextMenu=\"return false;\" id=\"parentmenu_"+i+"\" >"+"R"+(i+1)+"</span>";
if(I.settings.standalone){
_1cc.innerHTML+="<div class=\"popitmenu\" id=\"childmenu_"+i+"\">"+"<a href=\"#R"+(i+1)+"\" onClick=\"javascript:toggleInput("+i+")\">Show/Hide This Row</a>"+"<a href=\"#R"+(i+1)+"\" onClick=\"javascript:selectRow("+i+"); insertRow("+i+")\">Insert Row Below </a>"+"<a href=\"#R"+(i+1)+"\" onClick=\"javascript:selectRow("+i+"); deleteRow("+i+")\">Delete Row "+(i+1)+"</a>"+"</div>";
}else{
_1cc.innerHTML+="<div class=\"popitmenu\" id=\"childmenu_"+i+"\">"+"<a href=\"javascript:toggleInput("+i+")\">Show/Hide This Row</a>"+"<a href=\"javascript:selectRow("+i+"); insertRow("+i+")\">Insert Row Below </a>"+"<a href=\"javascript:selectRow("+i+"); deleteRow("+i+")\">Delete Row "+(i+1)+"</a>"+"</div>";
}
at_attach("parentmenu_"+i,"childmenu_"+i,"click","y","pointer");
_1cc=_1cb.insertCell(_1cb.cells.length);
_1cc.className="col1";
_1cc.innerHTML="<div class=\"col1\"><a name=\"R"+(i+1)+"\"></a><input id=\"input_"+i+"\" autocomplete=\"OFF\" class=\"inputArea\" onFocus= \"selectRow("+i+")\" /><div id=\"title_"+i+"\" class=\"titleArea\" onClick=\"toggleInput("+i+")\">"+"</div></div>";
_1cc=_1cb.insertCell(_1cb.cells.length);
_1cc.className="col2";
_1cc.innerHTML="<div id=\"output_"+i+"\" onClick=\"toggleInput("+i+")\" title = \"Click to show/hide details\" class=\"outputArea\" >"+"</div>";
hideObject(getTitle(i));
showInput(i);
}
function selectRow(n){
var prev=I.selected;
I.selected=n;
}
function selectFirstRow(){
I.selected=-1;
selectNextRow();
}
function selectNextRow(){
while(I.selected<I.inputs.length-1){
I.selected++;
var x=getInput(I.selected);
if(isObjectVisible(x)){
selectRow(I.selected);
try{
x.focus();
x.select();
}
catch(e){
}
return;
}
}
return;
}
function selectRow2(i){
var x=getInput(i);
if(isObjectVisible(x)){
selectRow(i);
try{
x.focus();
x.select();
}
catch(e){
}
}
return;
}
function selectPrevRow(){
while(I.selected>0){
I.selected--;
var x=getInput(I.selected);
if(isObjectVisible(x)){
selectRow(I.selected);
try{
x.focus();
x.select();
}
catch(e){
}
return;
}
}
return;
}
function getSelectedRow(){
return I.selected;
}
function addMultipleCells(n){
if(I.cells+n>I.maxCells){
setStatus("Whoa there, that's a lot of cells. Do you have an equation that won't fit? Send me feedback about what you need!");
return;
}
var v=getVisibility();
saveCells();
var i;
for(i=0;i<n;i++){
addCell("",I.cells,I.cells);
I.cells++;
}
setCells();
recalculate();
setVisibility(v);
}
function addMultipleCells3(n){
if(I.cells+n>=I.maxCells){
return;
}
var v=getVisibility();
saveCells();
var i;
for(i=0;i<n;i++){
addCell3($("cellrows"));
}
setCells();
recalculate();
setVisibility(v);
}
function addMultipleCells2(n){
if(I.cells+n>=I.maxCells){
return;
}
var v=getVisibility();
saveCells();
var i;
for(i=0;i<n;i++){
addCell2($("cellrows"));
}
setCells();
recalculate();
setVisibility(v);
}
function toggleInput(i){
if(I.settings.rowclicks==false){
return;
}
if(inputHidden(i)){
showInput(i);
}else{
hideInput(i);
}
}
function hideAllInputs(){
var i;
for(i=0;i<I.cells;i++){
hideInput(i);
}
}
function showAllInputs(){
var i;
for(i=0;i<I.cells;i++){
showInput(i);
}
}
function hideInput(i){
if(I.settings.embed||true){
hideObject(getInput(i));
showObject(getTitle(i));
return;
}
var foo=new Effect.Fade(getInput(i),{duration:0.1});
foo=new Effect.Appear(getTitle(i),{duration:0.2,scaleY:false});
}
function showInput(i){
if(I.settings.embed||true){
hideObject(getTitle(i));
showObject(getInput(i));
return;
}
hideObject(getTitle(i));
var foo=new Effect.Appear(getInput(i),{duration:0.2});
}
function inputHidden(i){
return getInput(i).style.display=="none";
}
function getInput(i){
if(!isdefined(I.inputs[i])||I.inputs[i]===null){
I.inputs[i]=document.getElementById("input_"+i);
}
return I.inputs[i];
}
function reloadInputs(){
var i;
I.inputs=[];
for(i=0;i<I.cells;i++){
I.inputs[i]=null;
getInput(i);
}
return;
}
function reloadOutputs(){
var i;
I.outputs=[];
for(i=0;i<I.cells;i++){
I.outputs[i]=null;
getOutput(i);
}
return;
}
function getInputValue(i){
return getInput(i).value;
}
function setInputValue(i,str){
getInput(i).value=str;
}
function setComment(i,str){
var _1ec=getComment(i);
if(_1ec){
_1ec.innerHTML=str;
}
}
function getComment(i){
if(!isdefined(I.comments[i])){
I.comments[i]=document.getElementById("comment_"+i);
}
return I.comments[i];
}
function setComment(i,str){
}
function getOutput(i){
if(!isdefined(I.outputs[i])){
I.outputs[i]=document.getElementById("output_"+i);
}
return I.outputs[i];
}
function getOutputValue(i){
if(i>=0&&i<I.cells){
str=I.outputCache[i];
return parseNumber(I.outputCache[i]);
}else{
return 0;
}
}
function getTitle(i){
if(!isdefined(I.titles[i])){
I.titles[i]=document.getElementById("title_"+i);
}
return I.titles[i];
}
function setTitleText(i,str){
getTitle(i).innerHTML=str;
}
function getTitleText(i){
return getTitle(i).innerHTML;
}
function textMode(){
var _1f6=document.getElementById("textmode");
var _1f7=document.getElementById("gridmode");
hideObject(_1f7);
var foo=new Effect.Appear(_1f6);
}
function gridMode(){
var _1f9=document.getElementById("textmode");
var _1fa=document.getElementById("gridmode");
var foo=new Effect.Appear(_1fa);
hideObject(_1f9);
}
KeyEvents={};
KeyEvents.specialKeyMap={13:selectNextRow,40:selectNextRow,38:selectPrevRow};
function specialKeyMap(e){
}
function documentKeyListener(e){
if(e==null){
keycode=event.keyCode;
}else{
keycode=e.which;
}
if(keycode==8){
if(confirmClick("Leave your current calculation?")){
}else{
e.preventDefault();
}
}
}
function keyListener(e){
if(e==null){
keycode=event.keyCode;
}else{
keycode=e.which;
}
var key=keycode;
var fn=KeyEvents.specialKeyMap[key];
if(fn){
fn();
}
scheduleRecalculation();
}
function init(){
if(I.settings.embed){
return;
}
var foo;
if(I.hasChart){
showItem("chart");
}else{
if(!I.settings.standalone){
}
}
if(typeof (loadOnlineContent)=="function"){
loadOnlineContent();
}
}
function showHideCells(_202){
if(isNull(_202)){
return;
}
var i;
for(i=0;i<I.cells;i++){
if(_202.charAt(i)=="h"){
hideInput(i);
}else{
showInput(i);
}
}
return _202;
}
function getShowHideSettings(){
var _204="";
var i;
for(i=0;i<I.cells;i++){
if(inputHidden(i)){
_204+="h";
}else{
_204+="s";
}
}
return _204;
}
function insertRowIntoString(row){
saveCells();
}
function hideAll(_207){
var i;
for(i=0;i<_207.length;i++){
hideItem(_207[i]);
}
return;
}
function toggleAndHide(item,_20a){
for(i=0;i<_20a.length;i++){
if(item==_20a[i]){
toggleItem(_20a[i]);
}else{
hideItem(_20a[i]);
}
}
}
function getOutputs(){
var i;
var a=[];
for(i=0;i<I.outputCache.length;i++){
a.push(I.outputCache[i]);
}
return a;
}
function createCalc(div,_20e){
div.innerHTML="";
}
function createPage(_20f){
var _210=document.getElementById("variablearea");
I.status=document.getElementById("status");
var _211={};
document.getElementById("myTable").onkeyup=keyListener;
eraseRows();
if(I.settings.embed==false){
}
hideAll(I.divs);
if(hasURLParams()){
loadURLParams();
}else{
for(i=0;i<I.startcells;i++){
addCell("",i,"");
I.cells++;
}
if(_20f!=null){
loadInput(_20f);
}
}
}
I.timer=null;
I.delay=300;
function startTimer(){
I.timer=self.setTimeout("startTimer()",I.delay);
setStatus(Math.random().toString());
}
function usesCharts(){
str=exportString();
if(str.match("chart")){
return true;
}
return false;
}
function clearCommand(){
if(confirmClick("This will erase all rows and notes. Continue?")==true){
clearAllRows();
showAllInputs();
setDescription("");
}
}
function performClear(){
setUndo();
showItem("undo");
clearAllRows();
showAllInputs();
setDescription("");
}
I.undo="";
function setUndo(){
createURL();
I.undo=I.permalink;
}
function undo(){
loadCellsFromURL(I.undo);
recalculate();
}
var Unit={};
Unit.label="";
Unit.alias={};
Unit.alias.mph="miles/hour";
Unit.alias.mpg="miles/gallon";
Unit.alias.fps="feet/second";
Unit.alias.kph="km/hour";
Unit.alias.kmph="km/hour";
Unit.alias.kmh="km/hour";
Unit.alias.hz="times/second";
Unit.angle={};
Unit.angle.radian=Unit.angle.radians=Unit.angle.rad=1;
Unit.angle.degree=Unit.angle.degrees=Unit.angle.deg=Unit.angle.radian*Math.PI/180;
Unit.angle.gradian=Unit.angle.gradians=Unit.angle.grad=Unit.angle.radian*Math.PI/200;
Unit.length={};
Unit.length.SI={};
Unit.length.SI.meter=1;
Unit.mass={};
Unit.mass.SI={};
Unit.mass.SI.kilogram=1;
Unit.time={};
Unit.time.SI={};
Unit.time.SI.second=1;
Unit.area=["\\^2","sq","squared","square"];
Unit.area.SI={};
Unit.area.SI.meter=2;
Unit.volume=["\\^3","cu","cubed","cubic"];
Unit.volume.SI={};
Unit.volume.SI.meter=3;
Unit.speed={};
Unit.liquid={};
Unit.liquid.SI={};
Unit.liquid.SI.meter=3;
Unit.power={};
Unit.force={};
Unit.torque={};
Unit.energy={};
Unit.data={};
Unit.currency={};
Unit.temperature={};
Unit.temperature.conversion="function";
Unit.temperature.c=Unit.temperature.celsius=Unit.temperature.celcius=Unit.temperature.centigrade=[function(C){
return C;
},function(C){
return C;
}];
Unit.temperature.f=Unit.temperature.fahrenheit=[function(F){
return (F-32)*5/9;
},function(C){
return (C*9/5)+32;
}];
Unit.temperature.k=Unit.temperature.kelvin=[function(K){
return K-273.15;
},function(C){
return C+273.15;
}];
Unit.temperature.r=Unit.temperature.rankine=[function(R){
return (R*5/9)-273.15;
},function(C){
return (C+273.15)*9/5;
}];
Unit.data.base=1;
Unit.data.bit=Unit.data.bits=1;
Unit.data.kilobit=Unit.data.kilobits=Unit.data.kbit=Unit.data.kbits=1024*Unit.data.bit;
Unit.data.megabit=Unit.data.megabits=Unit.data.mbit=Unit.data.mbits=1024*Unit.data.kbit;
Unit.data.gigabit=Unit.data.gigabits=Unit.data.gbit=Unit.data.gbits=1024*Unit.data.mbit;
Unit.data.terabit=Unit.data.terabits=Unit.data.tbit=Unit.data.tbits=1024*Unit.data.gbit;
Unit.data.petabit=Unit.data.petabits=Unit.data.pbit=Unit.data.pbits=1024*Unit.data.tbit;
Unit.data.exabit=Unit.data.exabits=Unit.data.ebit=Unit.data.ebits=1024*Unit.data.pbit;
Unit.data["byte"]=Unit.data["bytes"]=8*Unit.data.bit;
Unit.data["kilobyte"]=Unit.data["kilobytes"]=Unit.data["kb"]=Unit.data["kbs"]=1024*Unit.data["byte"];
Unit.data["megabyte"]=Unit.data["megabytes"]=Unit.data["mb"]=Unit.data["mbs"]=1024*Unit.data.kb;
Unit.data["gigabyte"]=Unit.data["gigabytes"]=Unit.data["gb"]=Unit.data["gbs"]=1024*Unit.data.mb;
Unit.data["terabyte"]=Unit.data["terabytes"]=Unit.data["tb"]=Unit.data["tbs"]=1024*Unit.data.gb;
Unit.data["petabyte"]=Unit.data["petabytes"]=Unit.data["pb"]=Unit.data["pbs"]=1024*Unit.data.tb;
Unit.data["exabyte"]=Unit.data["exabytes"]=Unit.data["eb"]=Unit.data["ebs"]=1024*Unit.data.pb;
Unit.currency.base=1;
Unit.currency.dollar=Unit.currency.dollars=1;
Unit.currency.penny=Unit.currency.pennies=Unit.currency.cent=Unit.currency.cents=0.01*Unit.currency.dollars;
Unit.constant={};
Unit.constant.base=1;
Unit.constant.unity=1;
Unit.constant.times=Unit.constant.time=1;
Unit.constant.kilotimes=Unit.constant.kilotime=1000*Unit.constant.time;
Unit.time.base=1;
Unit.time.name="time";
Unit.time.second=Unit.time.seconds=Unit.time.s=Unit.time.sec=Unit.time.secs=1;
Unit.time.ps=Unit.time.picosecond=Unit.time.picoseconds=1e-12*Unit.time.second;
Unit.time.ns=Unit.time.nanosecond=Unit.time.nanoseconds=1e-9*Unit.time.second;
Unit.time.us=Unit.time.microsecond=Unit.time.microseconds=0.000001*Unit.time.second;
Unit.time.ms=Unit.time.millisecond=Unit.time.milliseconds=0.001*Unit.time.second;
Unit.time.minute=Unit.time.minutes=Unit.time.min=Unit.time.mins=60*Unit.time.second;
Unit.time.hour=Unit.time.hours=Unit.time.hr=Unit.time.hrs=Unit.time.h=60*Unit.time.minute;
Unit.time.day=24*Unit.time.hour;
Unit.time.days=24*Unit.time.hour;
Unit.time.week=7*Unit.time.day;
Unit.time.weeks=7*Unit.time.day;
Unit.time.fortnight=2*Unit.time.week;
Unit.time.fortnights=2*Unit.time.week;
Unit.time.month=4.34812141*Unit.time.week;
Unit.time.months=4.34812141*Unit.time.week;
Unit.time.year=12*Unit.time.month;
Unit.time.years=12*Unit.time.month;
Unit.time.decade=10*Unit.time.year;
Unit.time.decades=10*Unit.time.year;
Unit.time.century=100*Unit.time.year;
Unit.time.centuries=100*Unit.time.year;
Unit.time.millenium=1000*Unit.time.year;
Unit.time.milleniums=1000*Unit.time.year;
Unit.time.millenia=1000*Unit.time.year;
Unit.energy.base=1;
Unit.energy.name="energy";
Unit.energy.joule=Unit.energy.joules=Unit.energy.j=1;
Unit.energy["electron volt"]=Unit.energy["ev"]=16021764600000000000*Unit.energy.joule;
Unit.energy["watt-hour"]=Unit.energy["watt hour"]=Unit.energy["w h"]=3600*Unit.energy.joule;
Unit.energy["kilowatt-hour"]=Unit.energy["kilowatt hour"]=Unit.energy["kwh"]=Unit.energy["kw h"]=3600*1000*Unit.energy.joule;
Unit.energy["btu"]=Unit.energy["btus"]=Unit.energy["british thermal unit"]=Unit.energy["british thermal units"]=1055.05585*Unit.energy.joule;
Unit.energy["calorie"]=Unit.energy["calories"]=Unit.energy["cal"]=4.184*Unit.energy.joule;
Unit.energy["kilocalorie"]=Unit.energy["kilocalories"]=Unit.energy["kcal"]=Unit.energy["kcals"]=1000*Unit.energy.calorie;
Unit.force.base=1;
Unit.force.name="force";
Unit.force.newton=Unit.force.n=1;
Unit.force["pound-force"]=Unit.force["pound force"]=Unit.force["lb force"]=Unit.force["lbf"]=Unit.force["lb"]=4.44822162*Unit.force.newton;
Unit.torque.base=1;
Unit.torque.name="torque";
Unit.torque["newton-meter"]=Unit.torque["newton meter"]=Unit.torque["newton meters"]=Unit.torque["n m"]=1;
Unit.torque["foot lb"]=Unit.torque["ft lb"]=Unit.torque["foot-pound"]=Unit.torque["foot pound"]=1.35581795*Unit.torque["N m"];
Unit.torque["foot lbs"]=Unit.torque["ft lbs"]=Unit.torque["foot-pounds"]=Unit.torque["foot pounds"]=1.35581795*Unit.torque["N m"];
Unit.power.base=1;
Unit.power.name="power";
Unit.power.watt=Unit.power.watts=Unit.power.w=1;
Unit.power.milliwatt=Unit.power.milliwatts=0.001*Unit.power.watt;
Unit.power.kilowatt=Unit.power.kilowatts=Unit.power.kw=1000*Unit.power.watt;
Unit.power.megawatt=Unit.power.megawatts=1000000*Unit.power.watt;
Unit.power.gigawatt=Unit.power.gigawatts=Unit.power.gw=1000000000*Unit.power.watt;
Unit.power.horsepower=Unit.power.hp=745.6998715822702*Unit.power.watt;
Unit.liquid.base=1;
Unit.liquid.name="Liquid measure";
Unit.liquid.liter=Unit.liquid.liters=Unit.liquid.litre=Unit.liquid.litres=Unit.liquid.l=Unit.liquid.ls=0.001;
Unit.liquid.ml=Unit.liquid.mls=0.001*Unit.liquid.liter;
Unit.liquid.milliliter=Unit.liquid.milliliters=Unit.liquid.millilitre=Unit.liquid.millilitres=0.001*Unit.liquid.liter;
Unit.liquid.cc=Unit.liquid.ccs=Unit.liquid.ml;
Unit.liquid.tsp=Unit.liquid.tsps=4.92892161*Unit.liquid.ml;
Unit.liquid.teaspoon=Unit.liquid.teaspoons=4.92892161*Unit.liquid.ml;
Unit.liquid.tbsp=Unit.liquid.tbsps=3*Unit.liquid.tsp;
Unit.liquid.tablespoon=Unit.liquid.tablespoons=3*Unit.liquid.tsp;
Unit.liquid["fluid ounce"]=Unit.liquid["fluid ounces"]=Unit.liquid["fluid oz"]=Unit.liquid["fluid ozs"]=Unit.liquid["fl oz"]=Unit.liquid["fl ozs"]=2*Unit.liquid.tablespoon;
Unit.liquid.cup=Unit.liquid.cups=Unit.liquid.cp=Unit.liquid.cps=16*Unit.liquid.tablespoon;
Unit.liquid.pint=Unit.liquid.pints=Unit.liquid.pt=Unit.liquid.pts=2*Unit.liquid.cup;
Unit.liquid.quart=Unit.liquid.quarts=Unit.liquid.qt=Unit.liquid.qts=4*Unit.liquid.cup;
Unit.liquid.gallon=Unit.liquid.gallons=Unit.liquid.gal=Unit.liquid.gals=16*Unit.liquid.cup;
Unit.liquid.barrel=Unit.liquid.barrels=31*Unit.liquid.gallon;
Unit.mass.base=1;
Unit.mass.name="mass";
Unit.mass.kilogram=Unit.mass.kilograms=1;
Unit.mass.kg=Unit.mass.kgs=1;
Unit.mass.gram=Unit.mass.grams=0.001*Unit.mass.kg;
Unit.mass.g=Unit.mass.gs=Unit.mass.gram;
Unit.mass.mg=Unit.mass.milligram=Unit.mass.milligrams=0.001*Unit.mass.gram;
Unit.mass.mgs=0.001*Unit.mass.gram;
Unit.mass.ug=0.000001*Unit.mass.gram;
Unit.mass.ugs=0.000001*Unit.mass.gram;
Unit.mass.lb=0.45359237*Unit.mass.kg;
Unit.mass.lbs=0.45359237*Unit.mass.kg;
Unit.mass.pound=0.45359237*Unit.mass.kg;
Unit.mass.pounds=0.45359237*Unit.mass.kg;
Unit.mass.slug=Unit.mass.slugs=14.5939029*Unit.mass.kg;
Unit.mass.oz=Unit.mass.lb*0.0625;
Unit.mass.ozs=Unit.mass.lb*0.0625;
Unit.mass.ounce=Unit.mass.lb*0.0625;
Unit.mass.ounces=Unit.mass.lb*0.0625;
Unit.mass["troy ounce"]=31.1034768*Unit.mass.gram;
Unit.mass["troy ounces"]=31.1034768*Unit.mass.gram;
Unit.mass["troy oz"]=31.1034768*Unit.mass.gram;
Unit.mass["troy ozs"]=31.1034768*Unit.mass.gram;
Unit.mass.dram=Unit.mass.oz*0.0625;
Unit.mass.drams=Unit.mass.oz*0.0625;
Unit.mass.stone=Unit.mass.lb*14;
Unit.mass.stones=Unit.mass.oz*14;
Unit.mass.ton=Unit.mass.lb*2000;
Unit.mass.tons=Unit.mass.lb*2000;
Unit.length.base=1;
Unit.length.name="length";
Unit.length.meter=1;
Unit.length.metre=1;
Unit.length.meters=1;
Unit.length.m=1;
Unit.length.km=1000;
Unit.length.kms=1000;
Unit.length.kilometer=Unit.length.kilometre=1000;
Unit.length.kilometers=Unit.length.kilometres=1000;
Unit.length.au=149597870.691*Unit.length.km;
Unit.length["light year"]=Unit.length["lightyear"]=Unit.length["light years"]=9460730472580.8*Unit.length.km;
Unit.length.ly=9460730472580.8*Unit.length.km;
Unit.length.parsec=Unit.length.parsecs=30856775800000000*Unit.length.meter;
Unit.length.cm=0.01;
Unit.length.cms=0.01;
Unit.length.centimeter=Unit.length.centimetre=0.01;
Unit.length.centimeters=Unit.length.centimetres=0.01;
Unit.length.mm=0.001;
Unit.length.mms=0.001;
Unit.length.millimeter=Unit.length.millimetre=0.001;
Unit.length.millimeters=Unit.length.millimetres=0.001;
Unit.length.um=0.000001;
Unit.length.micrometer=0.000001;
Unit.length.micron=0.000001;
Unit.length.microns=0.000001;
Unit.length.nm=1e-9;
Unit.length.nanometer=Unit.length.nanometre=1e-9;
Unit.length.nanometers=Unit.length.nanometres=1e-9;
Unit.length.pm=1e-12;
Unit.length.picometer=Unit.length.picometre=1e-12;
Unit.length.picometers=Unit.length.picometres=1e-12;
Unit.length.inch=0.0254;
Unit.length.inches=0.0254;
Unit.length["in"]=0.0254;
Unit.length["ins"]=0.0254;
Unit.length.microinch=0.000001*Unit.length.inch;
Unit.length.microinches=0.000001*Unit.length.inch;
Unit.length.foot=Unit.length.inch*12;
Unit.length.feet=Unit.length.inch*12;
Unit.length.ft=Unit.length.inch*12;
Unit.length.yard=Unit.length.foot*3;
Unit.length.yards=Unit.length.foot*3;
Unit.length.yd=Unit.length.foot*3;
Unit.length.yds=Unit.length.foot*3;
Unit.length.fathom=Unit.length.foot*6;
Unit.length.fathoms=Unit.length.foot*6;
Unit.length.rod=Unit.length.foot*16.5;
Unit.length.rods=Unit.length.foot*16.5;
Unit.length.rd=Unit.length.foot*16.5;
Unit.length.rds=Unit.length.foot*16.5;
Unit.length.furlong=Unit.length.foot*660;
Unit.length.furlongs=Unit.length.foot*660;
Unit.length.mile=Unit.length.foot*5280;
Unit.length.miles=Unit.length.foot*5280;
Unit.length.league=Unit.length.mile*3;
Unit.length.leagues=Unit.length.mile*3;
Unit.length.knot=Unit.length.foot*6076.11549;
Unit.length.knots=Unit.length.foot*6076.11549;
Unit.area.base=1;
Unit.area.name="area";
Unit.area.acre=Unit.area.acres=Unit.length.rod*Unit.length.rod*160;
Unit.area.hectare=Unit.area.hectares=Unit.length.meter*Unit.length.meter*10000;
function loadCurrencyData(){
var req="http://instacalc.com/data/currencies.json";
$import(req);
}
currencies=null;
InstaCalc.loadCurrencies=function(data){
if(currencies!=null){
return;
}
currencies={};
var _21c=data["frbny:DataSet"];
for(i=0;i<_21c.length;i++){
var curr=_21c[i];
var unit;
var rate;
rate=curr["frbny:Obs"]["frbny:OBS_VALUE"];
if(curr.UNIT=="USD"){
unit=curr["frbny:Key"]["frbny:CURR"].toLowerCase();
currencies[unit]=rate;
}else{
unit=curr.UNIT.toLowerCase();
currencies[unit]=1/rate;
}
}
currencies.usd=1;
currencies.dollar=currencies.usd;
currencies.yen=currencies.jpy;
currencies.euro=currencies.eur;
currencies.pound=currencies.gbp;
currencies["australia money"]=currencies["australia dollar"]=currencies["australia dollars"]=currencies.aud;
Unit.currencies=currencies;
};
function processData(_220){
getCurrencyData(_220);
}

