Da un primo sguardo mi pare che ci sia un problema di precedenza sull'else if...
il tuo test è: xxx AND yyy OR zzz
http://www.html.it/javascript/corso/js_31.htm
P.S.
nei vari forum si è parlato molto di sniffing,
prova a cercare uno dei tanti che già sono stati realizzati...
Ciao