[eluser]jedd[/eluser]
[quote author="alboyd" date="1250624923"]I realise this is an old thread - but I don't see how resurrecting this one would be so bad![/quote]
Resurrecting old threads is bad for a number of reasons - not least is that it bothers (much like this post will) a bunch of people who probably don't loiter around here anymore.
Old threads tend to be old because they are resolved - so they're a little quanta of knowledge tucked away. If you have the same question, and it wasn't answered in the thread, then start a new thread. If you have a slightly different question, then start a new thread.
As to your problem ...
One thing that new programmers often have a hard time getting their head around is the idea of throwing code away. Actually, old programmers do too. It's a tough call, but sometimes you need to re-design. Not so easy if you're on a tight schedule, and it's your day job, of course.
It sounds like you might benefit from a few simple changes:
Put your views into sub-directories (based on controller they're called from).
Use an IDE that lets you fold code down - so you're only looking through code you're actively working on
Use an IDE that lets you browse based on function name, rather than just showing the raw code alone - this makes it much faster to move around
Start using phpdoc (or similar) to regularly document your own project, and have that in a browser right next to your application browser - so you can quickly identify functions you need, identify duplicates that you can remove, or places that you can replace several functions with one that's a bit more generic
Consider moving your common functions to a library, or a series of libraries, and/or a series of helpers - rather than loading up a BaseController. I use a MY_Controller extension, but it's very lightweight (a couple of hundred lines - mostly instantiating a number of menu arrays - low code complexity).
Move away from the one-model-per-table approach - or at least contemplate what would happen if you did this. You may be able to implement some private (_xyz) model functions that could abstract out some common tasks with your models, thereby reducing their complexity. Also look at MY_Model extension - I've found that a handful of functions in there reduces the repetitive nature of a lot of my DB queries in all my other methods.
1500 lines for a controller isn't bad, per se. A recent pseudo poll around here (relatively easy message to find because the thread subject wasn't hijacked by a subsequent thread!
suggested most people aim for 600-800 lines for a controller. But a lot depends on the complexity of the code, the basic design decisions inherent in that construct, the comment:code ratio, and so on.
If you want some pointers, you can post code. Something this size might be best posted up on a public site - eg. github - as it's easier to use than a bunch of posted messages in a forum.
You'll have to get some pointers from others wrt AJAX .. I'm a JS noob.