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.length > 0 ? '

' + errors.join('
') + '

' : '')); jQuery("#vfdialog").dialog('open'); return false; } return true; } function field_label(fld) { if (fld.title.length > 0) return fld.title; var labels = document.getElementsByTagName('label'); for(var x = 0; x < labels.length; x++) { if (labels[x].htmlFor == fld.id) return labels[x].innerHTML.replace('*','').trim(); } return fld.name; } function check_mxrecord(email) { if (window.XMLHttpRequest) { xhttp=new XMLHttpRequest(); } else { // Internet Explorer 5/6 xhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.open("GET","/_inc/mxcheck.php?e=" + email,false); xhttp.send(null); this.mxvalid = (xhttp.responseText == 1); return this.mxvalid; }