/**
* Alert.
* @constructor
*/
function _alert(type) {
this.on = false;
this.dom_obj = {};
if (type) {
this.type = type
} else {
this.type = 'alert';
}
this.txt_container = {};
this.hide_timer = 2000;
this.callback = function () {
};
this.cancel_callback = function () {
};
this.confirm_callback = function () {
};
this.queue = [];
this.init();
}
_alert.prototype.init = function () {
try {
this.dom_obj = create_block_element('mb_info');
var alert_outer = create_block_element('alert_outer', this.dom_obj);
var alert_container = create_block_element(this.type + '_container', alert_outer);
var table = document.createElement('table');
alert_container.appendChild(table);
var tr = document.createElement('tr');
table.appendChild(tr);
var td = document.createElement('td');
td.setClass('mb_info_lt_head');
tr.appendChild(td);
td = document.createElement('td');
td.setClass('mb_info_top_head');
tr.appendChild(td);
td = document.createElement('td');
td.setClass('mb_info_rt_head');
tr.appendChild(td);
tr = document.createElement('tr');
table.appendChild(tr);
td = document.createElement('td');
td.setClass('mb_info_lb');
tr.appendChild(td);
td = document.createElement('td');
td.setClass('mb_info_main');
tr.appendChild(td);
var icon = create_block_element('ico_' + this.type, td);
this.txt_container = create_inline_element('', td);
td = document.createElement('td');
td.setClass('mb_info_rb');
tr.appendChild(td);
this.hide();
} catch (e) {
_debug(e);
}
};
_alert.prototype.show = function (txt) {
_debug('_alert.show', txt);
window.clearTimeout(this.hide_to);
txt = txt || 'empty';
this.txt_container.innerHTML = txt;
this.dom_obj.show();
this.on = true;
if (this.type == 'alert') {
this.t_hide();
}
};
_alert.prototype.push = function (msg) {
_debug('_alert.push');
this.queue.push(msg);
_debug('this.queue', this.queue);
this.queue_handler();
};
_alert.prototype.queue_handler = function () {
_debug('_alert.queue_handler');
if (this.on) {
return;
}
if (this.queue.length > 0) {
_debug('this.queue before', this.queue);
var msg = this.queue[0];
_debug('msg', msg);
_debug('typeof(msg)', typeof (msg));
if (typeof (msg) == 'function') {
var content = msg.call(window);
_debug('content', content);
this.show(content);
} else if (typeof (msg) == 'string') {
this.show(msg);
} else if (typeof (msg) == 'object') {
if (msg.hasOwnProperty('valid_until') && msg.valid_until && msg.valid_until < (new Date().getTime()) / 1000) {
_debug('remove expired message from the queue');
this.queue.splice(0, 1);
this.queue_handler();
return;
}
if (msg.hasOwnProperty('confirm_callback')) {
this.set_confirm_callback(msg.confirm_callback);
}
if (msg.hasOwnProperty('callback')) {
this.set_callback(msg.callback);
}
if (msg.hasOwnProperty('cancel_callback')) {
this.set_cancel_callback(msg.cancel_callback);
}
if (msg.hasOwnProperty('msg')) {
if (this.type == 'confirm') {
msg.msg += '