
function angle(value, from_unit, to_unit){
	/* Angle: Conversion factor to rad */
	deg2rad = Math.PI/180;
	rad2rad = 1;
	gon2rad = Math.PI/200;
	arcminute2rad = 0.5*Math.PI*1e-4;
	arcsecond2rad = 0.5*Math.PI*1e-6;
	
	if (from_unit == "" || to_unit == "") return 0;
	if (isReal(value)) {
		switch(from_unit){
			case "deg":
			  value= value*deg2rad;
			  break; 		
			case "rad":
			  value= value*rad2rad;
			  break; 
			case "arcminute":
			  value= value*arcminute2rad;
			  break; 		
			case "arcsecond":
			  value= value*arcsecond2rad;
			  break; 					  	  
			case "gon":
			  value= value*gon2rad;
			  break;		  		  		
		}
		
		switch(to_unit){
			case "deg":
			  value= value/deg2rad;
			  break; 		
			case "rad":
			  value= value/rad2rad;
			  break; 	
			case "arcminute":
			  value= value/arcminute2rad;
			  break; 		
			case "arcsecond":
			  value= value/arcsecond2rad;
			  break			  
			case "gon":
			  value= value/gon2rad;
			  break;				  			  		  		
		}	
	} else {
		value = 0;
	}	
	return value;  
}

function area(value, from_unit, to_unit){
	if (from_unit == "" || to_unit == "") return 0;
	if (isReal(value)) {
		val = length(Math.sqrt(value), from_unit, to_unit);
		value = Math.pow(val,2); 
	} else {
		value = 0;
	}	
	return value;
}

function bit(value, from_unit, to_unit){
	/* Angle: Conversion factor to rad */
	yb2b = Math.pow(1024,8);
	zb2b = Math.pow(1024,7);
	eb2b = Math.pow(1024,6);
	pb2b = Math.pow(1024,5);
	tb2b = Math.pow(1024,4);
	gb2b = Math.pow(1024,3);
	mb2b = Math.pow(1024,2);
	kb2b = Math.pow(1024,1);
	b2b = 1;
	yby2b = yb2b*8;
	zby2b = zb2b*8;
	eby2b = eb2b*8;
	pby2b = pb2b*8;
	tby2b = tb2b*8;
	gby2b = gb2b*8;
	mby2b = mb2b*8;
	kby2b = kb2b*8;
	by2b  = b2b*8;
	
	if (from_unit == "" || to_unit == "") return 0;
	if (isReal(value)) {
		switch(from_unit){
			case "yottabyte":
			  value= value*yby2b;
			  break; 		
			case "zettabyte":
			  value= value*zby2b;
			  break; 
			case "exabyte":
			  value= value*eby2b;
			  break; 		
			case "petabyte":
			  value= value*pby2b;
			  break; 					  	  
			case "terabyte":
			  value= value*tby2b;
			  break;		
			case "gigabyte":
			  value= value*gby2b;
			  break; 		
			case "megabyte":
			  value= value*mby2b;
			  break; 
			case "kilobyte":
			  value= value*kby2b;
			  break; 		
			case "byte":
			  value= value*by2b;
			  break; 					  	  
			case "yottabit":
			  value= value*yb2b;
			  break; 		
			case "zettabit":
			  value= value*zb2b;
			  break; 
			case "exabit":
			  value= value*eb2b;
			  break; 		
			case "petabit":
			  value= value*pb2b;
			  break; 					  	  
			case "terabit":
			  value= value*tb2b;
			  break;		
			case "gigabit":
			  value= value*gb2b;
			  break; 		
			case "megabit":
			  value= value*mb2b;
			  break; 
			case "kilobit":
			  value= value*kb2b;
			  break; 		
			case "bit":
			  value= value*b2b;
			  break; 				    		  		
		}
		
		switch(to_unit){
			case "yottabyte":
			  value= value/yby2b;
			  break; 		
			case "zettabyte":
			  value= value/zby2b;
			  break; 
			case "exabyte":
			  value= value/eby2b;
			  break; 		
			case "petabyte":
			  value= value/pby2b;
			  break; 					  	  
			case "terabyte":
			  value= value/tby2b;
			  break;		
			case "gigabyte":
			  value= value/gby2b;
			  break; 		
			case "megabyte":
			  value= value/mby2b;
			  break; 
			case "kilobyte":
			  value= value/kby2b;
			  break; 		
			case "byte":
			  value= value/by2b;
			  break; 					  	  
			case "yottabit":
			  value= value/yb2b;
			  break; 		
			case "zettabit":
			  value= value/zb2b;
			  break; 
			case "exabit":
			  value= value/eb2b;
			  break; 		
			case "petabit":
			  value= value/pb2b;
			  break; 					  	  
			case "terabit":
			  value= value/tb2b;
			  break;		
			case "gigabit":
			  value= value/gb2b;
			  break; 		
			case "megabit":
			  value= value/mb2b;
			  break; 
			case "kilobit":
			  value= value/kb2b;
			  break; 		
			case "bit":
			  value= value/b2b;
			  break; 			  			  		  		
		}	
	} else {
		value = 0;
	}	
	return value;  
}

function bitstream(invalue, from_bit_unit, to_bit_unit, from_time_unit, to_time_unit){
	value1 = bit(invalue, from_bit_unit, to_bit_unit);
	value2 = time(1, from_time_unit, to_time_unit);		
	return value1/value2;
}

function density(invalue, from_mass_unit, to_mass_unit, from_volume_unit, to_volume_unit){
	value1 = mass(invalue, from_mass_unit, to_mass_unit);
	value2 = volume(1, from_volume_unit, to_volume_unit);		
	return value1/value2;
}

function energy(value, from_unit, to_unit){
	/* Energy: Conversion factor to Joules */
	yj2j = 1e+24;
	zj2j = 1e+21;
	ej2j = 1e+18;
	pj2j = 1e+15;
	tj2j = 1e+12;
	gj2j = 1e+9;
	megaj2j = 1e+6;
	kj2j = 1000;
	hj2j = 100;
	da2j = 10;
	j2j = 1;
	deci2j = 0.1;
	centi2j = 1e-2;
	milli2j = 1e-3;
	micro2j = 1e-6;
	nano2j = 1e-9;
	pico2j = 1e-12;
	femto2j = 1e-15;
	atto2j = 1e-18;
	zepto2j = 1e-21;	
	yocto2j = 1e-24;
	ev2j = 1.60217653e-19; 
	calint2j = 4.1868;
	calth2j = 4.184;
	cal152j = 4.858;
	cal202j = 4.1819;
	calmean2j = 4.19002;
	calfood2j = 41868;
	btuint2j = 1055.05585262;
	btumean2j = 1055.8699989;
	btuiso2j = 1055.056;
	btuth2j = 1054.35026444;
	btu152j = 1054.804;
	btu392j = 1059.6699963;
    chu2j = 1899.100534716; 
	
	erg2j = 1e-7;
	ftlbf2j = 1.3558179483314004;    
	inlbf2j = 0.1129848290276167;
	ftpdl2j = 0.0421401100938048;
	hph2j = 2684519.54;
	kwh2j = 3600000;
	nm2j = 1;
	usthm = 105480400;
	ecthm = 105505585.262;
	ws = 1;
	wh2j = 3600; 
	
	if (from_unit == "" || to_unit == "") return 0;
	if (isReal(value)) {
		switch(from_unit){
			case "yottajoule":
			  value= value*yj2j;
			  break; 
			case "zettajoule":
			  value= value*zj2j;
			  break; 
			case "exajoule":
			  value= value*ej2j;
			  break; 			  			  		
			case "petajoule":
			  value= value*pj2j;
			  break; 
			case "terajoule":
			  value= value*tj2j;
			  break; 
			case "gigajoule":
			  value= value*gj2j;
			  break; 
			case "megajoule":
			  value= value*megaj2j;
			  break; 			  			  		
			case "kilojoule":
			  value= value*kj2j;
			  break; 		
			case "hectojoule":
			  value= value*hj2j;
			  break; 		
			case "decajoule":
			  value= value*da2j;
			  break; 
			case "joule":
			  value= value*j2j;
			  break; 			    	
			case "decijoule":
			  value= value*deci2j;
			  break;    
			case "centijoule":
			  value= value*centi2j;
			  break;	
			case "millijoule":
			  value= value*milli2j;
			  break;	
			case "microjoule":
			  value= value*micro2j;
			  break;	
			case "nanojoule":
			  value= value*nano2j;
			  break;	
			case "picojoule":
			  value= value*pico2j;
			  break;
			case "femtojoule":
			  value= value*femto2j;
			  break;
			case "attojoule":
			  value= value*atto2j;
			  break;			  	
			case "zeptojoule":
			  value= value*zepto2j;
			  break;
			case "yoctojoule":
			  value= value*yocto2j;
			  break;
			case "electronvolt":
			  value= value*ev2j;
			  break;	
			case "chu":
			  value= value*chu2j;
			  break;	
			case "erg":
			  value= value*erg2j;
			  break;						
			case "footpoundforce":
			  value= value*ftlbf2j;
			  break;
			case "inchpoundforce":
			  value= value*inlbf2j;
			  break;
			case "footpoundal":
			  value= value*ftpdl2j;
			  break;
			case "horsepowerhour":
			  value= value*hph2j;
			  break;
			case "kilowatthour":
			  value= value*kwh2j;
			  break;
			case "newtonmeter":
			  value= value*nm2j;
			  break;
			case "ustherm":
			  value= value*usthm ;
			  break;
			case "ectherm":
			  value= value*ecthm;
			  break;
			case "wattsecond":
			  value= value*ws;
			  break;
			case "watthour":
			  value= value*wh2j;
			  break;			  			  			  			  			  			  			  			  			  						  
			case "calint":
			  value= value*calint2j;
			  break;		
			case "calmean":
			  value= value*calmean2j;
			  break;	
			case "calth":
			  value= value*calth2j;
			  break;	
			case "cal15":
			  value= value*cal152j;
			  break;	
			case "cal20":
			  value= value*cal202j;
			  break;	
			case "calfood":
			  value= value*calfood2j;
			  break;	
			case "btuint":
			  value= value*btuint2j;
			  break;		
			case "btuiso":
			  value= value*btuiso2j;
			  break;			  
			case "btumean":
			  value= value*btumean2j;
			  break;	
			case "btuth":
			  value= value*btuth2j;
			  break;	
			case "btu15":
			  value= value*btu152j;
			  break;	
			case "btu39":
			  value= value*btu392j;
			  break;	  			  			  			  			  			  		  				  			  			  			    		  		
		}

		switch(to_unit){
			case "yottajoule":
			  value= value/yj2j;
			  break; 
			case "zettajoule":
			  value= value/zj2j;
			  break; 
			case "exajoule":
			  value= value/ej2j;
			  break; 			  			  		
			case "petajoule":
			  value= value/pj2j;
			  break; 
			case "terajoule":
			  value= value/tj2j;
			  break; 
			case "gigajoule":
			  value= value/gj2j;
			  break; 
			case "megajoule":
			  value= value/megaj2j;
			  break; 			  			  		
			case "kilojoule":
			  value= value/kj2j;
			  break; 		
			case "hectojoule":
			  value= value/hj2j;
			  break; 		
			case "decajoule":
			  value= value/da2j;
			  break; 
			case "joule":
			  value= value/j2j;
			  break; 			    	
			case "decijoule":
			  value= value/deci2j;
			  break;    
			case "centijoule":
			  value= value/centi2j;
			  break;	
			case "millijoule":
			  value= value/milli2j;
			  break;	
			case "microjoule":
			  value= value/micro2j;
			  break;	
			case "nanojoule":
			  value= value/nano2j;
			  break;	
			case "picojoule":
			  value= value/pico2j;
			  break;
			case "femtojoule":
			  value= value/femto2j;
			  break;
			case "attojoule":
			  value= value/atto2j;
			  break;			  	
			case "zeptojoule":
			  value= value/zepto2j;
			  break;
			case "yoctojoule":
			  value= value/yocto2j;
			  break;		 
			case "electronvolt":
			  value= value/ev2j;
			  break;	
			case "chu":
			  value= value/chu2j;
			  break;	
			case "erg":
			  value= value/erg2j;
			  break;						
			case "footpoundforce":
			  value= value/ftlbf2j;
			  break;
			case "inchpoundforce":
			  value= value/inlbf2j;
			  break;
			case "footpoundal":
			  value= value/ftpdl2j;
			  break;
			case "horsepowerhour":
			  value= value/hph2j;
			  break;
			case "kilowatthour":
			  value= value/kwh2j;
			  break;
			case "newtonmeter":
			  value= value/nm2j;
			  break;
			case "ustherm":
			  value= value/usthm ;
			  break;
			case "ectherm":
			  value= value/ecthm;
			  break;
			case "wattsecond":
			  value= value/ws;
			  break;
			case "watthour":
			  value= value/wh2j;
			  break;				  			  	
			case "calint":
			  value= value/calint2j;
			  break;		
			case "calmean":
			  value= value/calmean2j;
			  break;	
			case "calth":
			  value= value/calth2j;
			  break;	
			case "cal15":
			  value= value/cal152j;
			  break;	
			case "cal20":
			  value= value/cal202j;
			  break;	
			case "calfood":
			  value= value/calfood2j;
			  break;	
			case "btuint":
			  value= value/btuint2j;
			  break;		
			case "btuiso":
			  value= value/btuiso2j;
			  break;			  
			case "btumean":
			  value= value/btumean2j;
			  break;	
			case "btuth":
			  value= value/btuth2j;
			  break;	
			case "btu15":
			  value= value/btu152j;
			  break;	
			case "btu39":
			  value= value/btu392j;
			  break;	
			  			  		    			  		  		
		}	
	} else {
		value = 0;
	}	
	return value;  
}



function force(value, from_unit, to_unit){
	/* Force: Conversion factor to newton */

	yn2n = 1e+24;
	zn2n = 1e+21;
	en2n = 1e+18;
	pn2n = 1e+15;
	tn2n = 1e+12;
	gn2n = 1e+9;
	megan2n = 1e+6;
	kn2n = 1000;
	hn2n = 100;
	da2n = 10;
	n2n = 1;
	deci2n = 0.1;
	centi2n = 1e-2;
	milli2n = 1e-3;
	micro2n = 1e-6;
	nano2n = 1e-9;
	pico2n = 1e-12;
	femto2n = 1e-15;
	atto2n = 1e-18;
	zepto2n = 1e-21;
	yocto2n = 1e-24;
		
	d2n = 1e-5;
	kgf2n = 9.80665;
	kp2n = 4.448222e+03;
	lbf2n = 0.45359237 * 9.80665;
	pdl2n = 0.138254954376;
	tonnef2n = 9806.65;
	uktonforce2n = 4.4482216152605*2240;
	ustonforce2n = 4.4482216152605*2000;
	
	if (from_unit == "" || to_unit == "") return 0;
	if (isReal(value)) {
	
		switch(from_unit){
			case "yottanewton":
			  value= value*yn2n;
			  break; 
			case "zettanewton":
			  value= value*zn2n;
			  break; 
			case "exanewton":
			  value= value*en2n;
			  break; 			  			  		
			case "petanewton":
			  value= value*pn2n;
			  break; 
			case "teranewton":
			  value= value*tn2n;
			  break; 
			case "giganewton":
			  value= value*gn2n;
			  break; 
			case "meganewton":
			  value= value*megan2n;
			  break; 			  			  		
			case "kilonewton":
			  value= value*kn2n;
			  break; 		
			case "hectonewton":
			  value= value*hn2n;
			  break; 		
			case "decanewton":
			  value= value*da2n;
			  break; 
			case "newton":
			  value= value*n2n;
			  break; 			    	
			case "decinewton":
			  value= value*deci2n;
			  break;    
			case "centinewton":
			  value= value*centi2n;
			  break;	
			case "millinewton":
			  value= value*milli2n;
			  break;	
			case "micronewton":
			  value= value*micro2n;
			  break;	
			case "nanonewton":
			  value= value*nano2n;
			  break;	
			case "piconewton":
			  value= value*pico2n;
			  break;
			case "femtonewton":
			  value= value*femto2n;
			  break;
			case "attonewton":
			  value= value*atto2n;
			  break;			  	
			case "zeptonewton":
			  value= value*zepto2n;
			  break;
			case "yoctonewton":
			  value= value*yocto2n;
			  break;		
			case "dyne":
			  value= value*d2n;
			  break;		
			case "kilogramforce":
			  value= value*kgf2n;
			  break; 		
			case "kip":
			  value= value*kp2n;
			  break; 	
			case "poundforce":
			  value= value*lbf2n;
			  break; 
			case "poundal":
			  value= value*pdl2n;
			  break; 
			case "tonneforce":
			  value= value*tonnef2n;
			  break; 
			case "ustonforce":
			  value= value*ustonforce2n;
			  break; 		
			case "uktonforce":
			  value= value*uktonforce2n;
			  break; 			  	  			  			  			  		  		  		
		}

		switch(to_unit){
			case "yottanewton":
			  value= value/yn2n;
			  break; 
			case "zettanewton":
			  value= value/zn2n;
			  break; 
			case "exanewton":
			  value= value/en2n;
			  break; 			  			  		
			case "petanewton":
			  value= value/pn2n;
			  break; 
			case "teranewton":
			  value= value/tn2n;
			  break; 
			case "giganewton":
			  value= value/gn2n;
			  break; 
			case "meganewton":
			  value= value/megan2n;
			  break; 			  			  		
			case "kilonewton":
			  value= value/kn2n;
			  break; 		
			case "hectonewton":
			  value= value/hn2n;
			  break; 		
			case "decanewton":
			  value= value/da2n;
			  break; 
			case "newton":
			  value= value/n2n;
			  break; 			    	
			case "decinewton":
			  value= value/deci2n;
			  break;    
			case "centinewton":
			  value= value/centi2n;
			  break;	
			case "millinewton":
			  value= value/milli2n;
			  break;	
			case "micronewton":
			  value= value/micro2n;
			  break;	
			case "nanonewton":
			  value= value/nano2n;
			  break;	
			case "piconewton":
			  value= value/pico2n;
			  break;
			case "femtonewton":
			  value= value/femto2n;
			  break;
			case "attonewton":
			  value= value/atto2n;
			  break;			  	
			case "zeptonewton":
			  value= value/zepto2n;
			  break;
			case "yoctonewton":
			  value= value/yocto2n;
			  break;		
			case "dyne":
			  value= value/d2n;
			  break;		
			case "kilogramforce":
			  value= value/kgf2n;
			  break; 		
			case "kip":
			  value= value/kp2n;
			  break; 	
			case "poundforce":
			  value= value/lbf2n;
			  break; 
			case "poundal":
			  value= value/pdl2n;
			  break; 
			case "tonneforce":
			  value= value/tonnef2n;
			  break; 
			case "ustonforce":
			  value= value/ustonforce2n;
			  break; 		
			case "uktonforce":
			  value= value/uktonforce2n;
			  break; 				  			  		  		
		}	
	} else {
		value = 0;
	}	
	return value;  
}

function length(value, from_unit, to_unit){
	/* length: Conversion factor to meter */
	ym2m = 1e+24;
	zm2m = 1e+21;
	em2m = 1e+18;
	pm2m = 1e+15;
	tm2m = 1e+12;
	gm2m = 1e+9;
	megam2m = 1e+6;
	km2m = 1000;
	hm2m = 100;
	da2m = 10;
	m2m = 1;
	deci2m = 0.1;
	centi2m = 1e-2;
	milli2m = 1e-3;
	micro2m = 1e-6;
	nano2m = 1e-9;
	pico2m = 1e-12;
	femto2m = 1e-15;
	atto2m = 1e-18;
	zepto2m = 1e-21;
	yocto2m = 1e-24;
	mile2m = 1609.344;
	furlong2m = 201.168;
	yard2m = 0.9144;
	foot2m = 0.3048;
	inch2m = 0.0254;
	thou2m = 0.0000254;
	fathom2m = 1.8288;
	nauticalmile2m = 1852;
	cable2m = 185.2;
	parsec2m = 3.08568025e+16;
	lightyear2m = 9460730472580800;
	lightday2m = 25902068371200;	
	lighthour2m = 1079252848800;
	lightminute2m = 17987547480;
	lightsecond2m = 299792458; 
	astronomicalunit2m = 149597870691;
	angstrom2m = 1e-10;
	point2m=0.02540*(1/72);
	pica2m=12*0.02540*(1/72);
	pixel2m=0.00020;
	pixelm2m=(0.0254/300); /* 300dpi */
	pixelh2m=(0.0254/600); /* 600dpi */
	pointb2m=0.02540*(1/96);
	picab2m=12*0.02540*(1/96);
	/* Convert area to meter. Do not change this. It is correct! */
	hectare2m = Math.sqrt(10000);
	acre2m = Math.sqrt(4046.8564224);
	are2m = Math.sqrt(100);
	/* Convert paper area to meter. Do not change this. It is correct! */
	isoa02m = Math.sqrt(841*1189*1e-6);
	isoa12m = Math.sqrt(594*841*1e-6);
	isoa22m = Math.sqrt(420*594*1e-6);
	isoa32m = Math.sqrt(297*420*1e-6);
	isoa42m = Math.sqrt(210*297*1e-6);
	isoa52m = Math.sqrt(148*210*1e-6);
	isoa62m = Math.sqrt(105*148*1e-6);
	isoa72m = Math.sqrt(74*105*1e-6);
	isoa82m = Math.sqrt(52*74*1e-6);
	isoa92m = Math.sqrt(37*52*1e-6);
	isoa102m = Math.sqrt(26*37*1e-6);
	
		
	/* Volumes are all in cubic meters */	
	/* Convert volume to meter. */
	/* Do not change this. It is correct! */
	yl2m = Math.pow(1e+24*0.001, (1/3));
	zl2m = Math.pow(1e+21*0.001, (1/3));
	el2m = Math.pow(1e+18*0.001, (1/3));
	pl2m = Math.pow(1e+15*0.001, (1/3));
	tl2m = Math.pow(1e+12*0.001, (1/3));
	gl2m = Math.pow(1e+9*0.001, (1/3));
	megal2m = Math.pow(1e+6*0.001, (1/3));
	kl2m = Math.pow(1000*0.001, (1/3));
	hl2m = Math.pow(100*0.001, (1/3));
	dal2m = Math.pow(10*0.001, (1/3));
	l2m = Math.pow(1*0.001, (1/3));  
	decil2m = Math.pow(0.1*0.001, (1/3));
	centil2m = Math.pow(1e-2*0.001, (1/3));
	millil2m = Math.pow(1e-3*0.001, (1/3));
	microl2m = Math.pow(1e-6*0.001, (1/3));
	nanol2m = Math.pow(1e-9*0.001, (1/3));
	picol2m = Math.pow(1e-12*0.001, (1/3));
	femtol2m = Math.pow(1e-15*0.001, (1/3));
	attol2m = Math.pow(1e-18*0.001, (1/3));
	zeptol2m = Math.pow(1e-21*0.001, (1/3));
	yoctol2m = Math.pow(1e-24*0.001, (1/3));         
	pint2m = Math.pow(0.00056826125, (1/3));  
	liquidpint2m = Math.pow(0.000473176473, (1/3));  	 
	drypint2m = Math.pow(0.0005506104713575, (1/3));  
	quart2m = Math.pow(0.0011365225, (1/3));  
	liquidquart2m = Math.pow(0.000946352946, (1/3));
	dryquart2m = Math.pow(0.001101220942715, (1/3));
	gallon2m = Math.pow(0.00454609, (1/3)); 
	liquidgallon2m = Math.pow(0.003785411784, (1/3)); 	
	drygallon2m = Math.pow(0.00440488377086, (1/3));  
	bushel2m = Math.pow(0.03636872, (1/3)); 
	drylevelbushel2m = Math.pow(0.03523907016688, (1/3)); 
	dryheapedbushel2m = Math.pow(0.0440488377086, (1/3)); 
	petroleumbarrel2m = Math.pow(0.158987294928, (1/3));
	barrel2m = Math.pow(0.16365924, (1/3));
	liquidbarrel2m = Math.pow(0.119240471196, (1/3));
	drybarrel2m = Math.pow(0.115628198985075, (1/3));
	ukfluidounce2m = Math.pow(28.4130625*1e-6, (1/3)); 
	usfluidounce2m = Math.pow(29.5735295625*1e-6, (1/3)); 
	
	if (from_unit == "" || to_unit == "") return 0;
	
	if (isReal(value)) {
		switch(from_unit){
			case "yottameter":
			  value= value*ym2m;
			  break; 
			case "zettameter":
			  value= value*zm2m;
			  break; 
			case "exameter":
			  value= value*em2m;
			  break; 			  			  		
			case "petameter":
			  value= value*pm2m;
			  break; 
			case "terameter":
			  value= value*tm2m;
			  break; 
			case "gigameter":
			  value= value*gm2m;
			  break; 
			case "megameter":
			  value= value*megam2m;
			  break; 			  			  		
			case "kilometer":
			  value= value*km2m;
			  break; 		
			case "hectometer":
			  value= value*hm2m;
			  break; 		
			case "decameter":
			  value= value*da2m;
			  break; 
			case "meter":
			  value= value*m2m;
			  break; 			    	
			case "decimeter":
			  value= value*deci2m;
			  break;    
			case "centimeter":
			  value= value*centi2m;
			  break;	
			case "millimeter":
			  value= value*milli2m;
			  break;	
			case "micrometer":
			  value= value*micro2m;
			  break;	
			case "nanometer":
			  value= value*nano2m;
			  break;	
			case "picometer":
			  value= value*pico2m;
			  break;
			case "femtometer":
			  value= value*femto2m;
			  break;
			case "attometer":
			  value= value*atto2m;
			  break;			  	
			case "zeptometer":
			  value= value*zepto2m;
			  break;
			case "yoctometer":
			  value= value*yocto2m;
			  break;
			case "mile":
			  value= value*mile2m;
			  break;	
			case "furlong":
			  value= value*furlong2m;
			  break;				  			  
			case "yard":
			  value= value*yard2m;
			  break;			  	
			case "foot":
			  value= value*foot2m;
			  break;	
			case "inch":
			  value= value*inch2m;
			  break;		
			case "thou":
			  value= value*thou2m;
			  break;		
			case "fathom":
			  value= value*fathom2m;
			  break;		
			case "nauticalmile":
			  value= value*nauticalmile2m;
			  break;		
			case "cable":
			  value= value*cable2m;
			  break;			  
			case "parsec":
			  value= value*parsec2m;
			  break;	
			case "lightyear":
			  value= value*lightyear2m;
			  break;	
			case "lightday":
			  value= value*lightday2m;
			  break;		
			case "lighthour":
			  value= value*lighthour2m;
			  break;		
			case "lightminute":
			  value= value*lightminute2m;
			  break;			
			case "lightsecond":
			  value= value*lightsecond2m;
			  break;				  	  		  		  
			case "astronomicalunit":
			  value= value*astronomicalunit2m;
			  break;	
			case "angstrom":
			  value= value*angstrom2m;
			  break;	
			case "point":
			  value= value*point2m;
			  break;	
			case "pica":
			  value= value*pica2m;
			  break;		
			case "pointb":
			  value= value*pointb2m;
			  break;	
			case "picab":
			  value= value*picab2m;
			  break;				  
			case "pixel":
			  value= value*pixel2m;
			  break;		
			case "pixelm":
			  value= value*pixelm2m; /* 300 dpi */
			  break;
			case "pixelh":
			  value= value*pixelh2m; /* 600 dpi */			  
			  break;				  		  		  			  
			/* Convert area to meter. Do not change this. It is correct! */ 	
			case "acre":
			  value= value*acre2m;
			  break; 		
			case "hectare":
			  value= value*hectare2m;
			  break; 
			case "are":
			  value= value*are2m;
			  break; 	
			/* Convert volume to meter. Do not change this. It is correct! */ 	  
			case "yottaliter":
			  value= value*yl2m;
			  break; 
			case "zettaliter":
			  value= value*zl2m;
			  break; 
			case "exaliter":
			  value= value*el2m;
			  break; 			  			  		
			case "petaliter":
			  value= value*pl2m;
			  break; 
			case "teraliter":
			  value= value*tl2m;
			  break; 
			case "gigaliter":
			  value= value*gl2m;
			  break; 
			case "megaliter":
			  value= value*megal2m;
			  break; 			  			  		
			case "kiloliter":
			  value= value*kl2m;
			  break; 		
			case "hectoliter":
			  value= value*hl2m;
			  break; 		
			case "decaliter":
			  value= value*dal2m;
			  break; 
			case "liter":
			  value= value*l2m;
			  break; 			    	
			case "deciliter":
			  value= value*decil2m;
			  break;    
			case "centiliter":
			  value= value*centil2m;
			  break;	
			case "milliliter":
			  value= value*millil2m;
			  break;	
			case "microliter":
			  value= value*microl2m;
			  break;	
			case "nanoliter":
			  value= value*nanol2m;
			  break;	
			case "picoliter":
			  value= value*picol2m;
			  break;
			case "femtoliter":
			  value= value*femtol2m;
			  break;
			case "attoliter":
			  value= value*attol2m;
			  break;			  	
			case "zeptoliter":
			  value= value*zeptol2m;
			  break;
			case "yoctoliter":
			  value= value*yoctol2m;
			  break;			  	
			case "petroleumbarrel":
			  value= value*petroleumbarrel2m;
			  break;
			case "barrel":
			  value= value*barrel2m;
			  break;
			case "liquidbarrel":
			  value= value*liquidbarrel2m;
			  break;
			case "drybarrel":
			  value= value*drybarrel2m;
			  break;
			case "bushel":
			  value= value*bushel2m;
			  break;
			case "drylevelbushel":
			  value= value*drylevelbushel2m;
			  break;	
			case "dryheapedbushel":
			  value= value*dryheapedbushel2m;
			  break;
			case "ukfluidounce":
			  value= value*ukfluidounce2m;
			  break;
			case "usfluidounce":
			  value= value*usfluidounce2m;
			  break;
			case "gallon":
			  value= value*gallon2m;
			  break;
			case "liquidgallon":
			  value= value*liquidgallon2m;
			  break;
			case "drygallon":
			  value= value*drygallon2m;
			  break;	
			case "pint":
			  value= value*pint2m;
			  break;
			case "liquidpint":
			  value= value*liquidpint2m;
			  break;
			case "drypint":
			  value= value*drypint2m;
			  break;
			case "quart":
			  value= value*quart2m;
			  break;
			case "liquidquart":
			  value= value*liquidquart2m;
			  break;
			case "dryquart":
			  value= value*dryquart2m;
			  break;	
			/* Convert paper to meter. Do not change this. It is correct! */ 	
			case "isoa0":
			  value= value*isoa02m;
			  break; 		
			case "isoa1":
			  value= value*isoa12m;
			  break; 
			case "isoa2":
			  value= value*isoa22m;
			  break; 
			case "isoa3":
			  value= value*isoa32m;
			  break; 
			case "isoa4":
			  value= value*isoa42m;
			  break; 
			case "isoa5":
			  value= value*isoa52m;
			  break; 
			case "isoa6":
			  value= value*isoa62m;
			  break; 
			case "isoa7":
			  value= value*isoa72m;
			  break; 
			case "isoa8":
			  value= value*isoa82m;
			  break; 
			case "isoa9":
			  value= value*isoa92m;
			  break; 
			case "isoa10":
			  value= value*isoa102m;
			  break; 			  			  			  			  			  			  			  			  				  			  			  		  			  			  							  			  			  		  		  		  	  	 			  			  			  			  			  
		}
		
		switch(to_unit){
			case "yottameter":
			  value= value/ym2m;
			  break; 
			case "zettameter":
			  value= value/zm2m;
			  break; 
			case "exameter":
			  value= value/em2m;
			  break; 			  			  		
			case "petameter":
			  value= value/pm2m;
			  break; 		
			case "terameter":
			  value= value/tm2m;
			  break; 
			case "gigameter":
			  value= value/gm2m;
			  break; 
			case "megameter":
			  value= value/megam2m;
			  break;		
			case "kilometer":
			  value= value/km2m;
			  break; 		
			case "hectometer":
			  value= value/hm2m;
			  break; 		
			case "decameter":
			  value= value/da2m;
			  break; 
			case "meter":
			  value= value/m2m;
			  break; 			    	
			case "decimeter":
			  value= value/deci2m;
			  break;    
			case "centimeter":
			  value= value/centi2m;
			  break;	
			case "millimeter":
			  value= value/milli2m;
			  break;	
			case "micrometer":
			  value= value/micro2m;
			  break;	
			case "nanometer":
			  value= value/nano2m;
			  break;	
			case "picometer":
			  value= value/pico2m;
			  break;	
			case "femtometer":
			  value= value/femto2m;
			  break;
			case "attometer":
			  value= value/atto2m;
			  break;			  	
			case "zeptometer":
			  value= value/zepto2m;
			  break;
			case "yoctometer":
			  value= value/yocto2m;
			  break;			  
			case "furlong":
			  value= value/furlong2m;
			  break;				  
			case "mile":
			  value= value/mile2m;
			  break;				  
			case "yard":
			  value= value/yard2m;
			  break;			  	
			case "foot":
			  value= value/foot2m;
			  break;	
			case "inch":
			  value= value/inch2m;
			  break;	
			case "thou":
			  value= value/thou2m;
			  break;	
			case "fathom":
			  value= value/fathom2m;
			  break;		
			case "nauticalmile":
			  value= value/nauticalmile2m;
			  break;	
			case "cable":
			  value= value/cable2m;
			  break;				  
			case "parsec":
			  value= value/parsec2m;
			  break;	
			case "lightyear":
			  value= value/lightyear2m;
			  break;	
			case "lightday":
			  value= value/lightday2m;
			  break;		
			case "lighthour":
			  value= value/lighthour2m;
			  break;		
			case "lightminute":
			  value= value/lightminute2m;
			  break;			
			case "lightsecond":
			  value= value/lightsecond2m;
			  break;				  	  		  		  
			case "astronomicalunit":
			  value= value/astronomicalunit2m;
			  break;	
			case "angstrom":
			  value= value/angstrom2m;
			  break;		
			case "point":
			  value= value/point2m;
			  break;	
			case "pica":
			  value= value/pica2m;
			  break;	
			case "pointb":
			  value= value/pointb2m;
			  break;	
			case "picab":
			  value= value/picab2m;
			  break;				  
			case "pixel":
			  value= value/pixel2m;
			  break;	
			case "pixelm":
			  value= value/pixelm2m;
			  break
			case "pixelh":
			  value= value/pixelh2m;			  
			  break;			  			  			  			  
			/* Convert area to meter. Do not change this. It is correct! */ 	
			case "acre":
			  value= value/acre2m;
			  break; 		
			case "hectare":
			  value= value/hectare2m;
			  break; 
			case "are":
			  value= value/are2m;
			  break;
			// Convert volume to meter. Do not change this. It is correct! // 	  
			case "yottaliter":
			  value= value/yl2m;
			  break; 
			case "zettaliter":
			  value= value/zl2m;
			  break; 
			case "exaliter":
			  value= value/el2m;
			  break; 			  			  		
			case "petaliter":
			  value= value/pl2m;
			  break; 
			case "teraliter":
			  value= value/tl2m;
			  break; 
			case "gigaliter":
			  value= value/gl2m;
			  break; 
			case "megaliter":
			  value= value/megal2m;
			  break; 			  			  		
			case "kiloliter":
			  value= value/kl2m;
			  break; 		
			case "hectoliter":
			  value= value/hl2m;
			  break; 		
			case "decaliter":
			  value= value/dal2m;
			  break; 
			case "liter":
			  value= value/l2m;
			  break; 			    	
			case "deciliter":
			  value= value/decil2m;
			  break;    
			case "centiliter":
			  value= value/centil2m;
			  break;	
			case "milliliter":
			  value= value/millil2m;
			  break;	
			case "microliter":
			  value= value/microl2m;
			  break;	
			case "nanoliter":
			  value= value/nanol2m;
			  break;	
			case "picoliter":
			  value= value/picol2m;
			  break;
			case "femtoliter":
			  value= value/femtol2m;
			  break;
			case "attoliter":
			  value= value/attol2m;
			  break;			  	
			case "zeptoliter":
			  value= value/zeptol2m;
			  break;
			case "yoctoliter":
			  value= value/yoctol2m;
			  break;			  	
			case "petroleumbarrel":
			  value= value/petroleumbarrel2m;
			  break;
			case "barrel":
			  value= value/barrel2m;
			  break;
			case "liquidbarrel":
			  value= value/liquidbarrel2m;
			  break;
			case "drybarrel":
			  value= value/drybarrel2m;
			  break;
			case "bushel":
			  value= value/bushel2m;
			  break;
			case "drylevelbushel":
			  value= value/drylevelbushel2m;
			  break;	
			case "dryheapedbushel":
			  value= value/dryheapedbushel2m;
			  break;
			case "ukfluidounce":
			  value= value/ukfluidounce2m;
			  break;
			case "usfluidounce":
			  value= value/usfluidounce2m;
			  break;
			case "gallon":
			  value= value/gallon2m;
			  break;
			case "liquidgallon":
			  value= value/liquidgallon2m;
			  break;
			case "drygallon":
			  value= value/drygallon2m;
			  break;	
			case "pint":
			  value= value/pint2m;
			  break;
			case "liquidpint":
			  value= value/liquidpint2m;
			  break;
			case "drypint":
			  value= value/drypint2m;
			  break;
			case "quart":
			  value= value/quart2m;
			  break;
			case "liquidquart":
			  value= value/liquidquart2m;
			  break;
			case "dryquart":
			  value= value/dryquart2m;
			  break;	
			/* Convert paper to meter. Do not change this. It is correct! */ 	
			case "isoa0":
			  value= value/isoa02m;
			  break; 		
			case "isoa1":
			  value= value/isoa12m;
			  break; 
			case "isoa2":
			  value= value/isoa22m;
			  break; 
			case "isoa3":
			  value= value/isoa32m;
			  break; 
			case "isoa4":
			  value= value/isoa42m;
			  break; 
			case "isoa5":
			  value= value/isoa52m;
			  break; 
			case "isoa6":
			  value= value/isoa62m;
			  break; 
			case "isoa7":
			  value= value/isoa72m;
			  break; 
			case "isoa8":
			  value= value/isoa82m;
			  break; 
			case "isoa9":
			  value= value/isoa92m;
			  break; 
			case "isoa10":
			  value= value/isoa102m;
			  break; 				  			   			  	  			  			  			  			  
		}	
	} else {
		value = 0;
	}	
	return value;  
}

function mass(value, from_unit, to_unit){
	/* Mass: Conversion factor to grams */
	yg2g = 1e+24;
	zg2g = 1e+21;
	eg2g = 1e+18;
	pg2g = 1e+15;
	tg2g = 1e+12;
	gg2g = 1e+9;
	megag2g = 1e+6;
	kg2g = 1000;
	hg2g = 100;
	da2g = 10;
	g2g = 1;
	deci2g = 0.1;
	centi2g = 1e-2;
	milli2g = 1e-3;
	micro2g = 1e-6;
	nano2g = 1e-9;
	pico2g = 1e-12;
	femto2g = 1e-15;
	atto2g = 1e-18;
	zepto2g = 1e-21;	
	yocto2g = 1e-24;
	stone2g = 6350.29318;
	pound2g = 453.59237;
	ounce2g = 28.349523125;
	dram2g  = 1.7718451953125;
	grain2g = 0.06479891;
	lton2g = 1016046.9088;
	ston2g = 907184.74;
	lquater2g = 12700.558636;
	squater2g = 11339.80925; 
	lhundredweight2g = 50802.34544;
	shundredweight2g = 45359.237; 
	carat2g = 0.2;
	mpound2g = 500;
	tonne2g = 1000000;
	slug2g = 14593.9029;
	/* Convert paper mass to grams. Do not change this. It is correct! */
	isoa02g = 841*1189*1e-6*80;
	isoa12g = 594*841*1e-6*80;
	isoa22g = 420*594*1e-6*80;
	isoa32g = 297*420*1e-6*80;
	isoa42g = 210*297*1e-6*80;
	isoa52g = 148*210*1e-6*80;
	isoa62g = 105*148*1e-6*80;
	isoa72g = 74*105*1e-6*80;
	isoa82g = 52*74*1e-6*80;
	isoa92g = 37*52*1e-6*80;
	isoa102g = 26*37*1e-6*80;
	
	
	if (from_unit == "" || to_unit == "") return 0;
	if (isReal(value)) {
		switch(from_unit){
			case "yottagram":
			  value= value*yg2g;
			  break; 
			case "zettagram":
			  value= value*zg2g;
			  break; 
			case "exagram":
			  value= value*eg2g;
			  break; 			  			  		
			case "petagram":
			  value= value*pg2g;
			  break; 
			case "teragram":
			  value= value*tg2g;
			  break; 
			case "gigagram":
			  value= value*gg2g;
			  break; 
			case "megagram":
			  value= value*megag2g;
			  break; 			  			  		
			case "kilogram":
			  value= value*kg2g;
			  break; 		
			case "hectogram":
			  value= value*hg2g;
			  break; 		
			case "decagram":
			  value= value*da2g;
			  break; 
			case "gram":
			  value= value*g2g;
			  break; 			    	
			case "decigram":
			  value= value*deci2g;
			  break;    
			case "centigram":
			  value= value*centi2g;
			  break;	
			case "milligram":
			  value= value*milli2g;
			  break;	
			case "microgram":
			  value= value*micro2g;
			  break;	
			case "nanogram":
			  value= value*nano2g;
			  break;	
			case "picogram":
			  value= value*pico2g;
			  break;
			case "femtogram":
			  value= value*femto2g;
			  break;
			case "attogram":
			  value= value*atto2g;
			  break;			  	
			case "zeptogram":
			  value= value*zepto2g;
			  break;
			case "yoctogram":
			  value= value*yocto2g;
			  break;		
			case "stone":
			  value= value*stone2g;
			  break; 		
			case "pound":
			  value= value*pound2g;
			  break; 
			case "ounce":
			  value= value*ounce2g;
			  break; 		
			case "dram":
			  value= value*dram2g;
			  break; 					  	  
			case "grain":
			  value= value*grain2g;
			  break;	  
			case "lton":
			  value= value*lton2g;
			  break; 		
			case "ston":
			  value= value*ston2g;
			  break; 
			case "lquater":
			  value= value*lquater2g;
			  break; 		
			case "squater":
			  value= value*squater2g;
			  break; 					  	  
			case "lhundredweight":
			  value= value*lhundredweight2g;
			  break;				  
			case "shundredweight":
			  value= value*shundredweight2g;
			  break;	
			case "carat":
			  value= value*carat2g;
			  break;	
			case "mpound":
			  value= value*mpound2g;
			  break;	
			case "tonne":
			  value= value*tonne2g;
			  break;	
			case "slug":
			  value= value*slug2g;
			  break;  	
			/* Convert paper to gram. Do not change this. It is correct! */ 	
			case "isowa0":
			  value= value*isoa02g;
			  break; 		
			case "isowa1":
			  value= value*isoa12g;
			  break; 
			case "isowa2":
			  value= value*isoa22g;
			  break; 
			case "isowa3":
			  value= value*isoa32g;
			  break; 
			case "isowa4":
			  value= value*isoa42g;
			  break; 
			case "isowa5":
			  value= value*isoa52g;
			  break; 
			case "isowa6":
			  value= value*isoa62g;
			  break; 
			case "isowa7":
			  value= value*isoa72g;
			  break; 
			case "isowa8":
			  value= value*isoa82g;
			  break; 
			case "isowa9":
			  value= value*isoa92g;
			  break; 
			case "isowa10":
			  value= value*isoa102g;
			  break; 				  		  			  			  			  			    		  		
		}
		
		switch(to_unit){
			case "yottagram":
			  value= value/yg2g;
			  break; 
			case "zettagram":
			  value= value/zg2g;
			  break; 
			case "exagram":
			  value= value/eg2g;
			  break; 			  			  		
			case "petagram":
			  value= value/pg2g;
			  break; 
			case "teragram":
			  value= value/tg2g;
			  break; 
			case "gigagram":
			  value= value/gg2g;
			  break; 
			case "megagram":
			  value= value/megag2g;
			  break; 			  			  		
			case "kilogram":
			  value= value/kg2g;
			  break; 		
			case "hectogram":
			  value= value/hg2g;
			  break; 		
			case "decagram":
			  value= value/da2g;
			  break; 
			case "gram":
			  value= value/g2g;
			  break; 			    	
			case "decigram":
			  value= value/deci2g;
			  break;    
			case "centigram":
			  value= value/centi2g;
			  break;	
			case "milligram":
			  value= value/milli2g;
			  break;	
			case "microgram":
			  value= value/micro2g;
			  break;	
			case "nanogram":
			  value= value/nano2g;
			  break;	
			case "picogram":
			  value= value/pico2g;
			  break;
			case "femtogram":
			  value= value/femto2g;
			  break;
			case "attogram":
			  value= value/atto2g;
			  break;			  	
			case "zeptogram":
			  value= value/zepto2g;
			  break;
			case "yoctogram":
			  value= value/yocto2g;
			  break;		
			case "deg":
			  value= value/deg2rad;
			  break; 		
			case "rad":
			  value= value/rad2rad;
			  break; 	
			case "arcminute":
			  value= value/arcminute2rad;
			  break; 		
			case "arcsecond":
			  value= value/arcsecond2rad;
			  break			  
			case "gon":
			  value= value/gon2rad;
			  break;	
			case "stone":
			  value= value/stone2g;
			  break; 		
			case "pound":
			  value= value/pound2g;
			  break; 
			case "ounce":
			  value= value/ounce2g;
			  break; 		
			case "dram":
			  value= value/dram2g;
			  break; 					  	  
			case "grain":
			  value= value/grain2g;
			  break;	  
			case "lton":
			  value= value/lton2g;
			  break; 		
			case "ston":
			  value= value/ston2g;
			  break; 
			case "lquater":
			  value= value/lquater2g;
			  break; 		
			case "squater":
			  value= value/squater2g;
			  break; 					  	  
			case "lhundredweight":
			  value= value/lhundredweight2g;
			  break;				  
			case "shundredweight":
			  value= value/shundredweight2g;
			  break;	
			case "carat":
			  value= value/carat2g;
			  break;	
			case "mpound":
			  value= value/mpound2g;
			  break;	
			case "tonne":
			  value= value/tonne2g;
			  break;	
			case "slug":
			  value= value/slug2g;
			  break;  
			/* Convert paper to gram. Do not change this. It is correct! */ 	
			case "isowa0":
			  value= value/isoa02g;
			  break; 		
			case "isowa1":
			  value= value/isoa12g;
			  break; 
			case "isowa2":
			  value= value/isoa22g;
			  break; 
			case "isowa3":
			  value= value/isoa32g;
			  break; 
			case "isowa4":
			  value= value/isoa42g;
			  break; 
			case "isowa5":
			  value= value/isoa52g;
			  break; 
			case "isowa6":
			  value= value/isoa62g;
			  break; 
			case "isowa7":
			  value= value/isoa72g;
			  break; 
			case "isowa8":
			  value= value/isoa82g;
			  break; 
			case "isowa9":
			  value= value/isoa92g;
			  break; 
			case "isowa10":
			  value= value/isoa102g;
			  break; 					  			  						  			  			  		  		
		}	
	} else {
		value = 0;
	}	
	return value;  
}

function power(value, from_unit, to_unit){
	/* Power: Conversion factor to Watt */
	yw2w = 1e+24;
	zw2w = 1e+21;
	ew2w = 1e+18;
	pw2w = 1e+15;
	tw2w = 1e+12;
	gw2w = 1e+9;
	megaw2w = 1e+6;
	kw2w = 1000;
	hw2w = 100;
	da2w = 10;
	w2w = 1;
	deci2w = 0.1;
	centi2w = 1e-2;
	milli2w = 1e-3;
	micro2w = 1e-6;
	nano2w = 1e-9;
	pico2w = 1e-12;
	femto2w = 1e-15;
	atto2w = 1e-18;
	zepto2w = 1e-21;	
	yocto2w = 1e-24;
	lusec		=1.333e-4;
	atm_cfh		=0.797001244704;
	atm_ccm		=1.68875e-3;
	atm_ccs		=0.101325; 
	atm_cfm		=47.82007468224;
	atm_cfs		=2.8692044809344;
	btu_h		=0.293071; 
	btu_min		=17.584267; 
	btu_sec		=1055.05585262;
	cal_h		=0.001163;
	cal_min		=0.06978;
	cal_sec		=4.1868;  
	kcal_h 		=1.163;
	kcal_min	=69.78;
	kcal_sec	=41868.8;
	ft_lbf_h	=3.766161e-4; 
	ft_lbf_min	=2.259696580552334e-2;
	ft_lbf_sec	=1.3558179483314004;
	hp_m		=735.49875;
	hp_ee		=736;
	hp_im		=745.69987158227022;
	hp_ie		=746;
	j_h			=1/3600;
	j_m			=1/60;
	j_s			=1.0;
	kgf_m_h		=0.002724167;
	kgf_m_min	=0.16345;
	kgf_m_sec	=9.807;
	l_atm_min	=1.68875;
	l_atm_sec	=101.325;

	if (from_unit == "" || to_unit == "") return 0;
	if (isReal(value)) {
		switch(from_unit){
			case "yottawatt":
			  value= value*yw2w;
			  break; 
			case "zettawatt":
			  value= value*zw2w;
			  break; 
			case "exawatt":
			  value= value*ew2w;
			  break; 			  			  		
			case "petawatt":
			  value= value*pw2w;
			  break; 
			case "terawatt":
			  value= value*tw2w;
			  break; 
			case "gigawatt":
			  value= value*gw2w;
			  break; 
			case "megawatt":
			  value= value*megaw2w;
			  break; 			  			  		
			case "kilowatt":
			  value= value*kw2w;
			  break; 		
			case "hectowatt":
			  value= value*hw2w;
			  break; 		
			case "decawatt":
			  value= value*da2w;
			  break; 
			case "watt":
			  value= value*w2w;
			  break; 			    	
			case "deciwatt":
			  value= value*deci2w;
			  break;    
			case "centiwatt":
			  value= value*centi2w;
			  break;	
			case "milliwatt":
			  value= value*milli2w;
			  break;	
			case "microwatt":
			  value= value*micro2w;
			  break;	
			case "nanowatt":
			  value= value*nano2w;
			  break;	
			case "picowatt":
			  value= value*pico2w;
			  break;
			case "femtowatt":
			  value= value*femto2w;
			  break;
			case "attowatt":
			  value= value*atto2w;
			  break;			  	
			case "zeptowatt":
			  value= value*zepto2w;
			  break;
			case "yoctowatt":
			  value= value*yocto2w;
			  break;	
			case "lusec":
			  value= value*lusec;
			  break; 	
			case "atm_cfh":
			  value= value*atm_cfh;
			  break;			  
			case "atm_ccm":
			  value= value*atm_ccm;
			  break; 	
			case "atm_ccs":
			  value= value*atm_ccs;
			  break;			  
			case "atm_cfm":
			  value= value*atm_cfm;
			  break; 	
			case "atm_cfs":
			  value= value*atm_cfs;
			  break;			  
			case "btu_h":
			  value= value*btu_h;
			  break; 	
			case "btu_min":
			  value= value*btu_min;
			  break;			  
			case "btu_sec":
			  value= value*btu_sec;
			  break; 	
			case "cal_h":
			  value= value*cal_h;
			  break;			  
			case "cal_min":
			  value= value*cal_min;
			  break; 	
			case "cal_sec":
			  value= value*cal_sec;
			  break;			  
			case "kcal_h":
			  value= value*kcal_h;
			  break; 	
			case "kcal_min":
			  value= value*kcal_min;
			  break;			  
			case "kcal_sec":
			  value= value*kcal_sec;
			  break; 	
			case "ft_lbf_h":
			  value= value*ft_lbf_h;
			  break;			  
			case "ft_lbf_min":
			  value= value*ft_lbf_min;
			  break; 	
			case "ft_lbf_sec":
			  value= value*ft_lbf_sec;
			  break;			  
			case "hp_m":
			  value= value*hp_m;
			  break; 	
			case "hp_ee":
			  value= value*hp_ee;
			  break;			  
			case "hp_im":
			  value= value*hp_im;
			  break; 	
			case "hp_ie":
			  value= value*hp_ie;
			  break;			  
			case "j_h":
			  value= value*j_h;
			  break; 	
			case "j_m":
			  value= value*j_m;
			  break;			  
			case "j_s":
			  value= value*j_s;
			  break; 	
			case "kgf_m_h":
			  value= value*kgf_m_h;
			  break;			  
			case "kgf_m_min":
			  value= value*kgf_m_min;
			  break; 	
			case "kgf_m_sec":
			  value= value*kgf_m_sec;
			  break;			  
			case "l_atm_min":
			  value= value*l_atm_min;
			  break; 	
			case "l_atm_sec":
			  value= value*l_atm_sec;
			  break;	  			  			  		  
		}
		
		switch(to_unit){
			case "yottawatt":
			  value= value/yw2w;
			  break; 
			case "zettawatt":
			  value= value/zw2w;
			  break; 
			case "exawatt":
			  value= value/ew2w;
			  break; 			  			  		
			case "petawatt":
			  value= value/pw2w;
			  break; 
			case "terawatt":
			  value= value/tw2w;
			  break; 
			case "gigawatt":
			  value= value/gw2w;
			  break; 
			case "megawatt":
			  value= value/megaw2w;
			  break; 			  			  		
			case "kilowatt":
			  value= value/kw2w;
			  break; 		
			case "hectowatt":
			  value= value/hw2w;
			  break; 		
			case "decawatt":
			  value= value/da2w;
			  break; 
			case "watt":
			  value= value/w2w;
			  break; 			    	
			case "deciwatt":
			  value= value/deci2w;
			  break;    
			case "centiwatt":
			  value= value/centi2w;
			  break;	
			case "milliwatt":
			  value= value/milli2w;
			  break;	
			case "microwatt":
			  value= value/micro2w;
			  break;	
			case "nanowatt":
			  value= value/nano2w;
			  break;	
			case "picowatt":
			  value= value/pico2w;
			  break;
			case "femtowatt":
			  value= value/femto2w;
			  break;
			case "attowatt":
			  value= value/atto2w;
			  break;			  	
			case "zeptowatt":
			  value= value/zepto2w;
			  break;
			case "yoctowatt":
			  value= value/yocto2w;
			  break;	
			case "lusec":
			  value= value/lusec;
			  break; 	
			case "atm_cfh":
			  value= value/atm_cfh;
			  break;			  
			case "atm_ccm":
			  value= value/atm_ccm;
			  break; 	
			case "atm_ccs":
			  value= value/atm_ccs;
			  break;			  
			case "atm_cfm":
			  value= value/atm_cfm;
			  break; 	
			case "atm_cfs":
			  value= value/atm_cfs;
			  break;			  
			case "btu_h":
			  value= value/btu_h;
			  break; 	
			case "btu_min":
			  value= value/btu_min;
			  break;			  
			case "btu_sec":
			  value= value/btu_sec;
			  break; 	
			case "cal_h":
			  value= value/cal_h;
			  break;			  
			case "cal_min":
			  value= value/cal_min;
			  break; 	
			case "cal_sec":
			  value= value/cal_sec;
			  break;			  
			case "kcal_h":
			  value= value/kcal_h;
			  break; 	
			case "kcal_min":
			  value= value/kcal_min;
			  break;			  
			case "kcal_sec":
			  value= value/kcal_sec;
			  break; 	
			case "ft_lbf_h":
			  value= value/ft_lbf_h;
			  break;			  
			case "ft_lbf_min":
			  value= value/ft_lbf_min;
			  break; 	
			case "ft_lbf_sec":
			  value= value/ft_lbf_sec;
			  break;			  
			case "hp_m":
			  value= value/hp_m;
			  break; 	
			case "hp_ee":
			  value= value/hp_ee;
			  break;			  
			case "hp_im":
			  value= value/hp_im;
			  break; 	
			case "hp_ie":
			  value= value/hp_ie;
			  break;			  
			case "j_h":
			  value= value/j_h;
			  break; 	
			case "j_m":
			  value= value/j_m;
			  break;			  
			case "j_s":
			  value= value/j_s;
			  break; 	
			case "kgf_m_h":
			  value= value/kgf_m_h;
			  break;			  
			case "kgf_m_min":
			  value= value/kgf_m_min;
			  break; 	
			case "kgf_m_sec":
			  value= value/kgf_m_sec;
			  break;			  
			case "l_atm_min":
			  value= value/l_atm_min;
			  break; 	
			case "l_atm_sec":
			  value= value/l_atm_sec;
			  break;	  			  			  		  		
		}	
	} else {
		value = 0;
	}	
	return value;  
}


function pressure(value, from_unit, to_unit){
	/* Pressure: Conversion factor to pascal */
	ypa2pa = 1e+24;
	zpa2pa = 1e+21;
	epa2pa = 1e+18;
	ppa2pa = 1e+15;
	tpa2pa = 1e+12;
	gpa2pa = 1e+9;
	megapa2pa = 1e+6;
	kpa2pa = 1000;
	hpa2pa = 100;
	da2pa = 10;
	pa2pa = 1;
	deci2pa = 0.1;
	centi2pa = 1e-2;
	milli2pa = 1e-3;
	micro2pa = 1e-6;
	nano2pa = 1e-9;
	pico2pa = 1e-12;
	femto2pa = 1e-15;
	atto2pa = 1e-18;
	zepto2pa = 1e-21;	
	yocto2pa = 1e-24;
	N_m2 = 1;
	N_cm2 = 10000;
	N_mm2 = 1000000;
	kN_m2 = 1000;
	bar	= 100000;
	mbar = 100;
	microbar = 0.1;
	dyn_cm2	= 0.1;
	kgf_m2 = 9.80665;
	kgf_cm2	= 98066.5;
	kgf_mm2	= 9806650;
	gf_cm2	= 98.0665;
	stonf_ft2 = 95760.517960678;
	stonf_in2 = 13789514.586338;
	ltonf_ft2 = 107251.78011595;
	ltonf_in2 = 15444256.336697;
	tonf_m2 = 9806.65;
	tonf_cm2 = 98066500;
	ksi	= 6894757;
	lbf_ft2	= 47.88025898;
	psi	= 6894.757293178;
	pdl_ft2	= 1.488163944;  
	pdl_in2	= 214.296;
	torr = 133.322368421;
	mHg	= 133322.3684210526;
	cmHg = 1333.223684210526;
	mmHg = 133.3223684210526;
	mH20 = 9806.376018;
	cmH20 = 98.06376018;
	mmH20 = 9.806376018;
	at = 98066.5;
	atm = 101325;
	
	if (from_unit == "" || to_unit == "") return 0;
	if (isReal(value)) {
		switch(from_unit){
			case "yottapascal":
			  value= value*ypa2pa;
			  break; 
			case "zettapascal":
			  value= value*zpa2pa;
			  break; 
			case "exapascal":
			  value= value*epa2pa;
			  break; 			  			  		
			case "petapascal":
			  value= value*ppa2pa;
			  break; 
			case "terapascal":
			  value= value*tpa2pa;
			  break; 
			case "gigapascal":
			  value= value*gpa2pa;
			  break; 
			case "megapascal":
			  value= value*megapa2pa;
			  break; 			  			  		
			case "kilopascal":
			  value= value*kpa2pa;
			  break; 		
			case "hectopascal":
			  value= value*hpa2pa;
			  break; 		
			case "decapascal":
			  value= value*da2pa;
			  break; 
			case "pascal":
			  value= value*pa2pa;
			  break; 			    	
			case "decipascal":
			  value= value*deci2pa;
			  break;    
			case "centipascal":
			  value= value*centi2pa;
			  break;	
			case "millipascal":
			  value= value*milli2pa;
			  break;	
			case "micropascal":
			  value= value*micro2pa;
			  break;	
			case "nanopascal":
			  value= value*nano2pa;
			  break;	
			case "picopascal":
			  value= value*pico2pa;
			  break;
			case "femtopascal":
			  value= value*femto2pa;
			  break;
			case "attopascal":
			  value= value*atto2pa;
			  break;			  	
			case "zeptopascal":
			  value= value*zepto2pa;
			  break;
			case "yoctopascal":
			  value= value*yocto2pa;
			  break;		
			case "dyn_cm2":
			  value= value*dyn_cm2;
			  break; 		
			case "gf_cm2":
			  value= value*gf_cm2;
			  break; 
			case "kgf_mm2":
			  value= value*kgf_mm2;
			  break; 		
			case "kgf_cm2":
			  value= value*kgf_cm2;
			  break; 					  	  
			case "kgf_m2":
			  value= value*kgf_m2;
			  break;	  
			case "ksi":
			  value= value*ksi;
			  break; 		
			case "lbf_ft2":
			  value= value*lbf_ft2;
			  break; 
			case "psi":
			  value= value*psi;
			  break; 		
			case "pdl_in2":
			  value= value*pdl_in2;
			  break; 					  	  
			case "pdl_ft2":
			  value= value*pdl_ft2;
			  break;				  
			case "ltonf_ft2":
			  value= value*ltonf_ft2;
			  break;	
			case "ltonf_in2":
			  value= value*ltonf_in2;
			  break;	
			case "tonf_cm2":
			  value= value*tonf_cm2;
			  break;	
			case "tonf_m2":
			  value= value*tonf_m2;
			  break;	
			case "stonf_ft2":
			  value= value*stonf_ft2;
			  break;	
			case "stonf_in2":
			  value= value*stonf_in2;
			  break;
			case "atm":
			  value= value*atm;
			  break;
			case "at":
			  value= value*at;
			  break;
			case "torr":
			  value= value*torr;
			  break;
			case "mmHg":
			  value= value*mmHg;
			  break;
			case "cmHg":
			  value= value*cmHg;
			  break;
			case "mHg":
			  value= value*mHg;
			  break;
			case "mmH20":
			  value= value*mmH20;
			  break;	
			case "cmH20":
			  value= value*cmH20;
			  break;	
			case "mH20":
			  value= value*mH20;
			  break;	
			case "N_mm2":
			  value= value*N_mm2;
			  break;	
			case "N_cm2":
			  value= value*N_cm2;
			  break;	
			case "N_m2":
			  value= value*N_m2;
			  break;				  			  			  			  			  		  			  			  			  			  			  			  			  			  			  			  			  			  			    		  		
			case "kN_m2":
			  value= value*kN_m2;
			  break;		
			case "bar":
			  value= value*bar;
			  break;	
			case "mbar":
			  value= value*mbar;
			  break;	
			case "microbar":
			  value= value*microbar;
			  break;				  			  			  		  
		}
		
		switch(to_unit){
			case "yottapascal":
			  value= value/ypa2pa;
			  break; 
			case "zettapascal":
			  value= value/zpa2pa;
			  break; 
			case "exapascal":
			  value= value/epa2pa;
			  break; 			  			  		
			case "petapascal":
			  value= value/ppa2pa;
			  break; 
			case "terapascal":
			  value= value/tpa2pa;
			  break; 
			case "gigapascal":
			  value= value/gpa2pa;
			  break; 
			case "megapascal":
			  value= value/megapa2p;
			  break; 			  			  		
			case "kilopascal":
			  value= value/kpa2pa;
			  break; 		
			case "hectopascal":
			  value= value/hpa2pa;
			  break; 		
			case "decapascal":
			  value= value/da2pa;
			  break; 
			case "pascal":
			  value= value/pa2pa;
			  break; 			    	
			case "decipascal":
			  value= value/deci2pa;
			  break;    
			case "centipascal":
			  value= value/centi2pa;
			  break;	
			case "millipascal":
			  value= value/milli2pa;
			  break;	
			case "micropascal":
			  value= value/micro2pa;
			  break;	
			case "nanopascal":
			  value= value/nano2pa;
			  break;	
			case "picopascal":
			  value= value/pico2pa;
			  break;
			case "femtopascal":
			  value= value/femto2pa;
			  break;
			case "attopascal":
			  value= value/atto2pa;
			  break;			  	
			case "zeptopascal":
			  value= value/zepto2pa;
			  break;
			case "yoctopascal":
			  value= value/yocto2pa;
			  break;		
			case "dyn_cm2":
			  value= value/dyn_cm2;
			  break; 		
			case "gf_cm2":
			  value= value/gf_cm2;
			  break; 
			case "kgf_mm2":
			  value= value/kgf_mm2;
			  break; 		
			case "kgf_cm2":
			  value= value/kgf_cm2;
			  break; 					  	  
			case "kgf_m2":
			  value= value/kgf_m2;
			  break;	  
			case "ksi":
			  value= value/ksi;
			  break; 		
			case "lbf_ft2":
			  value= value/lbf_ft2;
			  break; 
			case "psi":
			  value= value/psi;
			  break; 		
			case "pdl_in2":
			  value= value/pdl_in2;
			  break; 					  	  
			case "pdl_ft2":
			  value= value/pdl_ft2;
			  break;				  
			case "ltonf_ft2":
			  value= value/ltonf_ft2;
			  break;	
			case "ltonf_in2":
			  value= value/ltonf_in2;
			  break;	
			case "tonf_cm2":
			  value= value/tonf_cm2;
			  break;	
			case "tonf_m2":
			  value= value/tonf_m2;
			  break;	
			case "stonf_ft2":
			  value= value/stonf_ft2;
			  break;	
			case "stonf_in2":
			  value= value/stonf_in2;
			  break;
			case "atm":
			  value= value/atm;
			  break;
			case "at":
			  value= value/at;
			  break;
			case "torr":
			  value= value/torr;
			  break;
			case "mmHg":
			  value= value/mmHg;
			  break;
			case "cmHg":
			  value= value/cmHg;
			  break;
			case "mHg":
			  value= value/mHg;
			  break;
			case "mmH20":
			  value= value/mmH20;
			  break;	
			case "cmH20":
			  value= value/cmH20;
			  break;	
			case "mH20":
			  value= value/mH20;
			  break;	
			case "N_mm2":
			  value= value/N_mm2;
			  break;	
			case "N_cm2":
			  value= value/N_cm2;
			  break;	
			case "N_m2":
			  value= value/N_m2;
			  break;				  			  			  			  			  		  			  			  			  			  			  			  			  			  			  			  			  			  			    		  		
			case "kN_m2":
			  value= value/kN_m2;
			  break;		
			case "bar":
			  value= value/bar;
			  break;	
			case "mbar":
			  value= value/mbar;
			  break;	
			case "microbar":
			  value= value/microbar;
			  break;							  			  			  		  		
		}	
	} else {
		value = 0;
	}	
	return value;  
}


function speed(invalue, from_length_unit, to_length_unit, from_time_unit, to_time_unit){

	/* Speed: Conversion factor to meter/sec */
	/* knot, ukknot, lightspeed and mach are no length units but speed units */
	fromUnitIsLength = "no";
	toUnitIsLength = "no";
	valueA=1;
	valueB=1;
	
	if (from_length_unit == "" || to_length_unit == "") return 0;
	if (isReal(invalue)) {
	
		switch(from_length_unit){
			case "knot":
			  valueA= 1852/3600;
			  break;		
			case "ukknot":
			  valueA= 1853.184/3600;
			  break; 		
			case "lightspeed":
			  valueA= 299792458;
			  break; 
			case "mach":
			  valueA= 340.2933;
			  break; 	
			default:
			  fromUnitIsLength = "yes";
			  break;  		  		  		
		}

		switch(to_length_unit){
			case "knot":
			  valueB= 1/(1852/3600);
			  break;		
			case "ukknot":
			  valueB= 1/(1853.184/3600);
			  break; 		
			case "lightspeed":
			  valueB= 1/299792458;
			  break; 
			case "mach":
			  valueB= 1/340.2933;
			  break; 	
			default:
			  toUnitIsLength = "yes";
			  break;  		  			  		  		
		}	
	} else {
		return 0;
	}	

	if (fromUnitIsLength == "yes" && toUnitIsLength == "yes") {
		value1 = length(invalue, from_length_unit, to_length_unit);
		value2 = time(1, from_time_unit, to_time_unit);		
		return value1/value2;	
	}
	
	if (fromUnitIsLength == "no" && toUnitIsLength == "no") {
		valueFrom = invalue * valueA;
		return valueFrom * valueB;
	}
		
	if (fromUnitIsLength == "yes" && toUnitIsLength == "no") {
		value1 = length(invalue, from_length_unit, "meter");
		value2 = time(1, from_time_unit, "sec");	
		valueFrom = value1/value2;	
		return valueFrom * valueB;
	} 

	if (fromUnitIsLength == "no" && toUnitIsLength == "yes") {
		valueFrom = invalue * valueA;
		value1 = length(valueFrom, "meter", to_length_unit);
		value2 = time(1, "sec", to_time_unit);	
		return value1/value2;	
	}	

}


function temperature(value, from_unit, to_unit){
	/* Tempearture: Conversion factor to celsius */

	if (from_unit == "" || to_unit == "") return 0;
	if (isReal(value)) {
		switch(from_unit){
			case "celsius":
			  value= value * 1;
			  break;		
			case "kelvin":
			  value= value - 273.15;
			  break; 		
			case "rankine":
			  value= (value / 1.8) - 273.15;
			  break; 
			case "farenheit":
			  value= (value - 32) / 1.8;
			  break; 			  		  		
		}

		switch(to_unit){
			case "celsius":
			   value= value * 1;	
			  break;		
			case "kelvin":
			  value= value + 273.15;
			  break; 		
			case "rankine":
			  value= (value + 273.15) * 1.8;
			  break; 
			case "farenheit":
			  value= (value*1.8)+32;
			  break; 			  			  		  		
		}	
	} else {
		value = 0;
	}	
	
	return value;  
}

function time(value, from_unit, to_unit){
	/* Time: Conversion factor to seconds */
	week2sec = 7*24*3600;
	day2sec = 24*3600;
	hour2sec = 3600;
	min2sec = 60
	sec = 1;
	if (from_unit == "" || to_unit == "") return 0;
	if (isReal(value)) {
		switch(from_unit){
			case "week":
			  value= value*week2sec;
			  break; 		
			case "day":
			  value= value*day2sec;
			  break; 		
			case "hour":
			  value= value*hour2sec;
			  break;   	
			case "min":
			  value= value*min2sec;
			  break;    
			case "sec":
			  value= value*sec;
			  break;	
		}
		
		switch(to_unit){
			case "week":
			  value= value/week2sec;
			  break; 
			case "day":
			  value= value/day2sec;
			  break; 			  		
			case "hour":
			  value= value/hour2sec;
			  break;   	
			case "min":
			  value= value/min2sec;
			  break;    
			case "sec":
			  value= value/sec;
			  break;	
		}	
	} else {
		value = 0;
	}	
	return value;	  
}


function volume(value, from_unit, to_unit){
	/* Volume: Conversion factor to cubic meters */
	if (from_unit == "" || to_unit == "") return 0;
	if (isReal(value)) {
		val = length(Math.pow(value,(1/3)), from_unit, to_unit);
		value = Math.pow(val,3); 
	} else {
		value = 0;
	}	
	return value;
}

function information_storage(value, from_unit, to_unit) {
	/* Storage: Coversion factor to bits */
	gbit2bit = 1024*1024*1024;   	
	mbit2bit = 1024*1024;
	kbit2bit = 1024;
	bit  = 1;
	gbyte2bit = 1024*1024*1024*8;
	mbyte2bit = 1024*1024*8;
	kbyte2bit = 1024*8;
	byte2bit  = 8;

	if (isReal(value)) {
		switch(from_unit){
			case "Gbit":
			  value= value*gbit2bit;
			  break;   	
			case "Mbit":
			  value= value*mbit2bit;
			  break;    
			case "Kbit":
			  value= value*kbit2bit;
			  break;
			case "bit":
			  value= value*bit;
			  break;		  
			case "Gbyte":
			  value= value*gbyte2bit;
			  break;   	
			case "Mbyte":
			  value= value*mbyte2bit;
			  break;    
			case "Kbyte":
			  value= value*kbyte2bit;
			  break;		
			case "byte":
			  value= value*byte2bit;
			  break;	
		} 		    

	
		switch(to_unit){
			case "Gbit":
			  value= value/gbit2bit;
			  break;   	
			case "Mbit":
			  value= value/mbit2bit;
			  break;    
			case "Kbit":
			  value= value/kbit2bit;
			  break;
			case "bit":
			  value= value/bit;
			  break;		  
			case "Gbyte":
			  value= value/gbyte2bit;
			  break;   	
			case "Mbyte":
			  value= value/mbyte2bit;
			  break;    
			case "Kbyte":
			  value= value/kbyte2bit;
			  break;		
			case "byte":
			  value= value/byte2bit;
			  break;			    
		}	
	} else {
		value=0;
	}
	
	return value;
}

function bandwidth(invalue, from_information_unit, to_information_unit, from_time_unit, to_time_unit){
	value = information_storage(invalue, from_information_unit, to_information_unit);
	value = time(value, from_time_unit, to_time_unit);		
	return value;
}


