function validate_form ( )
{
	
    valid = true;
	error = "Please complete all mandatory marked fields before submitting\n\n";

    if ( stringEmpty(document.contactform.salutation.value) == false ) {
        error = error + "Please select a title\n";
        valid = false;	
	}
	
	if ( stringEmpty(document.contactform.name.value) == false ) {
        error = error + "Please complete your name\n";
        valid = false;	
	}else{
	    var char = /[0-9]/;
				
		if ( document.contactform.name.value.search(char) != -1 ) {
        	error = error + "Please complete your name using characters only\n";
			valid = false;
		}
	}
	
	if ( stringEmpty(document.contactform.company.value) == false ) {
       	error = error + "Please complete your company name\n";
        valid = false;	
	}

	if ( stringEmpty(document.contactform.email.value) == false ) {
        error = error + "Please enter a valid email address\n";
        valid = false;	
	}else{

		if ( checkValidation (document.contactform.email.value) == false ){
			error = error + "Please enter a valid email address\n";
			valid = false;
		}
	
	}

	if ( stringEmpty(document.contactform.phone.value) == false )  {
        error = error + "Please enter a valid phone number\n";
		valid = false;
	}else{

		var stripspaces = document.contactform.phone.value.split(' ').join('');
		var digit = /^\s*\d+\s*$/;
		
		if ( stripspaces.search(digit) == -1 ) {
        	error = error + "Please enter a valid phone number\n";
			valid = false;
		}
	}


	if ( checkboxTicked(document.contactform) == false ) {
		error = error + "Please indicate which product line(s) you are interested in\n";
		valid = false;
	}
	
	
	if ( !valid ) {
		alert(error);
	}	
    
	return valid;
}

function checkValidation(formInput) {
	 
	 if (noAtSign( formInput )) {
		return false;
    } else if (nothingBeforeAt(formInput)) {
		return false;
    } else if (noLeftBracket(formInput)) {
		return false;
    } else if (noRightBracket(formInput)) {
		return false;
    } else if (noValidPeriod(formInput)) {
		return false;
    } else if (noValidSuffix(formInput)) {
		return false;
    }

    return true;
}

function stringEmpty (formField) {
    // CHECK THAT THE STRING IS NOT EMPTY
    if ( formField.length > 0 ) {
        return ( true );
    } else {
        return ( false );
    }
}

function noAtSign (formField) {
    // CHECK THAT THERE IS AN '@' CHARACTER IN THE STRING
    if (formField.indexOf ('@', 0) == -1) {
        return true;
    } else {
        return false;
    }
}

function nothingBeforeAt (formField) {
    // CHECK THERE IS AT LEAST ONE CHARACTER BEFORE THE '@' CHARACTER
    if ( formField.indexOf ( '@', 0 ) < 1 ) {
        return true ;
    } else {
        return false;
    }
}

function noLeftBracket (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR LEFT BRACKET
    if ( formField.indexOf ( '[', 0 ) == -1 && formField.charAt (formField.length - 1) == ']') {
        return true;
    } else {
        return false;
    }
}

function noRightBracket (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR RIGHT BRACKET
    if (formField.indexOf ( '[', 0 ) > -1 && formField.charAt (formField.length - 1) != ']') {
        return true;
    } else {
        return false;
    }
}

function noValidPeriod (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if (formField.indexOf ( '@', 0 ) > 1 && formField.charAt (formField.length - 1 ) == ']')
        return false;

    // CHECK THAT THERE IS AT LEAST ONE PERIOD IN THE STRING
    if (formField.indexOf ( '.', 0 ) == -1)
        return true;

    return ( false );
}

function noValidSuffix(formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if (formField.indexOf('@', 0) > 1 && formField.charAt(formField.length - 1) == ']') {
        return false;
    }

    // CHECK THAT THERE IS A TWO OR THREE CHARACTER SUFFIX AFTER THE LAST PERIOD
    var len = formField.length;
    var pos = formField.lastIndexOf ( '.', len - 1 ) + 1;
    if ( ( len - pos ) < 2 || ( len - pos ) > 4 ) {
        return true;
    } else {
        return false;
    }
}

function checkboxTicked(form) {
	
	for (i=0; i<form.elements.length; i++) {
		if ( form.elements[i].type == 'checkbox' ) {
			if (form.elements[i].checked) {
				return true;
			}
		}
	}

	return false;
}
