var mxvalid = false;
// Removes leading whitespaces
String.prototype.ltrim = function () {
var re = /\s*((\S+\s*)*)/;
return this.replace(re, "$1");
}
// Removes ending whitespaces
String.prototype.rtrim = function () {
var re = /((\s*\S+)*)\s*/;
return this.replace(re, "$1");
}
// Removes leading and ending whitespaces
String.prototype.trim = function () {
return this.ltrim().rtrim();
}
Array.prototype.inArray = function (k) {
for(var x = 0; x < this.length; x++) { if (this[x] == k) { return true; }}
return false;
}
// requires jquery 1.3.2 and jquery-ui 1.7.2
function validate_form(frm) {
var email_regex = /[a-zA-Z0-9!#$%&\'*+\/\=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?/;
var naphone_regex = /^1?([2-9][0-8][0-9])(?!55501)(?!\d11)([2-9][0-9]{6})\d*$/;
var blacklist_regex = /^.*@(gmail.com|hotmail.com|yahoo.com|yahoo.ca|example.com)$/;
var invalid = Array();
var errors = Array();
var elements = Array();
var radioProcess = Array();
elements = $(':input'); //frm.getElementsByTagName('input textarea select');
//elements[elements.length] = frm.getElementsByTagName('textarea');
//elements[elements.length] = frm.getElementsByTagName('select');
for(var x = 0; x < elements.length; x++) {
var classes = elements[x].className.split(' ');
for(var z = 0; z < classes.length; z++) {
if (elements[x].type == 'radio' && !radioProcess.inArray(elements[x].name) && classes[z] == 'vfreq') {
radioProcess[radioProcess.length] = elements[x].name;
var found = false;
for(var r = 0; r < elements.length; r++) { found = (found ? found : elements[r].type == 'radio' && elements[r].name == elements[x].name && elements[r].checked); if (found) { break; } }
if (!found) {
invalid[invalid.length] = ' • ' + field_label(elements[x]);
}
}
if (elements[x].type != 'radio' && elements[x].value.trim().length == 0 && classes[z] == 'vfreq') // empty string and required
invalid[invalid.length] = ' • ' + field_label(elements[x]);
if (classes[z] == 'vfemail' && elements[x].value.trim().length > 0 && elements[x].value.trim().match(email_regex) == null)
errors[errors.length] = field_label(elements[x]) + ' must be a valid email address.
';
if (classes[z] == 'vfemailbl' && elements[x].value.trim().length > 0 && elements[x].value.trim().match(blacklist_regex) != null)
errors[errors.length] = field_label(elements[x]) + ' is not accepted by our system, please use a different email address.
';
if (classes[z] == 'vfemailmx' && elements[x].value.trim().length > 0 && !check_mxrecord(elements[x].value.trim()))
errors[errors.length] = field_label(elements[x]) + ' cannot be verified with your domain
Please try again.
';
if (classes[z] == 'vfnaphonenum' && elements[x].value.trim().length > 0 && elements[x].value.replace(/[^0-9]/g, '').match(naphone_regex) == null)
errors[errors.length] = field_label(elements[x]) + ' must be a valid north american phone number.
';
}
}
if (invalid.length > 0 || errors.length > 0) {
if (document.getElementById('vfdialog') == null) {
var dialog = document.createElement('div');
dialog.title = 'Form Submission';
dialog.id = 'vfdialog';
dialog.style.display = 'none';
var body = document.getElementsByTagName('body');
body[0].appendChild(dialog);
jQuery("#vfdialog").dialog({
bgiframe: true,
modal: true,
width: 400,
buttons: {
Ok: function() {
jQuery(this).dialog('close');
}
},
resizable: false
});
}
var dialog = document.getElementById('vfdialog');
dialog.innerHTML = ((invalid.length > 0 ? '
The following fields must be filled in:
' + invalid.join('
') + '
' + errors.join('
') + '