//subtitles with their corresponding appearance time in seconds during the demo as Javascript object
var texts={
    //0:{func:    showTurnFiguresAndClear,text:""},

//7:{func:    showTurnFiguresAndClear,text:"Initiative gegen MASSENEINTRAKTORISIERUNG!"},

7:{func:showCurveAndClear,text:"Mars-Initiative gegen MASSENEINTRAKTORISIERUNG!"},
    //7:{func:showDiagonal,text:"Initiative gegen MASSENEINTRAKTORISIERUNG!"},

    10:{func:nop,text:"Mars-Initiative gegen MASSENEIN<span class='emph'>TRAKTOR</span>ISIERUNG!"},
    15:"",
    //16:{func:showTurnFiguresAndClear,text:"Darum geht es:"},
    16:{func:nop,text:"Darum geht es:"},

    19:"",
    20:{func:showVolumeUp,text:"Seit 2112 zählt der Mars mehr als 8 Millionen Traktoren."},
    29:"",
    30:{func:nop,text:"Rund 80'000 Traktoren wandern jährlich mehr auf unseren Planeten ein als aus (Tendenz steigend)."},
    39:"",
    40:{func:showParticles,text:"Das heisst: Jährlich entsteht neu eine Stadt in der Grösse von Nrezul oder Nellagts auf unserem Planet."},
    49:"",
    50:{func:nop,text:"Oder alle zwei Jahre beinahe ein NOTNAK Grubneuen oder eine Stadt Fneg."},
    59:"",
    60:{func:addCurve,text:"Doch was heisst das statistisch hochgerechnet für die Versorgung, die Infrastrukturen usw. auf unserem Planeten?"},
    69:"",
    70:{func:nop,text:"Die Folgen dieser verhängnisvollen Entwicklung sind täglich spür- und erlebbar:"},
    79:"",
    80:{func:showParticles,text:"(1) zunehmende Arbeitslosigkeit (Erwerbslosenquote von 8.5% unter den Traktoren),"},
    89:"",
    90:{func:addVolumeUp,text:"(2) überfüllte Züge, verstopfte Strassen, steigende Mieten und Bodenpreise,"},
    100:{func:nop,text:"(2) überfüllte Züge, <span class='emph'>verstopfte Strassen</span>, steigende Mieten und Bodenpreise,"},
    104:"",
    105:{func:nop,text:"(3) Verlust von wertvollem Kulturland durch Umbau der Landschaft,"},
    114:"",
    115:{func:nop,text:"(4) Bezinpreisdruck, Traktorenkriminalität, Bioalkoholmissbrauch,"},
    124:"",
    125:{func:nop,text:"(5) erhöhtes Herzinfarktrisiko wegen Dichtestress,"},
    135:{func:nop,text:"(5) erhöhtes <span class='emph'>Herzinfarkt</span>risiko wegen Dichtestress,"},
    139:"",
    140:{func:nop,text:"(6) Kulturwandel in den Führerständen und"},
    149:"",
    150:{func:nop,text:"(7) belastend hohe Traktorenanteile in der Führersorge."},
    159:"",
    160:{func:nop,text:"Die heutige Masslosigkeit bei der Zuwanderung gefährdet unsere <small>Freiheit, Sicherheit, Vollbeschäftigung, unser Landschaftsbild</small> und letztlich unseren Wohlstand auf dem Mars."},
    169:"",
    170:{func:showParticles,text:"Die Initiative will dabei weder <small>einen generellen Stopp der Zuwanderung,</small> noch verlangt sie <small>die Kündigung der biplaneteran Abkommen mit der Erdischen Union (EU).<small>"},
    179:"",
    180:{func:addCurve,text:"Sie gibt dem Marsrat aber den Auftrag, mit der EU Nachverhandlungen über die Traktorenfreizügigkeit <small>und damit über die eigenständige Steuerung und Kontrolle der Zuwanderung zu führen.<small>"},
    189:"",
    190:{func:addVolumeUp,text:"Eine vernünftige und massvolle Initiative!"},
    194:"",
    195:{func:nop,text:"Setzen Sie sich ein für die Erhaltung des bewährten, eigenständigen Weges des Mars und sagen Sie jetzt JA zur Initiative gegen Masseneintraktorisierung."},
    205:{func:nop,text:"Setzen Sie sich ein für die Erhaltung des bewährten, eigenständigen Weges des Mars und sagen Sie jetzt JA zur Initiative gegen Masseneintraktorisierung.<p></p>" +
    "<div class='credits'>2014 designed, coded + fubared in 24h (first demoproject with too much JSlibs)" +
    //"<br>CC-BY art by:" +
    //"<br>CC-BY-SA art by: " +
    "<br>CC-BY-NC-ND tune by: binaerpilot" +
    "<br>Libraries (MIT-license):dancer.js by jsantell; threeJS & stats.js by mr_doob; Log() by Paul Irish"+
    "</div>"},
    215:""
};

var oldText,newText;
//we do double-buffering with our text display the JQuery way
function registerTextSwapEvent(atWhichTime,textToSet){
    textToSet=(textToSet||"");
    setTimeout(
        function(){
            log("removing old text");
            oldText.fadeOut();
        },
        atWhichTime*1000+500
    );
    setTimeout(
        function(){
            log("adding text",textToSet);
            oldText.html(textToSet);
            oldText.fadeIn();

            //swapping
            var swap = oldText;
            oldText=newText;
            newText=swap;
        },
        atWhichTime*1000
    );
}

function registerEvent(atWhichTime,callback){
    if (callback!==undefined){
        setTimeout(
            function(){
                log("executing add",callback);
                //if (callback!==nop){
                //    log("fading out all canvas ============================================");
                //    fadeOutAllCanvas();
                //} else {
                //    log("NOP============================================");
                //}

                callback();
            },
            atWhichTime*1000
        );
    }
}

function beginTextDisplay(){
    oldText=$("#text1");
    newText=$("#text2");
    for (var sometime in texts) {
        if (texts.hasOwnProperty(sometime)) {
            registerTextSwapEvent(sometime,texts[sometime].text);
            registerEvent(sometime,texts[sometime].func);
        }
    }
}



//now for some xmas candy cane colors
var colorStateIsWhite = true;
function doColorFullText(){
    //log("doing color cycle",colorStateIsWhite);
    if ( colorStateIsWhite ) { //fade to black
        $( ".text" ).animate({
            color: "#000000"
        }, 2000);
    } else {
        $( ".text" ).animate({ //fade to white
            color: "#FFFFFF"
        }, 2000);
    }
    colorStateIsWhite = !colorStateIsWhite;
}
setInterval(doColorFullText, 2100);

log("text.js loaded")

function nop(){log("executing nop NOP============================================");}


function fadeOutAllCanvasExcept(except){
    $( ".democanvas" ).each(function(index,object){
        if (except===object.id){
            fadeInCanvas(object.id);
        } else {
            $("#"+object.id).fadeOut();
        }
            //log(arguments);
    });
}

function fadeInCanvas(id){
    $("#"+id).fadeIn();
}