/* * PLUGIN: allSIGE MessageBox * OWNER: Thiago Augusto Borges - Uberaba MG * VERSION: 2.1.0.0 * INIT: 01/05/2016 * LICENSE: M.I.T */ "use strict"; (function ($) { var ASMBErrorIdent = "allSIGE MessageBox - "; var ASMBSettings; $.allSIGEDynamicEnvironment = function () { }; $.allSIGEDynamicMessageBoxSettings = function (settings, cascade) { cascade === undefined ? cascade = false : ""; var defaults = { boxType: "none", boxShortcuts: { enabled: true, closeKeyCode: 27, showShortcutLabel: true }, boxShowIcon: false, boxShowHeaderControls: true, boxReloadModal: false, boxTypeIcon: { "none": { type: "img", val: "none.png" }, "success": { type: "img", val: "success.png" }, "error": { type: "img", val: "error.png" }, "info": { type: "img", val: "info.png" }, "alert": { type: "img", val: "alert.png" } }, boxSize: "md", boxTitle: "allSIGE MessageBox", boxMessage: "", boxButtons: [], boxHeaderButtons: [], boxButtonDefaultPosition: 1, boxButtonAlign: "right", boxAutoClose: { timeout: 0, message: "Closing in %s% seconds...", container: "message" }, boxAlternateReturn: { selector: "", close: true }, boxFocusOnLoad: { selector: "" }, dataParams: [], defaultStyle: "style01", topPosition: "100px", closeOnClickModal: true, blockWhenOpen: false, effects: { modalIn: "fadeIn", modalOut: "fadeOut", boxIn: "fadeInDown", boxOut: "fadeOutUp" }, onSuccess: function (result) { }, onBeforeShow: function (event) { }, onAfterShow: function (event) { }, onBeforeClose: function (event) { }, onAfterClose: function (event) { }, onModalClosing: function (event) { }, onModalClosed: function (event) { }, }; if (cascade) { ASMBSettings = $.extend(true, {}, defaults, ASMBSettings, settings); } settings = $.extend(true, {}, defaults, ASMBSettings, settings); var localSettings = $.extend(true, {}, ASMBSettings, settings); var loValidate = {}; var laAcceptSizesCSS = ['em', 'rem', 'ex', 'px', '%', 'pt', 'pc', 'mm', 'cm', 'in', 'vh', 'vw', 'vmin', 'vmax', 'ch']; loValidate['_doValid_boxType'] = function () { return localSettings['boxType']; }; loValidate['_doValid_boxShortcuts'] = function () { var par = localSettings['boxShortcuts']; par['enabled'] ? par['enabled'] = true : par['enabled'] = false; par['showShortcutLabel'] ? par['showShortcutLabel'] = true : par['showShortcutLabel'] = false; return par; }; loValidate['_doValid_boxSize'] = function () { var par = localSettings['boxSize']; var laBoxSizes = ['330', '420', '585', '880', '100']; var laAcceptSizes = ['xs', 'sm', 'md', 'lg', 'full']; var letter; var number; var lnPositionInArray = $.inArray(par, laAcceptSizes); if (lnPositionInArray >= 0) { number = laBoxSizes[lnPositionInArray]; laAcceptSizes[lnPositionInArray] == "full" ? letter = '%' : letter = 'px'; } else { letter = par.replace(/[0-9]/g, ''); number = parseInt(par); if ((number === "") || (number < 0) || (isNaN(number))) { $.error(ASMBErrorIdent + "The paramater 'boxSize' it has to be a no empty and integer."); } if ($.inArray(letter, laAcceptSizesCSS) == -1) { $.error(ASMBErrorIdent + "The allowable values for the parameter 'boxSize' are " + laAcceptSizesCSS.splice(0) + "."); } } return number + letter; }; loValidate['_doValid_boxTitle'] = function () { return localSettings['boxTitle']; }; loValidate['_doValid_boxMessage'] = function () { return localSettings['boxMessage']; }; loValidate['_doValid_boxButtons'] = function () { var par = localSettings['boxButtons']; var boxShortcut = localSettings['boxShortcuts']; if (!$.isArray(par)) { $.error(ASMBErrorIdent + "The paramater 'boxButtons' it has to be a array of objects."); } var loDefaultButtonConf = { label: "", class: "btn", return: "OK", close: true, iconClass: "", shortcutCharCode: null, props: { element: "button", attribs: { } } } par.length <= 0 ? par.push(loDefaultButtonConf) : ""; var loChar = { 9: "TAB", 13: "ENTER" }; for (var i = 0; i < par.length; i++) { par[i] = $.extend(true, {}, loDefaultButtonConf, par[i]); if (par[i]['label'] === "" && par[i]['iconClass'] === "") { par[i]['label'] = "OK"; } var lsShortcutLabel = ""; if (boxShortcut['showShortcutLabel']) { lsShortcutLabel = String.fromCharCode(par[i]['shortcutCharCode']); var lnCharCodeAt = lsShortcutLabel.charCodeAt(); if (lnCharCodeAt !== 0) { loChar.hasOwnProperty(lnCharCodeAt) ? lsShortcutLabel = loChar[lnCharCodeAt] : lsShortcutLabel = lsShortcutLabel; par[i]['label'] += " [" + lsShortcutLabel + "]"; } } var element = par[i]['props']['element']; if (element === "" || $.isNumeric(element)) { $.error(ASMBErrorIdent + "The paramater 'boxButtons[props][element]' it has to be a html element."); } } return par; }; loValidate['_doValid_boxHeaderButtons'] = function () { var par = localSettings['boxHeaderButtons']; if (!$.isArray(par)) { $.error(ASMBErrorIdent + "The paramater 'boxHeaderButtons' it has to be a array of objects."); } var loDefaultHeaderButtonConf = { return: "OK", close: true, iconClass: "fa fa-close", props: { element: "li", attribs: { } } } par.length <= 0 ? par.push(loDefaultHeaderButtonConf) : ""; for (var i = 0; i < par.length; i++) { par[i] = $.extend(true, {}, loDefaultHeaderButtonConf, par[i]); var element = par[i]['props']['element']; if (element === "" || $.isNumeric(element)) { $.error(ASMBErrorIdent + "The paramater 'boxHeaderButtons[props][element]' it has to be a html element."); } } return par; }; loValidate['_doValid_boxTypeIcon'] = function () { var par = localSettings['boxTypeIcon']; var loDefaultTypeIcon = { type: "img", val: "none.png" }; for (var type in par) { par[type] = $.extend(true, {}, loDefaultTypeIcon, par[type]); } if (!par.hasOwnProperty(localSettings['boxType'])) { $.error(ASMBErrorIdent + "The paramater 'boxTypeIcon' must have a position with the same type of parameter 'boxType'."); } return par; }; loValidate['_doValid_boxFocusOnLoad'] = function () { var par = localSettings['boxFocusOnLoad']; var loDefaultFocusOnLoad = { selector: "" }; par = $.extend(true, {}, loDefaultFocusOnLoad, par); return par; }; loValidate['_doValid_boxButtonDefaultPosition'] = function () { var par = parseInt(localSettings['boxButtonDefaultPosition'] - 1); if ((par === "") || (par < 0) || (isNaN(par))) { $.error(ASMBErrorIdent + "The paramater 'boxButtonDefaultPosition' it has to be a no empty and integer."); } if (localSettings['boxButtons'].length > 0) { if (localSettings['boxButtons'][par] === undefined) { $.error(ASMBErrorIdent + "Not found an button in the position " + (par + 1) + " in 'boxButtonDefaultPosition'."); } } return par; }; loValidate['_doValid_boxAlternateReturn'] = function () { var par = localSettings['boxAlternateReturn']; return par; }; loValidate['_doValid_boxButtonAlign'] = function () { var par = localSettings['boxButtonAlign']; var laAccept = ['left', 'right', 'center']; if ($.inArray(par, laAccept) == -1) { $.error(ASMBErrorIdent + "The allowable values for the parameter 'boxButtonAlign' are " + laAccept.splice(0) + "."); } return par; }; loValidate['_doValid_boxAutoClose'] = function () { var par = localSettings['boxAutoClose']; if (!$.isNumeric(par['timeout'])) { $.error(ASMBErrorIdent + "The paramater 'boxAutoClose[timeout]' it has to be a no empty and integer."); } par['timeout'] = par['timeout'] * 1000; return par; }; loValidate['_doValid_defaultStyle'] = function () { return localSettings['defaultStyle']; }; loValidate['_doValid_dataParams'] = function () { return localSettings['dataParams']; }; loValidate['_doValid_topPosition'] = function () { var par = localSettings['topPosition']; var letter = par.replace(/[0-9]/g, ''); var number = parseInt(par); if ($.inArray(letter, laAcceptSizesCSS) == -1) { $.error(ASMBErrorIdent + "The allowable values for the parameter 'topPosition' are " + laAcceptSizesCSS.splice(0) + "."); } return par; }; loValidate['_doValid_closeOnClickModal'] = function () { var par = localSettings['closeOnClickModal']; par ? par = true : par = false; return par; }; loValidate['_doValid_boxReloadModal'] = function () { var par = localSettings['boxReloadModal']; par ? par = true : par = false; return par; }; loValidate['_doValid_boxShowIcon'] = function () { var par = localSettings['boxShowIcon']; par ? par = true : par = false; return par; }; loValidate['_doValid_boxShowHeaderControls'] = function () { var par = localSettings['boxShowHeaderControls']; par ? par = true : par = false; return par; }; loValidate['_doValid_blockWhenOpen'] = function () { var par = localSettings['blockWhenOpen']; par ? par = true : par = false; return par; }; loValidate['_doValid_effects'] = function () { var par = localSettings['effects']; return par; }; loValidate['_doValid_onSuccess'] = function () { var par = 'onSuccess'; if (!$.isFunction(localSettings[par])) { $.error(ASMBErrorIdent + "The paramater '" + par + "' it has to be a function."); } return localSettings[par]; }; loValidate['_doValid_onBeforeShow'] = function () { var par = 'onBeforeShow'; if (!$.isFunction(localSettings[par])) { $.error(ASMBErrorIdent + "The paramater '" + par + "' it has to be a function."); } return localSettings[par]; }; loValidate['_doValid_onAfterShow'] = function () { var par = 'onAfterShow'; if (!$.isFunction(localSettings[par])) { $.error(ASMBErrorIdent + "The paramater '" + par + "' it has to be a function."); } return localSettings[par]; }; loValidate['_doValid_onBeforeClose'] = function () { var par = 'onBeforeClose'; if (!$.isFunction(localSettings[par])) { $.error(ASMBErrorIdent + "The paramater '" + par + "' it has to be a function."); } return localSettings[par]; }; loValidate['_doValid_onAfterClose'] = function () { var par = 'onAfterClose'; if (!$.isFunction(localSettings[par])) { $.error(ASMBErrorIdent + "The paramater '" + par + "' it has to be a function."); } return localSettings[par]; }; loValidate['_doValid_onModalClosing'] = function () { var par = 'onModalClosing'; if (!$.isFunction(localSettings[par])) { $.error(ASMBErrorIdent + "The paramater '" + par + "' it has to be a function."); } return localSettings[par]; }; loValidate['_doValid_onModalClosed'] = function () { var par = 'onModalClosed'; if (!$.isFunction(localSettings[par])) { $.error(ASMBErrorIdent + "The paramater '" + par + "' it has to be a function."); } return localSettings[par]; }; var _isValid = function () { for (var lsSetting in localSettings) { //Primeira validação: Vejo se o parametro passado faz parte do meu dicionário if (!defaults.hasOwnProperty(lsSetting)) { $.error(ASMBErrorIdent + "Setting '" + lsSetting + "' is not recognized as a word without making dictionary plugin."); } else { __isValid(lsSetting); } } }; var __isValid = function (setting) { var lsValidateFunction = '_doValid_' + setting; if (!loValidate.hasOwnProperty(lsValidateFunction)) { $.error(ASMBErrorIdent + "Setting '" + setting + "' needs a validation function."); } localSettings[setting] = loValidate[lsValidateFunction](); return true; }; _isValid(); this.getAMBObject = function () { return localSettings; }; this.getAMBSetting = function (setting) { return localSettings[setting]; }; return this; }; $.allSIGEDynamicMessageBox = function (settings) { var localSettings = $.allSIGEDynamicMessageBoxSettings(settings).getAMBObject(); var $this = this; var lnTimeoutBoxOut = 500; var isOpen = false; var loMBSettings = { "modal": { tag: "div", styleClass: "message-box-modal", showModal: true, getContainer: function () { return "body"; }, getDataSelector: function (full) { full == undefined ? full = true : ""; var data = 'box-modal'; full ? data = this.tag + '[data-amb-skel="' + data + '"]' : data = data; return data; }, doOpen: function () { if (this.showModal) { $(this.getDataSelector()).addClass(localSettings['effects']['modalIn']); $(this.getDataSelector()).addClass('animated'); $(this.getDataSelector()).show(); } }, doClose: function () { $(this.getDataSelector()).removeClass(localSettings['effects']['modalIn']); $(this.getDataSelector()).addClass(localSettings['effects']['modalOut']); var $this = this; localSettings.onModalClosing(_execOn()); window.setTimeout(function () { $($this.getDataSelector()).hide(); localSettings.onModalClosed(_execOn()); }, lnTimeoutBoxOut); }, }, "container": { tag: "div", styleClass: "message-box-container", hasSpecialConfig: true, getContainer: function () { return "body"; }, getDataSelector: function (full) { full == undefined ? full = true : ""; var data = 'box-container'; full ? data = this.tag + '[data-amb-skel="' + data + '"]' : data = data; return data; }, doOpen: function () { $(this.getDataSelector()).show(); }, doClose: function () { var $this = this; window.setTimeout(function () { $($this.getDataSelector()).hide(); }, lnTimeoutBoxOut); }, doSpecialConfig: function () { $(this.getDataSelector()).animate({ scrollTop: 0 }, 'fast'); } }, "main": { tag: "section", styleClass: "message-box-body", hasSpecialConfig: true, getContainer: function () { return loMBSettings['container'].getDataSelector();; }, getDataSelector: function (full) { full == undefined ? full = true : ""; var data = 'box-main'; full ? data = this.tag + '[data-amb-skel="' + data + '"]' : data = data; return data; }, doOpen: function () { $(this.getDataSelector()).addClass(localSettings['effects']['boxIn']); $(this.getDataSelector()).addClass('animated'); $(this.getDataSelector()).show(); }, doClose: function () { $(this.getDataSelector()).removeClass(localSettings['effects']['boxIn']); $(this.getDataSelector()).addClass(localSettings['effects']['boxOut']); var $this = this; window.setTimeout(function () { $($this.getDataSelector()).hide(); }, lnTimeoutBoxOut); }, setBoxType: function (boxType) { var lsFullClassLocal = this.styleClass + '-' + boxType; var lsFullClassSetti = this.styleClass + '-' + localSettings['boxType']; if ($(this.getDataSelector()).hasClass(lsFullClassSetti)) { $(this.getDataSelector()).removeClass(lsFullClassSetti); } $(this.getDataSelector()).addClass(lsFullClassLocal); }, setBoxSize: function (boxSize, effect) { effect === undefined ? effect = true : effect = effect; if (effect) { $(this.getDataSelector()).animate({ width: boxSize }, lnTimeoutBoxOut); } else { $(this.getDataSelector()).css("width", boxSize); } }, setTopPosition: function (topPosition, effect, callback) { effect === undefined ? effect = true : effect = effect; if (effect) { $(this.getDataSelector()).animate({ "margin-top": topPosition, "margin-bottom": topPosition }, lnTimeoutBoxOut, function () { if (callback !== undefined) { callback(); } }); } else { $(this.getDataSelector()).css("margin-top", topPosition); $(this.getDataSelector()).css("margin-bottom", topPosition); } }, setDefaultStyle: function (defaultStyle) { $(this.getDataSelector()).removeClass(localSettings['defaultStyle']); $(this.getDataSelector()).addClass(defaultStyle); }, doSpecialConfig: function () { this.setDefaultStyle(localSettings['defaultStyle']); this.setTopPosition(localSettings['topPosition'], false); this.setBoxType(localSettings['boxType']); this.setBoxSize(localSettings['boxSize'], false); } }, "header": { tag: "header", styleClass: "message-box-header", getContainer: function () { return loMBSettings['main'].getDataSelector(); }, getDataSelector: function (full) { full == undefined ? full = true : ""; var data = 'box-header'; full ? data = this.tag + '[data-amb-skel="' + data + '"]' : data = data; return data; } }, "header-content": { tag: "div", styleClass: "content", getContainer: function () { return loMBSettings['header'].getDataSelector(); }, getDataSelector: function (full) { full == undefined ? full = true : ""; var data = 'box-header-content'; full ? data = this.tag + '[data-amb-skel="' + data + '"]' : data = data; return data; }, setContent: function (content) { $(this.getDataSelector()).html(content); } }, "header-options": { tag: "ul", styleClass: "options", hasSpecialConfig: true, getContainer: function () { return loMBSettings['header'].getDataSelector(); }, getDataSelector: function (full) { full == undefined ? full = true : ""; var data = 'box-header-options'; full ? data = this.tag + '[data-amb-skel="' + data + '"]' : data = data; return data; }, setContent: function (content) { $(this.getDataSelector()).html(content); }, setBoxShowHeaderControls: function (boxShowHeaderControls) { this.setContent(''); if (boxShowHeaderControls) { this.setContent(_getArrayBoxHeaderButtons()); } }, doSpecialConfig: function () { this.setBoxShowHeaderControls(localSettings['boxShowHeaderControls']); } }, "message": { tag: "div", styleClass: "message-box-message", getContainer: function () { return loMBSettings['main'].getDataSelector(); }, getDataSelector: function (full) { full == undefined ? full = true : ""; var data = 'box-message'; full ? data = this.tag + '[data-amb-skel="' + data + '"]' : data = data; return data; }, }, "message-content": { tag: "div", styleClass: "content", getContainer: function () { return loMBSettings['message'].getDataSelector(); }, getDataSelector: function (full) { full == undefined ? full = true : ""; var data = 'box-message-content'; full ? data = this.tag + '[data-amb-skel="' + data + '"]' : data = data; return data; }, setContent: function (content) { $(this.getDataSelector()).html(content); loMBSettings['message-icon'].setBoxIcon(localSettings['boxType'], localSettings['boxShowIcon'], localSettings['boxTypeIcon']); }, }, "message-icon": { tag: "span", styleClass: "message-box-icon", isBlockAutoCreate: true, getContainer: function () { return loMBSettings['message-content'].getDataSelector(); }, getDataSelector: function (full) { full == undefined ? full = true : ""; var data = 'box-message-icon'; full ? data = this.tag + '[data-amb-skel="' + data + '"]' : data = data; return data; }, setContent: function (content) { $(this.getDataSelector()).html(content); }, setBoxIcon: function (boxType, boxShowIcon, boxTypeIcon) { if (boxShowIcon) { var icon = boxTypeIcon[boxType]; if (icon['type'] == "img") { loMBSettings['message-icon'].tag = "img"; var $this = $(loMBSettings['message-icon'].getDataSelector()); $this.attr('src', "img/" + icon['val']); console.log($this); } else { loMBSettings['message-icon'].tag = "span"; } } else { $(this.getDataSelector()).remove(); } } }, "footer": { tag: "footer", styleClass: "message-box-footer", getContainer: function () { return loMBSettings['main'].getDataSelector(); }, getDataSelector: function (full) { full == undefined ? full = true : ""; var data = 'box-footer'; full ? data = this.tag + '[data-amb-skel="' + data + '"]' : data = data; return data; }, }, "footer-content": { tag: "div", styleClass: "buttons", hasSpecialConfig: true, getContainer: function () { return loMBSettings['footer'].getDataSelector(); }, getDataSelector: function (full) { full == undefined ? full = true : ""; var data = 'box-footer-content'; full ? data = this.tag + '[data-amb-skel="' + data + '"]' : data = data; return data; }, setContent: function (content) { $(this.getDataSelector()).html(content); }, doSpecialConfig: function () { $(this.getDataSelector()).css('text-align', localSettings['boxButtonAlign']); } }, "timeout": { tag: "p", styleClass: "message-box-timeout", isBlockAutoCreate: true, getContainer: function () { var type = localSettings['boxAutoClose']['container']; isTypeValid(type); return loMBSettings[type].getDataSelector(); }, getDataSelector: function (full) { full == undefined ? full = true : ""; var data = 'box-timeout'; full ? data = this.tag + '[data-amb-skel="' + data + '"]' : data = data; return data; }, setContent: function (content) { $(this.getDataSelector()).html(content); }, }, }; //type var isTypeValid = function (type) { if (!loMBSettings.hasOwnProperty(type)) { $.error(ASMBErrorIdent + 'The type informed is a invalid type.'); return false; } return true; }; //return bool var _hasBoxGeneric = function (type) { isTypeValid(type); return $(loMBSettings[type].getDataSelector()).length > 0; }; //return bool var _isVisibleBoxGeneric = function (type) { return $(loMBSettings[type].getDataSelector()).is(':visible'); }; //return void var _makeBoxGeneric = function (type) { isTypeValid(type); var html = $('<' + loMBSettings[type].tag + '>', { class: loMBSettings[type].styleClass }); $(html).attr('data-amb-skel', loMBSettings[type].getDataSelector(false)); $(html).appendTo(loMBSettings[type].getContainer()); if (loMBSettings[type].hasSpecialConfig) { loMBSettings[type].doSpecialConfig(); } }; //return JQuery var _getBoxGeneric = function (type) { isTypeValid(type); return $(loMBSettings[type].getDataSelector()); }; //return void var _delBoxGeneric = function (type) { isTypeValid(type); $(loMBSettings[type].getDataSelector()).remove(); return void 0; }; var __dataAmbReturn = "amb-box-return"; var __dataAmbClose = "amb-box-close"; var __dataAmbControl = "data-amb-control"; var __dataValueAmbIsButton = "control"; var __dataValueAmbIsLabel = "label"; var __dataValueAmbIsIcon = "icon"; var triggerButtonClick = function (position) { $($(loMBSettings['footer-content'].getContainer()).find('[' + __dataAmbControl + '=' + __dataValueAmbIsButton + ']')).get(position).click(); }; var _getArrayBoxFooterButtons = function () { var laButtons = []; for (var i = 0; i < localSettings['boxButtons'].length; i++) { var lsLabel = localSettings['boxButtons'][i]['label']; var lsClass = localSettings['boxButtons'][i]['class']; var lsReturn = localSettings['boxButtons'][i]['return']; var lsIconClass = localSettings['boxButtons'][i]['iconClass']; var lbClose = localSettings['boxButtons'][i]['close']; var loProps = localSettings['boxButtons'][i]['props']; var htmlButton = $('<' + loProps['element'] + '>', { class: lsClass }); var htmlIcon = $('', { class: lsIconClass }); if (loProps.hasOwnProperty('attribs')) { if (!$.isEmptyObject(loProps['attribs'])) { var lsAttrib = ""; for (lsAttrib in loProps['attribs']) { $(htmlButton).attr(lsAttrib, loProps['attribs'][lsAttrib]); } } } $(htmlButton).attr(__dataAmbControl, __dataValueAmbIsButton); $(htmlButton).data(__dataAmbReturn, lsReturn); $(htmlButton).data(__dataAmbClose, lbClose); if (lsLabel != "") { var htmlLabel = $('').html(lsLabel); $(htmlLabel).attr(__dataAmbControl, __dataValueAmbIsLabel); $(htmlButton).html(htmlLabel); } if (lsIconClass != "") { $(htmlIcon).prependTo(htmlButton); $(htmlIcon).attr(__dataAmbControl, __dataValueAmbIsIcon); } laButtons.push(htmlButton); } return laButtons; }; var _getArrayBoxHeaderButtons = function () { var laHeaderButtons = []; var par = localSettings['boxHeaderButtons']; for (var i = 0; i < par.length; i++) { var lsReturn = localSettings['boxHeaderButtons'][i]['return']; var lsIconClass = localSettings['boxHeaderButtons'][i]['iconClass']; var lbClose = localSettings['boxHeaderButtons'][i]['close']; var loProps = localSettings['boxHeaderButtons'][i]['props']; var htmlButton = $('<' + loProps['element'] + '>', { class: "control" }); var htmlIcon = $('', { class: lsIconClass }); if (loProps.hasOwnProperty('attribs')) { if (!$.isEmptyObject(loProps['attribs'])) { var lsAttrib = ""; for (lsAttrib in loProps['attribs']) { $(htmlButton).attr(lsAttrib, loProps['attribs'][lsAttrib]); } } } $(htmlButton).attr(__dataAmbControl, __dataValueAmbIsButton); $(htmlButton).data(__dataAmbReturn, lsReturn); $(htmlButton).data(__dataAmbClose, lbClose); $(htmlButton).append(htmlIcon); laHeaderButtons.push(htmlButton); } return laHeaderButtons; }; var _setButtonFocus = function (lnPosition) { setTimeout(function () { $($(loMBSettings['footer-content'].getContainer() + " [" + __dataAmbControl + "=" + __dataValueAmbIsButton + "]:eq(" + lnPosition + ")")).focus(); }, 100); }; var _setControlFocus = function (lsControl) { var selector = loMBSettings['modal'].getContainer() + " " + lsControl + ":eq(0)"; $(selector).length > 0 ? setTimeout(function () { $(selector).focus(); }, 100) : _setButtonFocus(0); }; var _makePlugin = function () { for (var lsSetting in loMBSettings) { if (!loMBSettings[lsSetting]['isBlockAutoCreate']) { if (lsSetting == "modal" && $(loMBSettings[lsSetting].getDataSelector()).is(':visible') && !localSettings['boxReloadModal']) { continue; } _makeBoxGeneric(lsSetting); } } loMBSettings['header-content'].setContent(localSettings['boxTitle']); loMBSettings['message-content'].setContent(localSettings['boxMessage']); loMBSettings['footer-content'].setContent(_getArrayBoxFooterButtons()); _defineAlternateReturn(); _eventButtonClick(); _eventCloseModalClick(); _eventAutoCloseLoad(); if (localSettings['boxShortcuts']['enabled']) { _eventBoxShortcutKeydown(); } }; var _openPlugin = function () { isOpen = true; localSettings.onBeforeShow(_execOn()); loMBSettings['modal'].doOpen(); loMBSettings['container'].doOpen(); loMBSettings['main'].doOpen(); localSettings.onAfterShow(_execOn()); }; var _closePlugin = function () { isOpen = false; localSettings.onBeforeClose(_execOn()); loMBSettings['modal'].doClose(); loMBSettings['container'].doClose(); loMBSettings['main'].doClose(); localSettings.onAfterClose(_execOn()); $('html').off('keydown'); _eventAutoCloseClear(); _delPlugin(true); }; var _delBoxGenericPlugin = function (delay) { for (var lsSetting in loMBSettings) { if (lsSetting == "modal" && isChained && !delay && !localSettings['boxReloadModal']) { continue; } _delBoxGeneric(lsSetting); } }; var _delPlugin = function (delay) { delay === undefined ? delay = false : ""; if (delay) { window.setTimeout(function () { _delBoxGenericPlugin(delay); }, 500); } else { _delBoxGenericPlugin(delay); } }; var _eventCloseModalClick = function () { if (localSettings['closeOnClickModal']) { $(loMBSettings['container'].getDataSelector()).click(function (e) { if ($(e.target).data('amb-skel') == loMBSettings['container'].getDataSelector(false)) { _closePlugin(); } }); } }; var _eventBoxShortcutKeydown = function () { $('html').off('keydown'); $('html').on('keydown', function (e) { var charCode = (typeof e.which == "number") ? e.which : e.keyCode; if (charCode == localSettings['boxShortcuts']['closeKeyCode']) { if (_isVisibleBoxGeneric('container')) { _closePlugin(); } } var lnCount = 0; for (var boxButton in localSettings['boxButtons']) { var charCodePlugin = localSettings['boxButtons'][boxButton]['shortcutCharCode']; if (charCodePlugin != undefined) { if (charCode == charCodePlugin) { triggerButtonClick(lnCount); } } lnCount++; } }); }; var _execSuccess = function (result, close, location) { var objReturn = {}; objReturn['result'] = result; objReturn['resultLocation'] = location; objReturn['dataParams'] = localSettings['dataParams']; localSettings.onSuccess(objReturn); if (close) { _closePlugin(); } } var _execOn = function () { var objReturn = {}; objReturn['result'] = "onEvent"; objReturn['dataParams'] = localSettings['dataParams']; return objReturn; }; var _eventButtonClick = function () { var lsBtnSelector = $(loMBSettings['footer-content'].getDataSelector()).selector + "," + $(loMBSettings['header-options'].getDataSelector()).selector; $(lsBtnSelector).find('[' + __dataAmbControl + '=' + __dataValueAmbIsButton + ']').click(function () { var lsReturn = ($(this).data(__dataAmbReturn)); var lbClose = ($(this).data(__dataAmbClose)); _execSuccess(lsReturn, lbClose, "BUT"); }); }; var _defineAlternateReturn = function () { var objReturn = {}; var par = localSettings['boxAlternateReturn']; if (par['selector'] !== "") { $(par['selector']).click(function () { _execSuccess($(par['selector']).get(0), par['close'], "ALT"); }); } }; var _defineBoxFocus = function () { var boxButtonDefaultPosition = localSettings['boxButtonDefaultPosition']; var boxFocusOnLoad = localSettings['boxFocusOnLoad']; if (boxFocusOnLoad['selector'] != "") { _setControlFocus(boxFocusOnLoad.selector); return "loadFocus"; } else { _setButtonFocus(boxButtonDefaultPosition); return "buttonFocus"; } }; var _globalIntervalCounter; var _globalTimeoutCounter; var _eventAutoCloseClear = function () { clearInterval(_globalIntervalCounter); clearTimeout(_globalTimeoutCounter); }; var _eventAutoCloseLoad = function () { var lnAutoClose = localSettings['boxAutoClose']['timeout']; var lsMessageMask = localSettings['boxAutoClose']['message']; var fnMessage = function (parameter) { return lsMessageMask.replace("%s%", parameter); }; if (lnAutoClose > 0) { _makeBoxGeneric('timeout'); var defineIntervalCounter = function (seconds) { loMBSettings['timeout'].setContent(fnMessage(seconds)); } var lnCount = (lnAutoClose / 1000); defineIntervalCounter(lnCount); _globalIntervalCounter = setInterval(function () { lnCount--; defineIntervalCounter(lnCount); }, 1000); _globalTimeoutCounter = setTimeout(function () { _closePlugin(); clearInterval(_globalIntervalCounter); }, lnAutoClose); } }; var isChained = false; var _init = function () { var blockCall = false; if ($(loMBSettings['container'].getDataSelector()).length >= 1) { blockCall = localSettings['blockWhenOpen']; isChained = true; if (!blockCall) { _delPlugin(false); } } if (!blockCall) { _makePlugin(); _openPlugin(); _defineBoxFocus(); } }; _init(); this.getMBSettings = function () { return loMBSettings; }; this.isOpen = function () { return isOpen; }; /* OBJETOS DE REFERÊNCIA */ this.setBoxType = function (boxType) { var boxType = $.allSIGEDynamicMessageBoxSettings({ boxType: boxType }).getAMBSetting('boxType'); loMBSettings['main'].setBoxType(boxType); return this; } this.setBoxShowHeaderControls = function (boxShowHeaderControls) { var boxShowHeaderControls = $.allSIGEDynamicMessageBoxSettings({ boxShowHeaderControls: boxShowHeaderControls }).getAMBSetting('boxShowHeaderControls'); loMBSettings['header-options'].setBoxShowHeaderControls(boxShowHeaderControls); return this; }; this.setBoxSize = function (boxSize, effect) { var boxSize = $.allSIGEDynamicMessageBoxSettings({ boxSize: boxSize }).getAMBSetting('boxSize'); loMBSettings['main'].setBoxSize(boxSize, effect); return this; } this.setTopPosition = function (topPosition, effect, callback) { var topPosition = $.allSIGEDynamicMessageBoxSettings({ topPosition: topPosition }).getAMBSetting('topPosition'); loMBSettings['main'].setTopPosition(topPosition, effect, callback); return this; } this.setDefaultStyle = function (defaultStyle) { var defaultStyle = $.allSIGEDynamicMessageBoxSettings({ defaultStyle: defaultStyle }).getAMBSetting('defaultStyle'); loMBSettings['main'].setDefaultStyle(defaultStyle); return this; } this.setBoxMessage = function (boxMessage) { var boxMessage = $.allSIGEDynamicMessageBoxSettings({ boxMessage: boxMessage }).getAMBSetting('boxMessage'); loMBSettings['message-content'].setContent(boxMessage); return this; } this.setBoxTitle = function (boxTitle) { var boxTitle = $.allSIGEDynamicMessageBoxSettings({ boxTitle: boxTitle }).getAMBSetting('boxTitle'); loMBSettings['header-content'].setContent(boxTitle); return this; } this.closeModal = function () { _closePlugin(); } return this; }; })(jQuery);;