Когда вы объявляете "sayHello" (кто-нибудь помнит ту песню Шарлотты Черч? Черт возьми ...) внутри функции "ready", она является локальной для этой функции. Вы можете сделать его глобальным, если хотите, выполнив следующее:
window['sayHello'] = function sayHello(what) {
alert(what);
};
(Приятно дать функции «локальное» имя & ndash; имя после ключевого слова «function» & mdash; потому что тогда функция не будет отображаться как «анонимная» в Firebug.)
Я бы посоветовал вам исследовать превращение вашей глобальной функции в плагин jQuery или, по крайней мере, в «глобальный» jQuery, поместив его в объект jQuery вместо «окна».