var ajax = {
    timeout: 10000,
    _timer: '',
    styleSuccess: 'messageBoxGreen',
    styleFailure: 'messageBoxRed',

    get: function(url, successCallback, failureCallback) {
        if (!successCallback) {
            successCallback = ajax.successCallback;
        }
        if (!failureCallback) {
            failureCallback = ajax.failureCallback;
        }
        ajax.hideMessage();
       	ajax.displayBar();
        new Ajax.Request(url,
            {
                method      :   'get',

                onSuccess   :   function(transport) {
                    ajax.hideBar();
                    successCallback(transport.responseText, transport.status);
                },
                onFailure   :   function(transport) {
                    ajax.hideBar();
                    failureCallback(transport.responseText, transport.status);
                }
            }
        );
    },
    post: function(url, parameters, successCallback, failureCallback) {
        if (!successCallback) {
            successCallback = ajax.successCallback;
        }
        if (!failureCallback) {
            failureCallback = ajax.failureCallback;
        }
        ajax.hideMessage();
       	ajax.displayBar();
        new Ajax.Request(url,
            {
                method      :   'post',
                parameters  :   parameters,
                onSuccess   :   function(transport) {
                    ajax.hideBar();
                    successCallback(transport.responseText, transport.status);
                },
                onFailure   :   function(transport) {
                    ajax.hideBar();
                    failureCallback(transport.responseText, transport.status);
                }
            }
        );
    },
    formSubmit: function(url, formId, successCallback, failureCallback) {
        ajax.post(url, $(formId).serialize(true), successCallback, failureCallback);
    },
    successCallback: function(text, status) {
        ajax.displayMessage(text, true);
    },
    failureCallback: function(text, status) {
        ajax.displayMessage(text, false);
    },
    displayMessage: function(message, success) {
        clearTimeout(ajax._timer);
		if ($('ajaxResultMessage')) {
	        $('ajaxResultMessage').style.display = 'block';
	        $('ajaxResultMessage').className = success ? ajax.styleSuccess : ajax.styleFailure;
	        $('ajaxResultMessage').innerHTML = message;
	    }
        ajax._timer = setTimeout('ajax.hideMessage()', ajax.timeout);
    },
    hideMessage: function() {
		if ($('ajaxResultMessage')) {
            $('ajaxResultMessage').setStyle({display: 'none'});
        }
        if ($('flashMessages')) {
            $('flashMessages').setStyle({display: 'none'});
        }
    },
    displayPopUpMessage: function(topLine, bottomLine) {
        if ($('ajaxResultPopUpMessage')) {
            $('ajaxResultPopUpMessage').setStyle({display: 'block'});
            $('popUpMessageTopLine').innerHTML = topLine;
            $('popUpMessageBottomLine').innerHTML = bottomLine ? bottomLine : ' ';
			initAd();
        }
    },
    displayBar: function() {
        if ($('ajaxBar')) {
            $('ajaxBar').setStyle({display: 'block'});
        }
    },
    hideBar: function() {
        if ($('ajaxBar')) {
            $('ajaxBar').setStyle({display: 'none'});
        }
    }
}