var SIGNATURE_PAD = SIGNATURE_PAD || {};
var SignaturesData = SignaturesData || [];
SIGNATURE_PAD.functions = (function () {
var signatureCanvas = null;
var keyboardSignatureCanvas = null;
var signaturePad = null;
var keyboarSignaturePad = null;
var $signaturePad = null,
$signaturePadWrapper = null,
$signaturePadWatermarks = null,
$buttonSaveSignature = null,
$buttonClearSignature = null,
$divSigningReason = null;
var keyboardSignature = '', corporateName = '', corporateFileNumber = '';
var isKeyboardSignature = false;
var isInitials = false;
var $workfowTemplate = null;
var signatureType = 0;
let signingReason = 1;
let signingReasons = null;
let signatureConfiguration = 1;
let lastFocusedInput = null;
var corporateTextFontSize = '2em'
var initSignaturePad = function () {
initControls();
$('input.corporate-name, input.corporate-file-number, input.keyboard-signature-name').on('click tap, focus', function (e) {
e.preventDefault();
$(this).parent().addClass('focused');
$(this).removeClass('error');
$(this).closest('.input-placeholder').removeClass('error');
if (isMobile) { //softkeyboared when opened causes focuse loose
lastFocusedInput = $(this).parent();
}
$('input.corporate-name, input.corporate-file-number').off('blur').on('blur', function (ev) {
ev.preventDefault();
if ($(this).val() == '')
$(this).parent().removeClass('focused');
redrawCorporateStampCanvas();
});
$('input.keyboard-signature-name').off('blur').on('blur', function (ev) {
ev.preventDefault();
if ($(this).val() == '')
$(this).parent().removeClass('focused');
redrawSignatureCanvas();
});
});
$('input.keyboard-signature-name').on('keyup', function () {
if ($signaturePad.attr('data-signature-state') !== 'new')
$signaturePad.attr('data-signature-state', 'new');
$(keyboardSignatureCanvas).attr('data-cleared', '1');
keyboardSignature = $(this).val();
redrawSignatureCanvas();
});
var changeSignatureFontSize = function (corporateName, corporateFileNumber, isMobile) {
if (isMobile) {
corporateTextFontSize = corporateName.length > 21 || corporateFileNumber.length > 21 ? '0.5em' : corporateName.length > 10 || corporateFileNumber.length > 10 ? '1em' : '2em'
$('.controls .signature-pad-text').css('font-size', corporateTextFontSize);
$('.controls .signature-pad-text-file').css('font-size', corporateTextFontSize);
} else {
corporateTextFontSize = corporateName.length > 27 || corporateFileNumber.length > 27 ? '1.2em' : corporateName.length > 23 || corporateFileNumber.length > 23 ? '1.6em' : '2em'
$('.controls .signature-pad-text').css('font-size', corporateTextFontSize);
$('.controls .signature-pad-text-file').css('font-size', corporateTextFontSize);
}
}
$('input.corporate-name').on('keyup', function () {
corporateName = $(this).val();
corporateFileNumber = $('input.corporate-file-number').val()
if (corporateName.length > 40) {
corporateName = corporateName.slice(0, 40)
$(this).val(corporateName)
}
changeSignatureFontSize(corporateName, corporateFileNumber, isMobile)
redrawCorporateStampCanvas();
});
$('input.corporate-file-number').on('keyup', function () {
corporateFileNumber = $(this).val();
corporateName = $('input.corporate-name').val()
if (corporateFileNumber.length > 40) {
corporateFileNumber = corporateFileNumber.slice(0, 40)
$(this).val(corporateFileNumber)
}
changeSignatureFontSize(corporateName, corporateFileNumber, isMobile)
redrawCorporateStampCanvas();
});
$buttonClearSignature.on('click', function (e) {
e.stopPropagation();
if (isKeyboardSignature === true) {
keyboarSignaturePad.clear();
$(keyboardSignatureCanvas).attr('data-cleared', '1');
keyboardSignature = '';
$signaturePad.find('input.keyboard-signature-name').val('');
$signaturePad.find('input.keyboard-signature-name').parent().removeClass('focused');
redrawSignatureCanvas();
}
else {
signaturePad.clear();
$(signatureCanvas).attr('data-cleared', '1').css({
'pointer-events': 'auto'
});
$signaturePad.find('.signature-watermark').show();
if (isMobile) {
$signaturePad.find('.signature-rotate-watermark').show();
}
$signaturePad.find('.signature-pad').removeClass('error');
$signaturePad.find('.signature-error').addClass('hidden');
corporateName = '';
corporateFileNumber = '';
$signaturePad.find('input.corporate-name').val('');
$signaturePad.find('input.corporate-file-number').val('');
$('input.corporate-name, input.corporate-file-number').parent().removeClass('focused');
$('.controls .signature-pad-text').text(corporateName);
$('.controls .signature-pad-text-file').text(corporateFileNumber);
}
});
$buttonPenSignature.off('click').on('click', function (e) {
e.preventDefault();
if (isKeyboardSignature === false) return;
setSignaturePadType(true);
});
$buttonKeyboardSignature.off('click').on('click', function (e) {
e.preventDefault();
if (isKeyboardSignature === true) return;
setSignaturePadType(false);
});
keyboardSignatureCanvas = $signaturePad.find('.keyboard-signature-pad')[0];
keyboarSignaturePad = new SignaturePad(keyboardSignatureCanvas, {
minWidth: 1.5,
maxWidth: 3.5
});
$(keyboardSignatureCanvas).css({
'pointer-events': 'none'
});
signatureCanvas = $signaturePad.find('.signature-pad')[0];
signaturePad = new SignaturePad(signatureCanvas, {
minWidth: isMobile ? 1.5 : 4,
maxWidth: isMobile ? 3.5 : 6,
onBegin: function (e) {
$signaturePad.find('.signature-watermark').hide();
$signaturePad.find('.signature-rotate-watermark').hide();
$signaturePad.find('.signature-pad').removeClass('error');
$signaturePad.find('.signature-error').addClass('hidden');
}
});
$(signatureCanvas).css({
'pointer-events': 'auto'
});
window.addEventListener('resize', handleResize);
}
function handleResize() {
if (isMobile && $signaturePad.find('.signature-rotate-watermark-text').text() != '') {
if ($(window).width() > $(window).height()) {
$signaturePad.find('.signature-rotate-watermark-text').text(Resources.signature.rotate_for_portrait);
}
else {
$signaturePad.find('.signature-rotate-watermark-text').text(Resources.signature.rotate_for_landscape);
}
}
if (!isMobile || $(document.activeElement).attr('type') !== 'text') {
resizeSignatureCanvas();
}
if (isMobile && lastFocusedInput) {
lastFocusedInput.addClass('focused');
}
}
var setSignaturePadType = function (isPenSignature) {
resetPad();
if ($(window).width() > $(window).height()) {
$signaturePad.find('.signature-rotate-watermark-text').text(Resources.signature.rotate_for_portrait);
}
else {
$signaturePad.find('.signature-rotate-watermark-text').text(Resources.signature.rotate_for_landscape);
}
switch (signatureType) {
case 0:
$signaturePad.find('.title').text(Resources.signature.personal.title);
$signaturePad.find('.signature-watermark').text(Resources.signature.personal.draw);
break;
case 5:
$signaturePad.find('.title').text(Resources.signature.corporate_stamp.title);
$signaturePad.find('.signature-watermark').text('');
$signaturePad.find('.signature-rotate-watermark-text').text('');
break;
case 8:
$signaturePad.find('.title').text(Resources.signature.initials.title);
$signaturePad.find('.signature-watermark').text(Resources.signature.initials.draw);
break;
}
if (isPenSignature) {
isKeyboardSignature = false;
if (signaturePad.isEmpty()) {
$signaturePad.find('.signature-watermark').show();
if (isMobile) $signaturePad.find('.signature-rotate-watermark').show();
$(signatureCanvas).css({
'pointer-events': 'auto'
});
}
else {
$signaturePad.find('.signature-watermark').hide();
$signaturePad.find('.signature-rotate-watermark').hide();
$(signatureCanvas).css({
'pointer-events': 'none'
});
}
$signaturePad.find('.signature-pad').show();
$signaturePad.find('input.keyboard-signature-name').removeAttr('maxlength');
$signaturePad.find('.corporate-stamp').hide();
$signaturePad.find('.keyboard-signature').hide();
$buttonPenSignature.addClass('active');
$buttonPenSignatureBottomBorder.addClass('active');
$buttonKeyboardSignature.removeClass('active');
$buttonKeyboardSignatureBottomBorder.removeClass('active');
}
else {
isKeyboardSignature = true;
$signaturePad.find('.signature-watermark').text('');
$signaturePad.find('.signature-rotate-watermark-text').text('');
$signaturePad.find('.signature-pad').hide();
$signaturePad.find('.signature-pad').removeClass('error');
$signaturePad.find('.signature-error').addClass('hidden');
$signaturePad.attr('data-signature-style', '1');
if (signatureType === 8) {
$signaturePad.find('.lbl-initials').text(Resources.signature.initials.type);
$signaturePad.find('input.keyboard-signature-name').attr('maxlength', 4);
}
else {
$signaturePad.find('.lbl-initials').text(Resources.signature.personal.type);
$signaturePad.find('input.keyboard-signature-name').removeAttr('maxlength');
}
$signaturePad.find('.keyboard-signature').show();
$signaturePad.find('.keyboard-signature-pad').show();
$signaturePad.find('.corporate-stamp').hide();
$buttonKeyboardSignature.addClass('active');
$buttonKeyboardSignatureBottomBorder.addClass('active');
$buttonPenSignature.removeClass('active');
$buttonPenSignatureBottomBorder.removeClass('active');
$signaturePad.find('input.keyboard-signature-name')
.removeClass('error')
.parent()
.toggleClass('focused', $signaturePad.find('input.keyboard-signature-name').val() != '');
$signaturePad.find('input.keyboard-signature-name').closest('.input-placeholder').removeClass('error');
redrawSignatureCanvas();
}
}
var setProperties = function (_penColor, _signatureConfiguration) {
signaturePad = new SignaturePad(signatureCanvas, {
minWidth: isMobile ? 1.5 : 4,
maxWidth: isMobile ? 3.5 : 6,
penColor: _penColor,
onBegin: function () {
$signaturePad.find('.signature-watermark').hide();
$signaturePad.find('.signature-rotate-watermark').hide();
}
});
keyboarSignaturePad = new SignaturePad(keyboardSignatureCanvas, {
minWidth: 1.5,
maxWidth: 3.5,
penColor: _penColor
});
signatureConfiguration = _signatureConfiguration;
}
var showBoundSignatureModal = function (onSaveCallback) {
let $boundSignatureModal = $modalView.find('.signature-or-initials-binding-form');
let $buttonSaveSigningReason = $boundSignatureModal.find('#saveAndSignBound');
$modalView.addClass("visible");
$boundSignatureModal.show();
$boundSignatureModal.addClass('active');
$buttonSaveSigningReason.off('click').on('click', function () {
closeBoundSignatureModal()
if (onSaveCallback) {
onSaveCallback(getSigningReasonForBound());
}
})
$boundSignatureModal.find('.close').on('click', function (e) {
e.preventDefault();
closeBoundSignatureModal();
});
}
let errorSignature = false;
var showModal = function (copySignatureEnabled, type, $modalView, saveCallback, closeCallBack) {
$buttonSaveSignature.css('pointer-events', 'auto')
let showSigningReason = false;
switch (signingReason) {
case 1:
break;
case 2: {
showSigningReason = true; // force selecting signing reason
}
break;
case 3: {
showSigningReason = true; // force selecting signing reason
}
break;
}
if (SignaturesData[type].signatureData === null || SignaturesData[type].shown === false || copySignatureEnabled === false || type === 5 || (m_sessionData.direction === 'callee' && showSigningReason) || errorSignature) {
resetModal();
resetPad();
signatureType = type;
$signaturePad.show();
$modalView.addClass("visible").addClass('signature-z-index');
$signaturePad.addClass('active');
$(keyboardSignatureCanvas).show();
$(signatureCanvas).show();
resizeSignatureCanvas();
if (type === 5) {
signatureCanvas = $signaturePad.find('.signature-pad')[0];
$signaturePad.find('.title').text(Resources.signature.corporate_stamp.title);
$signaturePad.find('.signature-control').hide();
$signaturePad.find('.keyboard-signature').hide();
$signaturePad.find('.keyboard-signature-pad').hide();
$signaturePad.find('.corporate-stamp').show();
$signaturePad.find('.signature-pad').show();
$signaturePad.find('.signature-watermark').text(Resources.signature.personal.draw);
$signaturePad.find('.signature-rotate-watermark').hide();
$(signatureCanvas).css({
'pointer-events': 'auto'
});
}
else {
if (signatureConfiguration == 2) //draw only
{
$signaturePad.find('.signature-control-wrapper').hide();
}
if (SignaturesData[type].signatureData && copySignatureEnabled === true) {
if (SignaturesData[type].style === 0) {
setSignaturePadType(true);
$signaturePad.find('.signature-watermark').hide();
$signaturePad.find('.signature-rotate-watermark').hide();
signaturePad.fromDataURL(SignaturesData[signatureType].signatureData);
$(signatureCanvas).css({
'pointer-events': 'none'
});
}
else if (signatureConfiguration == 2) {
setSignaturePadType(true);
}
else {
setSignaturePadType(false);
$signaturePad.find('input.keyboard-signature-name')
.val(SignaturesData[signatureType].initialText)
.parent()
.toggleClass('focused', SignaturesData[signatureType].initialText != '');
keyboardSignature = SignaturesData[signatureType].initialText;
keyboarSignaturePad.fromDataURL(SignaturesData[signatureType].signatureData);
}
}
else {
setSignaturePadType(true);
}
};
$buttonSaveSignature.off('click').on('click', function (e) {
$workflowTemplate.find('.button-extra').hide();
$buttonSaveSignature.css('pointer-events', 'none')
e.preventDefault();
errorSignature = false;
var keyUpHandler = function () {
if ($(this).val() !== '')
$(this).removeClass('error');
else {
$(this).addClass('error');
return false;
}
}
// Validation
if (type === 5) {
var hasError = false;
if ($signaturePad.find('input.corporate-name').val() === '') {
$signaturePad.find('input.corporate-name').addClass('error');
$signaturePad.find('input.corporate-name').closest('.input-placeholder').addClass('error');
$signaturePad.find('input.corporate-name').off('keyup', keyUpHandler).on('keyup', keyUpHandler);
hasError = true;
}
if ($signaturePad.find('input.corporate-file-number').val() === '') {
$signaturePad.find('input.corporate-file-number').addClass('error');
$signaturePad.find('input.corporate-file-number').closest('.input-placeholder').addClass('error');
$signaturePad.find('input.corporate-file-number').off('keyup', keyUpHandler).on('keyup', keyUpHandler);
hasError = true;
}
if (signaturePad.isEmpty() || !isSignatureDrawValid()) {
$signaturePad.find('.signature-pad').addClass('error');
$signaturePad.find('.signature-error').removeClass('hidden');
hasError = true;
}
if (hasError === true) {
$buttonSaveSignature.css('pointer-events', 'auto')
return false;
}
} else if ((type === 0 || type === 8) && isKeyboardSignature === true) {
const keyboardSignatureInputElement = $signaturePad.find('input.keyboard-signature-name');
if (keyboardSignatureInputElement.val() === '' && keyboarSignaturePad.isEmpty()
|| !(keyboardSignatureInputElement.val().replace(/\s/g, '').length)) {
keyboardSignatureInputElement.addClass('error');
keyboardSignatureInputElement.closest('.input-placeholder').addClass('error');
keyboardSignatureInputElement.off('keyup', keyUpHandler).on('keyup', keyUpHandler);
$buttonSaveSignature.css('pointer-events', 'auto')
return false;
}
} else {
if (isKeyboardSignature === false && (signaturePad.isEmpty() || !isSignatureDrawValid())) {
$signaturePad.find('.signature-pad').addClass('error');
$signaturePad.find('.signature-error').removeClass('hidden');
$buttonSaveSignature.css('pointer-events', 'auto')
return false;
} else {
$signaturePad.find('.signature-pad').removeClass('error');
$signaturePad.find('.signature-error').addClass('hidden');
}
}
if (type === 5) {
var ctx = signatureCanvas.getContext("2d");
var numOfPx = 56;
if ($(signatureCanvas).width() < 480) {
numOfPx = 28;
}
// pasteDivTextIntoCanvas
ctx.textAlign = 'center';
ctx.globalAlpha = .50;
ctx.font = 'bold ' + numOfPx + 'px Calibri';
var canvasWidth = $(signatureCanvas)[0].clientWidth > 0 ? $(signatureCanvas)[0].clientWidth : $(signatureCanvas).width();
for (; numOfPx > 0; numOfPx -= 2) {
ctx.font = 'bold ' + numOfPx + 'px "Calibri"';
if ((ctx.measureText(corporateName).width + 6) < canvasWidth && (ctx.measureText(corporateFileNumber).width + 6) < canvasWidth) {
break;
}
}
// End
}
if (saveCallback) {
COMMON.functions.cubesLoader.show();
let currentStyle = 0, canvasCleared = false;
if (isKeyboardSignature === true) {
currentStyle = 1;
canvasCleared = $(keyboardSignatureCanvas).attr('data-cleared') === '1'
$(keyboardSignatureCanvas).attr('data-cleared', '0');
}
else {
currentStyle = 0;
canvasCleared = $(signatureCanvas).attr('data-cleared') === '1';
$(signatureCanvas).attr('data-cleared', '0');
}
if (SignaturesData[type].style != currentStyle || canvasCleared || copySignatureEnabled === false || type === 5) { //need to save
if (isKeyboardSignature === true) {
SignaturesData[type].signatureData = keyboardSignatureCanvas.toDataURL();
}
else {
if (type === 5) {
$signaturePad.hide();
ctx.fillText(corporateName, $(signatureCanvas).width() / 2, $(signatureCanvas).height() * 0.37);
ctx.fillText(corporateFileNumber, $(signatureCanvas).width() / 2, $(signatureCanvas).height() * 0.637);
ctx.globalAlpha = 1;
}
SignaturesData[type].signatureData = signatureCanvas.toDataURL();
}
SignaturesData[type].style = currentStyle;
if (currentStyle === 1)
SignaturesData[type].initialText = $signaturePad.find('input.keyboard-signature-name').val();
else
SignaturesData[type].initialText = '';
SignaturesData[type].signatureId = COMMON.functions.createUUID();
const signatureObject = {
id: SignaturesData[type].signatureId,
type: type,
style: SignaturesData[type].style,
font: SignaturesData[type].font,
initialsText: SignaturesData[type].initialText,
data: SignaturesData[type].signatureData,
signingReason: GetSigningReason()
}
uploadSignature(SignaturesData[type].signatureId, SignaturesData[type].signatureData, function () {
COMMON.functions.cubesLoader.hide();
$signaturePad.removeClass('active');
$signaturePad.hide();
$modalView.removeClass("visible").removeClass('signature-z-index');
saveCallback(signatureObject);
}, function () {
errorSignature = true;
COMMON.functions.cubesLoader.hide();
$signaturePad.removeClass('active');
$signaturePad.hide();
$modalView.addClass("visible").addClass('signature-z-index');
$errorSignModal.find('#error-signer').text(Resources.error_message)
$errorSignModal.find('#error-signer-button-label').text(Resources.error_message_button_label)
$errorSignModal.addClass('active');
SignaturesData[type].style = null;
$buttonClearSignature.click();
});
}
else {
const signatureObject = {
id: SignaturesData[type].signatureId,
type: type,
style: SignaturesData[type].style,
data: SignaturesData[type].signatureData,
signingReason: GetSigningReason(),
optionalErrorValues: String.format('type: {0},signature style: {1}, currentStyle: {2}, canvasCleared: {3}, copySignatureEnabled: {4}',
type, SignaturesData[type].style, currentStyle, canvasCleared, copySignatureEnabled)
}
saveCallback(signatureObject);
COMMON.functions.cubesLoader.hide();
$signaturePad.removeClass('active');
$signaturePad.hide();
$modalView.removeClass("visible").removeClass('signature-z-index');
}
}
else {
$signaturePad.removeClass('active');
$signaturePad.hide();
$modalView.removeClass("visible").removeClass('signature-z-index');
}
SignaturesData[type].shown = true;
});
$signaturePad.find('.close').on('click', function (e) {
$workflowTemplate.find('.button-right').removeAttr('disabled')
e.preventDefault();
$signaturePad.removeClass('active');
$modalView.removeClass("visible").removeClass('signature-z-index');
$signaturePad.hide();
if (closeCallBack) {
closeCallBack();
}
});
}
else {
if (saveCallback && !errorSignature) {
const signatureObject = {
id: SignaturesData[type].signatureId,
type: type,
data: SignaturesData[type].signatureData,
signingReason: GetSigningReason(),
optionalErrorValues: String.format('type: {0}, has signature data: {1}, signatureData.shown: {2}, copySignatureEnabled: {3}, errorSignature: {4}, showSigningReason: {5}',
type, SignaturesData[type].signatureData !== null, SignaturesData[type].shown, copySignatureEnabled, errorSignature, showSigningReason)
}
saveCallback(signatureObject);
}
}
}
var isSigningReasonFeatureOn = function () {
return signingReason !== 1;
}
function isSignatureDrawValid() {
var data = signaturePad.toData();
if (data.length == 0 && !signaturePad.isEmpty()) {
return true;
}
let isDrawValid = false;
let validDistance = $signaturePad.find('.signature-pad').width() * 0.1;
data.forEach(function (item) {
let distance = 0;
let prevPoint = {};
item.forEach(function (point) {
if (prevPoint.x && prevPoint.y) {
distance += Math.sqrt(Math.pow(point.x - prevPoint.x, 2) + Math.pow(point.y - prevPoint.y, 2));
if (distance >= validDistance) {
isDrawValid = true;
return;
}
}
prevPoint.x = point.x;
prevPoint.y = point.y;
});
if (isDrawValid) {
return;
}
});
return isDrawValid;
}
let lastFileId = null;
var initSignaturesData = function (sessionId, fileId, direction, language, user_type, documentType) {
function initEmptySignatures() {
if (SignaturesData[0] == null) { // init signatre type
SignaturesData[0] = [];
SignaturesData[0].shown = false;
}
if (SignaturesData[5] == null) { // init corporate stamp type
SignaturesData[5] = [];
SignaturesData[5].shown = false;
}
if (SignaturesData[8] == null) { // init initials type
SignaturesData[8] = [];
SignaturesData[8].shown = false;
}
}
if (SignaturesData.length === 0) {
let url = '';
if (user_type === 'agent') {
url = '/admin-api/v22.1/users/' + m_sessionData.user_id + '/signatures';
} else if (user_type === 'client') {
url = '/api-gw/customer-api/sessions/' + m_sessionData.sessionId + '/customerSignatures';
}
$.ajax({
cache: false,
async: false,
type: "GET",
// url: 'Handlers/GetSignatureData.ashx?sid=' + m_sessionData.sessionId,
url: url,
// data: { sessionId: sessionId, direction: direction, lang: language },
// dataType: "json",
success: function (response) {
initEmptySignatures();
if (response.result && response.result.length > 0) {
for (var i = 0; i < response.result.length; i++) {
if (response.result[i].signature_id && response.result[i].signature_data) {
SignaturesData[response.result[i].type].signatureId = response.result[i].signature_id;
SignaturesData[response.result[i].type].signatureData = 'data:image/png;base64,' + response.result[i].signature_data;
SignaturesData[response.result[i].type].font = response.result[i].font;
SignaturesData[response.result[i].type].style = response.result[i].signature_style;
SignaturesData[response.result[i].type].initialText = response.result[i].initial_text;
}
}
}
},
error: function (xhr, errorThrown) {
initEmptySignatures();
}
});
}
if (documentType === 'dynamic_document') {
initEmptySignatures();
}
if (direction == 'callee' && fileId != null && lastFileId != fileId) {
lastFileId = fileId;
E_SIGNATURE.functions.getFileProperties(fileId, function (res) {
let $boundSignatureModal = $modalView.find('.signature-or-initials-binding-form');
$divSigningReasonBound = $boundSignatureModal.find('.signature-pad-signing-reason-bound');
if (res) {
addSigningReasonOptions(res, $divSigningReasonBound)
addSigningReasonOptions(res, $divSigningReason);
}
else {
$divSigningReasonBound.addClass('hidden');
$divSigningReason.addClass('hidden');
}
function addSigningReasonOptions(signResonsFromServer, $signReasonContainer) {
signingReason = signResonsFromServer.signingReason;
signingReasons = signResonsFromServer.signingReasons;
switch (signingReason) {
case 1:
$signReasonContainer.addClass('hidden');
break;
case 2: {
$signReasonContainer.removeClass('hidden');
let $select = $signReasonContainer.find('select');
$select.empty();
$select.append('');
$(signingReasons).each(function (i, element) {
$select.append('');
});
$signReasonContainer.find('.input-placeholder').removeClass('focused');
}
break;
case 3: {
$signReasonContainer.removeClass('hidden');
let $select = $signReasonContainer.find('select');
$select.empty();
$(signingReasons).each(function (i, element) {
$select.append('');
});
$signReasonContainer.find('.input-placeholder').addClass('focused');
}
break;
}
}
});
}
if (direction == 'caller') {
$divSigningReason.addClass('hidden');
let $select = $divSigningReason.find('select');
$select.empty();
}
}
function closeBoundSignatureModal() {
let $boundSignatureModal = $modalView.find('.signature-or-initials-binding-form');
$boundSignatureModal.removeClass('active');
$boundSignatureModal.hide();
$modalView.removeClass("visible").removeClass('signature-z-index');
}
var uploadSignature = function uploadSignature(signatureId, signatureData, callback, errorCallback) {
var messageData = {
'sessionId': m_sessionData.sessionId,
'direction': m_sessionData.direction,
'fileData': signatureData,
'signRequired': false,
'fileId': signatureId,
'fileName': 'signature',
'fileExtension': 'png'
};
xhr = $.ajax({
cache: false,
async: true,
type: "POST",
url: 'Handlers/UploadFile.ashx?sid=' + m_sessionData.sessionId,
data: messageData,
dataType: "json",
timeout: 30000,
success: function (response) {
if (callback) callback();
},
error: function (xhr, errorThrown) {
if (errorCallback) errorCallback(errorThrown);
}
});
}
function initControls() {
$signaturePad = $('.signature-pad-form');
$signaturePadWrapper = $('.signature-pad-wrapper');
$signaturePadWatermarks = $('.signature-pad-watermarks');
$buttonSaveSignature = $('#save-signature');
$buttonClearSignature = $('#clear-signature');
$buttonPenSignature = $('#signature-pen');
$buttonKeyboardSignature = $('#signature-keyboard');
$buttonPenSignatureBottomBorder = $('#signature-pen-bottom-border');
$buttonKeyboardSignatureBottomBorder = $('#signature-keyboard-bottom-border');
$signatureWrapper = $signaturePad.find('.controls');
$workfowTemplate = $('#work-flow-template');
$divSigningReason = $signaturePad.find('.signature-pad-signing-reason');
}
function resetModal() {
$('.modal-form').removeClass('active');
corporateName = '';
corporateFileNumber = '';
keyboardSignature = '';
isKeyboardSignature = false;
signaturePad.clear();
$signaturePad.find('.signature-pad').removeClass('error');
$signaturePad.find('.signature-error').addClass('hidden');
keyboarSignaturePad.clear();
$buttonKeyboardSignature.removeClass('active');
$buttonKeyboardSignatureBottomBorder.removeClass('active');
$buttonPenSignature.removeClass('active');
$buttonPenSignatureBottomBorder.removeClass('active');
$signaturePad.find('input.corporate-name').val('');
$signaturePad.find('input.keyboard-signature-name').val('').removeClass('error').parent().removeClass('focused');
$signaturePad.find('input.keyboard-signature-name').closest('.input-placeholder').removeClass('error');
$signaturePad.find('input.corporate-file-number').val('');
$signaturePad.find('.lbl-corporate-name, .lbl-corporate-file, .lbl-initials').parent().removeClass('focused');
$signaturePad.find('.controls .signature-pad-text').text('');
$signaturePad.find('.controls .signature-pad-text-file').text('');
$signaturePad.attr('data-signature-state', 'new');
$signaturePad.find('.title').text('');
$signaturePad.find('.signature-control').show();
$signaturePad.find('.keyboard-signature').hide();
$signaturePad.find('.corporate-stamp').hide();
$signaturePad.find('.controls .signature-pad-text').show();
$signaturePad.find('.controls .signature-pad-text-file').show();
}
function resetPad() {
$signaturePad.attr('data-signature-style', '0');
$signaturePad.find('.keyboard-signature-pad').hide();
$signaturePad.find('.signature-pad').hide();
$signaturePad.find('.signature-pad').removeClass('error');
$signaturePad.find('.signature-error').addClass('hidden');
}
function resizeSignatureCanvas() {
const ratio = window.devicePixelRatio || 1;
const maxW = Math.min(window.innerWidth - (20 / ratio), isMobile ? 500 : 800);
$('.signature-pad-form').width(maxW);
$('.signature-pad-form').find('.controls').width(maxW - 20);
$('.signature-pad, .keyboard-signature-pad').height(maxW / 3);
keyboardSignatureCanvas.width = $signaturePadWrapper[0].offsetWidth;
keyboardSignatureCanvas.style.width = keyboardSignatureCanvas.width + 'px';
keyboardSignatureCanvas.height = $signaturePadWrapper[0].offsetHeight;
keyboardSignatureCanvas.style.height = keyboardSignatureCanvas.height;
signatureCanvas.width = $signaturePadWrapper[0].offsetWidth;
signatureCanvas.style.width = signatureCanvas.width + 'px';
signatureCanvas.height = $signaturePadWrapper[0].offsetHeight;
signatureCanvas.style.height = signatureCanvas.height + 'px';
if ($signaturePadWatermarks) {
$signaturePadWatermarks.height($signaturePadWrapper.height());
$signaturePadWatermarks.width($signaturePadWrapper.width());
}
$buttonClearSignature.click();
}
function redrawCorporateStampCanvas() {
$('.controls .signature-pad-text').text(corporateName);
$('.controls .signature-pad-text-file').text(corporateFileNumber);
}
function redrawSignatureCanvas() {
var currentCanvas = isKeyboardSignature ? keyboardSignatureCanvas : signatureCanvas;
var ctx = currentCanvas.getContext("2d");
ctx.clearRect(0, 0, currentCanvas.width, currentCanvas.height);
//resizeSignatureCanvas();
var numOfPx = 170;
var heightRatio = 0.68;
if ($(currentCanvas).width() < 480) {
numOfPx *= 0.5;
}
ctx.font = 'bold ' + numOfPx + 'px Dancing Script';
ctx.fillStyle = typeof m_queueSettings != 'undefined' ? m_queueSettings.ESIGN_SIGNATURE : queueSettings.ESIGN_SIGNATURE;
ctx.textAlign = 'center';
ctx.globalAlpha = .75;
var canvasWidth = $(currentCanvas)[0].clientWidth > 0 ? $(currentCanvas)[0].clientWidth : $(currentCanvas).width();
for (; numOfPx > 0; numOfPx -= 2) {
ctx.font = 'bold ' + numOfPx + 'px Dancing Script';
if ((ctx.measureText(keyboardSignature).width + 6) < canvasWidth) {
break;
}
}
var hasUpperCase = false;
for (var i = 0; i < keyboardSignature.length; i++) {
if (keyboardSignature.charCodeAt(i) >= 65 && keyboardSignature.charCodeAt(i) <= 90) {
hasUpperCase = true;
break;
}
}
if (hasUpperCase && (numOfPx > 112 || $(currentCanvas).width() < 480 && numOfPx > 56))
heightRatio = 0.77;
else if (numOfPx < 70) heightRatio = 0.6;
ctx.fillText(keyboardSignature, $(currentCanvas).width() / 2, $(currentCanvas).height() * heightRatio);
ctx.globalAlpha = 1;
}
function GetSigningReason() {
let result = null
if (signingReason == 2 || signingReason == 3) {
result = $divSigningReason.find('select').val() == -1 ? null : $divSigningReason.find('select').val();
}
return result;
}
function getSigningReasonForBound() {
let result = null
if (signingReason == 2 || signingReason == 3) {
result = $divSigningReasonBound.find('select').val() == -1 ? null : $divSigningReasonBound.find('select').val();
}
return result;
}
return {
init: initSignaturePad,
setProperties: setProperties,
show: showModal,
showBoundSignatureModal: showBoundSignatureModal,
initSignaturesData: initSignaturesData,
isSigningReasonFeatureOn: isSigningReasonFeatureOn,
uploadSignature: uploadSignature,
}
})();