// This is JavaScript, but we may do PHP things here in future... (Check referrer for instance) // These JavaScript checks are copyright Whizzart Image & Interaction 2001 // Arnoud van Delden - http://www.whizzart.nl or http://www.whizzweb.nl var MayBeEmpty = false; var MayNotBeEmpty = true; var DefaultEmptyOK = false function SetFocus2First(Form) { // Sets focus to the first field that accepts it... if (Form) { for (i=0; i "9")) return false; } return true; } function IsAlpha(s) { var i; for (i = 0; i < s.length; i++) { var c = s.charAt(i); if ( !((c>="A")&&(c<="Z")) && !((c>="a")&&(c<="z")) ) return false; } return true; } function IsAlphaNum(s) { var i; for (i = 0; i < s.length; i++) { var c = s.charAt(i); if (!IsAlpha(c) && !IsNumeric(c)) return false; } return true; } function IsAlpha(s) { var i; for (i = 0; i < s.length; i++) { var c = s.charAt(i); if ( !((c>="A")&&(c<="Z")) && !((c>="a")&&(c<="z")) ) return false; } return true; } function IsNonNegativeInteger(s) { var SecondArg = DefaultEmptyOK; if (IsNonNegativeInteger.arguments.length > 1) SecondArg = IsNonNegativeInteger.arguments[1]; return (IsSignedInteger(s, SecondArg) && ( (IsEmpty(s) && SecondArg) || (parseInt (s) >= 0) ) ); } function IsInteger(s) { var i; if (IsEmpty(s)) if (IsInteger.arguments.length == 1) return DefaultEmptyOK; else return (IsInteger.arguments[1] == true); for (i = 0; i < s.length; i++) { // Check that current character is number. var c = s.charAt(i); if (!IsDigit(c)) return false; } // All characters are numbers. return true; } function IsSignedInteger(s) { if (IsEmpty(s)) if (IsSignedInteger.arguments.length == 1) return DefaultEmptyOK; else return (IsSignedInteger.arguments[1] == true); else { var startPos = 0; var secondArg = DefaultEmptyOK; if (IsSignedInteger.arguments.length > 1) secondArg = IsSignedInteger.arguments[1]; if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") ) startPos = 1; return (IsInteger(s.substring(startPos, s.length), secondArg)) } } function IsIntegerInRange (s, a, b) { // IsIntegerInRange (STRING s, INTEGER a, INTEGER b [, BOOLEAN emptyOK]) if (IsEmpty(s)) if (IsIntegerInRange.arguments.length == 1) return DefaultEmptyOK; else return (IsIntegerInRange.arguments[1] == true); if (!IsInteger(s, false)) return false; var num = parseFloat (s); return ((num >= a) && (num <= b)); } function IsEmpty(s) { return ((s == null) || (s.length == 0)) } function IsDigit(c) { return ((c >= "0") && (c <= "9")) } function IsFilledIn(Field, Message) { // Checks if something is filled in for normal fields... if (!Field) alert("ERROR: "+Message); var RetVal = true; if (Field.value == null || Field.value == "") { RetVal = false; alert(Message); Field.focus(); } return RetVal; } function IsFilledInSelect(Field, Message) { // Checks if something is filled in for dropdown lists... var RetVal = true; //ChkVal = Field.options[Field.selectedIndex].value; ChkVal = Field.selectedIndex; if (ChkVal == 0 || ChkVal == "") { RetVal = false; alert(Message); Field.focus(); } return RetVal; } function CheckValidDomainName(Field, Message) { // Checks the name is a valid secondlevel domainname (don't include TLD!)... ChkVal = Field.value; var RetVal = true; var i; for (i = 0; i < ChkVal.length; i++) { var c = ChkVal.charAt(i); if (!IsAlpha(c) && !IsNumeric(c) && c!='-') { RetVal = false; alert(Message); Field.focus(); } } return RetVal; } function CheckRange(args) { // Args: FormField, Min, Max, Message, [Step] var RetVal = true; var Message = arguments[3]; var Field = arguments[0]; var Min = arguments[1]; var Max = arguments[2]; var Step = 0; var ErrorCount = 0; FieldVal = Field.value; if (FieldVal < Min || FieldVal > Max) { RetVal = false; Field.focus(); ErrorCount += 1; } if (arguments.length > 4) { Step = parseFloat(arguments[4]); if (Step != 0) { // De conditional (waarde - min) % stapgrootte levert problemen, // omdat bijvoorbeeld 1200 - 0.01 zeer vreemde waarden geeft. // Daarom wordt de onderstaande while loop uitgevoerd var TempMin = Min; var TempStep = Step; var TempVal = FieldVal; while (TempVal % 1 != 0 || TempMin % 1 != 0 || TempStep % 1 != 0) { TempVal *= 10; TempMin *= 10; TempStep *=10; } if (!((TempVal - TempMin) % TempStep == 0)) { //alert('(FieldVal - Min) % Step = ' + parseFloat((TempVal - TempMin) % TempStep)); RetVal = false; ErrorCount += 2; } } } if (ErrorCount == 1) { alert(Message + "\nDe waarde " + FieldVal + " valt niet tussen het toegestane minimum van " + Min + " en het toegestane maximum van " + Max + "."); } if(ErrorCount == 2) { alert(Message + "\nDe waarde " + FieldVal + " moet gelijk zijn aan " + Min + " plus een veelvoud van de waarde " + Step + "."); } if(ErrorCount == 3) { alert(Message + "\nDe waarde " + FieldVal + " valt niet tussen het toegestane minimum van " + Min + " en het toegestane maximum van " + Max + ".\n" + "Daarnaast moet de waarde gelijk zijn aan " + Min + " plus een veelvoud van " + Step + "."); } return RetVal; } function CheckPercentage(ChkField, MustBeFilledIn, FieldDescription) { var CheckVal = ChkField.value; var RetVal = true; if (CheckVal == null || CheckVal == "") { if (MustBeFilledIn == true) RetVal = IsFilledIn(ChkField, "Het veld " + FieldDescription.toLowerCase() + " is verplicht."); } else { if (CheckNummeriek(ChkField, MustBeFilledIn, FieldDescription)) { if (parseInt(CheckVal) < 0 || parseInt(CheckVal) > 100) { RetVal = false; alert("Percentage moet tussen de 0% en 100% liggen!"); ChkField.focus(); } else { RetVal = true; } } } return RetVal; } function IsFilledInDouble(ChkField, MustBeFilledIn, FieldName) { if (ChkField.value==null || ChkField.value=="") { if (MustBeFilledIn == true) RetVal = IsFilledIn(ChkField, "Het veld " + FieldName.toLowerCase() + " is verplicht."); } else { // First do some formatting, any comma's are replaced by points... var CheckVal = ChkField.value.replace(/\,/gi,'.'); var FloatCheck = ".0123456789"; for (i = 0; i < CheckVal.length; i++) { ch = CheckVal.charAt(i); for (j = 0; j < FloatCheck.length; j++) if (ch == FloatCheck.charAt(j)) break; if (j == FloatCheck.length) { alert("Gebruik slechts eenmaal een punt of komma, en alleen getallen voor gebroken getallen invoer..."); ChkField.focus(); return false; } } Parts = CheckVal.split('.'); if (Parts.length > 2) { alert("Gebroken getal niet duidelijk (slechts eenmaal een punt of komma toegestaan)..."); ChkField.focus(); return false; } ChkField.value = parseFloat(CheckVal); } return true; } function CheckNummeriek(ChkField, MustBeFilledIn, FieldDescription) { var CheckVal = ChkField.value; var RetVal = true; var FieldName = ""; if (FieldDescription != null) FieldName = FieldDescription; if (CheckVal==null || CheckVal=="") { if (MustBeFilledIn == true) RetVal = IsFilledIn(ChkField, "Het veld " + FieldName.toLowerCase() + " is verplicht."); } else { if (RetVal == true && isNaN(CheckVal)) { alert(FieldDescription + ": er kunnen alleen cijfers worden ingevoerd"); ChkField.focus(); RetVal = false; } } return RetVal; } function CheckValidEmail(ChkField, MustBeFilledIn) { var CheckStr = ""; if (ChkField.value && ChkField.value!="") CheckStr = ChkField.value.toLowerCase(); ChkField.value = CheckStr; var allValid = true; if (CheckStr==null || CheckStr=="") if (MustBeFilledIn == true) return(IsFilledIn(ChkField, "Vult u a.u.b. een e-mail adres in.")) else return true; else { if ((CheckStr.indexOf('@') <= 0) || (CheckStr.length <= 4)) allValid = false; else { var Invalid = "~`!#$%^*()=|\\\"{}[]':;<,>?/" for (i=0; i < CheckStr.length; i++) { var CheckChar = CheckStr.charAt(i); if (Invalid.indexOf(CheckChar) != -1) { allValid = false; break; } } } if (!allValid) { alert("Controleer het e-mailadres..."); ChkField.focus(); return false; } return true; } } function CheckPostcode(ChkField, MustBeFilledIn) { var CheckStr = ""; var allValid = true; if (ChkField.value && ChkField.value!="") { CheckStr = ChkField.value.toUpperCase(); CheckStr = CheckStr.replace(/[\s]+/gi,' '); // Strip double spaces... ChkField.value = CheckStr; } if (CheckStr==null || CheckStr=="") if (MustBeFilledIn == true) return(IsFilledIn(ChkField, "Postcode/Zipcode verplicht/required.")) else return true; else { var Valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890-()[]/ "; for (i=0; i < CheckStr.length; i++) { var CheckChar = CheckStr.charAt(i); if (Valid.indexOf(CheckChar) == -1) { allValid = false; break; } } if (!allValid) { alert("Check postcode/zipcode..."); ChkField.focus(); return false; } return true; } } function CheckTelefoonNummer(ChkField, MustBeFilledIn) { var CheckStr = ""; var Parts = 0; var allValid = true; if (ChkField.value && ChkField.value!="") CheckStr = ChkField.value.replace(/[\s]+/gi,' '); ChkField.value = CheckStr; if (CheckStr==null || CheckStr=="") { if (MustBeFilledIn == true) return (IsFilledIn(ChkField, "Telefoonnummer/Phone number verplicht/required .")) else return true; } else { var Valid = "01234567890+-() "; for (i=0; i < CheckStr.length; i++) { var CheckChar = CheckStr.charAt(i); if (Valid.indexOf(CheckChar) == -1) { allValid = false; break; } } if (!allValid) { alert("Check telefoonnummer/phone number..."); ChkField.focus(); return false; } return true; } } function CheckHexColor(ChkField) { if (ChkField.value && ChkField.value!="") { var checkStr = ChkField.value.toUpperCase(); if (checkStr.charAt(0) != '#') { checkStr = "#" + checkStr; } ChkField.value = checkStr; if (checkStr.length != 7) { alert("Geef een hexcode (bv. #12FFDD) voor de RGB kleurwaarde op..."); ChkField.focus(); return(false); } var HexCheck = "#0123456789ABCDEF"; for (i = 0; i < 7; i++) { ch = checkStr.charAt(i); for (j = 0; j < HexCheck.length; j++) if (ch == HexCheck.charAt(j)) break; if (j == HexCheck.length) { alert("Hex: Geef een hexcode (bv. #12FFDD) voor de RGB kleurwaarde op..."); ChkField.focus(); return(false); } } } return (true); } function CheckBankGiro(ChkField, MustBeFilledIn) { // Check if number is a valid 7 digit 'Postbank' giro number (optionally prefixed with 'P'), // or more general 13 digit bank-number. Adds 'P' to 7 digit numbers. var text = ChkField.value; if (!text.length) if (MustBeFilledIn == true) return(IsFilledIn(ChkField, "Bank-/Giro-number verplicht/required.")) else return true; text = text.replace(/[^0-9]/gi,''); // Keep only the numbers... if (text.length==7) { // Postbank... ChkField.value = 'P'+text; return(true); } ChkField.value = text; // Do the 11-test... if (text.length!=9) { alert("Check Giro-/Banknummer..."); ChkField.focus(); return(false); } Sum=0; Factor=9; for (i=0; i<9; i++) { Digit = parseInt(text.substring(i,i+1)); Sum += parseInt(Factor*Digit); Factor = Factor-1; } if ((Sum%11)==0) return(true); alert("Check Giro-/Banknummer..."); ChkField.focus(); return(false); }