
// String Class Extensions

String.prototype.ucFirst = function () {
   return this.substr(0,1).toUpperCase() + this.substr(1,this.length);
}

var nameRegex  = new RegExp("[a-zA-Z]+", "i");
var emailRegex = new RegExp("^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$");
var telRegex   = new RegExp("^[+]?[0-9\\s\\(\\)]{7,20}$"); // Using this format +27 44 123 4567

function trim(value) {
    var temp = value;
    var obj = /^(\s*)([\W\w]*)(\b\s*$)/;
    if (obj.test(temp)) { temp = temp.replace(obj, '$2'); }
    var obj = /  /g;
    while (temp.match(obj)) { temp = temp.replace(obj, " "); }
    return temp;
}

function isEmpty(value) {
    var temp = value;
    temp = trim(value);
    if ((value.length == 0) || (value == null)) {
        return true;
    } else {
        return false;
    }
}

function validate_contact_field(field)
{
    with (field) {
        if (field.name) {
            fieldName = field.name.ucFirst();
            switch (field.name) {
                case 'name':
                    field.value = trim(field.value);
                    if (isEmpty(field.value)) {
                        alert('Please enter your ' + fieldName + '.');
                        return false;
                    } else {
                        return true;
                    }
                break;
                case 'email':
                    if (!emailRegex.test(trim(field.value))) {
                        alert('Please enter a valid E-Mail address.');
                        return false;
                    } else {
                        return true;
                    }
                break;
                case 'message':
                    field.value = trim(field.value);
                    if (isEmpty(field.value)) {
                        alert('Please enter a message.');
                        return false;
                    } else {
                        return true;
                    }
                break;
                default:
                    return true;
                break;
            }
        }

    }
}

function validate_contact(form)
{
    for (var i=0, j=form.elements.length; i<j; i++) {
        field = form.elements[i];
        if (form.elements[i].name) {
            if (!validate_contact_field(field)) {
                field.focus();
                return false;
            }
        }
    }
}