function checkrequired(which) {
  var pass=true;
  for (i=0;i<which.length;i++) {
    var tempobj=which.elements[i];
    if (tempobj.name.substring(0,8)=="required") {
      if (((tempobj.type=="text"||tempobj.type=="textarea")&&
          tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&
          tempobj.selectedIndex==0)) {
        pass=false;
        break;
      }
    }
  }
  if (!pass) {
    shortFieldName=tempobj.name.substring(8,30).toUpperCase();
    alert("The "+shortFieldName+" field is a required field.");
    return false;
  } else {
  }
 
  form = which;
  if ((form.requiredFundsAmount.value > 1000000) || (form.requiredFundsAmount.value <1000)) {
    alert( "Sorry, amount must be less than $600,000.00 and more than $1000.00" );
    form.requiredFundsAmount.focus();
    return false ;
  }
  
    var nNum = 0;            // Total numbers for currency value.
    var nDollarSign = 0;    // Total times a dollar sign occurs.
    var nDecimal = 0;        // Total times a decimal point occurs.
    var nCommas = 0;        // Total times a comma occurs.
    var txtLen;                // Length of string passed.
    var xTxt;                // Assigned object passed.
    var sDollarVal;            // Assigned dollar amount with or without commas.
    var bComma;               
    var decPos;                // Assigned value of numbers or positions after decimal point.
    var nNumCount = 0;        // Total number between commas.
    var i;                    // For forloop indexing.
    var x;                    // Assigned each indivual character in string.

   
    // Set the xTxt variable to the object passed to this function.
    // Assign the length of the string to txtLen.
    xTxt = form.requiredFundsAmount;
    txtLen = xTxt.value.length

    for(i = 0; i < txtLen; i++)
    {
        // Assign charater in substring to x.
        x = xTxt.value.substr(i, 1);
   

        if(x == "$")
            nDollarSign = nDollarSign + 1; // Sum total times dollar sign occurs.
        else if(x == ".")
            nDecimal = nDecimal + 1; // Sum total times decimal point occurs.
        else if(x == ",")
            nCommas = nCommas + 1; // Sum total times comma occurs.
        else if(parseInt(x) >= 0 || parseInt(x) <= 9)
            nNum = nNum + 1; // If the character is a number sum total times a number occurs.
        else
        {
            // Error occurs if any other character value is in the string
            // othere then the valid characters.
            alert("ERROR! \n\nYou have entered an illegal value!\nPlease enter only: Dollar" +
                  " Signs, Commas, Decimal Points, and numbers between 0...9!");

            return false;
        } // end else
    } // end for

    if(nDollarSign > 0)
    {
      alert("ERROR! \n\nPlease do not enter the price with dollar($) sign!");
        
      return false;
    } // end if
    

    if(nDecimal > 1)
    {
        alert("ERROR! \n\nYou have entered more then one decimal point!\nPlease only enter one!");
        return false;
    } // end if     

    if(nDollarSign == 1)
    {
        // Make sure dollar sign in the first character in string
        // if there is a dollar sign present.
        if(xTxt.value.indexOf("$") != 0)
        {
            alert("ERROR!  \n\nThe dollar sign you entered is not in the correct position!");
            return false;
        } // end if
    }// end if

 
    if(nDecimal == 1)
    {
        // Get the number of numbers after the decimal point in
        // the string if there is a decimal point present

        decPos = (txtLen - 1) - xTxt.value.indexOf(".");    

        // Floating point cannot be more then two.
        // Valid format after decimal point.

        /**********************************/

        /*   $#.##, $#.#, $.#, $#., $.##  */

        /**********************************/

        if(decPos > 2)
        {
            alert("ERROR! \n\nThe decimal point you entered is not in the correct position!");
            return false;
        } // end if
    } // end if
 

    if(nCommas == 0)
    {
        // If no commas are present value is a valid US
        // currency.
        return true;
    }

    else
    {
        // Get total number of dollar number(s), removing
        // floating point numbers or cents.
        nNum = nNum - decPos;    
        // Determine if dollar sign is in string so to be
        // removed.
        // After determining dollar sign, assign sDollarVal
        // numbers and comma(s)
        if(xTxt.value.indexOf("$", 0) == 0)
            sDollarVal = xTxt.value.substr(1, (nNum + nCommas));
        else
            sDollarVal = xTxt.value.substr(0, (nNum + nCommas));
      

        // Determine if a zero is the first number or if a
        // comma is the first or last character in the string.

        if(sDollarVal.lastIndexOf("0", 0) == 0 )
        {
            alert("ERROR! \n\nYou cannot start the dollar amount out with a zero!");
            return false;
        }

        else if(sDollarVal.lastIndexOf(",", 0) == 0)
        {
            alert("ERROR! \n\nYou cannot start the dollar amount out with a comma!");
            return false;
        }

        else if(sDollarVal.indexOf(",", (sDollarVal.length - 1)) == (sDollarVal.length - 1))
        {
            alert("ERROR! \n\nYou cannot end the dollar amount with a comma!");
            return false;
        }

        else
        {
            // Initialize bComma indicating a comma has not been
            // occured yet.

            bComma = false;
            for(i = 0; i < sDollarVal.length; i++)
            {
                // Assign charater in substring to x.
                x = sDollarVal.substr(i, 1);             

                if(parseInt(x) >= 0 || parseInt(x) <= 9)
                {
                    // If x is a number add one to the number counter.
                    nNumCount = nNumCount + 1;
                 
                    // Sense comma(s) are present number counter cannot
                    // be more then three before the first or next comma.
                    if(nNumCount > 3)
                    {
                        alert("ERROR! \n\nYou have a mis-placed comma!");
                        return false;
                    } // end if
                }

                else
                {
                    // If the number counter is less then three and
                    // the comma indicator is true the comma is either
                    // mis-placed or there are not enough values.
                    if(nNumCount != 3 && bComma)
                    {
                        alert("ERROR! \n\nYou have a mis-placed comma!");
                        return false;
                    } // end if
                 
                    // Reset the number counter back to zero.
                    nNumCount = 0;
                
                    // Set the comma indicator to true indicating
                    // that the first comma has been found and that
                    // there now MUST be three numbers after each
                    // comma until the loop hits the end.

                    bComma = true;
                } // end if

            } // end for

           
            // Determine if after the loop ended that there
            // was a total of three final numbers after the
            // last comma.

            if(nNumCount != 3 && bComma)
            {
                alert("ERROR! \n\nYou have a mis-placed comma!");
                return false;
            } // end if

        } // end if

    } // end if


return true;
}

