// ==UserScript==
// @name           dA Journal Draft
// @namespace      http://20after4.deviantart.com
// @description    "Save Draft" feature for deviantART.com Journal Editor
// @include        http://*.deviantart.com/journal/?edit*
// @include        http://my.deviantart.com/journal/edit/*
// @include        http://*.deviantart.com/journal/*/?edit
// ==/UserScript==

with (unsafeWindow) {
    if (typeof (localStorage) === 'undefined') {
        //localStorage is a new feature in firefox 3.5
        // documentation: https://developer.mozilla.org/en/DOM/Storage#localStorage
        // This is for firefox 3.0 compatibility:
        var localStorage = globalStorage[location.hostname];
    }
    JournalEditor.initDraftMode = function() {
        var draftModeHTML = '<a class="gmbutton2" id="saveDraftButton" href="#" onclick="return JournalEditor.saveDraft()"><span class="text">Save Draft</span><b></b></a>';
        draftModeHTML += '<a class="gmbutton2" href="#" onclick="return JournalEditor.loadDraft()">Load Draft<b></b></a>';
        draftModeHTML += "<label for='journal_autosavedraft' title='Auto-save every 30 seconds'><input type='checkbox' onclick='JournalEditor.saveDraftSettings()' id='journal_autosavedraft' value='1'> Auto Save Draft</label>";
        $j('#journalBodyButtons').prepend(draftModeHTML);
        JournalEditor.$autosaveBox = $j('#journal_autosavedraft');
        if (localStorage.journal_draft_autosave=='true') {
            JournalEditor.$autosaveBox[0].checked=true;
        }
        setInterval(function() {
            if (JournalEditor.$autosaveBox.is(':checked')) {
                JournalEditor.saveDraft();
            } else {
                localStorage.journal_draft_autosave = false;
            }
        }, 30000);
    }
    JournalEditor.loadDraft = function() {
        if (localStorage  && localStorage.journal_draft) {
            $j('#journal_body').val(localStorage.journal_draft);
        }
        return false;
    }
    JournalEditor.saveDraft = function() {
        $j("#saveDraftButton .text").html("Saving ...");
        if (window.event) { window.event.cancelBubble = true; }
        localStorage.journal_draft = $j('#journal_body').val();
        setTimeout(function() {
            $j("#saveDraftButton .text").html("Save Draft");
        },1000);

        JournalEditor.saveDraftSettings();

        return false;
    }

    JournalEditor.saveDraftSettings = function() {
        if (JournalEditor.$autosaveBox.is(':checked')) {
            localStorage.journal_draft_autosave = true;
        } else {
            localStorage.journal_draft_autosave = false;

        }
    }

    $j(function(){
        JournalEditor.initDraftMode();
    });

}

