﻿function getTsTimeStamp() {
    var tsTimeStampHour = new Date().getHours();
    var tsTimeStampDay = new Date().getDate();
    var tsTimeStampMonth = new Date().getMonth() + 1;
    var tsTimeStampYear = new Date().getFullYear();
    var tsTimeStamp = tsTimeStampDay + "" + tsTimeStampMonth + "" + tsTimeStampYear + "" + tsTimeStampHour;
    return tsTimeStamp
}
function footerLinkClick(link) {
    WaitPanel();
    var href1 = $(link).attr("href");
    var titleModal = $(link).attr("title");
    $.ajax({
        method: "get",
        url: href1,
        success: function(html) {
            var content = $(html).find("#mainContent").html();
            var divFooterContent = $("<div ></div>").attr("id", "modalFooter").addClass("jqmWindow");
            divFooterContent.append("<div class=\"header\"><a class='close jqmClose'  href=\"javascript:void(0)\" >X</a><h1 class=\"primaryHeader\">" + titleModal + "</h1></div>");
            divFooterContent.jqm({
                modal: true
            });
            divFooterContent.append("<div id=\"accounts\" class=\"slideContainer clearfix\">" + content + "</div><div class=\"shadowFooter\"></div>");
            $("#mainContent").append(divFooterContent);
            divFooterContent.jqmShow();
            RemoveWaitPanel();
            $('a.jqmClose').click(function(e) {
                e.preventDefault();
                $("#modalFooter").remove()
            })
        },
        error: function(error) {
            RemoveWaitPanel();
            $("#mainContent").jqmHide()
        }
    });
    return false
}
Type.registerNamespace('BCP.SDC.Presentation.Blue.Common');
var EntidadeBalcaoImposto = [
    ["1", "02", "IVA"],
    ["1", "03", "IVA"],
    ["1", "04", "IRS"],
    ["1", "05", "IRC"],
    ["1", "06", "MI"],
    ["1", "10", "CA"],
    ["1", "11", "IMI"],
    ["1", "13", "IS"],
    ["1", "14", "ICA"],
    ["1", "15", "ICI"],
    ["1", "16", "IMT"],
    ["1", "21", "CSB"],
    ["1", "54", "IVA"],
    ["1", "56", "MI"],
    ["1", "57", "IRC"],
    ["1", "60", "IMT"],
    ["1", "62", "IVA"],
    ["1", "64", "IRC"],
    ["1", "65", "IMSV"],
    ["1", "67", "IS"],
    ["1", "68", "RD"],
    ["1", "69", "CSB"],
    ["1", "71", "DF"],
    ["1", "78", "DVP"],
    ["5", "11", "ISP"],
    ["5", "12", "ISPM"],
    ["5", "16", "APA"],
    ["5", "21", "ADSE"],
    ["7", "01", "IGFIJDA"],
    ["7", "02", "IGFIJPTJ"],
    ["7", "03", "IGFIJG"],
    ["7", "04", "PAA"],
    ["7", "05", "PI"]
];

function checkNib(source, args, varNib1, varNib2, varNib3, varNib4) {
    var nib1 = document.getElementById(varNib1);
    var nib2 = document.getElementById(varNib2);
    var nib3 = document.getElementById(varNib3);
    var nib4 = document.getElementById(varNib4);
    var nib = "" + nib1.value + nib2.value + nib3.value + nib4.value;
    var pesos = new Array(0, 1, 10, 3, 30, 9, 90, 27, 76, 81, 34, 49, 5, 50, 15, 53, 45, 62, 38, 89, 17, 73, 51, 25, 56, 75, 71, 31, 19, 93, 57);
    var longNib = nib.length;
    var p = 0;
    for (var i = longNib; i > 2; i--) {
        p += parseInt(nib.charAt(longNib - i)) * pesos[i]
    }
    var controlCalc = 98 - (p % 97);
    var controlNib = nib.substring(longNib - 2, longNib);
    var ok = (controlNib == controlCalc);
    if (!ok) args.IsValid = false;
    else args.IsValid = true
}
BCP.SDC.Presentation.Blue.Common.checkNib = function(varNib1, varNib2, varNib3, varNib4) {
    var nib1 = varNib1;
    var nib2 = varNib2;
    var nib3 = varNib3;
    var nib4 = varNib4;
    var returnValue = false;
    var nib = "" + nib1.value + nib2.value + nib3.value + nib4.value;
    var check2 = 0;
    if (nib.length == 21) {
        var check1 = nib.substring(19);
        var blocos = new Array();
        for (var i = 18; i > -1; i--) {
            blocos[i] = nib.substring(i, i + 1)
        }
        var multiplicadores = new Array(73, 17, 89, 38, 62, 45, 53, 15, 50, 5, 49, 34, 81, 76, 27, 90, 9, 30, 3);
        for (var i = 18; i > -1; i--) check2 += blocos[i] * multiplicadores[i];
        if (check1 == (98 - (check2 % 97))) return true
    } else returnValue = false;
    return returnValue
};
BCP.SDC.Presentation.Blue.Common.autoTab = function(input, len, e, focus, jump) {
    var isNN = (navigator.appName.indexOf("Netscape") != -1);
    var keyCode = (isNN) ? e.which : e.keyCode;
    if (keyCode == 9 || keyCode == 16) return false;
    var filter = (isNN) ? [0, 8, 9] : [0, 8, 9, 16, 17, 18, 37, 38, 39, 40, 46];
    if (jump == null) jump = 1;
    if (input.value.length >= len && !containsElement(filter, keyCode)) {
        input.value = input.value.slice(0, len);
        if (focus) {
            if (input.form[(getIndex(input) + jump) % input.form.length].style.display != "none") input.form[(getIndex(input) + jump) % input.form.length].focus()
        }
    }
    return true
};
BCP.SDC.Presentation.Blue.Common.ValidateAccountBalanceLimits = function(inAmountId, inAvailableBalanceId, inMsg) {
    var val = inAmountId.value;
    var valD = inAvailableBalanceId.value;
    if (valD != "") {
        var doubleVal = BCP.SDC.Presentation.Blue.Common.parseFloatCurrency(val);
        var doubleValD = BCP.SDC.Presentation.Blue.Common.parseFloatCurrency(valD);
        if (typeof (args) != "undefined") {
            if (doubleVal > doubleValD) {
                return confirm(inMsg)
            } else return true
        } else {
            if (doubleVal > doubleValD) {
                return confirm(inMsg)
            } else return true
        }
    } else return false
};
BCP.SDC.Presentation.Blue.Common.replaceAll = function(string, token, newtoken) {
    while (string.indexOf(token) != -1) {
        string = string.replace(token, newtoken)
    }
    return string
};
BCP.SDC.Presentation.Blue.Common.parseFloatCurrency = function(currency) {
    if (currency != null && currency != '') {
        var len = currency.length;
        var separador = '.';
        var find = false;
        for (var i = len - 1; i >= 0 && !find; i--) {
            if (currency.charAt(i) == '.' || currency.charAt(i) == ',') {
                separador = currency.charAt(i);
                find = true
            }
        }
        if (separador == ',') return parseFloat((BCP.SDC.Presentation.Blue.Common.replaceAll(currency, '.', '')).replace(',', '.'));
        else return parseFloat((BCP.SDC.Presentation.Blue.Common.replaceAll(currency, ',', '')).replace(',', '.'))
    }
    return 0
};
BCP.SDC.Presentation.Blue.Common.FormatAmmount = function(amount) {
    var delimiter = ".";
    amount += '';
    var a = amount.split('.');
    var d;
    if (a.length > 1) d = padRight(a[1], 2, '0');
    else d = '00';
    var i = parseInt(a[0]);
    var floatReturn;
    if (isNaN(i)) {
        return ''
    }
    var minus = '';
    if (a[0].length > 0 && a[0].charAt(0) == '-') {
        minus = '-'
    }
    i = Math.abs(i);
    var n = new String(i);
    var a = [];
    while (n.length > 3) {
        var nn = n.substr(n.length - 3);
        a.unshift(nn);
        n = n.substr(0, n.length - 3)
    }
    if (n.length > 0) {
        a.unshift(n)
    }
    n = a.join(delimiter);
    if (d.length < 1) {
        amount = n
    } else {
        amount = n + ',' + d
    }
    amount = minus + amount;
    return amount
};
BCP.SDC.Presentation.Blue.Common.CheckIBANMaxLenght = function(country) {
    switch (country) {
        case "AD":
            return 24;
            break;
        case "AE":
            return 23;
            break;
        case "AL":
            return 28;
            break;
        case "AT":
            return 20;
            break;
        case "BA":
            return 20;
            break;
        case "BE":
            return 16;
            break;
        case "BG":
            return 22;
            break;
        case "BH":
            return 22;
            break;
        case "CH":
            return 21;
            break;
        case "CR":
            return 21;
            break;
        case "CY":
            return 28;
            break;
        case "CZ":
            return 24;
        case "DE":
            return 22;
            break;
        case "DK":
            return 18;
            break;
        case "DO":
            return 28;
            break;
        case "EE":
            return 20;
            break;
        case "ES":
            return 24;
            break;
        case "FI":
            return 18;
            break;
        case "FO":
            return 18;
            break;
        case "FR":
            return 27;
            break;
        case "GB":
            return 22;
            break;
        case "GE":
            return 22;
            break;
        case "GI":
            return 23;
            break;
        case "GL":
            return 18;
            break;
        case "GR":
            return 27;
            break;
        case "HR":
            return 21;
            break;
        case "HU":
            return 28;
            break;
        case "IE":
            return 22;
            break;
        case "IL":
            return 23;
            break;
        case "IS":
            return 26;
            break;
        case "IT":
            return 27;
            break;
        case "KW":
            return 30;
            break;
        case "KZ":
            return 20;
            break;
        case "LB":
            return 28;
            break;
        case "LI":
            return 21;
            break;
        case "LT":
            return 20;
            break;
        case "LU":
            return 20;
            break;
        case "LV":
            return 21;
            break;
        case "MC":
            return 27;
            break;
        case "ME":
            return 22;
            break;
        case "MK":
            return 19;
            break;
        case "MR":
            return 27;
            break;
        case "MT":
            return 31;
            break;
        case "MU":
            return 30;
            break;
        case "NL":
            return 18;
            break;
        case "NO":
            return 15;
            break;
        case "PL":
            return 28;
            break;
        case "PT":
            return 25;
            break;
        case "RO":
            return 24;
            break;
        case "RS":
            return 22;
            break;
        case "SA":
            return 24;
            break;
        case "SE":
            return 24;
            break;
        case "SI":
            return 19;
            break;
        case "SK":
            return 24;
            break;
        case "SM":
            return 27;
            break;
        case "TN":
            return 24;
            break;
        case "TR":
            return 26;
            break;
        default:
            return -1
    }
};
BCP.SDC.Presentation.Blue.Common.BankCode2BankName = function(bankcode) {
    switch (bankcode) {
        case "0001":
            return "BANCO DE PORTUGAL              ";
            break;
        case "0006":
            return "BANCO BORGES IRMAO             ";
            break;
        case "0007":
            return "BANCO ESPIRITO SANTO (07)      ";
            break;
        case "0008":
            return "BANCO AFRICANO INVESTIMENTOS   ";
            break;
        case "0200":
            return "CCAM MAFRA (5200)              ";
            break;
        case "0009":
            return "BANCO FOMENTO E EXTERIOR       ";
            break;
        case "0010":
            return "BANCO PORTUGUES INVESTIMENTOS  ";
            break;
        case "0012":
            return "BANCO COMERCIAL DOS ACORES     ";
            break;
        case "0013":
            return "BANCO NACIONAL ULTRAMARINO(13) ";
            break;
        case "0015":
            return "BANCO PINTO & SOTTO MAYOR (15) ";
            break;
        case "0016":
            return "BANCO DE PORTUGAL              ";
            break;
        case "0017":
            return "BANCO PORTUGUES ATLANTICO (17) ";
            break;
        case "0781":
            return "DIRECCAO GERAL TESOURO         ";
            break;
        case "0018":
            return "BANCO TOTTA & ACORES (18)      ";
            break;
        case "0019":
            return "BANCO BILBAO VIZCAYA (PORT.)   ";
            break;
        case "0020":
            return "CREDIT LYONNAIS PORTUGAL       ";
            break;
        case "0021":
            return "CREDITO PREDIAL PORTUGUES (21) ";
            break;
        case "0022":
            return "BANCO DO BRASIL                ";
            break;
        case "0023":
            return "ACTIVOBANK S.A.                ";
            break;
        case "0024":
            return "BANCO MELLO                    ";
            break;
        case "0025":
            return "BANCO CHEMICAL (PORTUGAL) S.A. ";
            break;
        case "0027":
            return "BANCO PORTUGUES INVESTIMENTO   ";
            break;
        case "0028":
            return "CITIBANK                       ";
            break;
        case "0029":
            return "GENERALE BANK                  ";
            break;
        case "0030":
            return "BANCO COMERCIO INDUSTRIA (30)  ";
            break;
        case "0031":
            return "BANCO INTERNACIONAL CREDITO    ";
            break;
        case "0032":
            return "BARCLAYS BANK, PLC             ";
            break;
        case "0033":
            return "BANCO COMERCIAL PORTUGUES      ";
            break;
        case "0034":
            return "BANQUE NATIONALE DE PARIS      ";
            break;
        case "0035":
            return "CAIXA GERAL DE DEPOSITOS       ";
            break;
        case "0036":
            return "MONTEPIO GERAL                 ";
            break;
        case "0037":
            return "MONTEPIO COMERC. E INDUSTRIAL  ";
            break;
        case "0038":
            return "BANCO INTERNACIONAL DO FUNCHAL ";
            break;
        case "0039":
            return "BANCO EXTERIOR DE ESPANA, S.A. ";
            break;
        case "0040":
            return "ABN BANK                       ";
            break;
        case "0041":
            return "BANCO EXPRESSO ATLANTICO       ";
            break;
        case "0042":
            return "BANK OF TOKYO MITSUBISHI       ";
            break;
        case "0043":
            return "DEUTSCHE BANK SA               ";
            break;
        case "0044":
            return "BANCO HISPANO DE INVESTIMENTO  ";
            break;
        case "0045":
            return "CAIXAS CREDITO AGRICOLA MUTUO  ";
            break;
        case "0046":
            return "BANCO NAC CRED IMOBILIARIO     ";
            break;
        case "0047":
            return "BANCO ESSI, S.A.               ";
            break;
        case "0048":
            return "BANCO FINANTIA, S.A.           ";
            break;
        case "0049":
            return "BANCO INVEST IMOBILIARIO       ";
            break;
        case "0054":
            return "CAIXA ECONOMICA ACOREANA       ";
            break;
        case "0055":
            return "CAIXA ECON ASS S M E C LISBOA  ";
            break;
        case "0058":
            return "CAIXA ECON.MISERIC.ANGRA H.    ";
            break;
        case "0059":
            return "CAIXA ECON.MISERIC.ANGRA H.    ";
            break;
        case "0061":
            return "BANCO INVESTIMENTO GLOBAL      ";
            break;
        case "0066":
            return "BANCO ATLANTICO                ";
            break;
        case "0068":
            return "CAIXA ECON.SOC.COOP.PREV.OPER. ";
            break;
        case "0071":
            return "CAIXA ECON.MISERIC.P.DELGADA   ";
            break;
        case "0072":
            return "BANCO UNIVERSO                 ";
            break;
        case "0073":
            return "INTERBANCO                     ";
            break;
        case "0074":
            return "CAIXA ECON.MISERIC.POVOACAO    ";
            break;
        case "0076":
            return "FINIBANCO SA                   ";
            break;
        case "0078":
            return "CISF-BI                        ";
            break;
        case "0079":
            return "BANCO PORTUGUES DE NEGOCIOS    ";
            break;
        case "0080":
            return "CAIXA ECONOMICA DO FUNCHAL     ";
            break;
        case "0081":
            return "BANCO SANTANDER NEGOCIOS SA    ";
            break;
        case "0082":
            return "CAIXAS CREDITO AGRICOLA MUTUO  ";
            break;
        case "0083":
            return "BANCO SABADELL                 ";
            break;
        case "0085":
            return "ITAU EUROPA SA                 ";
            break;
        case "0086":
            return "EFISA-ENGENHARIA FINANCEIRA SA ";
            break;
        case "0092":
            return "CAJA AHORROS MUNICIPAL DE VIGO ";
            break;
        case "0096":
            return "CAIXA CRED AGR. MUTUO MORTAGUA ";
            break;
        case "0097":
            return "CAIXA CRED AGR. MUTUO CHAMUSCA ";
            break;
        case "0098":
            return "CAIXA CRED AGR.MUTUO BOMBARRAL ";
            break;
        case "0340":
            return "CCAM TORRES VEDRAS (5340)      ";
            break;
        case "0169":
            return "CITIBANK                       ";
            break;
        case "0170":
            return "CAIXA GALICIA                  ";
            break;
        case "0180":
            return "CAIXA CRED AGRI MUTUO LEIRIA   ";
            break
    }
};
BCP.SDC.Presentation.Blue.Common.FormatCardDisplay = function(cardNumber) {
    var retCard = cardNumber;
    var formatedCard;
    retCard = retCard.replace(/\s/g, "");
    if (retCard.length == 15) formatedCard = "XXXX XXXX XXX" + retCard[11] + " " + retCard.substring(12);
    if (retCard.length == 16) formatedCard = "XXXX XXXX XXX" + retCard.substring(12);
    return formatedCard
};

function containsElement(arr, ele) {
    var found = false,
        index = 0;
    while (!found && index < arr.length) if (arr[index] == ele) found = true;
    else index++;
    return found
};

function getIndex(input) {
    var index = -1,
        i = 0,
        found = false;
    while (i < input.form.length && index == -1) if (input.form[i] == input) index = i;
    else i++;
    return index
};
BCP.SDC.Presentation.Blue.Common.nibOnBlur = function(obj) {
    if (obj.value != "") {
        var maxLength = obj.getAttribute('maxlength');
        if (obj.value.length < maxLength) obj.value = padLeft(obj.value, maxLength, '0')
    }
    return true
};
BCP.SDC.Presentation.Blue.Common.isDate = function(ddmmaaaaa) {
    if (ddmmaaaaa.length < 8) return false;
    var cD = padLeft(ddmmaaaaa.split('/')[0], 2, '0');
    var cM = padLeft(ddmmaaaaa.split('/')[1], 2, '0');
    var cY = ddmmaaaaa.split('/')[2];
    ddmmaaaaa = ddmmaaaaa.replace(/-/g, "").replace(/\//g, '');
    for (i = 0; i < ddmmaaaaa.length; i++) {
        if (ddmmaaaaa.charAt(i) < "0") {
            return false
        }
        if (ddmmaaaaa.charAt(i) > "9") {
            return false
        }
    }
    if (cD <= 0) return false;
    if ((cM > 12) || (cM <= 0)) return false;
    if ((cY < 1900) || (cY > 2100)) return false;
    if (cM == 1 || cM == 3 || cM == 5 || cM == 7 || cM == 8 || cM == 10 || cM == 12) {
        return (cD <= 31)
    } else if (cM == 4 || cM == 6 || cM == 9 || cM == 11) {
        return (cD <= 30)
    } else if (cM == 2) {
        var myCD = ((cY % 4) == 0) ? 29 : 28;
        return (cD <= myCD)
    } else {
        return false
    }
};

function isDate(ddmmaaaaa) {
    if (ddmmaaaaa.length < 8) return false;
    for (i = 0; i < ddmmaaaaa.length; i++) {
        if (ddmmaaaaa.charAt(i) < "0") {
            return false
        }
        if (ddmmaaaaa.charAt(i) > "9") {
            return false
        }
    }
    cD = ddmmaaaaa.substring(0, 2);
    cM = ddmmaaaaa.substring(2, 4);
    cY = ddmmaaaaa.substring(4, 8);
    if (cD <= 0) return false;
    if ((cM > 12) || (cM <= 0)) return false;
    if ((cY < 1900) || (cY > 2100)) return false;
    if (cM == 1 || cM == 3 || cM == 5 || cM == 7 || cM == 8 || cM == 10 || cM == 12) {
        return (cD <= 31)
    } else if (cM == 4 || cM == 6 || cM == 9 || cM == 11) {
        return (cD <= 30)
    } else if (cM == 2) {
        var myCD = ((cY % 4) == 0) ? 29 : 28;
        return (cD <= myCD)
    } else {
        return false
    }
}
function padLeft(text, totalLength, character) {
    var input = new String(text);
    var i;
    var temp = new String();
    for (i = input.length; i < totalLength; i++) temp += character;
    return (temp + input)
}
function padRight(text, totalLength, character) {
    var input = new String(text);
    var i;
    var temp = new String();
    for (i = input.length; i < totalLength; i++) temp += character;
    return (input + temp)
}
BCP.SDC.Presentation.Blue.Common.validaNumContribuinte = function(ctrl) {
    var num = ctrl;
    var errCode = 0;
    var nifLen = num.length;
    var produto = 0;
    var resto = 0;
    if (nifLen != 9) errCode = 1;
    if ((num == "000000000") && errCode == 0) errCode = 2;
    if ((num.charAt(0) == '0' || num.charAt(0) == '3' || num.charAt(0) == '4') && errCode == 0) {
        errCode = 3
    }
    j = 8;
    for (i = 1; i < 10; i++) {
        produto = produto + num.substring(j, j + 1) * i;
        j--
    }
    resto = produto % 11;
    if ((resto != 0 && (resto != 1 || num.substring(8, 9) != 0) && errCode == 0)) errCode = 3;
    return errCode
};
BCP.SDC.Presentation.Blue.Common.validaNumContribuinteEmpresas = function(ctrl) {
    var num = ctrl;
    var errCode = 0;
    var nifLen = num.length;
    var produto = 0;
    var resto = 0;
    if (nifLen != 9) {
        errCode = 2;
        return errCode
    }
    if (num == "000000000") {
        errCode = 3;
        return errCode
    }
    for (i = 0; i < num.length; i++) {
        c = num.charAt(i);
        if (c > '9' || c < '0') {
            errCode = 3;
            return errCode
        }
    }
    produto = 0;
    j = 8;
    for (i = 1; i < 10; i++) {
        produto += num.substring(j, j + 1) * i;
        j--
    }
    resto = produto % 11;
    if (resto != 0 && (resto != 1 || num.substring(8, 9) != 0)) {
        errCode = 3;
        return errCode
    }
    if ((num.charAt(0) != '5' && num.charAt(0) != '9')) errCode = 4;
    return errCode
};
BCP.SDC.Presentation.Blue.Common.calculaCKD = function(numero) {
    var factor = new Array(7, 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2);
    var numeroSemChekDigit = numero.substring(0, 3) + numero.substring(4, numero.length);
    var soma = 0;
    for (i = 0; i < 14; i++) {
        soma = soma + (numeroSemChekDigit.substring(i, i + 1) * factor[i])
    }
    restoDiv = soma % 11;
    var ckd = 11 - restoDiv;
    return (ckd)
};
BCP.SDC.Presentation.Blue.Common.validaNumeroDUC = function(numDUCObj) {
    var numDUC = numDUCObj;
    var errCode = 0;
    if (numDUC.length != 15) {
        errCode = 1;
        return errCode
    }
    if (numDUC.substring(0, 3) == '154' || numDUC.substring(0, 3) == '157') {
        errCode = 3;
        return errCode
    }
    var numDUCInArray = false;
    for (var i = 0; i < EntidadeBalcaoImposto.length; i++) {
        var entidade = EntidadeBalcaoImposto[i][0];
        var balcao = EntidadeBalcaoImposto[i][1];
        var entidadeBalcao = entidade.concat(balcao);
        if (entidadeBalcao == numDUC.substring(0, 3)) {
            numDUCInArray = true
        }
    }
    if (numDUCInArray == false) {
        errCode = 2;
        return errCode
    }
    var ckd_digito = BCP.SDC.Presentation.Blue.Common.calculaCKD(numDUC);
    var digito = numDUC.substring(3, 4);
    if (ckd_digito == 10 || ckd_digito == 11) {
        ckd_digito = 0
    }
    if (numDUC.substring(0, 3) != "162") {
        if (ckd_digito != digito) {
            errCode = 2;
            return errCode
        }
    }
    return errCode
};

function validaNumeroDUC2(source, args, cstmvwNumeroDUCClientID, txbxwNumeroDUCClientID, error1, error2, error3) {
    var cst = document.getElementById(cstmvwNumeroDUCClientID);
    var numDUCObj = document.getElementById(txbxwNumeroDUCClientID);
    var numDUC = numDUCObj.value;
    if (numDUC.length != 15) {
        cst.errormessage = error1;
        cst.innerText = error1;
        args.IsValid = false;
        return 0
    }
    if (numDUC.substring(0, 3) == '154' || numDUC.substring(0, 3) == '157') {
        cst.errormessage = error3;
        cst.innerText = error3;
        args.IsValid = false;
        return 0
    }
    var numDUCInArray = false;
    for (var i = 0; i < EntidadeBalcaoImposto.length; i++) {
        var entidade = EntidadeBalcaoImposto[i][0];
        var balcao = EntidadeBalcaoImposto[i][1];
        var entidadeBalcao = entidade.concat(balcao);
        if (entidadeBalcao == numDUC.substring(0, 3)) {
            numDUCInArray = true
        }
    }
    if (numDUCInArray == false) {
        cst.errormessage = error2;
        cst.innerText = error2;
        args.IsValid = false;
        return 0
    }
    var ckd_digito = BCP.SDC.Presentation.Blue.Common.calculaCKD(numDUC);
    var digito = numDUC.substring(3, 4);
    if (ckd_digito == 10 || ckd_digito == 11) {
        ckd_digito = 0
    }
    if (ckd_digito != digito) {
        cst.errormessage = error2;
        cst.innerText = error2;
        args.IsValid = false;
        return 0
    }
    args.IsValid = true
}
function validateAllNIF(sender, args, ctrl) {
    var nifValue = document.getElementById(ctrl).value;
    if (nifValue != "") {
        args.IsValid = isValidAllNIF(nifValue)
    }
}
function isValidAllNIF(nif) {
    var c;
    var checkDigit = 0;
    if (nif != null && nif.length == 9) {
        c = nif.charAt(0);
        if (c == '1' || c == '2' || c == '5' || c == '6' || c == '8' || c == '9') {
            checkDigit = c * 9;
            var i = 0;
            for (i = 2; i <= 8; i++) {
                checkDigit += nif.charAt(i - 1) * (10 - i)
            }
            checkDigit = 11 - (checkDigit % 11);
            if (checkDigit >= 10) checkDigit = 0;
            if (checkDigit == nif.charAt(8)) return true
        }
    }
    return false
}
BCP.SDC.Presentation.Blue.Common.getDateMaskPosition = function(sourceMask, sourcePositions) {
    var returnValue = 0;
    if (sourcePositions[1] == sourceMask) returnValue = 1;
    if (sourcePositions[2] == sourceMask) returnValue = 2;
    return returnValue
};
BCP.SDC.Presentation.Blue.Common.dateformat = "yyyy/mm/dd";
BCP.SDC.Presentation.Blue.Common.dateseparator = "/";
BCP.SDC.Presentation.Blue.Common.formatDate = function(data, sourceFormat, sourceSeparator, targetFormat, targetSeparator) {
    var dd;
    var mm;
    var yyyy;
    if (sourceFormat == "") {
        sourceFormat = BCP.SDC.Presentation.Blue.Common.dateformat;
        sourceSeparator = BCP.SDC.Presentation.Blue.Common.dateseparator
    }
    dd = data.split(sourceSeparator)[BCP.SDC.Presentation.Blue.Common.getDateMaskPosition("dd", sourceFormat.split(sourceSeparator))];
    mm = data.split(sourceSeparator)[BCP.SDC.Presentation.Blue.Common.getDateMaskPosition("mm", sourceFormat.split(sourceSeparator))];
    yyyy = data.split(sourceSeparator)[BCP.SDC.Presentation.Blue.Common.getDateMaskPosition("yyyy", sourceFormat.split(sourceSeparator))];
    targetFormat = targetFormat.replace(/yyyy/i, yyyy);
    targetFormat = targetFormat.replace(/mm/i, mm);
    targetFormat = targetFormat.replace(/dd/i, dd);
    targetFormat = targetFormat.replace("/", targetSeparator);
    return targetFormat
};
BCP.SDC.Presentation.Blue.Common.RemoveBlankDisclaimers = function(searchNotes) {
    $.each(searchNotes, function(f, note) {
        if ((/^\s*$/).test(note.innerHTML)) {
            var notejquery = $(note);
            if (note.id == "dopcionalseleccao") {
                notejquery.remove()
            } else notejquery.hide()
        }
    })
};
BCP.SDC.Presentation.Blue.Common.getFormattedDateFromPicker = function(sourceData) {
    return BCP.SDC.Presentation.Blue.Common.getDateFormatted(sourceData, "mm/dd/yyyy", "/")
};
BCP.SDC.Presentation.Blue.Common.getDateFormatted = function(sourceData, sourceFormat, sourceSeparator) {
    return BCP.SDC.Presentation.Blue.Common.formatDate(sourceData, sourceFormat, sourceSeparator, "dd/mm/yyyy", "/")
};

function formataData(ano, mes, dia) {
    var strDateFormat = BCP.SDC.Presentation.Blue.Common.dateformat;
    if (ano <= 0) return false;
    if (mes < 1 || mes > 12) return false;
    switch (mes) {
        case 2:
            if (dia > 29) return false;
            break;
        case 4, 6, 9, 11:
            if (dia > 30) return false;
            break
    }
    dia = dia < 10 ? "0" + dia : dia;
    mes = mes < 10 ? "0" + mes : mes;
    strDateFormat = strDateFormat.replace(/yyyy/i, ano);
    strDateFormat = strDateFormat.replace(/mm/i, mes);
    strDateFormat = strDateFormat.replace(/dd/i, dia);
    return strDateFormat
}
BCP.SDC.Presentation.Blue.Common.isWorkingDay = function(varStdCalday, varStdCalmonth, varStdCalyear) {
    var day = varStdCalday;
    var month = varStdCalmonth - 1;
    var year = varStdCalyear;
    var myDate = new Date(year, month, day);
    var valid;
    var valid = ((myDate.getDay() != 6) && (myDate.getDay() != 0));
    return valid
};

function isWorkingDay(varStdCalday, varStdCalmonth, varStdCalyear) {
    var myDate = new Date();
    myDate.setDate(1);
    myDate.setFullYear(varStdCalyear);
    myDate.setMonth(varStdCalmonth - 1);
    myDate.setDate(varStdCalday);
    var valid = ((myDate.getDay() != 6) && (myDate.getDay() != 0));
    return valid
}
BCP.SDC.Presentation.Blue.Common.ProcessAjaxException = function(XMLHttpRequest, errorDiv, replaceDiv) {
    var div = "<div id=\"genericError\" class=\"genericError\"><div class=\"message\" id=\"messageDiv\" style=\"left:50%;margin-left:-240px;position:relative;\">";
    var msg = "<span>Pedimos desculpa, neste momento não podemos satisfazer o seu pedido</span>";
    if (XMLHttpRequest.status == 701) {
        msg = $(XMLHttpRequest.responseText).html();
        msg += "</div>"
    } else if (XMLHttpRequest.status == 702 || (XMLHttpRequest.status == 703 && (document.getElementById("divMarketsDetail") == null))) {
        if (timeoutSession != undefined && timeoutSession != null) clearTimeout(timeoutSession);
        msg = "<span>A sua sessão expirou! Clique no botão para efectuar o Login.</span>";
        msg += "</div>";
        msg += "<div class=\"buttons\">";
        msg += "<a id=\"lnkLogin\" class=\"primary\" tabindex='0' href=\"javascript:BCP.SDC.Presentation.Blue.Common.DoLogout()\">";
        msg += "<span class=\"l\"></span>";
        msg += "<span class=\"c\">Login</span>";
        msg += "<span class=\"r\"></span>";
        msg += "</a>";
        if ($("#bodyContent").size() > 0) errorDiv = $("#bodyContent")
    } else if (XMLHttpRequest.status == 703) {
        msg = "<span>A sua sessão expirou! Clique no botão para efectuar o Login.</span>";
        msg += "</div>";
        var buttons = "";
        buttons += "<div class=\"buttons\">";
        buttons += "<a id=\"lnkLogin\" class=\"primary\" tabindex='0' href=\"javascript:BCP.SDC.Presentation.Blue.Common.DoLogout()\">";
        buttons += "<span class=\"l\"></span>";
        buttons += "<span class=\"c\">Login</span>";
        buttons += "<span class=\"r\"></span>";
        buttons += "</a>";
        $("#dButtonsOverlay").html(buttons)
    } else msg += "</div>";
    div = div + msg + "</div>";
    if (replaceDiv) {
        var elem = $(div);
        errorDiv.after(elem);
        errorDiv.remove()
    } else {
        errorDiv.html(div)
    }
};
BCP.SDC.Presentation.Blue.Common.ProcessAjaxExceptionInsideModal = function(XMLHttpRequest, errorDiv, replaceDiv) {
    var div = "<div id=\"genericError\" class=\"genericError\"><div class=\"message\" id=\"messageDiv\" style=\"left:50%;margin-left:-240px;position:relative;\">";
    var msg = "<span>Pedimos desculpa, neste momento não podemos satisfazer o seu pedido</span>";
    if (XMLHttpRequest.status == 701) {
        msg = $(XMLHttpRequest.responseText).html();
        msg += "</div>"
    } else if (XMLHttpRequest.status == 702) {
        msg = "<span>A sua sessão expirou! Clique no botão para efectuar o Login.</span>";
        var buttonsDiv = "<a id=\"lnkLogin\" class=\"primary\" tabindex='0' href=\"javascript:BCP.SDC.Presentation.Blue.Common.DoLogout()\">";
        buttonsDiv += "<span class=\"l\"></span>";
        buttonsDiv += "<span class=\"c\">Login</span>";
        buttonsDiv += "<span class=\"r\"></span>";
        buttonsDiv += "</a>";
        if ($("#contentTransaction").size() > 0) errorDiv = $("#contentTransaction");
        if ($("#buttonsDiv").size() > 0) {
            $("#buttonsDiv").show();
            $("#buttonsDiv").html(buttonsDiv)
        }
    } else msg += "</div>";
    div = div + msg + "</div>";
    if (replaceDiv) {
        var elem = $(div);
        errorDiv.after(elem);
        errorDiv.remove()
    } else {
        errorDiv.html(div)
    }
};
BCP.SDC.Presentation.Blue.Common.ProcessAjaxExceptionDownloadDocs = function(errorDiv, replaceDiv) {
    var div = "<div id=\"genericError\" class=\"genericError\"><div class=\"message\" id=\"messageDiv\" style=\"left:50%;margin-left:-240px;position:relative;\">";
    var msg = "<span>Pedimos desculpa, neste momento não podemos satisfazer o seu pedido</span>";
    msg = "<span>A sua sessão expirou! Clique no botão para efectuar o Login.</span>";
    msg += "</div>";
    msg += "<div class=\"buttons\">";
    msg += "<a id=\"lnkLogin\" class=\"primary\" tabindex='0' href=\"javascript:BCP.SDC.Presentation.Blue.Common.DoLogout()\">";
    msg += "<span class=\"l\"></span>";
    msg += "<span class=\"c\">Login</span>";
    msg += "<span class=\"r\"></span>";
    msg += "</a>";
    if ($("#bodyContent").size() > 0) errorDiv = $("#bodyContent");
    div = div + msg + "</div>";
    if (replaceDiv) {
        var elem = $(div);
        errorDiv.after(elem);
        errorDiv.remove()
    } else {
        errorDiv.html(div)
    }
};
BCP.SDC.Presentation.Blue.Common.ProcessAjaxExceptionNoDetailAccounts = function(errorDiv, replaceDiv) {
    var div = "<div id=\"genericError\" class=\"genericError\"><div class=\"message\" id=\"messageDiv\" style=\"left:50%;margin-left:-240px;position:relative;\">";
    var msg = "<span>Não existem contas</span>";
    div = div + msg + "</div></div>";
    if (replaceDiv) {
        var elem = $(div);
        errorDiv.after(elem);
        errorDiv.remove()
    } else {
        errorDiv.html(div)
    }
};
BCP.SDC.Presentation.Blue.Common.DoLogout = function() {
    var pathname = window.location.pathname;
    window.location.href = "/Webpages/Forms/LogoutSession.aspx?ReturnUrl=" + pathname
};
jQuery.fn.extend({
    asMultiview: function() {
        var multiview = $(this);
        $(".jq_viewHandler", multiview).click(function(i) {
            if ($(this).attr("nextVisibleView") != undefined) {
                var invoke = "#" + $(this).attr("nextVisibleView");
                var viewGroup = $(invoke, multiview).attr("viewGroup");
                $(".jq_viewPart", multiview).filter(function() {
                    return $(this).attr("viewGroup") == viewGroup
                }).hide();
                $(invoke, multiview).show()
            }
        })
    }
});
BCP.SDC.Presentation.Blue.Common.HideModalRefresh = function() {
    BCP.SDC.Presentation.Blue.Services.TransactionContainer.refreshPage = true;
    BCP.SDC.Presentation.Blue.Services.TransactionContainer.HideModal()
};
BCP.SDC.Presentation.Blue.Common.ValidateAmountExp = function(value) {
    var regExpStr = /^[0-9]+([\.\,]?[0-9]{1,2})?$/;
    var regExpAmount = new RegExp(regExpStr);
    var isValid = regExpAmount.test(value);
    return isValid
};
BCP.SDC.Presentation.Blue.Common.ValidateAmountExp3 = function(value) {
    var regExpStr = /^[0-9]+([\.,]?[0-9]{1,3})?$/;
    var regExpAmount = new RegExp(regExpStr);
    var isValid = regExpAmount.test(value);
    return isValid
};
BCP.SDC.Presentation.Blue.Common.ValidateCotacaoExp = function(value) {
    var regExpStr = /^[0-9]+([\.\,]?[0-9]{1,3})?$/;
    var regExpAmount = new RegExp(regExpStr);
    var isValid = regExpAmount.test(value);
    return isValid
};
BCP.SDC.Presentation.Blue.Common.ValidateAmountGratherThanAvailable = function(amountOut, amountAvailable, flag) {
    var isValid = false;
    amountOut = amountOut.replace(',', '.');
    if (parseFloat(amountOut) != "" && parseFloat(amountOut) > 0) {
        if (parseFloat(amountOut) > parseFloat(amountAvailable) && !flag) isValid = false;
        else isValid = true
    }
    return isValid
};
BCP.SDC.Presentation.Blue.Common.ValidateEmailExp = function(valEmail) {
    var regexMailStr = (/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/);
    var regexMail = new RegExp(regexMailStr);
    var isValid = regexMail.test(valEmail);
    return isValid
};
BCP.SDC.Presentation.Blue.Common.SetLineBorders = function(tableMovements) {
    if (tableMovements) {
        var total = tableMovements.rows.length;
        var rest = total % 3;
        while (rest != 0) {
            total -= 1;
            rest = total % 3
        }
        while (rest == 0 && total > 0) {
            if (total > 3) {
                if (tableMovements.rows[total]) tableMovements.rows[total].className = "";
                total -= 3;
                rest = total % 3
            } else {
                if (tableMovements.rows[total]) tableMovements.rows[total].className = "";
                total -= 3;
                rest = total % 3
            }
        }
        tableMovements.rows[tableMovements.rows.length - 1].className = "noBorder"
    }
};
BCP.SDC.Presentation.Blue.Common.SetTableLineBorders = function(tableMovements, startRow) {
    if (tableMovements) {
        var total = tableMovements.rows.length;
        var rest = total % 3;
        while (rest != 0) {
            total -= 1;
            rest = total % 3
        }
        while (rest == 0 && total > 0) {
            if (total > 3) {
                if (tableMovements.rows[total + startRow]) tableMovements.rows[total + startRow].className = "separatorBorder";
                total -= 3;
                rest = total % 3
            } else {
                if (tableMovements.rows[total + startRow]) tableMovements.rows[total + startRow].className = "separatorBorder";
                total -= 3;
                rest = total % 3
            }
        }
    }
};
BCP.SDC.Presentation.Blue.Common.ParseData = function(day, month, year) {
    var d = new Date();
    var datDisp;
    d.setDate(day);
    d.setMonth(month - 1);
    d.setFullYear(year);
    
    return d.format("dd/MM/yyyy")
};
BCP.SDC.Presentation.Blue.Common.SlideProgress = function(mainFuelId, text, widthFuel) {
    var rsize = 70;
    mainFuelId = "#" + mainFuelId;
    var fuel = $(".progbar_fg", mainFuelId);
    var lblfuel = $(".progbar_label.inside", mainFuelId);
    var lblfuel2 = $(".progbar_label.outside", mainFuelId);
    lblfuel.html(text);
    lblfuel2.html(text);
    fuel.width(widthFuel);
    var intWidthFuel = parseInt(Math.abs(widthFuel));
    $(".l .r .c", fuel).show();
    if (rsize > intWidthFuel) {
        if (intWidthFuel == 0) {
            $(".l .r .c", fuel).hide()
        } else lblfuel.hide();
        lblfuel2.css("margin-left", widthFuel);
        lblfuel2.show()
    } else {
        lblfuel.show();
        lblfuel2.hide()
    }
};
BCP.SDC.Presentation.Blue.Common.ToDate = function(date) {
    if (!BCP.SDC.Presentation.Blue.Common.isDate(date)) return false;
    var regDate = /^(([0]{0,1}[123456789])|([12]\d)|(3[01]))\/((0{0,1}[123456789])|(1[012]))\/((19\d{2})|(2\d{3}))$/;
    if (date.search(regDate) > -1) {
        var day = padLeft(date.split('/')[0], 2, '0');
        var month = padLeft(date.split('/')[1], 2, '0');
        var year = date.split('/')[2];
        return new Date(year, month - 1, day)
    } else return null
};
BCP.SDC.Presentation.Blue.Common.DateToString = function(date) {
    var day = date.getDate();
    var month = date.getMonth() + 1;
    var year = date.getFullYear();
    var dateSt = "";
    if (day < 10) dateSt += "0";
    dateSt += day + "/";
    if (month < 10) dateSt += "0";
    dateSt += month;
    dateSt += "/" + year;
    return dateSt
};

function resizeWindow() {
    var div = $("body").find('div:last');
    if (div) {
        div.css("height", $(document).height());
        div.css("width", $(document).width())
    }
}
function displayWaitPanel(id, panelOver, settings) {
    var imgSrc = "/PublishingImages/PleaseWait.gif";
    var newDivMaster = $("<div></div>").attr("id", id).css({
        display: "block"
    });
    var hei = $(document).height() + 100;
    var newDivWait = $("<div></div>").attr("class", "waitpanel").css({
        height: hei
    });
    var newDivTop = $("<div></div>").attr("class", "load_top");
    newDivTop.append($("<span></span>").attr("class", "l"));
    newDivTop.append($("<span></span>").attr("class", "c"));
    newDivTop.append($("<span></span>").attr("class", "r"));
    var newDivBodc = $("<div></div>").attr("class", "bodc");
    var newDivBod = $("<div></div>").attr("class", "bod");
    var newImg = $("<img/>").attr({
        src: imgSrc,
        id: "genericWaitImage"
    });
    newDivBod.append(newImg);
    setTimeout("$(\"#genericWaitImage\").src = $(\"#genericWaitImage\").src", 100);
    newDivBod.append($("<h3></h3>").text(wait_title));
    newDivBod.append($("<p></p>").text(wait_text));
    newDivBodc.append(newDivBod);
    var newDivBot = $("<div></div>").attr("class", "load_bot");
    newDivBot.append($("<span></span>").attr("class", "l"));
    newDivBot.append($("<span></span>").attr("class", "c"));
    newDivBot.append($("<span></span>").attr("class", "r"));
    var newDiv = $("<div></div>").attr("class", "loading");
    newDiv.append(newDivTop);
    newDiv.append(newDivBodc);
    newDiv.append(newDivBot);
    newDivMaster.append(newDivWait);
    newDivMaster.append(newDiv);
    $("body").prepend(newDivMaster);
    if (id != 'divShowWaitPanelIndexesInvesting') {
        $("#bodyContent_03").css({
            display: 'none'
        })
    }
}
function displayBackPanel(id, panelOver, settings) {
    var ofs = panelOver.offset();
    var newDivMaster = $("<div></div>").attr("id", id).css({
        display: "block"
    });
    var hei = $(document).height() + 100;
    var newDivWait = $("<div></div>").attr("class", "waitpanel").css({
        height: hei
    });
    newDivMaster.append(newDivWait);
    $("body").prepend(newDivMaster)
}
function hideWaitPanel(id, panelOver) {
    var idElem = "#" + id;
    $(idElem).remove();
    panelOver.attr("disabled", false);
    $(idElem).css("display", "none");
    panelOver.css("opacity", 1);
    panelOver.css("filter", 100);
    panelOver.css("padding", 0);
    $(".column.c2").css({
        display: 'block'
    })
}
jQuery.extend({
    multipleBind: function(control, input) {
        eval("var val=" + input);
        $.each(val, function(i, n) {
            eval("var functionEx=" + n["bindFunction"]["name"]);
            control.bind("click", n["bindFunction"]["values"], functionEx)
        })
    }
});
$$ = function(id, context) {
    var el = $("#" + id, context);
    if (el.length < 1) el = $("[id$=_" + id + "]", context);
    return el
};
var dmifText = "";

function TransactionPrintStringBuild(jsonObj, index, next, obj) {
    for (var x = 0; x < jsonObj.length; x++) {
        if (jsonObj[x].order == next) {
            var divMain = $("<div></div>");
            if (index < jsonObj.length - 1) divMain.css("border-bottom", "dotted 1px #cccccc");
            if (next == 0) divMain.css("margin-bottom", "20px").css("color", "#e3eef3");
            else divMain.css("margin-bottom", "10px");
            var divTitle = $("<span></span>").css("display", "inline-block").css("width", "250px").css("font-weight", "bold");
            var divValue = $("<span></span>").css("display", "inline-block").css("width", "200px").css("text-align", "right");
            var text = "";
            if (jsonObj[x].key == "dmifText") {
                for (y = 0; y < jsonObj[x].evalues.length; y++) {
                    var dmifParagraph = "";
                    if (y < jsonObj[x].evalues.length - 1) dmifParagraph += "<p>" + jsonObj[x].evalues[y].val + "</p>";
                    else dmifText += "<p style='margin-top: 20px;'>" + jsonObj[x].evalues[y].val + "</p>";
                    divMain.append(dmifParagraph)
                }
            }
            if (jsonObj[x].key != "tableh" && jsonObj[x].key != "tablev" && jsonObj[x].key != "tablev3" && jsonObj[x].key != "tableh3" && jsonObj[x].key != "tablev6" && jsonObj[x].key != "tableh6" && jsonObj[x].key != "dmifText") {
                divTitle.text(jsonObj[x].key);
                for (y = 0; y < jsonObj[x].evalues.length; y++) {
                    text += jsonObj[x].evalues[y].val + " "
                }
                divValue.text(text);
                divMain.append(divTitle);
                divMain.append(divValue)
            }
            if (jsonObj[x].key == "tableh") {
                var divHead = $("<div></div>");
                for (y = 0; y < jsonObj[x].evalues.length; y++) {
                    var divHeadTitle = $("<span></span>").css("display", "inline-block").css("width", "100px").css("font-weight", "bold").css("font-size", "8px");
                    divHeadTitle.text(jsonObj[x].evalues[y].val);
                    divHead.append(divHeadTitle)
                }
                divMain.append(divHead)
            }
            if (jsonObj[x].key == "tablev") {
                var divBodValue = $("<div></div>").css("margin-bottom", "20px");
                for (y = 0; y < jsonObj[x].evalues.length; y++) {
                    var divBodValueTitle = $("<span></span>").css("display", "inline-block").css("width", "100px").css("font-size", "8px");
                    divBodValueTitle.text(jsonObj[x].evalues[y].val);
                    divBodValue.append(divBodValueTitle)
                }
                divMain.append(divBodValue)
            }
            if (jsonObj[x].key == "tableh3") {
                var divHead = $("<div></div>");
                for (y = 0; y < jsonObj[x].evalues.length; y++) {
                    var divHeadTitle = $("<span></span>").css("display", "inline-block").css("width", "150px").css("font-weight", "bold").css("font-size", "8px");
                    divHeadTitle.text(jsonObj[x].evalues[y].val);
                    divHead.append(divHeadTitle)
                }
                divMain.append(divHead)
            }
            if (jsonObj[x].key == "tablev3") {
                var divBodValue = $("<div></div>").css("margin-bottom", "20px");
                for (y = 0; y < jsonObj[x].evalues.length; y++) {
                    var divBodValueTitle = $("<span></span>").css("display", "inline-block").css("width", "150px").css("font-size", "8px");
                    divBodValueTitle.text(jsonObj[x].evalues[y].val);
                    divBodValue.append(divBodValueTitle)
                }
                divMain.append(divBodValue)
            }
            if (jsonObj[x].key == "tableh6") {
                var divHead = $("<div></div>").css("margin-top", "20px");
                for (y = 0; y < jsonObj[x].evalues.length; y++) {
                    var divHeadTitle = $("<span></span>").css("display", "inline-block").css("width", "75px").css("font-weight", "bold").css("font-size", "8px");
                    divHeadTitle.text(jsonObj[x].evalues[y].val);
                    divHead.append(divHeadTitle)
                }
                divMain.append(divHead)
            }
            if (jsonObj[x].key == "tablev6") {
                var divBodValue = $("<div></div>").css("margin-bottom", "20px");
                for (y = 0; y < jsonObj[x].evalues.length; y++) {
                    var divBodValueTitle = $("<span></span>").css("display", "inline-block").css("width", "75px").css("font-size", "8px");
                    divBodValueTitle.text(jsonObj[x].evalues[y].val);
                    divBodValue.append(divBodValueTitle)
                }
                divMain.append(divBodValue)
            }
            if (dmifText.length > 0 && index == jsonObj.length - 1) divMain.append(dmifText);
            obj.append(divMain);
            index++;
            break
        }
    }
    next++;
    if (index < jsonObj.length) TransactionPrintStringBuild(jsonObj, index, next, obj)
}
function TransactionPrint(obj, contentToPrint, date, hour, coptyrigth) {
    var content = $("#" + contentToPrint);
    var div = $("<div></div>");
    var divHead = $("<div></div>").css("width", "450px").css("font-weight", "bold").css("height", "30px").css("color", "#cc0066").css("border", "solid 1px #cfe2ea").css("padding", "10px 10px 10px 10px").css("margin-bottom", "10px");
    var span1 = $("<span></span>").css("display", "inline-block").css("width", "250px").css("font-size", "16px").css("font-weight", "bold");
    var span2 = $("<span></span>").css("display", "inline-block").css("width", "200px").css("text-align", "right");
    span1.html("ActivoBank");
    span2.text('Data: ' + date);
    divHead.append(span1);
    divHead.append(span2);
    div.append(divHead);
    var divBod = $("<div></div>").css("width", "450px").css("border", "solid 1px #cccccc").css("padding", "10px 10px 10px 10px");
    div.append(divBod);
    var jsonTable = "[";
    var order = 1;
    window.jQuery("div.contentDialog", "#transaction").each(function() {
        jsonTable += "{key:'dmifText', order: '" + order + "',evalues:[";
        $("p.noteText", $(this)).each(function() {
            var text3 = $(this).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
            jsonTable += "{val:'" + text3 + "'},"
        });
        order++;
        jsonTable = jsonTable.replace(/,*$/, "");
        jsonTable += "]},"
    });
    window.jQuery("div.left div.topicInformation", "#transaction").each(function() {
        var text = $("p.key", $(this)).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
        var text2 = $("p.val", $(this)).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
        jsonTable += "{ key: '" + text + "', order: '" + order + "', evalues: [";
        $("p.val span", $(this)).each(function() {
            if ($(this)[0].parentNode.className == "val") {
                var text3 = $(this).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
                jsonTable += "{ val: '" + text3 + "'},"
            }
        });
        order++;
        jsonTable = jsonTable.replace(/,*$/, "");
        jsonTable += "]},"
    });
    window.jQuery("div.right div.topicInformation", "#transaction").each(function() {
        var text = $("p.key", $(this)).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
        var text2 = $("p.val", $(this)).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
        jsonTable += "{ key: '" + text + "', order: '" + order + "', evalues: [";
        $("p.val span", $(this)).each(function() {
            if ($(this)[0].parentNode.className == "val") {
                var text3 = $(this).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
                jsonTable += "{ val: '" + text3 + "'},"
            }
        });
        order++;
        jsonTable = jsonTable.replace(/,*$/, "");
        jsonTable += "]},"
    });
    window.jQuery("table.oper", "#transaction").each(function() {
        var text = "tableh3";
        jsonTable += "{key:'" + text + "', order: '" + order + "', evalues:[";
        $("th", $(this)).each(function() {
            var text2 = $(this).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
            jsonTable += "{val:'" + text2 + "'},"
        });
        order++;
        jsonTable = jsonTable.replace(/,*$/, "");
        jsonTable += "]},";
        var textTBody = "tablev3";
        jsonTable += "{key:'" + textTBody + "', order: '" + order + "', evalues:[";
        $("td", $(this)).each(function() {
            var text3 = $(this).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
            jsonTable += "{val:'" + text3 + "'},"
        });
        order++;
        jsonTable = jsonTable.replace(/,*$/, "");
        jsonTable += "]},"
    });
    window.jQuery("div.left table.cards_Table", "#transaction").each(function() {
        var text = "tableh";
        jsonTable += "{key:'" + text + "', order: '" + order + "', evalues:[";
        $("th", $(this)).each(function() {
            var text2 = $(this).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
            jsonTable += "{val:'" + text2 + "'},"
        });
        order++;
        jsonTable = jsonTable.replace(/,*$/, "");
        jsonTable += "]},";
        var textTBody = "tablev";
        jsonTable += "{key:'" + textTBody + "', order: '" + order + "', evalues:[";
        $("td", $(this)).each(function() {
            var text3 = $(this).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
            jsonTable += "{val:'" + text3 + "'},"
        });
        order++;
        jsonTable = jsonTable.replace(/,*$/, "");
        jsonTable += "]},"
    });
    window.jQuery("table.table03 thead tr", "#transaction").each(function() {
        var text = "tableh";
        jsonTable += "{key:'" + text + "', order: '" + order + "', evalues:[";
        $("th", $(this)).each(function() {
            var text2 = $(this).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
            jsonTable += "{val:'" + text2 + "'},"
        });
        jsonTable = jsonTable.replace(/,*$/, "");
        jsonTable += "]},";
        order++
    });
    window.jQuery("table.table03 tbody tr", "#transaction").each(function() {
        var textTBody = "tablev";
        jsonTable += "{key:'" + textTBody + "', order: '" + order + "', evalues:[";
        $("td", $(this)).each(function() {
            var text3 = $(this).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
            jsonTable += "{val:'" + text3 + "'},"
        });
        jsonTable = jsonTable.replace(/,*$/, "");
        jsonTable += "]},";
        order++
    });
    window.jQuery(".success_alert .emailText", "#transaction").each(function() {
        jsonTable += "{ key: '', order: '" + order + "', evalues: [";
        jsonTable += "{ val: '" + $(this).html().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "") + "'},";
        jsonTable = jsonTable.replace(/,*$/, "");
        order++;
        jsonTable += "]},"
    });
    window.jQuery("table.table02 tr", "#transaction").each(function() {
        var text = $("th", $(this)).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
        var text2 = $("td", $(this)).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
        jsonTable += "{ key: '" + text + "', order: '" + order + "', evalues: [";
        $("td", $(this)).each(function() {
            var text3 = $(this).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
            jsonTable += "{ val: '" + text3 + "'},"
        });
        jsonTable = jsonTable.replace(/,*$/, "");
        jsonTable += "]},";
        order++
    });
    window.jQuery("div.sit", "#transaction").each(function() {
        var title = $("div.txt span.tit", $(this)).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
        var text = $("div.txt span.val", $(this)).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
        jsonTable += "{key:'" + title + "', order: '" + order + "', evalues: [{ val: '" + text + "'}]},";
        order++
    });
    window.jQuery("table.table05 thead tr", "#transaction").each(function() {
        var text = "tableh6";
        jsonTable += "{key:'" + text + "', order: '" + order + "',evalues:[";
        $("th", $(this)).each(function() {
            var text2 = $(this).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
            jsonTable += "{val:'" + text2 + "'},"
        });
        order++;
        jsonTable = jsonTable.replace(/,*$/, "");
        jsonTable += "]},"
    });
    window.jQuery("table.table05 tbody tr", "#transaction").each(function() {
        var textTBody = "tablev6";
        jsonTable += "{key:'" + textTBody + "', order: '" + order + "',evalues:[";
        $("td", $(this)).each(function() {
            var text3 = $(this).text().replace(/^\s*/, "").replace(/\s*$/, "").replace(/\'/g, "");
            jsonTable += "{val:'" + text3 + "'},"
        });
        order++;
        jsonTable = jsonTable.replace(/,*$/, "");
        jsonTable += "]},"
    });
    jsonTable = jsonTable.replace(/"\n"/, "");
    jsonTable = jsonTable.replace(/,*$/, "");
    jsonTable += "]";
    jsonTable = jsonTable.replace(/<br>/g, " ");
    jsonTable = jsonTable.replace(/(\r\n|\n|\r)/gm, "");
    if (jsonTable.length > 0) {
        var jsonObj = eval(jsonTable);
        if (jsonObj.length > 0) {
            TransactionPrintStringBuild(jsonObj, 0, 0, divBod)
        }
    }
    var divFooter = $("<div></div>").css("width", "450px").css("border", "solid 1px #ccc").css("padding", "3px 10px 3px 10px").css("margin-top", "10px");
    var spanFooter1 = $("<span></span>").css("display", "inline-block").css("width", "250px").css("font-size", "9px");
    var spanFooter2 = $("<span></span>").css("display", "inline-block").css("width", "200px").css("font-size", "9px").css("text-align", "right");
    divFooter.append(spanFooter1);
    divFooter.append(spanFooter2);
    spanFooter1.html(coptyrigth);
    spanFooter2.text('Hora: ' + hour);
    div.append(divFooter);
    var is_opera = /opera/.test(navigator.userAgent.toLowerCase());
    if (!is_opera) div.print();
    else printContent(div);
    return false
};
BCP.SDC.Presentation.Blue.Common.VerifyAcrobatIsInstalled = function() {
    var isInstalled = false;
    if (navigator.appVersion.indexOf("Mac") != -1) isInstalled = true;
    else {
        var version = null;
        if (window.ActiveXObject) {
            var control = null;
            try {
                control = new ActiveXObject('AcroPDF.PDF')
            } catch (e) { }
            if (!control) {
                try {
                    control = new ActiveXObject('PDF.PdfCtrl')
                } catch (e) { }
            }
            if (control) {
                isInstalled = true;
                version = control.GetVersions().split(',');
                version = version[0].split('=');
                version = parseFloat(version[1])
            }
        } else {
            if (navigator.plugins && navigator.plugins.length > 0) {
                for (var i = 0; i < navigator.plugins.length; i++) {
                    if (navigator.plugins[i].name == 'Adobe Acrobat' || navigator.plugins[i].name == 'Adobe PDF Plug-in' || navigator.plugins[i].name == 'Chrome PDF Viewer' || (navigator.plugins[i].name.indexOf('Foxit Reader Plugin') != -1)) {
                        isInstalled = true;
                        break
                    }
                }
            }
        }
    }
    return isInstalled
};

function TransactionPrintToPDF(obj, obj2, contentToPrint) {
    if (BCP.SDC.Presentation.Blue.Common.VerifyAcrobatIsInstalled()) {
        var linkbtn = $("#" + obj.id);
        if (linkbtn) linkbtn.hide();
        var linkbtn2 = $("#" + obj2);
        if (linkbtn2) linkbtn2.hide();
        var aSharingBlock = $("#aSharingBlock");
        if (aSharingBlock) aSharingBlock.hide();
        var btnsDmif = $("#btnsDmif");
        if (btnsDmif) btnsDmif.hide();
        ShowFooterToolsWaitPanel();
        var is_safari = /webkit/.test(navigator.userAgent.toLowerCase());
        var is_chrome = /chrome/.test(navigator.userAgent.toLowerCase());
        if (!is_safari && !is_chrome) {
            setTimeout('window.open("/WebPages/Forms/Print.aspx", "printwin", "width=800,height=600,menubar=0,toolbar=0,location=no,directories=0,scrollbars=0,status=0,resizable=yes")', 100)
        } else window.open("/WebPages/Forms/Print.aspx", "printwin", "width=800,height=600,menubar=0,toolbar=0,location=no,directories=0,scrollbars=0,status=0,resizable=yes")
    } else {
        $("#divAcrobat").show()
    }
    return false
}
function DownloadDocsToPDF(obj) {
    ShowFooterToolsWaitPanel();
    var is_safari = /webkit/.test(navigator.userAgent.toLowerCase());
    var is_chrome = /chrome/.test(navigator.userAgent.toLowerCase());
    var url = "";
    if (BCP.SDC.Presentation.Blue.Common.VerifyAcrobatIsInstalled()) url = "/WebPages/Services/00/FileDownloadDocs.aspx";
    else url = "/WebPages/Services/00/FileDownloadDocs.aspx?Acrobat=false";
    if (!is_safari && !is_chrome) if (BCP.SDC.Presentation.Blue.Common.VerifyAcrobatIsInstalled()) setTimeout('window.open("/WebPages/Services/00/FileDownloadDocs.aspx", "PrintPDFMovement", "width=800,height=600,menubar=0,toolbar=0,location=no,directories=0,scrollbars=0,status=0,resizable=yes")', 100);
    else setTimeout('window.open("/WebPages/Services/00/FileDownloadDocs.aspx?Acrobat=false", "PrintPDFMovement", "width=800,height=600,menubar=0,toolbar=0,location=no,directories=0,scrollbars=0,status=0,resizable=yes")', 100);
    else window.open(url, "PrintPDFMovement", "width=800,height=600,menubar=0,toolbar=0,location=no,directories=0,scrollbars=0,status=0,resizable=yes");
    return false
};
BCP.SDC.Presentation.Blue.Common.GetBrowser = function() {
    var returnValue = false;
    var is_safari = /webkit/.test(navigator.userAgent.toLowerCase());
    var is_chrome = /chrome/.test(navigator.userAgent.toLowerCase());
    if (!is_safari && !is_chrome) returnValue = true;
    return returnValue
};

function ShowFooterToolsWaitPanel() {
    var obj = $("#transaction div.contentDialog");
    var imgSrc = "/PublishingImages/PleaseWait.gif";
    var newDivMaster = $("<div></div>").attr("id", "divShowWaitPanel").css({
        display: "block"
    });
    var hei = $(document).height() + 100;
    var newDivWait = $("<div></div>").attr("class", "waitpanel").css({
        height: hei
    });
    var newDivTop = $("<div></div>").attr("class", "load_top");
    newDivTop.append($("<span></span>").attr("class", "l"));
    newDivTop.append($("<span></span>").attr("class", "c"));
    newDivTop.append($("<span></span>").attr("class", "r"));
    var newDivBodc = $("<div></div>").attr("class", "bodc");
    var newDivBod = $("<div></div>").attr("class", "bod");
    var newImg = $("<img/>").attr({
        src: imgSrc,
        id: "genericWaitImage"
    });
    newDivBod.append(newImg);
    setTimeout("$(\"#genericWaitImage\").src = $(\"#genericWaitImage\").src", 100);
    newDivBod.append($("<h3></h3>").text(wait_title));
    newDivBod.append($("<p></p>").text(wait_text));
    newDivBodc.append(newDivBod);
    var newDivBot = $("<div></div>").attr("class", "load_bot");
    newDivBot.append($("<span></span>").attr("class", "l"));
    newDivBot.append($("<span></span>").attr("class", "c"));
    newDivBot.append($("<span></span>").attr("class", "r"));
    var newDiv = $("<div></div>").attr("class", "loading");
    newDiv.append(newDivTop);
    newDiv.append(newDivBodc);
    newDiv.append(newDivBot);
    newDivMaster.append(newDiv);
    obj.prepend(newDivMaster)
}
function HideFooterToolsWaitPanel() {
    var idElem = "#divShowWaitPanel";
    window.opener.jQuery(idElem).remove()
}
function OpenYouTube() {
    window.open("http://www.youtube.com")
}
function OpenFaceBook() {
    window.open("http://www.facebook.com")
}
function OpenFlicker() {
    window.open("http://www.flickr.com")
}
function OpenTwitter() {
    window.open("http://twitter.com")
}
function OpenBlogSpot() {
    window.open("http://www.blogspot.com")
}
var pascoa;
var carnaval;
var natDays;
var sextaFSanta;
BCP.SDC.Presentation.Blue.Common.nationalDays = function(date) {
    BCP.SDC.Presentation.Blue.Common.GetMobileHolidays(date);
    if (carnaval != "" && pascoa != "") {
        natDays = [
            [1, 1, 'anoNovo'],
            [4, 25, 'diaLiberdade'],
            [5, 1, 'diaTrabalhador'],
            [6, 10, 'corpoDeus'],
            [8, 15, 'diaSanto'],
            [10, 5, 'ImpRepublica'],
            [11, 1, 'todosSantos'],
            [12, 1, 'restIndep'],
            [12, 8, 'diaSanto2'],
            [12, 25, 'Natal'],
            [carnaval.split('/')[1], carnaval.split('/')[0], 'Carnaval'],
            [pascoa.split('/')[1], pascoa.split('/')[0], 'Pascoa'],
            [padLeft(sextaFSanta.split('/')[1], 2, '0'), padLeft(sextaFSanta.split('/')[0], 2, '0'), '6F Santa']
        ]
    }
    for (i = 0; i < natDays.length; i++) {
        if (padLeft(date.split('/')[1], 2, '0') == natDays[i][0] && padLeft(date.split('/')[0], 2, '0') == natDays[i][1]) {
            return false
        }
    }
    return true
};
BCP.SDC.Presentation.Blue.Common.subtrairDias = function(data, dias) {
    return new Date(data.getTime() - (dias * 24 * 60 * 60 * 1000))
};
BCP.SDC.Presentation.Blue.Common.GetMobileHolidays = function(data) {
    var ano = data.split('/')[2];
    var X = 24;
    var Y = 5;
    var a = ano % 19;
    var b = ano % 4;
    var c = ano % 7;
    var d = (19 * a + X) % 30;
    var e = (2 * b + 4 * c + 6 * d + Y) % 7;
    var soma = d + e;

    if (soma > 9) {
        dia = (d + e - 9);
        mes = 03
    } else {
        dia = (d + e + 22);
        mes = 02
    }
    pascoa = BCP.SDC.Presentation.Blue.Common.ParseData(dia, mes + 1, ano);
    carnaval = BCP.SDC.Presentation.Blue.Common.subtrairDias(new Date(ano, mes, dia), 46);
    carnaval = BCP.SDC.Presentation.Blue.Common.ParseData(carnaval.getDate(), carnaval.getMonth() + 1, carnaval.getFullYear());
    sextaFSanta = BCP.SDC.Presentation.Blue.Common.subtrairDias(new Date(ano, mes, dia), 2);
    sextaFSanta = BCP.SDC.Presentation.Blue.Common.ParseData(sextaFSanta.getDate(), sextaFSanta.getMonth() + 1, sextaFSanta.getFullYear())
};
BCP.SDC.Presentation.Blue.Common.FormataHora = function(horas, minutos, segundos) {
    if (horas <= 0 || horas >= 24) return false;
    if (minutos < 1 || minutos > 59) return false;
    if (segundos < 1 || segundos > 59) return false;
    horas = horas < 10 ? "0" + horas : horas;
    minutos = minutos < 10 ? "0" + minutos : minutos;
    segundos = segundos < 10 ? "0" + segundos : segundos;
    strTimeFormat = horas + ":" + minutos + ":" + segundos;
    return strTimeFormat
};
BCP.SDC.Presentation.Blue.Common.ConvertStringToJsDate = function(strDate) {
    if (strDate != "") {
        var dateSplitted = strDate.split('/');
        if (dateSplitted.length == 3) {
            var dateJs = dateSplitted[1] + '/' + dateSplitted[0] + '/' + dateSplitted[2];
            return new Date(dateJs)
        } else return false
    } else return false
};
BCP.SDC.Presentation.Blue.Common.Is_child_of = function(parent, child) {
    if (child != null) {
        while (child.parentNode) {
            if ((child = child.parentNode) == parent) {
                return true
            }
        }
    }
    return false
};
BCP.SDC.Presentation.Blue.Common.FixOnMouseOut = function(element, event, JavaScript_code) {
    var current_mouse_target = null;
    if (event.toElement) {
        current_mouse_target = event.toElement
    } else if (event.relatedTarget) {
        current_mouse_target = event.relatedTarget
    }
    if (!BCP.SDC.Presentation.Blue.Common.Is_child_of(element, current_mouse_target) && element != current_mouse_target) {
        eval(JavaScript_code)
    }
};
BCP.SDC.Presentation.Blue.Common.ScrollTopModal = function() {
    $('html, body').animate({
        scrollTop: $("#dialogServicePayment").position().top
    }, 'fast')
};
BCP.SDC.Presentation.Blue.Common.ScrollTopBody = function() {
    $('html, body').animate({
        scrollTop: 0
    }, 'fast')
};
BCP.SDC.Presentation.Blue.Common.CleanValues = function(divId, hasTextBox) {
    var transContent = $("#" + divId);
    if (hasTextBox) {
        var inputs = transContent.find(":text");
        for (var i = 0; i < inputs.length; i++) {
            var txbx = inputs[i];
            if (txbx.id.indexOf("Quantity") > 0 || txbx.id.indexOf("Amount") > 0) txbx.className = "number";
            else txbx.className = "text"
        }
    }
    var errors = transContent.find(":span.error");
    for (var i = 0; i < errors.length; i++) {
        var spnError = errors[i];
        if (spnError.id.indexOf("_ch") == -1) spnError.style.display = "none"
    }
};

function ShowKnowMoreToolbar() {
    if ($("#KnowMoreToolbar").css('display') == "none") $("#KnowMoreToolbar").show();
    else $("#KnowMoreToolbar").hide()
}
BCP.SDC.Presentation.Blue.Common.GetRound = function(fValue, iDec) {
    if (isNaN(iDec)) iDec = 2;
    iDec += 1;
    var fTmp = parseInt(String(fValue * Math.pow(10, iDec)));
    var sCad = String(fTmp).substring(String(fTmp).length - 1);
    var iSum = 0;
    if (parseInt(sCad) >= 5) iSum = 10;
    fTmp += iSum;
    fTmp = String(fTmp).substring(0, String(fTmp).length - 1);
    fTmp = fTmp / Math.pow(10, (iDec - 1));
    return fTmp
};
BCP.SDC.Presentation.Blue.Common.ValidateCellPhone = function(phone) {
    if (phone.substr(0, 1) != "9" || phone.length != 9) {
        return false
    }
    return true
};
BCP.SDC.Presentation.Blue.Common.PrintPdfInvestments = function(codTit, codPraca, moeda) {
    if (BCP.SDC.Presentation.Blue.Common.VerifyAcrobatIsInstalled()) {
        ShowFooterToolsWaitPanel();
        var url = "/WebPages/Forms/PrintInvestments.aspx?tituloPdf=" + codTit + "&pracaPdf=" + codPraca + "&moedaTit=" + moeda;
        var is_safari = /webkit/.test(navigator.userAgent.toLowerCase());
        var is_chrome = /chrome/.test(navigator.userAgent.toLowerCase());
        if (!is_safari && !is_chrome) {
            setTimeout(function() {
                window.open(url, "printwinInvestments", "width=800,height=600,menubar=0,toolbar=0,location=no,directories=0,scrollbars=0,status=0,resizable=yes")
            }, 500)
        } else {
            window.open(url, "printwin", "width=800,height=600,menubar=0,toolbar=0,location=no,directories=0,scrollbars=0,status=0,resizable=yes")
        }
    } else {
        $("#divAcrobatTitles").show()
    }
    return false
};
BCP.SDC.Presentation.Blue.Common.ForceLastTab = function(evt, btnName) {
    if (btnName != null && btnName != "") {
        var keyCodeCalc = evt.keyCode || evt.which;
        if (document.getElementById(btnName) != null && keyCodeCalc == 9) {
            setTimeout("document.getElementById('btnCalculateCalculadora').focus()", 1)
        }
    }
};
BCP.SDC.Presentation.Blue.Common.ProcessAjaxExceptionAccountInvest = function(statusCode, errorDiv, replaceDiv) {
    var div = "<div id=\"genericError\" class=\"genericError\"><div class=\"message\" id=\"messageDiv\" style=\"left:50%;margin-left:-240px;position:relative;\">";
    var msg = "<span>Pedimos desculpa, neste momento não podemos satisfazer o seu pedido</span>";
    if (statusCode == "702") {
        if (timeoutSession != undefined && timeoutSession != null) clearTimeout(timeoutSession);
        msg = "<span>A sua sessão expirou! Clique no botão para efectuar o Login.</span>";
        msg += "</div>";
        msg += "<div class=\"buttons\">";
        msg += "<a id=\"lnkLogin\" class=\"primary\" tabindex='0' href=\"javascript:BCP.SDC.Presentation.Blue.Common.DoLogout()\">";
        msg += "<span class=\"l\"></span>";
        msg += "<span class=\"c\">Login</span>";
        msg += "<span class=\"r\"></span>";
        msg += "</a>";
        msg += "</div>";
        if ($("#bodyContent").size() > 0) errorDiv = $("#bodyContent")
    }
    div = div + msg + "</div>";
    if (replaceDiv) {
        var elem = $(div);
        errorDiv.after(elem);
        errorDiv.remove()
    } else {
        errorDiv.html(div)
    }
};

function BlockLetters(event) {
    var charCode = event.charCode == undefined ? event.keyCode : event.charCode;
    if (charCode == 0 || charCode == 8 || charCode == 37 || charCode == 39) return true;
    if (charCode > 31 && (charCode < 48 || charCode > 57)) return false
}
function GetCursorPosition(oField) {
    var iCaretPos = 0;
    if (document.selection) {
        oField.focus();
        var oSel = document.selection.createRange();
        oSel.moveStart('character', -oField.value.length);
        iCaretPos = oSel.text.length
    } else if (oField.selectionStart || oField.selectionStart == '0') iCaretPos = oField.selectionStart;
    return (iCaretPos)
}
function BlockLettersForAmount(txbx, event) {
    var charCode = event.charCode == undefined ? event.keyCode : event.charCode;
    if (charCode == 0 || charCode == 8 || charCode == 37 || charCode == 39) return true;
    if (charCode == 44 || charCode == 46) if (txbx.value.split(",").length > 1 || txbx.value.split(".").length > 1) return false;
    else return true;
    else if (charCode > 31 && (charCode < 48 || charCode > 57)) return false;
    else if (txbx.value.split(",").length > 1 || txbx.value.split(".").length > 1) {
        var decimalPlaces = txbx.getAttribute("BLUE_DECIMAL_SIZE");
        if (decimalPlaces != null && decimalPlaces != "") {
            var valuesArray;
            var cursorPosition = GetCursorPosition(txbx);
            if (txbx.value.split(",").length > 1) {
                valuesArray = txbx.value.split(",")
            } else {
                valuesArray = txbx.value.split(".")
            }
            if (valuesArray[1].toString().length >= parseInt(decimalPlaces) && (valuesArray[0].toString().length + 1) <= cursorPosition) return false
        }
    }
};
BCP.SDC.Presentation.Blue.Common.RedirectToLogin = function() {
    var setTop = ($("#result").height() > 0) ? 100 : 50;
    var settingsWaitPanel = {
        top: setTop
    };
    displayWaitPanel("divShowWaitPanel", $("#result"), settingsWaitPanel);
    document.location.href = "https://" + document.location.host + "/Webpages/Forms/_login/BlueMainLogin.aspx?ReturnUrl=" + window.location
};
BCP.SDC.Presentation.Blue.Common.RedirectToLoginWithCookie = function(cookieName, cookieValue) {
    var setTop = ($("#result").height() > 0) ? 100 : 50;
    var settingsWaitPanel = {
        top: setTop
    };
    displayWaitPanel("divShowWaitPanel", $("#result"), settingsWaitPanel);
    if ($.cookie(cookieName) != null) delCookie(cookieName);
    setCookieNoTime(cookieName, cookieValue);
    document.location.href = "https://" + document.location.host + "/Webpages/Forms/_login/BlueMainLogin.aspx?ReturnUrl=" + window.location + "&UseCookie=1&CookieName=" + cookieName
};
BCP.SDC.Presentation.Blue.Common.PrintPdfFunds = function(codFundo, sedol) {
    if (BCP.SDC.Presentation.Blue.Common.VerifyAcrobatIsInstalled()) {
        ShowFooterToolsWaitPanel();
        var url = "/WebPages/Forms/PrintFunds.aspx?CodFundoPdf=" + codFundo + "&SedolPdf=" + sedol;
        var is_safari = /webkit/.test(navigator.userAgent.toLowerCase());
        var is_chrome = /chrome/.test(navigator.userAgent.toLowerCase());
        if (!is_safari && !is_chrome) {
            setTimeout(function() {
                window.open(url, "printFunds", "width=800,height=600,menubar=0,toolbar=0,location=no,directories=0,scrollbars=0,status=0,resizable=yes")
            }, 500)
        } else {
            window.open(url, "printFunds", "width=800,height=600,menubar=0,toolbar=0,location=no,directories=0,scrollbars=0,status=0,resizable=yes")
        }
    } else {
        $("#divAcrobatFunds").show()
    }
    return false
};
BCP.SDC.Presentation.Blue.Common.OpenInvestmentsHomepage = function() {
    var curr = $("#hdnCurrValue").val();
    $("#info" + curr + "InvestirHomePage").animate({
        left: "-700px"
    }, 500);
    $("#btn" + curr + "InvestirHomePage").css("background-position", "0px 0px");
    curr++;
    $("#hdnCurrValue").val(curr);
    if ($("#hdnCurrValue").val() == "4") {
        curr = 1;
        $("#hdnCurrValue").val("1")
    }
    $("#info" + curr + "InvestirHomePage").css("left", "700px");
    $("#info" + curr + "InvestirHomePage").animate({
        left: "20px"
    }, 500);
    $("#btn" + curr + "InvestirHomePage").css("background-position", "0px 32px")
}
