/**
 * 時間がたつと徐々に消えていくメッセージウィンドウを実現する javascript
 */

ReactiveMsgWindow = {
    intervalId: null,

    initialize: function() {
        if (document.getElementById('reactiveMsgDiv') == null) {
            var div = document.createElement('div');
            div.id = 'reactiveMsgDiv';
            document.body.appendChild(div);
            div.style.display = "none";
            div.innerHTML = '';
        }
        if (ReactiveMsgWindow.intervalId == null) {
            ReactiveMsgWindow.intervalId = window.setInterval(ReactiveMsgWindow.shrinkHeight, 3000);
        }
    },

    add: function(msg, className) {
        ReactiveMsgWindow.initialize();
        var reactiveMsgDiv = document.getElementById('reactiveMsgDiv');
	var newMessageDiv = document.createElement('div');
	newMessageDiv.className = className || '';
	newMessageDiv.innerHTML = msg;
	reactiveMsgDiv.appendChild(newMessageDiv);
        reactiveMsgDiv.style.display = "block";
    },

    addError: function(msg) {
	ReactiveMsgWindow.add(msg, 'reactiveMsgError');
    },

    addMessage: function(msg) {
	ReactiveMsgWindow.add(msg, 'reactiveMsgMessage');
    },

    addSuccessMessage: function(msg) {
	ReactiveMsgWindow.add(msg, 'reactiveMsgSuccessMessage');
    },

    shrinkHeight: function() {
        ReactiveMsgWindow.initialize();
        var reactiveMsgDiv = document.getElementById('reactiveMsgDiv');
        reactiveMsgDiv.removeChild(reactiveMsgDiv.firstChild);
        if (! reactiveMsgDiv.hasChildNodes()) {
            reactiveMsgDiv.style.display = "none";
            window.clearInterval(ReactiveMsgWindow.intervalId);
            ReactiveMsgWindow.intervalId = null;
        }
    }
};

