Djokovic is without doubt the second best clay court player behind Nadal. and is probably the best hard court player around today... He's also the most consistent player around. Look how many atp tour events he wins and he has won the last two atp tour finals...Federer is the best on grass no argument there,. and I've already said he's the greatest player of all time but how many slams did he win before Nadal and Djokovic became good.
In recent years Nadal has had the better of Federer because his forehand against Federers backhand is no match.