18 dead as battle in Afghan city rages on