﻿var W3CDOM = (document.createElement && document.getElementsByTagName);
function validate_form(form) {
if (!W3CDOM) return;
errors = new Array();
var errcount = 0;
for (var i in fields) {
if (!form[fields[i]].value && required[fields[i]]) {
errors[fields[i]] = create_errorlist_item('Please fill out the “', '” field.', fields[i]);
errcount++;}
else if (form[fields[i]].value) {
switch (types[fields[i]]) {
case 't':
var errorstate = check_for_text(form[fields[i]].value, fields[i]);
break;
case 'ta':
errorstate = check_for_textarea(form[fields[i]].value, fields[i], limits[fields[i]]);
break;
case 'e':
errorstate = check_for_email(form[fields[i]].value, fields[i]);
break;}
if (errorstate){
errors[fields[i]] = errorstate;
errcount++;}}}
if (errcount > 0){
display_errors(form, errors);
return false;}
else {
return true;}}
function display_errors(form, errors){
if (document.getElementById('errors')){
form.removeChild(form.childNodes[0]);}
errorlist = elem('ul', {'id': 'errors', 'class': 'errors'}, '', '');
for (var msg in errors){
errorlist.appendChild(errors[msg]);}
form.insertBefore(errorlist, form.firstChild);}
function create_errorlist_item(left, right, label){
left = document.createTextNode(left)
right = document.createTextNode(right)
label = elem('label', {'for': label}, '', label);
listitem = elem('li', '', '', '');
listitem.appendChild(left);
listitem.appendChild(label);
listitem.appendChild(right);
return listitem;}
function elem(name, attrs, style, text) {
var e = document.createElement(name);
if (attrs){
for (key in attrs){
if (key == 'class'){
e.className = attrs[key];
} else if (key == 'id'){
e.id = attrs[key];
} else {
e.setAttribute(key, attrs[key]);}}}
if (style) {
for (key in style){
e.style[key] = style[key];}}
if (text) {
e.appendChild(document.createTextNode(text));}
return e;}
function check_for_text(value, name){
if (value.match(/[^ a-zA-Z0-9\[\]\/\':#&;,\?!\(\)_\.-]/)){
return create_errorlist_item('The “', '” field contains characters other than letters and numbers.', name);
} else {
return;}}
function check_for_textarea(value, name, limit){
if (document.getElementById(name).value.length > limit){
return create_errorlist_item('The “', '” field contains ' + document.getElementById(name).value.length + ' characters but the limit is ' + limits[name] + '.', name);
} else if (value.match(/[^ a-zA-Z0-9\[\]\/\'\":#&@;,\?!\(\)_\*\=\r\n\.-]/)) {
return create_errorlist_item('The “', '” field contains characters other than letters, numbers and punctuation symbols.', name);
} else {
return;}}
function check_for_email(value, name){
if (!value.match(/^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$/)) {
return create_errorlist_item('The “', '” field does not contain a valid email address.', name);
} else {
return;}}
