function isCurrency(f) { 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 = document.getElementById(f).value; txtLen = xTxt.length for(i = 0; i < txtLen; i++) { // Assign charater in substring to x. x = xTxt.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 invalid value!\nPlease enter only: pound" + " Signs, Commas, Decimal Points, and numbers between 0...9!"); return false; } // end else } // end for if(nDollarSign > 1) { alert("ERROR! \n\nYou have entered more then one dollar sign!\nPlease only enter one!"); 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.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.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.indexOf("£", 0) == 0) sDollarVal = xTxt.substr(1, (nNum + nCommas)); else sDollarVal = xTxt.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 indicating that the value is a valid // currency. return true; }