<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">// Заполняет список сертификатов. Вход: элемент типа selectbox
function fillSertificateList(certList) {
    if (!certList) {
        return false;
    }
    if ((typeof certList).toLowerCase() === "string") {
        certList = document.getElementById(certList);
    }

    if (!certList) {
        return false;
    }
    // очистим список сертификатов
    certList.options.length = 0;
    let cryptoTool = new BaseCrypto();
    cryptoTool.getCertificatesList(function (data) {
        let certs = data.certificateList;
        for (i = 0; i &lt; certs.length; i++) {
            let crt = certs[i]
            addOpt(certList, crt.thumbprint, crt.subjectName);
        }
        // Вставим Без электронной подписи!
        addOpt(certList, "withoutECP", "Без электронной подписи!");
    }, function (data) {
        if (cryptoTool.getLastError() !== STORE_INIT_ERROR) {
            cryptoTool.alertLastError();
        }
        // Вставим Без электронно-цифровой подписи!
        addOpt(certList, "withoutECP", "Без электронной подписи!");
    });
}

function addOpt(tgt, val, text, indExp) {
    indExp = typeof indExp !== 'undefined' ? indExp : false;
    var optNew = document.createElement("option");
    optNew.setAttribute("value", val);
    optNew.setAttribute("data-sert-expered", indExp);
    optNew.appendChild(document.createTextNode(text));
    tgt.appendChild(optNew);
}

function showExparedBlock(certList, certListInfo) {
    if (certList == null) {
        return false;
    }
    if (typeof (certList) == "string") {
        certList = document.getElementById(certList);
    }
    if (certListInfo != null) {
        if (typeof (certListInfo).toLowerCase() == "string") {
            certListInfo = document.getElementById(certListInfo);
            if (certList.options[certList.selectedIndex].getAttribute("data-sert-expered") === 'true') {
                certListInfo.style.display = 'block';
            } else {
                certListInfo.style.display = 'none';
            }
        }
    }
}

// Получает короткое имя элемента
function extractShortName(name) {
    if (name == null) {
        return null;
    }

    var shortname = name;
    if (name.indexOf(":") != -1) {
        var arr = name.split(":");
        shortname = arr[arr.length - 1];
    }

    return shortname;
}

//Подписывает форму form.
//sertList - элемент selectbox, содержащий заполненный список ЭП
function signData(form, certList, button, buttonID, callback) {
    if (!certList) {
        if (callback) {
            callback();
        }
        return false;
    }
    
    if ((typeof certList).toLowerCase() === "string") {
        certList = document.getElementById(certList);
    }
    
    if (!certList) {
        if (callback) {
            callback();
        }
        return false;
    }
    
    if (certList.options.length !== 0 &amp;&amp; certList.options[certList.selectedIndex].value === "withoutECP") {
        if (callback) {
            callback();
        }
        return false;
    }

    var data = ""; // Данные для подписи
    var orderData = ""; // Порядок в котором собирались данные для подписи

    for (var i = 0; i &lt; form.elements.length; i++) {
        if (form.elements[i].name != ''
                &amp;&amp; extractShortName(form.elements[i].name) != "orderData"
                &amp;&amp; extractShortName(form.elements[i].name) != "data"
                &amp;&amp; extractShortName(form.elements[i].name) != "signature"
                &amp;&amp; extractShortName(form.elements[i].name) != "signatures") {
            //if (form.elements[i].type == "checkbox" ||  form.elements[i].type == "radio" || form.elements[i].type == "text" || form.elements[i].type == "hidden" ||form.elements[i].type == "textarea"){
            if (form.elements[i].type == "select-one"
                    || form.elements[i].type == "checkbox"
                    || form.elements[i].type == "radio"
                    || form.elements[i].type == "text"
                    || form.elements[i].type == "textarea") {
                if ((form.elements[i].type == "checkbox" || form.elements[i].type == "radio")
                        &amp;&amp; form.elements[i].checked != true) {
                    continue;
                }

                //Исключим дату рождения
                if (extractShortName(form.elements[i].name) == 'inputTextPersonBirthday_input') {
                    continue;
                }
                //alert(form.elements[i].name);
                data = data + extractShortName(form.elements[i].name) + "="
                        + form.elements[i].value + "|";
                orderData = orderData + extractShortName(form.elements[i].name) + "|";

            }
        }
    }
    // получим и добавим нередактируемые данные, ранее сформированные и добавленные в сигнатуру
    otherSign = document.getElementById(getElementFullID(button, buttonID, 'signature')).value;
    otherOrder = document.getElementById(getElementFullID(button, buttonID, 'orderData')).value;
    data = clearStr(data + otherSign);
    orderData = orderData + otherOrder;

    let cryptoTool = new BaseCrypto();
    cryptoTool.signData(certList.options[certList.selectedIndex].value, false, data, null,
        function (params) {
            document.getElementById(getElementFullID(button, buttonID, 'data')).value = data;
            document.getElementById(getElementFullID(button, buttonID, 'signature')).value = params.signedData;
            document.getElementById(getElementFullID(button, buttonID, 'orderData')).value = orderData;
            if (callback) {
                callback();
            }
        },
        function () {
            if (cryptoTool.getLastError() !== STORE_INIT_ERROR) {
                alert("Ошибка во время подписи данных: " + cryptoTool.getLastError());
            } else {
                alert("Подпись отменена пользователем");
            }
            if (callback) {
                callback();
            }
        });
}

//Функция для подписи документа на клиенте.
//Форма должна содержать только 1 документ.
//Создается открепленная подпись.
function signDocument(certList, button, buttonID, callback) {
    return signDocumentNew(certList, button, buttonID, 'signatureDoc', 'orderDataDoc', null, callback);
}

function signDocumentNew(certList, button, buttonID, signatureDoc, orderDataDoc, resultDoc, callback) {
    if (resultDoc) {
        document.getElementById(getElementFullID(button, buttonID, resultDoc)).value = "FALSE";
    }
    
    try {
        //Очистим поле сигнатуры, которое возможно осталось от прошлой загрузки файла
        document.getElementById(getElementFullID(button, buttonID, signatureDoc)).value = null;
    } catch (e) {
        //
    }
    
    if (!certList) {
        if (callback) {
            callback();
        }
        return true;
    }
    if ((typeof certList).toLowerCase() === "string") {
        certList = document.getElementById(certList);
    }
    if (!certList) {
        if (callback) {
            callback();
        }
        return true;
    }
    if (certList.options.length !== 0 &amp;&amp; certList.options[certList.selectedIndex].value === "withoutECP") {
        if (resultDoc) {
            document.getElementById(getElementFullID(button, buttonID, resultDoc)).value = "TRUE";
        }
        if (callback) {
            callback();
        }
        return true;
    }

    var data = ""; // Данные для подписи
    var orderData = ""; // Порядок в котором собирались данные для подписи

    data = document.getElementById(getElementFullID(button, buttonID, 'digest64Doc')).value
    orderData = extractShortName(document.getElementById(getElementFullID(button, buttonID, 'localFileNameDoc')).value)

    if (!data) {
        alert("Ошибка: Файл не выбран или пустой файл.");
        return false;
    }

    let cryptoTool = new BaseCrypto();
    cryptoTool.signData(certList.options[certList.selectedIndex].value, false, data, null,
        function (params) {
            try {
                document.getElementById('formMain:subjectDoc').value = getCertProperty(params.subjectName, 'SN');
                document.getElementById('formMain:companyDoc').value = getCertProperty(params.subjectName, 'O');
            } catch (e) {
            }
            document.getElementById(getElementFullID(button, buttonID, signatureDoc)).value = params.signedData;
            document.getElementById(getElementFullID(button, buttonID, orderDataDoc)).value = orderData;
            if (resultDoc) {
                document.getElementById(getElementFullID(button, buttonID, resultDoc)).value = "TRUE";
            }
            if (callback) {
                callback();
            }
        },
        function () {
            if (cryptoTool.getLastError() !== STORE_INIT_ERROR) {
                document.getElementById(getElementFullID(button, buttonID, 'errMsgDoc')).value = "Ошибка во время подписи данных: " + cryptoTool.getLastError() ;
            } else {
                document.getElementById(getElementFullID(button, buttonID, 'errMsgDoc')).value = "Подпись отменена пользователем";
            }
            if (callback) {
                callback();
            }
        });
}

function signDataInTable(tableId, certList, callback) {
    if (typeof certList === "string") {
        certList = document.getElementById(certList);
    }

    if (!certList) {
        if (callback) {
            callback();
        }
        return false;
    }

    if (certList.options.length &gt; 0 &amp;&amp; certList.options[certList.selectedIndex].value === "withoutECP") {
        if (callback) {
            callback();
        }
        return false;
    }

    var rows = jQuery("#" + tableId + " .row-with-protocol");
    
    var signTable = function(rows) {
        var promises = [];
        rows.each(function () {
            var def = new promise.Promise();
            signDocHash(certList, this, def);
            promises.push(function() {
                return def;
            });
            console.log("add row")
        });

        return promise.chain(promises);
    };
    
    signTable(rows).then(function() {
        console.log("success result");
        if (callback) {
            callback();
        }
            
    });
    
}

function signDocHash(certList, row, deferred) {
    var data = jQuery(row).find(".hash input")[0].value;
    if (!data) {
        console.log("can't get hash");
        deferred.done("can't get hash", null);
    }

    let cryptoTool = new BaseCrypto();
    cryptoTool.signData(certList.options[certList.selectedIndex].value, false, data, null,
        function (params) {
            jQuery(row).find(".signResult input")[0].value = params.signedData;
            deferred.done(null, "success");
        },
        function () {
            if (cryptoTool.getLastError() !== STORE_INIT_ERROR) {
                document.getElementById(getElementFullID(button, buttonID, 'formMain:errMsg')).value = "Ошибка во время подписи данных: " + cryptoTool.getLastError() ;
            } else {
                document.getElementById(getElementFullID(button, buttonID, 'formMain:errMsg')).value = "Подпись отменена пользователем";
            }
            deferred.done("sign error: " + cryptoTool.getLastError(), null);
        });
}

function readFileToString(strFileName) {
    var strContents;
    strContents = "";

    if (isFSOEnabled()) {
        objFSO = new ActiveXObject("Scripting.FileSystemObject");
        if (objFSO.FileExists(strFileName)) {
            strContents = objFSO.OpenTextFile(strFileName, 1).ReadAll();
        }
    }

    return strContents;
}
function isFSOEnabled() {
    var result = false;
    try {
        new ActiveXObject("Scripting.FileSystemObject");
        result = true;
    } catch (e) {
        result = false;
    }

    return result;
}
function getFSOInfo() {
    var result;
    try {
        new ActiveXObject("Scripting.FileSystemObject");
        result = 'Объект ActiveX Scripting.FileSystemObject создан успешно';
    } catch (e) {
        result = 'Ошибка при создании объекта ActiveX Scripting.FileSystemObject';
    }

    return (result);
}

// возвращает полное наименование элемента на форме
function getElementFullID(fromInputTextElement, fromInputTextID, toInputTextID) {
    ls_str = fromInputTextElement.id;
    li_pp = ls_str.indexOf(fromInputTextID);
    ls_str = ls_str.substring(0, li_pp) + toInputTextID;
    return ls_str;
}

// формирует строку с сигнатурой
function formSignStr(element, elementId, array) {
    str = "";
    for (var i = 0; i &lt; array.length; i++) {
        if (document.getElementById(getElementFullID(element, elementId, array[i])) != null) {
            str = str + array[i] + "=" + document.getElementById(getElementFullID(element, elementId, array[i])).innerHTML + "|";
        }
    }
    return str;
}

// формирует строку с порядком следования элементов
function formOrderStr(element, elementId, array) {
    orderStr = "";
    for (var i = 0; i &lt; array.length; i++) {
        if (document.getElementById(getElementFullID(element, elementId, array[i])) != null) {
            orderStr = orderStr + array[i] + "|";
        }
    }
    return orderStr;
}


/**
 *
 *  Base64 encode / decode
 *  http://www.webtoolkit.info/
 *
 **/
var Base64 = {
    // private property
    _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
    // public method for encoding
    encode: function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;

        input = Base64._utf8_encode(input);

        while (i &lt; input.length) {

            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);

            enc1 = chr1 &gt;&gt; 2;
            enc2 = ((chr1 &amp; 3) &lt;&lt; 4) | (chr2 &gt;&gt; 4);
            enc3 = ((chr2 &amp; 15) &lt;&lt; 2) | (chr3 &gt;&gt; 6);
            enc4 = chr3 &amp; 63;

            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }

            output = output +
                    this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
                    this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

        }

        return output;
    },
    // public method for decoding
    decode: function (input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;

        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

        while (i &lt; input.length) {

            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._keyStr.indexOf(input.charAt(i++));

            chr1 = (enc1 &lt;&lt; 2) | (enc2 &gt;&gt; 4);
            chr2 = ((enc2 &amp; 15) &lt;&lt; 4) | (enc3 &gt;&gt; 2);
            chr3 = ((enc3 &amp; 3) &lt;&lt; 6) | enc4;

            output = output + String.fromCharCode(chr1);

            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }

        }

        output = Base64._utf8_decode(output);

        return output;

    },
    // private method for UTF-8 encoding
    _utf8_encode: function (string) {
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";

        for (var n = 0; n &lt; string.length; n++) {

            var c = string.charCodeAt(n);

            if (c &lt; 128) {
                utftext += String.fromCharCode(c);
            } else if ((c &gt; 127) &amp;&amp; (c &lt; 2048)) {
                utftext += String.fromCharCode((c &gt;&gt; 6) | 192);
                utftext += String.fromCharCode((c &amp; 63) | 128);
            } else {
                utftext += String.fromCharCode((c &gt;&gt; 12) | 224);
                utftext += String.fromCharCode(((c &gt;&gt; 6) &amp; 63) | 128);
                utftext += String.fromCharCode((c &amp; 63) | 128);
            }

        }

        return utftext;
    },
    // private method for UTF-8 decoding
    _utf8_decode: function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while (i &lt; utftext.length) {

            c = utftext.charCodeAt(i);

            if (c &lt; 128) {
                string += String.fromCharCode(c);
                i++;
            } else if ((c &gt; 191) &amp;&amp; (c &lt; 224)) {
                c2 = utftext.charCodeAt(i + 1);
                string += String.fromCharCode(((c &amp; 31) &lt;&lt; 6) | (c2 &amp; 63));
                i += 2;
            } else {
                c2 = utftext.charCodeAt(i + 1);
                c3 = utftext.charCodeAt(i + 2);
                string += String.fromCharCode(((c &amp; 15) &lt;&lt; 12) | ((c2 &amp; 63) &lt;&lt; 6) | (c3 &amp; 63));
                i += 3;
            }

        }

        return string;
    }
}

function submitForm()
{
    if (document.frames != null) {
        for (var i = 0; i &lt; document.frames.length; i++) {
            var fileUploadForm = document.frames[i].document.getElementById("fileUploadForm");
            if (fileUploadForm != null) {
                fileUploadForm.submit();
            }
        }
    }
}

// Очищает hidden-поля для ЭП
function crearData(button, buttonID) {
    document.getElementById(getElementFullID(button, buttonID, 'data')).value = "";
    document.getElementById(getElementFullID(button, buttonID, 'signature')).value = "";
    document.getElementById(getElementFullID(button, buttonID, 'orderData')).value = "";
}

//Проверяем, может ли клиент подписывать ЭП.
//sertList - элемент selectbox, содержащий заполненный список ЭП
function checkSign(form, certList, button, buttonID, callback) {
    document.getElementById(getElementFullID(button, buttonID, 'result')).value = "FALSE";
    if (!certList) {
        document.getElementById(getElementFullID(button, buttonID, 'errMsg')).value = "Не найдено ни одного сертификата ЭП";
        if (callback) {
            callback();
        }
        return false;
    }
    if (typeof (certList).toLowerCase() === "string") {
        certList = document.getElementById(certList);
    }
    if (!certList) {
        document.getElementById(getElementFullID(button, buttonID, 'errMsg')).value = "Не найдено ни одного сертификата ЭП";
        if (callback) {
            callback();
        }
        return false;
    }
    if (certList.options.length === 0) {
        document.getElementById(getElementFullID(button, buttonID, 'errMsg')).value = "Не найдено ни одного сертификата ЭП";
        if (callback) {
            callback();
        }
        return false;
    }
    if (certList.options[certList.selectedIndex].value === "withoutECP") {
        document.getElementById(getElementFullID(button, buttonID, 'errMsg')).value = "Не выбран сертификат ЭП";
        if (callback) {
            callback();
        }
        return false;
    }
    
    var data = "Тест ЭП"; // Данные для подписи
    var orderData = ""; // Порядок в котором собирались данные для подписи

    let cryptoTool = new BaseCrypto();
    cryptoTool.signData(certList.options[certList.selectedIndex].value, false, data, null,
        function (params) {
            document.getElementById(getElementFullID(button, buttonID, 'data')).value = data;
            document.getElementById(getElementFullID(button, buttonID, 'signature')).value = params.signedData;
            document.getElementById(getElementFullID(button, buttonID, 'result')).value = "TRUE";
            if (callback) {
                callback();
            }
        },
        function () {
            if (cryptoTool.getLastError() !== STORE_INIT_ERROR) {
                document.getElementById(getElementFullID(button, buttonID, 'errMsg')).value = "Ошибка во время подписи данных: " + cryptoTool.getLastError() ;
            } else {
                document.getElementById(getElementFullID(button, buttonID, 'errMsg')).value = "Подпись отменена пользователем";
            }
            if (callback) {
                callback();
            }
        });
}

//Подписывает форму form.
//sertList - элемент selectbox, содержащий заполненный список ЭП
function signDataStep(form, certList, button, buttonID, callback) {
    if (certList == null) {
        if (callback) {
            callback();
        }
        return false;
    }
    if (typeof (certList).toLowerCase() == "string") {
        certList = document.getElementById(certList);
    }
    if (!certList) {
        if (callback) {
            callback();
        }
        return false;
    }

    if (certList.options.length != 0 &amp;&amp; certList.options[certList.selectedIndex].value == "withoutECP") {
        if (callback) {
            callback();
        }
        return false;
    }

    var data = ""; // Данные для подписи
    var orderData = ""; // Порядок в котором собирались данные для подписи

    for (var i = 0; i &lt; form.elements.length; i++) {
        if (form.elements[i].name != ''
                &amp;&amp; extractShortName(form.elements[i].name) != "orderData"
                &amp;&amp; extractShortName(form.elements[i].name) != "data"
                &amp;&amp; extractShortName(form.elements[i].name) != "signature"
                &amp;&amp; extractShortName(form.elements[i].name) != "signatures") {
            //if (form.elements[i].type == "checkbox" ||  form.elements[i].type == "radio" || form.elements[i].type == "text" || form.elements[i].type == "hidden" ||form.elements[i].type == "textarea"){
            if (form.elements[i].type == "select-one"
                    || form.elements[i].type == "checkbox"
                    || form.elements[i].type == "radio"
                    || form.elements[i].type == "text"
                    || form.elements[i].type == "textarea") {
                if ((form.elements[i].type == "checkbox" || form.elements[i].type == "radio")
                        &amp;&amp; form.elements[i].checked != true) {
                    continue;
                }
                data = data + extractShortName(form.elements[i].name) + "="
                        + form.elements[i].value + "|";
                orderData = orderData + extractShortName(form.elements[i].name) + "|";

            }
        }
    }
//    alert("data = "+data);
//    alert("orderdata = "+orderData);
    // получим и добавим нередактируемые данные, ранее сформированные и добавленные в сигнатуру
    otherSign = document.getElementById(getElementFullID(button, buttonID, 'signature')).value;
    otherOrder = document.getElementById(getElementFullID(button, buttonID, 'orderData')).value;
    data = clearStr(data + otherSign);
    orderData = orderData + otherOrder;
//    alert("otherSign = "+otherSign);
//    alert("otherOrder = "+otherOrder);

    let cryptoTool = new BaseCrypto();
    cryptoTool.signData(certList.options[certList.selectedIndex].value, false, data, null,
        function (params) {
            document.getElementById(getElementFullID(button, buttonID, 'data')).value = data;
            document.getElementById(getElementFullID(button, buttonID, 'signature')).value = params.signedData;
            document.getElementById(getElementFullID(button, buttonID, 'result')).value = "TRUE";
            if (callback) {
                callback();
            }
        },
        function () {
            if (cryptoTool.getLastError() !== STORE_INIT_ERROR) {
                document.getElementById(getElementFullID(button, buttonID, 'errMsg')).value = "Ошибка во время подписи данных: " + cryptoTool.getLastError() ;
            } else {
                document.getElementById(getElementFullID(button, buttonID, 'formMain:errMsg')).value = "Подпись отменена пользователем";
            }
            if (callback) {
                callback();
            }
        });
}

function certInfoLoad(certList) {
    if (!certList) {
        certList = 'signatures';
    }
    
    if ((typeof certList).toLowerCase() === "string") {
        certList = document.getElementById(certList);
    }
    
    if (!certList) {
        return false;
    }
    
    if (certList.options.length !== 0 &amp;&amp; certList.options[certList.selectedIndex].value === "withoutECP") {
        return false;
    }

    let cryptoTool = new BaseCrypto();
    cryptoTool.signData(certList.options[certList.selectedIndex].value, false, "test", null,
        function (params) {
        var subjectName = params.subjectName;
            if (subjectName){
                var map = parseStr(subjectName, ",", "=");
                fillRegistrationPage(map);
            }
        },
        function () {
            if (cryptoTool.getLastError() !== STORE_INIT_ERROR) {
                alert ("Ошибка во время подписи данных: " + cryptoTool.getLastError());
            }

        });
}

function fillRegistrationPage(map) {
    try {
        document.getElementById('formMain:inputTextEmail').value = cert.GetInfo(CAPICOM_CERT_INFO_SUBJECT_EMAIL_NAME);
    } catch (e) {
    }
    
    try {
        document.getElementById('formMain:inputTextSubName').value = getCertMapProperty(map, 'O');
    } catch (e) {
    }
    
    try {
        document.getElementById('formMain:inputTextSubSname').value = getCertMapProperty(map, 'O');
    } catch (e) {
    }
    
    try {
        document.getElementById('formMain:inputTextPersFName').value = getCertMapProperty(map, 'SN');
    } catch (e) {
    }
    
    try {
        document.getElementById('formMain:inputTextPersFName1').value = getCertMapProperty(map, 'SN');
    } catch (e) {
    }
    
    try {
        var tempMap = parseStrBSP(getCertMapProperty(map, 'G'));
        try {
            document.getElementById('formMain:inputTextPersName').value = tempMap[0];
        } catch (e) {
        }
        
        try {
            document.getElementById('formMain:inputTextPersSName').value = tempMap[1];
        } catch (e) {
        }
        
        try {
            document.getElementById('formMain:inputTextPersName1').value = tempMap[0];
        } catch (e) {
        }
        
        try {
            document.getElementById('formMain:inputTextPersSName1').value = tempMap[1];
        } catch (e) {
        }
    } catch (e) {
    }
    
    try {
        document.getElementById('formMain:inputTextSubINN').value = getCertMapProperty(map, 'OID.1.2.643.100.4');
    } catch (e) {
        try {
            document.getElementById('formMain:inputTextSubINN').value = getCertMapProperty(map, 'OID.1.2.643.3.131.1.1');
        } catch (e) {
            try {
                document.getElementById('formMain:inputTextSubINN').value = getCertMapProperty(map, 'INN');
            } catch (e) {
                try {
                    document.getElementById('formMain:inputTextSubINN').value = getCertMapProperty(map, 'ИНН');
                } catch (e) {
                }
            }
        }
    }
    
    try {
        document.getElementById('formMain:inputTextSnils').value = getCertMapProperty(map, 'OID.1.2.643.100.3');
    } catch (e) {
        try {
            document.getElementById('formMain:inputTextSnils').value = getCertMapProperty(map, 'SNILS');
        } catch (e) {
            try {
                document.getElementById('formMain:inputTextSnils').value = getCertMapProperty(map, 'СНИЛС');
            } catch (e) {
            }
        }
    }
    
    try {
        document.getElementById('formMain:inputTextSubOGRN').value = getCertMapProperty(map, 'OID.1.2.643.100.1');
    } catch (e) {
        try {
            document.getElementById('formMain:inputTextSubOGRN').value = getCertMapProperty(map, 'OGRN');
        } catch (e) {
            try {
                document.getElementById('formMain:inputTextSubOGRN').value = getCertMapProperty(map, 'ОГРН');
            } catch (e) {
                try {
                    document.getElementById('formMain:inputTextSubOGRN').value = getCertMapProperty(map, 'OID.1.2.643.100.5');
                } catch (e) {
                    try {
                        document.getElementById('formMain:inputTextSubOGRN').value = getCertMapProperty(map, 'OGRNIP');
                    } catch (e) {
                        try {
                            document.getElementById('formMain:inputTextSubOGRN').value = getCertMapProperty(map, 'ОГРНИП');
                        } catch (e) {
                        }
                    }
                }
            }
        }
    }
}

function isSertStepCheck() {
    if (document.getElementById('formMain:indSignatute').checked)
        return true;
    return false;
}

function clearData() {
    try {
        document.getElementById('formMain:data').value = ""
    } catch (e) {
    }
    ;
    try {
        document.getElementById('formMain:signature').value = ""
    } catch (e) {
    }
    ;
    try {
        document.getElementById('formMain:orderData').value = ""
    } catch (e) {
    }
    ;
    try {
        document.getElementById('formMain:dataDoc').value = ""
    } catch (e) {
    }
    ;
    try {
        document.getElementById('formMain:orderDataDoc').value = ""
    } catch (e) {
    }
    ;
    try {
        document.getElementById('formMain:signatureDoc').value = ""
    } catch (e) {
    }
    ;
    try {
        document.getElementById('formMain:errMsg').value = ""
    } catch (e) {
    }
    ;
    try {
        document.getElementById('formMain:result').value = ""
    } catch (e) {
    }
    ;
}

function parseStr(str, format1, format2) {
    var dataMap = new Array();
    if (str == '')
        return str;
    var arr1 = trim(str).split(format1);
    for (i = 0; i &lt; arr1.length; i++) {
        var pair = trim(arr1[i]).split(format2);
        dataMap[i] = new Array();
        if (pair.length &lt; 2) {
            dataMap[i][0] = pair[0];
            dataMap[i][1] = "";
        } else {
            dataMap[i][0] = pair[0];
            dataMap[i][1] = pair[1];
        }
    }
    return dataMap;
}

function parseStrBSP(str) {
    var dataMap = new Array();
    dataMap[0] = "";
    dataMap[1] = "";
    if (str == '')
        return dataMap;
    var arr1 = trim(str).split(" ");
    if (arr1.length &gt; 0) {
        dataMap[0] = arr1[0];
        if (arr1.length == 1) {
            dataMap[1] = "";
        } else {
            var str = "";
            for (i = 1; i &lt; arr1.length; i++) {
                str += arr1[i] + " ";
            }
            dataMap[1] = trim(str);
        }
    }
    return dataMap;
}

function getCertMapProperty(map, key) {
    for (i = 0; i &lt; map.length; i++) {
        if (trim(map[i][0]) == trim(key))
            return trim(map[i][1]);
    }
    //Вызываем Exception
    throw new Error("Property " + key + " not found");
    return '';
}

function getCertProperty(text, key) {
    var ret;
    if (!key||!text||text.indexOf(key) == -1)
        return '';
    ret = text.substring(text.indexOf(' ' + key + '=') + key.length + 2, text.indexOf(',', text.indexOf(' ' + key + '=') +  + key.length + 2));
    return ret;
}
</pre></body></html>