// 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);
}