I've managed to solve the problem, although this solution is an easy way out (lazy, actually)
As discussed in the above conversation, master pages rename controls to avoid naming confilcts. This means that 'txtDateFrom', when rendered,
will not be called, and cannot be referred to as 'txtDateFrom' Instead, view the HTML source when the page is rendered in your browser and search for your control.
You will notice 'ctl00_ContentPlaceHolder1_txtDateFrom' (in my example)...
So, I simply referenced this name in my javascript code instead of my original txtDateFrom name and ASP.net was happy.