Александр Nameless08, это избыточно: 2 раза объявлять функцию, когда можно всего лишь передать ей нужный параметр для исполнения. А брать из функции внешнюю переменную хорошо лишь при замыкании. Во всех остальных случаях это чревато загаживанием глобального скопа.
Ну, так это и есть задержка исполнения. Идет основной процесс, потом происходит какое-то событие, соответствующее условию исполнения тяжелой функции, и опа - она по этому условию запускается.
Так это код самой капчи. Просто реализация.
Там смысл ее в том, что сама капча на сервере геренируется, а в клиент уже изображением поступает. Поэтому проверка ее на сервере происходит, после отправки введенного юзером кода. То есть, чтобы ее обойти нужно либо программно прочесть код на изображении, либо воспользоваться каким-нибудь сервисом, где индусы их разгадывают.
Но поля формы валидируются первично на клиенте. Это уже в коде формы реализуется, а не капчи.