Salve, ho un problema con il controllo dei campi in jscript per un form mail

L'onsubmit del mio form è return test()

la funziona test è

function test() {

if ((trim(document.getElementById("nome").value)=='') || (trim(document.getElementById("cognome").value)==' ') || (trim(document.getElementById("oggetto").value)==' ') || (document.getElementById("privacy").value!='on'))
{

alert("Compila tutti i campi obbligatori");
return false;

} else {

if (validEmail(document.getElementById("email").value )==true) {

return true;


} else {

alert("Indirizzo E-mail non valido!\n (Inserisci un indirizzo nella forma utente@dominio.it)");
return false;

}
}
}

le due funzioni richiamate dentro sono

function trim(stringa)
{
while (stringa.substring(0,1) == ' ') {
stringa = stringa.substring(1, stringa.length);
}
while (stringa.substring(stringa.length-1, stringa.length) == ' ') {
stringa = stringa.substring(0,stringa.length-1);
}
return stringa;
}


function validEmail(email)
{
//controlla che la e-mail non sia vuota
if (email == "")
{
return false;
}

// controllo della presenza del carattere '@'
var index = email.indexOf('@', 0);
var address = "";
var ok = true;

if (index == -1)
{
ok = false;
}
else
{
var size = email.length;
address = email.substring(size + 1, index + 1);
userid = email.substring(1, index);

// controlla: l'unicità del carattere "@";
// - la presenza del "." nella parte DX dell'indirizzo;
// - l'assenza di spazi e
// - che la stringa non sia del tipo userid@.address o userid.@address
if ((address.indexOf('@') != -1) || (userid.indexOf('@') != -1) ||
(address.indexOf('.') == -1) || (!nospace(email)) ||
(email.charAt(index - 1) == '.') || (email.charAt(index + 1) == '.'))
{
ok = false;
}
}
if (ok == false)
{
alert("Indirizzo E-mail non valido!\n (Inserisci un indirizzo nella forma utente@dominio.it)");
return false;
}
else
{
return true;
}
}


Se in test() gli faccio eseguire solo una delle due il conjtrollo funziona, insieme non vanno, cosa devo cambiare?

Grazie per l'aiuto