'Dear John' knocks 'Avatar' off No.1 perch