var warningTriangle = ""; var validIcon = ""; function findObj(n, d) { //v4.01 var p, i, x; if (!d) { d = document; } if ((p = n.indexOf("?")) > 0 && parent.frames.length) { d = parent.frames[n.substring(p + 1)].document; n = n.substring(0, p); } if (!(x = d[n]) && d.all) { x = d.all[n]; } for (i = 0; !x && i < d.forms.length; i++) { x = d.forms[i][n]; } for (i = 0; !x && d.layers && i < d.layers.length; i++) { x = MM_findObj(n, d.layers[i].document); } if (!x && d.getElementById) { x = d.getElementById(n); } return x; } function validateFieldLength(testField, minLength, errorField) { testElem = findObj(testField); errorElem = findObj(errorField); testFieldVal = testElem.value; if (testFieldVal.length >= minLength) { errorElem.style.display = "none"; valid = true; } else { errorElem.style.display = ""; valid = false; } return valid; } function validatePasswordsMatch(pwdField, pwdConfirmField, errorField, matchText, errText) { pwdElem = findObj(pwdField); pwdConfirmElem = findObj(pwdConfirmField); errorElem = findObj(errorField); pwdVal = pwdElem.value; pwdConfirmVal = pwdConfirmElem.value; if (pwdVal == pwdConfirmVal) { errorElem.style.display = ""; errorElem.style.color = "green"; errorElem.innerHTML = validIcon + " " + matchText; valid = true; } else { errorElem.style.display = ""; errorElem.style.color = "red"; errorElem.innerHTML = warningTriangle + " " + errText; valid = false; } return valid; } function validateEmail(emailField, errText) { emailElem = findObj(emailField); errorElem = findObj(emailField + "_msg"); emailVal = emailElem.value; valid = checkEmailAddress(emailVal); if (!valid) { errorElem.style.display = ""; errorElem.innerHTML = warningTriangle + " " + errText; } else { errorElem.style.display = "none"; } return valid; } function validateEmailPermitEmpty(emailField, errText) { emailElem = findObj(emailField); errorElem = findObj(emailField + "_msg"); emailVal = emailElem.value; valid = checkEmailAddress(emailVal); if ((emailVal.length > 0) && (!valid)) { errorElem.style.display = ""; errorElem.innerHTML = warningTriangle + " " + errText; } else { errorElem.style.display = "none"; } return valid; } function checkEmailAddress(emailAddr) { result = false; // Check 2 or 3 letter domain var len = emailAddr.length; var pos = emailAddr.lastIndexOf ( '.', len - 1 ) + 1; if ( ( len - pos ) == 2 || ( len - pos )== 3 ) { // Check for @ character in correct place p = emailAddr.indexOf("@"); if (p >= 1 && p < (emailAddr.length - 4)) { result = true; } } return result; } function validatePostCodeField(postcodeField, errorMsg) { postcodeElem = findObj(postcodeField); errorElem = findObj(postcodeField + "_msg"); postcodeVal = postcodeElem.value; valid = true; var white_label = ''; //get white_label from hidden value in the form white_label = $(':input[name=white_label]').val(); if (white_label != 'de') { valid = checkPostCode(postcodeVal); } else { valid = true; } if (!valid) { errorElem.style.display = ""; errorElem.innerHTML = warningTriangle + " " + errorMsg; } else { errorElem.style.display = "none"; } return valid; } function checkName(name) { var valid = false; // trim the whitespaces and check the // length of the name name = name.replace(/(^\s+|\s+$)/g,""); var regpattern = new RegExp("[;!\$%\*\^\{\}\(\)\<\>#]"); if ((regpattern.test(name)) || (name.length < 2)) { valid = false; } else { valid = true; } return valid; } function checkPostCode(postcode) { //get white_label from hidden value in the form white_label = $(':input[name=white_label]').val() if (white_label == 'de') { return true; } var i; var result = true; var clean_postcode = ""; // Check postcode format var len = postcode.length; //First trim and remove spaces var j = 0; for (i = 0; i < len; i++) { if (postcode.charAt(i) != ' ') { clean_postcode+= postcode.charAt(i); j++; } } result = (j >= 5) && (j <= 7); if (result) { //Now we know the length is good and there are no spaces clean_postcode = clean_postcode.toUpperCase(); //Split into the two parts var part_a = clean_postcode.substring(0,j-3); var part_b = clean_postcode.substring(j-3); result = (is_alpha(part_a.charAt(0)) && is_digit(part_b.charAt(0)) && is_alpha(part_b.charAt(1)) && is_alpha(part_b.charAt(2))); //Check for valid characters in certain positions if (result) { var c1 = part_a.charAt(0); result = ( (c1 != 'Q') && (c1 != 'V') && (c1 != 'X') ); if (result) { var c2 = part_a.charAt(1); result = ( (c2 != 'I') && (c2 != 'J') && (c2 != 'Z') ); if (result) { var c3 = part_b.charAt(1); var c4 = part_b.charAt(2); result = ( (c3 != 'C') && (c3 != 'I') && (c3 != 'K') && (c3 != 'M') && (c3 != 'O') && (c3 != 'V') && (c4 != 'C') && (c4 != 'I') && (c4 != 'K') && (c4 != 'M') && (c4 != 'O') && (c4 != 'V') ); //Now check format of first part //Permitted formats are: // AN NAA // ANN NAA // AAN NAA // AANN NAA // ANA NAA // AANA NAA // Already checked first character and last part so just look at 2nd char onward of first part if (result) { var part_a_format = "A"; var z; for (z = 1; z < part_a.length; z++) { if (is_digit(part_a.charAt(z))) { part_a_format += "N"; } else if (is_alpha(part_a.charAt(z))) { part_a_format += "A"; } else { part_a_format += "X"; } } result = ( (part_a_format == "AN") || (part_a_format == "ANN") || (part_a_format == "AAN") || (part_a_format == "AANN") || (part_a_format == "ANA") || (part_a_format == "AANA") ); } } } } } return result; } function is_digit(c) { return ( (c >= '0') && (c <= '9')); } function is_alpha(c) { return ( (c >= 'A') && (c <= 'Z')); } function ___validateForm() { document.MM_returnValue = true; } function validateForm() { var i, p, q, nm, test, num, min, max, val, validPostCode, validEmail, error_elem, errors = "", args = validateForm.arguments; for (i = 0; i < (args.length - 2); i += 3) { test = args[i + 2]; val = findObj(args[i]); error_elem = findObj(args[i] + "_msg"); error_elem.style.display = "none"; if (val) { nm = val.name; if ((val = val.value) !== "") { if (test.indexOf("DOB") != -1) { if (val >= 2008) { errors += "Date of birth is required.\n"; error_elem.style.display = ""; } } else if (test.indexOf("isOptEmail") != -1) { validEmail = checkEmailAddress(val); if (!validEmail) { errors += "- " + nm + " must contain an e-mail address.\n"; } } else if (test.indexOf("isPostCode") != -1) { validPostCode = checkPostCode(val); if (!validPostCode) { errors += "- " + nm + " invalid post code.\n"; error_elem.style.display = ""; } } else if (test.indexOf("isEmail") != -1) { validEmail = checkEmailAddress(val); if (!validEmail) { errors += "- " + nm + " must contain an e-mail address.\n"; } } else if (test.indexOf("isName") != -1) { q = val.indexOf("."); validName = checkName(val); if ((!validName) || (q != -1)) { errors += "- " + nm + " must be a full name.\n"; error_elem.style.display = ""; } } else { if (test != "R") { num = parseFloat(val); if (isNaN(val)) { errors += "- " + nm + " must contain a number.\n"; } if (test.indexOf("inRange") != -1) { p = test.indexOf(":"); min = test.substring(8, p); max = test.substring(p + 1); if (num < min || max < num) { errors += "- " + nm + " must contain a number between " + min + " and " + max + ".\n"; } } } } } else { if (test.charAt(0) == "R") { errors += "- " + nm + " is required.\n"; error_elem.style.display = ""; } } } } document.MM_returnValue = (errors === ""); }