var isMsjvm = false;

if (appletArchive == "pmakekeys2015" || (appletArchive == "client2015" && appletInit == "pclient.xml")) {
    location.replace('web_banking');
}

if (!navigator.javaEnabled()) {
    alert("Поддержка Java в браузере не включена!\nВключите или установите Java и вновь обратитесь к этой странице.");
    history.back();
}
else {
    // is Opera? - to process Opera specific
    var isOpera = navigator.userAgent.indexOf("Opera") != -1;
    var syncLoad = function () {
        load(isOpera, softUpdate);
        appletStatusLoader();
    };

    // если deployJava не подключен на странице, подгружаем динамически
    if (typeof deployJava != 'undefined') {
        addScript("params.js", syncLoad);
    } else {
        addScript("params.js", function() {
            addScript("deployJava.js", syncLoad);
        });
    }
}

// Load appplet.
// All browsers, all JVM.
function load(opera, su) {
    var html =
        '<div id="load_div" align="center" \
              style="font-size:12px; font-family:Verdana,Geneva,sans-serif; position:absolute; \
              width:412px; height:251px; background-image: url(\'img/fon.gif\');' + getCenteredParams(400, 250) + '">\
        <p id="fonCopyright" class="copy" style="position:relative; text-align:left; left:10px; top:210px;">&copy; 1999-2014 BIFIT</p>\
        <div style="margin-top:-10px;">\
        <span id="load_span">';
    // в случае, если у клиента версия java ниже 7, внутрь span пишем сообщение о неподдерживаемой версии java
    if (!deployJava.versionCheck("1.7+")) {
        html += getJvmNotSupportedMessage() + '</span>';
    } else {
        html += '<b>' +
            (locale == "en_US" ? 'Wait while Java-applet is downloading' : 'Подождите, идет загрузка Java-апплета') +
            '...<b></span><br>' +
            (opera ? '<br><br><br><img id="wait_img" border="0" alt="Loading applet..." src="img/wait.jpg"/>\
                  <applet width="1" height="1"'
        :        '<applet width="150" height="150"') +
            'code="' + appletCode + '"' +
            (su && opera ? 'archive="' + appletArchive + '.jar"' : "") +
            'type="application/x-java-applet" scriptable="false" mayscript="mayscript" id="app"';
        if (!su) {
            html += 'archive="' + appletArchive + '.jar' +
                (typeof additionalLibs != 'undefined' ? ', ' + additionalLibs : "") + '"';
        }
        html += '>\
        <param name="init" value="' + appletInit + '">\
        <param name="java_arguments" value="-Xmx256m -Xss1024k">\
        <param name="separate_jvm" value="true">\
        <param name="codebase_lookup" value="false">';
        html +=
            (su ? '<param name="cache_option" value="Plugin">' +
                '<param name="cache_archive" value="' + appletArchive + '.jar' +
                (typeof additionalLibs != 'undefined' ? ', ' + additionalLibs : "") + '">' +
                '<param name="cache_version" value="' + version + ', ' + version + '">\
              <param name="useslibrary" value="iBank 2">\
              <param name="namespace" value="iBank 2">\
              <param name="useslibrarycodebase" value="client.cab">\
              <param name="useslibraryversion" value="0,0,1,10">'
        :    '<param name="cabbase" value="client.cab">') +
                '<param name="locale" value="' + locale + '">' +
                (typeof clientCryptoType != 'undefined' ? '<param name="crypto_type" value="' + clientCryptoType + '">' : "") +
                (typeof register != 'undefined' ? '<param name="register" value="' + register + '">' : "") +
                (typeof manageKeys != 'undefined' ? '<param name="manageKeys" value="' + manageKeys + '">' : "") +
                (typeof showNewClientButton != 'undefined' ? '<param name="show_new_cln_button" value="' + showNewClientButton + '">' : "") +
                '</applet>';
    }
    html += '</div></div>';
    var loadApplet = document.createElement('div');
    loadApplet.innerHTML = html;
    document.body.appendChild(loadApplet);
}

function appletLoadStatus() {
    var applet = document.getElementById("app");
    var loadDiv = document.getElementById("load_div");
    if (applet != null) {
        if (isActiveApplet(applet)) {
            if (navigator.userAgent.indexOf("MSIE") != -1) {
                applet.height = "1";
                applet.width = "1";
                // если обнаружена ошибка с msjvm, то div не убираем
                if (!isMsjvm) {
                    loadDiv.style.display = "none";
                }
            } else {
                applet.height = "1";
                applet.width = "1";
                document.getElementById("load_span").style.display = "none";
                var waitImg = document.getElementById("wait_img");
                if (waitImg != null) {
                    waitImg.style.display = "none";
                }
                var fonCopyright = document.getElementById("fonCopyright");
                if (fonCopyright != null) {
                    fonCopyright.style.display = "none";
                }
                loadDiv.style.width = "1";
                loadDiv.style.height = "1";
                loadDiv.style.backgroundImage = "";
            }
        }
    }
}

function getClientWidth() {
    return document.compatMode == 'CSS1Compat' && !window.opera ? document.documentElement.clientWidth : document.body.clientWidth;
}

function getClientHeight() {
    return document.compatMode == 'CSS1Compat' && !window.opera ? document.documentElement.clientHeight : document.body.clientHeight;
}
// определяет центр экрана браузера
function getCenteredParams(width, height) {
    var left = parseInt((getClientWidth() / 2) - (width / 2));
    var top = parseInt((getClientHeight() / 2) - (height / 2));
    return "left:" + left + "px; top:" + top + "px;";
}

// НЕ УДАЛЯТЬ
// метод вызывается из апплета под IE под MSJVM
// отображает сообщение, что надо переустановить Java
function jvmNotSupportedError() {
    isMsjvm = true;
    document.getElementById("load_span").innerHTML = getJvmNotSupportedMessage();
}

/**
 * Функция возвращает сообщение о неподдерживаемой версии Java в зависимости от локали
 * @return {String} сообщение о неподдерживаемой версии Java
 */
function getJvmNotSupportedMessage() {
    return '<br/><br/><br/><br/><br/>' + (locale == "en_US" ?
        'You use the outdated version of Java. ' +
        'You have to download and install the actual version of this one to coninue your work '
         :
        'Вы используете устаревшую версию Java. ' +
        'Для продолжения работы скачайте и установите актуальную версию ') +
        '(<a href="http://www.java.com/ru/download/manual.jsp">http://www.java.com/ru/download/manual.jsp</a>).';
}

function appletStatusLoader() {
    if (navigator.userAgent.indexOf("MSIE") != -1 || navigator.userAgent.indexOf("Opera") != -1) {
        document.body.onload = appletLoadStatus;
    } else {
        document.body.onload = appletLoadStatus();
    }
}

function isActiveApplet(applet) {
    try {
        return applet.isActive;
    } catch (e) { // IE fix
        return true;
    }
    return false;
}

/**
 * Функция динамически загружает скрипт. По окончании загрузки вызывается callback функция
 * @param name имя файла скрипта
 * @param callback функция, которую необходимо вызвать после окончания загрузки
 */
function addScript(name, callback) {
    var added = document.createElement("script");
    added.src = name;
    // для всех браузеров и IE9+
    if (added.addEventListener) {
        added.onload = callback;
    } else {
        // IE8, 7, 6...
        added.onreadystatechange = function () {
            if (added.readyState === "loaded" || added.readyState === "complete") {
                added.onreadystatechange = null;
                callback();
            }
        };
    }
    document.body.appendChild(added);
}