﻿var authenticationCookieOperationCompletedCount = 0;

function triggerButtonClick(buttonClassIdentifier) {
    $('.' + buttonClassIdentifier).trigger('click');
}

function authenticationCookieOperationCompleted(callbackTriggerButtonClassIdentifier) {
    ++authenticationCookieOperationCompletedCount;

    if (authenticationCookieOperationCompletedCount >= initiativeHostArray.length) {
        triggerButtonClick(callbackTriggerButtonClassIdentifier);

        authenticationCookieOperationCompletedCount = 0;
    }
}

function authenticationCookieOperationCompletedCallbackFunction(callbackFunction) {
    ++authenticationCookieOperationCompletedCount;

    if (authenticationCookieOperationCompletedCount >= initiativeHostArray.length) {
        callbackFunction();

        authenticationCookieOperationCompletedCount = 0;
    }
}

function loginSingleSignOnAndCallback(login, password, callbackTriggerButtonClassIdentifier) {
    if (validate(login, password)) {
        for (var x = 0; x < initiativeHostArray.length; x++) {
            $.ajax({
                url: initiativeHostArray[x] + '/Authentication/AuthenticationService.ashx',
                dataType: 'jsonp',
                data: { 'pLogin': login, 'pPassword': password },
                async: false,
                complete: function(data, textStatus, jqXHR) { authenticationCookieOperationCompleted(callbackTriggerButtonClassIdentifier); }
            });
        }

        setTimeout(function() { triggerButtonClick(callbackTriggerButtonClassIdentifier) }, 3000);
    }
    return false;
}

function loginSingleSignOnAndCallbackFunction(login, password, callbackFunction) {
    if (validate(login, password)) {
        for (var x = 0; x < initiativeHostArray.length; x++) {
            $.ajax({
                url: initiativeHostArray[x] + '/Authentication/AuthenticationService.ashx',
                dataType: 'jsonp',
                data: { 'pLogin': login, 'pPassword': password },
                async: false,
                complete: function(data, textStatus, jqXHR) { authenticationCookieOperationCompletedCallbackFunction(callbackFunction); }
            });
        }

        setTimeout(function() { callbackFunction(); }, 3000);
    }

    return false;
}

function validate(login, password) {
    if (login == '') {
        ModalBox.Show({ Title: "Informe o campo email.", Width: 300, Error: true });
        return false;
    }
    else {
        var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
        if (!emailPattern.test(login)) {
            ModalBox.Show({ Title: "Email inválido.", Width: 300, Error: true });
            return false;
        }
        else if (password == '') {
            ModalBox.Show({ Title: "Informe o campo senha.", Width: 300, Error: true });
            return false;
        }
    }


    return true;
}

function loginSingleSignOn(login, password) {
    for (var x = 0; x < initiativeHostArray.length; x++) {
        $.ajax({
            url: initiativeHostArray[x] + '/Authentication/AuthenticationService.ashx',
            dataType: 'jsonp',
            data: { 'pLogin': login, 'pPassword': password },
            async: false
        });
    }

    return false;
}

function logoutSingleSignOnAndCallback(callbackTriggerButtonClassIdentifier) {
    for (var x = 0; x < initiativeHostArray.length; x++) {
        $.ajax({
            url: initiativeHostArray[x] + '/Authentication/AuthenticationService.ashx',
            dataType: 'jsonp',
            data: { 'pLogout': 'true' },
            async: false,
            complete: function(data, textStatus, jqXHR) { authenticationCookieOperationCompleted(callbackTriggerButtonClassIdentifier); }
        });
    }

    setTimeout(function() { triggerButtonClick(callbackTriggerButtonClassIdentifier) }, 3000);

    return false;
}

function logoutSingleSignOn() {
    for (var x = 0; x < initiativeHostArray.length; x++) {
        $.ajax({
            url: initiativeHostArray[x] + '/Authentication/AuthenticationService.ashx',
            dataType: 'jsonp',
            data: { 'pLogout': 'true' },
            async: false
        });
    }

    return false;
}

function logoutSingleSignOnAndCallbackFunction(callbackFunction) {
    for (var x = 0; x < initiativeHostArray.length; x++) {
        $.ajax({
            url: initiativeHostArray[x] + '/Authentication/AuthenticationService.ashx',
            dataType: 'jsonp',
            data: { 'pLogout': 'true' },
            async: false,
            complete: function(data, textStatus, jqXHR) { authenticationCookieOperationCompletedCallbackFunction(callbackFunction); }
        });
    }

    setTimeout(function() { callbackFunction(); }, 3000);

    return false;
}

function closeCustomPopupFancybox(popupUrl) {
    if (popupUrl != null && popupUrl != undefined && popupUrl != '') {
        $(parent.document)[0].location.href = popupUrl;
    }
    else {
        $(parent.document)[0].location.reload();
    }

    parent.$.fancybox.close();
}
