// ==UserScript==
// @name        Kleine Verbesserungen für bronies.de
// @namespace   Gallery
// @description Ganzer Spoiler-Header anklickbar und neue Beiträge werden hervorgehoben.
// @include     *bronies.de*
// @version     1
// @author      Rapti
// ==/UserScript==
if ($(".spoiler_header").length > 0) {
    $(".spoiler_header > .spoiler_link").hide();
    $(".spoiler_header").click(function (e) {
        if($(e.target).is(".spoiler_link_all")) return;
        $(this).children(".spoiler_link")[0].onclick();
    });
}
$(".thread_status").each(function (i, e) {
    e = $(e);
    e.parent().parent().addClass(e.attr("class")).removeClass("thread_status");
});
/*$('img[src$="folder.gif"]').each(function (i, e) {
    e = $(e);
    e.parent().parent().addClass(e.attr("class")).removeClass("thread_status");
});*/
$('.post_body span[style*="font-size"]').each(function(i, e) {
    var size = $(e).attr("style").replace(/font-size: ?/, "");
    if(!size.contains("large")) {
       if(size.replace(/\D/g, "") < 10) $(e).addClass("smallFont");
       if(size.replace(/\D/g, "") < 2) $(e).css("fontSize", "2pt");
    }
});
$("head").append("");
$('img[src^="http://www.sloganizer.net"]').each(function(i, e) {
    e = $(e);
    e.attr("src", e.attr("src").replace("weiss,schwarz", "schwarz,weiss"));
});
$(function () {
    var form = $("#quick_reply_form");
    if (form.length > 0) {
        var queued = false;
        var post_interval = 60;
        $("#quick_reply_submit").wrap("");
        form.prepend("
");
        var bar = $("#timeRemaining");
        bar.css({
            height: 3,
            width: (100 - (Date.now() - localStorage.lastpost) / (post_interval * 10)) + "%",
            position: "absolute",
            top: 0,
            left: 0,
        });
        var num = 3;
        for (var i = 0; i < num; i++)
            bar.prepend("");
        var segments = $(".barSegment");
        var transition = 1000;
        var style = $("");
        style.append("#quick_reply_form:before {display: none !important;}");
        style.append("#smoothEnd {"); //Damit die Leiste beim Countdown weniger ruckelt
        style.append("  opacity: 0;");
        style.append("  position: absolute;");
        style.append("  top: 0px;");
        style.append("  right: -1px;");
        style.append("  width: 1px;");
        style.append("  height: 100%;");
        style.append("} .barSegment {");
        style.append("  width: 0;");
        style.append("  margin: 0 " + (100 / (2*num)) + "%;");
        style.append("  height: 100%;");
        style.append("  display: inline-block;");
        style.append("  transition: " + (transition/2) + "ms;");
        style.append("  position: relative;");
        style.append("} #timeRemaining.showing .barSegment {");
        style.append("  transition: all "+(transition / 2)+"ms;");
        style.append("  margin: 0;");
        style.append("  width: " + (100 / num) + "%;");
        style.append('} #quickreply_spinner[style*="display: block;"] ~ #quick_reply_form .barSegment {');
        style.append("  width: " + (100 / (2 * num)) + "%;");
        style.append("  margin: 0 " + (50 / (2 * num)) + "%;");
        style.append('} #timeRemaining:not(.showing, #quickreply_spinner[style*="display: block;"] ~ #quick_reply_form > #timeRemaining), .barSegment:not(.showing > .barSegment, #quickreply_spinner[style*="display: block;"] ~ #quick_reply_form > #timeRemaining > .barSegment) {');
        style.append('  transition-duration: 0ms;');
        style.append('} #timeRemaining:not(.showing) {');
        style.append("  transition: width " + transition + "ms ease 0s;");
        style.append("  width: " + (100 + 100 / (num - 1)) + "% !important;");
        style.append('} #quickreply_spinner[style*="display: block;"] ~ #quick_reply_form > #timeRemaining {');
        style.append("  animation: loading 1s linear infinite;");
        style.append("  width: "+(100 + 100 / (num-1))+"% !important;");
        style.append("} @keyframes loading {");
        style.append("  from {left: -"+(100/(num-1))+"%;}");
        style.append("  to {left: 0%;}");
        style.append("  ");
        style.append("}");
        $("head").append(style);
        //$("#quickreply_spinner").css("display", "block"); return;
        true && setInterval(function () {
            if (difference = localStorage.lastpost && Date.now() - localStorage.lastpost) {
                if (difference < post_interval * 1000) {
                    var width = 100 - difference / (post_interval * 10);
                    width -= (width - bar.width() * 100 / bar.parent().width()) * 0.5;
                    bar.addClass("showing").css("width", width + "%");
                    $("#smoothEnd").css("opacity", (bar.parent().width() * width / 100) % 1);
                    form.find("thead strong").text(queued?
                        "Schnellantwort (wird in " + Math.ceil(post_interval - difference / 1000) + " Sekunden abgesendet)":
                        "Schnellantwort (noch " + Math.ceil(post_interval - difference / 1000) + " Sekunden Wartezeit)");
                } else if (bar.is(".showing")) {
                    bar.css("width", 0);
                    form.find("thead strong").text("Schnellantwort");
                    if (queued) {
                        $("#quick_reply_submit").val("Antwort absenden").click();
                        $("#submitButtonWrapper").removeClass("waiting");
                    }
                    bar.removeClass("showing");
                }
            }
        }, 25);
        $("#quick_reply_submit").unbind().click(function (e) {
            e.stopPropagation();
            if (Thread.quick_replying) {
                return false;
            }
            if (Date.now() - localStorage.lastpost < post_interval * 1000) {
                if (queued) {
                    queued = false;
                    $("#quick_reply_submit").val("Antwort absenden");
                    $("#submitButtonWrapper").removeClass("waiting");
                } else {
                    queued = true;
                    $("#quick_reply_submit").val("Abbrechen");
                    $("#submitButtonWrapper").addClass("waiting");
                }
                return false;
            }
            Thread.quick_replying = 1;
            var post_body = $('#quick_reply_form').serialize();
            // Spinner!
            var qreply_spinner = $('#quickreply_spinner');
            qreply_spinner.show();
            $.ajax({
                url: 'newreply.php?ajax=1',
                type: 'post',
                data: post_body,
                dataType: 'html',
                complete: function (request, status) {
                    Thread.quick_replying = false;
                    queued = false;
                    // Get rid of spinner
                    qreply_spinner.hide();
                    var json = $.parseJSON(request.responseText);
                    if (json.hasOwnProperty("errors")) {
                        if (("" + json.errors).match(/Bitte warte noch/)) {
                            localStorage.lastpost = Date.now() - (post_interval - parseInt(("" + json.errors).match(/\D\d+\D/g))) * 1000;
                            queued = true;
                            $("#quick_reply_submit").val("Abbrechen");
                            $("#submitButtonWrapper").addClass("waiting");
                            return;
                        }
                    } else {
                        bar.css("width", "100%");
                        localStorage.lastpost = Date.now();
                    }
                    Thread.quickReplyDone(request, status);
                },
                error: function(jqXHR, status, error) {
                    Thread.quickReplyDone({responseText: '{"errors":{0:"Unerwarteter Fehler!
Error '+status+': '+error+'}}'});
                    if(status == 408)
                        $("#quick_reply_submit").click();
               }
            });
            return false;
        });
    }
});