var limitDateTimeToGetUrls = null;

function bindBESnetUrls() {

    var currentDateTime = new Date();

    if (limitDateTimeToGetUrls == null || currentDateTime > limitDateTimeToGetUrls) {
        limitDateTimeToGetUrls = currentDateTime;
        limitDateTimeToGetUrls.setMinutes(limitDateTimeToGetUrls.getMinutes() + 5);

        callAjaxGetUrls();

    }
}


function callAjaxGetUrls() {
    $.ajax({
        type: "POST",
        url: "aspx/TemplatesV4/Include/TPI_LoginBox.aspx",
        data: "ajaxRequest=true&op=getBESnetUrls",
        cache: false,
        success: function (data) {
            var urls = data.split('|');

            if (urls.length == 1) {
                BESX_action = urls[0];
                BESX_negAction = BESX_action;
            } else {
                BESX_action = urls[0];
                BESX_negAction = urls[1];
            }
        }
    });
}

$(document).ready(function () {
    if (document.getElementById('fca') != null) {
        $('#fca').bind('keydown', bindBESnetUrls);
    }
    if (document.getElementById('fcapart') != null) {
        $('#fcapart').bind('keydown', bindBESnetUrls);
    }
    if (document.getElementById('fcabac') != null) {
        $('#fcabac').bind('keydown', bindBESnetUrls);
    }
    if (document.getElementById('fcabacneg') != null) {
        $('#fcabacneg').bind('keydown', bindBESnetUrls);
    }
    if (document.getElementById('fcaneg') != null) {
        $('#fcaneg').bind('keydown', bindBESnetUrls);
    }
});

var dontforce = false;
function SetFocusAtElement(aId) 
{
    if (dontforce) return;
    try {
        var aId_Counter = eval('window.Counter_' + aId);
        if (aId_Counter == null)
            aId_Counter = 0;

        var e = null;
        e = document.getElementById(aId);
        if (!(e == null || typeof e == "undefined"))
            e.focus();
        if (aId_Counter < 5) // Ajustar este valor para garantir focus com maior/menor precisao
            window.setTimeout('SetFocusAtElement(\'' + aId + '\')', 100);
        aId_Counter++;
        eval('window.Counter_' + aId + '=' + aId_Counter);
    }
    catch (aa) {
        setTimeout('SetFocusAtElement(\'' + aId + '\')', 1000);
    }
};

///////////////////////////////Funcoes BES
var BESX_action;
var BESX_negAction;
var BESX_dmAction;
var BESX_fcaBIC = "http://bes-sec.bes.pt/bes/erronadesaobic/erronadesaobic.html";
var BESX_ctxNav = 36123;

initVars();

//vars for the timeout function
var frmf1, fnf1;

// by jvv, 08/2k  
var x = 0, delta = 0;
if (parent && parent.menu && parent.menu.tranca) parent.menu.tranca = 0;
function initVars() {
    BESX_dmAction = BESX_action;
}

function startAnimation() {
    try {
        x = -1; delta = setInterval(animate, 300);
        animate();
        document.all.MP.style.display = "block";
        PAGINA.style.display = "none";
    } catch (e) { }
    return true;
};

function animate() {
    var s = ""; x = (x + 1) % 8; switch (x) {
        case 0: s = ".&nbsp;&nbsp;&nbsp;&nbsp;"; break; case 1: s = "..&nbsp;&nbsp;&nbsp;"; break; case 2: s = "...&nbsp;&nbsp;"; break; case 3: s = "....&nbsp;"; break; case 4: s = "....."; break; case 5: s = "....&nbsp;"; break; case 6: s = "...&nbsp;&nbsp;"; break; case 7: s = "..&nbsp;&nbsp;&nbsp;"; break;
    }
    try {
        document.getElementById('MPP').innerHTML = "Aguarde um momento por favor" + s;
    } catch (e) { }
};

function behave() {
    if (navigator.appName == "Microsoft Internet Explorer") startAnimation();
};

function ValidaNa(frm, fn) {
    if (fn == null) {
        fn = mat;
    }

    var auxValue = removeEspacosEsquerda(frm.fca.value);
    if (auxValue != frm.fca.value)
        frm.fca.value = auxValue;

    if ((frm.fca.value.length != 0) && frm.fca.value.charAt(0) == '0') {
        if (frm.fca.value.length == 7) {
            frmf1 = frm;
            fnf1 = fn;
            setTimeout("f1()", 1250);
        }
        if (frm.fca.value.length > 7) {
            frm.fca.value = "";
            window.location = BESX_fcaBIC;
            //window.location=BESX_siteUrl+'iipl.asp?srv=1100&amp;ctxnav='+BESX_ctxNav;
        }
    }
    else {
        if ((frm.fca.value.length == 7 && !isNaN(parseInt(frm.fca.value.charAt(0)))) || (frm.fca.value.length == 20 && isNaN(parseInt(frm.fca.value.charAt(0))))) {
            fn(frm.name);
            return false;
        }
    }
    return true;
};

function f1() {
    if (frmf1.fca.value.length == 7)
        fnf1(frmf1.name);
    //else
    //	window.location='iipl.asp?srv=1100&amp;ctxnav='+BESX_ctxNav;
};

function obtemCodigoTecla(e) {
    if (document.all)
        return e.keyCode;
    else
        return e.which;
};

function validaNumerico(ev) {
    var c = String.fromCharCode(obtemCodigoTecla(ev));

    if (c.search(/[0-9]/) < 0)
        return false;

    return true;
};

function removeEspacosDireita(value) {
    // Funcao que elimina todos os espacos à direita do numero de adesao.
    while (value.charAt(value.length - 1) == ' ') {
        value = value.substr(0, value.length - 1);
    }
    return value;
}

function removeEspacosEsquerda(value) {
    // Funcao que elimina todos os espacos à esquerda do numero de adesao.
    while (value.charAt(0) == ' ') {
        value = value.substr(1);
    }
    return value;
}

function validc(e, frm, n, fn) {
    if (fn == null) {
        fn = mat;
    }

    var whichCode = obtemCodigoTecla(e);

    if (whichCode == 32 && frm.fca.value.length == 0) {
        return false; // Nao aceita espaços no inicio.
    }

    if (whichCode == 8 || whichCode == 0) //no firefox o backspace e as teclas especiais disparam o evento e devolvem estes chars
        return true;

    if (frm.fca.value.length > 0 && !isNaN(frm.fca.value.charAt(0)))
        return validaNumerico(e);

    if (whichCode == 13) {
        fn(frm.name);
        return false;
    }

    if (n > 0) return validaNumerico(e);

    return true;
};

function dm(frmName) {
    var frm = document.forms[frmName];
    frm.action = BESX_dmAction;
    frm.fca.value = '';
    besxSubmit(frm);
    return false;
};

function mat(frmName) {
    var frm = document.forms[frmName];
    frm.action = BESX_action;
    if (validaCampos(frm)) besxSubmit(frm, 'mat');
};


function neg(frmName) {
    var frm = document.forms[frmName];
    frm.action = BESX_negAction;
    if (validaCampos(frm)) besxSubmit(frm, 'neg');
};

function validaCampos(frm) {
    var result = true;

    frm.fca.value = removeEspacosDireita(frm.fca.value);

    if (!isNaN(parseInt(frm.fca.value.charAt(0)))) {
        if (isNaN(frm.fca.value) || frm.fca.value.length != 7) {
            alert("Para aceder ao BESnet necessita de possuir um Nº de Adesão de 7 dígitos.\nSe não for este o caso queira contactar o BESdirecto 707 24 7 365.\n");
            frm.fca.focus();
            result = false;
        }
    }
    else {
        if (frm.fca.value.length <= 7) {
            alert("Para aceder ao BESnet necessita de possuir uma personalização entre 8 a 20 caracteres.\nSe não for este o caso queira contactar o BESdirecto 707 24 7 365.\n");
            frm.fca.focus();
            result = false;
        }
    }
    return result;
};

function besxSubmit(form, type) {
    var frm;
    var attempts = 0;

    if (form != null) {
        frm = form;
    }

    frm.selo.value = (new Date()).getTime();
    frm.ad.value = frm.fca.value;
    frm.fca.value = "";
    frm.fca.focus();
    behave();
    
    function safeSubmit() {
        attempts++;
        if (attempts <= 6) {

            if (type == 'neg' || frm.name == 'besx1') {
                frm.action = BESX_negAction;            
            } else {
                frm.action = BESX_action;
            }

            frm.app.value = GetParameterByUrl(frm.action, 'app');
            frm.action = RemoveParametersUrl(frm.action);

            if (frm.action == null || frm.action == "undefined") {
                callAjaxGetUrls();
                setTimeout(safeSubmit, 1000 * (attempts + (attempts - 1)));
            } else {
                frm.submit();
            }
        } 
    }

    safeSubmit(frm);
};

function dm_simple(frmName) {

    var frm = document.forms[frmName];
    frm.target = frmName;
    frm.action = BESX_dmAction;
    besxSubmit_simple(frm);
};

function besxSubmit_simple(form, type) {
    var frm;
    var attempts = 0;

    if (form != null) {
        frm = form;
    }

    frm.selo.value = (new Date()).getTime();    

    function safeSubmit() {
        attempts++;
        if (attempts <= 6) {

            if (type == 'neg' || frm.name == 'besx1') {
                frm.action = BESX_negAction;
            } else {
                frm.action = BESX_action;
            }

            frm.app.value = GetParameterByUrl(frm.action, 'app');
            frm.action = RemoveParametersUrl(frm.action);

            if (frm.action == null || frm.action == "undefined") {
                callAjaxGetUrls();
                setTimeout(safeSubmit, 1000 * (attempts + (attempts - 1)));
            } else {
                frm.submit();
            }
        }
    }

    safeSubmit(frm);
};

///////////////////////////////  Fim de Funcoes BES



///////////////////////////////Funcoes BAC

initVarsBAC();

function initVarsBAC() {
    BESX_dmAction = BESX_action;
}

function BAC_startAnimation() {
    try {
        x = -1; delta = setInterval(BAC_animate, 300); BAC_animate(); document.all.MP.style.display = "block"; PAGINA.style.display = "none"; return true;
    } catch (e) { }
};

function BAC_animate() {
    try {
        var s = ""; x = (x + 1) % 8; switch (x) {
            case 0: s = ".&nbsp;&nbsp;&nbsp;&nbsp;"; break; case 1: s = "..&nbsp;&nbsp;&nbsp;"; break; case 2: s = "...&nbsp;&nbsp;"; break; case 3: s = "....&nbsp;"; break; case 4: s = "....."; break; case 5: s = "....&nbsp;"; break; case 6: s = "...&nbsp;&nbsp;"; break; case 7: s = "..&nbsp;&nbsp;&nbsp;"; break;
        }
        document.getElementById('MPP').innerHTML = "Aguarde um momento por favor" + s;
    }
    catch (e) { };
};

function BAC_behave() {
    if (navigator.appName == "Microsoft Internet Explorer") BAC_startAnimation();
};

function BAC_ValidaNa(frm, fn) {
    if (fn == null) {
        fn = BAC_mat;
    }

    if ((frm.fca.value.length == 7 && !isNaN(parseInt(frm.fca.value.charAt(0)))) || (frm.fca.value.length == 20 && isNaN(parseInt(frm.fca.value.charAt(0))))) {
        fn(frm.name);
        return false;
    }
    return true;
};

function BAC_obtemCodigoTecla(e) {
    if (document.all)
        return e.keyCode;
    else
        return e.which;
};

function BAC_validaNumerico(ev) {
    var c = String.fromCharCode(BAC_obtemCodigoTecla(ev));

    if (c.search(/[0-9]/) < 0)
        return false;

    return true;
};

function BAC_validc(e, frm, n, fn) {
    if (fn == null) {
        fn = BAC_mat;
    }

    var whichCode = BAC_obtemCodigoTecla(e);

    if (frm.fca.value.length > 0 && !isNaN(frm.fca.value.charAt(0)))
        return BAC_validaNumerico(e);

    if (whichCode == 13) {
        fn(frm.name);
        return false;
    }

    if (n > 0) return BAC_validaNumerico(e);

    return true;
};

function BAC_dm(frmName) {
    var frm = document.forms[frmName];
    frm.action = BESX_dmAction;
    frm.fca.value = '';
    BAC_besxSubmit(frm);
    return false;
};

function BAC_mat(frmName) {
    var frm = document.forms[frmName];
    frm.action = BESX_action;
    if (BAC_validaCampos(frm)) BAC_besxSubmit(frm, 'mat');
};

function BAC_neg(frmName) {
    var frm = document.forms[frmName];
    frm.action = BESX_negAction;
    if (BAC_validaCampos(frm)) BAC_besxSubmit(frm, 'neg');
};

function BAC_validaCampos(frm) {
    if (!isNaN(parseInt(frm.fca.value.charAt(0))) && frm.fca.value.length != 7) {
        alert("Para aceder ao BESnet necessita de possuir um Nº de Adesão de 7 dígitos.\nSe não for este o caso queira contactar o BES Directo 808 24 7 365.\n");
        frm.fca.focus();
        return false;
    }
    if (isNaN(parseInt(frm.fca.value.charAt(0))) && frm.fca.value.length <= 7) {
        alert("Para aceder ao BESnet necessita de possuir uma personalização entre 8 a 20 caracteres.\nSe não for este o caso queira contactar o BES Directo 808 24 7 365.\n");
        frm.fca.focus();
        return false;
    }
    return true;
};

function BAC_besxSubmit(form, type) {

    var frm;
    var attempts = 0;

    if (form != null) {
        frm = form;
    }

    frm.selo.value = (new Date()).getTime();
    frm.ad.value = frm.fca.value;
    frm.fca.value = "";
    frm.fca.focus();
    BAC_behave();    

    function safeSubmit() {
        attempts++;
        if (attempts <= 6) {

            if (type == 'neg' || frm.name == 'besx1') {
                frm.action = BESX_negAction;
            } else {
                frm.action = BESX_action;
            }

            frm.app.value = GetParameterByUrl(frm.action, 'app');
            frm.action = RemoveParametersUrl(frm.action);

            if (frm.action == null || frm.action == "undefined") {
                callAjaxGetUrls();
                setTimeout(safeSubmit, 1000 * (attempts + (attempts - 1)));
            } else {
                frm.submit();
            }
        }

    }

    safeSubmit();
};

function BAC_dm_simple(frmName) {
    var frm = document.forms[frmName];
    frm.target = frmName;
    frm.action = BESX_dmAction;
    BAC_besxSubmit_simple(frm);
};

function BAC_besxSubmit_simple(form, type) {
    var frm;
    var attempts = 0;

    if (form != null) {
        frm = form;
    }

    frm.selo.value = (new Date()).getTime();

    function safeSubmit() {
        attempts++;
        if (attempts <= 6) {

            if (type == 'neg' || frm.name == 'besx1') {
                frm.action = BESX_negAction;
            } else {
                frm.action = BESX_action;
            }

            frm.app.value = GetParameterByUrl(frm.action, 'app');
            frm.action = RemoveParametersUrl(frm.action);

            if (frm.action == null || frm.action == "undefined") {
                callAjaxGetUrls();
                setTimeout(safeSubmit, 1000 * (attempts + (attempts - 1)));
            } else {
                frm.submit();
            }
        }
    }

    safeSubmit(frm);
};

///////////////////////////////  Fim de Funcoes BAC


///////////////////////////////Funcoes BESSE

var BESSEX_action;
var BESSEX_negAction;

function BESSE_ValidaNa(frm, fn) {

    if (fn == null) {
        fn = BESSE_mat;
    }

    if ((frm.fca.value.length == 7 && !isNaN(parseInt(frm.fca.value.charAt(0)))) || (frm.fca.value.length == 20 && isNaN(parseInt(frm.fca.value.charAt(0))))) {
        fn(frm.name);
        return false;
    }
    return true;
};

function BESSE_validc(e, frm, n, fn) {
    if (fn == null) {
        fn = BESSE_mat;
    }

    var whichCode = BESSE_obtemCodigoTecla(e);

    if (frm.fca.value.length > 0 && !isNaN(frm.fca.value.charAt(0)))
        return BESSE_validaNumerico(e);

    if (whichCode == 13) {
        fn(frm.name);
        return false;
    }

    if (n > 0) return BESSE_validaNumerico(e);

    return true;
};

function BESSE_obtemCodigoTecla(e) {
    if (document.all)
        return e.keyCode;
    else
        return e.which;
};

function BESSE_validaNumerico(ev) {
    var c = String.fromCharCode(BESSE_obtemCodigoTecla(ev));

    if (c.search(/[0-9]/) < 0)
        return false;

    return true;
};

function BESSE_mat(frmName) {
    var frm = document.forms[frmName];
    frm.action = BESSEX_action = BESX_action;
    if (BESSE_validaCampos(frm)) BESSE_besxSubmit(frm, 'mat');
};

function BESSE_neg(frmName) {
    var frm = document.forms[frmName];
    frm.action = BESSEX_negAction = BESX_negAction;
    if (BESSE_validaCampos(frm)) BESSE_besxSubmit(frm, 'neg');
};

function BESSE_validaCampos(frm) {
    if (!isNaN(parseInt(frm.fca.value.charAt(0))) && frm.fca.value.length != 7) {
        alert("Para acceder a BESnetwork debe tener un Número de Adhesión (7 dígitos).\nSi no es esta su situación o desea obtener más información, contacte con la Línea BESnetwork, 902 321 252.\n");
        frm.fca.focus();
        return false;
    }
    if (isNaN(parseInt(frm.fca.value.charAt(0))) && frm.fca.value.length <= 7) {
        alert("Para acceder a BESnetwork debe tener un Número de Adhesión (7 dígitos) o una Personalización de Acceso (entre 8 y 20 caracteres).\nSi no es esta su situación o desea obtener más información, contacte con la Línea BESnetwork, 902 321 252.\n");
        frm.fca.focus();
        return false;
    }
    return true;
};

function BESSE_besxSubmit(form, type) {
    var frm;
    var attempts = 0;

    if (form != null) {
        frm = form;
    }

    frm.selo.value = (new Date()).getTime();
    frm.ad.value = frm.fca.value;
    frm.fca.value = "";
    frm.fca.focus();
    BAC_behave();
    
    function safeSubmit() {
        attempts++;
        if (attempts <= 6) {

            if (type == 'neg' || frm.name == 'besx1') {
                frm.action = BESX_negAction;
            } else {
                frm.action = BESX_action;
            }

            frm.app.value = GetParameterByUrl(frm.action, 'app');
            frm.action = RemoveParametersUrl(frm.action);

            if (frm.action == null || frm.action == "undefined") {
                callAjaxGetUrls();
                setTimeout(safeSubmit, 1000 * (attempts + (attempts - 1)));
            } else {
                frm.submit();
            }
        } 
    }

    safeSubmit(frm);
};

///////////////////////////////  Fim de Funcoes BESSE


//////////////// Funcoes gerais

function GetParameterByUrl(url, parameter) {
    var strReturn = '';
    var inicio = url.indexOf(parameter);
    if (inicio != -1) {
        var fim = url.indexOf("&", inicio);
        if (fim == -1) {
            strReturn += url.substring(inicio + 1 + parameter.length);
        }
        else {
            strReturn += url.substring(inicio + 1 + parameter.length, fim);
        }
    }
    return strReturn;
}

function RemoveParametersUrl(url) {
    var strReturn = url;

    var isCMS = url.toUpperCase().indexOf('LABELID=');
    if (isCMS == -1) {
        var inicio = url.indexOf('?');
        if (inicio != -1) {
            strReturn = url.substring(0, inicio);
        }
    }
    return strReturn;
}

