if (typeof String.prototype.trim == 'undefined') {
    String.prototype.trim = function() {
        var tmp = this.replace(/^\s+/, '');
        return tmp.replace(/\s+$/, '');
    };
}

function validate_form()
{
    var name = document.getElementById('field_name').value.trim();
    var address = document.getElementById('field_address').value.trim();
    var email = document.getElementById('field_email').value.trim();
    var special = document.getElementById('field_special').value.trim();
    var code = document.getElementById('verification_code_value').value.trim();
    var error = new Array();

    if (name == '') {
        error.push('Field "Name" is required');
    }
    if (address == '' && email == '') {
        error.push('It is required to fill in either "Address" or "Email"');
    }
    if (email != '' && window.RegExp) {
        var pattern = '^[\\w\\-\\.]+@(?:[^\\W_](?:[^\\W_]|-){0,61}[^\\W_]\\.)+[a-zA-Z]{2,6}$';
        var re = new RegExp(pattern);
        if (!re.test(email)) {
            error.push('Email is invalid');
        }
    }
    if (special == '') {
        var i, interestChecked = false; items = getHtmlTagsFor('input', document.getElementById('interest_container'));
        for (i = 0; i < items.length; i++) {
            if (items[i].type.toLowerCase() == 'checkbox' && items[i].checked) {
                interestChecked = true;
                break;
            }
        }
        if (!interestChecked) {
            error.push('It is required to specify at least one "Interest" or fill in "Specialised interests"');
        }
    }
    if (code == '') {
        error.push('Field "Verification code" is required');
    }
    if (error.length) {
        alert(error.join("\n"));
        return false;
    }
    //disable button on successfull validation
    /*var objButton = document.getElementById('send_button');
    objButton.disabled = true;
    objButton.style.color = '#c0c0c0';*/
    return true;
}

function getHtmlTagsFor(htmlTag, item)
{
	if (typeof item.getElementsByTagName != 'undefined') {
		return item.getElementsByTagName(htmlTag);
	}
    return new Array();
}