function MySearch(str,chr)
{
var i=0
while (i<str.length && str.charAt(i)!=chr) i++;
if (i==str.length) return -1;else return i;
}

function ReplChr(str,chr,repl)
{
var inStr=''+str;
var replStr=(repl)?repl:'';
var chrPos=inStr.indexOf(chr);
return (chrPos!=-1)?inStr.substring(0,chrPos)+replStr+inStr.substring(chrPos+1,inStr.length):inStr;
}

function MyParse(valStr,flag)
{
valStr='0'+valStr.toLowerCase();
if (valStr.indexOf('.')==-1) valStr=ReplChr(valStr,',','.');
valStr=ReplChr(valStr,',');
valStr=ReplChr(valStr,'\'');
valStr=ReplChr(valStr,'"');
if (flag && valStr.indexOf('e')==-1){
	commaPos=valStr.indexOf('.');
	if (commaPos>0){
		valStr+='000000';
		valStr='' + (parseFloat(valStr.substring(0,commaPos))+parseFloat(valStr.substring(commaPos+1,commaPos+3))/60.+parseFloat(valStr.substring(commaPos+3,commaPos+5)+'.'+valStr.substring(commaPos+5,valStr.length))/3600)
	}
}
return parseFloat(valStr);
}

function MyRound(val,signs)
{
return 1e0*Math.round(parseFloat('1e'+(signs-1))*parseFloat(val))/parseFloat('1e'+(signs-1))
}

function ReplaceChr(str,chr,repl)
{
var replStr=(repl)?repl:'';
var chrPos=str.indexOf(chr);
return str.substring(0,chrPos-1)+replStr+str.substring(chrPos,str.length)
}

function sign(val)
{
return (val>=0)?'':'-';
}

function outFormat(val,signs,flag)
{
var valStr=''+val;
var expPos=valStr.indexOf('e');
if (expPos!=-1){
	var mantStr=valStr.substring(0,expPos);
	if (mantStr.length>1+signs)	mantStr=''+MyRound(mantStr,signs);
	valStr=mantStr+valStr.substring(expPos,valStr.length)
}else{
	var mantissa=val;
	var pow10=1e0;
	while (mantissa!=0 && Math.abs(mantissa)<1){
		mantissa*=10;
		pow10/=10	
	}
	while (Math.abs(mantissa)>=10){
		mantissa/=10;
		pow10*=10	
	}
	if (flag){
		var valSign=sign(val);
		var intPart=Math.floor(Math.abs(val));
		var fracPart=MyRound(Math.abs(val)-intPart,10);
		var mins=Math.floor(fracPart*60);
		var minsStr=''+mins
		if (minsStr.length<2) minsStr='0'+minsStr;
		var secsStr=ReplChr(''+MyRound(60*(fracPart*60-mins),signs),'.','",')
		if (secsStr.indexOf(',')==-1){
			secsStr+='"';
			if (secsStr.length<3) secsStr='0'+secsStr
		}else if (secsStr.indexOf(',')==1) secsStr='0'+secsStr;
		if (secsStr=='60"'){
			secsStr='00"';
			minsStr=''+(parseInt(minsStr)+1)
		}
		if (minsStr=='60'){
			minsStr='00';
			intPart++
		}
		valStr=valSign+intPart+'.'+minsStr+'\''+secsStr
	}else{
		val=MyRound(mantissa,signs)*pow10;
		valStr=''+val;
	}
}
return valStr
}

var s_real=0.0;
var s_shift=0.0;
var s_power=0;
var s_dimension=0;
var s_flag=0;

function SplitVals(vals)
{
var valsArr=vals.split('|');
s_real=MyParse(valsArr[0])
s_shift=MyParse(valsArr[1])
s_power=MyParse(valsArr[2])
s_dimension=parseInt(valsArr[3])
s_flag=parseInt(valsArr[4])
}

function calcul()
{
SplitVals(document.forms.units.unit_from.options[document.forms.units.unit_from.selectedIndex].value);
var in_real=s_real;
var in_shift=s_shift;
var in_power=s_power;
var in_dimension=s_dimension;
var in_flag=s_flag;
var in_val=(MyParse(document.forms.units.num_from.value,in_flag)+in_shift)*in_real;
if (in_power!=1) in_val=Math.pow(in_val,in_power);
SplitVals(document.forms.units.unit_to.options[document.forms.units.unit_to.selectedIndex].value);
var to_real=s_real;
var to_shift=s_shift;
var to_power=s_power;
var to_dimension=s_dimension;
var to_flag=s_flag;
var to_val=in_val;
if (to_dimension!=in_dimension && in_dimension!=0) to_val=Math.pow(to_val,to_dimension/in_dimension)
if (to_power!=1) to_val=Math.pow(to_val,1/to_power);
signs=5;
document.forms.units.num_to.value=outFormat(to_val/to_real-to_shift,signs,to_flag);
return false;
}

function check_value()
{
 //if (document.forms.units.unit_from.options[document.forms.units.unit_from.selectedIndex].value=='') document.forms.units.unit_from.selectedIndex++;
 //if (document.forms.units.unit_to.options[document.forms.units.unit_to.selectedIndex].value=='') document.forms.units.unit_to.selectedIndex++;
}
