'),
normalizedName = normalizeClassName(name);
classes = classes ? classes + ' ' : '';
classes += settings.classes.globalPrefix + '-' + normalizedName;
classes += ' ' + settings.classes.prefix + '-' + normalizedName;
$newElement.addClass(classes);
return $newElement;
};
this.destroy = function() {
unbindEvents();
elements.widget.remove();
self.trigger('destroy');
return self;
};
this.getElements = function(item) {
return item ? elements[item] : elements;
};
this.getSettings = function(setting) {
var copy = Object.create(settings);
if (setting) {
return copy[setting];
}
return copy;
};
this.hide = function() {
if (! self.isVisible()) {
return;
}
clearTimeout(hideTimeOut);
callEffect('hide', arguments);
unbindEvents();
if (settings.preventScroll) {
self.getElements('body').removeClass(settings.classes.preventScroll);
}
self.trigger('hide');
return self;
};
this.init = function(parent, properties) {
if (!(parent instanceof DialogsManager.Instance)) {
throw 'The ' + self.widgetName + ' must to be initialized from an instance of DialogsManager.Instance';
}
ensureClosureMethods();
self.trigger('init', properties);
initSettings(parent, properties);
initElements();
self.buildWidget();
self.attachEvents();
self.trigger('ready');
return self;
};
this.isVisible = function() {
return elements.widget.is(':visible');
};
this.on = function(eventName, callback) {
if ('object' === typeof eventName) {
$.each(eventName, function(singleEventName) {
self.on(singleEventName, this);
});
return self;
}
var eventNames = eventName.split(' ');
eventNames.forEach(function(singleEventName) {
if (!events[singleEventName]) {
events[singleEventName] = [];
}
events[singleEventName].push(callback);
});
return self;
};
this.off = function(eventName, callback) {
if (! events[ eventName ]) {
return self;
}
if (! callback) {
delete events[eventName];
return self;
}
var callbackIndex = events[eventName].indexOf(callback);
if (-1 !== callbackIndex) {
events[eventName].splice(callbackIndex, 1);
}
return self;
};
this.refreshPosition = function() {
if (! settings.position.enable) {
return;
}
var position = $.extend({}, settings.position);
if (elements[position.of]) {
position.of = elements[position.of];
}
if (! position.of) {
position.of = window;
}
if (settings.iframe) {
fixIframePosition(position);
}
elements[position.element].position(position);
};
this.setID = function(id) {
elements.widget.attr('id', id);
return self;
};
this.setHeaderMessage = function(message) {
self.getElements('header').html(message);
return self;
};
this.setMessage = function(message) {
elements.message.html(message);
return self;
};
this.setSettings = function(key, value) {
if (jQuery.isPlainObject(value)) {
$.extend(true, settings[key], value);
} else {
settings[key] = value;
}
return self;
};
this.show = function() {
clearTimeout(hideTimeOut);
elements.widget.appendTo(elements.container).hide();
callEffect('show', arguments);
self.refreshPosition();
if (settings.hide.auto) {
hideTimeOut = setTimeout(self.hide, settings.hide.autoDelay);
}
bindEvents();
if (settings.preventScroll) {
self.getElements('body').addClass(settings.classes.preventScroll);
}
self.trigger('show');
return self;
};
this.trigger = function(eventName, params) {
var methodName = 'on' + eventName[0].toUpperCase() + eventName.slice(1);
if (self[methodName]) {
self[methodName](params);
}
var callbacks = events[eventName];
if (!callbacks) {
return;
}
$.each(callbacks, function(index, callback) {
callback.call(self, params);
});
return self;
};
};
DialogsManager.Widget.prototype.types = [];
// Inheritable widget methods
DialogsManager.Widget.prototype.buildWidget = function() {
var elements = this.getElements(),
settings = this.getSettings();
elements.widget.append(elements.header, elements.message);
this.setHeaderMessage(settings.headerMessage);
this.setMessage(settings.message);
if (this.getSettings('closeButton')) {
elements.widget.prepend(elements.closeButton);
}
};
DialogsManager.Widget.prototype.attachEvents = function() {
var self = this;
if (self.getSettings('closeButton')) {
self.getElements('closeButton').on('click', function() {
self.hide();
});
}
};
DialogsManager.Widget.prototype.getDefaultSettings = function() {
return {};
};
DialogsManager.Widget.prototype.getClosureMethods = function() {
return [];
};
DialogsManager.Widget.prototype.onHide = function() {
};
DialogsManager.Widget.prototype.onShow = function() {
};
DialogsManager.Widget.prototype.onInit = function() {
};
DialogsManager.Widget.prototype.onReady = function() {
};
DialogsManager.widgetsTypes.simple = DialogsManager.Widget;
DialogsManager.addWidgetType('buttons', {
activeKeyUp: function(event) {
var TAB_KEY = 9;
if (event.which === TAB_KEY) {
event.preventDefault();
}
if (this.hotKeys[event.which]) {
this.hotKeys[event.which](this);
}
},
activeKeyDown: function(event) {
if (!this.focusedButton) {
return;
}
var TAB_KEY = 9;
if (event.which === TAB_KEY) {
event.preventDefault();
var currentButtonIndex = this.focusedButton.index(),
nextButtonIndex;
if (event.shiftKey) {
nextButtonIndex = currentButtonIndex - 1;
if (nextButtonIndex < 0) {
nextButtonIndex = this.buttons.length - 1;
}
} else {
nextButtonIndex = currentButtonIndex + 1;
if (nextButtonIndex >= this.buttons.length) {
nextButtonIndex = 0;
}
}
this.focusedButton = this.buttons[nextButtonIndex].focus();
}
},
addButton: function(options) {
var self = this,
settings = self.getSettings(),
buttonSettings = jQuery.extend(settings.button, options);
var classes = options.classes ? options.classes + ' ' : '';
classes += settings.classes.globalPrefix + '-button';
var $button = self.addElement(options.name, $('<' + buttonSettings.tag + '>').html(options.text), classes);
self.buttons.push($button);
var buttonFn = function() {
if (settings.hide.onButtonClick) {
self.hide();
}
if ($.isFunction(options.callback)) {
options.callback.call(this, self);
}
};
$button.on('click', buttonFn);
if (options.hotKey) {
this.hotKeys[options.hotKey] = buttonFn;
}
this.getElements('buttonsWrapper').append($button);
if (options.focus) {
this.focusedButton = $button;
}
return self;
},
bindHotKeys: function() {
this.getElements('window').on({
keyup: this.activeKeyUp,
keydown: this.activeKeyDown
});
},
buildWidget: function() {
DialogsManager.Widget.prototype.buildWidget.apply(this, arguments);
var $buttonsWrapper = this.addElement('buttonsWrapper');
this.getElements('widget').append($buttonsWrapper);
},
getClosureMethods: function() {
return [
'activeKeyUp',
'activeKeyDown'
];
},
getDefaultSettings: function() {
return {
hide: {
onButtonClick: true
},
button: {
tag: 'button'
}
};
},
onHide: function() {
this.unbindHotKeys();
},
onInit: function() {
this.buttons = [];
this.hotKeys = {};
this.focusedButton = null;
},
onShow: function() {
this.bindHotKeys();
if (!this.focusedButton) {
this.focusedButton = this.buttons[0];
}
if (this.focusedButton) {
this.focusedButton.focus();
}
},
unbindHotKeys: function() {
this.getElements('window').off({
keyup: this.activeKeyUp,
keydown: this.activeKeyDown
});
}
});
DialogsManager.addWidgetType('lightbox', DialogsManager.getWidgetType('buttons').extend('lightbox', {
getDefaultSettings: function() {
var settings = DialogsManager.getWidgetType('buttons').prototype.getDefaultSettings.apply(this, arguments);
return $.extend(true, settings, {
contentWidth: 'auto',
contentHeight: 'auto',
position: {
element: 'widgetContent',
of: 'widget',
autoRefresh: true
}
});
},
buildWidget: function() {
DialogsManager.getWidgetType('buttons').prototype.buildWidget.apply(this, arguments);
var $widgetContent = this.addElement('widgetContent'),
elements = this.getElements();
$widgetContent.append(elements.header, elements.message, elements.buttonsWrapper);
elements.widget.html($widgetContent);
if (elements.closeButton) {
$widgetContent.prepend(elements.closeButton);
}
},
onReady: function() {
var elements = this.getElements(),
settings = this.getSettings();
if ('auto' !== settings.contentWidth) {
elements.message.width(settings.contentWidth);
}
if ('auto' !== settings.contentHeight) {
elements.message.height(settings.contentHeight);
}
}
}));
DialogsManager.addWidgetType('confirm', DialogsManager.getWidgetType('lightbox').extend('confirm', {
onReady: function() {
DialogsManager.getWidgetType('lightbox').prototype.onReady.apply(this, arguments);
var strings = this.getSettings('strings'),
isDefaultCancel = this.getSettings('defaultOption') === 'cancel';
this.addButton({
name: 'cancel',
text: strings.cancel,
callback: function(widget) {
widget.trigger('cancel');
},
focus: isDefaultCancel
});
this.addButton({
name: 'ok',
text: strings.confirm,
callback: function(widget) {
widget.trigger('confirm');
},
focus: !isDefaultCancel
});
},
getDefaultSettings: function() {
var settings = DialogsManager.getWidgetType('lightbox').prototype.getDefaultSettings.apply(this, arguments);
settings.strings = {
confirm: 'OK',
cancel: 'Cancel'
};
settings.defaultOption = 'cancel';
return settings;
}
}));
DialogsManager.addWidgetType('alert', DialogsManager.getWidgetType('lightbox').extend('alert', {
onReady: function() {
DialogsManager.getWidgetType('lightbox').prototype.onReady.apply(this, arguments);
var strings = this.getSettings('strings');
this.addButton({
name: 'ok',
text: strings.confirm,
callback: function(widget) {
widget.trigger('confirm');
}
});
},
getDefaultSettings: function() {
var settings = DialogsManager.getWidgetType('lightbox').prototype.getDefaultSettings.apply(this, arguments);
settings.strings = {
confirm: 'OK'
};
return settings;
}
}));
// Exporting the DialogsManager variable to global
global.DialogsManager = DialogsManager;
})(
typeof jQuery !== 'undefined' ? jQuery : typeof require === 'function' && require('jquery'),
(typeof module !== 'undefined' && typeof module.exports !== 'undefined') ? module.exports : window
);
Kinds of Financial Combination Loans Archives - FundFlippers
Skip to content
Introduction: In the domain of individual budget, dealing with numerous obligations can be overpowering and monetarily oppressive. Shuffling different regularly scheduled installments, loan costs, and reimbursement timetables can frustrate one’s capacity to accomplish financial solidness and long haul objectives. Nonetheless, monetary solidification loan offer a feasible answer for improving on obligation the board and accomplishing … Read more
Categories Blog Tags alance Transfer Credit Cards: , Avoid Accumulating New Debt , Benefits of Financial Consolidation Loans , Budget and Financial Discipline , Credit Score , Develop a Repayment Plan , Financial Consolidation Loans: A Comprehensive Guide , Fixed Repayment Terms , Home Equity Loans: , Introduction , Kinds of Financial Combination Loans , Loan Terms and Fees , Lower Interest Rates , Negotiate with Lenders , Personal Loans , Shop Around for the Best Rates , What are Financial