Files
crm.clientright.ru/modules/Workflow2/js-templates/RedooUtils.jst
Fedor ac7467f0b4 Major CRM updates: AI Assistant, Court Status API, S3 integration improvements, and extensive file storage system
- Added comprehensive AI Assistant system (aiassist/ directory):
  * Vector search and embedding capabilities
  * Typebot proxy integration
  * Elastic search functionality
  * Message classification and chat history
  * MCP proxy for external integrations

- Implemented Court Status API (GetCourtStatus.php):
  * Real-time court document status checking
  * Integration with external court systems
  * Comprehensive error handling and logging

- Enhanced S3 integration:
  * Improved file backup system with metadata
  * Batch processing capabilities
  * Enhanced error logging and recovery
  * Copy operations with URL fixing

- Added Telegram contact creation API
- Improved error logging across all modules
- Enhanced callback system for AI responses
- Extensive backup file storage with timestamps
- Updated documentation and README files

- File storage improvements:
  * Thousands of backup files with proper metadata
  * Fix operations for broken file references
  * Project-specific backup and recovery systems
  * Comprehensive file integrity checking

Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
2025-10-16 11:17:21 +03:00

2053 lines
101 KiB
Plaintext

(function ($) {
"use strict";
var ScopeName = 'Workflow2';
var Version = '2.4.1';
/**
* FlexUtils V2.4.1
* 2.4.1 - 23.05.2019
* - Fix bug related to modals, when first one is closed
* 2.4.0 - 25.07.2018
* - add createFileDrop function
* - add FlexForm component
* 2.3.1 - 18.07.2018
* - Fixed setFieldValue for picklists in VT7
* 2.3.0 - 12.07.2018
* - JSHint recommendations applied
* 2.2.1 - 21.05.2018
* - add onQuickCreate from VT6
* 2.2.0 - 26.04.2018
* - add FlexTranslate component
* 2.1.3 - 02.03.2018
* - improve compatibility with old RedooUtils
* 2.1.2 - 23.02.2018
* - add close callback to showModalBox
* 2.1.1 - 09.02.2018
* - add initial local cache handler
* 2.1.0 - 20.12.2017
* - Rename to FlexUtils
* - Add function showRecordInOverlay
* 2.0.13 - 18.11.2017
* - Implement Exception Output in postAction / postView
* 2.0.12 - 16.11.2017
* - add showModalBox replacement if already box is shown
* 2.0.11 - 08.11.2017
* - add convertComponents parameter to refreshContent to convert select2
* 2.0.10 - 04.11.2017
* - add showNotification
* - add Init console log
* 2.0.09 - 31.10.2017
* - add getCurrentDateFormat function
* 2.0.08 - 22.09.2017
* - add getContentMaxWidth / getContentMaxHeight functions
* 2.0.07 - 13.08.2017
* - add getMainRecordId function
* - add getCurrentCustomViewId
* - add onListChange
* 2.0.06 - 13.06.2017
* - getListFields fixed for VT6
* 2.0.05 - 12.06.2017
* - first version build with TypeScript
* - fix getFieldElement on SummaryView
* - Fix issues reported from TypeScript
* 2.0.04 - 11.16.2017
* - improve showModalBox Function
* - add hideModalBox Function
* - add FlexAjax.postSettingsView as wrapper for default function
* - add FlexAjax.postSettingsAction as wrapper for default function
* - add FlexUtils.refreshContent
* 2.0.03 - add getCurrentLayout Function
* - add layoutDependValue Function
* - add BlockUI
* 2.0.02 - add getQueryParams Function
* - Extend getMainModule by Query Params
* - Introduce RedooUtils Action on Server
* - add setFieldValue Function
* 2.0.01 - VT7 Compatibility
* - add FlexUtils.onFieldChange method
* - add FlexUtils.onRelatedListChange method
* - add FlexUtils.isVT7 method
* - add FlexUtils.Signal Implementation
* - add global RedooEvents
* 1.0.11 - Make postAction / postView settings flag optional
* Add wrong Ajax Response error output
* 1.0.10 - Add getRecordLabels function
* 1.0.9 - Add fillFieldSelect, loadStyles functions
* 1.0.8 - Add returnInput Parameter to getFieldElement function
* 1.0.7 - Add FlexUtils.loadScript
*//*globals confirm:false */
/**
* You must generate a FlexAjax Environment by useing FlexAjax(ScopeName)
* @example
* FlexAjax("ScopeName")
* @global
* @toc
* @namespace
**/
var FlexAjax = {
/**
* This function sends a POST request to a given Action.<br/>
* Module is get from ScopeName
*
* @example
* FlexAjax("ScopeName").postAction(
* "ActionName",
* {
* "param1": value1,
* "param2": value2
* },
* true,
* "json"
* ).then(function(responseJson) {
* // ... do something with JSON response
* });
* @param {string} actionName - Action to call
* @param {array} [params] - parameters to send
* @param {boolean|string} [settings] - (boolean) Is action within CRM Settings?<br/> (string) DataType
* @param {string} [dataType] - Datatype of response
* @returns {string|json}
*/
postAction: function (actionName, params, settings, dataType) {
if (typeof params == 'undefined') {
params = {};
}
params.module = ScopeName;
params.action = actionName;
if (typeof dataType == 'undefined' && typeof settings == 'string') {
dataType = settings;
settings = false;
}
if (typeof settings != 'undefined' && settings == true) {
params.parent = 'Settings';
}
return FlexAjax.post('index.php', params, dataType);
},
/**
* This function send a POST request to a given Action.
* Module is get from ScopeName
*
* @example
* FlexAjax("ScopeName").postAction(
* "ActionName",
* {
* "param1": value1,
* "param2": value2
* },
* true,
* "json"
* ).then(function(responseJson) {
* // ... do something with JSON response
* });
* @param viewName
* @param params
* @param dataType
* @returns {*}
*/
postSettingsView: function (viewName, params, dataType) {
return FlexAjax.postView(viewName, params, true, dataType);
},
/**
*
* @param actionName
* @param params
* @param dataType
* @returns {*}
*/
postSettingsAction: function (actionName, params, dataType) {
return FlexAjax.postAction(actionName, params, true, dataType);
},
/**
*
* @param viewName
* @param params
* @param settings
* @param dataType
* @returns {*}
*/
postView: function (viewName, params, settings, dataType) {
if (typeof params == 'undefined') {
params = {};
}
params.module = ScopeName;
params.view = viewName;
if (typeof dataType == 'undefined' && typeof settings == 'string') {
dataType = settings;
settings = false;
}
if (typeof settings != 'undefined' && settings == true) {
params.parent = 'Settings';
}
return FlexAjax.post('index.php', params, dataType);
},
/**
*
* @param url URL to call
* @param params Object with POST parameters
* @param dataType Single value of datatype if not set in params
* @returns {*}
*/
post: function (url, params, dataType) {
var aDeferred = jQuery.Deferred();
if (typeof url == 'object') {
params = url;
url = 'index.php';
}
if (typeof params == 'undefined') {
params = {};
}
if (typeof dataType == 'undefined' && typeof params.dataType != 'undefined') {
dataType = params.dataType;
}
var options = {
url: url,
data: params
};
if (typeof dataType != 'undefined') {
options.dataType = dataType;
}
//options.dataType = undefined;
options.dataType = 'text';
options.type = 'POST';
jQuery.ajax(options)
.always(function (data) {
if (typeof dataType != 'undefined' && dataType == 'json') {
try {
data = jQuery.parseJSON(data);
}
catch (e) {
FlexUtils.unblockUI();
console.error('FlexAjax Error - Should: JSON Response:');
console.log('Request: ', options);
console.log(data);
var height = 10;
jQuery('.RedooAjaxError').each(function (index, ele) {
height += jQuery(ele).height() + 30;
});
var id = 'error_' + (Math.floor(Math.random() * 1000000));
var content = data.substr(0, 500).replace(/</g, '&lt;').replace(/\\(.?)/g, function (s, n1) {
switch (n1) {
case '\\':
return '\\';
case '0':
return '\u0000';
case '':
return '';
default:
return n1;
}
});
if (data.length > 500) {
content += ' .....<em>shortened</em>....... ' + data.substr(-500).replace(/</g, '&lt;').replace(/\\(.?)/g, function (s, n1) {
switch (n1) {
case '\\':
return '\\';
case '0':
return '\u0000';
case '':
return '';
default:
return n1;
}
});
}
var html = '<div class="RedooAjaxError" style="word-wrap:break-word;position:fixed;bottom:' + height + 'px;box-sizing:border-box;left:10px;padding:10px;width:25%;background-color:#ffffff;z-index:90000;border:2px solid #C9331E;background-color:#D29D96;" id="' + id + '"><i class="icon-ban-circle" style="margin-top:2px;margin-right:5px;"></i><span style="color:#C9331E;font-weight:bold;">ERROR:</span> ' + e + '<br/><span style="color:#C9331E;font-weight:bold;">Response:</span>' + content + '</div>';
jQuery('body').append(html);
jQuery('#' + id).on('click', function () {
jQuery(this).fadeOut('fast', function () {
jQuery(this).remove();
});
});
/*
window.setTimeout(function() {
jQuery('#' + id).hide(function() {
jQuery(this).remove();
})
});
*/
//app.showModalWindow(response);
return;
}
}
if (typeof data.success != 'undefined') {
if (data.success == false && (data.error.code.indexOf('request') != -1)) {
if (confirm('Request Error. Reload of Page is required.')) {
window.location.reload();
}
FlexUtils.showNotification(data.error.message, false);
return;
}
}
aDeferred.resolve(data);
//callback(data)
});
return aDeferred.promise();
},
/**
*
* @param url
* @param params
* @param dataType
*/
get: function (url, params, dataType) {
console.error('Vtiger do not support GET Requests');
return;
},
/**
* Drop In Replacement for AppConnector.request
*
* @param params object
* @returns {*}
*/
request: function (params) {
return FlexAjax.post('index.php', params);
}
};/**
* You must generate a FlexCache Environment by useing FlexCache(ScopeName)
* @example
* FlexCache("ScopeName")
* @global
* @namespace
**/
var FlexCache = {
get: function (key, defaultValue) {
if (typeof _FlexCache[key] != 'undefined') {
return _FlexCache[key];
}
return defaultValue;
},
set: function (key, value) {
_FlexCache[key] = value;
}
};
/**
* You must generate a FlexForm Environment by useing FlexForm(ScopeName)
* @example
* FlexForm("ScopeName")
* @global
* @namespace
**/
var FlexForm = {
/**
*
* @param params
* @returns {FlexFormObj}
*/
getInstance:function(params) {
var FlexFormObj = function(parameters) {
this.parameters = parameters;
this.fields = [];
this.events = $({});
this.on = function(event, callbackFunction) {
this.events.on(event, callbackFunction);
};
this.addField = function(label, name, type, value, options) {
var field = new FlexFormField(name, type, label);
if(typeof options !== 'undefined') {
field.setOptions(options);
}
if(typeof value !== 'undefined') {
field.setValue(value);
}
var row = [];
row.push(field);
this.fields.push(row);
};
this.initCSS = function() {
var html = '<style type="text/css">' +
'.FlexFormContainer .materialstyle{border:1px solid transparent}' +
'.FlexFormContainer .materialstyle.group{position:relative;margin-bottom:15px;margin-top:10px}' +
'.FlexFormContainer .materialstyle.prefix-icon .fa{position:absolute;top:8px;font-size:14px}' +
'.FlexFormContainer .materialstyle.prefix-icon label{left:19px}' +
'.FlexFormContainer .materialstyle.prefix-icon input{padding-left:20px}' +
'.FlexFormContainer .materialstyle input{font-size:14px;padding:10px 10px 10px 0;display:block;width:100%;border:none;height:30px;border-bottom:1px solid #757575;border-top:none!important;border-left:none!important;border-right:none!important;box-shadow:none!important}' +
'.FlexFormContainer .materialstyle input[type=file]{border-bottom:none!important}' +
'.FlexFormContainer .materialstyle select{font-size:14px;padding:5px 10px 5px 0;display:block;width:100%;border:none;height:38px;border-bottom:1px solid #757575}' +
'.FlexFormContainer .materialstyle textarea{font-size:14px;padding:3px 5px;display:block;width:100%;height:150px;border:1px solid #757575}' +
'.FlexFormContainer .materialstyle .select2-container{width:100%}' +
'.FlexFormContainer .materialstyle .select2-container .select2-choice,.materialstyle .select2-container .select2-choices,.materialstyle .select2-container .select2-choices .select2-search-field input{-webkit-box-shadow:none;box-shadow:none}' +
'.FlexFormContainer .materialstyle input:focus,.materialstyle select:focus,.materialstyle textarea:focus{outline:0}' +
'.FlexFormContainer .materialstyle label{color:#bbb;font-size:16px;font-weight:400;position:absolute;pointer-events:none;left:5px;top:5px;transition:.2s ease all;-moz-transition:.2s ease all;-webkit-transition:.2s ease all}' +
'.FlexFormContainer .materialstyle input.fixedUsed~label,.materialstyle input.used~label,.materialstyle input:focus~label,.materialstyle select.fixedUsed~label,.materialstyle select.used~label,.materialstyle select:focus~label,.materialstyle textarea.fixedUsed~label,.materialstyle textarea.used~label,.materialstyle textarea:focus~label,.materialstyle.fixedUsed>label{top:-18px;left:0;font-size:12px;color:#5264AE}' +
'.FlexFormContainer .materialstyle .bar{position:relative;display:block;width:100%}' +
'.FlexFormContainer .materialstyle .bar:after,.materialstyle .bar:before{content:\'\';height:2px;width:0;bottom:1px;position:absolute;background:#5264AE;transition:.2s ease all;-moz-transition:.2s ease all;-webkit-transition:.2s ease all}' +
'.FlexFormContainer .materialstyle .bar:before{left:50%}' +
'.FlexFormContainer .materialstyle .bar:after{right:50%}' +
'.FlexFormContainer .ReqValRow .materialstyle { padding:5px 0; }' +
'.FlexFormContainer .materialstyle input:focus~.bar:after,.materialstyle input:focus~.bar:before{width:50%}' +
'</style>';
var checksumFkt = function(s) {
var hash = 0,
i, char;
if (s.length == 0) {
return hash;
}
var l = s.length;
for (i = 0; i < l; i++) {
char = s.charCodeAt(i);
hash = ((hash << 5) - hash) + char;
hash |= 0; // Convert to 32bit integer
}
return hash;
};
var checksum = checksumFkt(html);
var className = 'flexformmodalcss' + checksum;
if($('style.' + className).length === 0) {
var htmlele = $(html).addClass(className);
$('head').append(htmlele);
}
};
this.renderModal = function(widthPx, headline, successText, cancelText) {
this.initCSS();
if(typeof widthPx === 'undefined') {
widthPx = 600;
}
if(typeof headline === 'undefined') {
headline = '';
}
if(typeof successText === 'undefined') {
successText = 'Save';
}
if(typeof cancelText === 'undefined') {
cancelText = 'Cancel';
}
var html = '';
html += '<div class="modal-dialog modelContainer" style="width:' + widthPx + 'px;">';
html += '<div class="modal-content" style="width:100%;">';
// Header
html += '<div class="modal-header"><div class="clearfix"><div class="pull-right"><button type="button" class="close" aria-label="Close" data-dismiss="modal"><span aria-hidden="true" class="fa fa-close"></span></button></div><h4 class="pull-left">' + headline + '</h4></div></div>';
html += '<div class="modal-body FlexFormContainer">';
jQuery.each(this.fields, function(index, fields) {
html += '<div class="ReqValRow">';
jQuery.each(fields, function(fieldIndex, field) {
html += field.render();
});
html += '</div>';
});
html += '</div>';
// Footer
html += '<div class="modal-footer "><center><button class="btn btn-success" type="submit" name="saveButton"><strong>' + successText + '</strong></button><a href="#" class="cancelLink" type="reset" data-dismiss="modal">' + cancelText + '</a></center></div>';
html += '</div>';
html += '</div>';
FlexUtils.showModalBox(html).then($.proxy(function(window, data) {
jQuery.each(this.fields, function(index, fields) {
jQuery.each(fields, function(fieldIndex, field) {
field.init();
});
});
$('.btn-success', window).on('click', $.proxy(function() {
var data = {};
jQuery.each(this.fields, function(index, fields) {
jQuery.each(fields, function(fieldIndex, field) {
data[field.getFieldName()] = field.getValue();
});
});
this.events.trigger('save', data);
}, this));
jQuery('.materialstyle input, .materialstyle select, .materialstyle textarea', window).on('blur', function() {
// check if the input has any value (if we've typed into it)
if (jQuery(this).val()) {
jQuery(this).addClass('used');
} else {
jQuery(this).removeClass('used');
}
}).trigger('blur');
jQuery('.materialstyle .select2-container, .materialstyle input[type="file"]', window).each(function (index, ele) {
// console.log(ele, jQuery(ele).closest('.materialstyle'));
jQuery(ele).closest('.materialstyle').addClass('fixedUsed');
});
}, this));
};
};
var FlexFormField = function(field_name, field_type, field_label) {
var defaultOptions = {
'selfdecorate': false
};
this.field_options = defaultOptions;
this.field_value = null;
this.field_type = field_type;
this.field_name = field_name;
this.field_label = field_label;
this.rendered = false;
this.containerId = 'cfid' + Math.round(Math.random(999999) * 100000) + Math.round(Math.random(999999) * 100000);
this.fieldclass = 'cf' + Math.round(Math.random() * 100000) + Math.round(Math.random() * 100000);
this.typedata = FlexForm.getType(field_type);
this.setOptions = function(options) {
this.field_options = $.extend(true, defaultOptions, options);
};
this.getOptions = function() {
return this.field_options;
};
this.setValue = function(value) {
this.field_value = value;
if(this.rendered === true) {
this.typedata.setter(this.field_value, this);
}
};
this.init = function() {
if(typeof this.typedata.init === 'function') {
this.typedata.init(this);
}
};
this.getValue = function() {
return this.typedata.getter(this);
};
this.getFieldName = function() {
return this.field_name;
};
this.render = function() {
var html = '<div class="group materialstyle" id="' + this.containerId + '">';
html += this.typedata.render(this);
html += '<label>' + this.field_label+ '</label>';
html += '</div>';
this.rendered = true;
return html;
};
this.getContainer = function() {
return $('#' + this.containerId);
};
};
return new FlexFormObj(params);
},
registerType:function(type, renderFunction, initFunction, validateFunction, getterFunction, setterFunction, options) {
FlexForm._types[type] = {
'init': initFunction,
'render': renderFunction,
'validate': validateFunction,
'setter': getterFunction,
'getter': setterFunction,
'options': options
};
},
getType:function(type) {
if(typeof FlexForm._types[type] === 'undefined') {
throw "[" + ScopeName +"] FlexForm: " + type + " is undefined";
}
return FlexForm._types[type];
},
_types:{
'text' : {
'options': {
},
'render': function(fieldInstance) {
return '<input type="text" class="inputEle input-fullwidth ' + fieldInstance.fieldclass + '" value="' + (fieldInstance.field_value !== null ? fieldInstance.field_value : '') + '" />';
},
'validate': function(value, fieldInstance) {
return true;
},
'getter': function(fieldInstance) {
return fieldInstance.getContainer().find('.' + fieldInstance.fieldclass).val();
},
'setter': function(value, fieldInstance) {
fieldInstance.getContainer().find('.' + fieldInstance.fieldclass).val(value);
}
},
'textarea' : {
'options': {
// 'selfdecorate': false,
},
'render': function(fieldInstance) {
return '<textarea class="inputEle input-fullwidth ' + fieldInstance.fieldclass + '">' + (fieldInstance.field_value !== null ? fieldInstance.field_value : '') + '</textarea>';
},
'validate': function(value, fieldInstance) {
return true;
},
'getter': function(fieldInstance) {
return fieldInstance.getContainer().find('.' + fieldInstance.fieldclass).val();
},
'setter': function(value, fieldInstance) {
fieldInstance.getContainer().find('.' + fieldInstance.fieldclass).val(value);
}
},
'picklist' : {
'options': {
// 'selfdecorate': false,
},
'render': function(fieldInstance) {
var options = fieldInstance.getOptions();
var html = '<select class="select2 ' + fieldInstance.fieldclass + '">';
$.each(options.options, function(key, value) {
html += '<option value="' + key + '" ' + (fieldInstance.field_value == key ? 'selected="selected"' : '') + '>' + value + '</option>';
});
html += '</select>';
return html;
},
'init': function(fieldInstance) {
},
'validate': function(value, fieldInstance) {
return true;
},
'getter': function(fieldInstance) {
return fieldInstance.getContainer().find('.' + fieldInstance.fieldclass).select2('val');
},
'setter': function(value, fieldInstance) {
fieldInstance.getContainer().find('.' + fieldInstance.fieldclass).select2('val', value);
}
},
}
};/**
* You must generate a FlexTranslate Environment by useing FlexTranslate(ScopeName)
* @example
* FlexTranslate("ScopeName")
* @global
* @namespace
**/
var FlexTranslate = {
init:function(language, translations) {
FlexCache.set('__translations_' + language, translations);
},
getTranslator:function() {
return function(string) {
return FlexTranslate.__(string);
};
},
__:function(string) {
var language = app.getUserLanguage();
var translations = FlexCache.get('__translations_' + language, {});
if(typeof translations === 'function') {
FlexTranslate.init(language, translations());
return FlexTranslate.__(string);
}
if(typeof translations[string] !== 'undefined') {
return translations[string];
}
return string;
}
};
/*globals Vtiger_Edit_Js:false,Vtiger_Detail_Js:false,Vtiger_Popup_Js:false */
/**
* You must generate a FlexUtils Environment by useing FlexUtils(ScopeName)
* @example
* FlexUtils("ScopeName")
* @global
* @namespace
**/
var FlexUtils = {
layout: null,
currentLVRow: null,
listViewFields: false,
isVT7: function () {
return typeof app.helper !== 'undefined';
},
createFileDrop: function(options) {
if(typeof options === 'undefined') {
options = {};
}
if(typeof options.hovertext === 'undefined') {
options.hovertext = 'Drop File';
}
if(typeof options.container === 'undefined') {
options.container = 'body';
}
if(typeof options.container === 'undefined') {
options.container = 'body';
}
if(typeof options.data === 'undefined') {
options.data = {};
}
if($(options.container).prop('tagName') !== 'BODY' && $(options.container).css('position') == 'static') {
$(options.container).css('position', 'relative');
}
$(options.container).addClass('RegisteredFileDrop');
var containerHeight = $(options.container).height();
if(typeof options.url === 'undefined') {
if(typeof options.action === 'undefined') {
throw 'URL or action is mandatory for FileDrop Component';
} else {
options.url = 'index.php?module=' + ScopeName + '&action=' + options.action;
if(typeof options.settings !== 'undefined' && options.settings === true) {
options.url += '&parent=Settings';
}
}
}
if($('style#FlexFileDropStyles').length === 0) {
var fontSize = 20;
var showIcon = true;
var positionText = '40%';
if(containerHeight < 200) {
fontSize = 12;
showIcon = false;
positionText = '10%';
}
var html = '<style type="text/css" id="FlexFileDropStyles">div.FlexFileDropOverlay {\n' +
' position: absolute;\n' +
' top: 0;\n' +
' left: 0;\n' +
' height: 100%;\n' +
' width: 100%;\n' +
' z-index: 2000;\n' +
' background-color: rgba(0, 0, 0, 0.7);\n' +
' color: #ffffff;\n' +
' font-weight: bold;\n' +
' letter-spacing: 1px;\n' +
' text-transform: uppercase;\n' +
' font-size: ' + fontSize + 'px;\n' +
' overflow:hidden; ' +
' text-align: center;\n' +
' font-family: "Arial Black", Gadget, sans-serif;\n' +
'}\n' +
'div.FlexFileDropOverlay * {\n' +
' pointer-events: none;\n' +
'}\n' +
'div.FlexFileDropOverlay span#uploadHint {\n' +
' position: relative;\n' +
' top: '+positionText+';\n' +
'}\n' +
'div.FlexFileDropOverlay span#uploadHint i {\n' +
(showIcon == false? 'display:none;' : '') +
' font-size: 64px;\n' +
' margin-bottom: 30px;\n' +
'}</style>';
$('head').append(html);
}
if($('.FlexFileDropOverlay', options.container).length === 0) {
var html = '<div class="FlexFileDropOverlay" style="display:none;"><span id="uploadHint"><i class="fa fa-upload" aria-hidden="true"></i><br>' + options.hovertext + '</span></div>';
$(options.container).append(html);
}
var Overlay = $('.FlexFileDropOverlay', options.container);
$(options.container).on('dragenter', $.proxy(function (e) {
e.stopPropagation();
e.preventDefault();
}, this));
$(options.container).on('dragover', $.proxy(function (e) {
e.stopPropagation();
e.preventDefault();
}, this));
$(options.container).on('drop', $.proxy(function (e) {
e.stopPropagation();
e.preventDefault();
}, this));
var aSignal = new FlexUtils.Signal();
$(options.container).append('<input type="file" style="display:none;" class="fileselector" />');
$(options.container).find('.fileselector').on('change', function(e) {
var target = $(e.currentTarget);
if(target.prop('files').length > 0) {
uploadFile(target.prop('files')[0]);
}
});
$(options.container).find('.fileselector').on('click', function(e) {
e.stopPropagation();
});
$(options.container).on('click', function() {
$(options.container).find('.fileselector').trigger('click');
});
var DragContainer = $(options.container);
DragContainer.on('dragenter', function (e) {
Overlay.fadeIn('fast');
} );
Overlay.on('dragleave', function (e) {
Overlay.fadeOut('fast');
});
function uploadFile(file) {
var fd = new FormData();
fd.append('file', file);
var uploadURL = options.url;
var extraData = options.data;
$.each(options.data, function(key, value) {
fd.append(key, value);
});
var jqXHR = jQuery.ajax({
url: uploadURL,
type: "POST",
contentType:false,
processData: false,
cache: false,
data: fd,
success: function(data){
aSignal.dispatch(data);
}
});
}
Overlay.on('drop', function (e) {
e.preventDefault();
e.stopPropagation();
Overlay.fadeOut('fast');
var fileList = e.originalEvent.dataTransfer.files;
$.each(fileList, jQuery.proxy(function(index, file) {
uploadFile(file);
}, this));
});
return aSignal;
},
showRecordInOverlay:function(setype, crmid) {
window.open('index.php?module=' + setype + '&view=Detail&record=' + crmid);
},
showNotification:function(message, isSuccess, options) {
if(typeof isSuccess == 'undefined') {
isSuccess = true;
}
if(typeof options == 'undefined') {
options = {};
}
if(FlexUtils.isVT7()) {
options.message = message;
if(isSuccess === true) {
app.helper.showSuccessNotification(options);
} else {
app.helper.showErrorNotification(options);
}
}
},
cacheSet:function(key, value) {
if(FlexUtils.isVT7()) {
return app.storage.set(key, value);
}
},
cacheGet:function(key, defaultValue) {
if(FlexUtils.isVT7()) {
return app.storage.get(key, defaultValue);
}
},
cacheClear:function(key) {
if(FlexUtils.isVT7()) {
return app.storage.clear(key);
}
},
cacheFlush:function() {
if(FlexUtils.isVT7()) {
return app.storage.flush();
}
},
getCurrentDateFormat:function(type) {
type = type.toLowerCase();
if(FlexCache.get('__CurrentDateFormat_' + type, false) !== false) {
return FlexCache.get('__CurrentDateFormat_' + type, false);
}
var replacement = {};
switch(type) {
case 'php':
replacement = {
'yyyy' : '%Y',
'yy' : '%y',
'dd' : '%d',
'mm' : '%m'
};
break;
case 'moment':
replacement = {
'yyyy' : 'YYYY',
'yy' : 'YY',
'dd' : 'DD',
'mm' : 'MM'
};
break;
}
var currentFormat;
if(FlexUtils.isVT7()) {
currentFormat = app.getDateFormat();
}
$.each(replacement, function(oldPart, newPart) {
currentFormat = currentFormat.replace(oldPart, newPart);
});
FlexCache.set('__CurrentDateFormat_' + type, currentFormat);
return currentFormat;
},
getCurrentCustomViewId: function() {
if(FlexUtils.isVT7() === true) {
return $('input[name="cvid"]').val();
} else {
return jQuery('#customFilter').val();
}
},
selectRecordPopup: function (params, multiple) {
var aDeferred = jQuery.Deferred();
var popupInstance = Vtiger_Popup_Js.getInstance();
if (FlexUtils.isVT7()) {
if(typeof params == 'string') {
params = {
'module':params,
'view':'Popup',
'src_module':'Emails', // module=Documents&view=&src_module=Emails&src_field=testfield&multi_select=1
'src_field':'testfield'
};
}
if(typeof multiple != 'undefined' && multiple === true) {
params.multi_select = 1;
}
app.event.off('FlexUtils.SelectRecord');
app.event.one('FlexUtils.SelectRecord', function (e, data) {
aDeferred.resolveWith(window, [jQuery.parseJSON(data)]);
});
popupInstance.showPopup(params, 'FlexUtils.SelectRecord', function (data2) { /* Callback when visible **/ });
}
else {
if(typeof params == 'string') {
params = {
'module':params,
'view':'Popup',
'src_module':'Emails', // module=Documents&view=&src_module=Emails&src_field=testfield&multi_select=1
'src_field':'testfield'
};
}
if(typeof multiple != 'undefined' && multiple === true) {
params.multi_select = 1;
}
popupInstance.show(params, function (data) {
aDeferred.resolveWith(data);
});
}
return aDeferred.promise();
},
getCurrentLayout: function () {
if (FlexUtils.layout !== null) {
return FlexUtils.layout;
}
var skinpath = jQuery('body').data('skinpath');
var matches = skinpath.match(/layouts\/([^/]+)/);
if (matches.length >= 2) {
FlexUtils.layout = matches[1];
return matches[1];
}
FlexUtils.layout = 'vlayout';
return 'vlayout';
},
getQueryParams: function (paramName) {
var sURL = window.document.URL.toString();
if (sURL.indexOf("?") > 0) {
var arrParams = sURL.split("?");
var arrURLParams = arrParams[1].split("&");
var arrParamNames = new Array(arrURLParams.length);
var arrParamValues = new Array(arrURLParams.length);
var i = 0;
for (i = 0; i < arrURLParams.length; i++) {
var sParam = arrURLParams[i].split("=");
arrParamNames[i] = sParam[0];
if (sParam[1] != "") {
arrParamValues[i] = decodeURI(sParam[1]);
} else {
arrParamValues[i] = "No Value";
}
}
for (i = 0; i < arrURLParams.length; i++) {
if (arrParamNames[i] == paramName) {
//alert("Parameter:" + arrParamValues[i]);
return arrParamValues[i];
}
}
}
return false;
},
onListChange: function() {
if (FlexCache.get('__onListChangeSignal', false) == false) {
var aSignal = new FlexUtils.Signal();
app.event.on("post.listViewFilter.click", function (e, container) {
aSignal.dispatch(container);
});
FlexCache.set('__onListChangeSignal', aSignal);
}
return FlexCache.get('__onListChangeSignal');
},
onRelatedListChange: function () {
if (FlexCache.get('__onRelatedListChangeSignal', false) == false) {
var aSignal = new FlexUtils.Signal();
app.event.on("post.relatedListLoad.click", function (e, container) {
aSignal.dispatch(container);
});
FlexCache.set('__onRelatedListChangeSignal', aSignal);
}
return FlexCache.get('__onRelatedListChangeSignal');
},
UUIDCounter: 1,
FieldChangeEventInit: false,
// Will register an event, when a field is changed
onFieldChange: function (parentEle) {
if(typeof parentEle === 'undefined') {
parentEle = 'div#page';
}
// Only register one signal for FieldChanges
if (jQuery(parentEle).data('fielduid') === undefined) {
jQuery(parentEle).data('fielduid', 'parentEle' + FlexUtils.UUIDCounter);
FlexUtils.UUIDCounter++;
}
var Fielduid = jQuery(parentEle).data('fielduid');
jQuery(parentEle).addClass('RedooFieldChangeTracker');
var aSignal;
if (FlexCache.get('__onFieldChangeSignal' + Fielduid, false) == false) {
aSignal = new FlexUtils.Signal();
if (FlexUtils.isVT7()) {
if (FlexUtils.FieldChangeEventInit === false) {
if(typeof Vtiger_Detail_Js !== 'undefined') {
app.event.on(Vtiger_Detail_Js.PostAjaxSaveEvent, function (e, fieldBasicData, postSaveRecordDetails, contentHolder) {
var fieldElement = fieldBasicData.closest('.RedooFieldChangeTracker');
var Fielduid = fieldElement.data('fielduid');
aSignal = FlexCache.get('__onFieldChangeSignal' + Fielduid);
aSignal.dispatch({
name: fieldBasicData.data('name'),
"new": postSaveRecordDetails[fieldBasicData.data('name')].value
}, fieldBasicData, postSaveRecordDetails, contentHolder);
});
FlexUtils.FieldChangeEventInit = true;
}
}
}
else {
if(FlexUtils.getViewMode() !== "listview" && typeof Vtiger_Detail_Js !== "undefined") {
var thisInstance = Vtiger_Detail_Js.getInstance();
var detailContentsHolder = thisInstance.getContentHolder();
detailContentsHolder.on(thisInstance.fieldUpdatedEvent, function(e, values) {
var target = $(e.target);
var fieldName = target.attr('name');
var fieldElement = target.closest('.RedooFieldChangeTracker');
var Fielduid = fieldElement.data('fielduid');
aSignal = FlexCache.get('__onFieldChangeSignal' + Fielduid);
aSignal.dispatch({
name: fieldName,
"new": values.new
}, values, {}, detailContentsHolder);
});
}
}
FlexCache.set('__onFieldChangeSignal' + Fielduid, aSignal);
}
else {
aSignal = FlexCache.get('__onFieldChangeSignal' + Fielduid);
}
return FlexCache.get('__onFieldChangeSignal' + Fielduid);
},
getRecordLabels: function (ids) {
var aDeferred = jQuery.Deferred();
var newIds = [];
var LabelCache = FlexCache.get('LabelCache', {});
jQuery.each(ids, function (index, value) {
if (typeof LabelCache[value] == 'undefined') {
newIds.push(value);
}
});
if (newIds.length > 0) {
FlexAjax.postAction('RecordLabel', {
ids: newIds,
'dataType': 'json'
}).then(function (response) {
jQuery.each(response.result, function (id, value) {
LabelCache[id] = value;
});
FlexCache.set('LabelCache', LabelCache);
aDeferred.resolveWith({}, [LabelCache]);
});
}
else {
aDeferred.resolveWith({}, [LabelCache]);
}
return aDeferred.promise();
},
getFieldList: function (moduleName) {
var aDeferred = jQuery.Deferred();
if (typeof _FlexCache.FieldLoadQueue[moduleName] != 'undefined') {
return _FlexCache.FieldLoadQueue[moduleName];
}
_FlexCache.FieldLoadQueue[moduleName] = aDeferred;
if (typeof _FlexCache.FieldCache[moduleName] != 'undefined') {
aDeferred.resolve(_FlexCache.FieldCache[moduleName]);
return aDeferred.promise();
}
FlexAjax.post('index.php', {
'module': ScopeName,
'mode': 'GetFieldList',
'action': 'RedooUtils',
'module_name': moduleName
}, 'json').then(function (data) {
_FlexCache.FieldCache[moduleName] = data;
aDeferred.resolve(data.fields);
});
return aDeferred.promise();
},
filterFieldListByFieldtype: function (fields, fieldtype) {
var result = {};
jQuery.each(fields, function (blockLabel, fields) {
var block = [];
jQuery.each(fields, function (fieldName, fieldData) {
if (fieldData.type == fieldtype) {
block.push(fieldData);
}
});
if (block.length > 0) {
result[blockLabel] = block;
}
});
return result;
},
fillFieldSelect: function (fieldId, selected, module, fieldtype) {
if (typeof fieldtype == 'undefined') {
fieldtype = '';
}
if (typeof module == 'undefined' && typeof window.moduleName !== 'undefined') {
module = window.moduleName;
}
if (typeof selected == 'string') {
selected = [selected];
}
FlexUtils.getFieldList(module, fieldtype).then(function (fields) {
if (fieldtype != '') {
fields = FlexUtils.filterFieldListByFieldtype(fields, fieldtype);
}
var html = '';
jQuery.each(fields, function (blockLabel, fields) {
html += '<optgroup label="' + blockLabel + '">';
jQuery.each(fields, function (index, field) {
html += '<option value="' + field.name + '" ' + (jQuery.inArray(field.name, selected) != -1 ? 'selected="selected"' : '') + '>' + field.label + '</option>';
});
html += '</optgroup>';
jQuery('#' + fieldId).html(html);
if (jQuery('#' + fieldId).hasClass('select2')) {
jQuery('#' + fieldId).select2('val', selected);
}
jQuery('#' + fieldId).trigger('FieldsLoaded');
});
});
},
_getDefaultParentEle: function () {
return 'div#page';
},
getMainModule: function (parentEle) {
if (FlexUtils.isVT7()) {
return FlexUtils._getMainModuleVT7(parentEle);
}
else {
return FlexUtils._getMainModuleVT6(parentEle);
}
},
_getMainModuleVT6: function (parentEle) {
if (typeof parentEle == 'undefined') {
parentEle = FlexUtils._getDefaultParentEle();
}
var viewMode = FlexUtils.getViewMode(parentEle);
if (viewMode == 'detailview' || viewMode == 'summaryview') {
return $('#module', parentEle).val();
}
else if (viewMode == 'editview' || viewMode == 'quickcreate') {
return $('[name="module"]', parentEle).val();
}
else if (viewMode == 'listview') {
return $('#module', parentEle).val();
}
else if (viewMode == 'relatedview') {
if ($('[name="relatedModuleName"]', parentEle).length > 0) {
return $('[name="relatedModuleName"]', parentEle).val();
}
if ($('#module', parentEle).length > 0) {
return $('#module', parentEle).val();
}
}
var QueryModule = FlexUtils.getQueryParams('module');
if (QueryModule !== false) {
return QueryModule;
}
return '';
},
_getMainModuleVT7: function (parentEle) {
if (typeof parentEle == 'undefined') {
parentEle = FlexUtils._getDefaultParentEle();
}
var viewMode = FlexUtils.getViewMode(parentEle);
if ($(parentEle).data('forcerecordmodule') !== undefined) {
return $(parentEle).data('forcerecordmodule');
}
if (parentEle != '#overlayPageContent.in' && $('#overlayPageContent.in').length > 0) {
return FlexUtils._getMainModuleVT7('#overlayPageContent.in');
}
if (typeof _META != 'undefined' &&
(viewMode == 'detailview' ||
viewMode == 'summaryview' ||
viewMode == 'commentview' ||
viewMode == 'historyview' ||
viewMode == 'editview' ||
viewMode == 'listview') &&
($(parentEle).hasClass('modal') == false)) {
return _META.module;
}
else {
if (viewMode == 'detailview' || viewMode == 'summaryview') {
return $('#module', parentEle).val();
}
else if (viewMode == 'editview' || viewMode == 'quickcreate') {
if ($('#module', parentEle).length > 0) {
return $('#module', parentEle).val();
}
else {
return $('[name="module"]', parentEle).val();
}
}
else if (viewMode == 'listview') {
return $('#module', parentEle).val();
}
else if (viewMode == 'relatedview') {
if ($('[name="relatedModuleName"]', parentEle).length > 0) {
return $('[name="relatedModuleName"]', parentEle).val();
}
if ($('#module', parentEle).length > 0) {
return $('#module', parentEle).val();
}
}
}
var QueryModule = FlexUtils.getQueryParams('module');
if (QueryModule !== false) {
return QueryModule;
}
return '';
},
getMainRecordId: function () {
var parentEle = 'div#page';
if (typeof parentEle == 'undefined') {
parentEle = FlexUtils._getDefaultParentEle();
}
var recordId = false;
var viewMode = FlexUtils.getViewMode(parentEle);
// if (viewMode == 'detailview' || viewMode == 'summaryview') {
recordId= $('#recordId', parentEle).val();
// }
return recordId;
},
getRecordIds: function (parentEle) {
if (typeof parentEle == 'undefined') {
parentEle = FlexUtils._getDefaultParentEle();
}
var recordIds = [];
var viewMode = FlexUtils.getViewMode(parentEle);
if (viewMode == 'detailview' || viewMode == 'summaryview') {
recordIds.push($('#recordId', parentEle).val());
}
else if (viewMode == 'quickcreate') {
// do nothing
}
else if (viewMode == 'editview') {
recordIds.push($('[name="record"]').val());
}
else if (viewMode == 'listview') {
$('.listViewEntries').each(function (index, value) {
recordIds.push($(value).data('id'));
});
}
else if (viewMode == 'relatedview') {
$('.listViewEntries').each(function (index, value) {
recordIds.push($(value).data('id'));
});
}
return recordIds;
},
onQuickCreate: function(callback) {
jQuery('.quickCreateModule, .addButton[data-url*="QuickCreate"]').on('click', function __checkQC() {
if (jQuery('.quickCreateContent', '.modelContainer').length == 0) {
window.setTimeout(__checkQC, 200);
} else {
var form = jQuery('.modelContainer');
console.log('onQuickCreate Done');
callback(form.find('input[name="module"]').val(), form);
}
});
},
getViewMode: function (parentEle) {
if (FlexUtils.isVT7()) {
return FlexUtils._getViewModeVT7(parentEle);
}
else {
return FlexUtils._getViewModeVT6(parentEle);
}
},
_getViewModeVT6: function (parentEle) {
if (typeof parentEle == 'undefined') {
parentEle = FlexUtils._getDefaultParentEle();
}
var viewEle = $("#view", parentEle);
_FlexCache.viewMode = false;
if (viewEle.length > 0 && viewEle[0].value == "List") {
_FlexCache.viewMode = "listview";
}
if ($(".detailview-table", parentEle).length > 0) {
_FlexCache.viewMode = "detailview";
}
else if ($(".summaryView", parentEle).length > 0) {
_FlexCache.viewMode = "summaryview";
}
else if ($(".recordEditView", parentEle).length > 0) {
if ($('.quickCreateContent', parentEle).length == 0) {
_FlexCache.viewMode = "editview";
}
else {
_FlexCache.viewMode = "quickcreate";
}
}
if ($('.relatedContents', parentEle).length > 0) {
_FlexCache.viewMode = "relatedview";
if ($('td[data-field-type]', parentEle).length > 0) {
_FlexCache.popUp = false;
}
else {
_FlexCache.popUp = true;
}
}
if (_FlexCache.viewMode === false) {
if ($('#view', parentEle).length > 0) {
if ($('#view', parentEle).val() == 'Detail') {
_FlexCache.viewMode = 'detailview';
}
}
}
return _FlexCache.viewMode;
},
_getViewModeVT7: function (parentEle) {
if (typeof parentEle == 'undefined') {
parentEle = FlexUtils._getDefaultParentEle();
}
_FlexCache.viewMode = false;
if ($(".detailview-table", parentEle).length > 0) {
_FlexCache.viewMode = "detailview";
}
else if ($(".summaryView", parentEle).length > 0) {
_FlexCache.viewMode = "summaryview";
}
else if ($(".recordEditView", parentEle).length > 0) {
if ($('.quickCreateContent', parentEle).length == 0) {
_FlexCache.viewMode = "editview";
}
else {
_FlexCache.viewMode = "quickcreate";
}
}
else if ($(".commentsRelatedContainer", parentEle).length > 0) {
_FlexCache.viewMode = "commentview";
}
else if ($(".HistoryContainer", parentEle).length > 0) {
_FlexCache.viewMode = "historyview";
}
else if (jQuery('.relatedContainer', parentEle).find('.relatedModuleName').length > 0) {
_FlexCache.viewMode = "relatedview";
}
else if (jQuery('.listViewContentHeader', parentEle).length > 0 && typeof _META != 'undefined' && _META.view == 'List') {
_FlexCache.viewMode = "listview";
}
if (_FlexCache.viewMode === false) {
if ($('#view', parentEle).length > 0) {
if ($('#view', parentEle).val() == 'Detail') {
_FlexCache.viewMode = 'detailview';
}
}
}
return _FlexCache.viewMode;
},
getContentMaxHeight: function() {
if(FlexUtils.isVT7() == false) {
switch(FlexUtils.getCurrentLayout()) {
case 'begbie':
return jQuery('.mainContainer').height();
default:
return jQuery('#leftPanel').height() - 50;
}
} else {
return jQuery('#page').height();
}
},
getContentMaxWidth: function() {
if(FlexUtils.isVT7() == false) {
return jQuery('#rightPanel').width();
}
},
hideModalBox: function (content) {
if (FlexUtils.isVT7() === true) {
app.helper.hideModal();
}
else {
app.hideModalWindow();
}
},
showModalBox: function (content,params) {
var aDeferred = jQuery.Deferred();
if (FlexUtils.isVT7() === false) {
app.showModalWindow(content, function (data) {
aDeferred.resolveWith(window, data);
});
} else {
if(typeof params == 'undefined') {
params = { close:function() { }};
}
if(typeof params.close == 'undefined') {
params.close = function() { };
}
FlexCache.set('__onModalClose', params.close);
if(jQuery('.myModal .modal-dialog').length > 0 && jQuery('.modal.in').length > 0) {
jQuery('.myModal .modal-dialog').replaceWith(content);
aDeferred.resolveWith(window, jQuery('.modal.myModal')[0]);
} else {
var container = app.helper.showModal(content, {
cb: function (data) {
aDeferred.resolveWith(window, data);
}
});
container.off('hidden.bs.modal').on('hidden.bs.modal', function() {
params.close();
});
}
}
return aDeferred.promise();
},
showContentOverlay: function(data, params) {
if(FlexUtils.isVT7()) {
return app.helper.loadPageContentOverlay(data, params);
} else {
if($('#overlayPageContent').length == 0) {
$('body').append('<div id=\'overlayPageContent\' style="margin:0;" class=\'fade modal content-area overlayPageContent overlay-container-60\' tabindex=\'-1\' role=\'dialog\' aria-hidden=\'true\'>\n' +
' <div class="data">\n' +
' </div>\n' +
' <div class="modal-dialog">\n' +
' </div>\n' +
' </div>');
}
var aDeferred = new jQuery.Deferred();
var defaultParams = {
backdrop:true,
show:true,
keyboard: false
};
params = jQuery.extend(defaultParams, params);
var overlayPageContent = $('#overlayPageContent');
//if(jQuery(".content-area").length && jQuery(".content-area").hasClass('full-width')|| (jQuery('.settingsgroup').length === 0 && jQuery('#modules-menu').length === 0)){
overlayPageContent.addClass('full-width');
//}
var alreadyShown = false;
if(overlayPageContent.hasClass('in')) {
alreadyShown = true;
}
overlayPageContent.one('shown.bs.modal',function(){
aDeferred.resolve($('#overlayPageContent'));
});
overlayPageContent.one('hidden.bs.modal',function(){
overlayPageContent.find('.data').html('');
});
overlayPageContent.find('.data').html(data);
//vtUtils.applyFieldElementsView(overlayPageContent);
overlayPageContent.modal(params);
if(alreadyShown) {
aDeferred.resolve(jQuery('#overlayPageContent'));
}
return aDeferred.promise();
}
},
hideContentOverlay: function() {
if(FlexUtils.isVT7()) {
app.helper.hidePageContentOverlay();
} else {
var aDeferred = new jQuery.Deferred();
var overlayPageContent = $('#overlayPageContent');
overlayPageContent.one('hidden.bs.modal', function() {
overlayPageContent.find('.data').html('');
aDeferred.resolve();
});
$('#overlayPageContent').modal('hide');
return aDeferred.promise();
}
},
setFieldValue: function (fieldName, fieldValue, parentEle) {
if (typeof parentEle == 'undefined' || parentEle == null) {
parentEle = FlexUtils._getDefaultParentEle();
}
var fieldElement = FlexUtils.getFieldElement(fieldName, parentEle, true);
switch (fieldElement.prop('tagName')) {
case 'INPUT':
switch (fieldElement.attr('type')) {
case 'text':
if (fieldElement.hasClass('dateField')) {
if(FlexUtils.isVT7()) {
fieldElement.datepicker('update', fieldValue);
} else {
if(fieldValue !== '') {
fieldElement.val(fieldValue).DatePickerSetDate(fieldValue, true);
} else {
fieldElement.val(fieldValue).DatePickerClear();
}
}
}
else {
fieldElement.val(fieldValue);
}
break;
case 'hidden':
if (fieldElement.hasClass('sourceField')) {
var obj = Vtiger_Edit_Js.getInstance();
var container = fieldElement.closest('td');
if (fieldValue.id != '') {
obj.setReferenceFieldValue(container, { id: fieldValue.id, name: fieldValue.label });
}
else {
$('.clearReferenceSelection', container).trigger('click');
}
}
break;
}
break;
case 'SELECT':
fieldElement.val(fieldValue);
if(FlexUtils.isVT7() === false) {
if (fieldElement.hasClass('chzn-select')) {
fieldElement.trigger('liszt:updated');
}
} else {
if (fieldElement.hasClass('select2')) {
fieldElement.trigger('change.select2');
}
}
break;
}
},
layoutDependValue: function (value, defaultValue) {
var currentLayout = FlexUtils.getCurrentLayout();
if (typeof value[currentLayout] !== 'undefined') {
return value[currentLayout];
}
return defaultValue;
},
getFieldElement: function (fieldName, parentEle, returnInput) {
if (typeof parentEle == 'undefined' || parentEle == null) {
parentEle = FlexUtils._getDefaultParentEle();
}
if (typeof returnInput == 'undefined') {
returnInput = false;
}
if (typeof fieldName == "object") {
return fieldName;
}
var fieldElement = false;
if (FlexUtils.getViewMode(parentEle) == "detailview") {
if ($('#' + FlexUtils.getMainModule(parentEle) + '_detailView_fieldValue_' + fieldName, parentEle).length > 0 || $('#Events_detailView_fieldValue_' + fieldName, parentEle).length > 0) {
fieldElement = $('#' + FlexUtils.getMainModule(parentEle) + '_detailView_fieldValue_' + fieldName);
if (FlexUtils.getMainModule(parentEle) == 'Calendar' && fieldElement.length == 0) {
fieldElement = $('#Events_detailView_fieldValue_' + fieldName, parentEle);
}
}
else if ($('#_detailView_fieldValue_' + fieldName, parentEle).length > 0) {
fieldElement = $('#_detailView_fieldValue_' + fieldName, parentEle);
}
}
else if (FlexUtils.getViewMode(parentEle) == "summaryview") {
var ele_1;
if (FlexUtils.isVT7()) {
ele_1 = jQuery('[data-name="' + fieldName + '"]', this.parentEle);
}
else {
ele_1 = jQuery('[name="' + fieldName + '"]', this.parentEle);
}
if (ele_1.length == 0) {
return false;
/*
if(typeof this.summaryFields[fieldName] != 'undefined') {
fieldElement = jQuery(jQuery(FlexUtils.getCurrentLayout() == 'vlayout' ? '.summary-table td.fieldValue' : '.summary-table div.mycdivfield')[this.summaryFields[fieldName] - 1]);
} else {
return false;
}*/
}
else {
fieldElement = $(ele_1[0]).closest(FlexUtils.layoutDependValue({
'vlayout': 'td',
'v7': '.row',
'begbie': 'div.mycdivfield',
'responsive': '.row',
}, 'td'));
}
}
else if (FlexUtils.getViewMode(parentEle) == "editview" || FlexUtils.getViewMode(parentEle) == 'quickcreate') {
var ele = $('[name="' + fieldName + '"]', parentEle);
if (ele.length == 0) {
return false;
}
if (returnInput == true) {
return ele;
}
fieldElement = $(ele[0]).closest(FlexUtils.layoutDependValue({
'vlayout': '.fieldValue',
'v7': '.fieldValue',
'begbie': 'div.mycdivfield',
'responsive': '.fieldValue'
}, '.fieldValue'));
}
else if (FlexUtils.getViewMode(parentEle) == 'listview') {
if (FlexUtils.listViewFields === false) {
FlexUtils.listViewFields = FlexUtils.getListFields(parentEle);
}
if (FlexUtils.currentLVRow !== null) {
if (typeof FlexUtils.listViewFields[fieldName] != 'undefined') {
if (FlexUtils.listViewFields[fieldName] >= 0) {
fieldElement = $($('td.listViewEntryValue', FlexUtils.currentLVRow)[FlexUtils.listViewFields[fieldName]]);
}
else {
fieldElement = $($('td.listViewEntryValue', FlexUtils.currentLVRow)[Number(FlexUtils.listViewFields[fieldName] + 100) * -1]);
}
}
else {
return false;
}
}
else {
return false;
}
}
else if (FlexUtils.getViewMode(parentEle) == 'relatedview') {
if (FlexUtils.listViewFields === false) {
FlexUtils.listViewFields = FlexUtils.getListFields(parentEle);
}
if ($('td[data-field-type]', FlexUtils.currentLVRow).length > 0) {
fieldElement = $($('td[data-field-type]', FlexUtils.currentLVRow)[FlexUtils.listViewFields[fieldName]]);
}
else {
fieldElement = $($('td.listViewEntryValue', FlexUtils.currentLVRow)[FlexUtils.listViewFields[fieldName]]);
}
}
return fieldElement;
},
refreshContent: function (viewName, isSettings, params, convertComponents) {
if (typeof params === 'undefined') {
convertComponents = false;
}
if (typeof params === 'undefined') {
params = {};
}
if (typeof isSettings === 'undefined') {
isSettings = false;
}
params.module = ScopeName;
params.view = viewName;
if (isSettings === true) {
params.parent = 'Settings';
}
var aDeferred = jQuery.Deferred();
if (FlexUtils.isVT7()) {
FlexAjax.request(params).then(function (data) {
var target;
if(jQuery('.settingsPageDiv').length > 0) {
jQuery(".settingsPageDiv").html(data);
target = jQuery(".settingsPageDiv");
} else {
jQuery(".ContentReplacement").html(data);
target = jQuery(".ContentReplacement");
}
if(convertComponents === true) {
jQuery(".select2", target).select2();
}
aDeferred.resolve();
});
}
else {
FlexAjax.request(params).then(function (data) {
jQuery(jQuery(".contentsDiv")[0]).html(data);
if(convertComponents === true) {
jQuery(jQuery(".contentsDiv")[0]).find('.select2').select2();
}
aDeferred.resolve();
});
}
return aDeferred.promise();
},
getListFields: function (parentEle) {
var cols;
if(FlexUtils.isVT7()) {
cols = jQuery(".listview-table .listViewContentHeaderValues", parentEle);
} else {
cols = jQuery(".listViewEntriesTable .listViewHeaderValues", parentEle);
}
var listViewFields = {};
for (var colIndex in cols) {
if (cols.hasOwnProperty(colIndex) && jQuery.isNumeric(colIndex)) {
var value = cols[colIndex];
if (jQuery(value).data("columnname") == undefined) {
listViewFields[jQuery(value).data("fieldname")] = colIndex;
}
else {
listViewFields[jQuery(value).data("columnname")] = colIndex;
}
}
}
return listViewFields;
},
loadStyles: function (urls, nocache) {
if (typeof urls == 'string') {
urls = [urls];
}
var aDeferred = jQuery.Deferred();
if (typeof nocache == 'undefined') {
nocache = false; // default don't refresh
}
$.when.apply($, $.map(urls, function (url) {
if (nocache) {
url += '?_ts=' + new Date().getTime(); // refresh?
}
return $.get(url, function () {
$('<link>', { rel: 'stylesheet', type: 'text/css', 'href': url }).appendTo('head');
});
})).then(function () {
aDeferred.resolve();
});
return aDeferred.promise();
},
loadScript: function (url, options) {
var aDeferred = jQuery.Deferred();
if (typeof FlexCache.loadedScript == 'undefined') {
FlexCache.loadedScript = {};
}
if (typeof FlexCache.loadedScript[url] != 'undefined') {
aDeferred.resolve();
return aDeferred;
}
// Allow user to set any option except for dataType, cache, and url
options = jQuery.extend(options || {}, {
dataType: "script",
cache: true,
url: url
});
// Use $.ajax() since it is more flexible than $.getScript
// Return the jqXHR object so we can chain callbacks
return jQuery.ajax(options);
}
};var _FlexCache = {
'FieldCache': {},
'FieldLoadQueue': {},
'viewMode': false,
'popUp': false
};
if(typeof console != 'undefined' && typeof console.log != 'undefined') {
console.log('Initialize FlexUtils ' + ScopeName + " V" + Version);
}
if (typeof window.FlexStore == 'undefined') {
window.FlexStore = {};
}
if (typeof window.RedooStore == 'undefined') {
window.RedooStore = {};
}
window.RedooStore[ScopeName] = window.FlexStore[ScopeName] = {
'Ajax': FlexAjax,
'Utils': FlexUtils,
'Cache': FlexCache,
'Form': FlexForm,
'Translate': FlexTranslate
};
if (typeof window.FlexAjax == 'undefined') {
/**
* @ignore
* @param {string} ScopeName
* @returns {FlexAjax}
*/
window.FlexAjax = function (ScopeName) {
if (typeof window.FlexStore[ScopeName] != 'undefined') {
return window.FlexStore[ScopeName].Ajax;
}
if (typeof window.RedooStore[ScopeName] != 'undefined') {
return window.RedooStore[ScopeName].Ajax;
}
console.error('FlexAjax ' + ScopeName + ' Scope not found');
};
}
if (typeof window.RedooAjax == 'undefined') {
window.RedooAjax = window.FlexAjax;
}
if (typeof window.FlexUtils == 'undefined') {
/**
* @ignore
* @param ScopeName
* @returns FlexUtils
* @constructor
*/
window.FlexUtils = function (ScopeName) {
if (typeof window.FlexStore[ScopeName] != 'undefined') {
return window.FlexStore[ScopeName].Utils;
}
if (typeof window.RedooStore[ScopeName] != 'undefined') {
return window.RedooStore[ScopeName].Utils;
}
console.error('FlexUtils ' + ScopeName + ' Scope not found');
};
}
if (typeof window.RedooUtils == 'undefined') {
window.RedooUtils = window.FlexUtils;
}
if (typeof window.FlexCache == 'undefined') {
/**
* @ignore
* @param ScopeName
* @returns FlexCache
* @constructor
*/
window.FlexCache = function (ScopeName) {
if (typeof window.RedooStore[ScopeName] != 'undefined') {
return window.RedooStore[ScopeName].Cache;
}
if (typeof window.FlexStore[ScopeName] != 'undefined') {
return window.FlexStore[ScopeName].Cache;
}
console.error('FlexCache ' + ScopeName + ' Scope not found');
};
}
if (typeof window.RedooCache == 'undefined') {
window.RedooCache = window.FlexCache;
}
if (typeof window.FlexForm == 'undefined') {
/**
* @ignore
* @param ScopeName
* @returns FlexCache
* @constructor
*/
window.FlexForm = function (ScopeName) {
if (typeof window.FlexStore[ScopeName] != 'undefined') {
return window.FlexStore[ScopeName].Form;
}
console.error('FlexForm ' + ScopeName + ' Scope not found');
};
}
if (typeof window.FlexTranslate == 'undefined') {
/**
* @ignore
* @param ScopeName
* @returns FlexCache
* @constructor
*/
window.FlexTranslate = function (ScopeName) {
if (typeof window.FlexStore[ScopeName] != 'undefined') {
return window.FlexStore[ScopeName].Translate;
}
console.error('FlexTranslate ' + ScopeName + ' Scope not found');
};
}
if (typeof window.FlexEvents == 'undefined') {
/**
* @ignore
* @returns jQuery Eventhandler
* @constructor
*/
window.FlexEvents = $({});
}// Dependency
/* jshint ignore:start */
/*
JS Signals <http://millermedeiros.github.com/js-signals/>
Released under the MIT license
Author: Miller Medeiros
Version: 1.0.0 - Build: 268 (2012/11/29 05:48 PM)
*/
function h(a, b, c, d, e) { this._listener = b; this._isOnce = c; this.context = d; this._signal = a; this._priority = e || 0; }
function g(a, b) { if (typeof a !== "function")
throw Error("listener is a required param of {fn}() and should be a Function.".replace("{fn}", b)); }
function e() { this._bindings = []; this._prevParams = null; var a = this; this.dispatch = function () { e.prototype.dispatch.apply(a, arguments); }; }
h.prototype = { active: !0, params: null, execute: function (a) {
var b;
this.active && this._listener && (a = this.params ? this.params.concat(a) :
a, b = this._listener.apply(this.context, a), this._isOnce && this.detach());
return b;
}, detach: function () { return this.isBound() ? this._signal.remove(this._listener, this.context) : null; }, isBound: function () { return !!this._signal && !!this._listener; }, isOnce: function () { return this._isOnce; }, getListener: function () { return this._listener; }, getSignal: function () { return this._signal; }, _destroy: function () { delete this._signal; delete this._listener; delete this.context; }, toString: function () {
return "[SignalBinding isOnce:" + this._isOnce +
", isBound:" + this.isBound() + ", active:" + this.active + "]";
} };
e.prototype = { VERSION: "1.0.0", memorize: !1, _shouldPropagate: !0, active: !0, _registerListener: function (a, b, c, d) { var e = this._indexOfListener(a, c); if (e !== -1) {
if (a = this._bindings[e], a.isOnce() !== b)
throw Error("You cannot add" + (b ? "" : "Once") + "() then add" + (!b ? "" : "Once") + "() the same listener without removing the relationship first.");
}
else
a = new h(this, a, b, c, d), this._addBinding(a); this.memorize && this._prevParams && a.execute(this._prevParams); return a; },
_addBinding: function (a) { var b = this._bindings.length; do
--b;
while (this._bindings[b] && a._priority <= this._bindings[b]._priority); this._bindings.splice(b + 1, 0, a); }, _indexOfListener: function (a, b) { for (var c = this._bindings.length, d; c--;)
if (d = this._bindings[c], d._listener === a && d.context === b)
return c; return -1; }, has: function (a, b) { return this._indexOfListener(a, b) !== -1; }, add: function (a, b, c) { g(a, "add"); return this._registerListener(a, !1, b, c); }, addOnce: function (a, b, c) {
g(a, "addOnce");
return this._registerListener(a, !0, b, c);
}, remove: function (a, b) { g(a, "remove"); var c = this._indexOfListener(a, b); c !== -1 && (this._bindings[c]._destroy(), this._bindings.splice(c, 1)); return a; }, removeAll: function () { for (var a = this._bindings.length; a--;)
this._bindings[a]._destroy(); this._bindings.length = 0; }, getNumListeners: function () { return this._bindings.length; }, halt: function () { this._shouldPropagate = !1; }, dispatch: function (a) {
if (this.active) {
var b = Array.prototype.slice.call(arguments), c = this._bindings.length, d;
if (this.memorize)
this._prevParams =
b;
if (c) {
d = this._bindings.slice();
this._shouldPropagate = !0;
do
c--;
while (d[c] && this._shouldPropagate && d[c].execute(b) !== !1);
}
}
}, forget: function () { this._prevParams = null; }, dispose: function () { this.removeAll(); delete this._bindings; delete this._prevParams; }, toString: function () { return "[Signal active:" + this.active + " numListeners:" + this.getNumListeners() + "]"; } };
var f = e;
f.Signal = e;
FlexUtils.Signal = f.Signal;
/*
* jQuery BlockUI; v20141123
* http://jquery.malsup.com/block/
* Copyright (c) 2014 M. Alsup; Dual licensed: MIT/GPL
*/
(function () {
"use strict";
function e(e) { function o(o, i) { var s, h, k = o == window, v = i && void 0 !== i.message ? i.message : void 0; if (i = e.extend({}, FlexUtils.blockUI.defaults, i || {}), !i.ignoreIfBlocked || !e(o).data("blockUI.isBlocked")) {
if (i.overlayCSS = e.extend({}, FlexUtils.blockUI.defaults.overlayCSS, i.overlayCSS || {}), s = e.extend({}, FlexUtils.blockUI.defaults.css, i.css || {}), i.onOverlayClick && (i.overlayCSS.cursor = "pointer"), h = e.extend({}, FlexUtils.blockUI.defaults.themedCSS, i.themedCSS || {}), v = void 0 === v ? i.message : v, k && b && t(window, { fadeOut: 0 }), v && "string" != typeof v && (v.parentNode || v.jquery)) {
var y = v.jquery ? v[0] : v, m = {};
e(o).data("blockUI.history", m), m.el = y, m.parent = y.parentNode, m.display = y.style.display, m.position = y.style.position, m.parent && m.parent.removeChild(y);
}
e(o).data("blockUI.onUnblock", i.onUnblock);
var g, I, w, U, x = i.baseZ;
g = r || i.forceIframe ? e('<iframe class="blockUI" style="z-index:' + x++ + ';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="' + i.iframeSrc + '"></iframe>') : e('<div class="blockUI" style="display:none"></div>'), I = i.theme ? e('<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:' + x++ + ';display:none"></div>') : e('<div class="blockUI blockOverlay" style="z-index:' + x++ + ';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>'), i.theme && k ? (U = '<div class="blockUI ' + i.blockMsgClass + ' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:' + (x + 10) + ';display:none;position:fixed">', i.title && (U += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">' + (i.title || "&nbsp;") + "</div>"), U += '<div class="ui-widget-content ui-dialog-content"></div>', U += "</div>") : i.theme ? (U = '<div class="blockUI ' + i.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:' + (x + 10) + ';display:none;position:absolute">', i.title && (U += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">' + (i.title || "&nbsp;") + "</div>"), U += '<div class="ui-widget-content ui-dialog-content"></div>', U += "</div>") : U = k ? '<div class="blockUI ' + i.blockMsgClass + ' blockPage" style="z-index:' + (x + 10) + ';display:none;position:fixed"></div>' : '<div class="blockUI ' + i.blockMsgClass + ' blockElement" style="z-index:' + (x + 10) + ';display:none;position:absolute"></div>', w = e(U), v && (i.theme ? (w.css(h), w.addClass("ui-widget-content")) : w.css(s)), i.theme || I.css(i.overlayCSS), I.css("position", k ? "fixed" : "absolute"), (r || i.forceIframe) && g.css("opacity", 0);
var C = [g, I, w], S = k ? e("body") : e(o);
e.each(C, function () { this.appendTo(S); }), i.theme && i.draggable && e.fn.draggable && w.draggable({ handle: ".ui-dialog-titlebar", cancel: "li" });
var O = f && (!e.support.boxModel || e("object,embed", k ? null : o).length > 0);
if (u || O) {
if (k && i.allowBodyStretch && e.support.boxModel && e("html,body").css("height", "100%"), (u || !e.support.boxModel) && !k)
var E = d(o, "borderTopWidth"), T = d(o, "borderLeftWidth"), M = E ? "(0 - " + E + ")" : 0, B = T ? "(0 - " + T + ")" : 0;
e.each(C, function (e, o) { var t = o[0].style; if (t.position = "absolute", 2 > e)
k ? t.setExpression("height", "Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:" + i.quirksmodeOffsetHack + ') + "px"') : t.setExpression("height", 'this.parentNode.offsetHeight + "px"'), k ? t.setExpression("width", 'jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"') : t.setExpression("width", 'this.parentNode.offsetWidth + "px"'), B && t.setExpression("left", B), M && t.setExpression("top", M);
else if (i.centerY)
k && t.setExpression("top", '(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"'), t.marginTop = 0;
else if (!i.centerY && k) {
var n = i.css && i.css.top ? parseInt(i.css.top, 10) : 0, s = "((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + " + n + ') + "px"';
t.setExpression("top", s);
} });
}
if (v && (i.theme ? w.find(".ui-widget-content").append(v) : w.append(v), (v.jquery || v.nodeType) && e(v).show()), (r || i.forceIframe) && i.showOverlay && g.show(), i.fadeIn) {
var j = i.onBlock ? i.onBlock : c, H = i.showOverlay && !v ? j : c, z = v ? j : c;
i.showOverlay && I._fadeIn(i.fadeIn, H), v && w._fadeIn(i.fadeIn, z);
}
else
i.showOverlay && I.show(), v && w.show(), i.onBlock && i.onBlock.bind(w)();
if (n(1, o, i), k ? (b = w[0], p = e(i.focusableElements, b), i.focusInput && setTimeout(l, 20)) : a(w[0], i.centerX, i.centerY), i.timeout) {
var W = setTimeout(function () { k ? e.unblockUI(i) : e(o).unblock(i); }, i.timeout);
e(o).data("blockUI.timeout", W);
}
} } function t(o, t) { var s, l = o == window, a = e(o), d = a.data("blockUI.history"), c = a.data("blockUI.timeout"); c && (clearTimeout(c), a.removeData("blockUI.timeout")), t = e.extend({}, FlexUtils.blockUI.defaults, t || {}), n(0, o, t), null === t.onUnblock && (t.onUnblock = a.data("blockUI.onUnblock"), a.removeData("blockUI.onUnblock")); var r; r = l ? e("body").children().filter(".blockUI").add("body > .blockUI") : a.find(">.blockUI"), t.cursorReset && (r.length > 1 && (r[1].style.cursor = t.cursorReset), r.length > 2 && (r[2].style.cursor = t.cursorReset)), l && (b = p = null), t.fadeOut ? (s = r.length, r.stop().fadeOut(t.fadeOut, function () { 0 === --s && i(r, d, t, o); })) : i(r, d, t, o); } function i(o, t, i, n) { var s = e(n); if (!s.data("blockUI.isBlocked")) {
o.each(function () { this.parentNode && this.parentNode.removeChild(this); }), t && t.el && (t.el.style.display = t.display, t.el.style.position = t.position, t.el.style.cursor = "default", t.parent && t.parent.appendChild(t.el), s.removeData("blockUI.history")), s.data("blockUI.static") && s.css("position", "static"), "function" == typeof i.onUnblock && i.onUnblock(n, i);
var l = e(document.body), a = l.width(), d = l[0].style.width;
l.width(a - 1).width(a), l[0].style.width = d;
} } function n(o, t, i) { var n = t == window, l = e(t); if ((o || (!n || b) && (n || l.data("blockUI.isBlocked"))) && (l.data("blockUI.isBlocked", o), n && i.bindEvents && (!o || i.showOverlay))) {
var a = "mousedown mouseup keydown keypress keyup touchstart touchend touchmove";
o ? e(document).bind(a, i, s) : e(document).unbind(a, s);
} } function s(o) { if ("keydown" === o.type && o.keyCode && 9 == o.keyCode && b && o.data.constrainTabKey) {
var t = p, i = !o.shiftKey && o.target === t[t.length - 1], n = o.shiftKey && o.target === t[0];
if (i || n)
return setTimeout(function () { l(n); }, 10), !1;
} var s = o.data, a = e(o.target); return a.hasClass("blockOverlay") && s.onOverlayClick && s.onOverlayClick(o), a.parents("div." + s.blockMsgClass).length > 0 ? !0 : 0 === a.parents().children().filter("div.blockUI").length; } function l(e) { if (p) {
var o = p[e === !0 ? p.length - 1 : 0];
o && o.focus();
} } function a(e, o, t) { var i = e.parentNode, n = e.style, s = (i.offsetWidth - e.offsetWidth) / 2 - d(i, "borderLeftWidth"), l = (i.offsetHeight - e.offsetHeight) / 2 - d(i, "borderTopWidth"); o && (n.left = s > 0 ? s + "px" : "0"), t && (n.top = l > 0 ? l + "px" : "0"); } function d(o, t) { return parseInt(e.css(o, t), 10) || 0; } e.fn._fadeIn = e.fn.fadeIn; var c = e.noop || function () { }, r = /MSIE/.test(navigator.userAgent), u = /MSIE 6.0/.test(navigator.userAgent) && !/MSIE 8.0/.test(navigator.userAgent); document.documentMode || 0; var f = e.isFunction(document.createElement("div").style.setExpression); FlexUtils.blockUI = function (e) { o(window, e); }; FlexUtils.unblockUI = function (e) { t(window, e); }, e.growlUI = function (o, t, i, n) { var s = e('<div class="growlUI"></div>'); o && s.append("<h1>" + o + "</h1>"), t && s.append("<h2>" + t + "</h2>"), void 0 === i && (i = 3e3); var l = function (o) { o = o || {}, e.blockUI({ message: s, fadeIn: o.fadeIn !== void 0 ? o.fadeIn : 700, fadeOut: o.fadeOut !== void 0 ? o.fadeOut : 1e3, timeout: o.timeout !== void 0 ? o.timeout : i, centerY: !1, showOverlay: !1, onUnblock: n, css: FlexUtils.blockUI.defaults.growlCSS }); }; l(), s.css("opacity"), s.mouseover(function () { l({ fadeIn: 0, timeout: 3e4 }); var o = e(".blockMsg"); o.stop(), o.fadeTo(300, 1); }).mouseout(function () { e(".blockMsg").fadeOut(1e3); }); }, e.fn.block = function (t) { if (this[0] === window)
return e.blockUI(t), this; var i = e.extend({}, FlexUtils.blockUI.defaults, t || {}); return this.each(function () { var o = e(this); i.ignoreIfBlocked && o.data("blockUI.isBlocked") || o.unblock({ fadeOut: 0 }); }), this.each(function () { "static" == e.css(this, "position") && (this.style.position = "relative", e(this).data("blockUI.static", !0)), this.style.zoom = 1, o(this, t); }); }, e.fn.unblock = function (o) { return this[0] === window ? (e.unblockUI(o), this) : this.each(function () { t(this, o); }); }, FlexUtils.blockUI.version = 2.7, FlexUtils.blockUI.defaults = { message: "<h1>Please wait...</h1>", title: null, draggable: !0, theme: !1, css: { padding: 0, margin: 0, width: "30%", top: "40%", left: "35%", textAlign: "center", color: "#000", border: "3px solid #aaa", backgroundColor: "#fff", cursor: "wait" }, themedCSS: { width: "30%", top: "40%", left: "35%" }, overlayCSS: { backgroundColor: "#000", opacity: 0.6, cursor: "wait" }, cursorReset: "default", growlCSS: { width: "350px", top: "10px", left: "", right: "10px", border: "none", padding: "5px", opacity: 0.6, cursor: "default", color: "#fff", backgroundColor: "#000", "-webkit-border-radius": "10px", "-moz-border-radius": "10px", "border-radius": "10px" }, iframeSrc: /^https/i.test(window.location.href || "") ? "javascript:false" : "about:blank", forceIframe: !1, baseZ: 2e3, centerX: !0, centerY: !0, allowBodyStretch: !0, bindEvents: !0, constrainTabKey: !0, fadeIn: 200, fadeOut: 400, timeout: 0, showOverlay: !0, focusInput: !0, focusableElements: ":input:enabled:visible", onBlock: null, onUnblock: null, onOverlayClick: null, quirksmodeOffsetHack: 4, blockMsgClass: "blockMsg", ignoreIfBlocked: !1 }; var b = null, p = []; }
"function" == typeof define && define.amd && define.amd.jQuery ? define(["jquery"], e) : e(jQuery);
})();
/* jshint ignore:end */
})(jQuery);
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZsZXhVdGlscy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJGbGV4VXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6W119