veamos
Código PHP:
var pos1, pos2, bOk = true; //varibles cualqueira
var sDir = document.frm.dir.value; //obtienes la direccion de correo
pos1 = sDir.indexOf('@', 0); //tomas la posicion de '@'
pos2 = sDir.indexOf('.', 0); //tomas la posicion del '.'
bOk = bOk && (pos1 > 0); //si BoOk es TRUE y la posicion de @ >0 es decir que haya algo antes del '@' entonces bOk sigue siendo TRUE en caso contraio bOk es False
bOk = bOk && (pos2 != -1); // toma el valor anterior de bOk y valida ahora contra punto i.e. que haya un punto
bOk = bOk && (pos1 < pos2 - 1); //valida el arroba contra el punto i.e. que el punto no este antes que el arroba (auqnue esto esta mal hay direcciones que permiten el punto en el login)
bOk = bOk && (pos2 < sDir.length - 1); //finalmente vlaida que no la direccion de correo no termine con punto
if (!bOk){ // si alguna de las anteriores fue falsa hace lo siguiente
alert("Dirección de correo inválida"); // manda mensaje
document.frm.dir.focus(); //pone el foco en el campo de la direccion
return false; // y esto para que no haga nada