A word that is often used to refer to racists, sexists, etc. But really just means anyone shallow, selfish, spiteful, unforgiving, and who generally has their head up their ass. Racists and homophobes are not necessarily "hateful". The word you're looking for is "bigot".