/****************************************************************************************************************************************/
var environmentBlockCount = 0;
var environmentController = null;
/****************************************************************************************************************************************/
function attachSpinner(targetSelector) {
var targetObject = $(targetSelector);
targetElement = targetObject.get(0);
var spinnerObject = new Spinner({
lines: 13, // The number of lines to draw
length: 2, // The length of each line
width: 8, // The line thickness
radius: 25, // The radius of the inner circle
corners: 0.8, // Corner roundness (0..1)
rotate: 0, // The rotation offset
direction: 1, // 1: clockwise, -1: counterclockwise
color: '#444', // #rgb or #rrggbb or array of colors
speed: 1.2, // Rounds per second
trail: 50, // Afterglow percentage
shadow: false, // Whether to render a shadow
hwaccel: false, // Whether to use hardware acceleration
className: 'spinner', // The CSS class to assign to the spinner
zIndex: 2e9, // The z-index (defaults to 2000000000)
}).spin(targetElement);
}
$(function() {
attachSpinner('#o2_environment_block_container');
});
function encodeParameterArray(parameterArray) {
var parameterSyntaxArray = [];
for (var i in parameterArray) {
parameterSyntaxArray.push(i+'='+parameterArray[i]);
}
var parameterSyntax = '?'+parameterSyntaxArray.join('&');
return parameterSyntax;
}
function blockUserInterface() {
$('#o2_environment_block_container').show();
environmentBlockCount++;
}
function unblockUserInterface() {
environmentBlockCount--;
if (environmentBlockCount <= 0) {
environmentBlockCount = 0;
$('#o2_environment_block_container').hide();
}
}
function clearMessage(containerSelector) {
var containerElement = $(containerSelector);
containerElement.html('');
containerElement.hide();
}
function displayMessage(containerSelector, messageContent, messageType) {
var containerElement = $(containerSelector);
if (messageContent instanceof Array) {
if (messageContent.length <= 1) messageContent = messageContent.join("
");
else {
var messageContent2 = '
';
for (var i in messageContent) messageContent2 += '- '+messageContent[i]+'
';
messageContent2 += '
';
messageContent = messageContent2;
}
}
var messageClass = 'o2_message_information';
var messageIconClass = 'fa-info-circle';
if (messageType == 'success') {
messageClass = 'o2_message_success';
messageIconClass = 'fa-check';
}
else if (messageType == 'warning') {
messageClass = 'o2_message_warning';
messageIconClass = 'fa-exclamation-triangle';
}
else if (messageType == 'error') {
messageClass = 'o2_message_error';
messageIconClass = 'fa-times-circle';
}
else if (messageType == 'information') {
messageClass = 'o2_message_information';
messageIconClass = 'fa-info-circle';
}
containerElement.html('');
containerElement.show();
}
function displayMessageSuccess(messageSelector, messageContent) {
displayMessage(messageSelector, messageContent, 'success');
}
function displayMessageError(messageSelector, messageContent) {
displayMessage(messageSelector, messageContent, 'error');
}
function displayMessageWarning(messageSelector, messageContent) {
displayMessage(messageSelector, messageContent, 'warning');
}
function displayMessageInformation(messageSelector, messageContent) {
displayMessage(messageSelector, messageContent, 'information');
}
function displayModalMessage(modalTitle, modalContent, callbackFunctionConfirm, overwriteOptionArray) {
if (modalContent instanceof Array) modalContent = modalContent.join('
');
var modalContainer = $('#o2_modal_container');
if (modalContainer.length == 0) {
var appendElement = $('');
$('body').append(appendElement);
var modalContainer = appendElement;
}
var modalElement = $('');
modalElement.html('\
\
');
modalContainer.append(modalElement);
var modalOptionArray = {
width: 600,
height: 'auto',
minHeight: 70,
minWidth: 300,
title: modalTitle,
modal: true,
animation: false
}
if (typeof overwriteOptionArray == 'object') {
for (var i in overwriteOptionArray) {
modalOptionArray[i] = overwriteOptionArray[i];
}
}
modalElement.kendoWindow(modalOptionArray);
var modalObject = modalElement.data('kendoWindow');
modalObject.center().open();
modalElement.find('.o2_trigger_confirm').click(function() {
modalObject.destroy();
modalElement.remove();
if (typeof callbackFunctionConfirm == 'function') callbackFunctionConfirm();
});
}
function displayModalError(modalContent, callbackFunctionConfirm, overwriteOptionArray) {
var modalTitle = 'Operation Error';
displayModalMessage(modalTitle, modalContent, callbackFunctionConfirm, overwriteOptionArray);
}
function displayModalConfirmation(modalTitle, modalContent, callbackFunctionConfirm, callbackFunctionCancel, overwriteOptionArray) {
if (modalContent instanceof Array) modalContent = modalContent.join('
');
var modalContainer = $('#o2_modal_container');
if (modalContainer.length == 0) {
var appendElement = $('');
$('body').append(appendElement);
var modalContainer = appendElement;
}
var modalElement = $('');
modalElement.html('\
\
');
modalContainer.append(modalElement);
var modalOptionArray = {
width: 600,
height: 'auto',
minHeight: 70,
minWidth: 300,
title: modalTitle,
modal: true,
animation: false,
close: function(e) {
if (typeof callbackFunctionCancel == 'function') callbackFunctionCancel();
}
}
if (typeof overwriteOptionArray == 'object') {
for (var i in overwriteOptionArray) {
modalOptionArray[i] = overwriteOptionArray[i];
}
}
modalElement.kendoWindow(modalOptionArray);
var modalObject = modalElement.data('kendoWindow');
modalObject.center().open();
modalElement.find('.o2_trigger_confirm').click(function() {
modalObject.destroy();
modalElement.remove();
if (typeof callbackFunctionConfirm == 'function') callbackFunctionConfirm();
});
modalElement.find('.o2_trigger_cancel').click(function() {
modalObject.destroy();
modalElement.remove();
if (typeof callbackFunctionCancel == 'function') callbackFunctionCancel();
});
}
/****************************************************************************************************************************************/
function displayModalOutput(requestAddress, requestParameterArray, modalTitle, overwriteOptionArray) {
var modalContainer = $('#o2_modal_container');
if (modalContainer.length == 0) {
var appendElement = $('');
$('body').append(appendElement);
var modalContainer = appendElement;
}
var modalElement = $('');
modalElement.html('\
\
\
\
Loading data. Please wait.
\
\
\
\
Understood\
\
\
');
modalContainer.append(modalElement);
var modalOptionArray = {
width: 600,
height: 'auto',
minHeight: 70,
minWidth: 300,
title: modalTitle+' - Automatic Refresh',
modal: true,
animation: false
}
if (typeof overwriteOptionArray == 'object') {
for (var i in overwriteOptionArray) {
modalOptionArray[i] = overwriteOptionArray[i];
}
}
modalElement.kendoWindow(modalOptionArray);
var modalObject = modalElement.data('kendoWindow');
modalObject.center().open();
modalElement.find('.o2_trigger_confirm').click(function() {
modalObject.destroy();
modalElement.remove();
});
loadModalOutput(requestAddress, requestParameterArray, modalElement);
}
function loadModalOutput(requestAddress, requestParameterArray, modalElement) {
var modalObject = modalElement.data('kendoWindow');
$.ajax({
type: "post",
url: requestAddress,
data: requestParameterArray,
success: function(remoteContent) {
if (modalElement.is(':visible')) {
if (modalObject.content() != remoteContent) modalElement.find('.o2_modal_segment_1_1_content').html(remoteContent);
setTimeout(function() {
loadModalOutput(requestAddress, requestParameterArray, modalElement);
}, 1000);
}
},
error: function() {
displayModalMessage("Component Error", "Undefined internal error. Please reload the page and try again.");
},
dataType: "html"
});
}
function constructUniqueId() {
var returnUniqueId = "";
var referenceCharacterSet = "abcdefghijklmnopqrstuvwxyz0123456789";
var currentTimestamp = String(new Date().getTime());
var returnLength = 64 - currentTimestamp.length;
for (var i=0; i');
$('body').append(appendElement);
var modalContainer = appendElement;
}
var modalElement = $('');
modalElement.html(''+modalContent+'
');
modalContainer.append(modalElement);
var modalOptionArray = {
width: 600,
height: 'auto',
minHeight: 70,
minWidth: 300,
title: modalTitle,
modal: true,
animation: false
}
if (typeof overwriteOptionArray == 'object') {
for (var i in overwriteOptionArray) {
modalOptionArray[i] = overwriteOptionArray[i];
}
}
modalElement.kendoWindow(modalOptionArray);
var modalObject = modalElement.data('kendoWindow');
modalObject.center().open();
}
/****************************************************************************************************************************************/
(
function() {
function EnvironmentController() {
/**********************************/
this.environmentObjectArray = {};
/**********************************/
}
EnvironmentController.prototype.storeScopeController = function(requestObject) {
if (requestObject instanceof ScopeController) this.environmentObjectArray[requestObject.scopeElementUniqueId] = requestObject;
else throw new Error('requestObject must be an instance of ScopeController.');
}
EnvironmentController.prototype.getScopeController = function(requestUniqueId) {
if (typeof this.environmentObjectArray[requestUniqueId] != 'undefined') var returnObject = this.environmentObjectArray[requestUniqueId];
else var returnObject = null;
return returnObject;
}
environmentController = new EnvironmentController();
}
)();
/****************************************************************************************************************************************/
function ScopeController(scopeElementSelector, scopeComponent) {
/**********************************/
this.scopeElementUniqueId = null;
this.scopeElement = null;
this.scopeElementBlockCount = 0;
this.scopeComponent = null;
/**********************************/
if (typeof scopeComponent == 'undefined') scopeComponent = '';
else if (typeof scopeComponent != 'string') throw new Error('scopeComponent must be an instance of String.');
var scopeElement = $(scopeElementSelector);
if (!scopeElement.length) throw new Error('scopeElementSelector not found in DOM.');
this.scopeElement = scopeElement;
this.scopeElementUniqueId = this._bindElementComponent();
this.scopeComponent = scopeComponent;
environmentController.storeScopeController(this);
}
ScopeController.prototype.$ = function(childSelector) {
return this.scopeElement.find(childSelector);
}
ScopeController.prototype._bindElementComponent = function() {
do {
var scopeElementUniqueId = this._constructScopeElementUniqueId();
var scopeElementUniqueFound = true;
if ($('[data-o2_unique_id="'+scopeElementUniqueId+'"]').length) scopeElementUniqueFound = false;
}
while (scopeElementUniqueFound === false);
this.scopeElement.attr('data-o2_unique_id', scopeElementUniqueId);
this.scopeElement.attr('data-o2_scope_component', this.scopeComponent);
this.scopeElement.data('o2_object', this);
this.scopeElement.addClass('o2_scope_element');
return scopeElementUniqueId;
}
ScopeController.prototype._constructScopeElementUniqueId = function() {
var scopeElementUniqueId = '';
var uniqueCharacterSet = 'abcdefghijklmnopqrstuvwxyz0123456789';
var uniqueTimestamp = String(new Date().getTime());
var uniqueStringLength = 32 - uniqueTimestamp.length;
for (var i=0; i');
this.scopeElement.append(overlayElement);
attachSpinner(overlayElement.get(0));
}
this.scopeElementBlockCount++;
overlayElement.show();
}
ScopeController.prototype.unblockScopeElement = function() {
this.scopeElementBlockCount--;
if (this.scopeElementBlockCount < 0) this.scopeElementBlockCount = 0;
if (this.scopeElementBlockCount == 0) {
var overlayElement = this.scopeElement.children('.o2_block_container').first();
if (overlayElement.length) overlayElement.remove();
}
}
/****************************************************************************************************************************************/