/**
 * Obiekt uruchamia sktypty wprowadzone metodami
 * addScript w postaci tekstu oraz addSource w postaci linku do scryptu.
 * Po otrzymaniu sygnału, że wszystkie skrypty zostały wskazane obiekt
 * czeka na odczyt wszystkich linków i następnie wykonuje wszystkie skrypty
 * w kolejnoiści wskazania
 *
 * @version 1.00
 */
function LoadAndRun() {

//    var instance = this;
    this.scripts = new Array();
    this.toAddCount = 0;
    this.addedCount = 0;
    this.ready = false;
    this.allRun = false;

}

/**
 * Dodaje script do listy  wykoania
 */
LoadAndRun.prototype.addScript = function(script) {
    this.toAddCount++;
    this.scripts[this.scripts.length] = script;
    this.addedCount++;
}


/**
 * Dodaje link ze sktyptem do ściągnięcia i wykonania
 */
LoadAndRun.prototype.addSource = function(source) {

    var instance = this;
    var loader = new DestSender();

    loader.listener = function(responseScript, xml, sender) {

        instance.scripts[sender.restore('numer')] = responseScript;
        instance.addedCount++;

        /* sprawdzenie, czy wszystkie dodane i wszystkie załadowane,
         * jeśli tak to wykonanie
         */
        if (instance.ready && (instance.toAddCount == instance.addedCount))
            instance.run();

        return false;
    }

    /* rezerwacja miejsca w celu zachowania kolejności */
    this.toAddCount++;
    loader.save('numer', this.scripts.length);
    this.scripts[this.scripts.length] = '';

    loader.send(source);
}


/**
 * Zwraca załadowany skrypt
 */
LoadAndRun.prototype.getScriptsArray = function() {
    if (this.ready) return this.scripts;
    else {
        alert('Nie wszystkie sktypty załadowane');
        return null;
    }
}


LoadAndRun.prototype.run = function() {
    this.allRun = this.loader();
}

/**
 * Funkcja, którą nalezy nadpisać i służy do wykonania
 * czegoś z załadowanymi sktyptami. Powina zwrócić wartość true
 * jeśli wszystko jest wykonane, lub fale w przeciwnym wypadku
 */
LoadAndRun.prototype.loader = function() {
    return false;
}


LoadAndRun.prototype.itsAll = function() {
    this.ready = true;

    /* sprawdzenie, czy wszystkie załadowane,
     * jeśli tak to wykonanie
     */
    if (this.toAddCount == this.addedCount) this.run();
}

