Javascript: Meilleure façon de déclarer les fonctions à utiliser globalement?

Mon javascript fichier est assez gros (plus de 3000 lignes) et je suis confus quant à la façon de mettre en page mon dossier et delare fonctions afin qu'ils puissent appelé n'importe où dans le fichier.

De résumer mon fichier JS ressemble un peu à ceci en ce moment:

//ALL GLOBAL VARIABLES FIRST DECLARED HERE
var var1 , var2 ,var3

$(document).ready(function(){

//JQUERY STUFF

});

//ALL FUNCTIONS THAT NEED TO BE GLOBAL DECLARED HERE
function myFunction(){
//do some stuff here
}

Je suis en cours d'exécution dans des problèmes avec ce que certaines fonctions que j'appel dans les lieux ne semblent pas être déclarés au moment de l'appel ou ne sont pas disponibles mondialement. C'est très déroutant maintenant!

Quelqu'un pourrait-il suggérer le meilleur moyen à la disposition d'un grand js/jquery fichier avec certaines Fonctions JS, les Objets et les Variables disponibles pour être référencés dans le fichier.

Mise à JOUR:

Afin de simplifier ce correct (voir mes commentaires)?

window.MainModule = (function($, win, doc, undefined) {//WHAT IS BEING PASSED IN HERE?
    var foo, bar, modules; //VARIABLES ACCESSIBLE ANYWHERE

    var modules["foobar"] = (function() {//WHAT IS A MODULE? WHEN WOULD I USE A SEPERATE MODULE?
        var someFunction = function() { ... };//DECLARING MY FUNCTIONS?

        ...

        return { 
            init: someFunction,//IS THIS WHERE I USE/BIND MY FUNCTIONS TO EVENTS AND ELEMENTS?
            ... 
        };
    }());

    //hoist a variable into global scope
    window.Global = someLocal;

    return { 
        init: function() {//FUNCTION TO INIT ALL MODULES?
            for (var key in modules) {
                modules[key].init();
            }
        }
    };
}(jQuery, this, document));

source d'informationauteur wilsonpage