var lcltemp=0;
// ***********************************************************//
// ***************** Numeric Validations *********************//
// ***********************************************************//
function checkNumber(input, min, max, msg)
{
    msg = msg + " field has invalid data: " + input.value;

    var str = input.value;
    for (var i = 0; i < str.length; i++) {
        var ch = str.substring(i, i + 1)
        if ((ch < "0" || "9" < ch) && ch != '.') {
            alert(msg);
            return false;
        }
    }
    var num = 0 + str
    if (num < min || max < num) {
        alert(msg + " not in range [" + min + ".." + max + "]");
        return false;
    }
    input.value = str;
    return true;
}

// ***********************************************************//
// ************ Inches to mm Conversion Functions ************//
// ***********************************************************//
function ClearMilli(form)
{
       //alert("Reset Millimeter function started...");
    	form.inches.value = "";
    	form.millimeters.value = "";
       return;
}
function ComputeMilli(form)
{
    //alert("Compute Millimeter function started...");
    if (form.inches.value == null && form.millimeters.value == null)
     	{
	form.inches.value = "Invalid";
       return;
       }
    if (form.inches.value != null && form.inches.value.length != 0)
	{
       if (!checkNumber(form.inches, .0000001, 10000000, "inches"))
	   { form.inches.value = "Invalid"; return; }
          //alert("convert mm value...");
	   var i = form.inches.value;
	   form.millimeters.value = (i* 25.40005);
	   if (form.millimeters.value.length>5)
             {
	      for (j=0; j<form.millimeters.value; j++)
               {
	        if (form.millimeters.value.substring(j,1)==".")
		    lcltemp=j;	
		 }
		 form.millimeters.value=form.millimeters.value.substring(0,lcltemp+6);
		 lcltemp=0;
	      }
	      return;
       }
    if (form.millimeters.value != null && form.millimeters.value.length != 0)
     	{
       if (!checkNumber(form.millimeters, .0000001, 10000000, "millimeters"))
          { form.millimeters.value = "Invalid"; return; }
	   var i = form.millimeters.value;
	   form.inches.value = (i / 25.40005)+.000005 ;
	   if (form.inches.value.length>5)
             {
	      for (j=0; j<form.inches.value; j++)
               {
		  if (form.inches.value.substring(j,1)==".")
		     lcltemp=j;	
		  }
		  form.inches.value=form.inches.value.substring(0,lcltemp+6);
		  lcltemp=0;
		}
		return;
       }
}


// ***********************************************************//
// ********* Fraction to Decimal Conversion Functions ********//
// ***********************************************************//
function ComputeDec(form)
{
    //alert("Compute Decimal function started...");
    if (form.fraction.value == null || form.fraction.value.length == 0)
     	{
	form.fraction.value = "Invalid";
       return;
       }
  
	var x = eval(form.fraction.value);
	form.decimal.value = x+.00005;
	if (form.decimal.value.length>5)
          {
	   for (j=0; j<form.decimal.value; j++)
              {
		if (form.decimal.value.substring(j,1)==".")
			lcltemp=j;	
		}
	   form.decimal.value=form.decimal.value.substring(0,lcltemp+6);
	   lcltemp=0;
	   }
}
function ClearDec(form)
{
       //alert("Reset Decimal function started...");
    	form.fraction.value = "";
    	form.decimal.value = "";
}
function ComputeDecField(input)
{
    //alert("Compute Decimal Field function started...");
    if (input.value != null && input.value.length != 0)
       var lcltemp = input.value;
	input.value = "" + eval(input.value);
	ComputeDec(input.form);
}


// ***********************************************************//
// ***************** Golf Handicap Calculator ****************//
// ***********************************************************//
function ComputeHandicap(form)
{ 
    //alert("Compute Golf Handicap function started...");
    if (form.index.value == null || form.index.value.length == 0) 
     	{
       //alert("Invalid Index Value...");
	form.index.value = "Invalid";
       //alert("Check for the Slope Value...");
       if (form.slp.value == null || form.slp.value.length == 0) 
          {
          //alert("Invalid Slope Value...");
	   form.slp.value = "Invalid";
          return;
          }
       return;
       }
    if (!CheckIndex(form.index))
	   { form.index.value = "Invalid"; return; }
    if (form.slp.value == null || form.slp.value.length == 0)
 	{
       //alert("Invalid Slope Value...");
	form.slp.value = "Invalid";
       return;
       }
    if (!CheckSlope(form.slp))
	   { form.slp.value = "Invalid"; return; }
    form.hc.value = Math.round(form.index.value * form.slp.value/113); 
}

function ClrHandicap(form)
{
       //alert("Reset Golf Handicap function started...");
    	form.index.value = "";
    	form.slp.value = "";
	form.hc.value = "";
       return;
}

function CheckIndex(input)
{
    msg = "Index field has Invalid Data: " + input.value;
    var str = input.value;
    for (var i = 0; i < str.length; i++) {
        var ch = str.substring(i, i + 1)
        if ((ch < "0" || "9" < ch) && ch != '.') {
            alert(msg);
            return false;
        }
    }
    return true;
}
function CheckSlope(input)
{
    msg = "Slope field has Invalid Data: " + input.value;
    var str = input.value;
    for (var i = 0; i < str.length; i++) {
        var ch = str.substring(i, i + 1)
        if ((ch < "0" || "9" < ch) && ch != '.') {
            alert(msg);
            return false;
        }
    }
    return true;
}
