var Emperor = {};


Emperor.rows = [];
Emperor.delta = 1300;
Emperor.wrapper = {};
Emperor.counter = 0;
Emperor.pauseAt = 1;
Emperor.z = 10;
Emperor.wrapperZ = 1;
Emperor.topOffset = 40;

Emperor.init = function() {
    var winW = Util.getWindowWidth();
    var winH = Util.getWindowHeight();
    var w = 100;
    var h = 47;

    var body = Util.getBody();

    Emperor.wrapper = document.createElement("div");
    Emperor.wrapper.style.width = "100%";//winW + "px";
    Emperor.wrapper.style.height = winH + "px";
    Emperor.wrapper.style.position = "absolute";
    Emperor.wrapper.style.top = "0";
    Emperor.wrapper.style.left = "0";
    Emperor.wrapper.style.zIndex = Emperor.wrapperZ;
    Emperor.wrapper.style.overflow = "hidden";
    body.appendChild(Emperor.wrapper);

    var numX = Math.ceil(winW / w);
    var numY = Math.ceil(winH / h);

    for (var i = 0; i < numY - 2; i++) {
        var row = new Emperor.Row();
        for (var j = 0; j < numX + 6; j++) {
            var p = document.createElement("img");
            p.style.display = "none";
            p.style.position = "absolute";
            p.style.zIndex = Emperor.z;
            p.style.top = (i * h + Emperor.topOffset) + "px";
            p.style.left = (j * w) + "px";
            p.src = "imgs/pinguin_" + (j % 2 == 0 ? "auf" : "ab") + ".png";
            if (j > 9) {
                Emperor.wrapper.appendChild(p);
            }
            else {
                body.appendChild(p);
            }

            row.penguins.push(p);
        }
        Emperor.rows.push(row);
    }
    Emperor.start(2000, 1500, Emperor.rows.length < 8 ? parseInt(Math.random(Emperor.rows.length) - 1) : 7);
};


Emperor.start = function(coefficient, offset, rowIndex) {
    if (!rowIndex) rowIndex = parseInt(Math.random() * Emperor.rows.length);
    row = Emperor.rows[rowIndex];
    window.setTimeout(function() {
        row.start();
    }, parseInt(Math.random() * coefficient + offset));
};


// -----------------------------------------------------------------------------

Emperor.Row =  function() {
    this.construct.apply(this, arguments);
};

Emperor.Row.prototype.construct = function() {
    this.penguins = [];
    this.current = -1;
    this.running = false;
};

Emperor.Row.prototype.start = function() {
    if (Emperor.counter == Emperor.pauseAt) {
        //pause
        Emperor.counter = 0;
        Emperor.pauseAt = parseInt(Math.random() * 6 + 1);
        Emperor.start(20000, 5000);
        return;
    }
    Emperor.counter++;
    if (!this.running) {
        this.running = true;
        this.next();
    }
    Emperor.start(6000, 200);
};

Emperor.Row.prototype.next = function() {
    if (this.current != -1) {
        this.penguins[this.current].style.display = "none";
    }
    if (this.current == this.penguins.length - 1) {
        this.running = false;
        this.current = -1;
    }
    else {
        this.current++;
        this.penguins[this.current].style.display = "block";
        var row = this;
        window.setTimeout(function() {
            row.next();
        }, 400);
    }
};
