var inptSze=8;

function strip_Chrs(SN)
{
 var temp_str="";
 for(var i=0; i<SN.length; i++)
 {
  var testChr=SN.substring(i,i+1);

  if(!isNaN(testChr) || testChr=="." )
    temp_str=temp_str+testChr;
 }
  if(temp_str.charAt(temp_str.length-1)==".") 
    temp_str= temp_str +"0" 

  if(temp_str=="") temp_str="0";

  return temp_str;
}

function format(x)
{
 var r= Math.round(x*10000)/10000;
 return r;
}

function fix_Entry(par1,par2)
{
 var Xn=  par1; 
 var Xs= par2;
 var Xa= 1; 
 for(var s= Xs; s > 0,Xn.indexOf(".")!=-1 ; s--)
   {
    if(Xn.substring(s-1,s)!= "0" && Xn.substring(s-1,s)!= "." && Xn.substring(s-1,s)!= " " )break;
    Xn= Xn.substring(0, s) 
  }
 
 if(Xn.indexOf(".")==0) {Xn= "0"+Xn; Xa=0;}
 if(Xn.indexOf(".")== Xn.length-1){Xn= Xn.substring(0, Xn.length-1);add= add+1;}
 var add= Xs+Xa- Xn.length;
 var net= add;
 if(navigator.appName == "Netscape")for(var p=0; p<net/2; p++,add--);
 for(var t=0; t<  add; t++)
   {
   Xn= " "+Xn;
   }
return Xn;
}



function convM(YF,Xp)
{
 var Xi, Xf, Xm
 var Yi, Yf, Ym // objs
 var XI, XF
	
 Yi = eval(YF.name + "." + Xp + "I");
 Yf = eval(YF.name + "." + Xp + "F");
 Ym = eval(YF.name + "." + Xp + "M");

 Yi.value=strip_Chrs(Yi.value)

 Yf.value=strip_Chrs(Yf.value)

 Yi.value=Math.round(Yi.value)

 var ptr=Yf.value.indexOf('.') 
 if(ptr > -1)
 {
  var a= new Number(Yf.value.substring(0,ptr))
  var b= new Number('.'+Yf.value.substring(ptr+1,Yf.value.length))
  Yf.value= a;
  Yi.value= new Number(Yi.value)+ Math.round(12*b)
 } 

 XI = new Number(Yi.value);
 XF= new Number(Yf.value)

 a= 0;
 b= 0;

 b= XI;
 if(b >= 12 )
 {
  while( b > 12 || b== 12 )
  {
   a++;
   b=(b-12)
  }
  var b= eval(XI-(a*12));
  Yi.value = b;
  Yf.value= XF+a;
 }
 Xf   = Yf.value;
 Xi = Yi.value;
      
 Yi.value= fix_Entry(Yi.value,inptSze)
 Yf.value= fix_Entry(Yf.value,inptSze)

 var numIsOk, numValue, textValue;
 numIsOk= true;

 textValue= Yi.value;
 var numValue = eval(textValue*1)
 if (numValue != textValue)
  numIsOk= false

 if((Xf.toString() == "" || Xf.toString() == "0") && (Xi.toString() == "" || Xi.toString() == "0"))
  numIsOk= false;

 if(!numIsOk) 
 {
  Yf.value = "";
  Yi.value = "";
  Ym.value = "";
 }
 else
 {
  Xm = FItoM(Xf, Xi);
  Xm = Math.round(Xm * 10000)/10000;
  Ym.value = Xm;
  Ym.value= fix_Entry(Ym.value,inptSze)
 }
}

function convFI(YF,Xp)
{
 var Xi, Xf, Xm
 var Yi, Yf, Ym // objs
	
 Ym = eval(YF.name + "." + Xp + "M");

 Ym.value=strip_Chrs(Ym.value)
 Xm= Ym.value;
 
 Yf = eval(YF.name + "." + Xp + "F");
 Yi = eval(YF.name + "." + Xp + "I");
	
 if(Xm.toString() == "0" || Xm.toString() == "")
 {
  Yf.value = "";
  Yi.value = "";
  Ym.value = "";
 }
 else
 {
  Xf = MtoFI(Xm, true, false);
  Xi = MtoFI(Xm, false, true);
  Yf.value = Xf;
  Yi.value = Xi;
  Yi.value= fix_Entry(Yi.value,inptSze)
  Yf.value= fix_Entry(Yf.value,inptSze)
 }
 Ym.value= fix_Entry(Ym.value,inptSze)
}

function FItoM(Xf, Xi)
{
 var Xm
 var Fi = new Number(Xf);
 var Ii = new Number(Xi);
 Ii = Ii / 12;
 Fi = Fi + Ii;
 Xm = Fi / 3.2808399;
 return Xm;
}

function MtoFI(Xm, Fr, Ir)
{
 var Fd, Fi, FI, Fd_f, Ii;
 Fd = Xm * 3.2808399;
 Fi = Math.floor(Fd);
 Fd_f = Fd - Fi;
 Ii = Math.floor(12 * Fd_f);
 if(!Ir)
 {
  switch(Fr)
  {
   case (false && Ir == false):
    FI = "";
    break;
   case (true && Ir == false):
    FI = Fi;
    break;
  } 
 }
 else
 {
  switch(Fr)
  {
   case (false):
    FI = Ii;
    break;
   case (true):
    FI = Fi + "," + Ii;
    break;
  }
 }
 return FI;
}

