В обработчике событий onchange вам не нужен бит javascript, вы можете вызывать функцию напрямую, вам нужно только сделать это, если вы вызываете функцию с помощью href. Вы также не можете передавать параметры так, как вы это делаете в тайм-ауте.
Возможно, стоит вызвать тайм-аут в функции, а не при вызове события.
В любом случае вы можете вызвать функцию в тайм-ауте аномально, например;
setTimeout(function(){youfunction here with parameters}, 0);
Также я бы переместил все вещи, которые происходят в других событиях, щелкающих и т. Д., В их собственные функции. Если вы перенесете все эти вещи в функции, возможно, во внешний js-файл, вы сможете больше отслеживать происходящее, поскольку это будет понятнее. Также используйте Firebug для отладки, если вы еще этого не сделали. Если вам нужно получить сгенерированные переменные со страницы, то просто примерно с переменными на странице и вызывайте их из js.
В jquery можно быть слишком конкретным и обходить дом, чтобы найти материал, а не ссылаться на него явно, он не только упрощает код, но и делает его более универсальным, а следовательно, более пригодным для повторного использования.