Your IP : 18.219.40.177
/**
* ConfirmBox module
* @param {object} window global object
* @param {function} $ jQuery library
* @param {object} EventMgr EventMgr library
* @param {object} App Application
* @return {object} api
*/
/*global App:true*/
/*global EventMgr:true*/
/*global $:true*/
App.ConfirmBox = function(window, $, EventMgr, App) {
'use strict';
var callbackOk,
callbackCancel,
args,
checkbox,
//show ConfirmBox Flag
modalActive = false,
ACTIVE_CLASS = 'active-modal';
//ConfirmBox selector
function $confirmBox() {
return App.u.selectorCache('#modal');
}
//ConfirmBox message selector
function $confirmBoxMessage() {
return App.u.selectorCache('#modal_message');
}
//ConfirmBok OK button selector
function $confirmBoxOk() {
return App.u.selectorCache('#modal_ok');
}
//ConfirmBox Cancel button selector
function $confirmBoxCancel() {
return App.u.selectorCache('#modal_cancel');
}
//ConfirmBox form area
function $confirmBoxForm() {
return App.u.selectorCache('#modal_form');
}
//BODY selector
function $body() {
return App.u.selectorCache('body');
}
//detect postion nearest trget elem
function detectPosition(self) {
var $self = $(self),
PADDING = 10,
CONFIRMBOXWIDTH = 420,
offset = $self.offset(),
selfHeight = $self.height(),
$confimBoxLocal = $confirmBox(),
confirmBoxHeight = $confimBoxLocal.height(),
windowWidth = window.innerWidth,
windowHeight = window.innerHeight,
top = offset.top + selfHeight + PADDING,
left = offset.left - 137,
defTop = windowHeight / 2 - selfHeight / 2 ,
defLeft = windowWidth / 2 - CONFIRMBOXWIDTH / 2;
//check for bottom border
if (top + confirmBoxHeight > windowHeight) {
top = windowHeight - confirmBoxHeight - selfHeight - 2 * PADDING;
} else if (top < 0) {
top = 0 + PADDING;
}
//check for right border
if (left + CONFIRMBOXWIDTH > windowWidth) {
left = windowWidth - CONFIRMBOXWIDTH;
} else if (left < 0) {
left = 0 + PADDING;
}
if (defTop - top > 320 || defLeft - left > 320) {
//set new position
$confimBoxLocal.css({
top: top,
left: left,
marginLeft: 0,
marginTop: 0
});
}
}
//Show ConfirmBox
function confirmBoxShow(e, data) {
var text = data.text,
self = data.self;
checkbox = data.checkbox || null;
callbackOk = data.callbackOk || null;
callbackCancel = data.callbackCancel || null;
args = data.args || [];
$body().addClass(ACTIVE_CLASS);
if (data.warning) {
$confirmBox().addClass('modal-with-warning');
text = pageInfo.messages.warning + "</br>" + text;
}
$confirmBoxMessage().html(window.filterXSS(text));
if (checkbox) {
$confirmBoxForm().html(templates.formItemCheckbox({
id: 'confirmbox',
name: 'confirmcheckbox',
desc: checkbox.msg,
value: 'off',
attrInput: 'id="confirmcheckbox"',
dependFields: 'b-checkbox__wrapper_for_confirmbox l-form__row_type_checkbox'
}));
} else {
$confirmBoxForm().html('');
}
if (self) {
detectPosition(self);
}
$confirmBox().show();
modalActive = true;
}
//Reset confirmBox settings
function resetSettings() {
callbackCancel = null;
callbackOk = null;
modalActive = false;
checkbox = null;
$confirmBox().css({
top: '',
left: '',
marginLeft: '',
marginTop: ''
});
$confirmBox().removeClass('modal-with-warning');
}
//OK Handler
function confirmOkHandler(e) {
if (modalActive === true) {
$body().removeClass(ACTIVE_CLASS);
$confirmBox().hide();
if (App.u.isFunction(callbackOk)) {
callbackOk.apply(window, args);
}
if (checkbox && App.u.isFunction(checkbox.cb)) {
checkbox.cb.apply(window, [$('#confirmcheckbox').val()]);
}
resetSettings();
}
}
//Cancel Handler
function confirmCancelHandler(e) {
if (modalActive === true) {
$body().removeClass(ACTIVE_CLASS);
$confirmBox().hide();
if (App.u.isFunction(callbackCancel)) {
callbackCancel.apply(window, args);
}
$confirmBoxForm().html('');
resetSettings();
return true;
}
}
function init() {
EventMgr.bind('confirmBoxShow', confirmBoxShow);
EventMgr.obind($confirmBoxOk(), 'click', confirmOkHandler);
EventMgr.obind($confirmBoxCancel(), 'click', confirmCancelHandler);
// EventMgr.bind('escKeyUp', confirmCancelHandler);
EventMgr.addToTriggerStack('escKeyUp', confirmCancelHandler, 0);
EventMgr.bind('enterKeyUp', confirmOkHandler);
}
var api = {
init: init
};
return api;
} (window, $, EventMgr, App);