function perRound(num, precision) {
	var precision = 9; //default value if not passed from caller, change if desired
	// remark if passed from caller
	precision = parseInt(precision); // make certain the decimal precision is an integer
	var result1 = num * Math.pow(10, precision);
	var result2 = Math.round(result1);
	var result3 = result2 / Math.pow(10, precision);
	return result3;
}

function myCon(input1, from, to, output) {
  var FromVal, ToVal, FromName, ToName, v1, Factor;
  v1 = document.getElementById(input1).value;
//if (v1.length>0)  {
  v1 = stripBad(v1);
//  v1 = v1.replace(/[^.\d]+/g, ''); 
  v1 = v1.replace(',', '.');   
//  eval('v1 = parseFloat(' + v1 + ');');
  if (isNaN(v1)) v1 = '';
//  v1 = Math.abs(v1);
  document.getElementById(input1).value = v1;

  FromVal = document.getElementById(from)[document.getElementById(from).selectedIndex].value;
  ToVal = document.getElementById(to)[document.getElementById(to).selectedIndex].value;  
  FromName = document.getElementById(from).options[document.getElementById(from).selectedIndex].text;
  ToName = document.getElementById(to).options[document.getElementById(to).selectedIndex].text;
  
 
  
if (FromVal==0) {
  document.getElementById(from).options[document.getElementById(from).selectedIndex+1].selected='selected';
  } else if (ToVal==0) {
  document.getElementById(to).options[document.getElementById(to).selectedIndex+1].selected='selected';    
    } else {
  Factor = eval("(" + FromVal + ")/(" + ToVal + ")");
  document.getElementById(output).value =  get_result(v1, Factor);
}
}

function get_result(ff,factor){
 ff *= factor;

 var s = ff.toString(), first, last = '';
 var i = s.indexOf('e');
 if (i != -1)
 {
	 first = perRound(s.substring(0, i));
	 last = parseInt(s.substring(i + 1));
	 while (first >= 10)
	 {
		 first /= 10;
		 last++;
	 }
	 if (last > 0)
		 last = '+' + last;
	 last = 'e' + last;
	 if (first.toString().indexOf('.') == -1)
		first += '.0';
 }
 else
	 first = perRound(s);

 return first + last;
}

function stripBad(string) {
    for (var i=0, output='', valid="eE+/*-0123456789.,()"; i<string.length; i++)
       if (valid.indexOf(string.charAt(i)) != -1)
          output += string.charAt(i)
    return output;
} 

function space (num)
{
	num = num + '';
	// exit if scientific notation
	if (num.indexOf('e') > -1){ return num; }

	var dec = num.indexOf('.');

	var left, right = '';
	if (dec >= 0)
	{
		left = num.substring(0, dec);
		right = num.substring(dec + 1);
	}
	else
		left = num;

	var new_left = '', new_right = '';
	for (var i = 0; i < right.length; i++)
	{
		new_right += right.charAt(i);
		if (i % 3 == 2 && i != right.length - 1)
			new_right += ' ';
	}
	for (var i = left.length - 1; i >= 0; i--)
	{
		new_left = left.charAt(i) + new_left;
		if ((left.length - 1 - i) % 3 == 2 && i != 0)
			new_left = ' ' + new_left;
	}

	return (dec >= 0) ? new_left + '.' + new_right : new_left;
}

function myConT(input1, from, to, output) {
  var FromVal, ToVal, FromName, ToName, v1, output1;
  v1 = document.getElementById(input1).value;
  v1 = stripBad(v1);
//  v1 = v1.replace(/[^.\d]+/g, ''); 
    v1 = v1.replace(',', '.');
//  eval('v1 = parseFloat(' + v1 + ');');
  if (isNaN(v1)) v1 = '';
  document.getElementById(input1).value = space(v1);
  FromVal = document.getElementById(from)[document.getElementById(from).selectedIndex].value;
  ToVal = document.getElementById(to)[document.getElementById(to).selectedIndex].value;  
  
if ((FromVal=="c") && (ToVal=="f")) {
   output1 = (212-32)/100 * v1 + 32 ;
  } else if ((FromVal=="f") && (ToVal=="c")) {
  output1 = 100/(212-32) * (v1 - 32 );
    } else if ((FromVal=="c") && (ToVal=="k")) {
  output1 = v1*1+273.15;
    } else if ((FromVal=="k") && (ToVal=="c")) {
  output1 = v1-273.15;
    } else if ((FromVal=="f") && (ToVal=="k")) {
  output1 = (100/(212-32) * (v1 - 32 ))+273.15;
    } else if ((FromVal=="k") && (ToVal=="f")) {
  output1 = (212-32)/100 * (v1-273.15) + 32;
    }
	else if (FromVal==ToVal) {
	output1=document.getElementById(input1).value;
}
  document.getElementById(output).value =  output1;

}