var g_defaultText = 'type your text here';
var g_maxTexts = 5;
var g_processing = false;
var g_blink = 4;
var g_blinkTimeout = null;
var g_blinkDelayMS = 500;

function init() {
    for (var i = 1; i <= g_maxTexts; i++) {
        var elmText = document.getElementById('bubble' + i);
        if (elmText) {
            elmText.value = g_defaultText;
        }
        else {
            break;
        }
    }
    g_blinkTimeout = setTimeout(changeTextColor, g_blinkDelayMS);
}

function hasChanged() {
    var hasIt = false;
    for (var i = 1; i <= g_maxTexts; i++) {
        var elmText = document.getElementById('bubble' + i);
        if (elmText) {
            if (elmText.value != '' && elmText.value != g_defaultText) {
                hasIt = true;
                break;
            }
        }
        else {
            break;
        }
    }
    return hasIt;
}

function changeTextColor() {
    for (var i = 1; i <= g_maxTexts; i++) {
        var elmText = document.getElementById('bubble' + i);
        if (elmText) {
            if (g_blink == 4 || g_blink == 2) {
                elmText.style.color = 'rgb(220,0,0)';
            }
            else {
                elmText.style.color = 'rgb(0,0,0)';
            }
        }
        else {
            break;
        }
    }

    if (--g_blink > 0) {
        g_blinkTimeout = setTimeout(changeTextColor, g_blinkDelayMS);
    }
}

function checkFocus(elm) {
    if (elm.value == g_defaultText) {
        elm.select();
    }
}

function saveImage() {
    if ( hasChanged() ) {
        var url = '/?mode=bubblerImage' + getParams();
        document.location.href = url;
    }
    else {
        var elm = document.getElementById('dialog');
        elm.innerHTML = '<p>Enter something into the speech bubbles first...</p>' +
                '<p><strong><a href="javascript:closeDialog()" class="okLink">&nbsp;OK&nbsp;</a></strong></p>';
        elm.style.display = 'block';
        setTimeout(closeDialog, 3000);
    }
}

function getParams() {
    var url = '';
    var elm = document.getElementById('number');
    url += '&number=' + escape(elm.value);

    for (var i = 1; i <= g_maxTexts; i++) {
        var elmText = document.getElementById('bubble' + i);
        if (elmText) {
            url += '&text' + i + '=' + escape(elmText.value);
        }
        else {
            break;
        }
    }
    return url;
}

function handleKeyDown(e) {
    var keyID = window.event ? event.keyCode : e.keyCode;
    var bubbleEvent = false;
    var returnKey = 13;

    switch (keyID) {
        case returnKey:
            break;

        default:
            bubbleEvent = true;
    }

    return bubbleEvent;
}

function newCover() {
    if ( hasChanged() ) {
        var elm = document.getElementById('dialog');
        elm.innerHTML = '<p>Unsaved changes will be lost. Continue?</p>' +
                '<p><strong><a href="javascript:doNewCover()" class="okLink">&nbsp;OK&nbsp;</a></strong> &nbsp; &nbsp; ' +
                '<a href="javascript:closeDialog()" class="cancelLink">Cancel</a></p>';
        elm.style.display = 'block';
    }
    else {
        doNewCover();
    }
}

function doNewCover() {
    document.location.href = '/bubbler';
}

function closeDialog() {
    var elm = document.getElementById('dialog');
    elm.style.display = 'none';
}

function submitGallery() {
    if (!g_processing) {
        g_processing = true;
    
        var elm = document.getElementById('dialog');
        elm.innerHTML = '<p>Submitting <img src="/image/progress.gif" alt="" /></p>';
        elm.style.display = 'block';

        var url = '/?mode=bubblerSubmit' + getParams();

        if (window.XMLHttpRequest) {
            req = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) {
            req = new ActiveXObject('Microsoft.XMLHTTP');
        }
        req.onreadystatechange = processSubmitGallery;
        req.open('GET', url, true);
        req.send(null);
    }
}

function processSubmitGallery() {
    if (req.readyState == 4 && req.status == 200) {
        var elm = document.getElementById('dialog');
        var status = req.responseText;
        if (status == 'ok') {
            elm.innerHTML = 'OK, submitted!';
            setTimeout(closeDialogSubmit, 1500);
        }
        else {
            elm.innerHTML = 'Ooops... ' + status;
            setTimeout(closeDialogSubmit, 2500);
        }
    }
}

function closeDialogSubmit() {
    closeDialog();
    g_processing = false;
}
