Вроде бы все верно, но валидатор со мной не согласен по половине пунктов. А так задача интересная, хоть и не сложная.